Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1241198pxk; Fri, 2 Oct 2020 04:58:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwxotHQ0wjRxbaLi0va9Y1oldN8PABQZbiz2pTwvC4CCgxf5rZd0RzSbYjYIS8UPNhzq/qz X-Received: by 2002:a17:906:5809:: with SMTP id m9mr1839219ejq.304.1601639917355; Fri, 02 Oct 2020 04:58:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601639917; cv=none; d=google.com; s=arc-20160816; b=KgnT+rxI1mc5jXpfi4yr2aVCmjNEHkC1oHYpiyzzZtDSMBwq5YnCVT/exJdbnM0Bg7 Exs+xR55woSgNfak3gYhlSZawlmHvSpr/JP2C86+iDgIJREROof1nEWb+RCF/bPZ3jpn YbpEiEij7rcgwkWcPS55hBAJ2kUhutduigQg8FnS7VtTwezMEtAMcko+hnNkVsGkPJks F7x8bkaYK9qk1XintJZLmdQ+2G5KgFOzF2MxmTqi11chhOL/k2vJRz5Hmr0h4FFIw46I lVtU2V54Kz0Qpo7k5OWIwPVYzXixBeNNDAvNSenUHVYms1HRXmVSx1AoI0I1ArQZtLSx BJCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=/fu18IqT5XRacI3ibaQ3/ef7gUw8PnaLz02OCjVUbWk=; b=hSwWVMEUVwsmwTX8dRAcbU1r8fUaVsvRomjjxXKqpTuVWwwW0dzJxNzEB9i1IDGX/I C7eUt6XMsv85ogL/PKYn8Wk4+CXcTY+hA58rEdIg0tVeO9YZnuZoTLhBG7GIlj5Qjvf+ 4Efrk2lROuBlitt/Q8wIGp8qXZMBWolVhI2+D9tVYVgT9W+nl1Qe59QOd3ECwq/ArUdt Xa8cExLcYNHe/LFQLcqEmrn5ck9QBYQVO0kGXNKF5eZ7lJL+ORmABk6ytWOwRwFoy+kt OXEuQ5glVzPpOXrmbf1t2erW5gn4uGcPuoOTBZN7tWQabBDCAII1omWiNMTxTfOJex2a LF6A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p23si928409edw.241.2020.10.02.04.58.15; Fri, 02 Oct 2020 04:58:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387938AbgJBL4p (ORCPT + 99 others); Fri, 2 Oct 2020 07:56:45 -0400 Received: from foss.arm.com ([217.140.110.172]:33732 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726090AbgJBL4o (ORCPT ); Fri, 2 Oct 2020 07:56:44 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E49FD1063; Fri, 2 Oct 2020 04:56:43 -0700 (PDT) Received: from a077416.blr.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DD6013F70D; Fri, 2 Oct 2020 04:56:40 -0700 (PDT) From: Amit Daniel Kachhap To: linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Shuah Khan , Catalin Marinas , Will Deacon , Vincenzo Frascino , Gabor Kertesz , Amit Daniel Kachhap Subject: [PATCH v2 0/6] kselftest: arm64/mte: Tests for user-space MTE Date: Fri, 2 Oct 2020 17:26:24 +0530 Message-Id: <20201002115630.24683-1-amit.kachhap@arm.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org These patch series adds below kselftests to test the user-space support for the ARMv8.5 Memory Tagging Extension present in arm64 tree [1]. This patch series is based on Linux v5.9-rc3. 1) This test-case verifies that the memory allocated by kernel mmap interface can support tagged memory access. It first checks the presence of tags at address[56:59] and then proceeds with read and write. The pass criteria for this test is that tag fault exception should not happen. 2) This test-case crosses the valid memory to the invalid memory. In this memory area valid tags are not inserted so read and write should not pass. The pass criteria for this test is that tag fault exception should happen for all the illegal addresses. This test also verfies that PSTATE.TCO works properly. 3) This test-case verifies that the memory inherited by child process from parent process should have same tags copied. The pass criteria for this test is that tag fault exception should not happen. 4) This test checks different mmap flags with PROT_MTE memory protection. 5) This testcase checks that KSM should not merge pages containing different MTE tag values. However, if the tags are same then the pages may merge. This testcase uses the generic ksm sysfs interfaces to verify the MTE behaviour, so this testcase is not fullproof and may be impacted due to other load in the system. 6) Fifth test verifies that syscalls read/write etc works by considering that user pointer has valid/invalid allocation tags. Changes since v1 [2]: * Redefined MTE kernel header definitions to decouple kselftest compilations. * Removed gmi masking instructions in mte_insert_random_tag assembly function. This simplifies the tag inclusion mask test with only GCR mask register used. * Created a new mte_insert_random_tag function with gmi instruction. This is useful for the 6th test which reuses the original tag. * Now use /dev/shm/* to hold temporary files. * Updated the 6th test to handle the error properly in case of failure in accessing memory with invalid tag in kernel. * Code and comment clean-ups. Thanks, Amit Daniel [1]: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/mte [2]: https://patchwork.kernel.org/patch/11747791/ Amit Daniel Kachhap (6): kselftest/arm64: Add utilities and a test to validate mte memory kselftest/arm64: Verify mte tag inclusion via prctl kselftest/arm64: Check forked child mte memory accessibility kselftest/arm64: Verify all different mmap MTE options kselftest/arm64: Verify KSM page merge for MTE pages kselftest/arm64: Check mte tagged user address in kernel tools/testing/selftests/arm64/Makefile | 2 +- tools/testing/selftests/arm64/mte/.gitignore | 6 + tools/testing/selftests/arm64/mte/Makefile | 29 ++ .../selftests/arm64/mte/check_buffer_fill.c | 475 ++++++++++++++++++ .../selftests/arm64/mte/check_child_memory.c | 195 +++++++ .../selftests/arm64/mte/check_ksm_options.c | 159 ++++++ .../selftests/arm64/mte/check_mmap_options.c | 262 ++++++++++ .../arm64/mte/check_tags_inclusion.c | 185 +++++++ .../selftests/arm64/mte/check_user_mem.c | 111 ++++ .../selftests/arm64/mte/mte_common_util.c | 341 +++++++++++++ .../selftests/arm64/mte/mte_common_util.h | 118 +++++ tools/testing/selftests/arm64/mte/mte_def.h | 60 +++ .../testing/selftests/arm64/mte/mte_helper.S | 128 +++++ 13 files changed, 2070 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/arm64/mte/.gitignore create mode 100644 tools/testing/selftests/arm64/mte/Makefile create mode 100644 tools/testing/selftests/arm64/mte/check_buffer_fill.c create mode 100644 tools/testing/selftests/arm64/mte/check_child_memory.c create mode 100644 tools/testing/selftests/arm64/mte/check_ksm_options.c create mode 100644 tools/testing/selftests/arm64/mte/check_mmap_options.c create mode 100644 tools/testing/selftests/arm64/mte/check_tags_inclusion.c create mode 100644 tools/testing/selftests/arm64/mte/check_user_mem.c create mode 100644 tools/testing/selftests/arm64/mte/mte_common_util.c create mode 100644 tools/testing/selftests/arm64/mte/mte_common_util.h create mode 100644 tools/testing/selftests/arm64/mte/mte_def.h create mode 100644 tools/testing/selftests/arm64/mte/mte_helper.S -- 2.17.1