[V3,2/7] PCI: Export pci_find_host_bridge()

Message ID 1512120007-28088-3-git-send-email-mmaddireddy@nvidia.com
State Superseded
Headers show
Series
  • Add loadable kernel module and power management support
Related show

Commit Message

Manikanta Maddireddy Dec. 1, 2017, 9:20 a.m.
PCI subsystem pass pci_bus pointer to pci_ops callback functions, Tegra
host driver use pci_find_host_bridge() to get pci_host_bridge from pci_bus.
Export pci_find_host_bridge() to allow Tegra PCIe driver to be compiled as
loadable kernel module.

Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
---
V2:
* commit message update
V3:
* EXPORT_SYMBOL is changed to EXPORT_SYMBOL_GPL

 drivers/pci/host-bridge.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Bjorn Helgaas Dec. 5, 2017, 8:04 p.m. | #1
On Fri, Dec 01, 2017 at 02:50:02PM +0530, Manikanta Maddireddy wrote:
> PCI subsystem pass pci_bus pointer to pci_ops callback functions, Tegra

s/PCI subsystem pass/The PCI subsystem passes a/
s/, Tegra/.  The Tegra/

> host driver use pci_find_host_bridge() to get pci_host_bridge from pci_bus.

s/use/uses/

> Export pci_find_host_bridge() to allow Tegra PCIe driver to be compiled as
> loadable kernel module.

s/allow Tegra/allow the Tegra/
s/loadable/a loadable/

But why do you need pci_find_host_bridge() at all?  Most drivers use
the pci_bus.sysdata pointer for this purpose, e.g., see db271747a04d
("PCI: mediatek: Use bus->sysdata to get host private data")

> Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
> ---
> V2:
> * commit message update
> V3:
> * EXPORT_SYMBOL is changed to EXPORT_SYMBOL_GPL
> 
>  drivers/pci/host-bridge.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
> index add66236215c..b8c0fcde9bd7 100644
> --- a/drivers/pci/host-bridge.c
> +++ b/drivers/pci/host-bridge.c
> @@ -22,6 +22,7 @@ struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus)
>  
>  	return to_pci_host_bridge(root_bus->bridge);
>  }
> +EXPORT_SYMBOL_GPL(pci_find_host_bridge);
>  
>  struct device *pci_get_host_bridge_device(struct pci_dev *dev)
>  {
> -- 
> 2.1.4
>
Manikanta Maddireddy Dec. 8, 2017, 8:37 a.m. | #2
On 06-Dec-17 1:34 AM, Bjorn Helgaas wrote:
> On Fri, Dec 01, 2017 at 02:50:02PM +0530, Manikanta Maddireddy wrote:
>> PCI subsystem pass pci_bus pointer to pci_ops callback functions, Tegra
> 
> s/PCI subsystem pass/The PCI subsystem passes a/
> s/, Tegra/.  The Tegra/
> 
>> host driver use pci_find_host_bridge() to get pci_host_bridge from pci_bus.
> 
> s/use/uses/
> 
>> Export pci_find_host_bridge() to allow Tegra PCIe driver to be compiled as
>> loadable kernel module.
> 
> s/allow Tegra/allow the Tegra/
> s/loadable/a loadable/
> 
> But why do you need pci_find_host_bridge() at all?  Most drivers use
> the pci_bus.sysdata pointer for this purpose, e.g., see db271747a04d
> ("PCI: mediatek: Use bus->sysdata to get host private data")
> 

I will send a patch to use bus->sysdata instead of pci_find_host_bridge().

>> Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
>> ---
>> V2:
>> * commit message update
>> V3:
>> * EXPORT_SYMBOL is changed to EXPORT_SYMBOL_GPL
>>
>>  drivers/pci/host-bridge.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
>> index add66236215c..b8c0fcde9bd7 100644
>> --- a/drivers/pci/host-bridge.c
>> +++ b/drivers/pci/host-bridge.c
>> @@ -22,6 +22,7 @@ struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus)
>>  
>>  	return to_pci_host_bridge(root_bus->bridge);
>>  }
>> +EXPORT_SYMBOL_GPL(pci_find_host_bridge);
>>  
>>  struct device *pci_get_host_bridge_device(struct pci_dev *dev)
>>  {
>> -- 
>> 2.1.4
>>
Bjorn Helgaas Dec. 8, 2017, 2:38 p.m. | #3
On Fri, Dec 08, 2017 at 02:07:54PM +0530, Manikanta Maddireddy wrote:
> 
> 
> On 06-Dec-17 1:34 AM, Bjorn Helgaas wrote:
> > On Fri, Dec 01, 2017 at 02:50:02PM +0530, Manikanta Maddireddy wrote:
> >> PCI subsystem pass pci_bus pointer to pci_ops callback functions, Tegra
> > 
> > s/PCI subsystem pass/The PCI subsystem passes a/
> > s/, Tegra/.  The Tegra/
> > 
> >> host driver use pci_find_host_bridge() to get pci_host_bridge from pci_bus.
> > 
> > s/use/uses/
> > 
> >> Export pci_find_host_bridge() to allow Tegra PCIe driver to be compiled as
> >> loadable kernel module.
> > 
> > s/allow Tegra/allow the Tegra/
> > s/loadable/a loadable/
> > 
> > But why do you need pci_find_host_bridge() at all?  Most drivers use
> > the pci_bus.sysdata pointer for this purpose, e.g., see db271747a04d
> > ("PCI: mediatek: Use bus->sysdata to get host private data")
> 
> I will send a patch to use bus->sysdata instead of pci_find_host_bridge().

That would be excellent!  Thank you!

Bjorn

Patch

diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
index add66236215c..b8c0fcde9bd7 100644
--- a/drivers/pci/host-bridge.c
+++ b/drivers/pci/host-bridge.c
@@ -22,6 +22,7 @@  struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus)
 
 	return to_pci_host_bridge(root_bus->bridge);
 }
+EXPORT_SYMBOL_GPL(pci_find_host_bridge);
 
 struct device *pci_get_host_bridge_device(struct pci_dev *dev)
 {