PCI: Deprecate pci_get_bus_and_slot()
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(). When we have a pci_dev, extract the domain number from it. The config access syscalls don't allow the user to supply a domain number, so they only work on devices in domain 0, so we can just hard-code that. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> [bhelgaas: squash quirk & syscall patches together] Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
This commit is contained in:
parent
48ec053518
commit
39c9465204
|
@ -2699,7 +2699,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;
|
||||
|
|
|
@ -28,7 +28,7 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
|
|||
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 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
|
|||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue