diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-16 14:33:41 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-16 14:33:41 -0400 |
commit | c1da678b5b4d8ce7836ed1ded80109d1db37efe0 (patch) | |
tree | 8f8f0421b487cc91a58186e78fec45a9512fc224 /drivers/ide/setup-pci.c | |
parent | 01397012b3129147890bb116431d5a794dfc3990 (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>
Diffstat (limited to 'drivers/ide/setup-pci.c')
-rw-r--r-- | drivers/ide/setup-pci.c | 14 |
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 " |