diff mbox

qxl: upon reset, if spice worker is stopped, the command rings can be not empty

Message ID 1310460718-19184-1-git-send-email-yhalperi@redhat.com
State New
Headers show

Commit Message

Yonit Halperin July 12, 2011, 8:51 a.m. UTC
Spice worker does no longer process commands when it is stopped.
Otherwise, it might crash during migration when attempting to process
commands while the guest is not completely loaded.

Cc: Alon Levy <alevy@redhat.com>
---
 hw/qxl.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Gerd Hoffmann July 14, 2011, 8:31 a.m. UTC | #1
On 07/12/11 10:51, Yonit Halperin wrote:
> Spice worker does no longer process commands when it is stopped.
> Otherwise, it might crash during migration when attempting to process
> commands while the guest is not completely loaded.
>
> Cc: Alon Levy<alevy@redhat.com>
> ---
>   hw/qxl.c |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/qxl.c b/hw/qxl.c
> index 0b9a4c7..a6fb7f0 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -656,8 +656,8 @@ static void qxl_reset_state(PCIQXLDevice *d)
>       QXLRam *ram = d->ram;
>       QXLRom *rom = d->rom;
>
> -    assert(SPICE_RING_IS_EMPTY(&ram->cmd_ring));
> -    assert(SPICE_RING_IS_EMPTY(&ram->cursor_ring));
> +    assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cmd_ring));
> +    assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cursor_ring));
>       d->shadow_rom.update_id = cpu_to_le32(0);
>       *rom = d->shadow_rom;
>       qxl_rom_set_dirty(d);

Patch added to spice patch queue.

thanks,
   Gerd
diff mbox

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index 0b9a4c7..a6fb7f0 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -656,8 +656,8 @@  static void qxl_reset_state(PCIQXLDevice *d)
     QXLRam *ram = d->ram;
     QXLRom *rom = d->rom;
 
-    assert(SPICE_RING_IS_EMPTY(&ram->cmd_ring));
-    assert(SPICE_RING_IS_EMPTY(&ram->cursor_ring));
+    assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cmd_ring));
+    assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cursor_ring));
     d->shadow_rom.update_id = cpu_to_le32(0);
     *rom = d->shadow_rom;
     qxl_rom_set_dirty(d);