s390/pci: remove pdev during unplug
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Wed, 5 Jun 2013 14:07:28 +0000 (16:07 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Jun 2013 19:10:08 +0000 (21:10 +0200)
The disable slot implementation on s390 currently just detaches the
pci function from the partition - without informing the pci layer.
Fix this by calling pci_stop_and_remove_bus_device prior to the
operation.

Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/pci/pci_clp.c
drivers/pci/hotplug/s390_pci_hpc.c

index bd34359..2e95396 100644 (file)
@@ -236,7 +236,6 @@ int clp_disable_fh(struct zpci_dev *zdev)
        if (!zdev_enabled(zdev))
                return 0;
 
-       dev_info(&zdev->pdev->dev, "disabling fn handle: 0x%x\n", fh);
        rc = clp_set_pci_fn(&fh, 0, CLP_SET_DISABLE_PCI_FN);
        if (!rc)
                /* Success -> store disabled handle in zdev */
index b12acaa..ea3fa90 100644 (file)
@@ -99,12 +99,13 @@ static int disable_slot(struct hotplug_slot *hotplug_slot)
        if (!zpci_fn_configured(slot->zdev->state))
                return -EIO;
 
+       if (slot->zdev->pdev)
+               pci_stop_and_remove_bus_device(slot->zdev->pdev);
+
        rc = zpci_disable_device(slot->zdev);
        if (rc)
                return rc;
-       /* TODO: we rely on the user to unbind/remove the device, is that plausible
-        *       or do we need to trigger that here?
-        */
+
        return slot_deconfigure(slot);
 }