On 02/14/16 06:44, Yao, Jiewen wrote: > HI > Thanks to discuss this properties table issue. > The purpose of this patch is to *add* UEFI2.6 memory attributes table. This > patch does not handle any UEFI2.5 properties table. > If we want to change EDKII code for properties table, I suggest we separate > it from this patch. > > Is there any comment for adding UEFI2.6 memory attributes table?
Not from my side, thanks. > For UEFI2.5 properties table, let me summarize. Currently, we have several > options: > 0) Keep it as is. Current setting is PcdPropertiesTableEnable TRUE in > MdeModulePkg.DEC. > 1) Update PcdPropertiesTableEnable to FALSE in XXXPlatform.DSC file. > (Platform choice. It can be static PCD or dynamic PCD.) > 2) Update PcdPropertiesTableEnable to FALSE in MdeModulePkg.DEC file. > (Disable Default. BIOS will not publish this table by default. If platform > wants this table, it can set PCD to true.) > 3) Remove PcdPropertiesTableEnable, and remove PropertiesTable support code > in DxeCore. (PropertiesTable support is removed.) > > Personally, I do not suggest we choose 3), because this table is still > defined in UEFI specification. We can remove it after UEFI spec removes it > later. > I do not have strong opinion for other options. I agree the implementation should follow the spec -- at least offer the feature as long as the spec defines it. My vote would be (2). Thanks Laszlo > > Thank you > Yao Jiewen > > -----Original Message----- > From: Ard Biesheuvel [mailto:[email protected]] > Sent: Monday, February 01, 2016 2:28 PM > To: Laszlo Ersek > Cc: Yao, Jiewen; [email protected]; Gao, Liming > Subject: Re: [edk2] [patch 0/7] Add UEFI2.6 MemoryAttributesTable support. > > On 31 January 2016 at 21:36, Laszlo Ersek <[email protected]> wrote: >> On 01/30/16 11:25, Ard Biesheuvel wrote: >>> On 30 January 2016 at 04:17, Yao, Jiewen <[email protected]> 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. >> > > No, we should remove it. > >> (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.) >> > > It will result in a problematic memmap for older Linux kernels but also for > less recent versions of Windows 8, for instance. And the only OS version that > actually consumes the properties table is Windows 10, which will we updated > in the future to use the MemoryAttributesTable instead. > > >>>> -----Original Message----- >>>> From: Laszlo Ersek [mailto:[email protected]] >>>> Sent: Saturday, January 30, 2016 10:24 AM >>>> To: Yao, Jiewen >>>> Cc: [email protected]; 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:[email protected]] >>>>> Sent: Saturday, January 30, 2016 1:13 AM >>>>> To: Yao, Jiewen >>>>> Cc: [email protected]; 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" <[email protected]> >>>>>> Cc: "Gao, Liming" <[email protected]> >>>>>> >>>>>> 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 >>>> [email protected] >>>> https://lists.01.org/mailman/listinfo/edk2-devel >> _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

