From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MDfyT-00080n-M5 for qemu-devel@nongnu.org; Mon, 08 Jun 2009 10:37:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MDfyN-0007vD-L6 for qemu-devel@nongnu.org; Mon, 08 Jun 2009 10:37:19 -0400 Received: from [199.232.76.173] (port=41914 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MDfyN-0007us-Ew for qemu-devel@nongnu.org; Mon, 08 Jun 2009 10:37:15 -0400 Received: from mx2.redhat.com ([66.187.237.31]:37001) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MDfyN-0006A7-0y for qemu-devel@nongnu.org; Mon, 08 Jun 2009 10:37:15 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n58EbE5L031184 for ; Mon, 8 Jun 2009 10:37:14 -0400 Date: Mon, 8 Jun 2009 17:37:10 +0300 From: Gleb Natapov Subject: Re: [Qemu-devel] [PATCH 2/3] Add pci_bus_reset() function. Message-ID: <20090608143710.GM27210@redhat.com> References: <1244465766-6349-1-git-send-email-gleb@redhat.com> <1244465766-6349-2-git-send-email-gleb@redhat.com> <4A2D219F.1020408@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A2D219F.1020408@redhat.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Yaniv Kamay , qemu-devel@nongnu.org On Mon, Jun 08, 2009 at 05:35:11PM +0300, Avi Kivity wrote: > Gleb Natapov wrote: >> To reset internal irq handling data structures. >> >> Signed-off-by: Gleb Natapov >> Signed-off-by: Yaniv Kamay >> --- >> hw/pci.c | 16 ++++++++++++++++ >> 1 files changed, 16 insertions(+), 0 deletions(-) >> >> diff --git a/hw/pci.c b/hw/pci.c >> index 02b335f..89fefdf 100644 >> --- a/hw/pci.c >> +++ b/hw/pci.c >> @@ -88,6 +88,21 @@ static int pcibus_load(QEMUFile *f, void *opaque, int version_id) >> return 0; >> } >> +static void pci_bus_reset(void *opaque) >> +{ >> + PCIBus *bus = (PCIBus *)opaque; >> + int i; >> + >> + for (i = 0; i < bus->nirq; i++) { >> + bus->irq_count[i] = 0; >> + } >> + for (i = 0; i < PCI_DEVICES_MAX; i++) { >> + if (bus->devices[i]) >> + memset(bus->devices[i]->irq_state, 0, >> + sizeof(bus->devices[i]->irq_state)); >> + } >> +} >> + >> > > Shouldn't each device's reset function bring its line low, thus zeroing > the irq_state naturally? > > If not, we have a bug somewhere. Note we have exactly the same issue > with save/restore. > They should, but I haven't found one that does. -- Gleb.