[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-7.1 1/4] hw/ppc: use qdev to register logical DRC vmstates
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH for-7.1 1/4] hw/ppc: use qdev to register logical DRC vmstates |
Date: |
Tue, 22 Mar 2022 15:38:51 -0300 |
Today we use vmstate_register() to register the vmstate of logical DRCs
during drc_realize(), following it up with a similar
vmstate_unregister() during drc_unrealize().
We can instead use qdev to init the vmstate of the device via the
dc->vmsd interface. This will spare us of both vmstate calls and make
the code a little more maintainable.
Since we're using spapr_drc_index() as instance_id in
vmstate_register(), we'll need to use qdev_set_legacy_instance_id() to set
the same instance_id the DRC vmstates are now used to have.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/ppc/spapr_drc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 76bc5d42a0..a5ef64d2a2 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -536,8 +536,7 @@ static void drc_realize(DeviceState *d, Error **errp)
trace_spapr_drc_realize_child(spapr_drc_index(drc), child_name);
object_property_add_alias(root_container, link_name,
drc->owner, child_name);
- vmstate_register(VMSTATE_IF(drc), spapr_drc_index(drc), &vmstate_spapr_drc,
- drc);
+ qdev_set_legacy_instance_id(d, spapr_drc_index(drc), 1);
trace_spapr_drc_realize_complete(spapr_drc_index(drc));
}
@@ -548,7 +547,6 @@ static void drc_unrealize(DeviceState *d)
Object *root_container;
trace_spapr_drc_unrealize(spapr_drc_index(drc));
- vmstate_unregister(VMSTATE_IF(drc), &vmstate_spapr_drc, drc);
root_container = container_get(object_get_root(), DRC_CONTAINER_PATH);
object_property_del(root_container, name);
}
@@ -673,8 +671,11 @@ static void spapr_drc_physical_class_init(ObjectClass *k,
void *data)
static void spapr_drc_logical_class_init(ObjectClass *k, void *data)
{
+ DeviceClass *dk = DEVICE_CLASS(k);
SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_CLASS(k);
+ dk->vmsd = &vmstate_spapr_drc;
+
drck->dr_entity_sense = logical_entity_sense;
drck->isolate = drc_isolate_logical;
drck->unisolate = drc_unisolate_logical;
--
2.35.1