From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id AA37221E43B6C for ; Fri, 22 Sep 2017 05:53:29 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1CC90267C8; Fri, 22 Sep 2017 12:56:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 1CC90267C8 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=lersek@redhat.com Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-219.rdu2.redhat.com [10.10.120.219]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0394E619FF; Fri, 22 Sep 2017 12:56:35 +0000 (UTC) To: Ard Biesheuvel Cc: Jordan Justen , edk2-devel-01 References: <20170914153734.13572-1-lersek@redhat.com> <20170914153734.13572-2-lersek@redhat.com> From: Laszlo Ersek Message-ID: <7294f9f1-b292-591e-4a15-bbca8aa20ce7@redhat.com> Date: Fri, 22 Sep 2017 14:56:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 22 Sep 2017 12:56:37 +0000 (UTC) Subject: Re: [PATCH 1/1] OvmfPkg/QemuBootOrderLib: recognize "usb-storage" devices in XHCI ports X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Sep 2017 12:53:29 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 09/15/17 00:02, Ard Biesheuvel wrote: > On 14 September 2017 at 08:37, Laszlo Ersek 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: >> >> >>
> domain='0x0000' bus='0x00' slot='0x02' function='0x0' >> multifunction='on'/> >> >> >>
> domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> >> >> >> >> >> >> >> >>
>> >> >> >> >> >> >>
>> >> >> Cc: Ard Biesheuvel >> Cc: Gerd Hoffmann >> Cc: Jordan Justen >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Laszlo Ersek > > Acked-by: Ard Biesheuvel Commit f9c59fa44ae2. Thanks! Laszlo