This is the first step towards getting rid of the kludge which is VirtFdtDxe.

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 (21):
  ArmVirtPkg: introduce FdtClientProtocol
  ArmVirtPkg: drop dependency on DxePcdLib for DXE Pcd.inf
  ArmVirtPkg: drop dependency on PeiPcdLib for PEI Pcd.inf
  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/PciHostBridgeDxe: move to FDT client protocol
  ArmVirtPkg/BaseCachingPciExpressLib: construct at first invocation
  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/ArmVirtPkg.dec                                                  |  
21 +-
 ArmVirtPkg/ArmVirtQemu.dsc                                                 |  
35 +-
 ArmVirtPkg/ArmVirtQemu.fdf                                                 |   
8 +-
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                           |  
30 +-
 ArmVirtPkg/ArmVirtQemuKernel.fdf                                           |   
5 +-
 ArmVirtPkg/ArmVirtXen.dsc                                                  |  
25 +-
 ArmVirtPkg/ArmVirtXen.fdf                                                  |   
5 +-
 ArmVirtPkg/FdtClientDxe/FdtClientDxe.c                                     | 
236 ++++++++++++
 ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf                                   |  
48 +++
 ArmVirtPkg/Include/Protocol/FdtClient.h                                    |  
89 +++++
 ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c                   |  
84 ++++-
 ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.inf                 |  
15 +-
 ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.c   |  
38 +-
 ArmVirtPkg/Library/ArmVirtPsciResetSystemLib/ArmVirtPsciResetSystemLib.inf |  
11 +-
 ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.c         |  
69 ++++
 ArmVirtPkg/Library/ArmVirtRtcFdtClientLib/ArmVirtRtcFdtClientLib.inf       |  
48 +++
 ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c     |  
90 +++++
 ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf   |  
50 +++
 ArmVirtPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExpressLib.inf   |   
1 -
 ArmVirtPkg/Library/BaseCachingPciExpressLib/PciExpressLib.c                |  
16 +-
 ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c                             |  
73 +++-
 ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf                           |  
12 +-
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c                                | 
233 +++++++++++-
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h                                |   
2 +
 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf                           |  
16 +-
 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c                                         | 
395 +-------------------
 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.inf                                       |  
27 --
 27 files changed, 1112 insertions(+), 570 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

-- 
2.5.0

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

Reply via email to