This v4 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 v3: - incorporated Laszlo's feedback (#1, #2, #4, #8, #9) - added Laszlo's R-b (#3, #4, #5, #6, #7, #8, #9) 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} | 41 ++-- ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.inf | 44 ++++ OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf | 1 + ArmVirtPkg/FdtClientDxe/FdtClientDxe.c | 11 + ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.c | 82 +++++++ ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c | 257 -------------------- ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.c | 124 ++++++++++ ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c | 68 ++++++ 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, 411 insertions(+), 304 deletions(-) create mode 100644 ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.inf rename ArmVirtPkg/{VirtFdtDxe/VirtFdtDxe.inf => VirtioFdtDxe/VirtioFdtDxe.inf} (52%) 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