This v2 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 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 (24):
  ArmVirtPkg: introduce FdtClientProtocol
  ArmVirtPkg/FdtClientDxe: implement new driver
  ArmVirtPkg: add FdtClientDxe to the ArmVirtPkg platforms
  ArmVirtPkg/ArmGicArchLib: move to FdtClient protocol
  ArmVirtPkg/VirtFdtDxe: remove GIC discovery
  ArmVirtPkg/ArmVirtPsciResetSystemLib: move to FDT client protocol
  ArmVirtPkg/VirtFdtDxe: drop detection of PSCI method
  ArmVirtPkg: implement ArmVirtTimerFdtClientLib
  ArmVirtPkg: move TimerDxe to FDT client library
  ArmVirtPkg/VirtFdtDxe: remove timer DT node handling
  ArmVirtPkg/QemuFwCfgLib: move to FDT client protocol
  ArmVirtPkg/VirtFdtDxe: remove handling of fw_cfg DT node
  ArmVirtPkg/BaseCachingPciExpressLib: construct at first invocation
  ArmVirtPkg/PciHostBridgeDxe: move to FDT client protocol
  ArmVirtPkg/VirtFdtDxe: drop PCI host bridge handling
  ArmVirtPkg: implement ArmVirtRtcFdtClientLib
  ArmVirtPkg: move QEMU based platforms to ArmVirtRtcFdtClientLib
  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/ArmVirtPkg.dec                                                  |  
21 +-
 ArmVirtPkg/ArmVirtQemu.dsc                                                 |  
27 +-
 ArmVirtPkg/ArmVirtQemu.fdf                                                 |   
7 +-
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                           |  
27 +-
 ArmVirtPkg/ArmVirtQemuKernel.fdf                                           |   
7 +-
 ArmVirtPkg/ArmVirtXen.dsc                                                  |  
22 +-
 ArmVirtPkg/ArmVirtXen.fdf                                                  |   
7 +-
 ArmVirtPkg/FdtClientDxe/FdtClientDxe.c                                     | 
267 +++++++++
 ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf                                   |  
52 ++
 ArmVirtPkg/Include/Protocol/FdtClient.h                                    | 
108 ++++
 ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c                   |  
75 ++-
 ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.inf                 |  
18 +-
 ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.c   |  
31 +-
 ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf |   
9 +-
 ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.c         |  
69 +++
 ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.inf       |  
46 ++
 ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c     |  
86 +++
 ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf   |  
48 ++
 ArmVirtPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExpressLib.inf   |   
1 -
 ArmVirtPkg/Library/BaseCachingPciExpressLib/PciExpressLib.c                |  
16 +-
 ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c                             |  
63 +-
 ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf                           |  
10 +-
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c                                | 
234 +++++++-
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h                                |   
1 +
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf                           |  
14 +-
 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c                                         | 
614 --------------------
 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.inf                                       |  
83 ---
 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.c                                     | 
127 ++++
 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf                                   |  
47 ++
 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c                                       |  
63 ++
 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf                                     |  
45 ++
 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf                              |   
1 +
 32 files changed, 1406 insertions(+), 840 deletions(-)
 create mode 100644 ArmVirtPkg/FdtClientDxe/FdtClientDxe.c
 create mode 100644 ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
 create mode 100644 ArmVirtPkg/Include/Protocol/FdtClient.h
 create mode 100644 
ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.c
 create mode 100644 
ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.inf
 create mode 100644 
ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c
 create mode 100644 
ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf
 delete mode 100644 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c
 delete mode 100644 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.inf
 create mode 100644 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.c
 create mode 100644 ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
 create mode 100644 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c
 create mode 100644 ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf

-- 
2.5.0

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to