[edk2-devel] [PATCH V3 2/4] MdeModulePkg: Add New Memory Attributes
Laszlo Ersek
lersek at redhat.com
Mon Jul 13 16:12:02 UTC 2020
Jian, Hao,
do you intend to review this patch, or should we go with Dandan's R-b
from <https://edk2.groups.io/g/devel/message/61630>?
Thanks
Laszlo
On 07/06/20 11:13, Laszlo Ersek wrote:
> On 07/02/20 22:50, Oleksiy Yakovlev wrote:
>> Add usage of EFI_MEMORY_SP and EFI_MEMORY_CPU_CRYPTO
>> attributes introduced in UEFI 2.8
>> (UEFI 2.8, mantis 1919 and 1872)
>> Use attributes bitmasks, defined in MdePkg.
>>
>> Signed-off-by: Oleksiy Yakovlev <oleksiyy at ami.com>
>> Reviewed-by: Laszlo Ersek <lersek at redhat.com>
>> ---
>> MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 11 ++---------
>> MdeModulePkg/Core/Dxe/Mem/Page.c | 9 +++------
>> MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 7 ++-----
>> MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 10 ++--------
>> 4 files changed, 9 insertions(+), 28 deletions(-)
>
> This is missing Dandan's R-b from
> <https://edk2.groups.io/g/devel/message/61630>. (To be picked up by the
> maintainer that merges the series, if no more versions of the set are
> needed.)
>
> Thanks
> Laszlo
>
>>
>> diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c
>> index 74f3b1b..2d8c076 100644
>> --- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c
>> +++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c
>> @@ -35,13 +35,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> #define PRESENT_MEMORY_ATTRIBUTES (EFI_RESOURCE_ATTRIBUTE_PRESENT)
>>
>> -#define EXCLUSIVE_MEMORY_ATTRIBUTES (EFI_MEMORY_UC | EFI_MEMORY_WC | \
>> - EFI_MEMORY_WT | EFI_MEMORY_WB | \
>> - EFI_MEMORY_WP | EFI_MEMORY_UCE)
>> -
>> -#define NONEXCLUSIVE_MEMORY_ATTRIBUTES (EFI_MEMORY_XP | EFI_MEMORY_RP | \
>> - EFI_MEMORY_RO)
>> -
>> //
>> // Module Variables
>> //
>> @@ -665,7 +658,7 @@ ConverToCpuArchAttributes (
>> {
>> UINT64 CpuArchAttributes;
>>
>> - CpuArchAttributes = Attributes & NONEXCLUSIVE_MEMORY_ATTRIBUTES;
>> + CpuArchAttributes = Attributes & EFI_MEMORY_ATTRIBUTE_MASK;
>>
>> if ( (Attributes & EFI_MEMORY_UC) == EFI_MEMORY_UC) {
>> CpuArchAttributes |= EFI_MEMORY_UC;
>> @@ -951,7 +944,7 @@ CoreConvertSpace (
>> // Keep original CPU arch attributes when caller just calls
>> // SetMemorySpaceAttributes() with none CPU arch attributes (for example, RUNTIME).
>> //
>> - Attributes |= (Entry->Attributes & (EXCLUSIVE_MEMORY_ATTRIBUTES | NONEXCLUSIVE_MEMORY_ATTRIBUTES));
>> + Attributes |= (Entry->Attributes & (EFI_CACHE_ATTRIBUTE_MASK | EFI_MEMORY_ATTRIBUTE_MASK));
>> }
>> Entry->Attributes = Attributes;
>> break;
>> diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/Page.c
>> index 1f0e3d9..2c2c9cd 100644
>> --- a/MdeModulePkg/Core/Dxe/Mem/Page.c
>> +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c
>> @@ -1857,8 +1857,7 @@ CoreGetMemoryMap (
>> MemoryMap->VirtualStart = 0;
>> MemoryMap->NumberOfPages = RShiftU64 ((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1), EFI_PAGE_SHIFT);
>> MemoryMap->Attribute = (MergeGcdMapEntry.Attributes & ~EFI_MEMORY_PORT_IO) |
>> - (MergeGcdMapEntry.Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |
>> - EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));
>> + (MergeGcdMapEntry.Capabilities & (EFI_CACHE_ATTRIBUTE_MASK | EFI_MEMORY_ATTRIBUTE_MASK));
>>
>> if (MergeGcdMapEntry.GcdMemoryType == EfiGcdMemoryTypeReserved) {
>> MemoryMap->Type = EfiReservedMemoryType;
>> @@ -1892,8 +1891,7 @@ CoreGetMemoryMap (
>> MemoryMap->VirtualStart = 0;
>> MemoryMap->NumberOfPages = RShiftU64 ((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1), EFI_PAGE_SHIFT);
>> MemoryMap->Attribute = MergeGcdMapEntry.Attributes | EFI_MEMORY_NV |
>> - (MergeGcdMapEntry.Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |
>> - EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));
>> + (MergeGcdMapEntry.Capabilities & (EFI_CACHE_ATTRIBUTE_MASK | EFI_MEMORY_ATTRIBUTE_MASK));
>> MemoryMap->Type = EfiPersistentMemory;
>>
>> //
>> @@ -1935,8 +1933,7 @@ CoreGetMemoryMap (
>> MemoryMapEnd = MemoryMap;
>> MemoryMap = MemoryMapStart;
>> while (MemoryMap < MemoryMapEnd) {
>> - MemoryMap->Attribute &= ~(UINT64)(EFI_MEMORY_RP | EFI_MEMORY_RO |
>> - EFI_MEMORY_XP);
>> + MemoryMap->Attribute &= ~(UINT64)EFI_MEMORY_ATTRIBUTE_MASK;
>> MemoryMap = NEXT_MEMORY_DESCRIPTOR (MemoryMap, Size);
>> }
>> MergeMemoryMap (MemoryMapStart, &BufferSize, Size);
>> diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
>> index 92a442f..7d1daf0 100644
>> --- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
>> +++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
>> @@ -42,9 +42,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>> #include "DxeMain.h"
>> #include "Mem/HeapGuard.h"
>>
>> -#define CACHE_ATTRIBUTE_MASK (EFI_MEMORY_UC | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB | EFI_MEMORY_UCE | EFI_MEMORY_WP)
>> -#define MEMORY_ATTRIBUTE_MASK (EFI_MEMORY_RP | EFI_MEMORY_XP | EFI_MEMORY_RO)
>> -
>> //
>> // Image type definitions
>> //
>> @@ -221,7 +218,7 @@ SetUefiImageMemoryAttributes (
>> Status = CoreGetMemorySpaceDescriptor(BaseAddress, &Descriptor);
>> ASSERT_EFI_ERROR(Status);
>>
>> - FinalAttributes = (Descriptor.Attributes & CACHE_ATTRIBUTE_MASK) | (Attributes & MEMORY_ATTRIBUTE_MASK);
>> + FinalAttributes = (Descriptor.Attributes & EFI_CACHE_ATTRIBUTE_MASK) | (Attributes & EFI_MEMORY_ATTRIBUTE_MASK);
>>
>> DEBUG ((DEBUG_INFO, "SetUefiImageMemoryAttributes - 0x%016lx - 0x%016lx (0x%016lx)\n", BaseAddress, Length, FinalAttributes));
>>
>> @@ -924,7 +921,7 @@ InitializeDxeNxMemoryProtectionPolicy (
>> (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED)) {
>>
>> Attributes = GetPermissionAttributeForMemoryType (EfiConventionalMemory) |
>> - (Entry->Attributes & CACHE_ATTRIBUTE_MASK);
>> + (Entry->Attributes & EFI_CACHE_ATTRIBUTE_MASK);
>>
>> DEBUG ((DEBUG_INFO,
>> "Untested GCD memory space region: - 0x%016lx - 0x%016lx (0x%016lx)\n",
>> diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> index 0385f1d..599a0cd 100644
>> --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> @@ -39,12 +39,6 @@
>>
>> #define SMRAM_CAPABILITIES (EFI_MEMORY_WB | EFI_MEMORY_UC)
>>
>> -#define MEMORY_CACHE_ATTRIBUTES (EFI_MEMORY_UC | EFI_MEMORY_WC | \
>> - EFI_MEMORY_WT | EFI_MEMORY_WB | \
>> - EFI_MEMORY_WP | EFI_MEMORY_UCE)
>> -
>> -#define MEMORY_PAGE_ATTRIBUTES (EFI_MEMORY_XP | EFI_MEMORY_RP | EFI_MEMORY_RO)
>> -
>> //
>> // Function prototypes from produced protocols
>> //
>> @@ -1710,7 +1704,7 @@ SmmIplEntry (
>> CpuArch = NULL;
>> Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&CpuArch);
>> if (!EFI_ERROR (Status)) {
>> - MemDesc.Attributes &= ~(MEMORY_CACHE_ATTRIBUTES | MEMORY_PAGE_ATTRIBUTES);
>> + MemDesc.Attributes &= ~(EFI_CACHE_ATTRIBUTE_MASK | EFI_MEMORY_ATTRIBUTE_MASK);
>> MemDesc.Attributes |= EFI_MEMORY_WB;
>> Status = gDS->SetMemorySpaceAttributes (
>> mSmramCacheBase,
>> @@ -1727,7 +1721,7 @@ SmmIplEntry (
>> &MemDesc
>> );
>> DEBUG ((DEBUG_INFO, "SMRAM attributes: %016lx\n", MemDesc.Attributes));
>> - ASSERT ((MemDesc.Attributes & MEMORY_PAGE_ATTRIBUTES) == 0);
>> + ASSERT ((MemDesc.Attributes & EFI_MEMORY_ATTRIBUTE_MASK) == 0);
>> );
>> }
>> //
>>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#62436): https://edk2.groups.io/g/devel/message/62436
Mute This Topic: https://groups.io/mt/75267365/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list