[V3,03/29] x86/PCI: deprecate pci_get_bus_and_slot()

Message ID 1511801886-6753-4-git-send-email-okaya@codeaurora.org
State New
Delegated to: Bjorn Helgaas
Headers show
Series
  • PCI: deprecate pci_get_bus_and_slot()
Related show

Commit Message

Sinan Kaya Nov. 27, 2017, 4:57 p.m.
pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
where a PCI device is present. This restricts the device drivers to be
reused for other domain numbers.

Getting ready to remove pci_get_bus_and_slot() function in favor of
pci_get_domain_bus_and_slot().

Use domain number of 0 as the domain number is not available in struct
irq_routing_table.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 arch/x86/pci/irq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Thomas Gleixner Nov. 28, 2017, 1:45 p.m. | #1
On Mon, 27 Nov 2017, Sinan Kaya wrote:

> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
> where a PCI device is present. This restricts the device drivers to be
> reused for other domain numbers.
> 
> Getting ready to remove pci_get_bus_and_slot() function in favor of
> pci_get_domain_bus_and_slot().
> 
> Use domain number of 0 as the domain number is not available in struct
> irq_routing_table.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Acked-by: Thomas Gleixner <tglx@linutronix.de>

> ---
>  arch/x86/pci/irq.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
> index 04526291..52e5510 100644
> --- a/arch/x86/pci/irq.c
> +++ b/arch/x86/pci/irq.c
> @@ -839,7 +839,8 @@ static void __init pirq_find_router(struct irq_router *r)
>  	DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for [%04x:%04x]\n",
>  	    rt->rtr_vendor, rt->rtr_device);
>  
> -	pirq_router_dev = pci_get_bus_and_slot(rt->rtr_bus, rt->rtr_devfn);
> +	pirq_router_dev = pci_get_domain_bus_and_slot(0, rt->rtr_bus,
> +						      rt->rtr_devfn);
>  	if (!pirq_router_dev) {
>  		DBG(KERN_DEBUG "PCI: Interrupt router not found at "
>  			"%02x:%02x\n", rt->rtr_bus, rt->rtr_devfn);
> -- 
> 1.9.1
> 
>

Patch

diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 04526291..52e5510 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -839,7 +839,8 @@  static void __init pirq_find_router(struct irq_router *r)
 	DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for [%04x:%04x]\n",
 	    rt->rtr_vendor, rt->rtr_device);
 
-	pirq_router_dev = pci_get_bus_and_slot(rt->rtr_bus, rt->rtr_devfn);
+	pirq_router_dev = pci_get_domain_bus_and_slot(0, rt->rtr_bus,
+						      rt->rtr_devfn);
 	if (!pirq_router_dev) {
 		DBG(KERN_DEBUG "PCI: Interrupt router not found at "
 			"%02x:%02x\n", rt->rtr_bus, rt->rtr_devfn);