qemu/tests/tcg/aarch64
Alex Bennée 6d03226b42 plugins: force slow path when plugins instrument memory ops
The lack of SVE memory instrumentation has been an omission in plugin
handling since it was introduced. Fortunately we can utilise the
probe_* functions to force all all memory access to follow the slow
path. We do this by checking the access type and presence of plugin
memory callbacks and if set return the TLB_MMIO flag.

We have to jump through a few hoops in user mode to re-use the flag
but it was the desired effect:

 ./qemu-system-aarch64 -display none -serial mon:stdio \
   -M virt -cpu max -semihosting-config enable=on \
   -kernel ./tests/tcg/aarch64-softmmu/memory-sve \
   -plugin ./contrib/plugins/libexeclog.so,ifilter=st1w,afilter=0x40001808 -d plugin

gives (disas doesn't currently understand st1w):

  0, 0x40001808, 0xe54342a0, ".byte 0xa0, 0x42, 0x43, 0xe5", store, 0x40213010, RAM, store, 0x40213014, RAM, store, 0x40213018, RAM

And for user-mode:

  ./qemu-aarch64 \
    -plugin contrib/plugins/libexeclog.so,afilter=0x4007c0 \
    -d plugin \
    ./tests/tcg/aarch64-linux-user/sha512-sve

gives:

  1..10
  ok 1 - do_test(&tests[i])
  0, 0x4007c0, 0xa4004b80, ".byte 0x80, 0x4b, 0x00, 0xa4", load, 0x5500800370, load, 0x5500800371, load, 0x5500800372, load, 0x5500800373, load, 0x5500800374, load, 0x5500800375, load, 0x5500800376, load, 0x5500800377, load, 0x5500800378, load, 0x5500800379, load, 0x550080037a, load, 0x550080037b, load, 0x550080037c, load, 0x550080037d, load, 0x550080037e, load, 0x550080037f, load, 0x5500800380, load, 0x5500800381, load, 0x5500800382, load, 0x5500800383, load, 0x5500800384, load, 0x5500800385, load, 0x5500800386, lo
  ad, 0x5500800387, load, 0x5500800388, load, 0x5500800389, load, 0x550080038a, load, 0x550080038b, load, 0x550080038c, load, 0x550080038d, load, 0x550080038e, load, 0x550080038f, load, 0x5500800390, load, 0x5500800391, load, 0x5500800392, load, 0x5500800393, load, 0x5500800394, load, 0x5500800395, load, 0x5500800396, load, 0x5500800397, load, 0x5500800398, load, 0x5500800399, load, 0x550080039a, load, 0x550080039b, load, 0x550080039c, load, 0x550080039d, load, 0x550080039e, load, 0x550080039f, load, 0x55008003a0, load, 0x55008003a1, load, 0x55008003a2, load, 0x55008003a3, load, 0x55008003a4, load, 0x55008003a5, load, 0x55008003a6, load, 0x55008003a7, load, 0x55008003a8, load, 0x55008003a9, load, 0x55008003aa, load, 0x55008003ab, load, 0x55008003ac, load, 0x55008003ad, load, 0x55008003ae, load, 0x55008003af

(4007c0 is the ld1b in the sha512-sve)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Cc: Robert Henry <robhenry@microsoft.com>
Cc: Aaron Lindsay <aaron@os.amperecomputing.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230630180423.558337-20-alex.bennee@linaro.org>
2023-07-03 12:51:58 +01:00
..
gdbstub target/arm: use official org.gnu.gdb.aarch64.sve layout for registers 2021-01-18 10:05:06 +00:00
system tests/tcg: add memory-sve test for aarch64 2023-02-02 11:48:20 +00:00
bti-1.c tests/tcg/aarch64: Add bti smoke tests 2020-10-27 10:44:03 +00:00
bti-2.c tests/tcg/aarch64: Add bti smoke tests 2020-10-27 10:44:03 +00:00
bti-3.c target/arm: Enable SCTLR_EL1.BT0 for aarch64-linux-user 2022-05-05 09:35:50 +01:00
bti-crt.inc.c tests/tcg/aarch64: Add bti smoke tests 2020-10-27 10:44:03 +00:00
dcpodp.c tests/tcg/aarch64: add DC CVA[D]P tests 2023-06-06 10:19:40 +01:00
dcpop.c tests/tcg/aarch64: add DC CVA[D]P tests 2023-06-06 10:19:40 +01:00
fcvt.ref tests/tcg/arm: add fcvt test cases for AArch32/64 2018-06-20 20:22:34 +01:00
float_convd.ref tests/tcg: add float_convd test 2022-04-20 16:04:20 +01:00
float_convs.ref tests/tcg: add generic version of float_convs 2019-09-26 19:00:53 +01:00
float_madds.ref tests/tcg: add float_madds test to multiarch 2019-09-26 19:00:53 +01:00
Makefile.softmmu-target tests/tcg: limit the scope of the plugin tests 2023-04-27 14:58:23 +01:00
Makefile.target plugins: force slow path when plugins instrument memory ops 2023-07-03 12:51:58 +01:00
mte-1.c tests/tcg/aarch64: Add mte smoke tests 2021-02-16 13:17:28 +00:00
mte-2.c tests/tcg/aarch64: Add mte smoke tests 2021-02-16 13:17:28 +00:00
mte-3.c tests/tcg/aarch64: Add mte smoke tests 2021-02-16 13:17:28 +00:00
mte-4.c tests/tcg/aarch64: Add mte smoke tests 2021-02-16 13:17:28 +00:00
mte-5.c test/tcg/aarch64: Add mte-5 2021-04-30 11:16:49 +01:00
mte-6.c accel/tcg: Preserve PAGE_ANON when changing page permissions 2021-04-12 11:06:24 +01:00
mte-7.c tests/tcg/aarch64: Use stz2g in mte-7.c 2023-06-06 10:19:39 +01:00
mte.h accel/tcg: Preserve PAGE_ANON when changing page permissions 2021-04-12 11:06:24 +01:00
pauth-1.c tests/tcg/aarch64: Add newline in pauth-1 printf 2020-03-05 16:09:19 +00:00
pauth-2.c target/arm: Use the proper TBI settings for linux-user 2021-02-16 13:07:56 +00:00
pauth-4.c tests/tcg: take into account expected clashes pauth-4 2020-02-25 20:20:23 +00:00
pauth-5.c target/arm: Fix AddPAC error indication 2020-08-03 17:55:03 +01:00
pcalign-a64.c tests/tcg: Add arm and aarch64 pc alignment tests 2021-12-15 10:35:26 +00:00
semicall.h semihosting: move semihosting tests to multiarch 2021-03-24 14:25:03 +00:00
sve-ioctls.c tests/tcg/aarch64: add SVE iotcl test 2020-03-17 17:38:47 +00:00
sysregs.c target/arm: align exposed ID registers with Linux 2023-01-05 14:12:34 +00:00
test-826.c target/arm: Fix sve2 ldnt1 and stnt1 2022-03-18 10:55:15 +00:00