Re: selftests: arm64: fp-stress: Unable to handle kernel paging request at virtual address

From: Mark Brown
Date: Tue Nov 07 2023 - 09:21:12 EST


On Tue, Nov 07, 2023 at 06:43:25PM +0530, Naresh Kamboju wrote:

> # # SVE-VL-64-0: Expected
> [3904000039044000390480003904c0003904000139044001390480013904c0013904000239044002390480023904c0023904000339044003390480033904c003]
> <>

You've elided *lots* of error reports from the actual test which suggest
that there is substantial memory corruption, it looks like tearing part
way through loading or saving the values - the start of the vectors
looks fine but at some point they get what looks like a related process'
data, eg:

# # SVE-VL-64-0: Expected [3904000039044000390480003904c0003904000139044001390480013904c0013904000239044002390480023904c0023904000339044003390480033904c003]
# # SVE-VL-64-0: Got [3904000039044000390480003904c000390480003904c00039040001390440013904000139044001390480013904c001390480013904c0013904000239044002]

This only appears to affect SVE and SME, I didn't spot any FPSIMD
corruption but then that is the smallest case (and I didn't notice any
VL 16 cases either). It looks like the corruption is on the first thing
we check each time (either register 0 or the highest ZA.H vector for
ZA), all the values do look lke they were plausibly generated by
fp-stress test programs.

Then we get what looks like memory corruption:

> # # SVE-VL-256-<1>[ 88.160313] Unable to handle kernel paging
> request at virtual address 00550f0344550f02

> <4>[ 88.195706] Call trace:
> <4>[ 88.196098] percpu_ref_get_many
> (include/linux/percpu-refcount.h:174 (discriminator 2)
> include/linux/percpu-refcount.h:204 (discriminator 2))
> <4>[ 88.196815] refill_obj_stock (mm/memcontrol.c:3339 (discriminator 2))
> <4>[ 88.197367] obj_cgroup_uncharge (mm/memcontrol.c:3406)
> <4>[ 88.197835] kmem_cache_free (include/linux/mm.h:1630
> include/linux/mm.h:1849 include/linux/mm.h:1859 mm/slab.h:208
> mm/slab.h:572 mm/slub.c:3804 mm/slub.c:3831)
> <4>[ 88.198407] put_pid.part.0 (kernel/pid.c:118)
> <4>[ 88.198870] delayed_put_pid (kernel/pid.c:127)
> <4>[ 88.200527] rcu_core (arch/arm64/include/asm/preempt.h:13
> (discriminator 1) kernel/rcu/tree.c:2146 (discriminator 1)
> kernel/rcu/tree.c:2403 (discriminator 1))

This all seems very surprising, especially given that AFAICT there are
no changes in stable-6.6-rc for arch/arm64.

Attachment: signature.asc
Description: PGP signature