From fbdd6e4664e41eb299a797f1ab615d81b1bd958b Mon Sep 17 00:00:00 2001 From: hanliyang Date: Mon, 17 Jan 2022 01:19:21 -0500 Subject: [PATCH 7/9] OvmfPkg/BaseMemcryptSevLib: Correct the calculation of page range that notified to hypervisor Correct the calculation of page range that notified to hypervisor. Signed-off-by: hanliyang --- .../Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c index 42e3b03f..69ada871 100644 --- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c @@ -999,9 +999,13 @@ SetMemoryEncDec ( // Notify Hypervisor on C-bit status // if (CBitChanged) { + UINTN StartPfn = OrigPhysicalAddress >> EFI_PAGE_SHIFT; + UINTN EndPfn = (OrigPhysicalAddress + OrigLength + + ((1 << EFI_PAGE_SHIFT) - 1)) >> EFI_PAGE_SHIFT; + Status = SetMemoryEncDecHypercall3 ( OrigPhysicalAddress, - EFI_SIZE_TO_PAGES (OrigLength), + (EndPfn - StartPfn), (Mode == SetCBit) ? TRUE : FALSE ); } -- 2.25.1