[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 53/55] virtio-gpu: Use migrate_add_blocker for vir
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 53/55] virtio-gpu: Use migrate_add_blocker for virgl migration blocking |
Date: |
Tue, 19 Jul 2016 20:55:47 +0300 |
From: "Dr. David Alan Gilbert" <address@hidden>
virgl conditionally registers a vmstate as unmigratable when virgl
is enabled; instead use the migrate_add_blocker mechanism.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Reviewed-by: Gerd Hoffmann <address@hidden>
---
include/hw/virtio/virtio-gpu.h | 2 ++
hw/display/virtio-gpu.c | 19 +++++++++++++------
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h
index 325354f..e4f424a 100644
--- a/include/hw/virtio/virtio-gpu.h
+++ b/include/hw/virtio/virtio-gpu.h
@@ -118,6 +118,8 @@ typedef struct VirtIOGPU {
uint32_t req_3d;
uint32_t bytes_3d;
} stats;
+
+ Error *migration_blocker;
} VirtIOGPU;
extern const GraphicHwOps virtio_gpu_ops;
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 929c3c8..cc87eb7 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -19,6 +19,7 @@
#include "hw/virtio/virtio.h"
#include "hw/virtio/virtio-gpu.h"
#include "hw/virtio/virtio-bus.h"
+#include "migration/migration.h"
#include "qemu/log.h"
#include "qapi/error.h"
@@ -986,11 +987,6 @@ static const VMStateDescription
vmstate_virtio_gpu_scanouts = {
},
};
-static const VMStateDescription vmstate_virtio_gpu_unmigratable = {
- .name = "virtio-gpu-with-virgl",
- .unmigratable = 1,
-};
-
static void virtio_gpu_save(QEMUFile *f, void *opaque)
{
VirtIOGPU *g = opaque;
@@ -1169,13 +1165,23 @@ static void virtio_gpu_device_realize(DeviceState
*qdev, Error **errp)
}
if (virtio_gpu_virgl_enabled(g->conf)) {
- vmstate_register(qdev, -1, &vmstate_virtio_gpu_unmigratable, g);
+ error_setg(&g->migration_blocker, "virgl is not yet migratable");
+ migrate_add_blocker(g->migration_blocker);
} else {
register_savevm(qdev, "virtio-gpu", -1, VIRTIO_GPU_VM_VERSION,
virtio_gpu_save, virtio_gpu_load, g);
}
}
+static void virtio_gpu_device_unrealize(DeviceState *qdev, Error **errp)
+{
+ VirtIOGPU *g = VIRTIO_GPU(qdev);
+ if (g->migration_blocker) {
+ migrate_del_blocker(g->migration_blocker);
+ error_free(g->migration_blocker);
+ }
+}
+
static void virtio_gpu_instance_init(Object *obj)
{
}
@@ -1237,6 +1243,7 @@ static void virtio_gpu_class_init(ObjectClass *klass,
void *data)
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
vdc->realize = virtio_gpu_device_realize;
+ vdc->unrealize = virtio_gpu_device_unrealize;
vdc->get_config = virtio_gpu_get_config;
vdc->set_config = virtio_gpu_set_config;
vdc->get_features = virtio_gpu_get_features;
--
MST
- [Qemu-devel] [PULL v2 43/55] virtio-serial: Remove old migration version support, (continued)
- [Qemu-devel] [PULL v2 43/55] virtio-serial: Remove old migration version support, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 44/55] virtio: Migration helper function and macro, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 45/55] virtio-scsi: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 47/55] virtio-rng: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 46/55] virtio-blk: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 48/55] virtio-balloon: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 49/55] virtio-net: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 50/55] virtio-serial: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 51/55] 9pfs: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 52/55] virtio-input: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 53/55] virtio-gpu: Use migrate_add_blocker for virgl migration blocking,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 54/55] virtio-gpu: Wrap in vmstate, Michael S. Tsirkin, 2016/07/19
- [Qemu-devel] [PULL v2 55/55] virtio: Update migration docs, Michael S. Tsirkin, 2016/07/19
- Re: [Qemu-devel] [PULL v2 00/55] pc, pci, virtio: new features, cleanups, fixes, Peter Maydell, 2016/07/20