linux/tools
Mark Rutland 78b23877db kselftest/arm64: fp-ptrace: Fix expected FPMR value when PSTATE.SM is changed
The fp-ptrace test suite expects that FPMR is set to zero when PSTATE.SM
is changed via ptrace, but ptrace has never altered FPMR in this way,
and the test logic erroneously relies upon (and has concealed) a bug
where task_fpsimd_load() would unexpectedly and non-deterministically
clobber FPMR.

Using ptrace, FPMR can only be altered by writing to the NT_ARM_FPMR
regset. The value of PSTATE.SM can be altered by writing to the
NT_ARM_SVE or NT_ARM_SSVE regsets, and/or by changing the SME vector
length (when writing to the NT_ARM_SVE, NT_ARM_SSVE, or NT_ARM_ZA
regsets), but none of these writes will change the value of FPMR.

The task_fpsimd_load() bug was introduced with the initial FPMR support
in commit:

  203f2b95a8 ("arm64/fpsimd: Support FEAT_FPMR")

The incorrect FPMR test code was introduced in commit:

  7dbd26d0b2 ("kselftest/arm64: Add FPMR coverage to fp-ptrace")

Subsequently, the task_fpsimd_load() bug was fixed in commit:

  e5fa85fce0 ("arm64/fpsimd: Don't corrupt FPMR when streaming mode changes")

... whereupon the fp-ptrace FPMR tests started failing reliably, e.g.

| # # Mismatch in saved FPMR: 915058000 != 0
| # not ok 25 SVE write, SVE 64->64, SME 64/0->64/1

Fix this by changing the test to expect that FPMR is *NOT* changed when
PSTATE.SM is changed via ptrace, matching the extant behaviour.

I've chosen to update the test code rather than modifying ptrace to zero
FPMR when PSTATE.SM changes. Not zeroing FPMR is simpler overall, and
allows the NT_ARM_FPMR regset to be handled independently from other
regsets, leaving less scope for error.

Fixes: 7dbd26d0b2 ("kselftest/arm64: Add FPMR coverage to fp-ptrace")
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: David Spickett <david.spickett@arm.com>
Cc: Luis Machado <luis.machado@arm.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20250508132644.1395904-22-mark.rutland@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
2025-05-08 15:45:24 +01:00
..
accounting
arch perf tools changes for v6.15 2025-03-31 08:52:33 -07:00
bootconfig
bpf bpf-next-6.15 2025-03-30 12:43:03 -07:00
build perf tools changes for v6.15 2025-03-31 08:52:33 -07:00
certs
cgroup
counter
crypto
debugging taint: Add TAINT_FWCTL 2025-03-06 15:13:13 -04:00
firewire
firmware
gpio
hv
iio
include tools/include: make uapi/linux/types.h usable from assembly 2025-04-06 12:55:31 -07:00
kvm/kvm_stat
laptop
leds
lib - The 7 patch series "powerpc/crash: use generic crashkernel 2025-04-01 10:06:52 -07:00
memory-model tools/memory-model: glossary.txt: Fix indents 2025-02-25 10:22:34 -08:00
mm
net
objtool These are objtool fixes and updates by Josh Poimboeuf, centered 2025-04-02 10:30:10 -07:00
pcmcia
perf tracing/timers: Rename the hrtimer_init event to hrtimer_setup 2025-04-05 10:30:17 +02:00
power Turbostat 2025.05.06 2025-04-06 12:32:43 -07:00
rcu
sched_ext tools/sched_ext: Sync with scx repo 2025-04-02 09:08:33 -10:00
scripts tracing tooling updates for 6.15: 2025-03-27 17:03:01 -07:00
sound ASoC: dapm-graph: set fill colour of turned on nodes 2025-02-24 18:35:54 +00:00
spi
testing kselftest/arm64: fp-ptrace: Fix expected FPMR value when PSTATE.SM is changed 2025-05-08 15:45:24 +01:00
thermal tools: Remove redundant quiet setup 2025-02-18 16:27:43 -03:00
time
tracing tracing tooling updates for 6.15: 2025-03-27 17:03:01 -07:00
usb
verification tracing tooling updates for 6.15: 2025-03-27 17:03:01 -07:00
virtio tools: virtio/linux/module.h add MODULE_DESCRIPTION() define. 2025-02-25 07:10:45 -05:00
wmi
workqueue
writeback
Makefile tools/Makefile: Remove pci target 2025-03-08 14:35:32 +00:00