qxl: allowing the command rings to be not empty when spice worker is stopped RHBZ #728984

same as 8927cfbba2, but for qxl_check_state, that was
triggered by qxl_pre_load (which calls qxl_hard_reset, which calls qxl_soft_reset),
and caused the migration target to crash.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Yonit Halperin 2011-08-09 16:12:40 +03:00 committed by Gerd Hoffmann
parent b9c6cbff76
commit be48e99512
1 changed files with 3 additions and 5 deletions

View File

@ -821,17 +821,15 @@ static void qxl_check_state(PCIQXLDevice *d)
{ {
QXLRam *ram = d->ram; QXLRam *ram = d->ram;
assert(SPICE_RING_IS_EMPTY(&ram->cmd_ring)); assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cmd_ring));
assert(SPICE_RING_IS_EMPTY(&ram->cursor_ring)); assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cursor_ring));
} }
static void qxl_reset_state(PCIQXLDevice *d) static void qxl_reset_state(PCIQXLDevice *d)
{ {
QXLRam *ram = d->ram;
QXLRom *rom = d->rom; QXLRom *rom = d->rom;
assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cmd_ring)); qxl_check_state(d);
assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cursor_ring));
d->shadow_rom.update_id = cpu_to_le32(0); d->shadow_rom.update_id = cpu_to_le32(0);
*rom = d->shadow_rom; *rom = d->shadow_rom;
qxl_rom_set_dirty(d); qxl_rom_set_dirty(d);