]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/CpuHotplugSmm: add Qemu Cpu Status helper
authorAnkur Arora <ankur.a.arora@oracle.com>
Fri, 12 Mar 2021 06:26:49 +0000 (22:26 -0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 16 Mar 2021 13:21:46 +0000 (13:21 +0000)
Add QemuCpuhpWriteCpuStatus() which will be used to update the QEMU
CPU status register. On error, it hangs in a similar fashion as
other helper functions.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Aaron Young <aaron.young@oracle.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3132
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20210312062656.2477515-4-ankur.a.arora@oracle.com>

OvmfPkg/CpuHotplugSmm/QemuCpuhp.c
OvmfPkg/CpuHotplugSmm/QemuCpuhp.h

index 8434dd446b96712d4b6aaafa239802a08affe3e0..dc86ab96777a6f984acaaedaab5124e6a5a43e75 100644 (file)
@@ -113,6 +113,28 @@ QemuCpuhpWriteCpuSelector (
   }\r
 }\r
 \r
+VOID\r
+QemuCpuhpWriteCpuStatus (\r
+  IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
+  IN UINT8                        CpuStatus\r
+  )\r
+{\r
+  EFI_STATUS Status;\r
+\r
+  Status = MmCpuIo->Io.Write (\r
+                         MmCpuIo,\r
+                         MM_IO_UINT8,\r
+                         ICH9_CPU_HOTPLUG_BASE + QEMU_CPUHP_R_CPU_STAT,\r
+                         1,\r
+                         &CpuStatus\r
+                         );\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((DEBUG_ERROR, "%a: %r\n", __FUNCTION__, Status));\r
+    ASSERT (FALSE);\r
+    CpuDeadLoop ();\r
+  }\r
+}\r
+\r
 VOID\r
 QemuCpuhpWriteCommand (\r
   IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
index 3e2c2192e1c01478e7f3c259871ae5473c82fd85..8bb3c66e9b446f119a7c823e80db5260a1f73487 100644 (file)
@@ -41,6 +41,12 @@ QemuCpuhpWriteCpuSelector (
   IN UINT32                       Selector\r
   );\r
 \r
+VOID\r
+QemuCpuhpWriteCpuStatus (\r
+  IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r
+  IN UINT8                        CpuStatus\r
+  );\r
+\r
 VOID\r
 QemuCpuhpWriteCommand (\r
   IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,\r