[kvm-unit-tests PATCH v6 00/14] arm64: EL2 support

Joey Gouly joey.gouly at arm.com
Fri Jan 23 11:30:15 PST 2026


On Fri, Jan 23, 2026 at 01:23:41PM -0600, Andrew Jones wrote:
> On Fri, Jan 23, 2026 at 04:50:39PM +0000, Joey Gouly wrote:
> > Hi all,
> > 
> > This series is for adding support to running the kvm-unit-tests at EL2.
> > 
> > Changes since v5[1]:
> > 	- make debug bp/wp skip on EL2
> > 	- fix microbench test
> > 	- add to CI
> > 	- applied the fixup's Drew talked about in v5
> > 
> > About this failure in micro-bench:
> > 
> > 	- micro-bench hits the assert in gicv3_lpi_alloc_tables()
> > 		lib/arm/gic-v3.c:183: assert failed: gicv3_data.redist_base[cpu]: Redistributor for cpu0 not initialized. Did cpu0 enable the GIC?	
> > 
> > in micro-bench.c lpi_prep() looks like this:
> > 
> > 	static bool lpi_prep(void)
> > 	{
> > 	        struct its_collection *col1;
> > 	        struct its_device *dev2;
> > 	        if (!gicv3_its_base())
> > 	                return false;
> > 
> > QEMU by default runs with gic-v2, so gicv3_its_base() should have returned
> > false and the lpi tests skipped. However because of the overflow mentioned in
> > the first commit (new to v6), the its_data.base was being overwritten to a
> > non-zero value.  This meant the test tried to do gic-v3 things on a gic-v2.
> 
> Nice work on the micro-bench/gic issue. Unfortunately the timer test still
> times out, and that breaks the new CI since that test is listed.

Can you drop the timer from the CI commit while I investigate? It passes here,
but I can try look more into. If everything else is working will be nice to
merge.


Thanks,
Joey

> 
> # No EL2
> 
> $ ./run_tests.sh -g timer
> PASS timer (18 tests)
> 
> # EL2
> 
> $ EL2=y ./run_tests.sh -g timer
> FAIL timer (timeout; duration=10s)
> 
> $ TIMEOUT=90s EL2=y ./run_tests.sh -g timer
> FAIL timer (timeout; duration=90s)
> 
> $ cat logs/timer.log
> timeout -k 1s --foreground 90s /usr/bin/qemu-system-aarch64 -nodefaults -machine virt,virtualization=on -accel tcg -cpu max -device virtio-serial-device -device virtconsole,chardev=ctd -chardev testdev,id=ctd -device pci-testdev -display none -serial stdio -kernel arm/timer.flat -smp 1 # -initrd /tmp/tmp.N15fhaPbhB
> CNTFRQ_EL0   : 0x0000000003b9aca0
> CNTPCT_EL0   : 0x00000000001d3a1f
> CNTP_CTL_EL0 : 0x0000000000000000
> CNTP_CVAL_EL0: 0x0000000000000000
> CNTVCT_EL0   : 0x00000000001d5884
> CNTV_CTL_EL0 : 0x0000000000000000
> CNTV_CVAL_EL0: 0x0000000000000000
> INFO: vtimer-busy-loop: After timer: 0x000000000027ae86
> INFO: vtimer-busy-loop: Expected   : 0x000000000027415b
> INFO: vtimer-busy-loop: Difference : 450 us
> PASS: vtimer-busy-loop: latency within 10 ms
> FAIL: vtimer-busy-loop: interrupt received
> PASS: vtimer-busy-loop: not pending before
> FAIL: vtimer-busy-loop: interrupt signal pending
> PASS: vtimer-busy-loop: no interrupt when timer is disabled
> PASS: vtimer-busy-loop: interrupt signal no longer pending
> PASS: vtimer-busy-loop: interrupt signal not pending
> INFO: vtimer-busy-loop: waiting for interrupt...
> qemu-system-aarch64: terminating on signal 15 from pid 112137 (timeout)
> 
> 
> Thanks,
> drew



More information about the linux-arm-kernel mailing list