diff options
-rw-r--r-- | arch/s390/pci/pci.c | 15 | ||||
-rw-r--r-- | drivers/pci/hotplug/s390_pci_hpc.c | 7 |
2 files changed, 10 insertions, 12 deletions
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index d6c6b5119a14..c01b6dbac7cf 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c @@ -742,10 +742,9 @@ error: * @zdev: The zpci_dev to be configured * @fh: The general function handle supplied by the platform * - * Configuring a device includes the configuration itself, if not done by the - * platform, enabling, scanning and adding it to the common code PCI subsystem. - * If any failure occurs, the zpci_dev is left disabled either in Standby if - * the configuration failed or Configured if enabling or scanning failed. + * Given a device in the configuration state Configured, enables, scans and + * adds it to the common code PCI subsystem. If any failure occurs, the + * zpci_dev is left disabled. * * Return: 0 on success, or an error code otherwise */ @@ -754,14 +753,6 @@ int zpci_configure_device(struct zpci_dev *zdev, u32 fh) int rc; zdev->fh = fh; - if (zdev->state != ZPCI_FN_STATE_CONFIGURED) { - rc = sclp_pci_configure(zdev->fid); - zpci_dbg(3, "conf fid:%x, rc:%d\n", zdev->fid, rc); - if (rc) - return rc; - zdev->state = ZPCI_FN_STATE_CONFIGURED; - } - /* the PCI function will be scanned once function 0 appears */ if (!zdev->zbus->bus) return 0; diff --git a/drivers/pci/hotplug/s390_pci_hpc.c b/drivers/pci/hotplug/s390_pci_hpc.c index 154532663a70..f8f056be71b7 100644 --- a/drivers/pci/hotplug/s390_pci_hpc.c +++ b/drivers/pci/hotplug/s390_pci_hpc.c @@ -24,10 +24,17 @@ static int enable_slot(struct hotplug_slot *hotplug_slot) { struct zpci_dev *zdev = container_of(hotplug_slot, struct zpci_dev, hotplug_slot); + int rc; if (zdev->state != ZPCI_FN_STATE_STANDBY) return -EIO; + rc = sclp_pci_configure(zdev->fid); + zpci_dbg(3, "conf fid:%x, rc:%d\n", zdev->fid, rc); + if (rc) + return rc; + zdev->state = ZPCI_FN_STATE_CONFIGURED; + return zpci_configure_device(zdev, zdev->fh); } |