diff options
author | Abner Chang <abner.chang@hpe.com> | 2021-10-11 21:27:33 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2021-10-14 06:25:52 +0000 |
commit | d881c6ddf556dfb5032db04733dfa86aa891e7f8 (patch) | |
tree | 69c4f8fb06e72a519f357c9f2bcaa31ef57f9c09 /ArmVirtPkg | |
parent | 77e9b3a7c68cea4eeb64af85e4f695f278172314 (diff) | |
download | edk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.zip edk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.tar.gz edk2-d881c6ddf556dfb5032db04733dfa86aa891e7f8.tar.bz2 |
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.dsc | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtCloudHv.fdf | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtKvmTool.dsc | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtKvmTool.fdf | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtQemu.dsc | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc | 2 | ||||
-rw-r--r-- | ArmVirtPkg/ArmVirtQemuKernel.dsc | 2 | ||||
-rw-r--r-- | ArmVirtPkg/HighMemDxe/HighMemDxe.c | 128 | ||||
-rw-r--r-- | ArmVirtPkg/HighMemDxe/HighMemDxe.inf | 45 |
9 files changed, 7 insertions, 180 deletions
diff --git a/ArmVirtPkg/ArmVirtCloudHv.dsc b/ArmVirtPkg/ArmVirtCloudHv.dsc index 9ad88e9..2b72291 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 1bb452e..7ecf5ca 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 3cc1825..97fc98d 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 1dac8b7..0535d36 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 2f1a3ce..86417f8 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 e9518dd..279b905 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 3a0c3fb..3fad481 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 c383757..0000000 --- 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 168fc90..0000000 --- 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
|