[PATCH] PCI Hotplug: fix up the compaq driver to work properly again.
drivers/hotplug/cpqphp_pci.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff -Nru a/drivers/hotplug/cpqphp_pci.c b/drivers/hotplug/cpqphp_pci.c
--- a/drivers/hotplug/cpqphp_pci.c Tue May 6 15:56:03 2003
+++ b/drivers/hotplug/cpqphp_pci.c Tue May 6 15:56:03 2003
@@ -85,19 +85,20 @@
{
unsigned char bus;
struct pci_bus *child;
- int rc = 0;
+ int num;
if (func->pci_dev == NULL)
- func->pci_dev = pci_find_slot(func->bus, (func->device << 3) | (func->function & 0x7));
+ func->pci_dev = pci_find_slot(func->bus, PCI_DEVFN(func->device, func->function));
- //Still NULL ? Well then scan for it !
+ /* No pci device, we need to create it then */
if (func->pci_dev == NULL) {
dbg("INFO: pci_dev still null\n");
- //this will generate pci_dev structures for all functions, but we will only call this case when lookup fails
- func->pci_dev = pci_scan_slot(ctrl->pci_dev->bus,
- (func->device << 3) + (func->function & 0x7));
+ num = pci_scan_slot(ctrl->pci_dev->bus, PCI_DEVFN(func->device, func->function));
+ if (num)
+ pci_bus_add_devices(ctrl->pci_dev->bus);
+ func->pci_dev = pci_find_slot(func->bus, PCI_DEVFN(func->device, func->function));
if (func->pci_dev == NULL) {
dbg("ERROR: pci_dev still null\n");
return 0;
@@ -108,10 +109,9 @@
pci_read_config_byte(func->pci_dev, PCI_SECONDARY_BUS, &bus);
child = (struct pci_bus*) pci_add_new_bus(func->pci_dev->bus, (func->pci_dev), bus);
pci_do_scan_bus(child);
-
}
- return rc;
+ return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/