|
|
958e1b |
From 4997362f21fdf91a47dbcce2c8c27fcad673d21a Mon Sep 17 00:00:00 2001
|
|
|
958e1b |
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
958e1b |
Date: Fri, 5 Sep 2014 12:30:37 +0200
|
|
|
958e1b |
Subject: [PATCH 03/12] spice: stop server for qxl hard reset
|
|
|
958e1b |
|
|
|
958e1b |
Message-id: <1409920238-9070-4-git-send-email-kraxel@redhat.com>
|
|
|
958e1b |
Patchwork-id: 60876
|
|
|
958e1b |
O-Subject: [RHEL-7.1 qemu-kvm PATCH 3/4] spice: stop server for qxl hard reset
|
|
|
958e1b |
Bugzilla: 1054077
|
|
|
958e1b |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Dr. David Alan Gilbert (git) <dgilbert@redhat.com>
|
|
|
958e1b |
|
|
|
958e1b |
Hard reset can happen at any time. We should be able to put qxl into a
|
|
|
958e1b |
known-good state no matter what. Stop spice server thread for reset so
|
|
|
958e1b |
it can't be confused by fetching stale commands lingering around in the
|
|
|
958e1b |
rings while we reset is ongoing.
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
958e1b |
(cherry picked from commit 75c70e37bc4a6bdc394b4d1b163fe730abb82c72)
|
|
|
958e1b |
---
|
|
|
958e1b |
hw/display/qxl.c | 10 ++++++++++
|
|
|
958e1b |
1 file changed, 10 insertions(+)
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
958e1b |
---
|
|
|
958e1b |
hw/display/qxl.c | 10 ++++++++++
|
|
|
958e1b |
1 files changed, 10 insertions(+), 0 deletions(-)
|
|
|
958e1b |
|
|
|
958e1b |
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
|
|
|
958e1b |
index 4fe4f1b..6f8adc8 100644
|
|
|
958e1b |
--- a/hw/display/qxl.c
|
|
|
958e1b |
+++ b/hw/display/qxl.c
|
|
|
958e1b |
@@ -1146,8 +1146,14 @@ static void qxl_soft_reset(PCIQXLDevice *d)
|
|
|
958e1b |
|
|
|
958e1b |
static void qxl_hard_reset(PCIQXLDevice *d, int loadvm)
|
|
|
958e1b |
{
|
|
|
958e1b |
+ bool startstop = qemu_spice_display_is_running(&d->ssd);
|
|
|
958e1b |
+
|
|
|
958e1b |
trace_qxl_hard_reset(d->id, loadvm);
|
|
|
958e1b |
|
|
|
958e1b |
+ if (startstop) {
|
|
|
958e1b |
+ qemu_spice_display_stop();
|
|
|
958e1b |
+ }
|
|
|
958e1b |
+
|
|
|
958e1b |
qxl_spice_reset_cursor(d);
|
|
|
958e1b |
qxl_spice_reset_image_cache(d);
|
|
|
958e1b |
qxl_reset_surfaces(d);
|
|
|
958e1b |
@@ -1161,6 +1167,10 @@ static void qxl_hard_reset(PCIQXLDevice *d, int loadvm)
|
|
|
958e1b |
}
|
|
|
958e1b |
qemu_spice_create_host_memslot(&d->ssd);
|
|
|
958e1b |
qxl_soft_reset(d);
|
|
|
958e1b |
+
|
|
|
958e1b |
+ if (startstop) {
|
|
|
958e1b |
+ qemu_spice_display_start();
|
|
|
958e1b |
+ }
|
|
|
958e1b |
}
|
|
|
958e1b |
|
|
|
958e1b |
static void qxl_reset_handler(DeviceState *dev)
|
|
|
958e1b |
--
|
|
|
958e1b |
1.7.1
|
|
|
958e1b |
|