summaryrefslogtreecommitdiff
path: root/ArmVirtPkg
AgeCommit message (Collapse)Author
2016-04-13ArmVirtPkg/VirtFdtDxe: remove Xenio handling and rename to VirtioFdtDxeArd Biesheuvel
Now that we have moved the handling of the xen,xen DT node to XenioFdtDxe, remove its handling from VirtFdtDxe. Since the only functionality that remains is handling the virtio,mmio DT node, rename VirtFdtDxe to VirtioFdtDxe to reflect that. Also update the platforms that use this driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg/ArmVirtXen: move from VirtFdtDxe to new XenioFdtDxe driverArd Biesheuvel
Now that the only functionality that remains in VirtFdtDxe is enumerating the respective virtual I/O buses, it no longer makes sense to have a driver that is shared between Xen domU and QEMU. So move the Xen I/O DT node handling to a new driver, and update ArmVirtXen to switch to it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg/VirtFdtDxe: move FDT config table installation to FdtClientDxeArd Biesheuvel
Now that FdtClientDxe is the core driver that takes ownership of the host supplied FDT, it makes sense to put it in charge of installing the FDT configuration table as well. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg/VirtFdtDxe: remove unused PL011 DT node typeArd Biesheuvel
This type is not used in the code, so drop the definitions. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg: get rid of A PRIORI DXE declarations for VirtFdtDxeArd Biesheuvel
We no longer care when VirtFdtDxe executes, since - the driver sets no dynamic PCDs any longer, and - the only remaining functionality centers on VirtioMmioInstallDevice() and XenIoMmioInstall() function calls and FDT configuration table installation. So drop the A PRIORI declaration. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg/VirtFdtDxe: drop RTC handlingArd Biesheuvel
The RTC driver no longer relies on VirtFdtDxe to set the pl031 RTC base address in a dynamic PCD, so drop the handling altogether. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg: move QEMU based platforms to ArmVirtPL031FdtClientLibArd Biesheuvel
This moves QEMU based platforms to ArmVirtPL031FdtClientLib, so that we no longer have to rely on VirtFdtDxe to execute first and set the PL031 base address in a dynamic PCD. The only driver which [transitively] depends on this PcdPL031RtcBase PCD is EmbeddedPkg/RealTimeClockRuntimeDxe, so this conversion cannot affect any other users and is thus safe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg: implement ArmVirtPL031FdtClientLibArd Biesheuvel
This implements a library ArmVirtPL031FdtClientLib which is intended to be incorporated into RealTimeClockRuntimeDxe via NULL library class resolution. This allows us to make RealTimeClockRuntimeDxe depend on the FDT client protocol, and discover the PL031 base address from the device tree directly rather than relying on VirtFdtDxe to set the dynamic PCDs. The NULL library class resolution approach to strictly order production and consumption of dynamic PCDs is not generally safe in cases such as this one, where the producer and the consumer of the PCD are both libraries. However, since the PCD is produced in this library's constructor, and the consumer library's constructor 'LibRtcInitialize' is not a 'true' constructor (it is invoked explicitly by RealTimeClockRuntimeDxe), this case is guaranteed to be safe after all. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-13ArmVirtPkg/RelocatableVirtHelper: use correct FindMemNode argument orderArd Biesheuvel
Commit 03b6bed17ea6 ArmVirtPkg/XenRelocatablePlatformLib: rewrite DTB memory node retrieval in C") introduced a FindMemNode () C function that takes pointers to system memory base and size as arguments, but the calling code passes them in the wrong order. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg/VirtFdtDxe: drop PCI host bridge handlingArd Biesheuvel
Now that the PCI host bridge driver parses the DT node that describes the PCI host bridge directly via the FDT client protocol, we can drop the handling from VirtFdtDxe completely. This means some PCI related PCDs are no longer set, such as PcdPciBusMin, PcdPciBusMax, PcdPciIoBase, PcdPciIoSize, PcdPciIoTranslation, PcdPciMmio32Base and PcdPciMmio32Size. Since these PCDs are specific to ARM (and declared in ArmPlatformPkg), and not used anywhere else by the ArmVirtPkg platforms, we can simply stop populating them, and drop all references to them. It also means that we can no longer rely on PcdPciDisableBusEnumeration to be set before it is consumed by PciBusDxe and QemuFwCfgAcpiPlatformDxe, so make those depend on FdtPciPcdProducerLib explicitly via NULL library class resolution. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg/PciHostBridgeDxe: move to FDT client protocolArd Biesheuvel
Instead of relying on VirtFdtDxe to populate various dynamic PCDs with information retrieved from the host-provided device tree, perform the PCI ECAM related DT node parsing directly in PciHostBridgeDxe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg/BaseCachingPciExpressLib: depend on PciPcdProducerLibArd Biesheuvel
Make BaseCachingPciExpressLib depend on PciPcdProducerLib, so that we have a chance to populate PcdPciExpressBaseAddress based on the contents of the device tree. Also update the platforms under ArmVirtPkg that support PCI to use the special MAX_UINT64 value as the build time default for PcdPciExpressBaseAddress. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg: implement FdtPciPcdProducerLibArd Biesheuvel
This implements a library FdtPciPcdProducerLib which is intended to be incorporated into modules that consume the PCI related dynamic PCDs PcdPciExpressBaseAddress and PcdPciDisableBusEnumeration, either via NULL library class resolution or via a direct dependency (for other libraries or modules in ArmVirtPkg). This allows us to make them depend on the FDT client protocol, and populate these PCDs based on the presence and the contents of a 'pci-host-ecam-generic' DT node. This also overloads the meaning of PcdPciExpressBaseAddress, which we will set to MAX_UINT64 to signify that the actual values of these two PCDs have not been assigned yet. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg/VirtFdtDxe: remove handling of fw_cfg DT nodeArd Biesheuvel
Remove the handling of the fw_cfg DT node from VirtFdtDxe now that the fw_cfg client library has been moved to the FDT client protocol, and no longer relies on VirtFdtDxe to pass this information via dynamic PCDs. Since the PCDs in question are now no longer used, remove them from the various DEC and DSC files as well. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-12ArmVirtPkg/QemuFwCfgLib: move to FDT client protocolArd Biesheuvel
Make this library depend on the FDT client protocol to access the host supplied device tree directly rather than depending on VirtFdtDxe to set them using dynamic PCDs. Since this library is used by several drivers (BdsDxe, SmbiosPlatformDxe, SmbiosDxe and QemuFwCfgAcpiPlatformDxe), we will end up parsing the device tree and the fwcfg node at least four times. However, no dynamic PCDs are involved anymore, and will even be removed completely in a subsequent patch. So the conversion is not optimal, but guaranteed to be safe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/VirtFdtDxe: remove timer DT node handlingArd Biesheuvel
The timer code no longer relies on VirtFdtDxe to set the PCDs, so remove the handling of the timer node and the references to those PCDs. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg: move TimerDxe to FDT client libraryArd Biesheuvel
Move to the new dedicated ArmVirtTimerFdtClientLib to populate the various timer related PCDs at driver load time rather than relying on VirtFdtDxe to do it. Since ArmPkg/TimerDxe is the only consumer of these PCDs, which is the DXE driver ArmVirtTimerFdtClientLib is intended to complement, this conversion is guaranteed to be safe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg: implement ArmVirtTimerFdtClientLibArd Biesheuvel
This implements a library ArmVirtTimerFdtClientLib which is intended to be incorporated into TimerDxe via NULL library class resolution. This allows us to make TimerDxe depend on the FDT client protocol, and discover the timer interrupts from the device tree directly rather than relying on VirtFdtDxe to set the dynamic PCDs. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/VirtFdtDxe: drop detection of PSCI methodArd Biesheuvel
The detection of the PSCI method has been moved to the EfiResetSystemLib implementation, so drop the handling from VirtFdtDxe. Since no users remain of gArmVirtTokenSpaceGuid.PcdArmPsciMethod, remove that as well. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/ArmVirtPsciResetSystemLib: move to FDT client protocolArd Biesheuvel
Instead of relying on VirtFdtDxe to detect the PSCI method, move our EfiResetSystemLib to the FDT client protocol to interrogate the device tree directly. Since this library is only consumed by EmbeddedPkg/ResetRuntimeDxe, and considering that the PCD is no longer set, and even removed completely in a subsequent patch, this conversion is guaranteed to be safe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/VirtFdtDxe: remove GIC discoveryArd Biesheuvel
Now that we moved the GIC discovery to our ArmGicArchLib implementation, we can remove it from VirtFdtDxe, since it is no longer used. Remove the PcdArmGicRevision declaration and definitions as well: VirtFdtDxe no longer sets it, and no other drivers consume its value. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/ArmGicArchLib: move to FdtClient protocolArd Biesheuvel
Instead of relying on VirtFdtDxe to populate the GIC related PCDs, move this handling to our implementation of ArmGicArchLib, and retrieve the required DT info using the new FDT client protocol. This removes one of the reasons we need to load VirtFdtDxe first using an 'A PRIORI' declaration in the platform FDF. As Laszlo kindly confirms: So, ultimately, the only user of this library instance is "ArmPkg/Drivers/ArmGic/ArmGicDxe.inf". ... Indeed, checking the build report file for ArmVirtQemu (AARCH64), I find ArmVirtGicArchLib (and ArmGicLib too) only under "ArmPkg/Drivers/ArmGic/ArmGicDxe.inf". which means that the constructor is only invoked once, and so the dynamic PCDs are set in time for ArmGicDxe to consume them, and never afterwards. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg: add FdtClientDxe to the ArmVirtPkg platformsArd Biesheuvel
Add FdtClientDxe to the various platforms under ArmVirtPkg, so that the drivers we will update to depend on the FDT client protocol in subsequent patches will remain in working order. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg/FdtClientDxe: implement new driverArd Biesheuvel
This implements a new DXE driver FdtClientDxe to produce the FDT client protocol based on a device tree image supplied by the virt host. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-11ArmVirtPkg: introduce FdtClientProtocolArd Biesheuvel
This introduces the FdtClientProtocol, which will be used to expose the device tree provided by the host to other DXE drivers. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-07ArmVirtPkg: Convert to build FatPkg from sourceJordan Justen
Now that FatPkg is open source (and therefore can be included in the EDK II tree) we build and use it directly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2016-04-07ArmVirtPkg: drop dependency on PeiPcdLib for PEI Pcd.infArd Biesheuvel
The PcdPeim dynamic PCD driver is dispatched explicitly via an 'A PRIORI' declaration in the platform DSC. Without that declaration, the PEI module can never be dispatched since it transitively (via PeiPcdLib) depends on a PPI it produces itself. So use the NULL PcdLib explicitly only for this driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-07ArmVirtPkg: drop dependency on DxePcdLib for DXE Pcd.infArd Biesheuvel
The PcdDxe dynamic PCD driver is dispatched explicitly via an 'A PRIORI' declaration in the platform DSC. Without that declaration, the DXE driver can never be dispatched since it transitively (via DxePcdLib) depends on protocols it produces itself. So use the NULL PcdLib explicitly only for this driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-07ArmVirtPkg: drop bogus ArmPlatformSecExtraActionLib resolutionArd Biesheuvel
Nothing we use on any of the ArmVirtPkg platforms depends on the ArmPlatformSecExtraActionLib library class, so drop the resolution from ArmVirt.dsc.inc Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Suggested-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-07ArmVirtPkg: remove linux loader from ARM buildsArd Biesheuvel
The built in Linux loader was a temporary solution to boot ARM Linux without EFI support in the OS. Now that EFI support is merged in the upstream v4.5 release, we no longer need it. So drop it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-04-06ArmVirtPkg: include Virtio10Dxe from OvmfPkgLaszlo Ersek
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-04-01ArmVirtPkg: disable PcdHiiOsRuntimeSupportLaszlo Ersek
Edk2 commit 8a45f80edad4 ("MdeModulePkg: Make HII configuration settings available to OS runtime") implements the optional UEFI feature described in "31.2.11.1 OS Runtime Utilization" in UEFI v2.6. While this feature might show benefits down the road even in QEMU virtual machines, at the moment it only presents drawbacks: - it increases the EfiRuntimeServicesData footprint, - it triggers HII compatibility problems between edk2 and external drivers unconditionally, even if the end-user is not interested in HII and/or in configuring said drivers (see <https://www.redhat.com/archives/vfio-users/2016-March/msg00153.html> and <http://thread.gmane.org/gmane.comp.bios.edk2.devel/9894> for an example). While the feature was being introduced, popular demand for a controlling Feature PCD rose (see <http://thread.gmane.org/gmane.comp.bios.edk2.devel/7626>), which is why we can set it now to FALSE. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2016-03-31ArmVirtPkg/ArmVirtQemu: gate FDT config table install with build optionArd Biesheuvel
This introduces the .DSC define 'PURE_ACPI_BOOT_ENABLE', defaulting to FALSE, which controls the value of the feature PCD 'PcdPureAcpiBoot'. This allows an ArmVirtQemu image to be built that restricts the OS to booting in ACPI mode. This feature is only added to ArmVirtQemu, and not to ArmVirtQemuKernel, the reason being that the latter is mostly intended for development work, where the burden of adding 'acpi=force' if you need it is much more tolerable than when trying to boot an installer on a production KVM guest instance. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-03-31ArmVirtPkg/VirtFdtDxe: make installation of FDT as config table optionalArd Biesheuvel
The arm64 kernel is hardwired to prefer DT over ACPI, unless 'acpi=force' is passed on the kernel command line. The only other way to force the kernel to use ACPI is not to pass an FDT to it in the first place. So introduce a PCD that inhibits the installation of the QEMU supplied FDT as a configuration table. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-03-23ArmVirtPkg: PlatformIntelBdsLib: signal gRootBridgesConnectedEventGroupGuidLaszlo Ersek
The explanation is in the patch titled OvmfPkg: introduce gRootBridgesConnectedEventGroupGuid At this point, this signal doesn't do anything yet. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-03-23ArmVirtPkg/PlatformIntelBdsLib: rebase to EfiEventGroupSignalLaszlo Ersek
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Quickly-acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-03-17ArmVirtPkg/ArmVirtQemu: move to ARM version of CpuExceptionHandlerLibArd Biesheuvel
Change our resolution for the previously unused CpuExceptionHandlerLib from the null implementation to the newly added implementation specific to AARCH64 and ARM. This is needed since our CpuDxe will start using it in a subsequent patch. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
2016-03-11ArmVirtPkg/VirtFdtDxe: set /chosen/linux,pci-probe-only to 1 in DTBArd Biesheuvel
Unlike Linux on x86, which typically honors the PCI configuration performed by the firmware, Linux on ARM assumes that the PCI subsystem needs to be configured from scratch. This is not entirely unreasonable given the historical background of embedded systems using very basic bootloaders, but is no longer tenable with Linux on arm64 moving to UEFI and ACPI in the server space. For this reason, PCI support in the arm64 kernel running under ACPI is likely to move to the x86 model of honoring the PCI configuration done by the firmware. So let's align with that in our DT based configuration as well, and set the /chosen/linux,pci-probe-only property to 1 in the Device Tree before we hand it to the OS. In case we are exposing an emulated VGA PCI device to the guest, which may subsequently get exposed via the Graphics Output protocol and driven as an efifb by the OS, this ensures the PCI resource allocations for the framebuffer are not overridden, since that would cause the framebuffer to stop working. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-03-02ArmVirtPkg: sync log level comments to DebugLib.hLaszlo Ersek
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-02-26ArmVirtPkg: Add FileExplorerLib.inf to the QEMU dsc filesDandan Bi
Because SecureBootConfigDxe use FileExplorerLib now, but FileExplorerLib is not in the dsc files of the package that use SecureBootConfigDxe. Now add it to pass build. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
2016-02-24ArmVirtPkg: ArmVirtQemu: add driver for Virtio-RNG deviceArd Biesheuvel
This adds the new Virtio-RNG DXE module to the default build of ArmVirtQemu. Note that QEMU needs to be invoked with the 'device virtio-rng-pci' option in order for this device to be exposed to the guest. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-02-24ArmVirtPkg/ArmVirtQemu: limit ACPI support to v5.0 and higherArd Biesheuvel
The ACPI spec predates the AARCH64 architecture by 5 versions, so there is no point in supporting anything below v5.0. So set the PCD that controls the ACPI table generation to the appropriate value. Note that the current consumers of this PCD only check whether bit 1 is set or not (i.e., ACPI v1.0b), but this may change in the future, so let's choose a meaningful value right away. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-02-22ArmVirtPkg: ArmVirtQemu: make ACPI support AARCH64 onlyArd Biesheuvel
No ARM support for ACPI is planned under any OS we intend to run under ArmVirtQemu-ARM, so remove the drivers from the ARM build. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-02-18ArmVirtPkg: ArmVirtQemu: expose only 64-bit entry point for v3.0+ SMBIOSArd Biesheuvel
The legacy 32-bit SMBIOS entry point has little use on AARCH64 systems, since many such systems have no 32-bit addressable physical RAM, and so OSes that implement SMBIOS will have to be able to deal with the 64-bit entry point anyway. Given that the OS will map main memory in 1 GB chunks if it can, and that punching a page sized hole (e.g., for SMBIOS data) into it will result in the whole 1 GB chunk being mapped using 2 MB and 4 KB blocks instead, it is important to group memory reservations from the OS as much as we can, and allocating below 4 GB for no good reason interferes with that. This is especially important under virtualization, considering that each *level* of lookup at stage 1 (the guest virtual page table) will result in a full page table walk at stage 2 (the guest PA to host PA mapping). So expose only the 64-bit entry point when the SMBIOS tables adhere to version 3.0 or later. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2016-02-05ArmVirtPkg: implement ArmVirtQemuKernelArd Biesheuvel
This implements a version of ArmVirtQemu that does not execute in place from emulated NOR flash, but implements the Linux kernel boot protocol, and executes from DRAM instead. This allows UEFI to be loaded as a payload by a previous bootloader stage such as ARM Trusted Firmware/OP-TEE. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
2016-02-05ArmVirtPkg: introduce new ArmQemuRelocatablePlatformLibArd Biesheuvel
This introduces ArmQemuRelocatablePlatformLib, which started out as a straight copy of ArmXenRelocatablePlatformLib, but has been modified so that ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf can be used with QEMU as well as with Xen. It retains the self relocation and FDT parsing for the system memory, but uses the QEMU MMU layout. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
2016-02-05ArmVirtPkg/EarlyFdtPL011: allow patchable PCD for initial DT base addressArd Biesheuvel
Allow the use of a patchable PCD for the initial DT base address recorded in gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress, so that the module can be reused by a relocatable version of ArmVirtQemu. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2015-12-17ArmVirtPkg/ArmVirtXen: add ARM supportArd Biesheuvel
This adds ARM support to the ArmVirtXen platform. As is the case for AARCH64, the ARM port adheres to the ARM Linux boot protocol, i.e., it expects the address of a DTB describing the platform to be passed in r2, and relocates itself at runtime to the actual load time memory offset. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19333 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-17ArmVirtPkg/ArmXenRelocatablePlatformLib: add ARM supportArd Biesheuvel
This is a port of the AARCH64 low level init routines to ARM. This mainly covers the platform boot code that extracts the system base and size from the DTB, copies it and updates the FD and FV base addresses according to the load time offset. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19332 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-17ArmVirtPkg/PrePiRelocatable: add ARM supportArd Biesheuvel
This adds support to the self relocating PrePi instance that is built as a PIE ET_DYN executable. It primarily involves porting the relocation routine to use ELF32 REL entries instead of ELF64 RELA entries which is what AArch64 uses. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19331 6f19259b-4bc3-4df7-8a09-765794883524