summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2013-06-05 16:07:28 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-06-26 21:10:08 +0200
commit8b2a7e609bfcb26ed3639da9eda3fea42c009b65 (patch)
tree3ba9126746a67626411d1581b2b2fac43127832a
parent4bee2a5dce45096851cb8694d962bf8c016816a8 (diff)
downloadop-kernel-dev-8b2a7e609bfcb26ed3639da9eda3fea42c009b65.zip
op-kernel-dev-8b2a7e609bfcb26ed3639da9eda3fea42c009b65.tar.gz
s390/pci: remove pdev during unplug
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>
-rw-r--r--arch/s390/pci/pci_clp.c1
-rw-r--r--drivers/pci/hotplug/s390_pci_hpc.c7
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
index bd34359..2e95396 100644
--- a/arch/s390/pci/pci_clp.c
+++ b/arch/s390/pci/pci_clp.c
@@ -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 */
diff --git a/drivers/pci/hotplug/s390_pci_hpc.c b/drivers/pci/hotplug/s390_pci_hpc.c
index b12acaa..ea3fa90 100644
--- a/drivers/pci/hotplug/s390_pci_hpc.c
+++ b/drivers/pci/hotplug/s390_pci_hpc.c
@@ -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);
}
OpenPOWER on IntegriCloud