Skip to contentSkip to conversation

virtio-net: Add load/save for status bits

RFC PATCH In review Alex Williamson 4 participants 4 messages Jan 7, 2009 – Jan 12, 2009 KVM

lore
Share & tools
lore
#0 lore raw

RFC PATCH 2/5 virtio-net: Add load/save for status bits

virtio-net: Add load/save for status bits

---

 hw/virtio-net.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
hw/virtio-net.c +8 -2
index bfb7510..77e3077 100644
@@ -16,6 +16,8 @@
 #include "qemu-timer.h"
 #include "virtio-net.h"
 
+#define VIRTIO_VM_VERSION	2
+
 typedef struct VirtIONet
 {
     VirtIODevice vdev;
@@ -307,13 +309,14 @@ static void virtio_net_save(QEMUFile *f, void *opaque)
 
     qemu_put_buffer(f, n->mac, 6);
     qemu_put_be32(f, n->tx_timer_active);
+    qemu_put_be16(f, n->status);
 }
 
 static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
 {
     VirtIONet *n = opaque;
 
-    if (version_id != 1)
+    if (version_id < 1 || version_id > VIRTIO_VM_VERSION)
         return -EINVAL;
 
     virtio_load(&n->vdev, f);
@@ -321,6 +324,9 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
     qemu_get_buffer(f, n->mac, 6);
     n->tx_timer_active = qemu_get_be32(f);
 
+    if (version_id >= 2)
+        n->status = qemu_get_be16(f);
+
     if (n->tx_timer_active) {
         qemu_mod_timer(n->tx_timer,
                        qemu_get_clock(vm_clock) + TX_TIMER_INTERVAL);
@@ -363,7 +369,7 @@ PCIDevice *virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn)
     n->tx_timer_active = 0;
     n->mergeable_rx_bufs = 0;
 
-    register_savevm("virtio-net", virtio_net_id++, 1,
+    register_savevm("virtio-net", virtio_net_id++, VIRTIO_VM_VERSION,
                     virtio_net_save, virtio_net_load, n);
 
     return (PCIDevice *)n;
#1 lore raw
Quoted 13 lines · Alex Williamson

virtio-net: Add load/save for status bits

---

 hw/virtio-net.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
hw/virtio-net.c +0 -0
index bfb7510..77e3077 100644

hw/virtio-net.c line 21

Quoted 6 lines
hw/virtio-net.c +2 -0
@@ -16,6 +16,8 @@
 #include "qemu-timer.h"
 #include "virtio-net.h"
 
+#define VIRTIO_VM_VERSION	2
+
 

virtio-net is now at 2 already because of the mergable buffers fix but this is definitely needed for Mark's set_link changes.

Regards,

Anthony Liguori

#2 lore raw

RE: [Qemu-devel] [PATCH 2/5][RFC] virtio-net: Add load/save for statusbits

In reply to Alex Williamson
Quoted 51 lines

-----Original Message-----
From:
[email protected] [mailto:[email protected] rg] On Behalf Of Alex Williamson
Sent: Wednesday, January 07, 2009 11:38 AM
To: kvm; qemu-devel
Cc: Mark McLoughlin
Subject: [Qemu-devel] [PATCH 2/5][RFC] virtio-net: Add load/save for statusbits

virtio-net: Add load/save for status bits

---

 hw/virtio-net.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
hw/virtio-net.c +4 -1
index bfb7510..77e3077 100644
@@ -16,6 +16,8 @@
 #include "qemu-timer.h"
 #include "virtio-net.h"
 
+#define VIRTIO_VM_VERSION	2
+
 typedef struct VirtIONet
 {
     VirtIODevice vdev;
@@ -307,13 +309,14 @@ static void virtio_net_save(QEMUFile 
 *f, void *opaque)
 
     qemu_put_buffer(f, n->mac, 6);
     qemu_put_be32(f, n->tx_timer_active);
+    qemu_put_be16(f, n->status);
 }
 
 static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
 {
     VirtIONet *n = opaque;
 
-    if (version_id != 1)
+    if (version_id < 1 || version_id > VIRTIO_VM_VERSION)
         return -EINVAL;
 
     virtio_load(&n->vdev, f);

hw/virtio-net.c static int virtio_net_load(QEMUFile *f, · line 330

Quoted 7 lines
hw/virtio-net.c +3 -0
@@ -321,6 +324,9 @@ static int virtio_net_load(QEMUFile *f, 
 void *opaque, int version_id)
     qemu_get_buffer(f, n->mac, 6);
     n->tx_timer_active = qemu_get_be32(f);
 
+    if (version_id >= 2)
+        n->status = qemu_get_be16(f);
+

Hello,

I know this is a late reply, but just thought I would ask:

You have the magic number 2 here, and change it to three in patch 5/5, should this not be VIRTIO_VM_VERSION? Or a comment about where the number comes from.

Thanks
Chris

Quoted 18 lines
hw/virtio-net.c +0 -0
     if (n->tx_timer_active) {
         qemu_mod_timer(n->tx_timer,
                        qemu_get_clock(vm_clock) + TX_TIMER_INTERVAL);
hw/virtio-net.c +1 -1
@@ -363,7 +369,7 @@ PCIDevice *virtio_net_init(PCIBus *bus, 
 NICInfo *nd, int devfn)
     n->tx_timer_active = 0;
     n->mergeable_rx_bufs = 0;
 
-    register_savevm("virtio-net", virtio_net_id++, 1,
+    register_savevm("virtio-net", virtio_net_id++, VIRTIO_VM_VERSION,
                     virtio_net_save, virtio_net_load, n);
 
     return (PCIDevice *)n;
#3 lore raw

Re: [Qemu-devel] [PATCH 2/5][RFC] virtio-net: Add load/save for statusbits

Quoted 58 lines · Chris
Quoted 47 lines

-----Original Message-----
From: [email protected] [mailto:[email protected] rg] On Behalf Of Alex Williamson
Sent: Wednesday, January 07, 2009 11:38 AM
To: kvm; qemu-devel
Cc: Mark McLoughlin
Subject: [Qemu-devel] [PATCH 2/5][RFC] virtio-net: Add load/save for statusbits

virtio-net: Add load/save for status bits

---

 hw/virtio-net.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
hw/virtio-net.c +4 -1
index bfb7510..77e3077 100644
@@ -16,6 +16,8 @@
 #include "qemu-timer.h"
 #include "virtio-net.h"
 
+#define VIRTIO_VM_VERSION	2
+
 typedef struct VirtIONet
 {
     VirtIODevice vdev;
@@ -307,13 +309,14 @@ static void virtio_net_save(QEMUFile 
 *f, void *opaque)
 
     qemu_put_buffer(f, n->mac, 6);
     qemu_put_be32(f, n->tx_timer_active);
+    qemu_put_be16(f, n->status);
 }
 
 static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
 {
     VirtIONet *n = opaque;
 
-    if (version_id != 1)
+    if (version_id < 1 || version_id > VIRTIO_VM_VERSION)
         return -EINVAL;
 
     virtio_load(&n->vdev, f);

hw/virtio-net.c static int virtio_net_load(QEMUFile *f, · line 331

Quoted 8 lines
hw/virtio-net.c +3 -0
@@ -321,6 +324,9 @@ static int virtio_net_load(QEMUFile *f, 
 void *opaque, int version_id)
     qemu_get_buffer(f, n->mac, 6);
     n->tx_timer_active = qemu_get_be32(f);
 
+    if (version_id >= 2)
+        n->status = qemu_get_be16(f);
+
 

Hello,

Quoted 7 lines

I know this is a late reply, but just thought I would ask:

You have the magic number 2 here, and change it to three in patch 5/5, should this not be VIRTIO_VM_VERSION? Or a comment about where the number comes from.

It is the version of the stated saved for virtio net device. The driver does not know anything about it. The version number syncs between the source & destination qemu. The numbering started with '1' and we increase it each time we save a new field.

Quoted 4 lines

Thanks
Chris