audk/ArmPlatformPkg/ArmVirtualizationPkg
Laszlo Ersek eee326024e ArmVirtualizationPkg/ArmVirtualizationQemu: include XHCI driver
The "virt" machine type of qemu-system-(arm|aarch64) had no PCIe support
prior to qemu commit

  4ab29b82 arm: Add PCIe host bridge in virt machine

With that commit, the "virt" board acquired the capability to expose an
XHCI controller. Using a USB keyboard as example, the command line options
were

  -device nec-usb-xhci -device usb-kbd

However, due to a slight XHCI emulation bug in QEMU --  dating back to
several years earlier -- edk2's XHCI driver would encounter a failed
ASSERT().

This emulation problem has been fixed in QEMU commit

  aa685789 xhci: generate a Transfer Event for each Transfer TRB with the
           IOC bit set

and now edk2's XHCI driver works well on QEMU's "nec-usb-xhci" device.
Let's enable the driver in ArmVirtualizationQemu, as XHCI emulation is
reportedly more virtualization-friendly than EHCI, consuming less CPU.

(ArmVirtualizationXen is not modified because it includes no USB-related
drivers at all.)

This patch should not regress existing QEMU command lines (ie. expose the
failed ASSERT()) because QEMU's "-device nec-usb-xhci" has never before
resulted in USB devices that worked with edk2 firmware builds, hence users
have never had a reason to add that option.

Now that they learn about XHCI support in ArmVirtualizationQemu by reading
this commit message, they (or their packagers) will also know to update
qemu to aa685789 or later (in practice that means the upcoming 2.3
release), at least if they want to use '-device nec-usb-xhci' with edk2,
for the first time ever.

Cc: Leif Lindholm <Leif.Lindholm@arm.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Alexander Graf <agraf@suse.de>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@arm.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17053 6f19259b-4bc3-4df7-8a09-765794883524
2015-03-16 19:57:06 +00:00
..
Include ArmPlatformPkg/ArmVirtualizationPkg: introduce gEarlyPL011BaseAddressGuid 2014-09-18 18:06:22 +00:00
Library ArmVirtualizationPkg: PlatformIntelBdsLib: lack of QEMU kernel is no error 2015-03-02 16:19:36 +00:00
PciHostBridgeDxe ArmVirtualizationPkg/PciHostBridgeDxe: handle 0 in GetProposedResources() 2015-02-23 16:04:00 +00:00
PrePi ArmVirtualizationPkg: add a relocatable version of PrePi 2015-02-28 20:26:20 +00:00
VirtFdtDxe ArmVirtualizationPkg/VirtFdtDxe: wire up XenBusDxe to "xen,xen" DT node 2015-02-28 20:34:26 +00:00
ArmVirtualization.dsc.inc ArmVirtualizationPkg: build UEFI shell from source 2015-03-16 19:56:54 +00:00
ArmVirtualizationPkg.dec ArmVirtualizationPkg: add padding to FDT allocation 2015-02-28 20:26:10 +00:00
ArmVirtualizationQemu.dsc ArmVirtualizationPkg/ArmVirtualizationQemu: include XHCI driver 2015-03-16 19:57:06 +00:00
ArmVirtualizationQemu.fdf ArmVirtualizationPkg/ArmVirtualizationQemu: include XHCI driver 2015-03-16 19:57:06 +00:00
ArmVirtualizationXen.dsc OvmfPkg, ArmVirtualizationPkg: clean up XenHypercallLib names 2015-03-03 08:13:09 +00:00
ArmVirtualizationXen.fdf ArmVirtualizationPkg: build UEFI shell from source 2015-03-16 19:56:54 +00:00