qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] Add USB sys file-system support (v2)


From: Jason Wessel
Subject: Re: [Qemu-devel] [PATCH] Add USB sys file-system support (v2)
Date: Fri, 05 Sep 2008 08:30:23 -0500
User-agent: Thunderbird 2.0.0.16 (X11/20080724)

TJ wrote:
> Revision 2.
>
> I realised I'd made a major programming boo-boo despite knowing better -
> requesting an allocation of memory in the host USB file-system scan
> function, forgetting that the function isn't just called once but
> repeatedly. That would have led to orphaned memory allocations each time
> a USB scan or open operation occurred - baaad!
>
> I've also changed the logic so it only scans for the USB file-system
> type the first time. After that it works off stored values.
>
>   

Perhaps there is more work to do with this patch, or there are other
pieces still pending?

I tried out the patch because it looked reasonably interesting on ubuntu
7.10 64bit, and looked like a nice way to attach a local USB device, but
it did not quite work.

IE:
(qemu) info usbhost
  Device 3.2, speed 12 Mb/s
    Class 00: USB device 067b:2303, USB-Serial Controller


The first thing I tried was using it with the vendor/product id and it
failed immediately.

qemu ... -usb -usbdevice host:067b:2303
Warning: could not add USB device host:067b:2303

Then I tried using it with bus.addr syntax:

qemu ... -usb -usbdevice host:003.002
husb: open device 3.2
husb: opened /dev/bus/usb/003/002
husb: config #1 need -1
husb: 1 interfaces claimed for configuration -1
husb: grabbed usb device 3.2
usb_linux_update_endp_table: Broken pipe
Warning: could not add USB device host:003.002



It turns out that it is failing on the ioctl in usb-linux.c


    541         ct.bRequestType = USB_DIR_IN | USB_RECIP_INTERFACE;
    542         ct.bRequest = USB_REQ_GET_INTERFACE;
    543         ct.wValue = 0;
    544         ct.wIndex = interface;
    545         ct.wLength = 1;
    546         ct.data = &alt_interface;
    547         ct.timeout = 50;
    548
    549         ret = ioctl(s->fd, USBDEVFS_CONTROL, &ct);
    550         if (ret < 0) {
    551             perror("usb_linux_update_endp_table");
    552             return 1;
    553         }


I can see that some of the ioctls succeed so perhaps it is partially
working.  Any ideas around why this might be failing?  I had not ever
looked at the qemu usb code before, but the -1 for the configuration did
look a bit suspicious . 

Cheers,
Jason.




reply via email to

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