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:
committed by
Greg Kroah-Hartman
parent
3720eda544
commit
481576e987
+13
-32
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user