From 9ba6926c436f03dca1dd813c1e7ae0d53ea8a9f3 Mon Sep 17 00:00:00 2001 From: Jon Mason Date: Thu, 5 Oct 2006 18:47:21 +0200 Subject: [PATCH] --- yaml --- r: 39015 b: refs/heads/master c: dedc9937e876cb5430bca6a1dccfcc2ff22f8b7c h: refs/heads/master i: 39013: 9fb34bc030771645b2ab4ce01d60a6fe982ad674 39011: 4e9a5bfea91eba7ae5dc29ea5de001ecefedd60f 39007: 3eaee1d88beb28254a69013bb16ca245bbe032c9 v: v3 --- [refs] | 2 +- trunk/arch/x86_64/kernel/pci-calgary.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 7ce4ce88ba5d..4c44089e86c9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 814eadcefe79a2977a11ba135c4763a402112746 +refs/heads/master: dedc9937e876cb5430bca6a1dccfcc2ff22f8b7c diff --git a/trunk/arch/x86_64/kernel/pci-calgary.c b/trunk/arch/x86_64/kernel/pci-calgary.c index f760045d6d35..1100031528dc 100644 --- a/trunk/arch/x86_64/kernel/pci-calgary.c +++ b/trunk/arch/x86_64/kernel/pci-calgary.c @@ -816,6 +816,8 @@ static int __init calgary_init_one(struct pci_dev *dev) void __iomem *bbar; int ret; + BUG_ON(dev->bus->number >= MAX_PHB_BUS_NUM); + address = locate_register_space(dev); /* map entire 1MB of Calgary config space */ bbar = ioremap_nocache(address, 1024 * 1024); @@ -842,10 +844,10 @@ static int __init calgary_init_one(struct pci_dev *dev) static int __init calgary_init(void) { - int i, ret = -ENODEV; + int ret = -ENODEV; struct pci_dev *dev = NULL; - for (i = 0; i < MAX_PHB_BUS_NUM; i++) { + do { dev = pci_get_device(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CALGARY, dev); @@ -861,12 +863,12 @@ static int __init calgary_init(void) ret = calgary_init_one(dev); if (ret) goto error; - } + } while (1); return ret; error: - for (i--; i >= 0; i--) { + do { dev = pci_find_device_reverse(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CALGARY, dev); @@ -882,7 +884,7 @@ static int __init calgary_init(void) calgary_disable_translation(dev); calgary_free_bus(dev); pci_dev_put(dev); /* Undo calgary_init_one()'s pci_dev_get() */ - } + } while (1); return ret; }