This reordering makes the vmstate_virtio_net available for use by future
virtio-net SaveVMHandlers hooks that will need to be placed before
virtio_net_device_realize.
Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com>
---
hw/net/virtio-net.c | 90 ++++++++++++++++++++++-----------------------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 221252e00a..93029104b3 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -3746,6 +3746,51 @@ static bool failover_hide_primary_device(DeviceListener *listener,
return qatomic_read(&n->failover_primary_hidden);
}
+static int virtio_net_pre_save(void *opaque)
+{
+ VirtIONet *n = opaque;
+
+ /* At this point, backend must be stopped, otherwise
+ * it might keep writing to memory. */
+ assert(!n->vhost_started);
+
+ return 0;
+}
+
+static bool primary_unplug_pending(void *opaque)
+{
+ DeviceState *dev = opaque;
+ DeviceState *primary;
+ VirtIODevice *vdev = VIRTIO_DEVICE(dev);
+ VirtIONet *n = VIRTIO_NET(vdev);
+
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_STANDBY)) {
+ return false;
+ }
+ primary = failover_find_primary_device(n);
+ return primary ? primary->pending_deleted_event : false;
+}
+
+static bool dev_unplug_pending(void *opaque)
+{
+ DeviceState *dev = opaque;
+ VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
+
+ return vdc->primary_unplug_pending(dev);
+}
+
+static const VMStateDescription vmstate_virtio_net = {
+ .name = "virtio-net",
+ .minimum_version_id = VIRTIO_NET_VM_VERSION,
+ .version_id = VIRTIO_NET_VM_VERSION,
+ .fields = (const VMStateField[]) {
+ VMSTATE_VIRTIO_DEVICE,
+ VMSTATE_END_OF_LIST()
+ },
+ .pre_save = virtio_net_pre_save,
+ .dev_unplug_pending = dev_unplug_pending,
+};
+
static void virtio_net_device_realize(DeviceState *dev, Error **errp)
{
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
@@ -4016,51 +4061,6 @@ static void virtio_net_instance_init(Object *obj)
ebpf_rss_init(&n->ebpf_rss);
}
-static int virtio_net_pre_save(void *opaque)
-{
- VirtIONet *n = opaque;
-
- /* At this point, backend must be stopped, otherwise
- * it might keep writing to memory. */
- assert(!n->vhost_started);
-
- return 0;
-}
-
-static bool primary_unplug_pending(void *opaque)
-{
- DeviceState *dev = opaque;
- DeviceState *primary;
- VirtIODevice *vdev = VIRTIO_DEVICE(dev);
- VirtIONet *n = VIRTIO_NET(vdev);
-
- if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_STANDBY)) {
- return false;
- }
- primary = failover_find_primary_device(n);
- return primary ? primary->pending_deleted_event : false;
-}
-
-static bool dev_unplug_pending(void *opaque)
-{
- DeviceState *dev = opaque;
- VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
-
- return vdc->primary_unplug_pending(dev);
-}
-
-static const VMStateDescription vmstate_virtio_net = {
- .name = "virtio-net",
- .minimum_version_id = VIRTIO_NET_VM_VERSION,
- .version_id = VIRTIO_NET_VM_VERSION,
- .fields = (const VMStateField[]) {
- VMSTATE_VIRTIO_DEVICE,
- VMSTATE_END_OF_LIST()
- },
- .pre_save = virtio_net_pre_save,
- .dev_unplug_pending = dev_unplug_pending,
-};
-
static const Property virtio_net_properties[] = {
DEFINE_PROP_BIT64("csum", VirtIONet, host_features,
VIRTIO_NET_F_CSUM, true),
--
2.47.1