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: 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?



reply via email to

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