OSDN Git Service

kselftest/arm64: Add utilities and a test to validate mte memory
authorAmit Daniel Kachhap <amit.kachhap@arm.com>
Fri, 2 Oct 2020 11:56:25 +0000 (17:26 +0530)
committerWill Deacon <will@kernel.org>
Mon, 5 Oct 2020 17:52:17 +0000 (18:52 +0100)
commite9b60476bea058d85f8029e6701d9476f7fdb92f
treee1b8efbe2e39c35a4b66b675ebd9584ec8aa91fa
parentf75aef392f869018f78cfedf3c320a6b3fcfda6b
kselftest/arm64: Add utilities and a test to validate mte memory

This test checks that the memory tag is present after mte allocation and
the memory is accessible with those tags. This testcase verifies all
sync, async and none mte error reporting mode. The allocated mte buffers
are verified for Allocated range (no error expected while accessing
buffer), Underflow range, and Overflow range.

Different test scenarios covered here are,
* Verify that mte memory are accessible at byte/block level.
* Force underflow and overflow to occur and check the data consistency.
* Check to/from between tagged and untagged memory.
* Check that initial allocated memory to have 0 tag.

This change also creates the necessary infrastructure to add mte test
cases. MTE kselftests can use the several utility functions provided here
to add wide variety of mte test scenarios.

GCC compiler need flag '-march=armv8.5-a+memtag' so those flags are
verified before compilation.

The mte testcases can be launched with kselftest framework as,

make TARGETS=arm64 ARM64_SUBTARGETS=mte kselftest

or compiled as,

make -C tools/testing/selftests TARGETS=arm64 ARM64_SUBTARGETS=mte CC='compiler'

Co-developed-by: Gabor Kertesz <gabor.kertesz@arm.com>
Signed-off-by: Gabor Kertesz <gabor.kertesz@arm.com>
Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
Tested-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20201002115630.24683-2-amit.kachhap@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
tools/testing/selftests/arm64/Makefile
tools/testing/selftests/arm64/mte/.gitignore [new file with mode: 0644]
tools/testing/selftests/arm64/mte/Makefile [new file with mode: 0644]
tools/testing/selftests/arm64/mte/check_buffer_fill.c [new file with mode: 0644]
tools/testing/selftests/arm64/mte/mte_common_util.c [new file with mode: 0644]
tools/testing/selftests/arm64/mte/mte_common_util.h [new file with mode: 0644]
tools/testing/selftests/arm64/mte/mte_def.h [new file with mode: 0644]
tools/testing/selftests/arm64/mte/mte_helper.S [new file with mode: 0644]