linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot()
@ 2017-12-19  5:37 Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 01/26] alpha/PCI: " Sinan Kaya
                   ` (26 more replies)
  0 siblings, 27 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur; +Cc: Sinan Kaya, linux-arm-msm, linux-arm-kernel

Deprecate pci_get_bus_and_slot() in favor of pci_get_domain_bus_and_slot()
in order to remove domain 0 assumptions in the kernel.

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.

Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
extract the domain number. Other places, use the actual domain number from
the device.

Changes from v3:
* rebase to linux-next
* drop drm i915 as it is going through the drm tip
* commit summary cleanups

Sinan Kaya (26):
  alpha/PCI: deprecate pci_get_bus_and_slot()
  powerpc/PCI: deprecate pci_get_bus_and_slot()
  x86/PCI: deprecate pci_get_bus_and_slot()
  ata: deprecate pci_get_bus_and_slot()
  agp: nvidia: deprecate pci_get_bus_and_slot()
  edd: deprecate pci_get_bus_and_slot()
  ibft: deprecate pci_get_bus_and_slot()
  drm/gma500: deprecate pci_get_bus_and_slot()
  drm/nouveau: deprecate pci_get_bus_and_slot()
  Drivers: ide: deprecate pci_get_bus_and_slot()
  iommu/amd: deprecate pci_get_bus_and_slot()
  powerpc/powermac: deprecate pci_get_bus_and_slot()
  bnx2x: deprecate pci_get_bus_and_slot()
  pch_gbe: deprecate pci_get_bus_and_slot()
  PCI: cpqhp: deprecate pci_get_bus_and_slot()
  PCI: ibmphp: deprecate pci_get_bus_and_slot()
  PCI/quirks: deprecate pci_get_bus_and_slot()
  PCI/syscall: deprecate pci_get_bus_and_slot()
  xen: deprecate pci_get_bus_and_slot()
  openprom: deprecate pci_get_bus_and_slot()
  backlight: deprecate pci_get_bus_and_slot()
  video: fbdev: intelfb: deprecate pci_get_bus_and_slot()
  video: fbdev: nvidia: deprecate pci_get_bus_and_slot()
  video: fbdev: riva: deprecate pci_get_bus_and_slot()
  i7300_idle: remove unused file
  PCI: Remove pci_get_bus_and_slot() function

 arch/alpha/kernel/pci.c                            |  2 +-
 arch/alpha/kernel/sys_nautilus.c                   |  2 +-
 arch/powerpc/kernel/pci_32.c                       |  3 +-
 arch/powerpc/platforms/powermac/feature.c          |  2 +-
 arch/powerpc/sysdev/mv64x60_pci.c                  |  4 +-
 arch/x86/pci/irq.c                                 |  3 +-
 drivers/ata/pata_ali.c                             |  3 +-
 drivers/char/agp/nvidia-agp.c                      | 12 +++-
 drivers/char/agp/sworks-agp.c                      |  3 +-
 drivers/firmware/edd.c                             |  8 +--
 drivers/firmware/iscsi_ibft.c                      |  5 +-
 drivers/gpu/drm/gma500/cdv_device.c                | 16 +++--
 drivers/gpu/drm/gma500/gma_device.c                |  4 +-
 drivers/gpu/drm/gma500/mid_bios.c                  | 12 +++-
 drivers/gpu/drm/gma500/psb_drv.c                   | 10 ++-
 drivers/gpu/drm/gma500/psb_drv.h                   | 18 ++---
 drivers/gpu/drm/nouveau/dispnv04/arb.c             |  4 +-
 drivers/gpu/drm/nouveau/dispnv04/hw.c              | 10 ++-
 drivers/gpu/drm/nouveau/nouveau_drm.c              |  3 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c   | 10 ++-
 drivers/ide/sl82c105.c                             |  5 +-
 drivers/iommu/amd_iommu.c                          |  3 +-
 drivers/iommu/amd_iommu_init.c                     |  9 +--
 drivers/iommu/amd_iommu_v2.c                       |  3 +-
 drivers/macintosh/via-pmu.c                        |  2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c  | 10 ++-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h  |  1 +
 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |  6 +-
 drivers/pci/hotplug/cpqphp_pci.c                   | 18 +++--
 drivers/pci/hotplug/ibmphp_core.c                  |  7 +-
 drivers/pci/quirks.c                               |  3 +-
 drivers/pci/syscall.c                              |  4 +-
 drivers/pci/xen-pcifront.c                         |  3 +-
 drivers/sbus/char/openprom.c                       |  5 +-
 drivers/video/backlight/apple_bl.c                 |  2 +-
 drivers/video/fbdev/intelfb/intelfbhw.c            |  4 +-
 drivers/video/fbdev/nvidia/nv_hw.c                 | 11 +--
 drivers/video/fbdev/nvidia/nv_setup.c              |  3 +-
 drivers/video/fbdev/riva/fbdev.c                   |  2 +-
 drivers/video/fbdev/riva/nv_driver.c               |  7 +-
 drivers/video/fbdev/riva/riva_hw.c                 | 20 ++++--
 drivers/video/fbdev/riva/riva_hw.h                 |  3 +-
 include/linux/i7300_idle.h                         | 84 ----------------------
 include/linux/pci.h                                |  8 ---
 44 files changed, 175 insertions(+), 182 deletions(-)
 delete mode 100644 include/linux/i7300_idle.h

-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [PATCH V4 01/26] alpha/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-03 12:43   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 02/26] powerpc/PCI: " Sinan Kaya
                   ` (25 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Kate Stewart, Lorenzo Pieralisi, linux-arm-msm,
	Philippe Ombredanne, open list, Sinan Kaya, Masahiro Yamada,
	open list:ALPHA PORT, Ivan Kokshaysky, Greg Kroah-Hartman,
	Bjorn Helgaas, Matt Turner, Thomas Gleixner, linux-arm-kernel,
	Richard Henderson

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.

Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
extract the domain number. Other places, use the actual domain number from
the device.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 arch/alpha/kernel/pci.c          | 2 +-
 arch/alpha/kernel/sys_nautilus.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index 87da005..2e86ebb 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -425,7 +425,7 @@ struct resource * __init
 		if (bus == 0 && dfn == 0) {
 			hose = pci_isa_hose;
 		} else {
-			dev = pci_get_bus_and_slot(bus, dfn);
+			dev = pci_get_domain_bus_and_slot(0, bus, dfn);
 			if (!dev)
 				return -ENODEV;
 			hose = dev->sysdata;
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index 239dc0e..ff4f54b 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -237,7 +237,7 @@
 	bus = hose->bus = bridge->bus;
 	pcibios_claim_one_bus(bus);
 
-	irongate = pci_get_bus_and_slot(0, 0);
+	irongate = pci_get_domain_bus_and_slot(pci_domain_nr(bus), 0, 0);
 	bus->self = irongate;
 	bus->resource[0] = &irongate_io;
 	bus->resource[1] = &irongate_mem;
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 02/26] powerpc/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 01/26] alpha/PCI: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19 10:29   ` Michael Ellerman
  2017-12-19  5:37 ` [PATCH V4 03/26] x86/PCI: " Sinan Kaya
                   ` (24 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Rob Herring, Benjamin Herrenschmidt, linux-arm-msm, open list,
	Sinan Kaya, Bhumika Goyal, Paul Mackerras, Tyrel Datwyler,
	Michael Ellerman, open list:LINUX FOR POWERPC 32-BIT AND 64-BIT,
	linux-arm-kernel

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 pci_get_domain_bus_and_slot() with a domain number of 0 as the code
is not ready to consume multiple domains and existing code used domain
number 0.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 arch/powerpc/kernel/pci_32.c              | 3 ++-
 arch/powerpc/platforms/powermac/feature.c | 2 +-
 arch/powerpc/sysdev/mv64x60_pci.c         | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 1d817f4..85ad2f7 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -96,7 +96,8 @@
 		reg = of_get_property(node, "reg", NULL);
 		if (!reg)
 			continue;
-		dev = pci_get_bus_and_slot(pci_bus, ((reg[0] >> 8) & 0xff));
+		dev = pci_get_domain_bus_and_slot(0, pci_bus,
+						  ((reg[0] >> 8) & 0xff));
 		if (!dev || !dev->subordinate) {
 			pci_dev_put(dev);
 			continue;
diff --git a/arch/powerpc/platforms/powermac/feature.c b/arch/powerpc/platforms/powermac/feature.c
index 466b842..3f82cb2 100644
--- a/arch/powerpc/platforms/powermac/feature.c
+++ b/arch/powerpc/platforms/powermac/feature.c
@@ -829,7 +829,7 @@ static long core99_scc_enable(struct device_node *node, long param, long value)
 
 	if (value) {
 		if (pci_device_from_OF_node(node, &pbus, &pid) == 0)
-			pdev = pci_get_bus_and_slot(pbus, pid);
+			pdev = pci_get_domain_bus_and_slot(0, pbus, pid);
 		if (pdev == NULL)
 			return 0;
 		rc = pci_enable_device(pdev);
diff --git a/arch/powerpc/sysdev/mv64x60_pci.c b/arch/powerpc/sysdev/mv64x60_pci.c
index d52b3b8..6fe9104 100644
--- a/arch/powerpc/sysdev/mv64x60_pci.c
+++ b/arch/powerpc/sysdev/mv64x60_pci.c
@@ -37,7 +37,7 @@ static ssize_t mv64x60_hs_reg_read(struct file *filp, struct kobject *kobj,
 	if (count < MV64X60_VAL_LEN_MAX)
 		return -EINVAL;
 
-	phb = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
+	phb = pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(0, 0));
 	if (!phb)
 		return -ENODEV;
 	pci_read_config_dword(phb, MV64X60_PCICFG_CPCI_HOTSWAP, &v);
@@ -61,7 +61,7 @@ static ssize_t mv64x60_hs_reg_write(struct file *filp, struct kobject *kobj,
 	if (sscanf(buf, "%i", &v) != 1)
 		return -EINVAL;
 
-	phb = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
+	phb = pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(0, 0));
 	if (!phb)
 		return -ENODEV;
 	pci_write_config_dword(phb, MV64X60_PCICFG_CPCI_HOTSWAP, v);
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 03/26] x86/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 01/26] alpha/PCI: " Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 02/26] powerpc/PCI: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 04/26] ata: " Sinan Kaya
                   ` (23 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, maintainer:X86 ARCHITECTURE 32-BIT AND 64-BIT,
	open list:X86 ARCHITECTURE 32-BIT AND 64-BIT, Sinan Kaya,
	Ingo Molnar, H. Peter Anvin, Bjorn Helgaas, Thomas Gleixner,
	linux-arm-kernel

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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 04/26] ata: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (2 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 03/26] x86/PCI: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 05/26] agp: nvidia: " Sinan Kaya
                   ` (22 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Bartlomiej Zolnierkiewicz, linux-arm-msm, open list, Sinan Kaya,
	open list:LIBATA PATA DRIVERS, Tejun Heo, linux-arm-kernel

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 pci_get_domain_bus_and_slot() and extract the actual domain number
from the pdev passed in.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Acked-by: Tejun Heo <tj@kernel.org>
---
 drivers/ata/pata_ali.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index d19cd88..0b122f9 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -466,7 +466,8 @@ static void ali_init_chipset(struct pci_dev *pdev)
 			tmp |= 0x01;	/* CD_ROM enable for DMA */
 		pci_write_config_byte(pdev, 0x53, tmp);
 	}
-	north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
+	north = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus), 0,
+					    PCI_DEVFN(0, 0));
 	if (north && north->vendor == PCI_VENDOR_ID_AL && ali_isa_bridge) {
 		/* Configure the ALi bridge logic. For non ALi rely on BIOS.
 		   Set the south bridge enable bit */
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (3 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 04/26] ata: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-03 12:44   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 06/26] edd: " Sinan Kaya
                   ` (21 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Arnd Bergmann, David Airlie, linux-arm-msm, open list,
	Sinan Kaya, Greg Kroah-Hartman, linux-arm-kernel

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().

Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
and extract the domain number from struct pci_dev.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/char/agp/nvidia-agp.c | 12 +++++++++---
 drivers/char/agp/sworks-agp.c |  3 ++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
index 828b344..623205b 100644
--- a/drivers/char/agp/nvidia-agp.c
+++ b/drivers/char/agp/nvidia-agp.c
@@ -340,11 +340,17 @@ static int agp_nvidia_probe(struct pci_dev *pdev,
 	u8 cap_ptr;
 
 	nvidia_private.dev_1 =
-		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 1));
+		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
+					    (unsigned int)pdev->bus->number,
+					    PCI_DEVFN(0, 1));
 	nvidia_private.dev_2 =
-		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 2));
+		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
+					    (unsigned int)pdev->bus->number,
+					    PCI_DEVFN(0, 2));
 	nvidia_private.dev_3 =
-		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(30, 0));
+		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
+					    (unsigned int)pdev->bus->number,
+					    PCI_DEVFN(30, 0));
 
 	if (!nvidia_private.dev_1 || !nvidia_private.dev_2 || !nvidia_private.dev_3) {
 		printk(KERN_INFO PFX "Detected an NVIDIA nForce/nForce2 "
diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
index 03be4ac..4dbdd3b 100644
--- a/drivers/char/agp/sworks-agp.c
+++ b/drivers/char/agp/sworks-agp.c
@@ -474,7 +474,8 @@ static int agp_serverworks_probe(struct pci_dev *pdev,
 	}
 
 	/* Everything is on func 1 here so we are hardcoding function one */
-	bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
+	bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
+			(unsigned int)pdev->bus->number,
 			PCI_DEVFN(0, 1));
 	if (!bridge_dev) {
 		dev_info(&pdev->dev, "can't find secondary device\n");
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 06/26] edd: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (4 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 05/26] agp: nvidia: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-03 12:48   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 07/26] ibft: " Sinan Kaya
                   ` (20 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur; +Cc: Sinan Kaya, linux-arm-msm, open list, linux-arm-kernel

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().

Domain number is not available in struct edd_info. Hard-coding the domain
number as 0.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/firmware/edd.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c
index e229576..60a8f13 100644
--- a/drivers/firmware/edd.c
+++ b/drivers/firmware/edd.c
@@ -669,10 +669,10 @@ static void edd_release(struct kobject * kobj)
 	struct edd_info *info = edd_dev_get_info(edev);
 
 	if (edd_dev_is_type(edev, "PCI") || edd_dev_is_type(edev, "XPRS")) {
-		return pci_get_bus_and_slot(info->params.interface_path.pci.bus,
-				     PCI_DEVFN(info->params.interface_path.pci.slot,
-					       info->params.interface_path.pci.
-					       function));
+		return pci_get_domain_bus_and_slot(0,
+				info->params.interface_path.pci.bus,
+				PCI_DEVFN(info->params.interface_path.pci.slot,
+				info->params.interface_path.pci.function));
 	}
 	return NULL;
 }
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 07/26] ibft: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (5 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 06/26] edd: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 08/26] drm/gma500: " Sinan Kaya
                   ` (19 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya, Konrad Rzeszutek Wilk,
	Peter Jones, linux-arm-kernel

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().

We don't search for the device in other domains than zero. This is because
on x86 platforms the BIOS executes only devices which are in domain 0.
Furthermore, the iBFT spec doesn't have a domain id field.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Acked-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
---
 drivers/firmware/iscsi_ibft.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/iscsi_ibft.c b/drivers/firmware/iscsi_ibft.c
index 14042a6..6bc8e66 100644
--- a/drivers/firmware/iscsi_ibft.c
+++ b/drivers/firmware/iscsi_ibft.c
@@ -719,8 +719,9 @@ static int __init ibft_create_kobject(struct acpi_table_ibft *header,
 		* executes only devices which are in domain 0. Furthermore, the
 		* iBFT spec doesn't have a domain id field :-(
 		*/
-		pci_dev = pci_get_bus_and_slot((nic->pci_bdf & 0xff00) >> 8,
-					       (nic->pci_bdf & 0xff));
+		pci_dev = pci_get_domain_bus_and_slot(0,
+						(nic->pci_bdf & 0xff00) >> 8,
+						(nic->pci_bdf & 0xff));
 		if (pci_dev) {
 			rc = sysfs_create_link(&boot_kobj->kobj,
 					       &pci_dev->dev.kobj, "device");
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 08/26] drm/gma500: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (6 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 07/26] ibft: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-04 12:27   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 09/26] drm/nouveau: " Sinan Kaya
                   ` (18 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: David Airlie, linux-arm-msm, open list, Patrik Jakobsson,
	Sinan Kaya, linux-arm-kernel

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().

Add domain parameter to CDV_MSG_READ32, CDV_MSG_WRITE32, MRST_MSG_READ32,
MRST_MSG_WRITE32, MDFLD_MSG_READ32, MDFLD_MSG_WRITE32.

Extract pci_dev from struct drm_device and use pdev to find the domain
number while calling pci_get_domain_bus_and_slot().

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/gpu/drm/gma500/cdv_device.c | 16 +++++++++-------
 drivers/gpu/drm/gma500/gma_device.c |  4 +++-
 drivers/gpu/drm/gma500/mid_bios.c   | 12 +++++++++---
 drivers/gpu/drm/gma500/psb_drv.c    | 10 ++++++++--
 drivers/gpu/drm/gma500/psb_drv.h    | 18 ++++++++++--------
 5 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c
index 8745971..3a3bf75 100644
--- a/drivers/gpu/drm/gma500/cdv_device.c
+++ b/drivers/gpu/drm/gma500/cdv_device.c
@@ -185,21 +185,22 @@ static int cdv_backlight_init(struct drm_device *dev)
  *	for this and the MID devices.
  */
 
-static inline u32 CDV_MSG_READ32(uint port, uint offset)
+static inline u32 CDV_MSG_READ32(int domain, uint port, uint offset)
 {
 	int mcr = (0x10<<24) | (port << 16) | (offset << 8);
 	uint32_t ret_val = 0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_read_config_dword(pci_root, 0xD4, &ret_val);
 	pci_dev_put(pci_root);
 	return ret_val;
 }
 
-static inline void CDV_MSG_WRITE32(uint port, uint offset, u32 value)
+static inline void CDV_MSG_WRITE32(int domain, uint port, uint offset,
+				   u32 value)
 {
 	int mcr = (0x11<<24) | (port << 16) | (offset << 8) | 0xF0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD4, value);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_dev_put(pci_root);
@@ -216,11 +217,12 @@ static void cdv_init_pm(struct drm_device *dev)
 {
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	u32 pwr_cnt;
+	int domain = pci_domain_nr(dev->pdev->bus);
 	int i;
 
-	dev_priv->apm_base = CDV_MSG_READ32(PSB_PUNIT_PORT,
+	dev_priv->apm_base = CDV_MSG_READ32(domain, PSB_PUNIT_PORT,
 							PSB_APMBA) & 0xFFFF;
-	dev_priv->ospm_base = CDV_MSG_READ32(PSB_PUNIT_PORT,
+	dev_priv->ospm_base = CDV_MSG_READ32(domain, PSB_PUNIT_PORT,
 							PSB_OSPMBA) & 0xFFFF;
 
 	/* Power status */
@@ -251,7 +253,7 @@ static void cdv_errata(struct drm_device *dev)
 	 *	Bonus Launch to work around the issue, by degrading
 	 *	performance.
 	 */
-	 CDV_MSG_WRITE32(3, 0x30, 0x08027108);
+	 CDV_MSG_WRITE32(pci_domain_nr(dev->pdev->bus), 3, 0x30, 0x08027108);
 }
 
 /**
diff --git a/drivers/gpu/drm/gma500/gma_device.c b/drivers/gpu/drm/gma500/gma_device.c
index 4a295f9..a7fb6de 100644
--- a/drivers/gpu/drm/gma500/gma_device.c
+++ b/drivers/gpu/drm/gma500/gma_device.c
@@ -19,7 +19,9 @@
 void gma_get_core_freq(struct drm_device *dev)
 {
 	uint32_t clock;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root =
+		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
+					    0, 0);
 	struct drm_psb_private *dev_priv = dev->dev_private;
 
 	/*pci_write_config_dword(pci_root, 0xD4, 0x00C32004);*/
diff --git a/drivers/gpu/drm/gma500/mid_bios.c b/drivers/gpu/drm/gma500/mid_bios.c
index 1fa1633..7171b74 100644
--- a/drivers/gpu/drm/gma500/mid_bios.c
+++ b/drivers/gpu/drm/gma500/mid_bios.c
@@ -32,7 +32,9 @@
 static void mid_get_fuse_settings(struct drm_device *dev)
 {
 	struct drm_psb_private *dev_priv = dev->dev_private;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root =
+		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
+					    0, 0);
 	uint32_t fuse_value = 0;
 	uint32_t fuse_value_tmp = 0;
 
@@ -104,7 +106,9 @@ static void mid_get_fuse_settings(struct drm_device *dev)
 static void mid_get_pci_revID(struct drm_psb_private *dev_priv)
 {
 	uint32_t platform_rev_id = 0;
-	struct pci_dev *pci_gfx_root = pci_get_bus_and_slot(0, PCI_DEVFN(2, 0));
+	int domain = pci_domain_nr(dev_priv->dev->pdev->bus);
+	struct pci_dev *pci_gfx_root =
+		pci_get_domain_bus_and_slot(domain, 0, PCI_DEVFN(2, 0));
 
 	if (pci_gfx_root == NULL) {
 		WARN_ON(1);
@@ -281,7 +285,9 @@ static void mid_get_vbt_data(struct drm_psb_private *dev_priv)
 	u32 addr;
 	u8 __iomem *vbt_virtual;
 	struct mid_vbt_header vbt_header;
-	struct pci_dev *pci_gfx_root = pci_get_bus_and_slot(0, PCI_DEVFN(2, 0));
+	struct pci_dev *pci_gfx_root =
+		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
+					    0, PCI_DEVFN(2, 0));
 	int ret = -1;
 
 	/* Get the address of the platform config vbt */
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index 38d09d4..ac32ab5 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -248,7 +248,11 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
 		goto out_err;
 
 	if (IS_MRST(dev)) {
-		dev_priv->aux_pdev = pci_get_bus_and_slot(0, PCI_DEVFN(3, 0));
+		int domain = pci_domain_nr(dev->pdev->bus);
+
+		dev_priv->aux_pdev =
+			pci_get_domain_bus_and_slot(domain, 0,
+						    PCI_DEVFN(3, 0));
 
 		if (dev_priv->aux_pdev) {
 			resource_start = pci_resource_start(dev_priv->aux_pdev,
@@ -268,7 +272,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
 		}
 		dev_priv->gmbus_reg = dev_priv->aux_reg;
 
-		dev_priv->lpc_pdev = pci_get_bus_and_slot(0, PCI_DEVFN(31, 0));
+		dev_priv->lpc_pdev =
+			pci_get_domain_bus_and_slot(domain, 0,
+						    PCI_DEVFN(31, 0));
 		if (dev_priv->lpc_pdev) {
 			pci_read_config_word(dev_priv->lpc_pdev, PSB_LPC_GBA,
 				&dev_priv->lpc_gpio_base);
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index 4918efc..e8300f5 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -780,38 +780,40 @@ extern int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
 extern int drm_idle_check_interval;
 
 /* Utilities */
-static inline u32 MRST_MSG_READ32(uint port, uint offset)
+static inline u32 MRST_MSG_READ32(int domain, uint port, uint offset)
 {
 	int mcr = (0xD0<<24) | (port << 16) | (offset << 8);
 	uint32_t ret_val = 0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_read_config_dword(pci_root, 0xD4, &ret_val);
 	pci_dev_put(pci_root);
 	return ret_val;
 }
-static inline void MRST_MSG_WRITE32(uint port, uint offset, u32 value)
+static inline void MRST_MSG_WRITE32(int domain, uint port, uint offset,
+				    u32 value)
 {
 	int mcr = (0xE0<<24) | (port << 16) | (offset << 8) | 0xF0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD4, value);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_dev_put(pci_root);
 }
-static inline u32 MDFLD_MSG_READ32(uint port, uint offset)
+static inline u32 MDFLD_MSG_READ32(int domain, uint port, uint offset)
 {
 	int mcr = (0x10<<24) | (port << 16) | (offset << 8);
 	uint32_t ret_val = 0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_read_config_dword(pci_root, 0xD4, &ret_val);
 	pci_dev_put(pci_root);
 	return ret_val;
 }
-static inline void MDFLD_MSG_WRITE32(uint port, uint offset, u32 value)
+static inline void MDFLD_MSG_WRITE32(int domain, uint port, uint offset,
+				     u32 value)
 {
 	int mcr = (0x11<<24) | (port << 16) | (offset << 8) | 0xF0;
-	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
+	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
 	pci_write_config_dword(pci_root, 0xD4, value);
 	pci_write_config_dword(pci_root, 0xD0, mcr);
 	pci_dev_put(pci_root);
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 09/26] drm/nouveau: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (7 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 08/26] drm/gma500: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-04 12:26   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 10/26] Drivers: ide: " Sinan Kaya
                   ` (17 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-kernel, David Airlie, linux-arm-msm, open list,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS, Sinan Kaya,
	Ben Skeggs, open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS,
	Ilia Mirkin

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().

Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
and extract the domain number from
1. struct pci_dev
2. struct pci_dev through drm_device->pdev
3. struct pci_dev through fb->subdev->drm_device->pdev

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/gpu/drm/nouveau/dispnv04/arb.c           |  4 +++-
 drivers/gpu/drm/nouveau/dispnv04/hw.c            | 10 +++++++---
 drivers/gpu/drm/nouveau/nouveau_drm.c            |  3 ++-
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c | 10 +++++++++-
 4 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
index 90075b6..c79160c 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
@@ -213,8 +213,10 @@ struct nv_sim_state {
 	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
 	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
 		uint32_t type;
+		int domain = pci_domain_nr(dev->pdev->bus);
 
-		pci_read_config_dword(pci_get_bus_and_slot(0, 1), 0x7c, &type);
+		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
+				      0x7c, &type);
 
 		sim_data.memory_type = (type >> 12) & 1;
 		sim_data.memory_width = 64;
diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
index b985990..0c9bdf0 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
@@ -216,12 +216,15 @@
 {
 	struct nvkm_pll_vals pllvals;
 	int ret;
+	int domain;
+
+	domain = pci_domain_nr(dev->pdev->bus);
 
 	if (plltype == PLL_MEMORY &&
 	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
 		uint32_t mpllP;
-
-		pci_read_config_dword(pci_get_bus_and_slot(0, 3), 0x6c, &mpllP);
+		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
+				      0x6c, &mpllP);
 		mpllP = (mpllP >> 8) & 0xf;
 		if (!mpllP)
 			mpllP = 4;
@@ -232,7 +235,8 @@
 	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
 		uint32_t clock;
 
-		pci_read_config_dword(pci_get_bus_and_slot(0, 5), 0x4c, &clock);
+		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
+				      0x4c, &clock);
 		return clock / 1000;
 	}
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 8d4a5be..33b6139 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -524,7 +524,8 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
 	}
 
 	/* subfunction one is a hdmi audio device? */
