summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg/ArmVirtQemuKernel.dsc
Commit message (Collapse)AuthorAgeFilesLines
* ArmVirtPkg: add NOOPT target to platform .DSCsArd Biesheuvel2017-12-061-1/+1
| | | | | | | | | In order to allow the ArmVirtPkg platforms to be built using the NOOPT target, add it explicitly to the BUILD_TARGETS define. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: remove ArmPlatformLib implementationsArd Biesheuvel2017-11-231-1/+0
| | | | | | | | These libraries are no longer used, so remove them from the tree. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/ArmVirtQemu: add ArmVirtMemInfoLib implementationArd Biesheuvel2017-11-231-0/+1
| | | | | | | | | | | | | | | | | | | Create a new ArmVirtMemInfoLib for ArmVirtQemuKernel by cloning the existing ArmPlatformGetVirtualMemoryMap () for this platform, (ArmQemuRelocatablePlatformLib *not* ArmVirtPlatformLib), and cleaning it up: - remove support for uncached DRAM mappings - replace EFI_D_xxx with DEBUG_xxx throughout - use a temp variable to hold the top of the physical address space - use AllocatePool () instead of AllocatePages (), given that we use 160 bytes only, and the memory is never freed. In a future patch, we will add this library to the ordinary ArmVirtQemu platform as well. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: remove ArmPlatformSysConfigLib dependencyArd Biesheuvel2017-11-161-6/+0
| | | | | | | | | | | | | Now that the PL031 RTC driver library no longer depends on the ARM platform specific ArmPlatformSysConfigLib, we no longer need to implement ArmPlatform.h or have a resolution for that library. This allows us to get rid of a rather dodgy practice of including platform headers using compiler flags, which is a bad idea at various levels. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/ArmVirtQemu: use non-accelerated CopyMem for VariableRuntimeDxeArd Biesheuvel2017-11-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | The VariableRuntimeDxe driver may use CopyMem () on NOR flash regions, assuming such regions always have full memory semantics. Given that those regions cannot be mapped as ordinary memory on ARM (due to the fact that the NOR flash requires device semantics while in write mode) this prevents us from using BaseMemoryLibOptDxe in VariableRuntimeDxe, since it may use unaligned accesses and/or DC ZVA instructions, both of which are incompatible with mappings using device semantics. Note that there is no way we can work around this by changing the mapping type between 'memory' and 'device' when switching from read to write mode and back, because the runtime mapping is created by the OS, and cannot be changed at will. So let's just switch to the unaccelerated version of BaseMemoryLib which does not have the same problem. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Shannon Zhao <zhaoshenglong@huawei.com>
* ArmVirtPkg/ArmVirtQemu: include UsbMassStorageDxeLaszlo Ersek2017-09-121-0/+1
| | | | | | | | | This is needed for recognizing QEMU's "usb-storage" device model. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg/ArmVirtQemu: port HTTP_BOOT_ENABLE from OvmfPkgLaszlo Ersek2017-09-121-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * From commit ab44a6e833fa ("OvmfPkg: Add HttpBoot support", 2015-08-23): - introduce HTTP_BOOT_ENABLE build define - resolve HttpLib class - include NetworkPkg drivers DnsDxe, HttpDxe, HttpBootDxe * From commit 1a85139d9eac ("OvmfPkg: Build HTTP utilities driver", 2015-08-28): - include NetworkPkg driver HttpUtilitiesDxe * From commit 4b2fb7986d57 ("OvmfPkg: Allow HTTP connections if HTTP Boot enabled", 2017-01-19): - set PcdAllowHttpConnections to TRUE > ## Indicates whether HTTP connections (i.e., unsecured) are permitted or > ## not. > # TRUE - HTTP connections are allowed. Both the "https://" and > # "http://" URI schemes are permitted. > # FALSE - HTTP connections are denied. Only the "https://" URI scheme is > # permitted. > # @Prompt Indicates whether HTTP connections are permitted or not. > gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections|FALSE|BOOLEAN|... TLS_ENABLE (for HTTPS) is not ported for the time being. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: don't build the network stack uselessly for XenLaszlo Ersek2017-09-121-0/+15
| | | | | | | | | | | | | | | | | "ArmVirtXen.fdf" pulls in none of the drivers from "MdeModulePkg/Universal/Network", therefore building them in "ArmVirtXen.dsc", via "ArmVirt.dsc.inc", is wasted work. Move the "MdeModulePkg/Universal/Network" drivers from "ArmVirt.dsc.inc" to "ArmVirtQemu.dsc" and "ArmVirtQemuKernel.dsc". Place the new block between the "Bds" and "SCSI Bus and Disk Driver" blocks, similarly to its context in "ArmVirtQemuFvMain.fdf.inc". Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Enable UDF file system supportPaulo Alcantara2017-09-081-1/+2
| | | | | | | | | | | | This patch enables UDF file system support by default. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Paulo Alcantara <pcacjr@zytor.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
* ArmVirtPkg: remove QemuVideoDxe from ArmVirtQemu and ArmVirtQemuKernelArd Biesheuvel2017-08-241-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One of the reasons for introducing virtio-gpu support to OvmfPkg and ArmVirtpkg was the fact that under KVM virtualization on ARM, the legacy VGA cannot be used reliably. This is due to an implementation detail of QEMU+KVM, which remaps cached host memory into the guest address space as a framebuffer behind a PCI BAR. Given that the purpose of a memory mapped framebuffer is its side effects, such BARs should never be mapped cacheable in the guest, and the mismatched attributes between host and guest result in a loss of coherency, visible as corruption in the framebuffer image. This issue does not occur under TCG emulation, nor did we expect it to actually bring down the guest under KVM, and so it was deemed harmless to keep support for the VGA device as well. However, as it turns out, the fact that the framebuffer BAR is mapped using device semantics by default may result in unalignment faults when we use the ordinary string copy routines on the contents. In theory, we could work around this by remapping the BAR as write combining, but it appears the generic PCI bus driver does not actually implement this. So let's remove the QemuVideoDxe driver altogether. This may result in loss of functionality for use cases that rely on the framebuffer to be directly addressable (such as EFIFB), but given that this never worked reliably under KVM in the first place, let's not let that stop us from dropping support for it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
* ArmVirtPkg: switch to generic ResetSystemRuntimeDxeArd Biesheuvel2017-07-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | For obscure reasons, ARM platforms use a different implementation of the ResetSystem() runtime service call than other platforms. So let's switch all ArmVirtPkg platforms to the generic version instead. Given that all platforms use an implementation of EfiResetSystemLib [as consumed by the ResetRuntimeDxe in EmbeddedPkg that we are replacing] which is unlikely to be depended upon by out of tree platforms, let's simply modify this library into an implementation of ResetSystemLib instead [which is what the generic driver in MdeModulePkg consumes] This does mean we need to update all clients at the same time, which is why all changes are part of the same patch. As before, warm reset and platform specific reset are mapped onto cold reset (which is the only thing PSCI implements, at least the version we depend on). The new library function EnterS3WithImmediateWake() is left unimplemented, as permitted by the ResetSystemLib library class. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: install EdkiiPlatformHasDeviceTree proto in the 32-bit buildsNerijus Baliƫnas2017-05-031-1/+1
| | | | | | | | | | | | | | | | | | Include XenPlatformHasAcpiDtDxe and PlatformHasAcpiDtDxe in the 32-bit builds too. Please see https://bugzilla.tianocore.org/show_bug.cgi?id=524 why it is needed. With this patch my arm uefi VM boots. Fixes: 3a2c1548fe2df4b0b067671e2025da6372063218 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Nerijus Baliƫnas <nerijus@users.sourceforge.net> Reviewed-by: Laszlo Ersek <lersek@redhat.com> [lersek@redhat.com: move long subj to commit msg body, add short subj] [lersek@redhat.com: add Fixes reference] [lersek@redhat.com: keep ACPI DXE modules grouped in QEMU DSCs] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: remove ArmCpuLib referencesArd Biesheuvel2017-03-311-6/+0
| | | | | | | | | ArmCpuLib is never used anywhere, and is about to be removed. So remove any references from our .DSC files. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: enable AcpiTableDxe and EFI_ACPI_TABLE_PROTOCOL dynamicallyLaszlo Ersek2017-03-281-0/+1
| | | | | | | | | | | | | | | | In this patch, the ACPI protocol / driver chain is enabled dynamically, when appropriate. This is being done in one larger patch, because ArmVirt.dsc.inc, where AcpiTableDxe is built, is used by all the platform DSCs. No change in behavior should be observable after this patch on any ArmVirtPkg platform. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Leif Lindholm <leif.lindholm@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>
* ArmVirtPkg/ArmVirtQemu: refer to Shell app via its declared GUIDArd Biesheuvel2017-03-221-1/+0
| | | | | | | | | | | | | | Currently, the file GUID reference of the UEFI Shell app is indirected via the PCD gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile, which is set to a fixed value for our platforms. So instead, use the new symbolic GUID added for this purpose, and drop the reference to this PCD, and to the IntelFrameworkModulePkg package entirely. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: resolve QemuFwCfgS3LibLaszlo Ersek2017-03-141-0/+1
| | | | | | | | | | | | | | | | | QemuFwCfgS3Enabled() in "ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c" returns constant FALSE. The same implementation is now available factored-out in "OvmfPkg/Library/QemuFwCfgS3Lib/QemuFwCfgS3Base.c". Resolve QemuFwCfgS3Lib to BaseQemuFwCfgS3LibNull. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=394 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: enable non-executable DXE stack for all platformsArd Biesheuvel2017-03-071-2/+0
| | | | | | | | | | | | | | | Now that ARM has grown support for managing memory permissions in ArmMmuLib, we can enable the non-executable DXE stack for all virt platforms. Note that this includes the AARCH64 Xen platform as well. Note that this is not [entirely] redundant: the non-executable stack is configured before DxeCore is invoked. The image and memory protection features configured during DXE only take affect when the CPU arch protocol implementation is registered. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: move UefiBootManagerLib resolution to ArmVirt.dsc.incArd Biesheuvel2017-03-011-1/+0
| | | | | | | | | | | Recent changes to ShellPkg require a resolution for UefiBootManagerLib for all platforms in ArmVirtPkg. So move the resolution to the shared include ArmVirt.dsc.inc. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmPkg: remove unused PcdArmUncachedMemoryMask PCDArd Biesheuvel2017-02-271-5/+0
| | | | | | | | | | | | This removes the PCD PcdArmUncachedMemoryMask from ArmPkg, along with any remaining references to it in various platform .DSC files. It is no longer used now that we removed the virtual uncached pages protocol and the associated DebugUncachedMemoryAllocationLib library instance. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
* ArmVirtPkg/ArmVirtQemu: Install BGRT ACPI tableBhupesh Sharma2017-01-161-0/+1
| | | | | | | | | | | | | While debugging OS for ACPI BGRT support (especially on VMs), it is very useful to have the EFI firmware to export the ACPI BGRT table. This patch tries to add this support in ArmVirtPkg. Cc: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Bhupesh Sharma <bhsharma@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Remove unused BltLib referenceRuiyu Ni2016-10-121-4/+1
| | | | | | | Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek at redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Include MdeModulePkg/FrameBufferLib in ArmVirtPkgRuiyu Ni2016-10-121-0/+1
| | | | | | | | | | One of the following patches will change QemuVideoDxe driver to use the new FrameBufferLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek at redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Use the new LogoDxe driverRuiyu Ni2016-09-281-5/+2
| | | | | | | Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
* ArmVirtPkg: replace all ArmLib resolutions with ArmBaseLibArd Biesheuvel2016-09-081-5/+1
| | | | | | | | | | The various ArmLib flavors are identical in practice, and a new ArmBaseLib has been introduced that can replace all of them. So replace all occurrences with ArmBaseLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/ArmVirtQemu: switch to generic PciHostBridgeDxeArd Biesheuvel2016-09-021-1/+9
| | | | | | | | | | | | | | | Wire up the FdtPciHostBridgeLib introduced in the previous patch to the generic PciHostBridgeDxe implementation, and drop the special ArmVirtPkg version. The former's dependency on gEfiCpuIo2ProtocolGuid is satisfied by adding ArmPciCpuIo2Dxe.inf as well, and adding the PCD gArmTokenSpaceGuid.PcdPciIoTranslation as a dynamic PCD. In terms of functionality, no changes are intended. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=65
* ArmVirtPkg: remove PcdKludgeMapPciMmioAsCachedLaszlo Ersek2016-09-011-3/+0
| | | | | | | | | | | | | | In ARM/AARCH64 guests that run on KVM, we can now use virtio-gpu-pci, so PcdKludgeMapPciMmioAsCached is no longer necessary. Standard VGA continues to work on TCG without the kludge. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=66 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>
* ArmVirtPkg/ArmVirtQemu: include VirtioGpuDxe in the platform DSC/FDF filesLaszlo Ersek2016-09-011-0/+1
| | | | | | | | | | | | | At this stage, the driver builds, and suffices for testing binding and unbinding. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=66 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>
* ArmVirtPkg: Move inclusion of AcpiTableDxe.inf to ArmVirt.dsc.incVikas C Sajjan2016-08-221-1/+0
| | | | | | | | | Since ArmVirt.dsc.inc is included in all the ArmVirt dsc files, move inclusion of AcpiTableDxe.inf to ArmVirt.dsc.inc. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Vikas C Sajjan <vikas.cha.sajjan@hpe.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg ARM: make relocatable PrePi users build with CLANG35Ard Biesheuvel2016-08-031-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | The clang developers have made a backward incompatible change to the command line arguments, and have replaced '-mllvm -arm-use-movt=0' with '-mno-movt'. This does not matter for most ARM platforms, and therefore it has been removed from the default CLANG35/ARM CC flags in patch 1c63516075b3 ("BaseTools CLANG35: drop problematic use-movt and save-temps options"), but as it turns out, the relocatable PrePi implementation used by ArmVirtQemuKernel and ArmVirtXen will fail to build if it contains MOVT/MOVW pairs, due to the fact that these are not runtime relocatable under ELF. Since they are runtime relocatable under PE/COFF, and GenFw does the right thing when encountering them, selectively controlling their use is more appropriate than disabling them altogether. Therefore, this patch adds the -mno-movt argument only for the platforms that use the relocatable PrePi, and only for the module types that may be pulled into its build. In addition, switch to the SEC type version of ArmLib, so that the relocatable PrePi only depends on BASE and SEC type libraries. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
* ArmVirtPkg: align ArmVirtQemuKernel with ArmVirtQemuArd Biesheuvel2016-07-121-0/+2
| | | | | | | | | | | The platform ArmVirtQemuKernel is intended as an alternative for ArmVirtQemu that only deviates in the way it is invoked by QEMU, either from flash address 0x0 (the default ARM reset vector) or via the Linux kernel boot protocol. So add VirtioRngDxe and HighMemDxe here 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>
* ArmVirtPkg: ArmVirtQemuKernel: make ACPI support AARCH64 onlyArd Biesheuvel2016-07-121-9/+10
| | | | | | | | | | | | | The reasoning of patch 8e2efec6b206: 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. applies equally to ArmVirtQemuKernel, so apply the same change there. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmPkg ArmVirtPkg MdeModulePkg: switch to separate ArmMmuLibArd Biesheuvel2016-07-071-0/+2
| | | | | | | | | | | | Switch all users of ArmLib that depend on the MMU routines to the new, separate ArmMmuLib. This needs to occur in one go, since the MMU routines are removed from ArmLib build at the same time, to prevent conflicting symbols. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
* ArmVirtPkg: Re-add the Driver Health ManagerBruce Cran2016-06-281-0/+1
| | | | | | | | | | | | | | | The Driver Health HII menu is not an integral part of the MdeModulePkg BDS driver / UI app. Because we abandoned the IntelFrameworkModulePkg BDS in the QEMU builds, now we have to get the same functionality explicitly from DriverHealthManagerDxe. Suggested-by: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bruce Cran <bruce@cran.org.uk> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> [lersek@redhat.com: update commit message, drop Xen changes] Signed-off-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: add FDF definition for empty varstoreArd Biesheuvel2016-06-231-10/+0
| | | | | | | | | | | | | | Similar to how OVMF implements this, add a FD definition for the varstore firmware volume and the FTW areas. The template was taken from the file OvmfPkg/VarStore.fdf.inc, and subsequently modified to accommodate the differences in NOR flash layout. This affects the FvLength, Checksum and BlockMap[0] fields in the FV header, the Size field of the varstore header, and the Crc and WriteQueueSize fields of the FTW header. The event log region is not used by ArmVirtQemu, so it has been omitted. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/ArmVirtQemu: switch secure boot build to NorFlashDxeArd Biesheuvel2016-06-221-4/+0
| | | | | | | | | | | | There is no longer a reason to use a different implementation of NorFlashDxe for secure boot builds now that the varstore FV header can carry either gEfiVariableGuid or gEfiAuthenticatedVariableGuid, and the dependent code has been updated to deal with that. So move the secure boot capable builds to the common NorFlashDxe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/PlatformBootManagerLib: rebase boot logo display to BootLogoLibLaszlo Ersek2016-06-061-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the course of porting ArmVirtPkg to the MdeModulePkg BDS, commit 1f73aef50c5e ArmVirtPkg/PlatformBootManagerLib: add EnableQuietBoot & DisableQuietBoot open-coded the EnableQuietBoot() function (and its dependencies / friends) from IntelFrameworkModulePkg BDS. This code duplication can be avoided; the functionality is available from the following three libraries in MdeModulePkg: - BootLogoLib: provides the BootLogoEnableLogo() function. It does not provide the internal ConvertBmpToGopBlt() function -- that one is delegated to ImageDecoderLib (function DecodeImage()). - ImageDecoderLib: a general library that registers decoder plugins for specific image formats, and provides the generic DecodeImage() on top. - BmpImageDecoderLib: one of said decoder plugins, for handling BMP images (which is the format of our logo). In this patch, we revert 1f73aef50c5e, and atomically incorporate the above libraries. This is inspired by Nt32Pkg commit 859e75c4fc42: Nt32Pkg: Use BootLogoLib for logo and progress bar drawing. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Leif Lindholm <leif.lindholm@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* OvmfPkg, ArmVirtPkg: rename QemuNewBootOrderLib to QemuBootOrderLibLaszlo Ersek2016-05-251-1/+1
| | | | | | | | | | | | | | | This completes the transition to the new BDS. The FILE_GUID in "QemuBootOrderLib.inf" is intentionally not changed. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Gary Ching-Pang Lin <glin@suse.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ruiyu Ni <ruiyu.ni@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>
* ArmVirtPkg: set PcdMaxVariableSize and PcdMaxAuthVariableSizeLinn Crosetto2016-05-101-0/+2
| | | | | | | | | | | | | | To support UEFI Secure Boot and the Linux persistent store with UEFI variables, set PcdMaxVariableSize to 0x2000 bytes as is done in OvmfPkg. For reference, the related Ovmf commits: 8cee3de7 2d441ca9 Also increase the maximum size for Authenticated variables in order to handle a larger Signature List size as is done in OvmfPkg. Related Ovmf commit: f5404a3e Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Linn Crosetto <linn@hpe.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg/ArmVirtQemu: use MdeModulePkg/BDSLaszlo Ersek2016-05-061-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on OvmfPkg commit 79c098b6d25d. Unlike in OVMF, no USE_OLD_BDS fallback is introduced; I think that ArmVirtPkg is less widely used by non-developers than OvmfPkg. ArmVirtXen is not modified, as it uses PlatformIntelBdsLib from ArmPlatformPkg. About this patch: - DxeServicesLib and SortLib are resolved generally (they have broad client module type lists). - ReportStatusCodeLib is resolved for UEFI_APPLICATION modules. - GenericBdsLib and PlatformBdsLib are replaced with UefiBootManagerLib and PlatformBootManagerLib, and resolved from under MdeModulePkg and ArmVirtPkg, respectively. - QemuBootOrderLib is pointed to the QemuNewBootOrderLib instance. - FileExplorerLib no longer depends on SECURE_BOOT_ENABLE, it is nedeed by BootMaintenanceManagerUiLib, which we link into UiApp. - PcdBootManagerMenuFile carries the FILE_GUID of "MdeModulePkg/Application/UiApp/UiApp.inf". The default PCD value from "MdeModulePkg/MdeModulePkg.dec" points to "MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf", which, according to the commit that introduced it (a382952f8255), only 'provides a very simple UI showing all the boot options recorded by "BootOrder" and user can select any of them to boot'. - Include the new core BDS driver, and include the boot manager application, with the usual main menu entries. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Fixes: https://github.com/tianocore/edk2/issues/83 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: Ruiyu Ni <ruiyu.ni@Intel.com>
* ArmVirtPkg/PlatformBootManagerLib: don't launch the Boot Manager MenuLaszlo Ersek2016-05-061-1/+2
| | | | | | | | | | | | | | | | | | | | MdeModulePkg/BDS doesn't launch the UI (Boot Manager Menu) from the platform side. The platform is expected to store the boot timeout only, in PcdPlatformBootTimeOut. This is usually done in PlatformBootManagerBeforeConsole(). (ArmVirtXen is not modified, as it uses PlatformIntelBdsLib from ArmPlatformPkg, not ArmVirtPkg.) The patch parallels OvmfPkg commit 8dc0f0a6aab0. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Ruiyu Ni <ruiyu.ni@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> Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Ruiyu Ni <ruiyu.ni@Intel.com>
* ArmVirtPkg/VirtFdtDxe: remove Xenio handling and rename to VirtioFdtDxeArd Biesheuvel2016-04-131-1/+1
| | | | | | | | | | | | 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>
* ArmVirtPkg: move QEMU based platforms to ArmVirtPL031FdtClientLibArd Biesheuvel2016-04-131-1/+4
| | | | | | | | | | | | | | 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>
* ArmVirtPkg/VirtFdtDxe: drop PCI host bridge handlingArd Biesheuvel2016-04-121-10/+8
| | | | | | | | | | | | | | | | | | | | | | 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>
* ArmVirtPkg/BaseCachingPciExpressLib: depend on PciPcdProducerLibArd Biesheuvel2016-04-121-1/+5
| | | | | | | | | | | | | | 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>
* ArmVirtPkg/VirtFdtDxe: remove handling of fw_cfg DT nodeArd Biesheuvel2016-04-121-4/+0
| | | | | | | | | | | | 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>
* ArmVirtPkg: move TimerDxe to FDT client libraryArd Biesheuvel2016-04-111-1/+4
| | | | | | | | | | | | 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>
* ArmVirtPkg/VirtFdtDxe: drop detection of PSCI methodArd Biesheuvel2016-04-111-2/+0
| | | | | | | | | | 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>
* ArmVirtPkg/VirtFdtDxe: remove GIC discoveryArd Biesheuvel2016-04-111-1/+0
| | | | | | | | | | | 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>
* ArmVirtPkg: add FdtClientDxe to the ArmVirtPkg platformsArd Biesheuvel2016-04-111-0/+1
| | | | | | | | | | 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>
* ArmVirtPkg: Convert to build FatPkg from sourceJordan Justen2016-04-071-0/+1
| | | | | | | | | | | | | | 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>