Use it instead of hard-ecoding it on ich9 for GPE.

Signed-off-by: Juan Quintela <quint...@redhat.com>
---
 hw/acpi/ich9.c              | 11 ++---------
 include/migration/vmstate.h | 10 ++++++++++
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index 407ae89..f4801d1 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -129,15 +129,8 @@ static int ich9_pm_post_load(void *opaque, int version_id)
 }

 #define VMSTATE_GPE_ARRAY(_field, _state)                            \
- {                                                                   \
-     .name       = (stringify(_field)),                              \
-     .version_id = 0,                                                \
-     .num        = ICH9_PMIO_GPE0_LEN,                               \
-     .info       = &vmstate_info_uint8,                              \
-     .size       = sizeof(uint8_t),                                  \
-     .flags      = VMS_ARRAY | VMS_POINTER,                          \
-     .offset     = vmstate_offset_pointer(_state, _field, uint8_t),  \
- }
+    VMSTATE_VARRAY(_field, _state, ICH9_PMIO_GPE0_LEN, NULL,         \
+                   vmstate_info_uint8, uint8)

 const VMStateDescription vmstate_ich9_pm = {
     .name = "ich9_pm",
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index 8602536..d0115e6 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -230,6 +230,16 @@ extern const VMStateInfo vmstate_info_bitmap;
     .offset       = vmstate_offset_array(_state, _field, _type, _num),\
 }

+#define VMSTATE_VARRAY(_field, _state, _num, _test, _info, _type) {   \
+    .name         = (stringify(_field)),                              \
+    .field_exists = (_test),                                          \
+    .num          = (_num),                                           \
+    .info         = &(_info),                                         \
+    .size         = sizeof(_type),                                    \
+    .flags        = VMS_ARRAY | VMS_POINTER,                          \
+    .offset       = vmstate_offset_pointer(_state, _field, _type),\
+}
+
 #define VMSTATE_SUB_ARRAY(_field, _state, _start, _num, _info, _type) { \
     .name       = (stringify(_field)),                               \
     .num        = (_num),                                            \
-- 
1.9.0


Reply via email to