[PATCH v6 03/30] PCI: Export busn_resource to drivers/pci
From: bhelgaas@google.com (Bjorn Helgaas)
Date: 2015-03-11 22:28:43
Also in:
linux-alpha, linux-pci, lkml
On Mon, Mar 09, 2015 at 10:34:00AM +0800, Yijing Wang wrote:
quoted hunk ↗ jump to hunk
Export out busn_resource. Xen pcifront module need it. Signed-off-by: Yijing Wang <redacted> --- drivers/pci/pci.h | 2 ++ drivers/pci/probe.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletions(-)diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 4091f82..eeacab9 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h@@ -10,6 +10,8 @@ bool pcie_cap_has_lnkctl(const struct pci_dev *dev); /* Functions internal to the PCI core code */ +extern struct resource busn_resource; + int pci_create_sysfs_dev_files(struct pci_dev *pdev); void pci_remove_sysfs_dev_files(struct pci_dev *pdev); #if !defined(CONFIG_DMI) && !defined(CONFIG_ACPI)diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 8ef0375..b97ea81 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c@@ -17,12 +17,13 @@ #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ #define CARDBUS_RESERVE_BUSNR 3 -static struct resource busn_resource = { +struct resource busn_resource = { .name = "PCI busn", .start = 0, .end = 255, .flags = IORESOURCE_BUS, }; +EXPORT_SYMBOL(busn_resource);
I don't think this is a good idea. We support multiple PCI domains, and each domain has its own 0-255 bus number range. This busn_resource is only for domain 0 and probably should be handled in arch code instead of the PCI core. Right now, I think it's possible to call pci_scan_bus_parented() or pci_scan_bus() several times for buses in different domains, and they would all share the same busn_resource, which would cause corruption. So it's already broken, but I don't want to make it harder to fix by exporting this stuff.
/* Ugh. Need to stop exporting this to modules. */ LIST_HEAD(pci_root_buses); -- 1.7.1