[memo to self: don't send stuff on Friday evenings]
Sorry about the spam, resend w/o config, see https://people.redhat.com/~cohuck/config-mte
On Fri, May 06 2022, Cornelia Huck cohuck@redhat.com wrote:
Hi,
I'm currently trying to run the MTE selftests on the FVP simulator (Base Model)[1], mainly to verify things are sane on the host before wiring up the KVM support in QEMU. However, I'm seeing some failures (the non-mte tests seemed all fine):
# selftests: /arm64: check_buffer_fill # 1..20 # ok 1 Check buffer correctness by byte with sync err mode and mmap memory # ok 2 Check buffer correctness by byte with async err mode and mmap memory # ok 3 Check buffer correctness by byte with sync err mode and mmap/mprotect memory # ok 4 Check buffer correctness by byte with async err mode and mmap/mprotect memory # not ok 5 Check buffer write underflow by byte with sync mode and mmap memory # not ok 6 Check buffer write underflow by byte with async mode and mmap memory # ok 7 Check buffer write underflow by byte with tag check fault ignore and mmap memory # not ok 8 Check buffer write underflow by byte with sync mode and mmap memory # not ok 9 Check buffer write underflow by byte with async mode and mmap memory # ok 10 Check buffer write underflow by byte with tag check fault ignore and mmap memory # not ok 11 Check buffer write overflow by byte with sync mode and mmap memory # not ok 12 Check buffer write overflow by byte with async mode and mmap memory # ok 13 Check buffer write overflow by byte with tag fault ignore mode and mmap memory # ok 14 Check buffer write correctness by block with sync mode and mmap memory # ok 15 Check buffer write correctness by block with async mode and mmap memory # ok 16 Check buffer write correctness by block with tag fault ignore and mmap memory # ok 17 Check initial tags with private mapping, sync error mode and mmap memory # ok 18 Check initial tags with private mapping, sync error mode and mmap/mprotect memory # ok 19 Check initial tags with shared mapping, sync error mode and mmap memory # ok 20 Check initial tags with shared mapping, sync error mode and mmap/mprotect memory # # Totals: pass:14 fail:6 xfail:0 xpass:0 skip:0 error:0 not ok 24 selftests: /arm64: check_buffer_fill # exit=1
# selftests: /arm64: check_child_memory # 1..12 # not ok 1 Check child anonymous memory with private mapping, precise mode and mmap memory # not ok 2 Check child anonymous memory with shared mapping, precise mode and mmap memory # not ok 3 Check child anonymous memory with private mapping, imprecise mode and mmap memory # not ok 4 Check child anonymous memory with shared mapping, imprecise mode and mmap memory # not ok 5 Check child anonymous memory with private mapping, precise mode and mmap/mprotect memory # not ok 6 Check child anonymous memory with shared mapping, precise mode and mmap/mprotect memory # not ok 7 Check child file memory with private mapping, precise mode and mmap memory # not ok 8 Check child file memory with shared mapping, precise mode and mmap memory # not ok 9 Check child file memory with private mapping, imprecise mode and mmap memory # not ok 10 Check child file memory with shared mapping, imprecise mode and mmap memory # not ok 11 Check child file memory with private mapping, precise mode and mmap/mprotect memory # not ok 12 Check child file memory with shared mapping, precise mode and mmap/mprotect memory # # Totals: pass:0 fail:12 xfail:0 xpass:0 skip:0 error:0 not ok 25 selftests: /arm64: check_child_memory # exit=1
# selftests: /arm64: check_gcr_el1_cswitch # 1..1 # 1..1 # 1..1 # 1..1 [...many more lines of the same...] # 1..1 # not ok 26 selftests: /arm64: check_gcr_el1_cswitch # TIMEOUT 45 seconds
# selftests: /arm64: check_mmap_options # 1..22 # ok 1 Check anonymous memory with private mapping, sync error mode, mmap memory and tag check off # ok 2 Check file memory with private mapping, sync error mode, mmap/mprotect memory and tag check off # ok 3 Check anonymous memory with private mapping, no error mode, mmap memory and tag check off # ok 4 Check file memory with private mapping, no error mode, mmap/mprotect memory and tag check off # not ok 5 Check anonymous memory with private mapping, sync error mode, mmap memory and tag check on # not ok 6 Check anonymous memory with private mapping, sync error mode, mmap/mprotect memory and tag check on # not ok 7 Check anonymous memory with shared mapping, sync error mode, mmap memory and tag check on # not ok 8 Check anonymous memory with shared mapping, sync error mode, mmap/mprotect memory and tag check on # not ok 9 Check anonymous memory with private mapping, async error mode, mmap memory and tag check on # not ok 10 Check anonymous memory with private mapping, async error mode, mmap/mprotect memory and tag check on # not ok 11 Check anonymous memory with shared mapping, async error mode, mmap memory and tag check on # not ok 12 Check anonymous memory with shared mapping, async error mode, mmap/mprotect memory and tag check on # not ok 13 Check file memory with private mapping, sync error mode, mmap memory and tag check on # not ok 14 Check file memory with private mapping, sync error mode, mmap/mprotect memory and tag check on # not ok 15 Check file memory with shared mapping, sync error mode, mmap memory and tag check on # not ok 16 Check file memory with shared mapping, sync error mode, mmap/mprotect memory and tag check on # not ok 17 Check file memory with private mapping, async error mode, mmap memory and tag check on # not ok 18 Check file memory with private mapping, async error mode, mmap/mprotect memory and tag check on # not ok 19 Check file memory with shared mapping, async error mode, mmap memory and tag check on # not ok 20 Check file memory with shared mapping, async error mode, mmap/mprotect memory and tag check on # not ok 21 Check clear PROT_MTE flags with private mapping, sync error mode and mmap memory # not ok 22 Check clear PROT_MTE flags with private mapping and sync error mode and mmap/mprotect memory # # Totals: pass:4 fail:18 xfail:0 xpass:0 skip:0 error:0 not ok 28 selftests: /arm64: check_mmap_options # exit=1
# selftests: /arm64: check_tags_inclusion # 1..4 # not ok 1 Check an included tag value with sync mode # not ok 2 Check different included tags value with sync mode # ok 3 Check none included tags value with sync mode # not ok 4 Check all included tags value with sync mode # # Totals: pass:1 fail:3 xfail:0 xpass:0 skip:0 error:0 not ok 29 selftests: /arm64: check_tags_inclusion # exit=1
check_ksm_options and check_user_mem work as expected.
Are the MTE tests supposed to work on the FVP model? Something broken in my config? Anything I can debug?
[1] Command line: "$MODEL" \ -C cache_state_modelled=0 \ -C bp.refcounter.non_arch_start_at_default=1 \ -C bp.secure_memory=false \ -C cluster0.has_arm_v8-1=1 \ -C cluster0.has_arm_v8-2=1 \ -C cluster0.has_arm_v8-3=1 \ -C cluster0.has_arm_v8-4=1 \ -C cluster0.has_arm_v8-5=1 \ -C cluster0.has_amu=1 \ -C cluster0.NUM_CORES=4 \ -C cluster0.memory_tagging_support_level=2 \ -a "cluster0.*=$AXF" \
where $AXF contains a kernel at v5.18-rc5-16-g107c948d1d3e[2] and an initrd built by mbuto[3] from that level with a slightly tweaked "kselftests" profile (adding /dev/shm).
[2] CONFIG_ARM64_MTE=y, no modules; complete config below[4]
[4] kernel config: https://people.redhat.com/~cohuck/config-mte
linux-kselftest-mirror@lists.linaro.org