-	drm->hdmi_device = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
+	drm->hdmi_device = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
+						(unsigned int)pdev->bus->number,
 						PCI_DEVFN(PCI_SLOT(pdev->devfn), 1));
 
 	if (!drm->hdmi_device) {
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
index 4c07d10..18241c6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
@@ -28,8 +28,16 @@
 {
 	struct pci_dev *bridge;
 	u32 mem, mib;
+	int domain = 0;
+	struct pci_dev *pdev = NULL;
 
-	bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 1));
+	if (dev_is_pci(fb->subdev.device->dev))
+		pdev = to_pci_dev(fb->subdev.device->dev);
+
+	if (pdev)
+		domain = pci_domain_nr(pdev->bus);
+
+	bridge = pci_get_domain_bus_and_slot(domain, 0, PCI_DEVFN(0, 1));
 	if (!bridge) {
 		nvkm_error(&fb->subdev, "no bridge device\n");
 		return -ENODEV;
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 10/26] Drivers: ide: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (8 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 09/26] drm/nouveau: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19 14:13   ` David Miller
  2017-12-19  5:37 ` [PATCH V4 11/26] iommu/amd: " Sinan Kaya
                   ` (16 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya, open list:IDE SUBSYSTEM,
	David S. Miller, linux-arm-kernel

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().

Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
and extract the domain number from struct pci_dev.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/ide/sl82c105.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/ide/sl82c105.c b/drivers/ide/sl82c105.c
index 8755df3..3300dac 100644
--- a/drivers/ide/sl82c105.c
+++ b/drivers/ide/sl82c105.c
@@ -239,8 +239,9 @@ static u8 sl82c105_bridge_revision(struct pci_dev *dev)
 	/*
 	 * The bridge should be part of the same device, but function 0.
 	 */
-	bridge = pci_get_bus_and_slot(dev->bus->number,
-			       PCI_DEVFN(PCI_SLOT(dev->devfn), 0));
+	bridge = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus),
+					dev->bus->number,
+					PCI_DEVFN(PCI_SLOT(dev->devfn), 0));
 	if (!bridge)
 		return -1;
 
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (9 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 10/26] Drivers: ide: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-04 12:25   ` Sinan Kaya
  2018-01-17 13:02   ` Joerg Roedel
  2017-12-19  5:37 ` [PATCH V4 12/26] powerpc/powermac: " Sinan Kaya
                   ` (15 subsequent siblings)
  26 siblings, 2 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, Joerg Roedel, open list, Sinan Kaya,
	open list:AMD IOMMU AMD-VI, linux-arm-kernel

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().

Hard-code the domain number as 0 for the AMD IOMMU driver.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/iommu/amd_iommu.c      | 3 ++-
 drivers/iommu/amd_iommu_init.c | 9 +++++----
 drivers/iommu/amd_iommu_v2.c   | 3 ++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 7d5eb00..821547b 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -527,7 +527,8 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
 	struct iommu_dev_data *dev_data = NULL;
 	struct pci_dev *pdev;
 
-	pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+	pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+					   devid & 0xff);
 	if (pdev)
 		dev_data = get_dev_data(&pdev->dev);
 
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 6fe2d03..4e4a615 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1697,8 +1697,8 @@ static int iommu_init_pci(struct amd_iommu *iommu)
 	u32 range, misc, low, high;
 	int ret;
 
-	iommu->dev = pci_get_bus_and_slot(PCI_BUS_NUM(iommu->devid),
-					  iommu->devid & 0xff);
+	iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
+						 iommu->devid & 0xff);
 	if (!iommu->dev)
 		return -ENODEV;
 
@@ -1764,8 +1764,9 @@ static int iommu_init_pci(struct amd_iommu *iommu)
 	if (is_rd890_iommu(iommu->dev)) {
 		int i, j;
 
-		iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
-				PCI_DEVFN(0, 0));
+		iommu->root_pdev =
+			pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
+						    PCI_DEVFN(0, 0));
 
 		/*
 		 * Some rd890 systems may not be fully reconfigured by the
diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c
index 7d94e1d..8696382 100644
--- a/drivers/iommu/amd_iommu_v2.c
+++ b/drivers/iommu/amd_iommu_v2.c
@@ -564,7 +564,8 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)
 	finish      = (iommu_fault->tag >> 9) & 1;
 
 	devid = iommu_fault->device_id;
-	pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
+	pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
+					   devid & 0xff);
 	if (!pdev)
 		return -ENODEV;
 	dev_data = get_dev_data(&pdev->dev);
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 12/26] powerpc/powermac: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (10 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 11/26] iommu/amd: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 13/26] bnx2x: " Sinan Kaya
                   ` (14 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya, Benjamin Herrenschmidt,
	open list:LINUX FOR POWER MACINTOSH, linux-arm-kernel

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().

Hard-code the domain number as 0 to match the previous behavior.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/macintosh/via-pmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index e8b29fc..08849e3 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -1799,7 +1799,7 @@ static int powerbook_sleep_grackle(void)
 	struct adb_request req;
 	struct pci_dev *grackle;
 
-	grackle = pci_get_bus_and_slot(0, 0);
+	grackle = pci_get_domain_bus_and_slot(0, 0, 0);
 	if (!grackle)
 		return -ENODEV;
 
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 13/26] bnx2x: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (11 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 12/26] powerpc/powermac: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19 14:14   ` David Miller
  2017-12-19  5:37 ` [PATCH V4 14/26] pch_gbe: " Sinan Kaya
                   ` (13 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya, Ariel Elior,
	open list:BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER,
	supporter:BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER,
	linux-arm-kernel

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().

Introduce bnx2x_vf_domain() function to extract the domain information
and save it to VF specific data structure.

Use the saved domain value while calling pci_get_domain_bus_and_slot().

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 10 +++++++++-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h |  1 +
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
index 3591077..ffa7959 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
@@ -812,7 +812,7 @@ static u8 bnx2x_vf_is_pcie_pending(struct bnx2x *bp, u8 abs_vfid)
 	if (!vf)
 		return false;
 
-	dev = pci_get_bus_and_slot(vf->bus, vf->devfn);
+	dev = pci_get_domain_bus_and_slot(vf->domain, vf->bus, vf->devfn);
 	if (dev)
 		return bnx2x_is_pcie_pending(dev);
 	return false;
@@ -1041,6 +1041,13 @@ void bnx2x_iov_init_dmae(struct bnx2x *bp)
 		REG_WR(bp, DMAE_REG_BACKWARD_COMP_EN, 0);
 }
 
+static int bnx2x_vf_domain(struct bnx2x *bp, int vfid)
+{
+	struct pci_dev *dev = bp->pdev;
+
+	return pci_domain_nr(dev->bus);
+}
+
 static int bnx2x_vf_bus(struct bnx2x *bp, int vfid)
 {
 	struct pci_dev *dev = bp->pdev;
@@ -1606,6 +1613,7 @@ int bnx2x_iov_nic_init(struct bnx2x *bp)
 		struct bnx2x_virtf *vf = BP_VF(bp, vfid);
 
 		/* fill in the BDF and bars */
+		vf->domain = bnx2x_vf_domain(bp, vfid);
 		vf->bus = bnx2x_vf_bus(bp, vfid);
 		vf->devfn = bnx2x_vf_devfn(bp, vfid);
 		bnx2x_vf_set_bars(bp, vf);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
index 53466f6..eb814c6 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h
@@ -182,6 +182,7 @@ struct bnx2x_virtf {
 	u32 error;	/* 0 means all's-well */
 
 	/* BDF */
+	unsigned int domain;
 	unsigned int bus;
 	unsigned int devfn;
 
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (12 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 13/26] bnx2x: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19 10:45   ` Andy Shevchenko
  2017-12-19 14:13   ` David Miller
  2017-12-19  5:37 ` [PATCH V4 15/26] PCI: cpqhp: " Sinan Kaya
                   ` (12 subsequent siblings)
  26 siblings, 2 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Kees Cook, linux-arm-msm, open list, Sinan Kaya, Eric Dumazet,
	open list:NETWORKING DRIVERS, Tobias Klauser, Andy Shevchenko,
	David S. Miller, linux-arm-kernel

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 the domain information from pdev while calling into
pci_get_domain_bus_and_slot() function.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 40e52ff..7cd4946 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -2594,8 +2594,10 @@ static int pch_gbe_probe(struct pci_dev *pdev,
 	if (adapter->pdata && adapter->pdata->platform_init)
 		adapter->pdata->platform_init(pdev);
 
-	adapter->ptp_pdev = pci_get_bus_and_slot(adapter->pdev->bus->number,
-					       PCI_DEVFN(12, 4));
+	adapter->ptp_pdev =
+		pci_get_domain_bus_and_slot(pci_domain_nr(adapter->pdev->bus),
+					    adapter->pdev->bus->number,
+					    PCI_DEVFN(12, 4));
 
 	netdev->netdev_ops = &pch_gbe_netdev_ops;
 	netdev->watchdog_timeo = PCH_GBE_WATCHDOG_PERIOD;
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 15/26] PCI: cpqhp: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (13 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 14/26] pch_gbe: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 16/26] PCI: ibmphp: " Sinan Kaya
                   ` (11 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Sinan Kaya, linux-arm-msm, Bjorn Helgaas, open list, linux-arm-kernel

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().

Hard-coding the domain number as 0. The code doesn't seem to be ready
for multiple domains.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/pci/hotplug/cpqphp_pci.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/hotplug/cpqphp_pci.c b/drivers/pci/hotplug/cpqphp_pci.c
index e220d49..8897a77 100644
--- a/drivers/pci/hotplug/cpqphp_pci.c
+++ b/drivers/pci/hotplug/cpqphp_pci.c
@@ -89,7 +89,9 @@ int cpqhp_configure_device(struct controller *ctrl, struct pci_func *func)
 	pci_lock_rescan_remove();
 
 	if (func->pci_dev == NULL)
-		func->pci_dev = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, func->function));
+		func->pci_dev = pci_get_domain_bus_and_slot(0, func->bus,
+							PCI_DEVFN(func->device,
+							func->function));
 
 	/* No pci device, we need to create it then */
 	if (func->pci_dev == NULL) {
@@ -99,7 +101,9 @@ int cpqhp_configure_device(struct controller *ctrl, struct pci_func *func)
 		if (num)
 			pci_bus_add_devices(ctrl->pci_dev->bus);
 
-		func->pci_dev = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, func->function));
+		func->pci_dev = pci_get_domain_bus_and_slot(0, func->bus,
+							PCI_DEVFN(func->device,
+							func->function));
 		if (func->pci_dev == NULL) {
 			dbg("ERROR: pci_dev still null\n");
 			goto out;
@@ -129,7 +133,10 @@ int cpqhp_unconfigure_device(struct pci_func *func)
 
 	pci_lock_rescan_remove();
 	for (j = 0; j < 8 ; j++) {
-		struct pci_dev *temp = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, j));
+		struct pci_dev *temp = pci_get_domain_bus_and_slot(0,
+							func->bus,
+							PCI_DEVFN(func->device,
+							j));
 		if (temp) {
 			pci_dev_put(temp);
 			pci_stop_and_remove_bus_device(temp);
@@ -319,6 +326,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
 	int cloop = 0;
 	int stop_it;
 	int index;
+	u16 devfn;
 
 	/* Decide which slots are supported */
 
@@ -416,7 +424,9 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
 			new_slot->switch_save = 0x10;
 			/* In case of unsupported board */
 			new_slot->status = DevError;
-			new_slot->pci_dev = pci_get_bus_and_slot(new_slot->bus, (new_slot->device << 3) | new_slot->function);
+			devfn = (new_slot->device << 3) | new_slot->function;
+			new_slot->pci_dev = pci_get_domain_bus_and_slot(0,
+							new_slot->bus, devfn);
 
 			for (cloop = 0; cloop < 0x20; cloop++) {
 				rc = pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(device, function), cloop << 2, (u32 *) &(new_slot->config_space[cloop]));
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 16/26] PCI: ibmphp: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (14 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 15/26] PCI: cpqhp: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 17/26] PCI/quirks: " Sinan Kaya
                   ` (10 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya, Bjorn Helgaas,
	Arvind Yadav, linux-arm-kernel

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().

Hard-coding the domain parameter as 0 since the code doesn't seem to be
ready for multiple domains.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/pci/hotplug/ibmphp_core.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/hotplug/ibmphp_core.c b/drivers/pci/hotplug/ibmphp_core.c
index 73cf846..92dd882 100644
--- a/drivers/pci/hotplug/ibmphp_core.c
+++ b/drivers/pci/hotplug/ibmphp_core.c
@@ -707,7 +707,8 @@ static void ibm_unconfigure_device(struct pci_func *func)
 	pci_lock_rescan_remove();
 
 	for (j = 0; j < 0x08; j++) {
-		temp = pci_get_bus_and_slot(func->busno, (func->device << 3) | j);
+		temp = pci_get_domain_bus_and_slot(0, func->busno,
+						   (func->device << 3) | j);
 		if (temp) {
 			pci_stop_and_remove_bus_device(temp);
 			pci_dev_put(temp);
@@ -780,7 +781,7 @@ static int ibm_configure_device(struct pci_func *func)
 	if (!(bus_structure_fixup(func->busno)))
 		flag = 1;
 	if (func->dev == NULL)
-		func->dev = pci_get_bus_and_slot(func->busno,
+		func->dev = pci_get_domain_bus_and_slot(0, func->busno,
 				PCI_DEVFN(func->device, func->function));
 
 	if (func->dev == NULL) {
@@ -793,7 +794,7 @@ static int ibm_configure_device(struct pci_func *func)
 		if (num)
 			pci_bus_add_devices(bus);
 
-		func->dev = pci_get_bus_and_slot(func->busno,
+		func->dev = pci_get_domain_bus_and_slot(0, func->busno,
 				PCI_DEVFN(func->device, func->function));
 		if (func->dev == NULL) {
 			err("ERROR... : pci_dev still NULL\n");
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 17/26] PCI/quirks: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (15 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 16/26] PCI: ibmphp: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 18/26] PCI/syscall: " Sinan Kaya
                   ` (9 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Sinan Kaya, linux-arm-msm, Bjorn Helgaas, open list, linux-arm-kernel

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().

Extract the domain number from pdev while calling into
pci_get_domain_bus_and_slot() function.

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

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index fd49b97..d7aa31f 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2698,7 +2698,8 @@ static void __nv_msi_ht_cap_quirk(struct pci_dev *dev, int all)
 	 * HT MSI mapping should be disabled on devices that are below
 	 * a non-Hypertransport host bridge. Locate the host bridge...
 	 */
-	host_bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
+	host_bridge = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus), 0,
+						  PCI_DEVFN(0, 0));
 	if (host_bridge == NULL) {
 		dev_warn(&dev->dev, "nv_msi_ht_cap_quirk didn't locate host bridge\n");
 		return;
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 18/26] PCI/syscall: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (16 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 17/26] PCI/quirks: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 19/26] xen: " Sinan Kaya
                   ` (8 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Sinan Kaya, linux-arm-msm, Bjorn Helgaas, open list, linux-arm-kernel

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().

Hard-coding the domain value as 0 because the domain information is not
coming from the userspace.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/pci/syscall.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
index 83efa00..e725f99 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
@@ -28,7 +28,7 @@
 		return -EPERM;
 
 	err = -ENODEV;
-	dev = pci_get_bus_and_slot(bus, dfn);
+	dev = pci_get_domain_bus_and_slot(0, bus, dfn);
 	if (!dev)
 		goto error;
 
@@ -96,7 +96,7 @@
 	if (!capable(CAP_SYS_ADMIN))
 		return -EPERM;
 
-	dev = pci_get_bus_and_slot(bus, dfn);
+	dev = pci_get_domain_bus_and_slot(0, bus, dfn);
 	if (!dev)
 		return -ENODEV;
 
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 19/26] xen: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (17 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 18/26] PCI/syscall: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 20/26] openprom: " Sinan Kaya
                   ` (7 subsequent siblings)
  26 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Juergen Gross, Konrad Rzeszutek Wilk, linux-arm-msm, open list,
	Sinan Kaya, Bjorn Helgaas,
	moderated list:XEN HYPERVISOR INTERFACE, Boris Ostrovsky,
	linux-arm-kernel

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.

Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
extract the domain number. Other places, use the actual domain number from
the device.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
 drivers/pci/xen-pcifront.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
index 8fc2e95..94b25b5 100644
--- a/drivers/pci/xen-pcifront.c
+++ b/drivers/pci/xen-pcifront.c
@@ -595,6 +595,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
 	struct pci_driver *pdrv;
 	int bus = pdev->sh_info->aer_op.bus;
 	int devfn = pdev->sh_info->aer_op.devfn;
+	int domain = pdev->sh_info->aer_op.domain;
 	struct pci_dev *pcidev;
 	int flag = 0;
 
@@ -603,7 +604,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
 		cmd, bus, devfn);
 	result = PCI_ERS_RESULT_NONE;
 
