On 01/30/16 11:25, Ard Biesheuvel wrote: > On 30 January 2016 at 04:17, Yao, Jiewen <jiewen....@intel.com> wrote: >> Thanks for the clarification. I think you are right. >> >> I said "This table is used to retire old PropertiesTable", because UEFI2.6 >> does not recommend using PropertiesTable to report RT information. >> The future BIOS/OS should always produce/consume MemoryAttributesTable as >> better solution. >> > > I strongly feel we should remove the original PropertiesTable. It > breaks backward compatibility, and was replaced by the > MemoryAttributesTable for a good reason. The OS side will not be > implemented in Linux (i.e., it will ignore the RO and XP attributes in > the standard UEFI memory map), and the only reason the PropertiesTable > was not removed entirely from the specification is because of business > interests of one of the participating OS vendors. > > I understand that we need to keep the underlying machinery to produce > either table. But we should remove the functionality that results in > each PE/COFF image to be split into several regions marked RO or XP in > the ordinary UEFI memory map.
We can mitigate this by setting PcdPropertiesTableEnable to FALSE in "ArmVirt.dsc.inc" as well. (Hmmm, I forget why SVN r18140 and r18566 don't already result in a problematic memmap for Linux... Probably due to your kernel commit 0ce3cc008ec0.) Would you like me to submit a patch for the dsc include file? Thanks Laszlo > Regards, > Ard. > > >> -----Original Message----- >> From: Laszlo Ersek [mailto:ler...@redhat.com] >> Sent: Saturday, January 30, 2016 10:24 AM >> To: Yao, Jiewen >> Cc: edk2-de...@ml01.01.org; Gao, Liming >> Subject: Re: [edk2] [patch 0/7] Add UEFI2.6 MemoryAttributesTable support. >> >> On 01/30/16 01:31, Yao, Jiewen wrote: >>> Comment below: >>> >>> -----Original Message----- >>> From: Laszlo Ersek [mailto:ler...@redhat.com] >>> Sent: Saturday, January 30, 2016 1:13 AM >>> To: Yao, Jiewen >>> Cc: edk2-de...@ml01.01.org; Gao, Liming >>> Subject: Re: [edk2] [patch 0/7] Add UEFI2.6 MemoryAttributesTable support. >>> >>> Hello Jiewen, >>> >>> On 01/29/16 13:12, jiewen yao wrote: >>>> This series patches add UEFI2.6 MemoryAttributesTable support. >>>> This table is used to retire old PropertiesTable. >>>> This is standalone table published by DxeCore, so there is no >>>> compatibility issue. >>>> >>>> The patch is validated with or without properties table. >>> >>> Do you mean, tested with PcdPropertiesTableEnable set to FALSE vs. TRUE? >>> [Jiewen] Yes, you are right. No matter PcdPropertiestableEnable set to >>> FALSE or TRUE, MemoryAttributesTable is always published. >>> That is one compatibility we want to maintain. >>> >>> >>> I skimmed the commit messages, and it looks like the properties table is >>> preserved, but now it serves only as foundation for the memory attributes >>> table. >>> [Jiewen] Yes, the DxeCore global variable - properties table is always >>> preserved. And the system UEFI configuration table for properties table is >>> controlled by PcdPropertiestableEnable. >>> No matter properties table or memory attributes table, we always need a >>> flag to record if RT image is 4K aligned or not, so I just choose the >>> original global variable. >>> >>> >>> In OVMF we set PcdPropertiesTableEnable to FALSE by default, but flip it >>> dynamically to TRUE in PlatformPei, if the user requests the feature on the >>> QEMU command line. This is being done for avoiding regressions with OSes >>> that don't know about the properties table, and its impact on the UEFI >>> memmap. >>> [Jiewen] That is good design. I believe most real platforms do similar >>> thing. >>> >>> >>> However, if the memory attributes table is safe for OSes that don't >>> know about it, I think we can eliminate the above "FALSE" default, and >>> dynamism, from OVMF, and just inherit the >>> PcdPropertiesTableEnable=TRUE setting from "MdeModulePkg.dec". >>> [Jiewen] I am sorry that I am not clear on your suggestion. What do you >>> mean "eliminate the above "FALSE" default, and dynamism, from OVMF"? >>> Do you mean you suggest to change PcdPropertiesTableEnable=FALSE as default >>> value in MdeModulePkg.dec file? >>> Or do you want to change OVMF.dsc file? >> >> Sorry, I should have educated myself on the memory attributes table first, >> in UEFI 2.6. I have now carefully read the EFI_MEMORY_ATTRIBUTES_TABLE >> section, and I've also noticed the new last paragraph in the >> EFI_PROPERTIES_TABLE section. >> >> What I was missing when I asked my question is that >> EFI_MEMORY_ATTRIBUTES_TABLE was an *additional* feature. >> >> Your cover letter said "This table is used to retire old PropertiesTable". >> So I thought, the OS-visible properties table would be completely removed >> from edk2, and the DXE core internals would only be reused for computing the >> new memory attributes table. In other words, I thought that the memory >> attributes table would *replace* the properties table, and the original >> PcdPropertiesTableEnable PCD would now control the presence of the memory >> attributes table instead. >> >> This is why I asked if we should change OVMF to remove its FALSE default for >> the PCD, alongside the possibility for the QEMU user to change the PCD >> dynamically, on the command line. Because, the memory attributes table would >> *always* be safe to install, so we should just stick, in OVMF, with the TRUE >> default for the PCD, from MdeModulePkg.dec. >> >> I do understand now that the memory attributes table is an additional >> feature. It will always be exposed to the OS. *Independently*, the >> properties table will continue to behave the same as before -- if the PCD is >> TRUE, then it will be installed; if the PCD is FALSE, then it won't. >> >> In the end, there's nothing to do under OvmfPkg/. We'll let the QEMU user >> control the properties table same as before (defaulting to FALSE), and >> orthogonally, the new memory attributes table will always be installed (with >> your patches in place), because it's safe. >> >> Thanks, and sorry about the confusion. >> Laszlo >> >>> >>> >>> >>> Does it sound reasonable to you? >>> >>> Thanks! >>> Laszlo >>> >>>> >>>> Contributed-under: TianoCore Contribution Agreement 1.0 >>>> Signed-off-by: "Yao, Jiewen" <jiewen....@intel.com> >>>> Cc: "Gao, Liming" <liming....@intel.com> >>>> >>>> jiewen yao (7): >>>> MdePkg: Add UEFI2.6 MemoryAttributes Table definition. >>>> MdePkg: Add UEFI2.6 MemoryAttributesTable GUID >>>> MdeModulePkg: Add MemoryAttributesTable generation. >>>> MdeModulePkg: Update PropertiesTable for MemoryAttributesTable. >>>> MdeModulePkg: Add CoreInitializeMemoryAttributesTable() to header >>>> file. >>>> MdePkg: Call CoreInitializeMemoryAttributesTable() in DXE Entrypoint. >>>> MdePkg: Update DxeCore INF for MemoryAttributesTable. >>>> >>>> MdeModulePkg/Core/Dxe/DxeMain.h | 11 +- >>>> MdeModulePkg/Core/Dxe/DxeMain.inf | 4 +- >>>> MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c | 3 +- >>>> MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c | 214 >>>> +++++++++++++++++++++ >>>> MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c | 100 +++++++++- >>>> MdePkg/Include/Guid/MemoryAttributesTable.h | 34 ++++ >>>> MdePkg/MdePkg.dec | 11 +- >>>> 7 files changed, 362 insertions(+), 15 deletions(-) create mode >>>> 100644 MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c >>>> create mode 100644 MdePkg/Include/Guid/MemoryAttributesTable.h >>>> >>> >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel