From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O7nud-0000Hb-4m for qemu-devel@nongnu.org; Fri, 30 Apr 2010 06:57:39 -0400 Received: from [140.186.70.92] (port=49978 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O7nua-0000HT-Os for qemu-devel@nongnu.org; Fri, 30 Apr 2010 06:57:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O7nuX-000569-UO for qemu-devel@nongnu.org; Fri, 30 Apr 2010 06:57:36 -0400 Received: from thoth.sbs.de ([192.35.17.2]:16500) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O7nuX-00055p-Lb for qemu-devel@nongnu.org; Fri, 30 Apr 2010 06:57:33 -0400 Received: from mail1.siemens.de (localhost [127.0.0.1]) by thoth.sbs.de (8.12.11.20060308/8.12.11) with ESMTP id o3UAvUOc017727 for ; Fri, 30 Apr 2010 12:57:30 +0200 Received: from [139.25.109.167] (mchn012c.mchp.siemens.de [139.25.109.167] (may be forged)) by mail1.siemens.de (8.12.11.20060308/8.12.11) with ESMTP id o3UAvUqr005233 for ; Fri, 30 Apr 2010 12:57:30 +0200 Message-ID: <4BDAB79A.4050602@siemens.com> Date: Fri, 30 Apr 2010 12:57:30 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <4BD9B9C4.5000702@siemens.com> In-Reply-To: <4BD9B9C4.5000702@siemens.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] lsi: Properly initialize controller state on reset List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Jan Kiszka wrote: > The LSI controller was lacking any system reset handler. This is an > attempt to fix it. > > Signed-off-by: Jan Kiszka > --- > hw/lsi53c895a.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c > index 98b7f54..f328057 100644 > --- a/hw/lsi53c895a.c > +++ b/hw/lsi53c895a.c > @@ -1996,6 +1996,16 @@ static void lsi_mmio_mapfunc(PCIDevice *pci_dev, int region_num, > cpu_register_physical_memory(addr + 0, 0x400, s->mmio_io_addr); > } > > +static void lsi_scsi_reset(DeviceState *dev) > +{ > + LSIState *s = DO_UPCAST(LSIState, dev.qdev, dev); > + > + s->dma_buf = NULL; > + s->current_dma_len = 0; > + s->active_commands = 0; OK, this 0.12 patch obviously no longer applies. And purging the command queue should not only be done on hard reset, but also when software triggered it (ie. move it to lsi_soft_reset). Reworking... Jan > + lsi_soft_reset(s); > +} > + > static void lsi_pre_save(void *opaque) > { > LSIState *s = opaque; > @@ -2149,6 +2159,7 @@ static PCIDeviceInfo lsi_info = { > .qdev.name = "lsi53c895a", > .qdev.alias = "lsi", > .qdev.size = sizeof(LSIState), > + .qdev.reset = lsi_scsi_reset, > .qdev.vmsd = &vmstate_lsi_scsi, > .init = lsi_scsi_init, > .exit = lsi_scsi_uninit, > > > -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux