The FEAT_MTE_TAGGED_FAR feature provides support for reporting all non-address bits during a synchronous MTE tag check fault. This patchset extends the reporting tag to include not only the memory tag (logical tag) but also the address tag via si_addr when FEAT_MTE_TAGGED_FAR feature is supported. Patch Sequences ================ Patch #1 adds cpufeature FEAT_MTE_TAGGED_FAR Patch #2 adds MTE_FAR hwcaps and export address tag when it supports Patch #3 adds mtefar hwcap test Patch #4 prepares to add mtefar testcase Patch #5 refactor check_mmap_option with loop to add mtefar testcase Patch #6 adds mtefar test cases corresponding to each testcase of check_mmap_options Patch History ================ v4 to v5: - rebased on v6.16-rc1 - https://lore.kernel.org/linux-arm-kernel/20250507095757.1663684-1-yeoreum.yun@xxxxxxx/ v3 to v4: - fix hwcap string for FEAT_MTE_TAGGED_FAR - split cpufeature and hwcap modification and merge hwcap's modification with exporting address tag patch - add mtefar testcase on check_mmap_options - https://lore.kernel.org/all/20250410074721.947380-1-yeoreum.yun@xxxxxxx/ v2 to v3: - Rebase to 6.15-rc1 - https://lore.kernel.org/all/20250403172758.67106-1-yeoreum.yun@xxxxxxx/ v1 to v2: - add hwcap test for MTE_FAR feature. - add MTE_FAR doc into elf_hwcap.rst - https://lore.kernel.org/all/20250403142707.26397-1-yeoreum.yun@xxxxxxx/ Yeoreum Yun (6): arm64/cpufeature: add FEAT_MTE_TAGGED_FAR feature arm64: report address tag when FEAT_MTE_TAGGED_FAR is supported tools/kselftest: add MTE_FAR hwcap test kselftest/arm64/mte: preparation for mtefar test kselftest/arm64/mte: refactor check_mmap_option test kselftest/arm64/mte: add mtefar test on check_mmap_option Documentation/arch/arm64/elf_hwcaps.rst | 3 + Documentation/arch/arm64/tagged-pointers.rst | 11 +- arch/arm64/include/asm/hwcap.h | 1 + arch/arm64/include/uapi/asm/hwcap.h | 1 + arch/arm64/kernel/cpufeature.c | 9 + arch/arm64/kernel/cpuinfo.c | 1 + arch/arm64/mm/fault.c | 7 +- arch/arm64/tools/cpucaps | 1 + tools/testing/selftests/arm64/abi/hwcap.c | 6 + .../selftests/arm64/mte/check_buffer_fill.c | 2 +- .../selftests/arm64/mte/check_child_memory.c | 4 +- .../arm64/mte/check_hugetlb_options.c | 4 +- .../selftests/arm64/mte/check_ksm_options.c | 4 +- .../selftests/arm64/mte/check_mmap_options.c | 244 +++++++++++++----- .../arm64/mte/check_tags_inclusion.c | 2 +- .../selftests/arm64/mte/check_user_mem.c | 2 +- .../selftests/arm64/mte/mte_common_util.c | 70 ++++- .../selftests/arm64/mte/mte_common_util.h | 8 +- tools/testing/selftests/arm64/mte/mte_def.h | 8 + 19 files changed, 291 insertions(+), 97 deletions(-) -- LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}