From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MDeOe-0000bW-0e for qemu-devel@nongnu.org; Mon, 08 Jun 2009 08:56:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MDeOZ-0000S7-D5 for qemu-devel@nongnu.org; Mon, 08 Jun 2009 08:56:15 -0400 Received: from [199.232.76.173] (port=54841 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MDeOZ-0000Rs-0P for qemu-devel@nongnu.org; Mon, 08 Jun 2009 08:56:11 -0400 Received: from mx2.redhat.com ([66.187.237.31]:41857) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MDeOY-0007PX-DM for qemu-devel@nongnu.org; Mon, 08 Jun 2009 08:56:10 -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 n58Cu9s1005526 for ; Mon, 8 Jun 2009 08:56:09 -0400 From: Gleb Natapov Date: Mon, 8 Jun 2009 15:56:05 +0300 Message-Id: <1244465766-6349-2-git-send-email-gleb@redhat.com> In-Reply-To: <1244465766-6349-1-git-send-email-gleb@redhat.com> References: <1244465766-6349-1-git-send-email-gleb@redhat.com> Subject: [Qemu-devel] [PATCH 2/3] Add pci_bus_reset() function. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Yaniv Kamay 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)); + } +} + PCIBus *pci_register_bus(DeviceState *parent, const char *name, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, qemu_irq *pic, int devfn_min, int nirq) @@ -106,6 +121,7 @@ PCIBus *pci_register_bus(DeviceState *parent, const char *name, bus->next = first_bus; first_bus = bus; register_savevm("PCIBUS", nbus++, 1, pcibus_save, pcibus_load, bus); + qemu_register_reset(pci_bus_reset, 0, bus); return bus; } -- 1.6.2.1