[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: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH] usb-linux: allow multiple devices with matching IDs |
Date: |
Wed, 10 Nov 2010 17:01:07 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
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?
- Re: [Qemu-devel] [PATCH] usb-linux: allow multiple devices with matching IDs,
Markus Armbruster <=