summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2023-06-02 17:17:39 +0200
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-06-26 09:11:53 +0000
commit5542e528cd2710f521e8bf5dd4efd5adbdf86b71 (patch)
treef1213e470722fdff114270ad913288eb47700d8c
parenta21a994f55e53325d3e060c435ca3a87fd7c2c79 (diff)
downloadedk2-5542e528cd2710f521e8bf5dd4efd5adbdf86b71.tar.gz
edk2-5542e528cd2710f521e8bf5dd4efd5adbdf86b71.tar.bz2
edk2-5542e528cd2710f521e8bf5dd4efd5adbdf86b71.zip
ArmPkg/CpuDxe: Simplify memory attributes protocol implementation
Now that ArmSetMemoryAttributes() permits a mask to be provided, we can simplify the implementation the UEFI memory attribute protocol substantially, and just pass on the requested mask to be set or cleared directly. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Oliver Smith-Denny <osde@linux.microsoft.com> Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
-rw-r--r--ArmPkg/Drivers/CpuDxe/MemoryAttribute.c50
1 files changed, 2 insertions, 48 deletions
diff --git a/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c b/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c
index 61ba8fbbae..16cc4ef474 100644
--- a/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c
+++ b/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c
@@ -183,8 +183,6 @@ SetMemoryAttributes (
IN UINT64 Attributes
)
{
- EFI_STATUS Status;
-
DEBUG ((
DEBUG_INFO,
"%a: BaseAddress == 0x%lx, Length == 0x%lx, Attributes == 0x%lx\n",
@@ -204,28 +202,7 @@ SetMemoryAttributes (
return EFI_UNSUPPORTED;
}
- if ((Attributes & EFI_MEMORY_RP) != 0) {
- Status = ArmSetMemoryRegionNoAccess (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- if ((Attributes & EFI_MEMORY_RO) != 0) {
- Status = ArmSetMemoryRegionReadOnly (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- if ((Attributes & EFI_MEMORY_XP) != 0) {
- Status = ArmSetMemoryRegionNoExec (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- return EFI_SUCCESS;
+ return ArmSetMemoryAttributes (BaseAddress, Length, Attributes, Attributes);
}
/**
@@ -267,8 +244,6 @@ ClearMemoryAttributes (
IN UINT64 Attributes
)
{
- EFI_STATUS Status;
-
DEBUG ((
DEBUG_INFO,
"%a: BaseAddress == 0x%lx, Length == 0x%lx, Attributes == 0x%lx\n",
@@ -288,28 +263,7 @@ ClearMemoryAttributes (
return EFI_UNSUPPORTED;
}
- if ((Attributes & EFI_MEMORY_RP) != 0) {
- Status = ArmClearMemoryRegionNoAccess (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- if ((Attributes & EFI_MEMORY_RO) != 0) {
- Status = ArmClearMemoryRegionReadOnly (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- if ((Attributes & EFI_MEMORY_XP) != 0) {
- Status = ArmClearMemoryRegionNoExec (BaseAddress, Length);
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
- }
-
- return EFI_SUCCESS;
+ return ArmSetMemoryAttributes (BaseAddress, Length, 0, Attributes);
}
EFI_MEMORY_ATTRIBUTE_PROTOCOL mMemoryAttribute = {