Hi folks, I'm still looking for a sane way to handle multifunction pci devices, specifically a EHCI USB controller with UHCI companion controllers.
Here comes a small (incomplete[1]) two patch series to make the issue more clear. The first patch adds a function which creates all devices with the properties set as needed. The second patch adds a '-usb2' switch to windup this in a user-friendly way. Adding a -usb2 switch sucks though. I'd prefer to have some way to create such devices via -device, but without asking the user to create all functions individually on the command line, i.e. have something along the lines of ... qemu -device ich9-usb,slot=08 ... instead of ... qemu \ -device ich9-usb-ehci1,addr=08.7,multifunction=on,id=ehci \ -device ich9-usb-uhci1,addr=08.0,multifunction=on,masterbus=ehci.0,firstport=0 \ -device ich9-usb-uhci2,addr=08.1,multifunction=on,masterbus=ehci.0,firstport=2 \ -device ich9-usb-uhci3,addr=08.2,multifunction=on,masterbus=ehci.0,firstport=4 Suggestions? cheers, Gerd [1] full series @ http://www.kraxel.org/cgit/qemu/log/?h=usb.18 Gerd Hoffmann (2): usb: add ich9_ehci_with_companion_init() usb: windup ich9_ehci_with_companion_init via -usb2 switch. hw/pc_piix.c | 14 ++++++++++---- hw/usb-ehci.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ hw/usb.h | 3 +++ qemu-options.hx | 13 +++++++++++-- vl.c | 3 +++ 5 files changed, 76 insertions(+), 6 deletions(-)