-	pcidev = pci_get_bus_and_slot(bus, devfn);
+	pcidev = pci_get_domain_bus_and_slot(domain, bus, devfn);
 	if (!pcidev || !pcidev->driver) {
 		dev_err(&pdev->xdev->dev, "device or AER driver is NULL\n");
 		pci_dev_put(pcidev);
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 20/26] openprom: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (18 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 19/26] xen: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19 14:13   ` David Miller
  2017-12-19  5:37 ` [PATCH V4 21/26] backlight: " Sinan Kaya
                   ` (6 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, open list, Sinan Kaya,
	open list:SPARC + UltraSPARC sparc/sparc64, David S. Miller,
	linux-arm-kernel

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().

Hard-coding the domain as 0 since domain information is not available.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/sbus/char/openprom.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c
index 2c2e6a3..7b31f19 100644
--- a/drivers/sbus/char/openprom.c
+++ b/drivers/sbus/char/openprom.c
@@ -251,8 +251,9 @@ static int oprompci2node(void __user *argp, struct device_node *dp, struct openp
 		struct pci_dev *pdev;
 		struct device_node *dp;
 
-		pdev = pci_get_bus_and_slot (((int *) op->oprom_array)[0],
-				      ((int *) op->oprom_array)[1]);
+		pdev = pci_get_domain_bus_and_slot(0,
+						((int *) op->oprom_array)[0],
+						((int *) op->oprom_array)[1]);
 
 		dp = pci_device_to_OF_node(pdev);
 		data->current_node = dp;
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 21/26] backlight: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (19 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 20/26] openprom: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2017-12-19  8:51   ` Lee Jones
  2017-12-19  5:37 ` [PATCH V4 22/26] video: fbdev: intelfb: " Sinan Kaya
                   ` (5 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Daniel Thompson, Bartlomiej Zolnierkiewicz, linux-arm-msm,
	open list:FRAMEBUFFER LAYER, open list:FRAMEBUFFER LAYER,
	open list, Sinan Kaya, Jingoo Han, Lee Jones, linux-arm-kernel

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().

Hard-coding the domain as 0.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
---
 drivers/video/backlight/apple_bl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/backlight/apple_bl.c b/drivers/video/backlight/apple_bl.c
index d843296..6a34ab9 100644
--- a/drivers/video/backlight/apple_bl.c
+++ b/drivers/video/backlight/apple_bl.c
@@ -143,7 +143,7 @@ static int apple_bl_add(struct acpi_device *dev)
 	struct pci_dev *host;
 	int intensity;
 
-	host = pci_get_bus_and_slot(0, 0);
+	host = pci_get_domain_bus_and_slot(0, 0, 0);
 
 	if (!host) {
 		pr_err("unable to find PCI host\n");
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 22/26] video: fbdev: intelfb: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (20 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 21/26] backlight: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-02 13:38   ` Sinan Kaya
  2017-12-19  5:37 ` [PATCH V4 23/26] video: fbdev: nvidia: " Sinan Kaya
                   ` (4 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:INTEL FRAMEBUFFER DRIVER excluding 810 and 815,
	Bartlomiej Zolnierkiewicz, linux-arm-msm, Maik Broemme,
	open list, open list:FRAMEBUFFER LAYER, Sinan Kaya,
	linux-arm-kernel

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().

Find the domain number from pdev.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/video/fbdev/intelfb/intelfbhw.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/intelfb/intelfbhw.c b/drivers/video/fbdev/intelfb/intelfbhw.c
index 83fec57..57aff74 100644
--- a/drivers/video/fbdev/intelfb/intelfbhw.c
+++ b/drivers/video/fbdev/intelfb/intelfbhw.c
@@ -181,7 +181,9 @@ int intelfbhw_get_memory(struct pci_dev *pdev, int *aperture_size,
 		return 1;
 
 	/* Find the bridge device.  It is always 0:0.0 */
-	if (!(bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0)))) {
+	bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus), 0,
+						 PCI_DEVFN(0, 0));
+	if (!bridge_dev) {
 		ERR_MSG("cannot find bridge device\n");
 		return 1;
 	}
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 23/26] video: fbdev: nvidia: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (21 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 22/26] video: fbdev: intelfb: " Sinan Kaya
@ 2017-12-19  5:37 ` Sinan Kaya
  2018-01-02 13:38   ` Sinan Kaya
  2017-12-19  5:38 ` [PATCH V4 24/26] video: fbdev: riva: " Sinan Kaya
                   ` (3 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:NVIDIA rivafb and nvidiafb FRAMEBUFFER DRIVER,
	Antonino Daplas, Bartlomiej Zolnierkiewicz, linux-arm-msm,
	open list, open list:FRAMEBUFFER LAYER, Sinan Kaya,
	linux-arm-kernel

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().

struct nvidia_par has a pointer to struct pci_dev. Use the pci_dev
member to extract the domain information and pass it to
pci_get_domain_bus_and_slot() function.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/video/fbdev/nvidia/nv_hw.c    | 11 ++++++-----
 drivers/video/fbdev/nvidia/nv_setup.c |  3 ++-
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/video/fbdev/nvidia/nv_hw.c b/drivers/video/fbdev/nvidia/nv_hw.c
index 81c80ac..8335da4 100644
--- a/drivers/video/fbdev/nvidia/nv_hw.c
+++ b/drivers/video/fbdev/nvidia/nv_hw.c
@@ -683,10 +683,11 @@ static void nForceUpdateArbitrationSettings(unsigned VClk,
 	nv10_sim_state sim_data;
 	unsigned int M, N, P, pll, MClk, NVClk, memctrl;
 	struct pci_dev *dev;
+	int domain = pci_domain_nr(par->pci_dev->bus);
 
 	if ((par->Chipset & 0x0FF0) == 0x01A0) {
 		unsigned int uMClkPostDiv;
-		dev = pci_get_bus_and_slot(0, 3);
+		dev = pci_get_domain_bus_and_slot(domain, 0, 3);
 		pci_read_config_dword(dev, 0x6C, &uMClkPostDiv);
 		uMClkPostDiv = (uMClkPostDiv >> 8) & 0xf;
 
@@ -694,7 +695,7 @@ static void nForceUpdateArbitrationSettings(unsigned VClk,
 			uMClkPostDiv = 4;
 		MClk = 400000 / uMClkPostDiv;
 	} else {
-		dev = pci_get_bus_and_slot(0, 5);
+		dev = pci_get_domain_bus_and_slot(domain, 0, 5);
 		pci_read_config_dword(dev, 0x4c, &MClk);
 		MClk /= 1000;
 	}
@@ -707,13 +708,13 @@ static void nForceUpdateArbitrationSettings(unsigned VClk,
 	sim_data.pix_bpp = (char)pixelDepth;
 	sim_data.enable_video = 0;
 	sim_data.enable_mp = 0;
-	dev = pci_get_bus_and_slot(0, 1);
+	dev = pci_get_domain_bus_and_slot(domain, 0, 1);
 	pci_read_config_dword(dev, 0x7C, &sim_data.memory_type);
 	pci_dev_put(dev);
 	sim_data.memory_type = (sim_data.memory_type >> 12) & 1;
 	sim_data.memory_width = 64;
 
-	dev = pci_get_bus_and_slot(0, 3);
+	dev = pci_get_domain_bus_and_slot(domain, 0, 3);
 	pci_read_config_dword(dev, 0, &memctrl);
 	pci_dev_put(dev);
 	memctrl >>= 16;
@@ -721,7 +722,7 @@ static void nForceUpdateArbitrationSettings(unsigned VClk,
 	if ((memctrl == 0x1A9) || (memctrl == 0x1AB) || (memctrl == 0x1ED)) {
 		u32 dimm[3];
 
-		dev = pci_get_bus_and_slot(0, 2);
+		dev = pci_get_domain_bus_and_slot(domain, 0, 2);
 		pci_read_config_dword(dev, 0x40, &dimm[0]);
 		dimm[0] = (dimm[0] >> 8) & 0x4f;
 		pci_read_config_dword(dev, 0x44, &dimm[1]);
diff --git a/drivers/video/fbdev/nvidia/nv_setup.c b/drivers/video/fbdev/nvidia/nv_setup.c
index 2f2e162..b17acd2 100644
--- a/drivers/video/fbdev/nvidia/nv_setup.c
+++ b/drivers/video/fbdev/nvidia/nv_setup.c
@@ -264,7 +264,8 @@ static void nv10GetConfig(struct nvidia_par *par)
 	}
 #endif
 
-	dev = pci_get_bus_and_slot(0, 1);
+	dev = pci_get_domain_bus_and_slot(pci_domain_nr(par->pci_dev->bus),
+					  0, 1);
 	if ((par->Chipset & 0xffff) == 0x01a0) {
 		u32 amt;
 
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 24/26] video: fbdev: riva: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (22 preceding siblings ...)
  2017-12-19  5:37 ` [PATCH V4 23/26] video: fbdev: nvidia: " Sinan Kaya
@ 2017-12-19  5:38 ` Sinan Kaya
  2018-01-02 13:37   ` Sinan Kaya
  2017-12-19  5:38 ` [PATCH V4 25/26] i7300_idle: remove unused file Sinan Kaya
                   ` (2 subsequent siblings)
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:38 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:NVIDIA rivafb and nvidiafb FRAMEBUFFER DRIVER,
	Antonino Daplas, Bartlomiej Zolnierkiewicz, linux-arm-msm,
	open list, open list:FRAMEBUFFER LAYER, Sinan Kaya,
	linux-arm-kernel

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().

struct riva_par has a pointer to struct pci_dev. Use the pci_dev member
to extract the domain information.

Change the function signature for CalcStateExt and RivaGetConfig to pass
in struct pci_dev in addition to RIVA_HW_INST so that code inside the
riva_hw.c can also calculate domain number and pass it to
pci_get_domain_bus_and_slot().

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/video/fbdev/riva/fbdev.c     |  2 +-
 drivers/video/fbdev/riva/nv_driver.c |  7 ++++---
 drivers/video/fbdev/riva/riva_hw.c   | 20 +++++++++++++-------
 drivers/video/fbdev/riva/riva_hw.h   |  3 ++-
 4 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/video/fbdev/riva/fbdev.c b/drivers/video/fbdev/riva/fbdev.c
index 1ea78bb..ff82823 100644
--- a/drivers/video/fbdev/riva/fbdev.c
+++ b/drivers/video/fbdev/riva/fbdev.c
@@ -780,7 +780,7 @@ static int riva_load_video_mode(struct fb_info *info)
 	else
 		newmode.misc_output |= 0x80;	
 
-	rc = CalcStateExt(&par->riva, &newmode.ext, bpp, width,
+	rc = CalcStateExt(&par->riva, &newmode.ext, par->pdev, bpp, width,
 			  hDisplaySize, height, dotClock);
 	if (rc)
 		goto out;
diff --git a/drivers/video/fbdev/riva/nv_driver.c b/drivers/video/fbdev/riva/nv_driver.c
index f3694cf..a3d9c66 100644
--- a/drivers/video/fbdev/riva/nv_driver.c
+++ b/drivers/video/fbdev/riva/nv_driver.c
@@ -159,6 +159,7 @@ unsigned long riva_get_memlen(struct riva_par *par)
 	unsigned int chipset = par->Chipset;
 	struct pci_dev* dev;
 	u32 amt;
+	int domain = pci_domain_nr(par->pdev->bus);
 
 	switch (chip->Architecture) {
 	case NV_ARCH_03:
@@ -226,12 +227,12 @@ unsigned long riva_get_memlen(struct riva_par *par)
 	case NV_ARCH_30:
 		if(chipset == NV_CHIP_IGEFORCE2) {
 
-			dev = pci_get_bus_and_slot(0, 1);
+			dev = pci_get_domain_bus_and_slot(domain, 0, 1);
 			pci_read_config_dword(dev, 0x7C, &amt);
 			pci_dev_put(dev);
 			memlen = (((amt >> 6) & 31) + 1) * 1024;
 		} else if (chipset == NV_CHIP_0x01F0) {
-			dev = pci_get_bus_and_slot(0, 1);
+			dev = pci_get_domain_bus_and_slot(domain, 0, 1);
 			pci_read_config_dword(dev, 0x84, &amt);
 			pci_dev_put(dev);
 			memlen = (((amt >> 4) & 127) + 1) * 1024;
@@ -417,6 +418,6 @@ unsigned long riva_get_maxdclk(struct riva_par *par)
 	}
 	par->riva.flatPanel = (par->FlatPanel > 0) ? TRUE : FALSE;
 
-	RivaGetConfig(&par->riva, par->Chipset);
+	RivaGetConfig(&par->riva, par->pdev, par->Chipset);
 }
 
diff --git a/drivers/video/fbdev/riva/riva_hw.c b/drivers/video/fbdev/riva/riva_hw.c
index 8bdf37f..0601c13 100644
--- a/drivers/video/fbdev/riva/riva_hw.c
+++ b/drivers/video/fbdev/riva/riva_hw.c
@@ -1108,7 +1108,8 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
     unsigned      pixelDepth,
     unsigned     *burst,
     unsigned     *lwm,
-    RIVA_HW_INST *chip
+    RIVA_HW_INST *chip,
+    struct pci_dev *pdev
 )
 {
     nv10_fifo_info fifo_data;
@@ -1116,8 +1117,9 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
     unsigned int M, N, P, pll, MClk, NVClk;
     unsigned int uMClkPostDiv;
     struct pci_dev *dev;
+    int domain = pci_domain_nr(pdev->bus);
 
-    dev = pci_get_bus_and_slot(0, 3);
+    dev = pci_get_domain_bus_and_slot(domain, 0, 3);
     pci_read_config_dword(dev, 0x6C, &uMClkPostDiv);
     pci_dev_put(dev);
     uMClkPostDiv = (uMClkPostDiv >> 8) & 0xf;
@@ -1132,7 +1134,7 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
     sim_data.enable_video   = 0;
     sim_data.enable_mp      = 0;
 
-    dev = pci_get_bus_and_slot(0, 1);
+    dev = pci_get_domain_bus_and_slot(domain, 0, 1);
     pci_read_config_dword(dev, 0x7C, &sim_data.memory_type);
     pci_dev_put(dev);
     sim_data.memory_type    = (sim_data.memory_type >> 12) & 1;
@@ -1234,6 +1236,7 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
 (
     RIVA_HW_INST  *chip,
     RIVA_HW_STATE *state,
+    struct pci_dev *pdev,
     int            bpp,
     int            width,
     int            hDisplaySize,
@@ -1300,7 +1303,7 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
                                           pixelDepth * 8,
                                          &(state->arbitration0),
                                          &(state->arbitration1),
-                                          chip);
+                                          chip, pdev);
             } else {
                 nv10UpdateArbitrationSettings(VClk, 
                                           pixelDepth * 8, 
@@ -2102,10 +2105,12 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
 static void nv10GetConfig
 (
     RIVA_HW_INST *chip,
+    struct pci_dev *pdev,
     unsigned int chipset
 )
 {
     struct pci_dev* dev;
+    int domain = pci_domain_nr(pdev->bus);
     u32 amt;
 
 #ifdef __BIG_ENDIAN
@@ -2118,12 +2123,12 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
      * Fill in chip configuration.
      */
     if(chipset == NV_CHIP_IGEFORCE2) {
-        dev = pci_get_bus_and_slot(0, 1);
+        dev = pci_get_domain_bus_and_slot(domain, 0, 1);
         pci_read_config_dword(dev, 0x7C, &amt);
         pci_dev_put(dev);
         chip->RamAmountKBytes = (((amt >> 6) & 31) + 1) * 1024;
     } else if(chipset == NV_CHIP_0x01F0) {
-        dev = pci_get_bus_and_slot(0, 1);
+        dev = pci_get_domain_bus_and_slot(domain, 0, 1);
         pci_read_config_dword(dev, 0x84, &amt);
         pci_dev_put(dev);
         chip->RamAmountKBytes = (((amt >> 4) & 127) + 1) * 1024;
@@ -2224,6 +2229,7 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
 int RivaGetConfig
 (
     RIVA_HW_INST *chip,
+    struct pci_dev *pdev,
     unsigned int chipset
 )
 {
@@ -2245,7 +2251,7 @@ static char nv3_get_param(nv3_fifo_info *res_info, nv3_sim_state * state, nv3_ar
         case NV_ARCH_10:
         case NV_ARCH_20:
         case NV_ARCH_30:
-            nv10GetConfig(chip, chipset);
+            nv10GetConfig(chip, pdev, chipset);
             break;
         default:
             return (-1);
diff --git a/drivers/video/fbdev/riva/riva_hw.h b/drivers/video/fbdev/riva/riva_hw.h
index c2769f7..5e7b354 100644
--- a/drivers/video/fbdev/riva/riva_hw.h
+++ b/drivers/video/fbdev/riva/riva_hw.h
@@ -536,6 +536,7 @@
 (
     RIVA_HW_INST  *chip,
     RIVA_HW_STATE *state,
+    struct pci_dev *pdev,
     int            bpp,
     int            width,
     int            hDisplaySize,
@@ -546,7 +547,7 @@
 /*
  * External routines.
  */
-int RivaGetConfig(RIVA_HW_INST *, unsigned int);
+int RivaGetConfig(RIVA_HW_INST *chip, struct pci_dev *pdev, unsigned int c);
 /*
  * FIFO Free Count. Should attempt to yield processor if RIVA is busy.
  */
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 25/26] i7300_idle: remove unused file
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (23 preceding siblings ...)
  2017-12-19  5:38 ` [PATCH V4 24/26] video: fbdev: riva: " Sinan Kaya
@ 2017-12-19  5:38 ` Sinan Kaya
  2018-01-02 13:36   ` Sinan Kaya
  2017-12-19  5:38 ` [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function Sinan Kaya
  2018-01-11 23:57 ` [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Bjorn Helgaas
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:38 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Kate Stewart, Greg Kroah-Hartman, linux-arm-msm, open list,
	Sinan Kaya, Philippe Ombredanne, Thomas Gleixner,
	linux-arm-kernel

i7300_idle.h is not being called by any source file and contains calls to
pci_get_bus_and_slot() that we are trying to deprecate. Remove unused file.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 include/linux/i7300_idle.h | 84 ----------------------------------------------
 1 file changed, 84 deletions(-)
 delete mode 100644 include/linux/i7300_idle.h

diff --git a/include/linux/i7300_idle.h b/include/linux/i7300_idle.h
deleted file mode 100644
index 4dbe651..0000000
--- a/include/linux/i7300_idle.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifndef I7300_IDLE_H
-#define I7300_IDLE_H
-
-#include <linux/pci.h>
-
-/*
- * I/O AT controls (PCI bus 0 device 8 function 0)
- * DIMM controls (PCI bus 0 device 16 function 1)
- */
-#define IOAT_BUS 0
-#define IOAT_DEVFN PCI_DEVFN(8, 0)
-#define MEMCTL_BUS 0
-#define MEMCTL_DEVFN PCI_DEVFN(16, 1)
-
-struct fbd_ioat {
-	unsigned int vendor;
-	unsigned int ioat_dev;
-	unsigned int enabled;
-};
-
-/*
- * The i5000 chip-set has the same hooks as the i7300
- * but it is not enabled by default and must be manually
- * manually enabled with "forceload=1" because it is
- * only lightly validated.
- */
-
-static const struct fbd_ioat fbd_ioat_list[] = {
-	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT_CNB, 1},
-	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT, 0},
-	{0, 0}
-};
-
-/* table of devices that work with this driver */
-static const struct pci_device_id pci_tbl[] = {
-	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_FBD_CNB) },
-	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5000_ERR) },
-	{ } /* Terminating entry */
-};
-
-/* Check for known platforms with I/O-AT */
-static inline int i7300_idle_platform_probe(struct pci_dev **fbd_dev,
-						struct pci_dev **ioat_dev,
-						int enable_all)
-{
-	int i;
-	struct pci_dev *memdev, *dmadev;
-
-	memdev = pci_get_bus_and_slot(MEMCTL_BUS, MEMCTL_DEVFN);
-	if (!memdev)
-		return -ENODEV;
-
-	for (i = 0; pci_tbl[i].vendor != 0; i++) {
-		if (memdev->vendor == pci_tbl[i].vendor &&
-		    memdev->device == pci_tbl[i].device) {
-			break;
-		}
-	}
-	if (pci_tbl[i].vendor == 0)
-		return -ENODEV;
-
-	dmadev = pci_get_bus_and_slot(IOAT_BUS, IOAT_DEVFN);
-	if (!dmadev)
-		return -ENODEV;
-
-	for (i = 0; fbd_ioat_list[i].vendor != 0; i++) {
-		if (dmadev->vendor == fbd_ioat_list[i].vendor &&
-		    dmadev->device == fbd_ioat_list[i].ioat_dev) {
-			if (!(fbd_ioat_list[i].enabled || enable_all))
-				continue;
-			if (fbd_dev)
-				*fbd_dev = memdev;
-			if (ioat_dev)
-				*ioat_dev = dmadev;
-
-			return 0;
-		}
-	}
-	return -ENODEV;
-}
-
-#endif
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (24 preceding siblings ...)
  2017-12-19  5:38 ` [PATCH V4 25/26] i7300_idle: remove unused file Sinan Kaya
@ 2017-12-19  5:38 ` Sinan Kaya
  2018-02-16 14:55   ` Bjorn Helgaas
  2018-01-11 23:57 ` [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Bjorn Helgaas
  26 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19  5:38 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Sinan Kaya, linux-arm-msm, Bjorn Helgaas, open list, linux-arm-kernel

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.

Now that all users of pci_get_bus_and_slot() switched to
pci_get_domain_bus_and_slot(), it is now safe to remove this function.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 include/linux/pci.h | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 66cca1c..04cecbe 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -948,11 +948,6 @@ struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
 struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
 struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus,
 					    unsigned int devfn);
-static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
-						   unsigned int devfn)
-{
-	return pci_get_domain_bus_and_slot(0, bus, devfn);
-}
 struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
 int pci_dev_present(const struct pci_device_id *ids);
 
@@ -1660,9 +1655,6 @@ static inline struct pci_bus *pci_find_next_bus(const struct pci_bus *from)
 static inline struct pci_dev *pci_get_slot(struct pci_bus *bus,
 						unsigned int devfn)
 { return NULL; }
-static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
-						unsigned int devfn)
-{ return NULL; }
 static inline struct pci_dev *pci_get_domain_bus_and_slot(int domain,
 					unsigned int bus, unsigned int devfn)
 { return NULL; }
-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 21/26] backlight: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 21/26] backlight: " Sinan Kaya
@ 2017-12-19  8:51   ` Lee Jones
  0 siblings, 0 replies; 62+ messages in thread
From: Lee Jones @ 2017-12-19  8:51 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: linux-arm-msm, Daniel Thompson, Bartlomiej Zolnierkiewicz,
	Jingoo Han, timur, open list:FRAMEBUFFER LAYER,
	open list:FRAMEBUFFER LAYER, open list, linux-pci,
	linux-arm-kernel

T24gVHVlLCAxOSBEZWMgMjAxNywgU2luYW4gS2F5YSB3cm90ZToKCj4gcGNpX2dldF9idXNfYW5k
X3Nsb3QoKSBpcyByZXN0cmljdGl2ZSBzdWNoIHRoYXQgaXQgYXNzdW1lcyBkb21haW49MCBhcwo+
IHdoZXJlIGEgUENJIGRldmljZSBpcyBwcmVzZW50LiBUaGlzIHJlc3RyaWN0cyB0aGUgZGV2aWNl
IGRyaXZlcnMgdG8gYmUKPiByZXVzZWQgZm9yIG90aGVyIGRvbWFpbiBudW1iZXJzLgo+IAo+IEdl
dHRpbmcgcmVhZHkgdG8gcmVtb3ZlIHBjaV9nZXRfYnVzX2FuZF9zbG90KCkgZnVuY3Rpb24gaW4g
ZmF2b3Igb2YKPiBwY2lfZ2V0X2RvbWFpbl9idXNfYW5kX3Nsb3QoKS4KPiAKPiBIYXJkLWNvZGlu
ZyB0aGUgZG9tYWluIGFzIDAuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFA
Y29kZWF1cm9yYS5vcmc+Cj4gQWNrZWQtYnk6IEppbmdvbyBIYW4gPGppbmdvb2hhbjFAZ21haWwu
Y29tPgo+IEFja2VkLWJ5OiBEYW5pZWwgVGhvbXBzb24gPGRhbmllbC50aG9tcHNvbkBsaW5hcm8u
b3JnPgo+IC0tLQo+ICBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hcHBsZV9ibC5jIHwgMiArLQo+
ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCkFwcGxpZWQs
IHRoYW5rcy4KCi0tIApMZWUgSm9uZXMKTGluYXJvIFNlcnZpY2VzIFRlY2huaWNhbCBMZWFkCkxp
bmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGlu
YXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51
eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v
cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 02/26] powerpc/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 02/26] powerpc/PCI: " Sinan Kaya
@ 2017-12-19 10:29   ` Michael Ellerman
  2017-12-19 12:24     ` Sinan Kaya
  0 siblings, 1 reply; 62+ messages in thread
From: Michael Ellerman @ 2017-12-19 10:29 UTC (permalink / raw)
  To: Sinan Kaya, linux-pci, timur
  Cc: Rob Herring, linux-arm-msm, open list, Sinan Kaya, Bhumika Goyal,
	Paul Mackerras, Tyrel Datwyler, Benjamin Herrenschmidt,
	open list:LINUX FOR POWERPC (32-BIT AND 64-BIT),
	linux-arm-kernel

Sinan Kaya <okaya@codeaurora.org> writes:

> 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 pci_get_domain_bus_and_slot() with a domain number of 0 as the code
> is not ready to consume multiple domains and existing code used domain
> number 0.
>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  arch/powerpc/kernel/pci_32.c              | 3 ++-
>  arch/powerpc/platforms/powermac/feature.c | 2 +-
>  arch/powerpc/sysdev/mv64x60_pci.c         | 4 ++--
>  3 files changed, 5 insertions(+), 4 deletions(-)

Looks to do what it says. I don't know if any of these call sites could
be improved to provide the domain, but that's not really your problem.

Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)

cheers

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 14/26] pch_gbe: " Sinan Kaya
@ 2017-12-19 10:45   ` Andy Shevchenko
  2017-12-19 12:17     ` Sinan Kaya
  2017-12-19 14:13   ` David Miller
  1 sibling, 1 reply; 62+ messages in thread
From: Andy Shevchenko @ 2017-12-19 10:45 UTC (permalink / raw)
  To: Sinan Kaya, linux-pci, timur
  Cc: Kees Cook, linux-arm-msm, open list, Eric Dumazet,
	open list:NETWORKING DRIVERS, Tobias Klauser, David S. Miller,
	linux-arm-kernel

On Tue, 2017-12-19 at 00:37 -0500, 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().
> 

Where this idea come from?

pci_get_bus_and_slot() still might be useful for the wired devices in
SoC where we know for sure that domain == 0.

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19 10:45   ` Andy Shevchenko
@ 2017-12-19 12:17     ` Sinan Kaya
  2017-12-19 13:24       ` Andy Shevchenko
  2017-12-19 14:53       ` David Miller
  0 siblings, 2 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19 12:17 UTC (permalink / raw)
  To: Andy Shevchenko, linux-pci, timur
  Cc: Kees Cook, linux-arm-msm, open list, Eric Dumazet,
	open list:NETWORKING DRIVERS, Tobias Klauser, David S. Miller,
	linux-arm-kernel

On 12/19/2017 5:45 AM, Andy Shevchenko wrote:
> On Tue, 2017-12-19 at 00:37 -0500, 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().
>>
> 
> Where this idea come from?

There are systems out (mostly ARM) there with non-zero segment numbers. The
pci_get_bus_and_slot() API is restrictive and unnecessarily forces 0 segment
numbers for some generic device drivers. Obtaining the segment number is as
easy as calling pci_domain_nr().

The problems with pci_get_bus_and_slot() are:

1. we don't know if the device driver intentionally called pci_get_bus_and_slot()
to limit 0 segment number.
2. we don't know if the driver developer just copied an example from another
system and it just happened to work on x86 architecture while broken on other
architectures.

Some device drivers may want to limit the segment number. Than specifying 0
while calling pci_get_domain_bus_and_slot() is a better way to express this.

pci_get_bus_and_slot() is unnecessarily restricting some device drivers. Nvidia
as an example. I remember that somebody came up with a very ugly patch to force
segment 0 into Microsoft hypervisor layer. 

This was rejected out right and told to fix the Nvidia driver instead. This patch
essentially fixes some of these flaws while removing the limiting API from the
kernel altogether so that same mistakes are not made.

> 
> pci_get_bus_and_slot() still might be useful for the wired devices in
> SoC where we know for sure that domain == 0.
> 

Then hard code the domain number as 0 while calling pci_get_domain_bus_and_slot()
if you know for sure that this device will never work on a non-zero domain.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 02/26] powerpc/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19 10:29   ` Michael Ellerman
@ 2017-12-19 12:24     ` Sinan Kaya
  0 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2017-12-19 12:24 UTC (permalink / raw)
  To: Michael Ellerman, linux-pci, timur
  Cc: Rob Herring, linux-arm-msm, open list, Bhumika Goyal,
	Paul Mackerras, Tyrel Datwyler, Benjamin Herrenschmidt,
	open list:LINUX FOR POWERPC (32-BIT AND 64-BIT),
	linux-arm-kernel

On 12/19/2017 5:29 AM, Michael Ellerman wrote:
> Sinan Kaya <okaya@codeaurora.org> writes:
> 
>> 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 pci_get_domain_bus_and_slot() with a domain number of 0 as the code
>> is not ready to consume multiple domains and existing code used domain
>> number 0.
>>
>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>> ---
>>  arch/powerpc/kernel/pci_32.c              | 3 ++-
>>  arch/powerpc/platforms/powermac/feature.c | 2 +-
>>  arch/powerpc/sysdev/mv64x60_pci.c         | 4 ++--
>>  3 files changed, 5 insertions(+), 4 deletions(-)
> 
> Looks to do what it says. I don't know if any of these call sites could
> be improved to provide the domain, but that's not really your problem.
> 

I tried to fix the places where I can at the rest of the series. I even took
a stab at fixing powerpc. There were places where the domain information was
not available and I couldn't locate where to extract it. I decided to leave it
as it is and hope that someone someday may expand the powerpc PCI adaptation. 

> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
> 
> cheers
> 


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19 12:17     ` Sinan Kaya
@ 2017-12-19 13:24       ` Andy Shevchenko
  2017-12-19 14:53       ` David Miller
  1 sibling, 0 replies; 62+ messages in thread
From: Andy Shevchenko @ 2017-12-19 13:24 UTC (permalink / raw)
  To: Sinan Kaya, linux-pci, timur
  Cc: Kees Cook, linux-arm-msm, open list, Eric Dumazet,
	open list:NETWORKING DRIVERS, Tobias Klauser, David S. Miller,
	linux-arm-kernel

On Tue, 2017-12-19 at 07:17 -0500, Sinan Kaya wrote:
> On 12/19/2017 5:45 AM, Andy Shevchenko wrote:
> > On Tue, 2017-12-19 at 00:37 -0500, Sinan Kaya wrote:
> > > 

> > pci_get_bus_and_slot() still might be useful for the wired devices
> > in
> > SoC where we know for sure that domain == 0.
> > 
> 
> Then hard code the domain number as 0 while calling
> pci_get_domain_bus_and_slot()
> if you know for sure that this device will never work on a non-zero
> domain.

Thanks for so detailed explanation.

Okay, I suppose you did estimate the amount of drivers / modules that
may look better with pci_get_bus_and_slot() and the result is comparable
  small.

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 14/26] pch_gbe: " Sinan Kaya
  2017-12-19 10:45   ` Andy Shevchenko
@ 2017-12-19 14:13   ` David Miller
  1 sibling, 0 replies; 62+ messages in thread
From: David Miller @ 2017-12-19 14:13 UTC (permalink / raw)
  To: okaya
  Cc: keescook, linux-pci, timur, linux-kernel, edumazet, netdev,
	linux-arm-msm, tklauser, andriy.shevchenko, linux-arm-kernel

From: Sinan Kaya <okaya@codeaurora.org>
Date: Tue, 19 Dec 2017 00:37:50 -0500

> 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 the domain information from pdev while calling into
> pci_get_domain_bus_and_slot() function.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Acked-by: David S. Miller <davem@davemloft.net>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 10/26] Drivers: ide: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 10/26] Drivers: ide: " Sinan Kaya
@ 2017-12-19 14:13   ` David Miller
  0 siblings, 0 replies; 62+ messages in thread
From: David Miller @ 2017-12-19 14:13 UTC (permalink / raw)
  To: okaya
  Cc: linux-pci, timur, linux-kernel, linux-ide, linux-arm-msm,
	linux-arm-kernel

From: Sinan Kaya <okaya@codeaurora.org>
Date: Tue, 19 Dec 2017 00:37:46 -0500

> 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().
> 
> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
> and extract the domain number from struct pci_dev.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Acked-by: David S. Miller <davem@davemloft.net>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 20/26] openprom: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 20/26] openprom: " Sinan Kaya
@ 2017-12-19 14:13   ` David Miller
  0 siblings, 0 replies; 62+ messages in thread
