]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c
OvmfPkg/VmgExitLib: Set the SwScratch valid bit for MMIO events
[mirror_edk2.git] / OvmfPkg / Library / VmgExitLib / VmgExitVcHandler.c
index e5f14035b06f0c988cd4c548d89f1589e120fe1b..9bf9d160179c1f036a404a7e56e1c70f2024f3c3 100644 (file)
@@ -664,6 +664,7 @@ MmioExit (
     CopyMem (Ghcb->SharedBuffer, &InstructionData->Ext.RegData, Bytes);\r
 \r
     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer;\r
+    VmgSetOffsetValid (Ghcb, GhcbSwScratch);\r
     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2);\r
     if (Status != 0) {\r
       return Status;\r
@@ -693,6 +694,7 @@ MmioExit (
     CopyMem (Ghcb->SharedBuffer, InstructionData->Immediate, Bytes);\r
 \r
     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer;\r
+    VmgSetOffsetValid (Ghcb, GhcbSwScratch);\r
     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2);\r
     if (Status != 0) {\r
       return Status;\r
@@ -725,6 +727,7 @@ MmioExit (
     ExitInfo2 = Bytes;\r
 \r
     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer;\r
+    VmgSetOffsetValid (Ghcb, GhcbSwScratch);\r
     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2);\r
     if (Status != 0) {\r
       return Status;\r
@@ -755,6 +758,7 @@ MmioExit (
     ExitInfo2 = Bytes;\r
 \r
     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer;\r
+    VmgSetOffsetValid (Ghcb, GhcbSwScratch);\r
     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2);\r
     if (Status != 0) {\r
       return Status;\r
@@ -780,6 +784,7 @@ MmioExit (
     ExitInfo2 = Bytes;\r
 \r
     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer;\r
+    VmgSetOffsetValid (Ghcb, GhcbSwScratch);\r
     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2);\r
     if (Status != 0) {\r
       return Status;\r