public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v3 0/6] ArmVirtQemu: move to generic PciHostBridgeDxe
@ 2016-09-02 18:15 Ard Biesheuvel
  2016-09-02 18:15 ` [PATCH v3 1/6] ArmVirtPkg/PciHostBridgeDxe: don't set linux, pci-probe-only DT property Ard Biesheuvel
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2016-09-02 18:15 UTC (permalink / raw)
  To: edk2-devel; +Cc: lersek, Ard Biesheuvel

Now that Laszlo's virtio-gpu-pci series has removed the last remaining obstacle,
we can get rid of the special PciHostBridgeDxe implementation in ArmVirtPkg,
and move to the generic one. On AArch64, this will allow us to perform DMA above
4GB without bounce buffering, and use 64-bit MMIO BARs allocated above 4 GB.

Changes since v2:
- use legacy ACPI id (0x0A03) rather than PCIe (0x0A08)
- disable DMA above 4 GB, this requires fixes in the PciHostBridgeDxe driver
  and in many PCI drivers in the EDK2
- set EFI_PCI_HOST_BRIDGE_MEM64_DECODE only if the MMIO64 region has non-zero
  size
- minor tweaks
- add Laszlo's acks to the remaining patches, all patches are acked now

Branch can be found here:
https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/qemu-pci

Changes since v1:
- new patch #2 to move the IoTranslation discovery to FdtPciPcdProducerLib,
  which is a cleaner approach since other drivers (i.e., ArmPciCpuIo2Dxe)
  depend on it as well
- add support for ARM, i.e., disable the 64-bit range in that case, since we
  cannot access 64-bit MMIO BARs if they are allocated there
- use statically allocated PCI_ROOT_BRIDGE[] array of size 1
- enable support for ISA and VGA I/O range decoding
- various other minor fixes based on Laszlo's review comments
- added ref links and Laszlo's acks where appropriate, i.e., where given and
  where the version of the patch in this series does not deviate substantially
  from the suggested version on which the preliminary ack was based

Patch #1 removes the linux,pci-probe-only override which does more harm than
good now that we switched to virtio-gpu-pci, which does not expose a raw
framebuffer.

Patch #2 extends FdtPciPcdProducerLib so that it also sets PcdPciIoTranslation,
which is required for the FdtPciHostBridgeLib implementation this series
introduces, but also for ArmPciCpuIo2Dxe, which produces EFI_CPU_IO2_PROTOCOL
on which the generic PciHostBridgeDxe depends as well.

Patch #3 implements PciHostBridgeLib for platforms exposing a PCI host bridge
using a pci-host-ecam-generic DT node. The initial version is based on the
ArmVirtPkg implementation of PciHostBridgeDxe, so it does not support 64-bit
MMIO BARs allocated above 4 GB, but it does support DMA above 4 GB without
bounce buffering.

Patch #4 switches to the generic PciHostBridgeDxe, with no change in
functionality other than support for DMA above 4 GB without bounce buffering.

Patch #5 adds support for allocating 64-bit MMIO BARs above 4 GB.

Patch #6 removes the now obsolete PciHostBridgeDxe from ArmVirtPkg.


Ard Biesheuvel (6):
  ArmVirtPkg/PciHostBridgeDxe: don't set linux,pci-probe-only DT
    property
  ArmVirtPkg/FdtPciPcdProducerLib: add handling of PcdPciIoTranslation
  ArmVirtPkg: implement FdtPciHostBridgeLib
  ArmVirtPkg/ArmVirtQemu: switch to generic PciHostBridgeDxe
  ArmVirtPkg/FdtPciHostBridgeLib: add MMIO64 support
  ArmVirtPkg: remove now unused PciHostBridgeDxe

 ArmVirtPkg/ArmVirtQemu.dsc                                       |   10 +-
 ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc                             |    3 +-
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                 |   10 +-
 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c     |  436 ++++
 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf   |   57 +
 ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.c   |  108 +-
 ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf |    2 +
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c                      | 1496 --------------
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h                      |  499 -----
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf                 |   64 -
 ArmVirtPkg/PciHostBridgeDxe/PciRootBridgeIo.c                    | 2144 --------------------
 11 files changed, 613 insertions(+), 4216 deletions(-)
 create mode 100644 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c
 create mode 100644 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf
 delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c
 delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h
 delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
 delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciRootBridgeIo.c

-- 
2.7.4



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-09-02 21:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-02 18:15 [PATCH v3 0/6] ArmVirtQemu: move to generic PciHostBridgeDxe Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 1/6] ArmVirtPkg/PciHostBridgeDxe: don't set linux, pci-probe-only DT property Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 2/6] ArmVirtPkg/FdtPciPcdProducerLib: add handling of PcdPciIoTranslation Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 3/6] ArmVirtPkg: implement FdtPciHostBridgeLib Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 4/6] ArmVirtPkg/ArmVirtQemu: switch to generic PciHostBridgeDxe Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 5/6] ArmVirtPkg/FdtPciHostBridgeLib: add MMIO64 support Ard Biesheuvel
2016-09-02 18:15 ` [PATCH v3 6/6] ArmVirtPkg: remove now unused PciHostBridgeDxe Ard Biesheuvel
2016-09-02 19:23 ` [PATCH v3 0/6] ArmVirtQemu: move to generic PciHostBridgeDxe Laszlo Ersek
2016-09-02 21:05   ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox