On 22 November 2012 16:34, Li Zhang <zhlci...@linux.vnet.ibm.com> wrote: > On 2012年11月23日 00:18, Peter Maydell wrote: >> >> On 29 October 2012 10:25, Alexander Graf <ag...@suse.de> wrote: >>> >>> From: zhlci...@gmail.com <zhlci...@gmail.com> >>> >>> When -usb option is used, global varible usb_enabled is set. >>> And all the plaform will create one USB controller according >>> to this variable. In fact, global varibles make code hard >>> to read. >>> >>> So this patch is to remove global variable usb_enabled and >>> add USB option in machine options. All the plaforms will get >>> USB option value from machine options. >>> >>> USB option of machine options will be set either by: >>> * -usb >>> * -machine type=pseries,usb=on >>> >>> Both these ways can work now. They both set USB option in >>> machine options. In the future, the first way will be removed. >> >> This commit breaks "qemu-system-i386 -usb", which used to >> create a USB bus and now does not. Example to reproduce: >> >> $ dd if=/dev/zero bs=4096 count=1024 of=usb.img >> $ ./i386-softmmu/qemu-system-i386 -clock unix -monitor stdio -usb >> -drive if=none,file=usb.img,id=myusb -device >> usb-storage,id=myusb,drive=myusb,removable=on > > Hi Peter, > > I am sorry to cause this problem. > > I couldn't see the machine's option in your command line. > such as, -machine type=pc > > As it describes, you need to pass this option to enable USB. > Because USB option is set by machine's option.
We use "-usb" to enable USB in this command line. That has to continue to work, for back compatibility. I think your code to try to support -usb is broken: case QEMU_OPTION_usb: machine_opts = qemu_opts_find(qemu_find_opts("machine"), 0); will return NULL if there are no user-set machine opts at this point, so we never go on to try to set the usb machine opt to true. -- PMM