I was testing the usb_hid_raw application from the Genode 26.05 release on an HP ProDesk 600 G1 hardware platform. The following error occurs during USB controller initialization:
[init -> usb -> usb] Error: INVALID RPC: sigh
[init -> usb -> usb] Error: attempt of IPC call to an invalid object
To investigate the issue in more detail, I reproduced the same problem in QEMU using the following command:
sudo qemu-system-x86_64 \
-display sdl \
-device nec-usb-xhci,id=xhci0 \
-device usb-mouse,bus=xhci0.0 \
-serial mon:stdio \
-m 800 \
-drive format=raw,file=build/x86_64/var/run/usb_hid_raw.img \
-machine q35 \
-cpu Skylake-Client \
-net nic,model=e1000,netdev=net0 \
-netdev user,id=net0 \
-device ich9-usb-ehci1,id=ehci
However, the issue does not occur under either of the following conditions:
- Changing the EHCI PCI address by explicitly assigning it to
addr=0x5:
-device ich9-usb-ehci1,id=ehci,addr=0x5
- Initializing the EHCI controller before the xHCI controller.
In both cases, usb_hid_raw starts and operates correctly.
This suggests that the issue may be related to the PCI address/BDF assignment or the initialization order of the xHCI and EHCI USB controllers.