From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O8zER-0000z4-Th for qemu-devel@nongnu.org; Mon, 03 May 2010 13:14:59 -0400 Received: from [140.186.70.92] (port=52413 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O8zEN-0000xL-15 for qemu-devel@nongnu.org; Mon, 03 May 2010 13:14:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O8zE8-0001JQ-8v for qemu-devel@nongnu.org; Mon, 03 May 2010 13:14:41 -0400 Received: from mail-iw0-f184.google.com ([209.85.223.184]:36960) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O8zE8-0001JC-44 for qemu-devel@nongnu.org; Mon, 03 May 2010 13:14:40 -0400 Received: by iwn14 with SMTP id 14so3516665iwn.22 for ; Mon, 03 May 2010 10:14:39 -0700 (PDT) Message-ID: <4BDF047C.5010402@codemonkey.ws> Date: Mon, 03 May 2010 12:14:36 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 1/2] lsi: Purge request queue on soft reset References: <4BDAC7B4.2040006@siemens.com> In-Reply-To: <4BDAC7B4.2040006@siemens.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: qemu-devel , Gerd Hoffmann On 04/30/2010 07:06 AM, Jan Kiszka wrote: > Avoid keeping zombie requests across controller reset by purging the > queue and also dropping the currently active request. > > Signed-off-by: Jan Kiszka > Applied all. Thanks. Regards, Anthony Liguori > --- > hw/lsi53c895a.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c > index 98b7f54..ad23ece 100644 > --- a/hw/lsi53c895a.c > +++ b/hw/lsi53c895a.c > @@ -283,6 +283,8 @@ static inline int lsi_irq_on_rsl(LSIState *s) > > static void lsi_soft_reset(LSIState *s) > { > + lsi_request *p; > + > DPRINTF("Reset\n"); > s->carry = 0; > > @@ -345,6 +347,15 @@ static void lsi_soft_reset(LSIState *s) > s->sbc = 0; > s->csbc = 0; > s->sbr = 0; > + while (!QTAILQ_EMPTY(&s->queue)) { > + p = QTAILQ_FIRST(&s->queue); > + QTAILQ_REMOVE(&s->queue, p, next); > + qemu_free(p); > + } > + if (s->current) { > + qemu_free(s->current); > + s->current = NULL; > + } > } > > static int lsi_dma_40bit(LSIState *s) > > > >