Commit 481576e9 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by Greg Kroah-Hartman

Revert "adjust legacy IDE resource setting (v2)"

Revert "adjust legacy IDE resource setting (v2)"

This reverts commit ed8ccee0.

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: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 3720eda5
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment