Skip to contentSkip to conversation

usb: Support for removing device by host addr, improved auto filter syntax

PATCH In review Max Krasnyansky 2 participants 3 messages Sep 6, 2008 – Sep 12, 2008 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 usb: Support for removing device by host addr, improved auto filter syntax

This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:
usb_add host:3.5
...
usb_del host:3.5
Before the patch 'usb_del' did not support 'host:' notation.

----
Syntax for specifying auto connect filters has been improved. Old syntax was
host:bus.dev
host:pid:vid
New syntax is

    host:auto:bus.dev[:pid:vid]

In both the cases any attribute can be set to "*".

New syntax is more flexible and lets you do things like

    host:3.*:5533:* /* grab any device on bus 3 with vendor id 5533 */

It's now possible to remove auto filters. For example:

    usb_del host:auto:3.*:5533:*

Active filters are printed after all host devices in 'info usb' output. Which now looks like this:

Device 1.1, speed 480 Mb/s
Hub: USB device 1d6b:0002, EHCI Host Controller
Device 1.4, speed 480 Mb/s

    Class 00: USB device 1058:0704, External HDD
  Auto filters:
    Device 3.* ID *:*
---
 hw/usb.h    |    1 +
 usb-linux.c |  203 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 vl.c        |    3 +
 3 files changed, 176 insertions(+), 31 deletions(-)
hw/usb.h +1 -0
index 997e69f..1a353bb 100644
@@ -240,6 +240,7 @@ USBDevice *usb_hub_init(int nb_ports);
 
 /* usb-linux.c */
 USBDevice *usb_host_device_open(const char *devname);
+int usb_host_device_close(const char *devname);
 void usb_host_info(void);
 
 /* usb-hid.c */
usb-linux.c +172 -31

281 lines not on this page · raw message

vl.c +3 -0
index 0a457a9..2d106c0 100644
@@ -5866,6 +5866,9 @@ static int usb_device_del(const char *devname)
     int bus_num, addr;
     const char *p;
 
+    if (strstart(devname, "host:", &p))
+        return usb_host_device_close(p);
+
     if (!used_usb_ports)
         return -1;
 
Signature · 1 line
1.5.5.1
#1 lore raw
Quoted 10 lines · Max Krasnyansky

This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:

   usb_add host:3.5
   ...
   usb_del host:3.5

Before the patch 'usb_del' did not support 'host:' notation.

This patch breaks the windows build with:

i686-pc-mingw32-gcc -Wall -O2 -g -fno-strict-aliasing -m32 -I. -I/home/anthony/svn/qemu -MMD -MP -MT usb-linux.o -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/anthony/svn/qemu/slirp -c -o usb-linux.o /home/anthony/svn/qemu/usb-linux.c /home/anthony/svn/qemu/usb-linux.c:1205: error: conflicting types for 'usb_host_device_close'
/home/anthony/svn/qemu/hw/usb.h:243: error: previous declaration of 'usb_host_device_close' was here
make: *** [usb-linux.o] Error 1

Regards,

Anthony Liguori

#2 lore raw
Quoted 18 lines · Anthony Liguori
Quoted 10 lines · Max Krasnyansky

This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:

   usb_add host:3.5
   ...
   usb_del host:3.5

Before the patch 'usb_del' did not support 'host:' notation.

This patch breaks the windows build with:

i686-pc-mingw32-gcc -Wall -O2 -g -fno-strict-aliasing -m32 -I.

(quoted diff) +0 -3
-I/home/anthony/svn/qemu -MMD -MP -MT usb-linux.o -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-I/home/anthony/svn/qemu/slirp -c -o usb-linux.o
Quoted 6 lines

/home/anthony/svn/qemu/usb-linux.c /home/anthony/svn/qemu/usb-linux.c:1205: error: conflicting types for 'usb_host_device_close' /home/anthony/svn/qemu/hw/usb.h:243: error: previous declaration of 'usb_host_device_close' was here
make: *** [usb-linux.o] Error 1

I'll take a look and resend. Thanx for testing.

Max