Skip to content

Commit

Permalink
Revert "adjust legacy IDE resource setting (v2)"
Browse files Browse the repository at this point in the history
This reverts commit ed8ccee.

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>
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Apr 23, 2007
1 parent c445a31 commit 01abc2a
Showing 1 changed file with 13 additions and 32 deletions.
45 changes: 13 additions & 32 deletions drivers/pci/probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,34 +682,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
Expand Down Expand Up @@ -762,12 +735,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;
Expand Down

0 comments on commit 01abc2a

Please sign in to comment.