The patch titled pci: align BAR settings for legacy mode IDE has been removed from the -mm tree. Its filename was pci-align-bar-settings-for-legacy-mode-ide.patch This patch was dropped because patch from yoichi_yuasa@xxxxxxxxxxxxxx destroyed it ------------------------------------------------------ Subject: pci: align BAR settings for legacy mode IDE From: Jan Beulich <jbeulich@xxxxxxxxxx> Fix http://bugzilla.kernel.org/show_bug.cgi?id=8187 The change to force legacy mode IDE channels' resources to fixed non-zero values confuses (at least some versions of) X, because the values reported by the kernel and those readable from PCI config space aren't consistent anymore. Therefore, this patch arranges for the respective BARs to also get updated if possible. [akpm@xxxxxxxxxxxxxxxxxxxx: <alan>Just remove that chunk</aman>] Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> Cc: Kristofer T. Karas" <ktk@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> Cc: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Cc: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> Cc: Natalie Protasevich <protasnb@xxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: Gabriel C <nix.or.die@xxxxxxxxxxxxxx> Cc: Yoichi Yuasa <yoichi_yuasa@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/pci/probe.c | 40 +++++++++++++++++++++++++++------------- 1 files changed, 27 insertions(+), 13 deletions(-) diff -puN drivers/pci/probe.c~pci-align-bar-settings-for-legacy-mode-ide drivers/pci/probe.c --- a/drivers/pci/probe.c~pci-align-bar-settings-for-legacy-mode-ide +++ a/drivers/pci/probe.c @@ -741,7 +741,29 @@ static void pci_read_irq(struct pci_dev dev->irq = irq; } -#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED) +static void change_legacy_io_resource(struct pci_dev * dev, unsigned index, + resource_size_t start, resource_size_t end) +{ + resource_size_t base = start & PCI_BASE_ADDRESS_IO_MASK; + resource_size_t len = (end | ~PCI_BASE_ADDRESS_IO_MASK) - base + 1; + + if (pci_resource_len(dev, index) != len) { + printk(KERN_WARNING "%s: cannot adjust BAR%u (size %Lx)\n", + pci_name(dev), index, + (unsigned long long)pci_resource_len(dev, index)); + } else { + printk(KERN_INFO "%s: trying to change BAR%u from %Lx to %Lx\n", + pci_name(dev), index, + (unsigned long long)pci_resource_start(dev, index), + (unsigned long long)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; +} /** * pci_setup_device - fill in class and map information of a device @@ -795,20 +817,12 @@ static int pci_setup_device(struct pci_d u8 progif; pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); if ((progif & 1) == 0) { - 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; + change_legacy_io_resource(dev, 0, 0x1F0, 0x1F7); + change_legacy_io_resource(dev, 1, 0x3F6, 0x3F6); } if ((progif & 4) == 0) { - 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; + change_legacy_io_resource(dev, 2, 0x170, 0x177); + change_legacy_io_resource(dev, 3, 0x376, 0x376); } } break; _ Patches currently in -mm which might be from jbeulich@xxxxxxxxxx are origin.patch pci-align-bar-settings-for-legacy-mode-ide.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html