On 12/16/2025 9:13 AM, Caleb Schlossin wrote:
- Add vmstate support PnvCore and PnvQuad capturing scratch
registers and special wakeup registers

Signed-off-by: Angelo Jaramillo <[email protected]>
Signed-off-by: Caleb Schlossin <[email protected]>
---
  hw/ppc/pnv_core.c | 22 ++++++++++++++++++++++
  1 file changed, 22 insertions(+)

diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index fb2dfc7ba2..03b64f0013 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -31,6 +31,7 @@
  #include "hw/ppc/xics.h"
  #include "hw/qdev-properties.h"
  #include "helper_regs.h"
+#include "migration/vmstate.h"
static const char *pnv_core_cpu_typename(PnvCore *pc)
  {
@@ -478,6 +479,15 @@ static void pnv_core_power11_class_init(ObjectClass *oc, 
const void *data)
      pnv_core_power10_class_init(oc, data);
  }
+static const VMStateDescription pnv_core_vmstate = {
+    .name = TYPE_PNV_CORE,
+    .version_id = 1,
+    .fields = (const VMStateField[]) {
+        VMSTATE_UINT64_ARRAY(scratch, PnvCore, 8),

This should probably be a constant or dynamically calculated.

MAK

+        VMSTATE_END_OF_LIST(),
+    },
+};
+
  static void pnv_core_class_init(ObjectClass *oc, const void *data)
  {
      DeviceClass *dc = DEVICE_CLASS(oc);
@@ -486,6 +496,7 @@ static void pnv_core_class_init(ObjectClass *oc, const void 
*data)
      dc->unrealize = pnv_core_unrealize;
      device_class_set_props(dc, pnv_core_properties);
      dc->user_creatable = false;
+    dc->vmsd = &pnv_core_vmstate;
  }
#define DEFINE_PNV_CORE_TYPE(family, cpu_model) \
@@ -737,12 +748,23 @@ static void pnv_quad_power11_class_init(ObjectClass *oc, 
const void *data)
      pnv_quad_power10_class_init(oc, data);
  }
+static const VMStateDescription pnv_quad_vmstate = {
+    .name = TYPE_PNV_QUAD,
+    .version_id = 1,
+    .fields = (const VMStateField[]) {
+        VMSTATE_BOOL(special_wakeup_done, PnvQuad),
+        VMSTATE_BOOL_ARRAY(special_wakeup, PnvQuad, 4),

Same as above...

MAK

+        VMSTATE_END_OF_LIST(),
+    },
+};
+
  static void pnv_quad_class_init(ObjectClass *oc, const void *data)
  {
      DeviceClass *dc = DEVICE_CLASS(oc);
device_class_set_props(dc, pnv_quad_properties);
      dc->user_creatable = false;
+    dc->vmsd = &pnv_quad_vmstate;
  }
static const TypeInfo pnv_quad_infos[] = {

Reply via email to