[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Bug in usbdevices option handling when BusID=8



On 12/12/2013 05:01 PM, Anthony PERARD wrote:
On Mon, Aug 05, 2013 at 08:20:08PM +0100, Gordan Bobic wrote:
On 08/05/2013 02:22 PM, George Dunlap wrote:
On Mon, Aug 5, 2013 at 8:29 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
On Sun, 2013-08-04 at 12:08 +0100, Gordan Bobic wrote:
At a glance, this looks like something buggy happens when BusID=8. It
sees that the device is host:008.002, but then goes and tries to open
/dev/bus/usb/000/002 instead of /dev/bus/usb/008/002.
Smells like a bitmask gone wrong somewhere, or something like that.

xl/libxl doesn't really do much with the string which you passed in so
it should be going straight to qemu unmodified. You ought to be able to
see this in the logs I think.
Or using ps -ax -- what does that show the command-line to be?
It looks like a qemu-traditional (qemu-dm) issue:

# grep usb /var/log/xen/qemu-dm-edi.log
husb: open device 0.2
/dev/bus/usb/000/002: No such file or directory

# ps auxw | grep qemu
root      8364  4.4  0.0 239132  8880 ?        SLsl 20:16   0:07
/usr/lib/xen/bin/qemu-dm -d 1 -domain-name edi -vnc 127.0.0.1:0 -vncunused
-k en-gb -serial pty -videoram 8 -std-vga -boot c -usb -usbdevice
host:008.002 -acpi -vcpus 8 -vcpu_avail 0xff -net
nic,vlan=0,macaddr=00:16:3e:4e:c5:0c,model=e1000 -net
tap,vlan=0,ifname=vif1.0-emu,bridge=br0,script=no,downscript=no -M xenfv
I've just look into this bug. The problem is the way the convertion of
the string is done. And it is just a:
strtoul(devname, NULL, 0);

Here, strtoul while try to guess the base of the string, and a string
that begin by zero while be interpreted to be base 8, or octal. The
character '8' those not belong to this base, so the conversion stop
before '8' and the value return is 0.

We could force the base to be 10, but that mean that anyone who whould
have something like "host:0x4.0x2" while have a configuration that those
not work anymore.

In your case, you can have:
usbdevice="host:8.2" which will fix the issue.

What does qemu-xen do?

I'm not sure "host:0x04.0x2" is a supported format. You can see that "00x" is used in Linux in /dev; it's also used in lsusb, for instance, and I think a number of the other tools. I think it would make much more sense to match the format of these other tools, than to allow people to specify it in hex (using "0x") and have people trip over issues like this.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.