Current gCpu->SetMemoryAttributes does not support getting memory attributes, and has no clear description about clearing memory attributes.
I noticed we introduced SmmMemoryAttribute(MdeModulePkg\Include\Protocol\SmmMemoryAttribute.h) protocol for heap guard feature in SMM environment. Seemingly, we also need introduce MemoryAttribute protocol for DXE? Thanks, Star -----Original Message----- From: Zeng, Star Sent: Tuesday, April 3, 2018 8:59 AM To: Kinney, Michael D <[email protected]>; Heyi Guo <[email protected]>; [email protected] Cc: Yi Li <[email protected]>; Renhao Liang <[email protected]>; Dong, Eric <[email protected]>; Gao, Liming <[email protected]>; Wang, Jian J <[email protected]>; Ni, Ruiyu <[email protected]>; Zeng, Star <[email protected]> Subject: RE: [PATCH 1/1] MdeModulePkg/Gcd: Fix bug of attribute conversion Mike, Agree the problem. We need support only RUNTIME attribute. We need support only cache attributes. We need support only page attributes. We need support RUNTIME + cache + page attributes. Do we need support the 0 Attributes case to clear page attributes? There was discussion about the 0 Attributes case at https://lists.01.org/pipermail/edk2-devel/2018-March/023315.html. It came to the question that should the 0 Attributes case be handled by SetMemoryAttributes() to clear the page attributes? Thanks, Star -----Original Message----- From: Kinney, Michael D Sent: Tuesday, April 3, 2018 5:43 AM To: Zeng, Star <[email protected]>; Heyi Guo <[email protected]>; [email protected]; Kinney, Michael D <[email protected]> Cc: Yi Li <[email protected]>; Renhao Liang <[email protected]>; Dong, Eric <[email protected]>; Gao, Liming <[email protected]>; Wang, Jian J <[email protected]>; Ni, Ruiyu <[email protected]> Subject: RE: [PATCH 1/1] MdeModulePkg/Gcd: Fix bug of attribute conversion Star, This commit breaks Vlv2TbltDevicePkg. On this platform, there are 2 calls to gDS->SetMemorySpaceAttributes() for an MMIO range to set only the EFI_MEMORY_RUNTIME bit. With this commit, ConverToCpuArchAttributes()returns 0, and 0 is passed to gCpu->SetMemoryAttributes()that returns EFI_INVALID_PARAMETER on Vlv2TbltDevicePkg. Before this commit, ConverToCpuArchAttributes() returns INVALID_CPU_ARCH_ATTRIBUTES which causes the call to gCpu->SetMemoryAttributes()to be skipped so no error is generated. I think the right fix is to skip the call to gCpu->SetMemoryAttributes() if CpuArchAttributes is 0 so a call that only sets the RUNTIME attribute can be supported along with call the set both the RUNTIME bit and other cache related bits. I will send a patch soon with the proposed fix. Mike > -----Original Message----- > From: Zeng, Star > Sent: Sunday, April 1, 2018 10:59 PM > To: Heyi Guo <[email protected]>; edk2- [email protected] > Cc: Yi Li <[email protected]>; Renhao Liang > <[email protected]>; Dong, Eric <[email protected]>; Kinney, > Michael D <[email protected]>; Gao, Liming > <[email protected]>; Wang, Jian J <[email protected]>; Ni, > Ruiyu <[email protected]>; Zeng, Star <[email protected]> > Subject: RE: [PATCH 1/1] MdeModulePkg/Gcd: Fix bug of attribute > conversion > > Pushed at 5b91bf82c67b586b9588cbe4bbffa1588f6b5926. > > Thanks, > Star > -----Original Message----- > From: Heyi Guo [mailto:[email protected]] > Sent: Thursday, March 29, 2018 4:20 PM > To: [email protected] > Cc: Heyi Guo <[email protected]>; Yi Li <[email protected]>; > Renhao Liang <[email protected]>; Zeng, Star > <[email protected]>; Dong, Eric <[email protected]>; Kinney, > Michael D <[email protected]>; Gao, Liming > <[email protected]>; Wang, Jian J <[email protected]>; Ni, > Ruiyu <[email protected]> > Subject: [PATCH 1/1] MdeModulePkg/Gcd: Fix bug of attribute conversion > > For gDS->SetMemorySpaceAttributes(), when user passes a combined > memory attribute including CPU arch attribute and other attributes, > like EFI_MEMORY_RUNTIME, > ConverToCpuArchAttributes() will return INVALID_CPU_ARCH_ATTRIBUTES > and skip setting page/cache attribute for the specified memory space. > > We don't see any reason to forbid combining CPU arch attributes and > non-CPU-arch attributes when calling gDS- > >SetMemorySpaceAttributes(), so we remove the check code > in ConverToCpuArchAttributes(); the remaining code is enough to grab > the interested bits for > Cpu->SetMemoryAttributes(). > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Heyi Guo <[email protected]> > Signed-off-by: Yi Li <[email protected]> > Signed-off-by: Renhao Liang <[email protected]> > Cc: Star Zeng <[email protected]> > Cc: Eric Dong <[email protected]> > Cc: Michael D Kinney <[email protected]> > Cc: Liming Gao <[email protected]> > Cc: Jian J Wang <[email protected]> > Cc: Ruiyu Ni <[email protected]> > --- > MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c > b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c index > 77f4adb4bc01..907245a3f512 100644 > --- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c > +++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c > @@ -673,11 +673,6 @@ ConverToCpuArchAttributes ( { > UINT64 CpuArchAttributes; > > - if ((Attributes & ~(EXCLUSIVE_MEMORY_ATTRIBUTES | > - NONEXCLUSIVE_MEMORY_ATTRIBUTES)) > != 0) { > - return INVALID_CPU_ARCH_ATTRIBUTES; > - } > - > CpuArchAttributes = Attributes & > NONEXCLUSIVE_MEMORY_ATTRIBUTES; > > if ( (Attributes & EFI_MEMORY_UC) == EFI_MEMORY_UC) { > -- > 2.7.4 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

