From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48542) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2hyb-0001CM-Py for qemu-devel@nongnu.org; Wed, 29 Feb 2012 06:45:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S2hy6-0002Ii-E5 for qemu-devel@nongnu.org; Wed, 29 Feb 2012 06:45:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:16341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2hy6-0002I2-5N for qemu-devel@nongnu.org; Wed, 29 Feb 2012 06:45:14 -0500 From: Gerd Hoffmann Date: Wed, 29 Feb 2012 12:45:08 +0100 Message-Id: <1330515910-725-5-git-send-email-kraxel@redhat.com> In-Reply-To: <1330515910-725-1-git-send-email-kraxel@redhat.com> References: <1330515910-725-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH v2 4/6] pci: bridges can have two regions too List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: seabios@seabios.org Cc: qemu-devel@nongnu.org, Gerd Hoffmann Signed-off-by: Gerd Hoffmann --- src/pciinit.c | 20 ++++++++------------ 1 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/pciinit.c b/src/pciinit.c index aa391a0..33b9bf7 100644 --- a/src/pciinit.c +++ b/src/pciinit.c @@ -402,7 +402,7 @@ static void pci_bios_check_devices(struct pci_bus *busses) struct pci_device *pci; struct pci_bus *bus; - int i; + int i, num_regions; // init pci bridges foreachpci(pci) { @@ -414,12 +414,11 @@ static void pci_bios_check_devices(struct pci_bus *busses) // discover pci bars foreachpci(pci) { - if (pci->class == PCI_CLASS_BRIDGE_PCI) - continue; + num_regions = (pci->class == PCI_CLASS_BRIDGE_PCI) ? 2 : PCI_NUM_REGIONS; dprintf(1, "PCI: check device bdf=%02x:%02x.%x\n", pci_bdf_to_bus(pci->bdf), pci_bdf_to_dev(pci->bdf), pci_bdf_to_fn(pci->bdf)); - for (i = 0; i < PCI_NUM_REGIONS; i++) { + for (i = 0; i < num_regions; i++) { pci_bios_get_bar(pci, i, &pci->bars[i]); if (pci->bars[i].addr == 0) continue; @@ -431,10 +430,9 @@ static void pci_bios_check_devices(struct pci_bus *busses) // alloc ressources for pci bars foreachpci(pci) { - if (pci->class == PCI_CLASS_BRIDGE_PCI) - continue; + num_regions = (pci->class == PCI_CLASS_BRIDGE_PCI) ? 2 : PCI_NUM_REGIONS; bus = &busses[pci_bdf_to_bus(pci->bdf)]; - for (i = 0; i < PCI_NUM_REGIONS; i++) { + for (i = 0; i < num_regions; i++) { enum pci_region_type type; if (pci->bars[i].addr == 0) continue; @@ -545,7 +543,7 @@ static void pci_bios_map_devices(struct pci_bus *busses) pci_bios_init_bus_bases(&busses[0]); // Map regions on each secondary bus. - int secondary_bus; + int secondary_bus, num_regions, i; for (secondary_bus=1; secondary_bus<=MaxPCIBus; secondary_bus++) { struct pci_bus *s = &busses[secondary_bus]; if (!s->bus_dev) @@ -583,14 +581,12 @@ static void pci_bios_map_devices(struct pci_bus *busses) // Map regions on each device. struct pci_device *pci; foreachpci(pci) { - if (pci->class == PCI_CLASS_BRIDGE_PCI) - continue; + num_regions = (pci->class == PCI_CLASS_BRIDGE_PCI) ? 2 : PCI_NUM_REGIONS; u16 bdf = pci->bdf; dprintf(1, "PCI: map device bdf=%02x:%02x.%x\n" , pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf), pci_bdf_to_fn(bdf)); struct pci_bus *bus = &busses[pci_bdf_to_bus(bdf)]; - int i; - for (i = 0; i < PCI_NUM_REGIONS; i++) { + for (i = 0; i < num_regions; i++) { if (pci->bars[i].addr == 0) continue; -- 1.7.1