Revert "adjust legacy IDE resource setting (v2)"

Revert "adjust legacy IDE resource setting (v2)"

This reverts commit ed8ccee091.

It causes hang on boot for some users and we don't yet know why:

http://bugzilla.kernel.org/show_bug.cgi?id=7562

http://lkml.org/lkml/2007/4/20/404
http://lkml.org/lkml/2007/3/25/113

Just reverse it for 2.6.21-final, having broken X server is somehow
better than unbootable system.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Bartlomiej Zolnierkiewicz
2007-04-25 16:18:52 -04:00
committed by Greg Kroah-Hartman
parent 3720eda544
commit 481576e987
+13 -32
View File
@@ -639,34 +639,7 @@ static void pci_read_irq(struct pci_dev *dev)
dev->irq = irq;
}
static void change_legacy_io_resource(struct pci_dev * dev, unsigned index,
unsigned start, unsigned end)
{
unsigned base = start & PCI_BASE_ADDRESS_IO_MASK;
unsigned len = (end | ~PCI_BASE_ADDRESS_IO_MASK) - base + 1;
/*
* Some X versions get confused when the BARs reported through
* /sys or /proc differ from those seen in config space, thus
* try to update the config space values, too.
*/
if (!(pci_resource_flags(dev, index) & IORESOURCE_IO))
printk(KERN_WARNING "%s: cannot adjust BAR%u (not I/O)\n",
pci_name(dev), index);
else if (pci_resource_len(dev, index) != len)
printk(KERN_WARNING "%s: cannot adjust BAR%u (size %04X)\n",
pci_name(dev), index, (unsigned)pci_resource_len(dev, index));
else {
printk(KERN_INFO "%s: trying to change BAR%u from %04X to %04X\n",
pci_name(dev), index,
(unsigned)pci_resource_start(dev, index), base);
pci_write_config_dword(dev, PCI_BASE_ADDRESS_0 + index * 4, base);
}
pci_resource_start(dev, index) = start;
pci_resource_end(dev, index) = end;
pci_resource_flags(dev, index) =
IORESOURCE_IO | IORESOURCE_PCI_FIXED | PCI_BASE_ADDRESS_SPACE_IO;
}
#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
/**
* pci_setup_device - fill in class and map information of a device
@@ -719,12 +692,20 @@ static int pci_setup_device(struct pci_dev * dev)
u8 progif;
pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
if ((progif & 1) == 0) {
change_legacy_io_resource(dev, 0, 0x1F0, 0x1F7);
change_legacy_io_resource(dev, 1, 0x3F6, 0x3F6);
dev->resource[0].start = 0x1F0;
dev->resource[0].end = 0x1F7;
dev->resource[0].flags = LEGACY_IO_RESOURCE;
dev->resource[1].start = 0x3F6;
dev->resource[1].end = 0x3F6;
dev->resource[1].flags = LEGACY_IO_RESOURCE;
}
if ((progif & 4) == 0) {
change_legacy_io_resource(dev, 2, 0x170, 0x177);
change_legacy_io_resource(dev, 3, 0x376, 0x376);
dev->resource[2].start = 0x170;
dev->resource[2].end = 0x177;
dev->resource[2].flags = LEGACY_IO_RESOURCE;
dev->resource[3].start = 0x376;
dev->resource[3].end = 0x376;
dev->resource[3].flags = LEGACY_IO_RESOURCE;
}
}
break;