From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqmWn-0001nS-Lx for qemu-devel@nongnu.org; Tue, 09 Aug 2011 09:39:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QqmWl-0001TY-3X for qemu-devel@nongnu.org; Tue, 09 Aug 2011 09:39:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48143) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqmWk-0001TF-Ri for qemu-devel@nongnu.org; Tue, 09 Aug 2011 09:39:27 -0400 Message-ID: <4E413307.9080406@redhat.com> Date: Tue, 09 Aug 2011 16:15:51 +0300 From: Arnon Gilboa MIME-Version: 1.0 References: <1312895560-5965-1-git-send-email-yhalperi@redhat.com> In-Reply-To: <1312895560-5965-1-git-send-email-yhalperi@redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Spice-devel] [PATCH] qxl: allowing the command rings to be not empty when spice worker is stopped RHBZ #728984 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Yonit Halperin Cc: spice-devel@lists.freedesktop.org, qemu-devel@nongnu.org Acked-by: Arnon Gilboa Yonit Halperin wrote: > same as 8927cfbba232e28304734f7afd463c1b84134031, 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. > --- > hw/qxl.c | 8 +++----- > 1 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/hw/qxl.c b/hw/qxl.c > index db7ae7a..7991e70 100644 > --- a/hw/qxl.c > +++ b/hw/qxl.c > @@ -821,17 +821,15 @@ static void qxl_check_state(PCIQXLDevice *d) > { > QXLRam *ram = d->ram; > > - 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)); > } > > static void qxl_reset_state(PCIQXLDevice *d) > { > - QXLRam *ram = d->ram; > QXLRom *rom = d->rom; > > - assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cmd_ring)); > - assert(!d->ssd.running || SPICE_RING_IS_EMPTY(&ram->cursor_ring)); > + qxl_check_state(d); > d->shadow_rom.update_id = cpu_to_le32(0); > *rom = d->shadow_rom; > qxl_rom_set_dirty(d); >