[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] USB PCI host bus adapter hot plug
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-devel] USB PCI host bus adapter hot plug |
Date: |
Wed, 13 Aug 2014 14:52:59 +1000 |
User-agent: |
Mozilla/5.0 (X11; Linux i686 on x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
On 08/12/2014 04:05 PM, Alexey Kardashevskiy wrote:
> On 08/11/2014 03:59 PM, Gonglei (Arei) wrote:
>> Hi,
>>
>>> Subject: [Qemu-devel] USB PCI host bus adapter hot plug
>>>
>>> Hi!
>>>
>>> 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:
>>>
>>> address@hidden:~# 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
>>>
>>>
>>> address@hidden:~# 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:
>
> address@hidden ~]# 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