diff mbox

[RFC,v2] PCI: Only enable IO window if supported

Message ID CAE9FiQW3yGhuzABYDf89tAA93Y6Gc1GAbGwitVtG1YDf3gPUkg@mail.gmail.com
State Superseded
Headers show

Commit Message

Yinghai Lu July 29, 2015, 8:24 p.m. UTC
On Wed, Jul 29, 2015 at 1:02 PM, Guenter Roeck <linux@roeck-us.net> wrote:

> Do you have an idea on how to make it work with
> the reversed definition ?

attached one should address the problem.

index ddda0916..e8def25 100644
diff mbox

Patch

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index ddda0916..e8def25 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -378,16 +378,16 @@  static void pci_read_bridge_io(struct pci_bus *child)
 
 	if (!pci_bridge_supports_io(dev)) {
 		dev_printk(KERN_DEBUG, &dev->dev, "  no I/O window\n");
+		child->bus_flags &= ~PCI_BUS_FLAGS_SUPPORTS_IO;
 		return;
 	}
 
 	if (!pci_root_has_io_resource(child)) {
 		dev_printk(KERN_DEBUG, &dev->dev, "  no I/O resource on root bus\n");
+		child->bus_flags &= ~PCI_BUS_FLAGS_SUPPORTS_IO;
 		return;
 	}
 
-	child->bus_flags |= PCI_BUS_FLAGS_SUPPORTS_IO;
-
 	io_mask = PCI_IO_RANGE_MASK;
 	io_granularity = 0x1000;
 	if (dev->io_window_1k) {
@@ -544,6 +544,7 @@  static struct pci_bus *pci_alloc_bus(struct pci_bus *parent)
 	INIT_LIST_HEAD(&b->resources);
 	b->max_bus_speed = PCI_SPEED_UNKNOWN;
 	b->cur_bus_speed = PCI_SPEED_UNKNOWN;
+	b->bus_flags |= PCI_BUS_FLAGS_SUPPORTS_IO;
 #ifdef CONFIG_PCI_DOMAINS_GENERIC
 	if (parent)
 		b->domain_nr = parent->domain_nr;