From: David Miller @ 2017-12-19 14:13 UTC (permalink / raw)
  To: okaya
  Cc: linux-pci, timur, linux-kernel, linux-arm-msm, sparclinux,
	linux-arm-kernel

From: Sinan Kaya <okaya@codeaurora.org>
Date: Tue, 19 Dec 2017 00:37:56 -0500

> 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().
> 
> Hard-coding the domain as 0 since domain information is not available.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Acked-by: David S. Miller <davem@davemloft.net>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 13/26] bnx2x: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 13/26] bnx2x: " Sinan Kaya
@ 2017-12-19 14:14   ` David Miller
  0 siblings, 0 replies; 62+ messages in thread
From: David Miller @ 2017-12-19 14:14 UTC (permalink / raw)
  To: okaya
  Cc: linux-pci, timur, linux-kernel, ariel.elior, netdev,
	linux-arm-msm, everest-linux-l2, linux-arm-kernel

From: Sinan Kaya <okaya@codeaurora.org>
Date: Tue, 19 Dec 2017 00:37:49 -0500

> 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().
> 
> Introduce bnx2x_vf_domain() function to extract the domain information
> and save it to VF specific data structure.
> 
> Use the saved domain value while calling pci_get_domain_bus_and_slot().
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Acked-by: David S. Miller <davem@davemloft.net>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 14/26] pch_gbe: deprecate pci_get_bus_and_slot()
  2017-12-19 12:17     ` Sinan Kaya
  2017-12-19 13:24       ` Andy Shevchenko
@ 2017-12-19 14:53       ` David Miller
  1 sibling, 0 replies; 62+ messages in thread
From: David Miller @ 2017-12-19 14:53 UTC (permalink / raw)
  To: okaya
  Cc: keescook, linux-pci, timur, linux-kernel, edumazet, netdev,
	linux-arm-msm, tklauser, andriy.shevchenko, linux-arm-kernel

From: Sinan Kaya <okaya@codeaurora.org>
Date: Tue, 19 Dec 2017 07:17:41 -0500

> Then hard code the domain number as 0 while calling
> pci_get_domain_bus_and_slot() if you know for sure that this device
> will never work on a non-zero domain.

Agreed, it's so much better to be explicit about this.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 25/26] i7300_idle: remove unused file
  2017-12-19  5:38 ` [PATCH V4 25/26] i7300_idle: remove unused file Sinan Kaya
@ 2018-01-02 13:36   ` Sinan Kaya
  2018-01-02 13:44     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-02 13:36 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Kate Stewart, linux-arm-msm, Philippe Ombredanne, open list,
	Greg Kroah-Hartman, Thomas Gleixner, linux-arm-kernel

Hi Greg,

On 12/19/2017 12:38 AM, Sinan Kaya wrote:
> i7300_idle.h is not being called by any source file and contains calls to
> pci_get_bus_and_slot() that we are trying to deprecate. Remove unused file.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Do you think you can pick this up?

I'll start pinging all the remaining patches.

Sinan

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 24/26] video: fbdev: riva: deprecate pci_get_bus_and_slot()
  2017-12-19  5:38 ` [PATCH V4 24/26] video: fbdev: riva: " Sinan Kaya
@ 2018-01-02 13:37   ` Sinan Kaya
  2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-02 13:37 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER,
	Antonino Daplas, Bartlomiej Zolnierkiewicz, linux-arm-msm,
	open list, open list:FRAMEBUFFER LAYER, linux-arm-kernel

