> >>> I noticed that QMP's "device_add usb-ehci,id=i2,bus=pci.0" fails on PCI > >>> hotplug. The same for pci-ohci and this is because their initfn() do > >>> "dc->hotpluggable = false". So I removed those and now I can hotplug > USB > >>> hosts but none of them is able to actually work: > >>> > >>> root@aiktest-le:~# echo 1 >/sys/bus/pci/rescan > >>> [ 41.143062] ohci-pci 0000:00:01.0: init err (c8700000 0000) > >>> [ 41.143133] ohci-pci 0000:00:01.0: can't start > >>> [ 41.143227] ohci-pci 0000:00:01.0: startup error -75 > >>> [ 41.144202] ohci-pci 0000:00:01.0: init 0000:00:01.0 fail, -75 > >>> > >>> > >>> root@aiktest-le:~# echo 1 >/sys/bus/pci/rescan > >>> [ 43.691067] ehci-pci 0000:00:01.0: can't setup: -110 > >>> [ 43.692424] ehci-pci 0000:00:01.0: init 0000:00:01.0 fail, -110 > >>> > >>> > >>> Why is that? Is QEMU just missing some bits or there is some fundamental > >>> issue which I just do not see? Thanks! > >>> > >> Cc'ing Gerd. > >> > >> Actually I have post a patch serials for supporting usb host adapter > hotplugging, > >> Which has been involved in Gerd's (the USB mantainer) usb-next tree. Please > see: > >> https://www.kraxel.org/cgit/qemu/log/?h=rebase/usb-next > >> > >> The function of usb host adapter hotplugging is ok. You are welcome to test > it. > > > > It does not work for me though. The device appears in the system but the > > driver fails to bring it up: > > > > [root@localhost ~]# echo 1 >/sys/bus/pci/rescan > > > > [ 43.482378] pci 0000:00:01.0: BAR 0: assigned [mem > > 0x100a0000000-0x100a0000fff] > > [ 43.488851] ehci-pci 0000:00:01.0: EHCI Host Controller > > > > [ 43.490153] ehci-pci 0000:00:01.0: new USB bus registered, assigned bus > > number 1 > > [ 43.504957] ehci-pci 0000:00:01.0: can't setup: -110 > > > > [ 43.505028] ehci-pci 0000:00:01.0: USB bus 1 deregistered > > > > [ 43.507660] ehci-pci 0000:00:01.0: init 0000:00:01.0 fail, -110 > > > > [ 43.507808] ehci-pci: probe of 0000:00:01.0 failed with error -110 > > > > > > > >> BTW, What's your guest os type? > > > > Fedora20/ppc64 or Ubuntu14/ppc64le. > > > > I tried your tree merged with > > https://github.com/mdroth/qemu/tree/spapr-pci-hotplug-ppc-next-cleanup2 > > > > I am adding PCIhotplug-on-PPC experts to the thread, may be they have > ideas... > > > More precise - this fails: > > drivers/usb/host/ehci-hcd.c: > > int ehci_handshake(struct ehci_hcd *ehci, void __iomem *ptr, > u32 mask, u32 done, int usec) > { > u32 result; > > do { > result = ehci_readl(ehci, ptr); > if (result == ~(u32)0) /* card removed */ > return -ENODEV; > result &= mask; > if (result == done) > return 0; > udelay (1); > usec--; > } while (usec > 0); > return -ETIMEDOUT; // <------------------ > } > > -- > Alexey
Hi, Alexey. Does this work when you configure EHCI at the command line, not hotplugging? BTW, I'm not familiar with PCIhotplug-on-PPC. Sorry for this. Best regards, -Gonglei