AMD64, VMWare and USB
Hello, there seems to be a (known?) problem with VMWare 4.5 and SuSE 9.1 regarding USB-support. It seems to be resolved with newer 32-bit Kernels, after a node under /proc was named back to the kernel default. ( http://www.vmware.com/community/thread.jspa?forumID=19&threadID=6044 ) However, there still seems to be another problem with 64bit kernels. This problem looks very similar, the host-kernel recognizes the USB-device correctly, you can connect it to the guest (in VMWare), but the Guest-OS then only recognizes an "unknown device". If I look into the vmware-log, I see entries stating: Aug 27 01:47:06: vmx| USB: Connecting device 0xf0010002057c1900 Aug 27 01:47:06: vmx| VMXVmdbLoadUsbDevices: New set of 1 USB devices Aug 27 01:47:06: vmx| USBGL: SUBMITURB=0x8578bc0 failed -1:22:Invalid argument Aug 27 01:47:06: vmx| type=2 endpoint=80 status=0 flags=0 buffer=0x8578bec Aug 27 01:47:06: vmx| buflen=10 actlen=0 sof=0 numpkts=0 errcount=0 Aug 27 01:47:06: vmx| signr=0 ucontext=0x8578bb8 Aug 27 01:47:06: vmx| USB: Setup issued during another setup action and in the guest-OS /var/log/messages (SUSE 9.1 i386) I see: Aug 27 00:36:14 server02 kernel: usb 1-1: new full speed USB device using address 2 Aug 27 00:36:15 server02 kernel: usb 1-1: device not accepting address 2, error -71 A dmesg on the host gives me the messages: ioctl32(vmware-vmx:13090): Unknown cmd fd(106) cmd(802c550a){00} arg(085a47c0) on /proc/bus/usb/002/002 ioctl32(vmware-vmx:13090): Unknown cmd fd(106) cmd(802c550a){00} arg(084363b0) on /proc/bus/usb/002/002 Now, for me it looks like there is some kind of missing compatibility between 32 bit programs (VMWare) and the 64bit kernel. How could this be resolved? I have seen some mapping calls in vmmon (which is a module that is built by vmware for the host kernel), but I guess those where mostly added by the maintanier of vmware-any-any (a patch to enable better 64bit support). Should the fixes go into that module, into some kind of LD_PRELOAD library (suggested in the thread at the vmware-site) or should these be in the kernel itself? There is a ioctl32 which I guess is the compat-layer in the kernel, but either the wrapping for this particular call is wrong (perhaps because it includes a structure?!), or entirely missing. Any ideas? Kind regards, Wolfgang
Should the fixes go into that module, into some kind of LD_PRELOAD library (suggested in the thread at the vmware-site) or should these be in the kernel itself?
The USBDEVFS_SUBMITURB interface is too misdesigned to be 32bit emulated. For the details see the comment before get_urb32 in /usr/src/linux/fs/compat_ioctl.c:get_urb32 There are no plans to fix this. -Andi
Andi Kleen sagte:
Should the fixes go into that module, into some kind of LD_PRELOAD library (suggested in the thread at the vmware-site) or should these be in the kernel itself?
The USBDEVFS_SUBMITURB interface is too misdesigned to be 32bit emulated. For the details see the comment before get_urb32 in /usr/src/linux/fs/compat_ioctl.c:get_urb32 There are no plans to fix this.
-Andi
Thanks for the info, I'll have a look into that module as soon as I'm at home again. So I guess I'll have to wait until a) VMWare is fixed not to use USBDVFS (what's the interface/library you should use instead?) b) The USBDEVFS_SUBMITURB is fixed nevertheless (or I do it ;-) ) - if it can be done at all c) someone actually writes that wrapper for VMWare Could this problem with the non-working submiturb have to do something with me not being able to get an USB-Harddisk to work under SuSE 9.1 x86_64? I didn't do any more debugging, but in /var/log/messages on the Opteron-System (no VMWare included here) there also were the USB device did not accept device number ... error -71 messages. Just wondering ... - Wolfgang
participants (2)
-
Andi Kleen
-
W. Voos