Hi Oleksiy, On 06/30/20 23:11, Oleksiy Yakovlev wrote: > Hi Laszlo. > > I think WP should be included also. Spec says that WP "typically used as a > cacheability attribute today". > > Do you want me to submit just additional patch for CpuDxe.h, or resubmit the > whole series adding this inclusion of WP to EFI_MEMORY_CACHETYPE_MASK in > CpuDxe.h?
I'd suggest posting a v3 patch set, with 4 patches in total: - v4 1/4: equals v3 1/3 - v4 2/4: equals v3 2/3 - v4 3/4: new patch (add WP to EFI_MEMORY_CACHETYPE_MASK) - v4 4/4: v3 3/3, updated The reason for my suggestion is that, once you add EFI_MEMORY_WP to EFI_MEMORY_CACHETYPE_MASK, the present patch will no longer apply verbatim (it will have to be rebased). Namely, the hunk that removes the EFI_MEMORY_CACHETYPE_MASK #define needs to be updated for EFI_MEMORY_WP. When posting v4, please pick up the feedback tags you received during the v3 review. (The small update for the final patch in the series does not invalidate my R-b.) Thank you! Laszlo > -----Original Message----- > From: Laszlo Ersek [mailto:ler...@redhat.com] > Sent: Wednesday, June 24, 2020 5:42 AM > To: Oleksiy Yakovlev; devel@edk2.groups.io > Cc: liming....@intel.com; michael.d.kin...@intel.com; dandan...@intel.com; > ray...@intel.com; rahul1.ku...@intel.com; Felix Polyudov; Eric Dong > Subject: Re: [PATCH V2 3/3] UefiCpuPkg: Add New Memory Attributes > > On 06/23/20 23:55, 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 <oleks...@ami.com> >> --- >> UefiCpuPkg/CpuDxe/CpuDxe.c | 11 ++++------- >> UefiCpuPkg/CpuDxe/CpuDxe.h | 12 ------------ >> UefiCpuPkg/CpuDxe/CpuPageTable.c | 6 +++--- >> UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c | 2 +- >> 4 files changed, 8 insertions(+), 23 deletions(-) >> >> diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.c b/UefiCpuPkg/CpuDxe/CpuDxe.c >> index a571fc3..52cc26e 100644 >> --- a/UefiCpuPkg/CpuDxe/CpuDxe.c >> +++ b/UefiCpuPkg/CpuDxe/CpuDxe.c >> @@ -10,9 +10,6 @@ >> #include "CpuMp.h" >> #include "CpuPageTable.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) >> - >> // >> // Global Variables >> // >> @@ -417,8 +414,8 @@ CpuSetMemoryAttributes ( >> return EFI_SUCCESS; >> } >> >> - CacheAttributes = Attributes & CACHE_ATTRIBUTE_MASK; >> - MemoryAttributes = Attributes & MEMORY_ATTRIBUTE_MASK; >> + CacheAttributes = Attributes & EFI_CACHE_ATTRIBUTE_MASK; >> + MemoryAttributes = Attributes & EFI_MEMORY_ATTRIBUTE_MASK; >> >> if (Attributes != (CacheAttributes | MemoryAttributes)) { >> return EFI_INVALID_PARAMETER; > > OK. > >> @@ -677,7 +674,7 @@ SetGcdMemorySpaceAttributes ( >> gDS->SetMemorySpaceAttributes ( >> RegionStart, >> RegionLength, >> - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) >> | (MemorySpaceMap[Index].Capabilities & Attributes) >> + (MemorySpaceMap[Index].Attributes & ~EFI_CACHE_ATTRIBUTE_MASK) | >> (MemorySpaceMap[Index].Capabilities & Attributes) >> ); >> } >> >> @@ -754,7 +751,7 @@ RefreshMemoryAttributesFromMtrr ( >> gDS->SetMemorySpaceAttributes ( >> MemorySpaceMap[Index].BaseAddress, >> MemorySpaceMap[Index].Length, >> - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | >> + (MemorySpaceMap[Index].Attributes & ~EFI_CACHE_ATTRIBUTE_MASK) | >> (MemorySpaceMap[Index].Capabilities & DefaultAttributes) >> ); >> } >> diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.h b/UefiCpuPkg/CpuDxe/CpuDxe.h >> index 9299eaa..9771ec8 100644 >> --- a/UefiCpuPkg/CpuDxe/CpuDxe.h >> +++ b/UefiCpuPkg/CpuDxe/CpuDxe.h >> @@ -39,18 +39,6 @@ >> #include <Guid/IdleLoopEvent.h> >> #include <Guid/VectorHandoffTable.h> >> >> -#define EFI_MEMORY_CACHETYPE_MASK (EFI_MEMORY_UC | \ >> - EFI_MEMORY_WC | \ >> - EFI_MEMORY_WT | \ >> - EFI_MEMORY_WB | \ >> - EFI_MEMORY_UCE \ >> - ) >> - >> -#define EFI_MEMORY_PAGETYPE_MASK (EFI_MEMORY_RP | \ >> - EFI_MEMORY_XP | \ >> - EFI_MEMORY_RO \ >> - ) >> - >> #define HEAP_GUARD_NONSTOP_MODE \ >> ((PcdGet8 (PcdHeapGuardPropertyMask) & (BIT6|BIT4|BIT1|BIT0)) > >> BIT6) >> > > (1) These changes have an additional effect. EFI_MEMORY_CACHETYPE_MASK > does not include EFI_MEMORY_WP, but EFI_CACHE_ATTRIBUTE_MASK does. > > (1a) If that change is intentional, then this patch can remain as it is, > but we need an extra patch prepended (i.e., inserted between v2 patches > #2 and #3), for adding EFI_MEMORY_WP to EFI_MEMORY_CACHETYPE_MASK first. > > (1b) If the EFI_MEMORY_WP change is not intended (i.e., it is an > oversight in this patch), then in every spot where we replace > EFI_MEMORY_CACHETYPE_MASK with EFI_CACHE_ATTRIBUTE_MASK, we need to > account for EFI_MEMORY_WP separately. > > ... After reading up on EFI_MEMORY_WP in the UEFI spec, I think it's > (1a) -- meaning that, this patch is correct, in itself. But, we should > still not hide the EFI_MEMORY_WP bugfix, for EFI_MEMORY_CACHETYPE_MASK, > in this patch. > > So please insert a new patch just before this one, that does nothing > other than include EFI_MEMORY_WP in EFI_MEMORY_CACHETYPE_MASK. > > The rest of the patch looks OK to me. Therefore, for this patch (in itself): > > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > > Eric, Ray, Rahul: correct me if I'm wrong, please. > > Thanks, > Laszlo > >> diff --git a/UefiCpuPkg/CpuDxe/CpuPageTable.c >> b/UefiCpuPkg/CpuDxe/CpuPageTable.c >> index 0a02cb3..06ee1b8 100644 >> --- a/UefiCpuPkg/CpuDxe/CpuPageTable.c >> +++ b/UefiCpuPkg/CpuDxe/CpuPageTable.c >> @@ -717,7 +717,7 @@ ConvertMemoryPageAttributes ( >> return RETURN_INVALID_PARAMETER; >> } >> >> - if ((Attributes & ~(EFI_MEMORY_RP | EFI_MEMORY_RO | EFI_MEMORY_XP)) != 0) >> { >> + if ((Attributes & ~EFI_MEMORY_ATTRIBUTE_MASK) != 0) { >> DEBUG ((DEBUG_ERROR, "Attributes(0x%lx) has unsupported bit\n", >> Attributes)); >> return EFI_UNSUPPORTED; >> } >> @@ -1018,9 +1018,9 @@ RefreshGcdMemoryAttributesFromPaging ( >> >> Length = MIN (PageLength, MemorySpaceLength); >> if (Attributes != (MemorySpaceMap[Index].Attributes & >> - EFI_MEMORY_PAGETYPE_MASK)) { >> + EFI_MEMORY_ATTRIBUTE_MASK)) { >> NewAttributes = (MemorySpaceMap[Index].Attributes & >> - ~EFI_MEMORY_PAGETYPE_MASK) | Attributes; >> + ~EFI_MEMORY_ATTRIBUTE_MASK) | Attributes; >> Status = gDS->SetMemorySpaceAttributes ( >> BaseAddress, >> Length, >> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c >> b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c >> index 9c5a92a..ebfc46a 100644 >> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c >> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c >> @@ -435,7 +435,7 @@ ConvertMemoryPageAttributes ( >> EFI_PHYSICAL_ADDRESS MaximumSupportMemAddress; >> >> ASSERT (Attributes != 0); >> - ASSERT ((Attributes & ~(EFI_MEMORY_RP | EFI_MEMORY_RO | EFI_MEMORY_XP)) >> == 0); >> + ASSERT ((Attributes & ~EFI_MEMORY_ATTRIBUTE_MASK) == 0); >> >> ASSERT ((BaseAddress & (SIZE_4KB - 1)) == 0); >> ASSERT ((Length & (SIZE_4KB - 1)) == 0); >> > > > Please consider the environment before printing this email. > > The information contained in this message may be confidential and proprietary > to American Megatrends (AMI). This communication is intended to be read only > by the individual or entity to whom it is addressed or by their designee. If > the reader of this message is not the intended recipient, you are on notice > that any distribution of this message, in any form, is strictly prohibited. > Please promptly notify the sender by reply e-mail or by telephone at > 770-246-8600, and then delete or destroy all copies of the transmission. > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61971): https://edk2.groups.io/g/devel/message/61971 Mute This Topic: https://groups.io/mt/75070223/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-