[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] usb-linux: allow multiple devices with matching
From: |
Grazvydas Ignotas |
Subject: |
Re: [Qemu-devel] [PATCH] usb-linux: allow multiple devices with matching IDs |
Date: |
Sat, 13 Nov 2010 16:32:57 +0200 |
On Wed, Nov 10, 2010 at 6:01 PM, Markus Armbruster <address@hidden> wrote:
> Grazvydas Ignotas <address@hidden> writes:
>
>> Right now if we pass through multiple USB devices with matching vendor
>> and product IDs, only first one is passed to guest, as the code thinks
>> second device is already attached. The only way to get those devices
>> working is to specify bus.addr which is inconvenient if devices are
>> frequently replugged on host, because the address changes after replug.
>>
>> Fix this by checking bus.addr before assuming the device is already
>> attached. This way -usbdevice host:1234:1234 -usbdevice host:1234:1234
>> will pass through 2 devices correctly.
>>
>> Signed-off-by: Grazvydas Ignotas <address@hidden>
>> ---
>> usb-linux.c | 8 ++++++--
>> 1 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/usb-linux.c b/usb-linux.c
>> index c3c38ec..b5f1396 100644
>> --- a/usb-linux.c
>> +++ b/usb-linux.c
>> @@ -1464,9 +1464,13 @@ static int usb_host_auto_scan(void *opaque, int
>> bus_num, int addr,
>> }
>> /* We got a match */
>>
>> - /* Already attached ? */
>> if (s->fd != -1) {
>> - return 0;
>> + /* Already attached? */
>> + if (s->bus_num == bus_num && s->addr == addr)
>> + return 0;
>> +
>> + /* Not attached but needs another hostdev */
>> + continue;
>> }
>> DPRINTF("husb: auto open: bus_num %d addr %d\n", bus_num, addr);
>
> Did you test that filtering by bus and addr still works?
>
Yes. However it still acts strange when one of those 2 devices is
unplugged, so you can drop this patch for now I guess.