[PATCH 2/2] tests/functional/aarch64: add raspi4b PCIe enumeration test
Marcelo Manzo <[email protected]> Sat, 25 Jul 2026 08:42:31 -0400
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Add test_arm_raspi4_pcie, exercising the fix in the previous patch: attach a qemu-xhci controller to the PCIe root port, confirm the guest's driver binds it, and confirm both the root port (00:00.0) and the xHCI controller (01:00.0) show up in /sys/bus/pci/devices/. Before the previous patch this would find no devices at all. Attaches with msi=off,msix=off: the BCM2838 PCIe root complex's own MSI controller is not implemented, so a device relying on MSI/MSI-X for interrupts never signals its driver. INTx works and is what this test (and any real device behind this root port, for now) relies on. Signed-off-by: Marcelo Manzo <[email protected]> --- tests/functional/aarch64/test_raspi4.py | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/functional/aarch64/test_raspi4.py b/tests/functional/aarch64/test_raspi4.py index 0e254a20..32542b84 100755 --- a/tests/functional/aarch64/test_raspi4.py +++ b/tests/functional/aarch64/test_raspi4.py @@ -122,5 +122,42 @@ def test_arm_raspi4_genet(self): exec_command_and_wait_for_pattern(self, 'halt', 'reboot: System halted') + def test_arm_raspi4_pcie(self): + kernel_path = self.archive_extract(self.ASSET_KERNEL_20190215, + member='boot/kernel8.img') + dtb_path = self.archive_extract(self.ASSET_KERNEL_20190215, + member='boot/bcm2711-rpi-4-b.dtb') + initrd_path = self.uncompress(self.ASSET_INITRD) + + self.set_machine('raspi4b') + self.vm.set_console() + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + + 'earlycon=pl011,mmio32,0xfe201000 ' + + 'console=ttyAMA0,115200 ' + + 'panic=-1 noreboot ' + + 'dwc_otg.fiq_fsm_enable=0') + self.vm.add_args('-kernel', kernel_path, + '-dtb', dtb_path, + '-initrd', initrd_path, + '-append', kernel_command_line, + '-no-reboot', + # msi=off,msix=off: the BCM2838 PCIe root complex's + # MSI controller is not implemented, so a device + # relying on MSI/MSI-X for interrupts never signals + # and its driver never probes. INTx works. + '-device', + 'qemu-xhci,bus=pcie.1,id=xhci,msi=off,msix=off') + self.vm.launch() + self.wait_for_console_pattern( + 'xhci_hcd 0000:01:00.0: xHCI Host Controller') + self.wait_for_console_pattern('Boot successful.') + + exec_command_and_wait_for_pattern(self, 'ls /sys/bus/pci/devices/', + '0000:00:00.0') + exec_command_and_wait_for_pattern(self, 'ls /sys/bus/pci/devices/', + '0000:01:00.0') + exec_command_and_wait_for_pattern(self, 'halt', 'reboot: System halted') + + if __name__ == '__main__': LinuxKernelTest.main() -- 2.47.1