On 12/19/2017 12:38 AM, 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().
> 
> struct riva_par has a pointer to struct pci_dev. Use the pci_dev member
> to extract the domain information.
> 
> Change the function signature for CalcStateExt and RivaGetConfig to pass
> in struct pci_dev in addition to RIVA_HW_INST so that code inside the
> riva_hw.c can also calculate domain number and pass it to
> pci_get_domain_bus_and_slot().
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Any feedback here, most of the remaining patches have the ACK except these?

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 23/26] video: fbdev: nvidia: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 23/26] video: fbdev: nvidia: " Sinan Kaya
@ 2018-01-02 13:38   ` Sinan Kaya
  2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-02 13:38 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER,
	Antonino Daplas, Bartlomiej Zolnierkiewicz, linux-arm-msm,
	open list, open list:FRAMEBUFFER LAYER, linux-arm-kernel

On 12/19/2017 12:37 AM, 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().
> 
> struct nvidia_par has a pointer to struct pci_dev. Use the pci_dev
> member to extract the domain information and pass it to
> pci_get_domain_bus_and_slot() function.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Any feedback here ? most of the remaining patches have the ACK except these.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 22/26] video: fbdev: intelfb: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 22/26] video: fbdev: intelfb: " Sinan Kaya
@ 2018-01-02 13:38   ` Sinan Kaya
  2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-02 13:38 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: open list:INTEL FRAMEBUFFER DRIVER (excluding 810 and 815),
	Bartlomiej Zolnierkiewicz, linux-arm-msm, Maik Broemme,
	open list, open list:FRAMEBUFFER LAYER, linux-arm-kernel

On 12/19/2017 12:37 AM, 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().
> 
> Find the domain number from pdev.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Any feedback here ? most of the remaining patches have the ACK except these.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 25/26] i7300_idle: remove unused file
  2018-01-02 13:36   ` Sinan Kaya
@ 2018-01-02 13:44     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 62+ messages in thread
From: Greg Kroah-Hartman @ 2018-01-02 13:44 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: Kate Stewart, linux-pci, timur, Philippe Ombredanne, open list,
	linux-arm-msm, Thomas Gleixner, linux-arm-kernel

On Tue, Jan 02, 2018 at 08:36:46AM -0500, Sinan Kaya wrote:
> Hi Greg,
> 
> On 12/19/2017 12:38 AM, Sinan Kaya wrote:
> > i7300_idle.h is not being called by any source file and contains calls to
> > pci_get_bus_and_slot() that we are trying to deprecate. Remove unused file.
> > 
> > Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> Do you think you can pick this up?

Sure, will do so, thanks.

greg k-h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 22/26] video: fbdev: intelfb: deprecate pci_get_bus_and_slot()
  2018-01-02 13:38   ` Sinan Kaya
@ 2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 62+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2018-01-03 11:18 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: open list:INTEL FRAMEBUFFER DRIVER (excluding 810 and 815),
	linux-pci, timur, Maik Broemme, open list,
	open list:FRAMEBUFFER LAYER, linux-arm-msm, linux-arm-kernel

On Tuesday, January 02, 2018 08:38:24 AM Sinan Kaya wrote:
> On 12/19/2017 12:37 AM, 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().
> > 
> > Find the domain number from pdev.
> > 
> > Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> Any feedback here ? most of the remaining patches have the ACK except these.

Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 23/26] video: fbdev: nvidia: deprecate pci_get_bus_and_slot()
  2018-01-02 13:38   ` Sinan Kaya
@ 2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 62+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2018-01-03 11:18 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: open list:NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER,
	Antonino Daplas, linux-pci, timur, open list,
	open list:FRAMEBUFFER LAYER, linux-arm-msm, linux-arm-kernel

On Tuesday, January 02, 2018 08:38:03 AM Sinan Kaya wrote:
> On 12/19/2017 12:37 AM, 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().
> > 
> > struct nvidia_par has a pointer to struct pci_dev. Use the pci_dev
> > member to extract the domain information and pass it to
> > pci_get_domain_bus_and_slot() function.
> > 
> > Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> Any feedback here ? most of the remaining patches have the ACK except these.

Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 24/26] video: fbdev: riva: deprecate pci_get_bus_and_slot()
  2018-01-02 13:37   ` Sinan Kaya
@ 2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 62+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2018-01-03 11:18 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: open list:NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER,
	Antonino Daplas, linux-pci, timur, open list,
	open list:FRAMEBUFFER LAYER, linux-arm-msm, linux-arm-kernel

On Tuesday, January 02, 2018 08:37:32 AM Sinan Kaya wrote:
> On 12/19/2017 12:38 AM, 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().
> > 
> > struct riva_par has a pointer to struct pci_dev. Use the pci_dev member
> > to extract the domain information.
> > 
> > Change the function signature for CalcStateExt and RivaGetConfig to pass
> > in struct pci_dev in addition to RIVA_HW_INST so that code inside the
> > riva_hw.c can also calculate domain number and pass it to
> > pci_get_domain_bus_and_slot().
> > 
> > Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> Any feedback here, most of the remaining patches have the ACK except these?

Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 01/26] alpha/PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 01/26] alpha/PCI: " Sinan Kaya
@ 2018-01-03 12:43   ` Sinan Kaya
  0 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2018-01-03 12:43 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Kate Stewart, Lorenzo Pieralisi, linux-arm-msm,
	Philippe Ombredanne, open list, Masahiro Yamada,
	open list:ALPHA PORT, Ivan Kokshaysky, Greg Kroah-Hartman,
	Bjorn Helgaas, Matt Turner, Thomas Gleixner, linux-arm-kernel,
	Richard Henderson

On 12/19/2017 12:37 AM, 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.
> 
> Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
> extract the domain number. Other places, use the actual domain number from
> the device.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  arch/alpha/kernel/pci.c          | 2 +-
>  arch/alpha/kernel/sys_nautilus.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
> index 87da005..2e86ebb 100644
> --- a/arch/alpha/kernel/pci.c
> +++ b/arch/alpha/kernel/pci.c
> @@ -425,7 +425,7 @@ struct resource * __init
>  		if (bus == 0 && dfn == 0) {
>  			hose = pci_isa_hose;
>  		} else {
> -			dev = pci_get_bus_and_slot(bus, dfn);
> +			dev = pci_get_domain_bus_and_slot(0, bus, dfn);
>  			if (!dev)
>  				return -ENODEV;
>  			hose = dev->sysdata;
> diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
> index 239dc0e..ff4f54b 100644
> --- a/arch/alpha/kernel/sys_nautilus.c
> +++ b/arch/alpha/kernel/sys_nautilus.c
> @@ -237,7 +237,7 @@
>  	bus = hose->bus = bridge->bus;
>  	pcibios_claim_one_bus(bus);
>  
> -	irongate = pci_get_bus_and_slot(0, 0);
> +	irongate = pci_get_domain_bus_and_slot(pci_domain_nr(bus), 0, 0);
>  	bus->self = irongate;
>  	bus->resource[0] = &irongate_io;
>  	bus->resource[1] = &irongate_mem;
> 

Any feedback here? most of the remaining patches have the ACK except these.


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 05/26] agp: nvidia: " Sinan Kaya
@ 2018-01-03 12:44   ` Sinan Kaya
  2018-01-29 21:43     ` Dave Airlie
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-03 12:44 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: Arnd Bergmann, David Airlie, linux-arm-msm, open list,
	Greg Kroah-Hartman, linux-arm-kernel

On 12/19/2017 12:37 AM, 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().
> 
> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
> and extract the domain number from struct pci_dev.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/char/agp/nvidia-agp.c | 12 +++++++++---
>  drivers/char/agp/sworks-agp.c |  3 ++-
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
> index 828b344..623205b 100644
> --- a/drivers/char/agp/nvidia-agp.c
> +++ b/drivers/char/agp/nvidia-agp.c
> @@ -340,11 +340,17 @@ static int agp_nvidia_probe(struct pci_dev *pdev,
>  	u8 cap_ptr;
>  
>  	nvidia_private.dev_1 =
> -		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 1));
> +		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> +					    (unsigned int)pdev->bus->number,
> +					    PCI_DEVFN(0, 1));
>  	nvidia_private.dev_2 =
> -		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 2));
> +		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> +					    (unsigned int)pdev->bus->number,
> +					    PCI_DEVFN(0, 2));
>  	nvidia_private.dev_3 =
> -		pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(30, 0));
> +		pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> +					    (unsigned int)pdev->bus->number,
> +					    PCI_DEVFN(30, 0));
>  
>  	if (!nvidia_private.dev_1 || !nvidia_private.dev_2 || !nvidia_private.dev_3) {
>  		printk(KERN_INFO PFX "Detected an NVIDIA nForce/nForce2 "
> diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
> index 03be4ac..4dbdd3b 100644
> --- a/drivers/char/agp/sworks-agp.c
> +++ b/drivers/char/agp/sworks-agp.c
> @@ -474,7 +474,8 @@ static int agp_serverworks_probe(struct pci_dev *pdev,
>  	}
>  
>  	/* Everything is on func 1 here so we are hardcoding function one */
> -	bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
> +	bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> +			(unsigned int)pdev->bus->number,
>  			PCI_DEVFN(0, 1));
>  	if (!bridge_dev) {
>  		dev_info(&pdev->dev, "can't find secondary device\n");
> 

Any feedback here? most of the remaining patches have the ACK except these.


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 06/26] edd: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 06/26] edd: " Sinan Kaya
@ 2018-01-03 12:48   ` Sinan Kaya
  0 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2018-01-03 12:48 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, gregkh, open list, akpm, hpa, linux-arm-kernel

On 12/19/2017 12:37 AM, 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().
> 
> Domain number is not available in struct edd_info. Hard-coding the domain
> number as 0.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/firmware/edd.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c
> index e229576..60a8f13 100644
> --- a/drivers/firmware/edd.c
> +++ b/drivers/firmware/edd.c
> @@ -669,10 +669,10 @@ static void edd_release(struct kobject * kobj)
>  	struct edd_info *info = edd_dev_get_info(edev);
>  
>  	if (edd_dev_is_type(edev, "PCI") || edd_dev_is_type(edev, "XPRS")) {
> -		return pci_get_bus_and_slot(info->params.interface_path.pci.bus,
> -				     PCI_DEVFN(info->params.interface_path.pci.slot,
> -					       info->params.interface_path.pci.
> -					       function));
> +		return pci_get_domain_bus_and_slot(0,
> +				info->params.interface_path.pci.bus,
> +				PCI_DEVFN(info->params.interface_path.pci.slot,
> +				info->params.interface_path.pci.function));
>  	}
>  	return NULL;
>  }
> 

Any feedback here? most of the remaining patches have the ACK except these.


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 11/26] iommu/amd: " Sinan Kaya
@ 2018-01-04 12:25   ` Sinan Kaya
  2018-01-04 16:28     ` Gary R Hook
  2018-01-17 13:02   ` Joerg Roedel
  1 sibling, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-04 12:25 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-msm, Joerg Roedel, open list:AMD IOMMU (AMD-VI),
	linux-arm-kernel, open list

On 12/19/2017 12:37 AM, 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().
> 
> Hard-code the domain number as 0 for the AMD IOMMU driver.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/iommu/amd_iommu.c      | 3 ++-
>  drivers/iommu/amd_iommu_init.c | 9 +++++----
>  drivers/iommu/amd_iommu_v2.c   | 3 ++-
>  3 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index 7d5eb00..821547b 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -527,7 +527,8 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
>  	struct iommu_dev_data *dev_data = NULL;
>  	struct pci_dev *pdev;
>  
> -	pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
> +	pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
> +					   devid & 0xff);
>  	if (pdev)
>  		dev_data = get_dev_data(&pdev->dev);
>  
> diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
> index 6fe2d03..4e4a615 100644
> --- a/drivers/iommu/amd_iommu_init.c
> +++ b/drivers/iommu/amd_iommu_init.c
> @@ -1697,8 +1697,8 @@ static int iommu_init_pci(struct amd_iommu *iommu)
>  	u32 range, misc, low, high;
>  	int ret;
>  
> -	iommu->dev = pci_get_bus_and_slot(PCI_BUS_NUM(iommu->devid),
> -					  iommu->devid & 0xff);
> +	iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
> +						 iommu->devid & 0xff);
>  	if (!iommu->dev)
>  		return -ENODEV;
>  
> @@ -1764,8 +1764,9 @@ static int iommu_init_pci(struct amd_iommu *iommu)
>  	if (is_rd890_iommu(iommu->dev)) {
>  		int i, j;
>  
> -		iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number,
> -				PCI_DEVFN(0, 0));
> +		iommu->root_pdev =
> +			pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
> +						    PCI_DEVFN(0, 0));
>  
>  		/*
>  		 * Some rd890 systems may not be fully reconfigured by the
> diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c
> index 7d94e1d..8696382 100644
> --- a/drivers/iommu/amd_iommu_v2.c
> +++ b/drivers/iommu/amd_iommu_v2.c
> @@ -564,7 +564,8 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)
>  	finish      = (iommu_fault->tag >> 9) & 1;
>  
>  	devid = iommu_fault->device_id;
> -	pdev = pci_get_bus_and_slot(PCI_BUS_NUM(devid), devid & 0xff);
> +	pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid),
> +					   devid & 0xff);
>  	if (!pdev)
>  		return -ENODEV;
>  	dev_data = get_dev_data(&pdev->dev);
> 

Any comments from the IOMMU people?

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 09/26] drm/nouveau: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 09/26] drm/nouveau: " Sinan Kaya
@ 2018-01-04 12:26   ` Sinan Kaya
  0 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2018-01-04 12:26 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: linux-arm-kernel, David Airlie, linux-arm-msm, open list,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS, Ben Skeggs,
	open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS, Ilia Mirkin

