On 09/15/17 00:02, Ard Biesheuvel wrote: > On 14 September 2017 at 08:37, Laszlo Ersek <[email protected]> wrote: >> The feature is primarily useful for modern AARCH64 guests that have no >> built-in virtio block / SCSI drivers; as on "qemu-system-aarch64 -M virt", >> there are no IDE or AHCI controllers that could be used as fallback. XHCI >> is available in "-M virt" however, and because XHCI predates AARCH64 by >> several years, said guests are expected to have built-in drivers for it. >> >> Other device models ("usb-uas", "usb-bot") are out of scope for now, >> similarly to USB1.x (UHCI) and USB2 (EHCI) host controllers, and similarly >> to USB hubs (which are USB1.1 only). In particular, port mapping between >> EHCI and companion UHCI controllers is very complex; it even leads to PCI >> slot/function differences between the OpenFirmware device paths exported >> by QEMU and the the UEFI device paths generated by edk2. >> >> The number of ports on the XHCI controller defaults to 4, but it can be >> raised via the "p3" property to 15. In addition, several XHCI controllers >> can be grouped into a single-slot, multi-function PCI device. These allow >> for a good number of usb-storage devices, while their desired boot order >> remains recognizable to this patch. >> >> In the example below, we create two XHCI controllers, grouped into PCI >> slot 00:02 as functions 0 and 1. Both controllers are given 15 ports. We >> attach a "usb-storage" device to controller 1 at port 3 (ports are 1-based >> in QEMU, 0-based in edk2), and attach another "usb-storage" device to >> controller 2 at port 9. >> >> QEMU command line options (NB. they apply equally to aarch64/virt and >> x86_64/{i440fx,q35}): >> >> -device qemu-xhci,id=xhci1,p3=15,addr=02.0,multifunction=on \ >> -device qemu-xhci,id=xhci2,p3=15,addr=02.1 \ >> \ >> -drive id=disk1,if=none,format=qcow2,$DISK1_OPTIONS \ >> -drive id=disk2,if=none,format=qcow2,$DISK2_OPTIONS \ >> \ >> -device usb-storage,drive=disk1,bus=xhci1.0,port=3,bootindex=1 \ >> -device usb-storage,drive=disk2,bus=xhci2.0,port=9,bootindex=2 \ >> >> Libvirt domain XML fragment: >> >> <controller type='usb' index='1' model='qemu-xhci' ports='15'> >> <address type='pci' >> domain='0x0000' bus='0x00' slot='0x02' function='0x0' >> multifunction='on'/> >> </controller> >> <controller type='usb' index='2' model='qemu-xhci' ports='15'> >> <address type='pci' >> domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> >> </controller> >> >> <disk type='file' device='disk'> >> <driver name='qemu' type='qcow2'/> >> <source file='...'/> >> <target dev='sda' bus='usb'/> >> <boot order='1'/> >> <address type='usb' bus='1' port='3'/> >> </disk> >> <disk type='file' device='disk'> >> <driver name='qemu' type='qcow2'/> >> <source file='...'/> >> <target dev='sdb' bus='usb'/> >> <boot order='2'/> >> <address type='usb' bus='2' port='9'/> >> </disk> >> >> Cc: Ard Biesheuvel <[email protected]> >> Cc: Gerd Hoffmann <[email protected]> >> Cc: Jordan Justen <[email protected]> >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Laszlo Ersek <[email protected]> > > Acked-by: Ard Biesheuvel <[email protected]>
Commit f9c59fa44ae2. Thanks! Laszlo _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

