This v3 now fully gets rid of the VirtFdtDxe kludge, by moving its
functionality to its various clients that access PCDs or protocols supplied
by it.

Changes since v2:
- dropped the patches implementing the protocol definition, the FdtClientDxe
  implementation and the handling of the GIC, PSCI, timer, fw_cfg and PCI
  device tree nodes since they have now been merged (thanks Laszlo)
- renamed ArmVirtRtcFdtClientLib to ArmVirtPL031FdtClientLib since it is
  specific to PL031
- handle missing arm,pl031 DT node gracefully (as before), rather than blowing
  up the firmware by returing failure from a library constructor
- some general cleanup of INFs, i.e., add missing library dependencies, remove
  declared false dependencies

Changes since v1:
- merged two patches related to Pcd.inf's dependency on itself
- incorporated early feedback from Laszlo
- tweaked the protocol to support virtio,mmio DT node discovery
- split the remaining VirtFdtDxe functionality into XenioFdtDxe and
  VirtioFdtDxe
- updated commit messages (where appropriate) to justify the conversion from
  a A PRIORI DXE driver to a protocol dependency on the FDT client protocol

------ v1 blurb -------
This series addresses the cases where other DXE drivers rely on dynamic PCDs
populated by VirtFdtDxe, which requires it to execute first using an A PRIORI
declaration. Instead, this series moves the DT node parsing to the respective
users, using a new FDT client protocol which can be used in the various
depexes.

The next step is to split the remaining handling performed by VirtFdtDxe into
drivers appropriate for the platforms, i.e., virtio for QEMU and xeniommio for
Xen domU.

This is somewhat rough around the edges, but is mostly intended to elicit
discussion, and I fully expect these changes to make it into the tree looking
a lot different from this v1.

Ard Biesheuvel (9):
  ArmVirtPkg: implement ArmVirtPL031FdtClientLib
  ArmVirtPkg: move QEMU based platforms to ArmVirtPL031FdtClientLib
  ArmVirtPkg/VirtFdtDxe: drop RTC handling
  ArmVirtPkg: get rid of A PRIORI DXE declarations for VirtFdtDxe
  ArmVirtPkg/VirtFdtDxe: remove unused PL011 DT node type
  ArmVirtPkg/VirtFdtDxe: move FDT config table installation to
    FdtClientDxe
  OvmfPkg/XenIoMmioLib: add missing MemoryAllocationLib dependency to
    INF
  ArmVirtPkg/ArmVirtXen: move from VirtFdtDxe to new XenioFdtDxe driver
  ArmVirtPkg/VirtFdtDxe: remove Xenio handling and rename to
    VirtioFdtDxe

 ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf                                 |   4 
+
 ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.inf |  47 
++++
 ArmVirtPkg/{VirtFdtDxe/VirtFdtDxe.inf => VirtioFdtDxe/VirtioFdtDxe.inf}  |  39 
++-
 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf                                   |  44 
++++
 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf                            |   1 
+
 ArmVirtPkg/FdtClientDxe/FdtClientDxe.c                                   |  11 
+
 ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.c   |  80 
++++++
 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c                                       | 257 
--------------------
 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.c                                   | 125 
++++++++++
 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c                                     |  63 
+++++
 ArmVirtPkg/ArmVirtQemu.dsc                                               |   7 
+-
 ArmVirtPkg/ArmVirtQemu.fdf                                               |   6 
+-
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                         |   9 
+-
 ArmVirtPkg/ArmVirtQemuKernel.fdf                                         |   6 
+-
 ArmVirtPkg/ArmVirtXen.dsc                                                |   2 
+-
 ArmVirtPkg/ArmVirtXen.fdf                                                |   6 
+-
 16 files changed, 404 insertions(+), 303 deletions(-)
 create mode 100644 
ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.inf
 rename ArmVirtPkg/{VirtFdtDxe/VirtFdtDxe.inf => VirtioFdtDxe/VirtioFdtDxe.inf} 
(57%)
 create mode 100644 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf
 create mode 100644 
ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.c
 delete mode 100644 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c
 create mode 100644 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.c
 create mode 100644 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c

-- 
2.5.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to