summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg/ArmVirt.dsc.inc
Commit message (Collapse)AuthorAgeFilesLines
* ArmVirtPkg: drop reference to ArmPkg/DefaultExceptionHandlerLibBaseArd Biesheuvel2019-01-161-1/+0
| | | | | | | | | | Drop the reference to ArmPkg/DefaultExceptionHandlerLibBase, which is no longer used anywhere now that DebugAgentSymbolsBaseLib no longer incorporates a vector table and exception handling. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
* ArmVirtPkg/ArmVirt.dsc.inc: define TcpIoLib resolution unconditionallyArd Biesheuvel2018-12-141-2/+0
| | | | | | | | | | | | | Commit 9a67ba261fe9 ("ArmVirtPkg: Replace obsoleted network drivers from platform DSC/FDF") failed to take into account that the now unconditionally included IScsiDxe.inf from NetworkPkg requires a resolution for TcpIoLib. Since specifying such a resolution is harmless for platforms that have no networking enabled, let's just fix things by dropping the conditionals around it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: Replace obsoleted network drivers from platform DSC/FDF.Fu Siyuan2018-12-141-2/+0
| | | | | | | | | | | | | This patch replaces the MdeModulePkg TCP, PXE and iSCSI driver with those ones in NetworkPkg. These 3 drivers in MdeModulePkg are not being actively maintained and will be removed from edk2 master soon. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Julien Grall <julien.grall@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platformsArd Biesheuvel2018-11-291-3/+0
| | | | | | | | | PcdPrePiCpuMemorySize is no longer used so drop the PCD overrides from all platform descriptions in ArmVirtPkg. 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 wrong and superfluous ResourcePublicationLib resolutionLaszlo Ersek2018-07-241-1/+0
| | | | | | | | | | | | | The class name for the "PeiResourcePublicationLib" instance is just "ResourcePublicationLib", not "PeiResourcePublicationLib". However, no module included in the ArmVirtPkg platforms depends on this lib class; remove its resolution. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Julien Grall <julien.grall@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg/ArmVirtQemu: enable the IPv6 stackLaszlo Ersek2018-07-131-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the IPv6 stack to ArmVirtQemu with a cumulative port of the following OvmfPkg commits: * 36c6413f76e5 "OvmfPkg: enable the IPv6 support", 2014-12-19 * 96302b80d90e "OvmfPkg: Enable Network2 Shell Commands for IPv6", 2016-03-08 * 6d0f8941bdc2 "OvmfPkg: always resolve OpenSslLib, IntrinsicLib and BaseCryptLib", 2017-01-17 * 32e22f20c985 "OvmfPkg: correct the IScsiDxe module included for the IPv6 stack", 2017-01-17 The IPv6-enabled IScsiDxe driver depends on BaseCryptLib, and the "CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf" instance depends on IntrinsicLib and OpensslLib. This is why commit 6d0f8941bdc2 is relevant. However, unlike in OvmfPkg, in ArmVirtPkg we'll precisely track the firmware features that require these library classes. (The OvmfPkg discussion was quite complex, and the OvmfPkg solution was a compromise: <http://mid.mail-archive.com/1484569332-13440-1-git-send-email-jiaxin.wu@intel.com>.) The ArmVirtXen platform is not extended with the relevant drivers because currently it doesn't include any networking support. Cc: Julien Grall <julien.grall@linaro.org> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1007 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: unify HttpLib resolutions in "ArmVirt.dsc.inc"Laszlo Ersek2018-07-131-0/+3
| | | | | | | | | | | We already resolve a number of networking-related library classes in ArmVirt.dsc.inc; follow suit with HttpLib. Cc: Julien Grall <julien.grall@linaro.org> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1007 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: switch to KVM safe IoLib implementationArd Biesheuvel2018-06-111-1/+1
| | | | | | | | | | Switch to the new IoLib implementation that will only use KVM safe instructions to perform MMIO memory accesses. Contributed-under: TianoCore Contribution Agreement 1.1 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: resolve PciCapLib, PciCapPciSegmentLib, PciCapPciIoLibLaszlo Ersek2018-05-241-0/+3
| | | | | | | | | | | | Resolve the PciCapLib, PciCapPciSegmentLib, and PciCapPciIoLib classes to their single respective instances under OvmfPkg. Later patches will use those lib classes in OvmfPkg drivers, some of which are included in ArmVirt platforms. 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: use protocol-based DevicePathLib instance for most DXE modulesLaszlo Ersek2018-04-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Port OvmfPkg commit 5c3481b0b611e to ArmVirtPkg. Some explanation should be in order (because 5c3481b0b611e doesn't offer any): - The UefiDevicePathLibDevicePathProtocol instance uses the Device Path Utilities Protocol, produced by DevicePathDxe, for formatting and parsing the textual device path representation. This allows for a lighter weight lib instance that gets linked into several DXE modules. In comparison, the more standalone UefiDevicePathLib instance includes the formatting and parsing routines in every client module. - The DXE core needs DevicePathLib before it dispatches DevicePathDxe, so it needs to stick with the standalone instance. - DevicePathDxe itself also needs the standalone instance, for implementing the protocol. - The DXE-phase PCD driver, "MdeModulePkg/Universal/PCD/Dxe/Pcd.inf", depends on DevicePathLib via UefiLib and DxeServicesLib at the least; so with this update, it inherits a dependency on the protocol. In reverse, DevicePathDxe depends on the PCD Protocol, via PcdLib. The cycle is broken by using BasePcdLibNull in DevicePathDxe. That restricts it to FixedAtBuild, Patch, and FeatureFlag PCDs, but that's fine. Example space savings (using ArmVirtQemu and the GCC5 toolchain): - NOOPT: 187KB in FVMAIN, 12KB in FVMAIN_COMPACT - DEBUG: 147KB in FVMAIN, 20KB in FVMAIN_COMPACT - RELEASE: 123KB in FVMAIN, 17KB in FVMAIN_COMPACT Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Julien Grall <julien.grall@linaro.org> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=940 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: switch to DXE runtime version of DebugLib where appropriateArd Biesheuvel2018-02-241-0/+3
| | | | | | | | | | Switch all users of ArmVirt.dsc.inc to the new DebugLib implementation that was created especially for DXE_RUNTIME_DRIVER modules, ensuring that DEBUG() calls do not touch the UART at runtime. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: Add SafeIntLib and BmpSupportLib to DSC filesMichael D Kinney2018-02-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | https://bugzilla.tianocore.org/show_bug.cgi?id=800 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport https://github.com/Microsoft/MS_UEFI/commit/33bab4031a417d7d5a7d356c15a14c2e60302b2d https://github.com/Microsoft/MS_UEFI/commit/ca516b1a61315c2d823f453e12d2135098f53d61 https://github.com/Microsoft/MS_UEFI/commit/2b9f111f2e74a4c2ef4c4e32379e111f016dbd9b The BootGraphicsResourceTableDxe module uses the BmpSupportLib and SafeIntLib to convert a GOP BLT buffer to a BMP graphics image. Add library mappings for these new library classes. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Bret Barkelew <Bret.Barkelew@microsoft.com>
* ArmVirtPkg: drop unused PcdCacheEnableLeif Lindholm2018-02-061-2/+0
| | | | | | | | | ArmVirt.dsc.inc sets gEmbeddedTokenSpaceGuid.PcdCacheEnable, which is unused and about to be deleted. Drop it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Fix build failure due to Tftp library removalRuiyu Ni2017-11-301-4/+7
| | | | | | | | | | | | | | | | | | | | The TFTP command was converted from a NULL class library instance to a dynamic shell command in commit 0961002352e9. The ShellLib and FileHandleLib resolutions are moved from [LibraryClasses.common.UEFI_APPLICATION] to [LibraryClasses.common] because dynamic shell commands are implemented as DXE_DRIVER modules. PcdShellLibAutoInitialize must be set to FALSE for both the shell app itself and the dynamic shell command modules. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> [lersek@redhat.com: extend commit message] Reviewed-by: Laszlo Ersek <lersek@redhat.com> Build-tested-by: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Julien Grall <julien.grall@linaro.org>
* ArmVirtPkg/PrePi: remove ArmPlatformStackLib dependencyArd Biesheuvel2017-11-231-1/+0
| | | | | | | | | | | ArmPlatformStackLib has hooks into primary/secondary core PCDs and other ArmPlatformLib related junk, so let's simply set the stack pointer directly. This is trivial given that our PrePi is unicore only. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: switch to new PL011UartLib implementationArd Biesheuvel2017-11-171-1/+1
| | | | | | | | | | Switch to the new, cleaned up PL011UartLib implementation so we will be able to remove the old one. Contributed-under: TianoCore Contribution Agreement 1.1 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: don't build the network stack uselessly for XenLaszlo Ersek2017-09-121-15/+0
| | | | | | | | | | | | | | | | | "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: remove DmaLib library class resolutionArd Biesheuvel2017-08-301-1/+0
| | | | | | | | | | The virt targets never use non-coherent DMA, so there is no point in having a shared DmaLib library class resolution pointing to ArmDmaLib. So drop it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: drop unused Pcds from ArmVirt.dsc.incLeif Lindholm2017-08-241-12/+0
| | | | | | | | | | A block of settings has been copied around ARM platforms for years. These are consumed only by Ebl, and since none of the ArmVirtPkg platforms use that, drop them. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: remove status code supportArd Biesheuvel2017-07-051-9/+2
| | | | | | | | | | | | | | | | | | | | Commit 7b1dc6c569a 'ArmVirtPkg: switch to generic ResetSystemRuntimeDxe' replaced all references in ArmVirtPkg to the deprecated ResetRuntimeDxe from EmbeddedPkg with the well maintained generic alternative that lives in MdeModulePkg. However, as it turns out, the generic driver has a dependency on the library class ReportStatusCodeLib, whose default resolution is an implementation that is not safe for use at runtime, resulting in crashes when trying to invoke it from the OS. Since we have no use for status codes in any of the ArmVirtPkg platforms, let's replace all resolutions with a common one to the NULL implementation. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* 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>
* ArmPlatformPkg,ArmVirtPkg: delete redundant PL031 functionsLeif Lindholm2017-05-101-0/+1
| | | | | | | | | | Remove the functions now provided by TimeBaseLib from PL031RealTimeClockLib. Add TimeBaseLib resolution to ArmVirtPkg in same commit to prevent breakage. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: enable AcpiTableDxe and EFI_ACPI_TABLE_PROTOCOL dynamicallyLaszlo Ersek2017-03-281-1/+8
| | | | | | | | | | | | | | | | 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: apply PE/COFF memory protection to DxeCore as wellArd Biesheuvel2017-03-081-1/+1
| | | | | | | | | | Include DXE_CORE in the BuildOptions that are set to force 4 KB section alignment for PE/COFF images in order to allow them to be mapped with strict memory permissions. 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 non-executable DXE stack for all platformsArd Biesheuvel2017-03-071-0/+5
| | | | | | | | | | | | | | | 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: enable PE/COFF image and memory protection for ARM platformsArd Biesheuvel2017-03-071-5/+4
| | | | | | | | | | | | Like for AARCH64, enable PE/COFF image and NX memory protection for all 32-bit ARM virt platforms. Note that this does not [yet] protect EfiLoaderData regions, due to compatibility issues with GRUB. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg AARCH64: enable NX memory protection for all platformsArd Biesheuvel2017-03-011-0/+7
| | | | | | | | | | | | | | | This sets the recently introduced PCD PcdDxeNxMemoryProtectionPolicy to a value that protects all memory regions except code regions against inadvertent execution. Note that this does not [yet] protect EfiLoaderData regions, due to compatibility issues with shim and GRUB. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com>
* ArmVirtPkg: move UefiBootManagerLib resolution to ArmVirt.dsc.incArd Biesheuvel2017-03-011-0/+1
| | | | | | | | | | | 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: clear PcdPerformanceLibraryPropertyMask PCDArd Biesheuvel2017-02-271-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only observeable effect of having PcdPerformanceLibraryPropertyMask set to 1 is that a EfiReservedMemory region of 4 pages is allocated right below the 4 GB mark. This region is out of bounds for the OS, which means it is not even allowed to map it, to avoid speculative loads from it. On Linux, this may prevent the kernel from using a 1 GB block mapping for this region, and instead it has to carve up the block as follows: 0xffffffff80000000-0xffffffffbe000000 992M PMD CON BLK 0xffffffffbe000000-0xffffffffbfe00000 30M PMD BLK 0xffffffffbfe00000-0xffffffffbfff0000 1984K PTE CON 0xffffffffbfff0000-0xffffffffbfffc000 48K PTE where it would otherwise use a single 1 GB mapping (*), i.e., 0xffffffff80000000-0xffffffffc0000000 1G PGD To clarify, the latter is a single 8 byte entry in the top level page table, whereas in the former case, we have two additional levels of paging, requiring two extra 4 KB pages (on a 4 KB pagesize kernel). The real cost, however, is the TLB footprint, which goes up from a single entry to a number between 90 and 1020, depending on whether contiguous hints are honoured by the hardware. So let's remove PcdPerformanceLibraryPropertyMask until we find a reason why we need it. (*) provided that no other allocations were deliberately located right below the 4 GB mark, and that we are running with more than 3 GB of memory, in which case most allocations will be over 4 GB, given EDK2's default top-down allocation policy. 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 OpensslLib to OpensslLibCryptoLaszlo Ersek2017-02-251-1/+1
| | | | | | | | | | | | | | | | The OpensslLibCrypto library instance (which does not contain libssl functions) is sufficient for the Secure Boot feature. It would not be sufficient for HTTPS booting (which requires TLS), but in ArmVirtPkg, we don't even enable plaintext HTTP booting for the time being. Ease security analysis by excluding libssl functionality from the OpensslLib instance we use. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Tomas Hoger <thoger@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg/ArmVirt.dsc.inc: AARCH64: enable DXE image protection featureArd Biesheuvel2017-02-241-0/+10
| | | | | | | | | | | | | | | | Enable the new DXE image protection for all image, i.e., FV images but also external images that originate from disk or the network, such as OS loaders. This complements work that is underway on the arm64/Linux kernel side, to emit the OS loader with 4 KB section alignment, and a suitable split between code and data. http://marc.info/?l=linux-arm-kernel&m=148655557227819 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
* ArmPkg: remove DebugUncachedMemoryAllocationLibArd Biesheuvel2017-02-231-2/+0
| | | | | | | | | | | | | | | | | | | | | The debug implementation of the UncachedMemoryAllocationLib library class relies on the creation of an uncached alias of a memory range, while keeping the original cached mapping, but with read-only attributes to trap inadvertent write accesses. This is not a terribly good idea, given that the ARM architecture does not allow mismatched attributes, and so creating them deliberately is not something we should encourage by doing it in reference code. So remove the library, and replace all references to it with a reference to the non-debug version (unless the platform does not require a resolution for it in the first place, in which case all UncachedMemoryAllocationLib references can be removed altogether). 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: Leif Lindholm <leif.lindholm@linaro.org>
* ArmVirtPkg: disable deprecated interfacesLaszlo Ersek2016-10-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At this point no code in ArmVirtPkg (and apparently no code outside of ArmVirtPkg that the ArmVirt binaries depend on) uses the deprecated APIs, so we can disable them in the common platform DSC include file: BaseLib: - StrCpy - StrnCpy - StrCat - StrnCat - UnicodeStrToAsciiStr - AsciiStrCpy - AsciiStrnCpy - AsciiStrCat - AsciiStrnCat - AsciiStrToUnicodeStr PcdLib: - PcdSet8 - PcdSet16 - PcdSet32 - PcdSet64 - PcdSetPtr - PcdSetBool - PcdSetEx8 - PcdSetEx16 - PcdSetEx32 - PcdSetEx64 - PcdSetExPtr - PcdSetExBool UefiLib: - GetVariable - GetEfiGlobalVariable 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> # RVCT Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
* ArmVirtPkg: undo bogus component name and driver diagnostics disablementLaszlo Ersek2016-10-151-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The entry point function of any UEFI_DRIVER that conforms to the UEFI driver model must install an instance of the EFI_DRIVER_BINDING_PROTOCOL on the image handle. Beyond that, the following protocols are optional: - EFI_COMPONENT_NAME_PROTOCOL - EFI_COMPONENT_NAME2_PROTOCOL - EFI_DRIVER_CONFIGURATION_PROTOCOL - EFI_DRIVER_CONFIGURATION2_PROTOCOL - EFI_DRIVER_DIAGNOSTICS_PROTOCOL - EFI_DRIVER_DIAGNOSTICS2_PROTOCOL The UefiLib functions - EfiLibInstallAllDriverProtocols() - EfiLibInstallAllDriverProtocols2() - EfiLibInstallDriverBindingComponentName2() are convenience helpers for such UEFI_DRIVERs. They simplify the installation of the above protocols. The UefiLib instance in "MdePkg/Library/UefiLib/UefiDriverModel.c" allows platforms to control these functions through the MdePkg feature PCDs - PcdComponentNameDisable - PcdComponentName2Disable - PcdDriverDiagnosticsDisable - PcdDriverDiagnostics2Disable If any of these PCDs are set to TRUE, then the helper functions will not install the corresponding protocol interfaces on the image handle, even if the driver passes in non-NULL protocol interfaces. In other words, at build time, a platform can forcibly prevent all drivers that employ UefiLib from producing these protocols. In ArmVirtPkg, that's what we've been doing forever, for no reason at all. This is why we haven't been seeing component and driver names from the DH, DEVICES, DRIVERS and DEVTREE shell commands, unlike in OvmfPkg. The default value for all these PCDs is FALSE, in "MdePkg/MdePkg.dec". Revert ArmVirtPkg to the sane defaults. This bug dates back to the inception of ArmVirtPkg (called ArmPlatformPkg/ArmVirtualizationPkg at the time). Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Fixes: 6f5872b1f4013f58c6d2f446d885edd6c8ea6d21 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: move all platforms to MdePkg/ BaseMemoryLib implementationsArd Biesheuvel2016-09-211-3/+5
| | | | | | | | | | | | | | | | The BaseMemoryLibStm implementation under ArmPkg/ is being deprecated, in favor of the generic versions under MdePkg, now that ARM and AARCH64 support has been added to both the generic C version (BaseMemoryLib) and the accelerated version (BaseMemoryLibOptDxe). The latter uses unaligned accesses and special cache maintenance instructions, and can therefore not be used when the MMU is off. So move to BaseMemoryLibOptDxe for the DXE phase and later, and to the generic BaseMemoryLib before that. 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 EBC interpreter for AArch64Leif Lindholm2016-08-261-0/+1
| | | | | | | | | Since we now have EBC support for AArch64, enable it by default on both QEMU and Xen platforms. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Fix build breakage of ArmVirtXen platformVikas C Sajjan2016-08-221-0/+4
| | | | | | | | | Added missing dependency of FileExplorerLib, which was causing build error for ArmVirtXen, due to inclusion of ramdisk support. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Vikas C Sajjan <vikas.cha.sajjan@hpe.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
* ArmVirtPkg: Add Ramdisk support to ArmVirtPkg platformsVikas C Sajjan2016-08-221-0/+11
| | | | | | | | | | Adds the RAMDisk support to ArmVirtPkg platforms. This patch actually ports OvmfPkg commit 259d87146b07 to ArmVirtPkg. 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: Move inclusion of AcpiTableDxe.inf to ArmVirt.dsc.incVikas C Sajjan2016-08-221-0/+6
| | | | | | | | | 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/ArmVirtQemu: use MdeModulePkg/BDSLaszlo Ersek2016-05-061-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: drop bogus ArmPlatformSecExtraActionLib resolutionArd Biesheuvel2016-04-071-1/+0
| | | | | | | | | | | 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>
* ArmVirtPkg: disable PcdHiiOsRuntimeSupportLaszlo Ersek2016-04-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* ArmVirtPkg/ArmVirtQemu: move to ARM version of CpuExceptionHandlerLibArd Biesheuvel2016-03-171-1/+1
| | | | | | | | | | | 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>
* ArmVirtPkg: sync log level comments to DebugLib.hLaszlo Ersek2016-03-021-4/+4
| | | | | | | | | 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>
* ArmVirtPkg RVCT: build DXE_RUNTIME_DRIVER modules with 4 KB alignmentArd Biesheuvel2015-12-141-0/+1
| | | | | | | | | | | | This adds the RVCT armlink command line switches to build modules of type DXE_RUNTIME_DRIVER with 4 KB PE/COFF section alignment, allowing the OS to apply stricter permissions to the .text and .data sections. 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@19237 6f19259b-4bc3-4df7-8a09-765794883524
* ArmVirtPkg: add secure boot support to 32-bit ARM targetsArd Biesheuvel2015-11-301-0/+3
| | | | | | | | | | | | | Building the 32-bit ARM targets with secure boot enabled requires a library resolution for the ArmSoftfloatLib dependency of OpenSslLib. So provide one. 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> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19032 6f19259b-4bc3-4df7-8a09-765794883524
* ArmVirtPkg: drop ArmPlatformGlobalVariableLib dependencyArd Biesheuvel2015-11-271-4/+0
| | | | | | | | | | | | | | Now that all PeiServicesTablePointerLib and PrePiHobListPointerLib library dependencies in both ArmVirtQemu and ArmVirtXen are satisfied by implementations that do not depend on ArmPlatformGlobalVariableLib, we can remove all mention of it from the various .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> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18986 6f19259b-4bc3-4df7-8a09-765794883524
* ArmVirtPkg/ArmVirtQemu: move to ArmPkg version of PeiServicesTablePointerLibArd Biesheuvel2015-11-271-3/+3
| | | | | | | | | | | | | | | | | | As pointed out by Eugene, the ArmPlatformPkg implementation of PeiServicesTablePointerLib violates the PI sec, since it uses ArmPlatformGlobalVariableLib to store the PEI services table pointer rather than the thread ID cpu registers as the spec requires. So instead, move to the ArmPkg version of this library, which does adhere to the PI spec. Reported-by: Eugene Cohen <eugene@hp.com> 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> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18985 6f19259b-4bc3-4df7-8a09-765794883524
* ArmVirtPkg: Use SerialDxe in MdeModulePkg instead of EmbeddedPkgStar Zeng2015-11-261-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Beyond just changing the directly related lines in the FDF and DSC files, we have to adapt the EarlyFdtPL011SerialPortLib and FdtPL011SerialPortLib instances as well, in the same patch. This is because the EmbeddedPkg driver expects the SerialPortSetAttributes(), SerialPortSetControl() and SerialPortGetControl() functions from SerialPortExtLib, while the MdeModulePkg driver expects them from SerialPortLib itself. We cannot implement these functions in ArmVirtPkg's SerialPortLib instances *before* flipping the driver, because it would cause double function definitions in the EmbeddedPkg driver. We also can't implement the functions *after* flipping the driver, because it would cause unresolved function references in the MdeModulePkg driver. Therefore we have to implement the functions simultaneously with the driver replacement. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18973 6f19259b-4bc3-4df7-8a09-765794883524