From: Caleb Schlossin <[email protected]> - Add vmstate support PnvCore and PnvQuad capturing scratch registers and special wakeup registers
Signed-off-by: Angelo Jaramillo <[email protected]> Reviewed-by: Glenn Miles <[email protected]> Reviewed-by: Aditya Gupta <[email protected]> Reviewed-by: Chalapathi V <[email protected]> Signed-off-by: Caleb Schlossin <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] Signed-off-by: Harsh Prateek Bora <[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 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[] = { -- 2.52.0
