]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: selftests: Assert GICR_TYPER.Processor_Number matches selftest CPU number
authorMaximilian Dittgen <mdittgen@amazon.de>
Wed, 19 Nov 2025 13:57:43 +0000 (14:57 +0100)
committerOliver Upton <oupton@kernel.org>
Wed, 19 Nov 2025 20:38:59 +0000 (12:38 -0800)
The selftests GIC library and tests assume that the
GICR_TYPER.Processor_number associated with a given CPU is the same as
the CPU's selftest index.

Since this assumption is not guaranteed by specification, add an assert
in gicv3_cpu_init() that validates this is true.

Signed-off-by: Maximilian Dittgen <mdittgen@amazon.de>
Link: https://msgid.link/20251119135744.68552-1-mdittgen@amazon.de
Signed-off-by: Oliver Upton <oupton@kernel.org>
tools/testing/selftests/kvm/lib/arm64/gic_v3.c

index 66d05506f78b13b23cbf3970e2b910d8becf7cd4..f81025cd32e2d5d4973cda40d849ce7c8c09a95e 100644 (file)
@@ -298,12 +298,17 @@ static void gicv3_cpu_init(unsigned int cpu)
        volatile void *sgi_base;
        unsigned int i;
        volatile void *redist_base_cpu;
+       u64 typer;
 
        GUEST_ASSERT(cpu < gicv3_data.nr_cpus);
 
        redist_base_cpu = gicr_base_cpu(cpu);
        sgi_base = sgi_base_from_redist(redist_base_cpu);
 
+       /* Verify assumption that GICR_TYPER.Processor_number == cpu */
+       typer = readq_relaxed(redist_base_cpu + GICR_TYPER);
+       GUEST_ASSERT_EQ(GICR_TYPER_CPU_NUMBER(typer), cpu);
+
        gicv3_enable_redist(redist_base_cpu);
 
        /*