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

