From fbdd6e4664e41eb299a797f1ab615d81b1bd958b Mon Sep 17 00:00:00 2001
From: hanliyang <hanliyang@hygon.cn>
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 <hanliyang@hygon.cn>
---
 .../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