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 <[email protected]>
---
 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 d31ed4e..496c045 100644
--- a/drivers/video/fbdev/intelfb/intelfbhw.c
+++ b/drivers/video/fbdev/intelfb/intelfbhw.c
@@ -175,13 +175,15 @@ int intelfbhw_get_memory(struct pci_dev *pdev, int 
*aperture_size,
 {
        struct pci_dev *bridge_dev;
        u16 tmp;
+       u16 devfn;
        int stolen_overhead;
 
        if (!pdev || !aperture_size || !stolen_size)
                return 1;
 
+       devfn = PCI_DEVFN(0, 0);
        /* Find the bridge device.  It is always 0:0.0 */
-       if (!(bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0)))) {
+       if (!(bridge_dev = pci_get_domain_bus_and_slot(0, 0, devfn))) {
                ERR_MSG("cannot find bridge device\n");
                return 1;
        }
-- 
1.9.1

Reply via email to