mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
s390/pci: deconfigure device on release
When zpci_release_device() is called on a zPCI function that is still configured it would not be deconfigured. Until now this hasn't caused any problems because zpci_zdev_put() is only ever called for devices in Standby or Reserved. Fix it by adding sclp_pci_deconfigure() to the switch when in Configured state. Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
f6576a1b48
commit
a9045c2210
@ -782,6 +782,7 @@ error:
|
||||
void zpci_release_device(struct kref *kref)
|
||||
{
|
||||
struct zpci_dev *zdev = container_of(kref, struct zpci_dev, kref);
|
||||
int ret;
|
||||
|
||||
if (zdev->zbus->bus)
|
||||
zpci_remove_device(zdev, false);
|
||||
@ -790,6 +791,10 @@ void zpci_release_device(struct kref *kref)
|
||||
zpci_disable_device(zdev);
|
||||
|
||||
switch (zdev->state) {
|
||||
case ZPCI_FN_STATE_CONFIGURED:
|
||||
ret = sclp_pci_deconfigure(zdev->fid);
|
||||
zpci_dbg(3, "deconf fid:%x, rc:%d\n", zdev->fid, ret);
|
||||
fallthrough;
|
||||
case ZPCI_FN_STATE_STANDBY:
|
||||
if (zdev->has_hp_slot)
|
||||
zpci_exit_slot(zdev);
|
||||
|
Loading…
Reference in New Issue
Block a user