Quoting Guenter Roeck (2024-10-03 17:25:37)
On 10/3/24 16:46, Stephen Boyd wrote: [ ... ]
That DT test has been there for a few releases. Is this the first time those tests have been run on arm64+acpi? I didn't try after sending the patches and forgot that the patch was dropped.
Previously I had the affected tests disabled and never tracked down the problem. Since the problem is now spreading to additional tests, I finally tracked it down, that is all.
Ok great. Good to know this isn't a new problem. Thanks for tracking it down.
How are you running kunit tests? I installed the qemu-efi-aarch64 debian package to get QEMU_EFI.fd but passing that to the kunit.py run command with --qemu_args="-bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd" didn't get me beyond the point that the EFI stub boots linux. I think the serial console must not be working and thus the kunit wrapper waits for something to show up but nothing ever does. I haven't dug any further though, so maybe you have a working command.
I run all tests during boot, not from the command line. I also use the -bios command but don't recall any issues with the console. I specify the console on the qemu command line; depending on the qemu machine it is either ttyS0 or ttyAMA0. The init script then finds and selects the active console.
Can you please describe how you run the kunit test? And provide the qemu command you run to boot arm64 with acpi?
Here's my command that isn't working:
./tools/testing/kunit/kunit.py run --arch=arm64 --kunitconfig=drivers/of --qemu_args="-bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd"
I can't really see what that command is actually doing ;-).
It eventually runs this qemu command
qemu-system-aarch64 -nodefaults -m 1024 -kernel .kunit/arch/arm64/boot/Image.gz -append 'kunit.enable=1 console=ttyAMA0 kunit_shutdown=reboot' -no-reboot -nographic -serial stdio -machine virt -cpu max,pauth-impdef=on -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
I see that it fails because the architected timer isn't there after I add an earlycon=pl011,0x9000000 to the kernel commandline. I suspect passing a bios like this is incorrect, but I rarely run qemu manually so I don't know what I'm doing wrong.
NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 rcu: srcu_init: Setting srcu_struct sizes based on contention. timer_probe: no matching timers found Kernel panic - not syncing: Unable to initialise architected timer. CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.11.0-rc1-00261-g497f7c30f184 #203 Call trace: dump_backtrace+0x94/0xec show_stack+0x18/0x24 dump_stack_lvl+0x38/0x90 dump_stack+0x18/0x24 panic+0x36c/0x380 early_brk64+0x0/0xa8 start_kernel+0x27c/0x558 __primary_switched+0x80/0x88 ---[ end Kernel panic - not syncing: Unable to initialise architected timer. ]---
I'll just keep the affected tests disabled on arm64 for the time being.
We should skip the tests on arm64+acpi, which is similar to disabling but not exactly the same. There will likely be more DT overlay usage in kunit and so that will lead to more test disabling. Skipping properly is the better solution.