summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg
diff options
context:
space:
mode:
authorAbner Chang <abner.chang@hpe.com>2021-10-11 21:27:33 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-10-14 06:25:52 +0000
commitd881c6ddf556dfb5032db04733dfa86aa891e7f8 (patch)
tree69c4f8fb06e72a519f357c9f2bcaa31ef57f9c09 /ArmVirtPkg
parent77e9b3a7c68cea4eeb64af85e4f695f278172314 (diff)
downloadedk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.tar.gz
edk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.tar.bz2
edk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.zip
ArmVirtPkg/HighMemDxe: Relocate HighMemDxe to OvmfPkg
Relocate HighMemDxe to OvmfPkg/Fdt, this library is leverage by both ARM and RISC-V archs. Signed-off-by: Abner Chang <abner.chang@hpe.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Daniel Schaefer <daniel.schaefer@hpe.com> Cc: Sunil V L <sunilvl@ventanamicro.com> Reviewed-by: Daniel Schaefer <daniel.schaefer@hpe.com> Reviewed-by: Sunil V L <sunilvl@ventanamicro.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Cc: Jiewen Yao <jiewen.yao@intel.com>
Diffstat (limited to 'ArmVirtPkg')
-rw-r--r--ArmVirtPkg/ArmVirtCloudHv.dsc2
-rw-r--r--ArmVirtPkg/ArmVirtCloudHv.fdf2
-rw-r--r--ArmVirtPkg/ArmVirtKvmTool.dsc2
-rw-r--r--ArmVirtPkg/ArmVirtKvmTool.fdf2
-rw-r--r--ArmVirtPkg/ArmVirtQemu.dsc2
-rw-r--r--ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc2
-rw-r--r--ArmVirtPkg/ArmVirtQemuKernel.dsc2
-rw-r--r--ArmVirtPkg/HighMemDxe/HighMemDxe.c128
-rw-r--r--ArmVirtPkg/HighMemDxe/HighMemDxe.inf45
9 files changed, 7 insertions, 180 deletions
diff --git a/ArmVirtPkg/ArmVirtCloudHv.dsc b/ArmVirtPkg/ArmVirtCloudHv.dsc
index 9ad88e981b..2b722917e3 100644
--- a/ArmVirtPkg/ArmVirtCloudHv.dsc
+++ b/ArmVirtPkg/ArmVirtCloudHv.dsc
@@ -295,7 +295,7 @@
#
ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
OvmfPkg/VirtioNetDxe/VirtioNet.inf
diff --git a/ArmVirtPkg/ArmVirtCloudHv.fdf b/ArmVirtPkg/ArmVirtCloudHv.fdf
index 1bb452ebb8..7ecf5ca88d 100644
--- a/ArmVirtPkg/ArmVirtCloudHv.fdf
+++ b/ArmVirtPkg/ArmVirtCloudHv.fdf
@@ -107,7 +107,7 @@ READ_LOCK_STATUS = TRUE
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
INF ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
INF EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- INF ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ INF OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
#
# PI DXE Drivers producing Architectural Protocols (EFI Services)
diff --git a/ArmVirtPkg/ArmVirtKvmTool.dsc b/ArmVirtPkg/ArmVirtKvmTool.dsc
index 3cc182545c..97fc98d778 100644
--- a/ArmVirtPkg/ArmVirtKvmTool.dsc
+++ b/ArmVirtPkg/ArmVirtKvmTool.dsc
@@ -293,7 +293,7 @@
ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.inf
ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
OvmfPkg/VirtioNetDxe/VirtioNet.inf
diff --git a/ArmVirtPkg/ArmVirtKvmTool.fdf b/ArmVirtPkg/ArmVirtKvmTool.fdf
index 1dac8b7880..0535d36b7d 100644
--- a/ArmVirtPkg/ArmVirtKvmTool.fdf
+++ b/ArmVirtPkg/ArmVirtKvmTool.fdf
@@ -122,7 +122,7 @@ READ_LOCK_STATUS = TRUE
INF ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
INF EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
INF ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.inf
- INF ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ INF OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
#
# PI DXE Drivers producing Architectural Protocols (EFI Services)
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 2f1a3cea05..86417f8797 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -407,7 +407,7 @@
#
ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
OvmfPkg/VirtioNetDxe/VirtioNet.inf
diff --git a/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc b/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc
index e9518dd273..279b905edd 100644
--- a/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc
+++ b/ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc
@@ -42,7 +42,7 @@ READ_LOCK_STATUS = TRUE
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
INF ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
INF EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- INF ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ INF OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
#
# PI DXE Drivers producing Architectural Protocols (EFI Services)
diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc
index 3a0c3fb4f0..3fad481e29 100644
--- a/ArmVirtPkg/ArmVirtQemuKernel.dsc
+++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc
@@ -342,7 +342,7 @@
#
ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
EmbeddedPkg/Drivers/FdtClientDxe/FdtClientDxe.inf
- ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+ OvmfPkg/Fdt/HighMemDxe/HighMemDxe.inf
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
OvmfPkg/VirtioNetDxe/VirtioNet.inf
diff --git a/ArmVirtPkg/HighMemDxe/HighMemDxe.c b/ArmVirtPkg/HighMemDxe/HighMemDxe.c
deleted file mode 100644
index c383757364..0000000000
--- a/ArmVirtPkg/HighMemDxe/HighMemDxe.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/** @file
-* High memory node enumeration DXE driver for ARM Virtual Machines
-*
-* Copyright (c) 2015-2016, Linaro Ltd. All rights reserved.
-*
-* SPDX-License-Identifier: BSD-2-Clause-Patent
-*
-**/
-
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/DxeServicesTableLib.h>
-#include <Library/PcdLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-
-#include <Protocol/Cpu.h>
-#include <Protocol/FdtClient.h>
-
-EFI_STATUS
-EFIAPI
-InitializeHighMemDxe (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- FDT_CLIENT_PROTOCOL *FdtClient;
- EFI_CPU_ARCH_PROTOCOL *Cpu;
- EFI_STATUS Status, FindNodeStatus;
- INT32 Node;
- CONST UINT32 *Reg;
- UINT32 RegSize;
- UINTN AddressCells, SizeCells;
- UINT64 CurBase;
- UINT64 CurSize;
- UINT64 Attributes;
- EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor;
-
- Status = gBS->LocateProtocol (&gFdtClientProtocolGuid, NULL,
- (VOID **)&FdtClient);
- ASSERT_EFI_ERROR (Status);
-
- Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL,
- (VOID **)&Cpu);
- ASSERT_EFI_ERROR (Status);
-
- //
- // Check for memory node and add the memory spaces except the lowest one
- //
- for (FindNodeStatus = FdtClient->FindMemoryNodeReg (FdtClient, &Node,
- (CONST VOID **) &Reg, &AddressCells,
- &SizeCells, &RegSize);
- !EFI_ERROR (FindNodeStatus);
- FindNodeStatus = FdtClient->FindNextMemoryNodeReg (FdtClient, Node,
- &Node, (CONST VOID **) &Reg, &AddressCells,
- &SizeCells, &RegSize)) {
- ASSERT (AddressCells <= 2);
- ASSERT (SizeCells <= 2);
-
- while (RegSize > 0) {
- CurBase = SwapBytes32 (*Reg++);
- if (AddressCells > 1) {
- CurBase = (CurBase << 32) | SwapBytes32 (*Reg++);
- }
- CurSize = SwapBytes32 (*Reg++);
- if (SizeCells > 1) {
- CurSize = (CurSize << 32) | SwapBytes32 (*Reg++);
- }
- RegSize -= (AddressCells + SizeCells) * sizeof (UINT32);
-
- Status = gDS->GetMemorySpaceDescriptor (CurBase, &GcdDescriptor);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_WARN,
- "%a: Region 0x%lx - 0x%lx not found in the GCD memory space map\n",
- __FUNCTION__, CurBase, CurBase + CurSize - 1));
- continue;
- }
- if (GcdDescriptor.GcdMemoryType == EfiGcdMemoryTypeNonExistent) {
- Status = gDS->AddMemorySpace (EfiGcdMemoryTypeSystemMemory, CurBase,
- CurSize, EFI_MEMORY_WB);
-
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR,
- "%a: Failed to add System RAM @ 0x%lx - 0x%lx (%r)\n",
- __FUNCTION__, CurBase, CurBase + CurSize - 1, Status));
- continue;
- }
-
- Status = gDS->SetMemorySpaceAttributes (CurBase, CurSize,
- EFI_MEMORY_WB);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_WARN,
- "%a: gDS->SetMemorySpaceAttributes() failed on region 0x%lx - 0x%lx (%r)\n",
- __FUNCTION__, CurBase, CurBase + CurSize - 1, Status));
- }
-
- //
- // Due to the ambiguous nature of the RO/XP GCD memory space attributes,
- // it is impossible to add a memory space with the XP attribute in a way
- // that does not result in the XP attribute being set on *all* UEFI
- // memory map entries that are carved from it, including code regions
- // that require executable permissions.
- //
- // So instead, we never set the RO/XP attributes in the GCD memory space
- // capabilities or attribute fields, and apply any protections directly
- // on the page table mappings by going through the cpu arch protocol.
- //
- Attributes = EFI_MEMORY_WB;
- if ((PcdGet64 (PcdDxeNxMemoryProtectionPolicy) &
- (1U << (UINT32)EfiConventionalMemory)) != 0) {
- Attributes |= EFI_MEMORY_XP;
- }
-
- Status = Cpu->SetMemoryAttributes (Cpu, CurBase, CurSize, Attributes);
-
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR,
- "%a: Failed to set System RAM @ 0x%lx - 0x%lx attribute (%r)\n",
- __FUNCTION__, CurBase, CurBase + CurSize - 1, Status));
- } else {
- DEBUG ((EFI_D_INFO, "%a: Add System RAM @ 0x%lx - 0x%lx\n",
- __FUNCTION__, CurBase, CurBase + CurSize - 1));
- }
- }
- }
- }
-
- return EFI_SUCCESS;
-}
diff --git a/ArmVirtPkg/HighMemDxe/HighMemDxe.inf b/ArmVirtPkg/HighMemDxe/HighMemDxe.inf
deleted file mode 100644
index 168fc90d2a..0000000000
--- a/ArmVirtPkg/HighMemDxe/HighMemDxe.inf
+++ /dev/null
@@ -1,45 +0,0 @@
-## @file
-# High memory node enumeration DXE driver for ARM Virtual Machines
-#
-# Copyright (c) 2015-2016, Linaro Ltd. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = HighMemDxe
- FILE_GUID = 63EA1463-FBFA-428A-B97F-E222755852D7
- MODULE_TYPE = DXE_DRIVER
- VERSION_STRING = 1.0
-
- ENTRY_POINT = InitializeHighMemDxe
-
-[Sources]
- HighMemDxe.c
-
-[Packages]
- EmbeddedPkg/EmbeddedPkg.dec
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
- ArmPkg/ArmPkg.dec
- ArmVirtPkg/ArmVirtPkg.dec
-
-[LibraryClasses]
- BaseLib
- DebugLib
- DxeServicesTableLib
- PcdLib
- UefiBootServicesTableLib
- UefiDriverEntryPoint
-
-[Protocols]
- gEfiCpuArchProtocolGuid ## CONSUMES
- gFdtClientProtocolGuid ## CONSUMES
-
-[Pcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy
-
-[Depex]
- gEfiCpuArchProtocolGuid AND gFdtClientProtocolGuid