Centralize the removal so all paths are covered and the hotplug slot
will remain active until the device is really destroyed.
Signed-off-by: Gerd Bayer <gbayer@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
  */
 void zpci_device_reserved(struct zpci_dev *zdev)
 {
-       if (zdev->has_hp_slot)
-               zpci_exit_slot(zdev);
        /*
         * Remove device from zpci_list as it is going away. This also
         * makes sure we ignore subsequent zPCI events for this device.
        struct zpci_dev *zdev = container_of(kref, struct zpci_dev, kref);
        int ret;
 
+       if (zdev->has_hp_slot)
+               zpci_exit_slot(zdev);
+
        if (zdev->zbus->bus)
                zpci_bus_remove_device(zdev, false);