Thanks a lot! I'll update my patch set later. Thanks, Dun
-----Original Message----- From: Tom Lendacky <thomas.lenda...@amd.com> Sent: Thursday, April 20, 2023 11:45 PM To: devel@edk2.groups.io; Tan, Dun <dun....@intel.com>; Ni, Ray <ray...@intel.com> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to create and update smm page table On 4/20/23 04:07, duntan via groups.io wrote: > Hi Tom, > > Thanks for confirming. Is 1G page table supported in your test? If supported, > there is a reason can explain why this difference exists. > In current upstream master branch: > Smm code always create 2M page table for [0, 4G] range(in Gen4GPageTable ) to > reuse code. In QemuFlashBeforeProbe() of > OvmfPkg\QemuFlashFvbServicesRuntimeDxe\QemuFlashSmm.c, the range to clear > EncMask is 2M aligned. No page split happens and smm page table memory is all > RW before ReadyToLock. But in my opinion, the PF also may happen if the range > is not 2M aligned. > > In my code branch: > If 1G page table is supported, 1G page table is created to map [0, 4G]. Then > page split (1G-->2M) happens in QemuFlashBeforeProbe() and the new memory for > page table is marked as RO before ReadyToLock. That's why the PF happens in > InitPaging(). > > To solve this issue, I think the assumption that smm page table is always RW > before ReadyToLock should be dropped. I have added 2 new patches to clear WP > before modifying smm page table. Could you please help test again? > https://github.com/td36/edk2/tree/SmmPageTable_V2 Hi Dun, Yes, this branch successfully boots an SEV guest with SMM enabled. Thanks! Tom > > Thanks, > Dun > > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > Lendacky, Thomas via groups.io > Sent: Wednesday, April 19, 2023 9:19 PM > To: devel@edk2.groups.io; Tan, Dun <dun....@intel.com>; Ni, Ray > <ray...@intel.com> > Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to create > and update smm page table > > On 4/19/23 00:39, duntan via groups.io wrote: >> Hi Tom, >> >> This PF happened because that CR0.WP is set and DxeMemEncryptSevLib sets a >> part of smm page table as RO before ReadyToLock while CpuSmm driver assumes >> the smm page table is not marked as RO before ReadyToLock. >> The code flow to set smm page table to RO is >> QemuFlashBeforeProbe()-->MemEncryptSevClearMmioPageEncMask()-->SetMemoryEncDec()-->EnablePageTableProtection(). >> New page table memory allocated by DxeMemEncryptSevLib is marked as RO in >> EnablePageTableProtection(). However, In PiSmmCpuDxeSmm InitPaging() >> function, the RO page table marked by DxeMemEncryptSevLib may be modified >> again and InitPaging() function doesn't clear CR0.WP in advance since it has >> the assumption that smm page table memory is always RW before >> SetPageTableAttributes(), which causes this PF. >> So Could you please help test the SEV enabled smm code without my patch set? >> I think this issue may also happen in current edk2 code. > > Upstream master branch boots without issue. > > SmmInstallProtocolInterface: 47B7FA8C-F4BD-4AF6-8200-333086F0D2C8 0 > GetUefiMemoryMap Patch page table start ... > Patch page table done! > MemoryAttributesTable: > Version - 0x00000001 > NumberOfEntries - 0x00000035 > DescriptorSize - 0x00000030 > Entry (0x3FF01028) > ... > > > Thanks, > Tom > >> >> Thanks, >> Dun >> -----Original Message----- >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of >> Lendacky, Thomas via groups.io >> Sent: Wednesday, April 19, 2023 5:06 AM >> To: Tan, Dun <dun....@intel.com>; devel@edk2.groups.io; Ni, Ray >> <ray...@intel.com> >> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >> create and update smm page table >> >> On 4/18/23 04:57, Tan, Dun wrote: >>> Hi Tom, >>> >>> I added a new patch in my code branch. This new patch removes the code that >>> may apply AddressEncMask to smm page table non-leaf entries when splitting >>> page table. >>> Could you please help test if this code branch works? >>> https://github.com/td36/edk2/tree/SmmPageTable_V2 >> >> It got further, but it still crashed: >> >> SmmInstallProtocolInterface: 47B7FA8C-F4BD-4AF6-8200-333086F0D2C8 0 >> GetUefiMemoryMap Patch page table start ... >> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!! >> ExceptionData - 0000000000000003 I:0 R:0 U:0 W:1 P:1 PK:0 SS:0 SGX:0 RIP - >> 000000003FFC7744, CS - 0000000000000038, RFLAGS - 0000000000010082 RAX - >> 00000000FFFFFF83, RCX - 000000003FFB5C78, RDX - 0000000000000000 RBX - >> 000000003FC01000, RSP - 000000003FFB4790, RBP - 000000003FFB47B0 RSI - >> 000000003FC01000, RDI - 0000000000000000 >> R8 - 000000003FFB4840, R9 - 0000000000000002, R10 - 0000000000000000 >> R11 - 0000000000000000, R12 - 000000003FFB5C78, R13 - >> 000000003FFB4840 >> R14 - 0000000080000000, R15 - 0000000000000000 >> DS - 0000000000000020, ES - 0000000000000020, FS - 0000000000000020 >> GS - 0000000000000020, SS - 0000000000000020 >> CR0 - 0000000080010033, CR2 - 000000003FC01000, CR3 - >> 000000003FF81000 >> CR4 - 0000000000000668, CR8 - 0000000000000000 >> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - >> 0000000000000000 >> DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400 GDTR >> - 000000003FFAC000 000000000000004F, LDTR - 0000000000000000 >> IDTR - 000000003FFAF000 00000000000001FF, TR - 0000000000000040 >> FXSAVE_STATE - 000000003FFB0C60 >> SMM exception at access (0x3FC01000) >> It is invoked from the instruction before IP(0x3FFC7744) in module >> (/root/kernels/ovmf-dun-build-Ia32X64/Build/Ovmf3264/DEBUG_GCC5/X64/U >> e fiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSm >> m/DEBUG/PiSmmCpuDxeSmm.dll) >> >> >> Thanks, >> Tom >> >>> >>> Thanks, >>> Dun >>> >>> -----Original Message----- >>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of >>> Lendacky, Thomas via groups.io >>> Sent: Saturday, April 15, 2023 3:05 AM >>> To: devel@edk2.groups.io; Ni, Ray <ray...@intel.com>; Tan, Dun >>> <dun....@intel.com> >>> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >>> create and update smm page table >>> >>> On 4/14/23 12:19, Ni, Ray via groups.io wrote: >>>> tom, >>>> if the c bit is not required for non leaf page table entries, why the >>>> trunk code sets the c bit for all entities including nonleaf ones? >>> >>> Because it's effectively the correct thing to do, even though it doesn't >>> matter. >>> >>>> >>>> i went back to read again the smm issue you met. you said the c bit is set >>>> for non leaf entries that caused a deference issue. But the pagetablelib >>>> code doesn't set c bit to non leaf entries. then who sets the c bit? >>> >>> I guess that's the main question, how did that get set? I haven't had the >>> time to fully examine and follow the codepath in the pagetable library to >>> figure out why it was set. Maybe as part of a page split? >>> >>> Thanks, >>> Tom >>> >>>> >>>> thanks, >>>> ray >>>> >>>> thanks, >>>> ray >>>> ________________________________ >>>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of >>>> Lendacky, Thomas via groups.io <thomas.lendacky=amd....@groups.io> >>>> Sent: Friday, April 14, 2023 9:43:52 PM >>>> To: Ni, Ray <ray...@intel.com>; Tan, Dun <dun....@intel.com>; >>>> devel@edk2.groups.io <devel@edk2.groups.io> >>>> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >>>> create and update smm page table >>>> >>>> On 4/14/23 00:07, Ni, Ray wrote: >>>>> >>>>> >>>>>> -----Original Message----- >>>>>> From: Tom Lendacky <thomas.lenda...@amd.com> >>>>>> Sent: Friday, April 14, 2023 12:19 AM >>>>>> To: Tan, Dun <dun....@intel.com>; devel@edk2.groups.io >>>>>> Cc: Ni, Ray <ray...@intel.com> >>>>>> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >>>>>> create and update smm page table >>>>>> >>>>>> On 4/13/23 04:14, Tan, Dun wrote: >>>>>>> Hi Tom, >>>>>>> >>>>>>> Thank you for your help with testing. >>>>>>> For the build failure, it's because that the CpuPageTableLib >>>>>>> instance is >>>>>> added into OvmfPkg DSC in the last pacth ' OvmfPkg: Add >>>>>> CpuPageTableLib required by PiSmmCpuDxe'. I have moved this patch >>>>>> to the head of the patch set. >>>>>>> >>>>>>> For the boot failure, I think it's because that the encrypt mask >>>>>>> was not >>>>>> applied to the memory used by page table in page table non-leaf entry. >>>>>> Initially I thought the encrypt mask would only be applied to the >>>>>> leaf entry in AMD SEV feature. So I treated the encryption >>>>>> process as non 1:1 mapping, which only applies the encrypt mask >>>>>> to leaf entry. I'm also curious why the DxeIpl patch set works >>>>>> good. All the page table non-leaf entries are also not encrypted in the >>>>>> DxeIpl page table related patch set. >>>>>> >>>>>> Right, and that works for SEV. All non-leaf pagetable entries are >>>>>> treated as encrypted regardless of the encryption bit. Since the >>>>>> tables were built being mapped encrypted, the pagetable walk >>>>>> works when the non-leaf entries don't have the encryption bit >>>>>> set. In this case, though, the encryption bit is present in the >>>>>> non-leaf entry and that is the reason why there are issues. >>>>> >>>>> Can you point us which doc here >>>>> (https://www.amd.com/en/developer/sev.html) >>>>> says the page table is encrypted regardless the KEY_ID bits value? >>>>> How can the encryption engine know if a chunk of memory belongs to page >>>>> table? >>>> >>>> It doesn't. For an SEV guest, when the hardware walks the >>>> pagetables, it will always treat the memory accesses as encrypted >>>> (see section >>>> 15.34.5 of the AMD APM Vol 2 at >>>> https://www.amd.com/system/files/TechDocs/24593.pdf). >>>> >>>> But, because the initial pagetables that are built to map >>>> everything as encrypted/private to start with (see >>>> OvmfPkg/ResetVector/Ia32/PageTables64.asm), only changing to shared >>>> when specifically requested, any memory allocated and used will be >>>> encrypted. >>>> Thus, when new pagetables are allocated/created in the >>>> CpuPageTableLib library, they will be encrypted and so everything >>>> works. And those new pagetables will map everything encrypted by >>>> default, except for the GHCB pages. If they were mapped shared when >>>> they were created, then the pagetable walk would fail. >>>> >>>>> >>>>> My understanding to SEV is any physical address field in guest >>>>> page table should have the KEY_ID bits set if the physical pages >>>>> are private to guest. Only some pages for GMCB don't have KEY_ID bits set >>>>> as those are shared between guest and host. >>>> >>>> Right, the encryption bit in the leaf entry of the pagetables will >>>> determine the encryption mode. >>>> >>>>> >>>>> I thought Dun's patch works because all guest memory is marked as >>>>> shared because the KEY_ID bits in all entries are not set. Only >>>>> some pages that're used by GMCB have the KEY_ID bits set. >>>> >>>> Just the opposite, the CpuPageTableLib library marks everything >>>> encrypted and only clears the encryption bit for the GHCB pages. >>>> >>>> In MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c, the >>>> CreateIdentityMappingPageTables() function retrieves the encryption >>>> bit and saves it in AddressEncMask. AddressEncMask is then applied >>>> to the mapping attribute used when calling >>>> CreateOrUpdatePageTable() to build the initial pagetables. >>>> >>>>> >>>>> >>>>>> >>>>>> Here is some debug after setting PagingEntry at line 436 of >>>>>> UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c: >>>>>> >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF81000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF80000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF83000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF81000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF80000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF83000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF81000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = 3FF80000 >>>>>> *** DEBUG: PageTableLibMapInLevel:437 - PagingEntry = >>>>>> 800003FC01000 >>>>> >>>>> Are you testing the SME or SEV? >>>>> My understanding is with SME, only the highest C bit should be set >>>>> indicating the physical page is encrypted. >>>> >>>> I am testing SEV. There is only a single bit to indicate whether a >>>> page is encrypted. The guest ASID is used to determine what key is >>>> used to decrypt the page. From a pagetable leaf entry, SME and SEV >>>> are equivalent, the encryption bit determines how the memory will be >>>> accessed. >>>> >>>> SME and SEV differ in how they deal with instruction fetches and >>>> pagetable walks, with SME obeying the encryption bit and SEV always >>>> performing the accesses as encrypted accesses for security. >>>> >>>> Thanks, >>>> Tom >>>> >>>>> >>>>> >>>>> >>>>>> !!!! X64 Exception Type - 0D(#GP - General Protection) CPU Apic >>>>>> ID >>>>>> - >>>>>> 00000000 !!!! >>>>>> >>>>>> 0x800003FC01000 isn't mapped and so it fails - I'm not exactly >>>>>> sure how the #PF turns into a #GP, though, maybe because the >>>>>> virtual address isn't canonical that point. >>>>>> >>>>>> Thanks, >>>>>> Tom >>>>>> >>>>>>> >>>>>>> I'll added another patch in my code branch to fix this issue later. >>>>>>> In the new >>>>>> commit, from the perspective of CpuPageTableLib, the whole memory >>>>>> can be divided into 3 categories: memory used by page table, >>>>>> guest private memory and guest shared memory. CpuPageTableLib >>>>>> will always apply the encrypt mask to memory used by page table, >>>>>> which means all the non-leaf page table entries are encrypted. >>>>>> For guest private memory, this case can be treated as non-1:1 >>>>>> mapping. We can apply the encrypt mask by setting the input >>>>>> parameter of >>>>>> PageTableMap() API like " Attribute.Uint64 = LinearAddress | >>>>>> AddressEncMask". For guest shared memory, this case can be treated as >>>>>> normal 1:1 mapping. >>>>>> I'll let you know once the new patch is ready. >>>>>>> >>>>>>> Thanks, >>>>>>> Dun >>>>>>> -----Original Message----- >>>>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of >>>>>> Lendacky, Thomas via groups.io >>>>>>> Sent: Thursday, April 13, 2023 3:26 AM >>>>>>> To: devel@edk2.groups.io; Tan, Dun <dun....@intel.com> >>>>>>> Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >>>>>>> create >>>>>> and update smm page table >>>>>>> >>>>>>> On 4/12/23 05:17, duntan via groups.io wrote: >>>>>>>> Hi Tom, >>>>>>>> >>>>>>>> This patch set is to change PiSmmCpuDxeSmm code to use >>>>>> CpuPageTableLib to create and update SMM page table. The Pcd >>>>>> PcdPteMemoryEncryptionAddressOrMask is also used in >>>>>> PiSmmCpuDxeSmm code and the whole range covered by page table is >>>>>> mapped encrypted, which is different from the situation in DxeIpl module. >>>>>>>> So could you also help do a test to make sure the AMD SEV >>>>>>>> feature still >>>>>> works good in SMM with this patch set? >>>>>>>> Here is the code branch in my fork repo: >>>>>>>> https://github.com/td36/edk2/commits/SmmPageTable_V2 >>>>>>> >>>>>>> Hi Dun, >>>>>>> >>>>>>> I tested at the final commit of the branch and encountered a #GP >>>>>>> with an >>>>>> SEV guest. It looks like the CpuPageTableLibrary doesn't take the >>>>>> encryption bit into account. For example: >>>>>>> >>>>>>> Line 436 of UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c >>>>>>> PagingEntry = (IA32_PAGING_ENTRY >>>>>> *)(UINTN)IA32_PNLE_PAGE_TABLE_BASE_ADDRESS (&ParentPagingEntry- >>>>>>> Pnle); >>>>>>> >>>>>>> This will get an address with the encryption bit set and then >>>>>>> try to >>>>>> reference it. When I clear the encryption bit, the code proceeds >>>>>> a bit further, but then encounters a #GP in a different location. >>>>>>> >>>>>>> So it appears that the CpuPageTableLibrary doesn't deal with the >>>>>> encryption bit properly. >>>>>>> >>>>>>> Also, going through a build/test of each individual patch had mixed >>>>>>> results. >>>>>>> >>>>>>> - With the second patch in the series applied, I get a build >>>>>>> error: >>>>>>> >>>>>>> /root/kernels/ovmf-dun-build-X64/OvmfPkg/OvmfPkgX64.dsc(...): >>>>>> error 4000: Instance of library class [CpuPageTableLib] is not >>>>>> found >>>>>>> in [/root/kernels/ovmf-dun-build- >>>>>> X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf] [X64] >>>>>>> consumed by module >>>>>>> [/root/kernels/ovmf-dun-build- >>>>>> X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf] >>>>>>> >>>>>>> that isn't resolved until the final patch. >>>>>>> >>>>>>> Thanks, >>>>>>> Tom >>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Dun >>>>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of >>>>>> duntan >>>>>>>> Sent: Wednesday, April 12, 2023 4:54 PM >>>>>>>> To: devel@edk2.groups.io >>>>>>>> Subject: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to >>>>>>>> create and update smm page table >>>>>>>> >>>>>>>> In V2 patch set: >>>>>>>> 1.In 'Refinement to code about updating smm page table', use >>>>>>>> QuickSort() >>>>>> in BaseLib instead or PerformQuickSort() in BaseSortLib. >>>>>>>> 2.Remove the patch to add BaseSortLib in DSC file. >>>>>>>> 3.Add a new patch to add CpuPageTableLib in UefiCpuPkg.dsc. >>>>>>>> 4.Add a temp patch to add CpuPageTableLib in OvmfPkg dsc files >>>>>>>> for test(A previous patch I sent before '[Patch V2 4/8] OvmfPkg: >>>>>>>> Add CpuPageTableLib required by DxeIpl in DSC file' contains >>>>>>>> all the changes in this patch) >>>>>>>> >>>>>>>> Dun Tan (8): >>>>>>>> OvmfPkg: Add CpuPageTableLib required by PiSmmCpuDxe >>>>>>>> UefiPayloadPkg: Add CpuPageTableLib required by PiSmmCpuDxe >>>>>>>> UefiCpuPkg: Use CpuPageTableLib to convert SMM paging >>>>>>>> attribute. >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm: Avoid setting non-present >>>>>>>> range to >>>>>> RO/NX >>>>>>>> UefiCpuPkg: Extern mSmmShadowStackSize in PiSmmCpuDxeSmm.h >>>>>>>> UefiCpuPkg: Refinement to current smm page table generation >>>>>>>> code >>>>>>>> UefiCpuPkg: Refinement to code about updating smm page table >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm: Remove unnecessary function >>>>>>>> >>>>>>>> OvmfPkg/CloudHv/CloudHvX64.dsc | 2 +- >>>>>>>> OvmfPkg/OvmfPkgIa32.dsc | 3 ++- >>>>>>>> OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- >>>>>>>> OvmfPkg/OvmfPkgX64.dsc | 2 +- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 5 +++-- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmFuncsArch.c | 3 +-- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c | 2 +- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 132 >>>>>>>> ----------------- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> --------------------- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 8 >>>>>>>> ++++++- >>>>>> - >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 97 >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++------------------------------------- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c | >>>>>>>> 629 >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++++++++++++++++++++++++++++++++++++++++++----------------------- >>>>>> ++++++++++++++++++++++++++++++++++++++++++- >>>>>> ++++++++++++++++++++++++++++++++++++++++++- >>>>>> ++++++++++++++++++++++++++++++++++++++++++- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> ----------------------------------------------- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 348 >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >>>>>> +++++++++-------------------------------------------------------- >>>>>> +++++++++- >>>>>> +++++++++- >>>>>> +++++++++- >>>>>> +++++++++-------------------- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> -------------------------------------------------- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c | 229 >>>>>> ++++++++++++++++++++++++++++++----------------------------------- >>>>>> ++++++++++++++++++++++++++++++- >>>>>> ++++++++++++++++++++++++++++++- >>>>>> ++++++++++++++++++++++++++++++- >>>>>> ++++++++++++++++++++++++++++++-------- >>>>>> ----------------------------------------------------------------- >>>>>> - >>>>>> - >>>>>> - >>>>>> -------------------------- >>>>>> ----------------------------------------------------------- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c | 3 +-- >>>>>>>> UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c | 19 >>>>>>>> ++------- >>>>>> ---------- >>>>>>>> UefiPayloadPkg/UefiPayloadPkg.dsc | 2 +- >>>>>>>> 17 files changed, 510 insertions(+), 977 deletions(-) >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> >> >> >> >> >> >> >> >> >> >> > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#103328): https://edk2.groups.io/g/devel/message/103328 Mute This Topic: https://groups.io/mt/98215421/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-