aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-16 14:33:41 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-16 14:33:41 -0400
commitc1da678b5b4d8ce7836ed1ded80109d1db37efe0 (patch)
tree8f8f0421b487cc91a58186e78fec45a9512fc224
parent01397012b3129147890bb116431d5a794dfc3990 (diff)
ide: tighten checks on PCI BARs in ide_hwif_configure()
Alan has fixed PCI layer handling of PCI IDE in Compatibility mode so PCI BAR 0/1 (and/or 2/3) content reported by kernel should never be zero. Tighten checks on PCI BARs and also fix printk() message while on it. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r--drivers/ide/setup-pci.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
index 3dea5a59626e..166211f53f17 100644
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -319,18 +319,18 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev,
319 319
320 ctl = pci_resource_start(dev, 2*port+1); 320 ctl = pci_resource_start(dev, 2*port+1);
321 base = pci_resource_start(dev, 2*port); 321 base = pci_resource_start(dev, 2*port);
322 if ((ctl && !base) || (base && !ctl)) { 322 } else {
323 printk(KERN_ERR "%s: inconsistent baseregs (BIOS) "
324 "for port %d, skipping\n", d->name, port);
325 return NULL;
326 }
327 }
328 if (!ctl) {
329 /* Use default values */ 323 /* Use default values */
330 ctl = port ? 0x374 : 0x3f4; 324 ctl = port ? 0x374 : 0x3f4;
331 base = port ? 0x170 : 0x1f0; 325 base = port ? 0x170 : 0x1f0;
332 } 326 }
333 327
328 if (!base || !ctl) {
329 printk(KERN_ERR "%s: bad PCI BARs for port %d, skipping\n",
330 d->name, port);
331 return NULL;
332 }
333
334 hwif = ide_find_port_slot(d); 334 hwif = ide_find_port_slot(d);
335 if (hwif == NULL) { 335 if (hwif == NULL) {
336 printk(KERN_ERR "%s: too many IDE interfaces, no room in " 336 printk(KERN_ERR "%s: too many IDE interfaces, no room in "