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