[edk2-devel] [Patch V5 01/14] OvmfPkg:Remove code that apply AddressEncMask to non-leaf entry
Ni, Ray
ray.ni at intel.com
Thu Jun 8 10:33:15 UTC 2023
Reviewed-by: Ray Ni <ray.ni at intel.com>
> -----Original Message-----
> From: Tan, Dun <dun.tan at intel.com>
> Sent: Thursday, June 8, 2023 10:27 AM
> To: devel at edk2.groups.io
> Cc: Ard Biesheuvel <ardb+tianocore at kernel.org>; Yao, Jiewen
> <jiewen.yao at intel.com>; Justen, Jordan L <jordan.l.justen at intel.com>; Gerd
> Hoffmann <kraxel at redhat.com>; Tom Lendacky
> <thomas.lendacky at amd.com>; Ni, Ray <ray.ni at intel.com>
> Subject: [Patch V5 01/14] OvmfPkg:Remove code that apply AddressEncMask
> to non-leaf entry
>
> Remove code that apply AddressEncMask to non-leaf entry when split
> smm page table by MemEncryptSevLib. In FvbServicesSmm driver, it
> calls MemEncryptSevClearMmioPageEncMask to clear AddressEncMask
> bit in page table for a specific range. In AMD SEV feature, this
> AddressEncMask bit in page table is used to indicate if the memory
> is guest private memory or shared memory. But all memory used by
> page table are treated as encrypted regardless of encryption bit.
> So remove the EncMask bit for smm non-leaf page table entry
> doesn't impact AMD SEV feature.
> If page split happens in the AddressEncMask bit clear process,
> there will be some new non-leaf entries with AddressEncMask
> applied in smm page table. When ReadyToLock, code in PiSmmCpuDxe
> module will use CpuPageTableLib to modify smm page table. So
> remove code to apply AddressEncMask for new non-leaf entries
> since CpuPageTableLib doesn't consume the EncMask PCD.
>
> Signed-off-by: Dun Tan <dun.tan at intel.com>
> Cc: Ard Biesheuvel <ardb+tianocore at kernel.org>
> Cc: Jiewen Yao <jiewen.yao at intel.com>
> Cc: Jordan Justen <jordan.l.justen at intel.com>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> Cc: Tom Lendacky <thomas.lendacky at amd.com>
> Cc: Ray Ni <ray.ni at intel.com>
> ---
> OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 6
> +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git
> a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c
> b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c
> index cf2441b551..aba2e8c081 100644
> --- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c
> +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c
> @@ -233,7 +233,7 @@ Split2MPageTo4K (
> // Fill in 2M page entry.
> //
> *PageEntry2M = ((UINT64)(UINTN)PageTableEntry1 |
> - IA32_PG_P | IA32_PG_RW | AddressEncMask);
> + IA32_PG_P | IA32_PG_RW);
> }
>
> /**
> @@ -352,7 +352,7 @@ SetPageTablePoolReadOnly (
> PhysicalAddress += LevelSize[Level - 1];
> }
>
> - PageTable[Index] = (UINT64)(UINTN)NewPageTable | AddressEncMask |
> + PageTable[Index] = (UINT64)(UINTN)NewPageTable |
> IA32_PG_P | IA32_PG_RW;
> PageTable = NewPageTable;
> }
> @@ -440,7 +440,7 @@ Split1GPageTo2M (
> // Fill in 1G page entry.
> //
> *PageEntry1G = ((UINT64)(UINTN)PageDirectoryEntry |
> - IA32_PG_P | IA32_PG_RW | AddressEncMask);
> + IA32_PG_P | IA32_PG_RW);
>
> PhysicalAddress2M = PhysicalAddress;
> for (IndexOfPageDirectoryEntries = 0;
> --
> 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105931): https://edk2.groups.io/g/devel/message/105931
Mute This Topic: https://groups.io/mt/99399225/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3943202/1813853/130120423/xyzzy [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list