qemu-devel
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]