From: Caleb Schlossin Date: Mon, 5 Jan 2026 16:01:36 +0000 (-0600) Subject: hw/ppc: pnv_core.c add vmstate support X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=abcc2aaa8fb3d286612e2653da46b0e286ebbf77;p=thirdparty%2Fqemu.git hw/ppc: pnv_core.c add vmstate support - Add vmstate support PnvCore and PnvQuad capturing scratch registers and special wakeup registers Signed-off-by: Angelo Jaramillo Reviewed-by: Glenn Miles Reviewed-by: Aditya Gupta Reviewed-by: Chalapathi V Signed-off-by: Caleb Schlossin Link: https://lore.kernel.org/qemu-devel/20260105160138.3242709-6-calebs@linux.ibm.com Signed-off-by: Harsh Prateek Bora --- diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 59a9eee597..8939515c2c 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -31,6 +31,7 @@ #include "hw/ppc/xics.h" #include "hw/core/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), + 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), + 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[] = {