On 12/19/2017 12:37 AM, 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().
> 
> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
> and extract the domain number from
> 1. struct pci_dev
> 2. struct pci_dev through drm_device->pdev
> 3. struct pci_dev through fb->subdev->drm_device->pdev
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/gpu/drm/nouveau/dispnv04/arb.c           |  4 +++-
>  drivers/gpu/drm/nouveau/dispnv04/hw.c            | 10 +++++++---
>  drivers/gpu/drm/nouveau/nouveau_drm.c            |  3 ++-
>  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c | 10 +++++++++-
>  4 files changed, 21 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> index 90075b6..c79160c 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> @@ -213,8 +213,10 @@ struct nv_sim_state {
>  	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
>  	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
>  		uint32_t type;
> +		int domain = pci_domain_nr(dev->pdev->bus);
>  
> -		pci_read_config_dword(pci_get_bus_and_slot(0, 1), 0x7c, &type);
> +		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
> +				      0x7c, &type);
>  
>  		sim_data.memory_type = (type >> 12) & 1;
>  		sim_data.memory_width = 64;
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> index b985990..0c9bdf0 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> @@ -216,12 +216,15 @@
>  {
>  	struct nvkm_pll_vals pllvals;
>  	int ret;
> +	int domain;
> +
> +	domain = pci_domain_nr(dev->pdev->bus);
>  
>  	if (plltype == PLL_MEMORY &&
>  	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
>  		uint32_t mpllP;
> -
> -		pci_read_config_dword(pci_get_bus_and_slot(0, 3), 0x6c, &mpllP);
> +		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
> +				      0x6c, &mpllP);
>  		mpllP = (mpllP >> 8) & 0xf;
>  		if (!mpllP)
>  			mpllP = 4;
> @@ -232,7 +235,8 @@
>  	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
>  		uint32_t clock;
>  
> -		pci_read_config_dword(pci_get_bus_and_slot(0, 5), 0x4c, &clock);
> +		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
> +				      0x4c, &clock);
>  		return clock / 1000;
>  	}
>  
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 8d4a5be..33b6139 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -524,7 +524,8 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
>  	}
>  
>  	/* subfunction one is a hdmi audio device? */
> -	drm->hdmi_device = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
> +	drm->hdmi_device = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> +						(unsigned int)pdev->bus->number,
>  						PCI_DEVFN(PCI_SLOT(pdev->devfn), 1));
>  
>  	if (!drm->hdmi_device) {
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
> index 4c07d10..18241c6 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
> @@ -28,8 +28,16 @@
>  {
>  	struct pci_dev *bridge;
>  	u32 mem, mib;
> +	int domain = 0;
> +	struct pci_dev *pdev = NULL;
>  
> -	bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 1));
> +	if (dev_is_pci(fb->subdev.device->dev))
> +		pdev = to_pci_dev(fb->subdev.device->dev);
> +
> +	if (pdev)
> +		domain = pci_domain_nr(pdev->bus);
> +
> +	bridge = pci_get_domain_bus_and_slot(domain, 0, PCI_DEVFN(0, 1));
>  	if (!bridge) {
>  		nvkm_error(&fb->subdev, "no bridge device\n");
>  		return -ENODEV;
> 

Any feedback here? I don't have any hardware to test the changes. I just did a compile test.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 08/26] drm/gma500: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 08/26] drm/gma500: " Sinan Kaya
@ 2018-01-04 12:27   ` Sinan Kaya
  0 siblings, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2018-01-04 12:27 UTC (permalink / raw)
  To: linux-pci, timur
  Cc: David Airlie, linux-arm-msm, Patrik Jakobsson, linux-arm-kernel,
	open list

On 12/19/2017 12:37 AM, 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().
> 
> Add domain parameter to CDV_MSG_READ32, CDV_MSG_WRITE32, MRST_MSG_READ32,
> MRST_MSG_WRITE32, MDFLD_MSG_READ32, MDFLD_MSG_WRITE32.
> 
> Extract pci_dev from struct drm_device and use pdev to find the domain
> number while calling pci_get_domain_bus_and_slot().
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/gpu/drm/gma500/cdv_device.c | 16 +++++++++-------
>  drivers/gpu/drm/gma500/gma_device.c |  4 +++-
>  drivers/gpu/drm/gma500/mid_bios.c   | 12 +++++++++---
>  drivers/gpu/drm/gma500/psb_drv.c    | 10 ++++++++--
>  drivers/gpu/drm/gma500/psb_drv.h    | 18 ++++++++++--------
>  5 files changed, 39 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c
> index 8745971..3a3bf75 100644
> --- a/drivers/gpu/drm/gma500/cdv_device.c
> +++ b/drivers/gpu/drm/gma500/cdv_device.c
> @@ -185,21 +185,22 @@ static int cdv_backlight_init(struct drm_device *dev)
>   *	for this and the MID devices.
>   */
>  
> -static inline u32 CDV_MSG_READ32(uint port, uint offset)
> +static inline u32 CDV_MSG_READ32(int domain, uint port, uint offset)
>  {
>  	int mcr = (0x10<<24) | (port << 16) | (offset << 8);
>  	uint32_t ret_val = 0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_read_config_dword(pci_root, 0xD4, &ret_val);
>  	pci_dev_put(pci_root);
>  	return ret_val;
>  }
>  
> -static inline void CDV_MSG_WRITE32(uint port, uint offset, u32 value)
> +static inline void CDV_MSG_WRITE32(int domain, uint port, uint offset,
> +				   u32 value)
>  {
>  	int mcr = (0x11<<24) | (port << 16) | (offset << 8) | 0xF0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD4, value);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_dev_put(pci_root);
> @@ -216,11 +217,12 @@ static void cdv_init_pm(struct drm_device *dev)
>  {
>  	struct drm_psb_private *dev_priv = dev->dev_private;
>  	u32 pwr_cnt;
> +	int domain = pci_domain_nr(dev->pdev->bus);
>  	int i;
>  
> -	dev_priv->apm_base = CDV_MSG_READ32(PSB_PUNIT_PORT,
> +	dev_priv->apm_base = CDV_MSG_READ32(domain, PSB_PUNIT_PORT,
>  							PSB_APMBA) & 0xFFFF;
> -	dev_priv->ospm_base = CDV_MSG_READ32(PSB_PUNIT_PORT,
> +	dev_priv->ospm_base = CDV_MSG_READ32(domain, PSB_PUNIT_PORT,
>  							PSB_OSPMBA) & 0xFFFF;
>  
>  	/* Power status */
> @@ -251,7 +253,7 @@ static void cdv_errata(struct drm_device *dev)
>  	 *	Bonus Launch to work around the issue, by degrading
>  	 *	performance.
>  	 */
> -	 CDV_MSG_WRITE32(3, 0x30, 0x08027108);
> +	 CDV_MSG_WRITE32(pci_domain_nr(dev->pdev->bus), 3, 0x30, 0x08027108);
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/gma500/gma_device.c b/drivers/gpu/drm/gma500/gma_device.c
> index 4a295f9..a7fb6de 100644
> --- a/drivers/gpu/drm/gma500/gma_device.c
> +++ b/drivers/gpu/drm/gma500/gma_device.c
> @@ -19,7 +19,9 @@
>  void gma_get_core_freq(struct drm_device *dev)
>  {
>  	uint32_t clock;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root =
> +		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
> +					    0, 0);
>  	struct drm_psb_private *dev_priv = dev->dev_private;
>  
>  	/*pci_write_config_dword(pci_root, 0xD4, 0x00C32004);*/
> diff --git a/drivers/gpu/drm/gma500/mid_bios.c b/drivers/gpu/drm/gma500/mid_bios.c
> index 1fa1633..7171b74 100644
> --- a/drivers/gpu/drm/gma500/mid_bios.c
> +++ b/drivers/gpu/drm/gma500/mid_bios.c
> @@ -32,7 +32,9 @@
>  static void mid_get_fuse_settings(struct drm_device *dev)
>  {
>  	struct drm_psb_private *dev_priv = dev->dev_private;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root =
> +		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
> +					    0, 0);
>  	uint32_t fuse_value = 0;
>  	uint32_t fuse_value_tmp = 0;
>  
> @@ -104,7 +106,9 @@ static void mid_get_fuse_settings(struct drm_device *dev)
>  static void mid_get_pci_revID(struct drm_psb_private *dev_priv)
>  {
>  	uint32_t platform_rev_id = 0;
> -	struct pci_dev *pci_gfx_root = pci_get_bus_and_slot(0, PCI_DEVFN(2, 0));
> +	int domain = pci_domain_nr(dev_priv->dev->pdev->bus);
> +	struct pci_dev *pci_gfx_root =
> +		pci_get_domain_bus_and_slot(domain, 0, PCI_DEVFN(2, 0));
>  
>  	if (pci_gfx_root == NULL) {
>  		WARN_ON(1);
> @@ -281,7 +285,9 @@ static void mid_get_vbt_data(struct drm_psb_private *dev_priv)
>  	u32 addr;
>  	u8 __iomem *vbt_virtual;
>  	struct mid_vbt_header vbt_header;
> -	struct pci_dev *pci_gfx_root = pci_get_bus_and_slot(0, PCI_DEVFN(2, 0));
> +	struct pci_dev *pci_gfx_root =
> +		pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus),
> +					    0, PCI_DEVFN(2, 0));
>  	int ret = -1;
>  
>  	/* Get the address of the platform config vbt */
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index 38d09d4..ac32ab5 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -248,7 +248,11 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
>  		goto out_err;
>  
>  	if (IS_MRST(dev)) {
> -		dev_priv->aux_pdev = pci_get_bus_and_slot(0, PCI_DEVFN(3, 0));
> +		int domain = pci_domain_nr(dev->pdev->bus);
> +
> +		dev_priv->aux_pdev =
> +			pci_get_domain_bus_and_slot(domain, 0,
> +						    PCI_DEVFN(3, 0));
>  
>  		if (dev_priv->aux_pdev) {
>  			resource_start = pci_resource_start(dev_priv->aux_pdev,
> @@ -268,7 +272,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
>  		}
>  		dev_priv->gmbus_reg = dev_priv->aux_reg;
>  
> -		dev_priv->lpc_pdev = pci_get_bus_and_slot(0, PCI_DEVFN(31, 0));
> +		dev_priv->lpc_pdev =
> +			pci_get_domain_bus_and_slot(domain, 0,
> +						    PCI_DEVFN(31, 0));
>  		if (dev_priv->lpc_pdev) {
>  			pci_read_config_word(dev_priv->lpc_pdev, PSB_LPC_GBA,
>  				&dev_priv->lpc_gpio_base);
> diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
> index 4918efc..e8300f5 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.h
> +++ b/drivers/gpu/drm/gma500/psb_drv.h
> @@ -780,38 +780,40 @@ extern int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
>  extern int drm_idle_check_interval;
>  
>  /* Utilities */
> -static inline u32 MRST_MSG_READ32(uint port, uint offset)
> +static inline u32 MRST_MSG_READ32(int domain, uint port, uint offset)
>  {
>  	int mcr = (0xD0<<24) | (port << 16) | (offset << 8);
>  	uint32_t ret_val = 0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_read_config_dword(pci_root, 0xD4, &ret_val);
>  	pci_dev_put(pci_root);
>  	return ret_val;
>  }
> -static inline void MRST_MSG_WRITE32(uint port, uint offset, u32 value)
> +static inline void MRST_MSG_WRITE32(int domain, uint port, uint offset,
> +				    u32 value)
>  {
>  	int mcr = (0xE0<<24) | (port << 16) | (offset << 8) | 0xF0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD4, value);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_dev_put(pci_root);
>  }
> -static inline u32 MDFLD_MSG_READ32(uint port, uint offset)
> +static inline u32 MDFLD_MSG_READ32(int domain, uint port, uint offset)
>  {
>  	int mcr = (0x10<<24) | (port << 16) | (offset << 8);
>  	uint32_t ret_val = 0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_read_config_dword(pci_root, 0xD4, &ret_val);
>  	pci_dev_put(pci_root);
>  	return ret_val;
>  }
> -static inline void MDFLD_MSG_WRITE32(uint port, uint offset, u32 value)
> +static inline void MDFLD_MSG_WRITE32(int domain, uint port, uint offset,
> +				     u32 value)
>  {
>  	int mcr = (0x11<<24) | (port << 16) | (offset << 8) | 0xF0;
> -	struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0);
> +	struct pci_dev *pci_root = pci_get_domain_bus_and_slot(domain, 0, 0);
>  	pci_write_config_dword(pci_root, 0xD4, value);
>  	pci_write_config_dword(pci_root, 0xD0, mcr);
>  	pci_dev_put(pci_root);
> 

Any feedback here? I don't have any hardware to test the changes. I just did a compile test.


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2018-01-04 12:25   ` Sinan Kaya
@ 2018-01-04 16:28     ` Gary R Hook
  2018-01-04 16:32       ` Sinan Kaya
  0 siblings, 1 reply; 62+ messages in thread
From: Gary R Hook @ 2018-01-04 16:28 UTC (permalink / raw)
  To: Sinan Kaya, linux-pci, timur
  Cc: linux-arm-msm, open list:AMD IOMMU (AMD-VI), linux-arm-kernel, open list

On 01/04/2018 06:25 AM, Sinan Kaya wrote:
> On 12/19/2017 12:37 AM, 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().
>>
>> Hard-code the domain number as 0 for the AMD IOMMU driver.

<snip>

 >
 > Any comments from the IOMMU people?
 >

pci_get_bus_and_slot() appears to (now) be a convenience function that 
wraps pci_get_domain_bus_and_slot() while using a 0 for the domain 
value. Exactly what you are doing here, albeit in a more overt way.

How is this patch advantageous? Seems to me that if other domains need 
to be enabled, that driver could be changed if and when that requirement 
arises.

But perhaps I'm missing a nuance here.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2018-01-04 16:28     ` Gary R Hook
@ 2018-01-04 16:32       ` Sinan Kaya
  2018-01-04 17:25         ` Gary R Hook
  0 siblings, 1 reply; 62+ messages in thread
From: Sinan Kaya @ 2018-01-04 16:32 UTC (permalink / raw)
  To: Gary R Hook, linux-pci, timur
  Cc: linux-arm-msm, open list:AMD IOMMU (AMD-VI), open list, linux-arm-kernel

On 1/4/2018 11:28 AM, Gary R Hook wrote:
> On 01/04/2018 06:25 AM, Sinan Kaya wrote:
>> On 12/19/2017 12:37 AM, 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().
>>>
>>> Hard-code the domain number as 0 for the AMD IOMMU driver.
> 
> <snip>
> 
>>
>> Any comments from the IOMMU people?
>>
> 
> pci_get_bus_and_slot() appears to (now) be a convenience function that wraps pci_get_domain_bus_and_slot() while using a 0 for the domain value. Exactly what you are doing here, albeit in a more overt way.
> 
> How is this patch advantageous? Seems to me that if other domains need to be enabled, that driver could be changed if and when that requirement arises.
> 
> But perhaps I'm missing a nuance here.
> 
> 

The benefit of the change was discussed here:

https://lkml.org/lkml/2017/12/19/349

I hope it helps.


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2018-01-04 16:32       ` Sinan Kaya
@ 2018-01-04 17:25         ` Gary R Hook
  0 siblings, 0 replies; 62+ messages in thread
From: Gary R Hook @ 2018-01-04 17:25 UTC (permalink / raw)
  To: Sinan Kaya, linux-pci, timur
  Cc: linux-arm-msm, open list:AMD IOMMU (AMD-VI), open list, linux-arm-kernel

On 01/04/2018 10:32 AM, Sinan Kaya wrote:
> On 1/4/2018 11:28 AM, Gary R Hook wrote:
>> On 01/04/2018 06:25 AM, Sinan Kaya wrote:
>>> On 12/19/2017 12:37 AM, 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().
>>>>
>>>> Hard-code the domain number as 0 for the AMD IOMMU driver.
>>
>> <snip>
>>
>>>
>>> Any comments from the IOMMU people?
>>>
>>
>> pci_get_bus_and_slot() appears to (now) be a convenience function that wraps pci_get_domain_bus_and_slot() while using a 0 for the domain value. Exactly what you are doing here, albeit in a more overt way.
>>
>> How is this patch advantageous? Seems to me that if other domains need to be enabled, that driver could be changed if and when that requirement arises.
>>
>> But perhaps I'm missing a nuance here.
>>
>>
> 
> The benefit of the change was discussed here:
> 
> https://lkml.org/lkml/2017/12/19/349
> 
> I hope it helps.
> 
> 

Thank you for pointing out that thread directly. I read through it and 
thought further about this change.

I am not the maintainer, but as an AMD developer, this is fine change. I 
can't ACK but I can agree.

Gary

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
                   ` (25 preceding siblings ...)
  2017-12-19  5:38 ` [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function Sinan Kaya
@ 2018-01-11 23:57 ` Bjorn Helgaas
  26 siblings, 0 replies; 62+ messages in thread
From: Bjorn Helgaas @ 2018-01-11 23:57 UTC (permalink / raw)
  To: Sinan Kaya; +Cc: linux-pci, timur, linux-arm-kernel, linux-arm-msm

On Tue, Dec 19, 2017 at 12:37:36AM -0500, Sinan Kaya wrote:
> Deprecate pci_get_bus_and_slot() in favor of pci_get_domain_bus_and_slot()
> in order to remove domain 0 assumptions in the kernel.
> 
> 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.
> 
> Use pci_get_domain_bus_and_slot() with a domain number of 0 where we can't
> extract the domain number. Other places, use the actual domain number from
> the device.
> 
> Changes from v3:
> * rebase to linux-next
> * drop drm i915 as it is going through the drm tip
> * commit summary cleanups
> 
> Sinan Kaya (26):

I applied most of these on pci/deprecate-get-bus-and-slot for v4.16.
Details below:

>   alpha/PCI: deprecate pci_get_bus_and_slot()

Applied.

>   powerpc/PCI: deprecate pci_get_bus_and_slot()

Aplied with Michael's ack.

>   x86/PCI: deprecate pci_get_bus_and_slot()
>   ata: deprecate pci_get_bus_and_slot()
>   agp: nvidia: deprecate pci_get_bus_and_slot()
>   edd: deprecate pci_get_bus_and_slot()
>   ibft: deprecate pci_get_bus_and_slot()
>   drm/gma500: deprecate pci_get_bus_and_slot()
>   drm/nouveau: deprecate pci_get_bus_and_slot()

Applied.

>   Drivers: ide: deprecate pci_get_bus_and_slot()

Applied with David's ack.

>   iommu/amd: deprecate pci_get_bus_and_slot()

Applied with Gary's informal approval converted to
Reviewed-by: Gary R Hook <gary.hook@amd.com>.

>   powerpc/powermac: deprecate pci_get_bus_and_slot()

Applied.

>   bnx2x: deprecate pci_get_bus_and_slot()
>   pch_gbe: deprecate pci_get_bus_and_slot()

Applied with David's ack.

>   PCI: cpqhp: deprecate pci_get_bus_and_slot()
>   PCI: ibmphp: deprecate pci_get_bus_and_slot()

Applied.

>   PCI/quirks: deprecate pci_get_bus_and_slot()
>   PCI/syscall: deprecate pci_get_bus_and_slot()

Applied (squashed together).

>   xen: deprecate pci_get_bus_and_slot()

Applied.

>   openprom: deprecate pci_get_bus_and_slot()

Applied with David's ack.

>   backlight: deprecate pci_get_bus_and_slot()

Dropped because Lee applied it.

>   video: fbdev: intelfb: deprecate pci_get_bus_and_slot()
>   video: fbdev: nvidia: deprecate pci_get_bus_and_slot()
>   video: fbdev: riva: deprecate pci_get_bus_and_slot()

Applied with Bartlomiej's ack.

>   i7300_idle: remove unused file

Dropped because Greg KH picked it up.

>   PCI: Remove pci_get_bus_and_slot() function

Deferred so pull requests during the merge window can happen in any
order.  We can remove it at the end of the merge window or during the
next cycle.

Bjorn

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 11/26] iommu/amd: deprecate pci_get_bus_and_slot()
  2017-12-19  5:37 ` [PATCH V4 11/26] iommu/amd: " Sinan Kaya
  2018-01-04 12:25   ` Sinan Kaya
@ 2018-01-17 13:02   ` Joerg Roedel
  1 sibling, 0 replies; 62+ messages in thread
From: Joerg Roedel @ 2018-01-17 13:02 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: linux-pci, timur, open list, open list:AMD IOMMU (AMD-VI),
	linux-arm-msm, linux-arm-kernel

On Tue, Dec 19, 2017 at 12:37:47AM -0500, 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().
> 
> Hard-code the domain number as 0 for the AMD IOMMU driver.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/iommu/amd_iommu.c      | 3 ++-
>  drivers/iommu/amd_iommu_init.c | 9 +++++----
>  drivers/iommu/amd_iommu_v2.c   | 3 ++-
>  3 files changed, 9 insertions(+), 6 deletions(-)

Acked-by: Joerg Roedel <jroedel@suse.de>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2018-01-03 12:44   ` Sinan Kaya
@ 2018-01-29 21:43     ` Dave Airlie
  2018-01-29 22:01       ` Sinan Kaya
  2018-01-29 22:38       ` Bjorn Helgaas
  0 siblings, 2 replies; 62+ messages in thread
From: Dave Airlie @ 2018-01-29 21:43 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: Arnd Bergmann, Greg Kroah-Hartman, David Airlie, Linux PCI,
	timur, open list, linux-arm-msm, linux-arm-kernel

On 3 January 2018 at 22:44, Sinan Kaya <okaya@codeaurora.org> wrote:
> On 12/19/2017 12:37 AM, 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.

So not a major problem, but it would be pretty much impossible for either
of these agp drivers to be used in any other domain ever.

What does this buy us, maybe just rename pci_get_bus_and_slot to
pci_get_domain0_bus_and_slot as a helper, or just pass the pdev in
and have it do the right thing always.

Dave.

>>
>> Getting ready to remove pci_get_bus_and_slot() function in favor of
>> pci_get_domain_bus_and_slot().
>>
>> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
>> and extract the domain number from struct pci_dev.
>>
>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>> ---
>>  drivers/char/agp/nvidia-agp.c | 12 +++++++++---
>>  drivers/char/agp/sworks-agp.c |  3 ++-
>>  2 files changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
>> index 828b344..623205b 100644
>> --- a/drivers/char/agp/nvidia-agp.c
>> +++ b/drivers/char/agp/nvidia-agp.c
>> @@ -340,11 +340,17 @@ static int agp_nvidia_probe(struct pci_dev *pdev,
>>       u8 cap_ptr;
>>
>>       nvidia_private.dev_1 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 1));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(0, 1));
>>       nvidia_private.dev_2 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 2));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(0, 2));
>>       nvidia_private.dev_3 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(30, 0));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(30, 0));
>>
>>       if (!nvidia_private.dev_1 || !nvidia_private.dev_2 || !nvidia_private.dev_3) {
>>               printk(KERN_INFO PFX "Detected an NVIDIA nForce/nForce2 "
>> diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
>> index 03be4ac..4dbdd3b 100644
>> --- a/drivers/char/agp/sworks-agp.c
>> +++ b/drivers/char/agp/sworks-agp.c
>> @@ -474,7 +474,8 @@ static int agp_serverworks_probe(struct pci_dev *pdev,
>>       }
>>
>>       /* Everything is on func 1 here so we are hardcoding function one */
>> -     bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
>> +     bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                     (unsigned int)pdev->bus->number,
>>                       PCI_DEVFN(0, 1));
>>       if (!bridge_dev) {
>>               dev_info(&pdev->dev, "can't find secondary device\n");
>>
>
> Any feedback here? most of the remaining patches have the ACK except these.
>
>
> --
> Sinan Kaya
> Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
> Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2018-01-29 21:43     ` Dave Airlie
@ 2018-01-29 22:01       ` Sinan Kaya
  2018-01-29 22:38       ` Bjorn Helgaas
  1 sibling, 0 replies; 62+ messages in thread
From: Sinan Kaya @ 2018-01-29 22:01 UTC (permalink / raw)
  To: Dave Airlie
  Cc: Arnd Bergmann, Greg Kroah-Hartman, David Airlie, Linux PCI,
	timur, open list, linux-arm-msm, linux-arm-kernel

On 1/29/2018 4:43 PM, Dave Airlie wrote:
>>  12/19/2017 12:37 AM, 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.
> So not a major problem, but it would be pretty much impossible for either
> of these agp drivers to be used in any other domain ever.
> 
> What does this buy us, maybe just rename pci_get_bus_and_slot to
> pci_get_domain0_bus_and_slot as a helper, or just pass the pdev in
> and have it do the right thing always.

There is nothing wrong with doing all three. Since nobody replied until
patch v4, I did the heavy-lifting and converted code to use pci_domain_nr()
as much as I can rather than hard-coding a 0 while calling
pci_get_domain_bus_and_slot().

>From PCI coding perspective, pci_domain_nr() call is the right thing. It is
guaranteed to work no matter what your domain number is. 

People look at other code for examples on how to write a PCI driver
in general. You want to minimize the exceptions as much as possible.

Some discussion here about the benefits:

https://lkml.org/lkml/2017/12/19/349


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2018-01-29 21:43     ` Dave Airlie
  2018-01-29 22:01       ` Sinan Kaya
@ 2018-01-29 22:38       ` Bjorn Helgaas
  2018-01-29 22:43         ` Dave Airlie
  1 sibling, 1 reply; 62+ messages in thread
From: Bjorn Helgaas @ 2018-01-29 22:38 UTC (permalink / raw)
  To: Dave Airlie
  Cc: Arnd Bergmann, David Airlie, Greg Kroah-Hartman, timur,
	open list, Sinan Kaya, linux-arm-kernel, Linux PCI,
	linux-arm-msm

On Tue, Jan 30, 2018 at 07:43:21AM +1000, Dave Airlie wrote:
> On 3 January 2018 at 22:44, Sinan Kaya <okaya@codeaurora.org> wrote:
> > On 12/19/2017 12:37 AM, 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.
> 
> So not a major problem, but it would be pretty much impossible for either
> of these agp drivers to be used in any other domain ever.
> 
> What does this buy us, maybe just rename pci_get_bus_and_slot to
> pci_get_domain0_bus_and_slot as a helper, or just pass the pdev in
> and have it do the right thing always.

I already have this patch on my "next" branch, planned for the v4.16
merge window, so it's done unless you have a major objection.

> >> Getting ready to remove pci_get_bus_and_slot() function in favor of
> >> pci_get_domain_bus_and_slot().
> >>
> >> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
> >> and extract the domain number from struct pci_dev.
> >>
> >> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> >> ---
> >>  drivers/char/agp/nvidia-agp.c | 12 +++++++++---
> >>  drivers/char/agp/sworks-agp.c |  3 ++-
> >>  2 files changed, 11 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
> >> index 828b344..623205b 100644
> >> --- a/drivers/char/agp/nvidia-agp.c
> >> +++ b/drivers/char/agp/nvidia-agp.c
> >> @@ -340,11 +340,17 @@ static int agp_nvidia_probe(struct pci_dev *pdev,
> >>       u8 cap_ptr;
> >>
> >>       nvidia_private.dev_1 =
> >> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 1));
> >> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> >> +                                         (unsigned int)pdev->bus->number,
> >> +                                         PCI_DEVFN(0, 1));
> >>       nvidia_private.dev_2 =
> >> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 2));
> >> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> >> +                                         (unsigned int)pdev->bus->number,
> >> +                                         PCI_DEVFN(0, 2));
> >>       nvidia_private.dev_3 =
> >> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(30, 0));
> >> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> >> +                                         (unsigned int)pdev->bus->number,
> >> +                                         PCI_DEVFN(30, 0));
> >>
> >>       if (!nvidia_private.dev_1 || !nvidia_private.dev_2 || !nvidia_private.dev_3) {
> >>               printk(KERN_INFO PFX "Detected an NVIDIA nForce/nForce2 "
> >> diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
> >> index 03be4ac..4dbdd3b 100644
> >> --- a/drivers/char/agp/sworks-agp.c
> >> +++ b/drivers/char/agp/sworks-agp.c
> >> @@ -474,7 +474,8 @@ static int agp_serverworks_probe(struct pci_dev *pdev,
> >>       }
> >>
> >>       /* Everything is on func 1 here so we are hardcoding function one */
> >> -     bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
> >> +     bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
> >> +                     (unsigned int)pdev->bus->number,
> >>                       PCI_DEVFN(0, 1));
> >>       if (!bridge_dev) {
> >>               dev_info(&pdev->dev, "can't find secondary device\n");
> >>
> >
> > Any feedback here? most of the remaining patches have the ACK except these.
> >
> >
> > --
> > Sinan Kaya
> > Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
> > Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()
  2018-01-29 22:38       ` Bjorn Helgaas
@ 2018-01-29 22:43         ` Dave Airlie
  0 siblings, 0 replies; 62+ messages in thread
From: Dave Airlie @ 2018-01-29 22:43 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Sinan Kaya, Arnd Bergmann, Greg Kroah-Hartman, David Airlie,
	Linux PCI, timur, open list, linux-arm-msm, linux-arm-kernel

On 30 January 2018 at 08:38, Bjorn Helgaas <helgaas@kernel.org> wrote:
> On Tue, Jan 30, 2018 at 07:43:21AM +1000, Dave Airlie wrote:
>> On 3 January 2018 at 22:44, Sinan Kaya <okaya@codeaurora.org> wrote:
>> > On 12/19/2017 12:37 AM, 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.
>>
>> So not a major problem, but it would be pretty much impossible for either
>> of these agp drivers to be used in any other domain ever.
>>
>> What does this buy us, maybe just rename pci_get_bus_and_slot to
>> pci_get_domain0_bus_and_slot as a helper, or just pass the pdev in
>> and have it do the right thing always.
>
> I already have this patch on my "next" branch, planned for the v4.16
> merge window, so it's done unless you have a major objection.

Yeah I don't really care either way, I just can't seen the point in changing
agp drivers that definitely will never see a domain, but if it gets
rid of a dumb API,
so be it.

Dave.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function
  2017-12-19  5:38 ` [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function Sinan Kaya
@ 2018-02-16 14:55   ` Bjorn Helgaas
  0 siblings, 0 replies; 62+ messages in thread
From: Bjorn Helgaas @ 2018-02-16 14:55 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: linux-pci, timur, open list, linux-arm-msm, Bjorn Helgaas,
	linux-arm-kernel

On Tue, Dec 19, 2017 at 12:38:02AM -0500, 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.
> 
> Now that all users of pci_get_bus_and_slot() switched to
> pci_get_domain_bus_and_slot(), it is now safe to remove this function.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Applied to pci/deprecate-get-bus-and-slot for v4.17, thanks!

> ---
>  include/linux/pci.h | 8 --------
>  1 file changed, 8 deletions(-)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 66cca1c..04cecbe 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -948,11 +948,6 @@ struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
>  struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
>  struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus,
>  					    unsigned int devfn);
> -static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
> -						   unsigned int devfn)
> -{
> -	return pci_get_domain_bus_and_slot(0, bus, devfn);
> -}
>  struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
>  int pci_dev_present(const struct pci_device_id *ids);
>  
> @@ -1660,9 +1655,6 @@ static inline struct pci_bus *pci_find_next_bus(const struct pci_bus *from)
>  static inline struct pci_dev *pci_get_slot(struct pci_bus *bus,
>  						unsigned int devfn)
>  { return NULL; }
> -static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
> -						unsigned int devfn)
> -{ return NULL; }
>  static inline struct pci_dev *pci_get_domain_bus_and_slot(int domain,
>  					unsigned int bus, unsigned int devfn)
>  { return NULL; }
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2018-02-16 14:55 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-19  5:37 [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 01/26] alpha/PCI: " Sinan Kaya
2018-01-03 12:43   ` Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 02/26] powerpc/PCI: " Sinan Kaya
2017-12-19 10:29   ` Michael Ellerman
2017-12-19 12:24     ` Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 03/26] x86/PCI: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 04/26] ata: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 05/26] agp: nvidia: " Sinan Kaya
2018-01-03 12:44   ` Sinan Kaya
2018-01-29 21:43     ` Dave Airlie
2018-01-29 22:01       ` Sinan Kaya
2018-01-29 22:38       ` Bjorn Helgaas
2018-01-29 22:43         ` Dave Airlie
2017-12-19  5:37 ` [PATCH V4 06/26] edd: " Sinan Kaya
2018-01-03 12:48   ` Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 07/26] ibft: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 08/26] drm/gma500: " Sinan Kaya
2018-01-04 12:27   ` Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 09/26] drm/nouveau: " Sinan Kaya
2018-01-04 12:26   ` Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 10/26] Drivers: ide: " Sinan Kaya
2017-12-19 14:13   ` David Miller
2017-12-19  5:37 ` [PATCH V4 11/26] iommu/amd: " Sinan Kaya
2018-01-04 12:25   ` Sinan Kaya
2018-01-04 16:28     ` Gary R Hook
2018-01-04 16:32       ` Sinan Kaya
2018-01-04 17:25         ` Gary R Hook
2018-01-17 13:02   ` Joerg Roedel
2017-12-19  5:37 ` [PATCH V4 12/26] powerpc/powermac: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 13/26] bnx2x: " Sinan Kaya
2017-12-19 14:14   ` David Miller
2017-12-19  5:37 ` [PATCH V4 14/26] pch_gbe: " Sinan Kaya
2017-12-19 10:45   ` Andy Shevchenko
2017-12-19 12:17     ` Sinan Kaya
2017-12-19 13:24       ` Andy Shevchenko
2017-12-19 14:53       ` David Miller
2017-12-19 14:13   ` David Miller
2017-12-19  5:37 ` [PATCH V4 15/26] PCI: cpqhp: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 16/26] PCI: ibmphp: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 17/26] PCI/quirks: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 18/26] PCI/syscall: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 19/26] xen: " Sinan Kaya
2017-12-19  5:37 ` [PATCH V4 20/26] openprom: " Sinan Kaya
2017-12-19 14:13   ` David Miller
2017-12-19  5:37 ` [PATCH V4 21/26] backlight: " Sinan Kaya
2017-12-19  8:51   ` Lee Jones
2017-12-19  5:37 ` [PATCH V4 22/26] video: fbdev: intelfb: " Sinan Kaya
2018-01-02 13:38   ` Sinan Kaya
2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
2017-12-19  5:37 ` [PATCH V4 23/26] video: fbdev: nvidia: " Sinan Kaya
2018-01-02 13:38   ` Sinan Kaya
2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
2017-12-19  5:38 ` [PATCH V4 24/26] video: fbdev: riva: " Sinan Kaya
2018-01-02 13:37   ` Sinan Kaya
2018-01-03 11:18     ` Bartlomiej Zolnierkiewicz
2017-12-19  5:38 ` [PATCH V4 25/26] i7300_idle: remove unused file Sinan Kaya
2018-01-02 13:36   ` Sinan Kaya
2018-01-02 13:44     ` Greg Kroah-Hartman
2017-12-19  5:38 ` [PATCH V4 26/26] PCI: Remove pci_get_bus_and_slot() function Sinan Kaya
2018-02-16 14:55   ` Bjorn Helgaas
2018-01-11 23:57 ` [PATCH V4 00/26] PCI: deprecate pci_get_bus_and_slot() Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).