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 <a...@kernel.org> --- ArmPkg/Drivers/CpuDxe/MemoryAttribute.c | 50 +------------------- 1 file changed, 2 insertions(+), 48 deletions(-) diff --git a/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c b/ArmPkg/Drivers/CpuDxe/MemoryAttribute.c index 61ba8fbbae4ee795..16cc4ef474f9772b 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 = { -- 2.39.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105302): https://edk2.groups.io/g/devel/message/105302 Mute This Topic: https://groups.io/mt/99131176/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-