[PATCH 2/2] kselftest/arm64: mte: Skip the hugetlb tests if MTE not supported on such mappings

Yang Shi yang at os.amperecomputing.com
Fri Feb 21 09:22:35 PST 2025




On 2/21/25 1:33 AM, Catalin Marinas wrote:
> While the kselftest was added at the same time with the kernel support
> for MTE on hugetlb mappings, the tests may be run on older kernels. Skip
> the tests if PROT_MTE is not supported on MAP_HUGETLB mappings.
>
> Fixes: 27879e8cb6b0 ("selftests: arm64: add hugetlb mte tests")
> Cc: Yang Shi <yang at os.amperecomputing.com>
> Reported-by: Naresh Kamboju <naresh.kamboju at linaro.org>
> Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
> ---
>   .../selftests/arm64/mte/check_hugetlb_options.c       | 11 +++++++++++
>   1 file changed, 11 insertions(+)

Reviewed-by: Yang Shi <yang at os.amperecomputing.com>

>
> diff --git a/tools/testing/selftests/arm64/mte/check_hugetlb_options.c b/tools/testing/selftests/arm64/mte/check_hugetlb_options.c
> index 11f812635b51..3bfcd3848432 100644
> --- a/tools/testing/selftests/arm64/mte/check_hugetlb_options.c
> +++ b/tools/testing/selftests/arm64/mte/check_hugetlb_options.c
> @@ -227,6 +227,8 @@ static int check_child_hugetlb_memory_mapping(int mem_type, int mode, int mappin
>   int main(int argc, char *argv[])
>   {
>   	int err;
> +	void *map_ptr;
> +	unsigned long map_size;
>   
>   	err = mte_default_setup();
>   	if (err)
> @@ -243,6 +245,15 @@ int main(int argc, char *argv[])
>   		return KSFT_FAIL;
>   	}
>   
> +	/* Check if MTE supports hugetlb mappings */
> +	map_size = default_huge_page_size();
> +	map_ptr = mmap(NULL, map_size, PROT_READ | PROT_MTE,
> +		       MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0);
> +	if (map_ptr == MAP_FAILED)
> +		ksft_exit_skip("PROT_MTE not supported with MAP_HUGETLB mappings\n");
> +	else
> +		munmap(map_ptr, map_size);
> +
>   	/* Set test plan */
>   	ksft_set_plan(12);
>   




More information about the linux-arm-kernel mailing list