diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2015-06-16 12:58:37 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2015-06-18 09:45:54 -0400 |
commit | 7fc611ff3ff1a0b8f5a6569fe75a97d6c70bed6c (patch) | |
tree | a03dcbbb7d77dead865832bc9c8eede6c7588e81 | |
parent | 0c36b8ac7052eafed952ad3487ed8671dc9dc5f9 (diff) |
s390/pci: improve handling of hotplug event 0x301
Hypervisors may deliver event 0x301 not only for standby
but also for reserved devices.
Just handle event 0x301 regardless of the device's state.
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_event.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c index 460fdb21cf61..ed2394dd14e9 100644 --- a/arch/s390/pci/pci_event.c +++ b/arch/s390/pci/pci_event.c | |||
@@ -75,7 +75,13 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf) | |||
75 | zpci_err_hex(ccdf, sizeof(*ccdf)); | 75 | zpci_err_hex(ccdf, sizeof(*ccdf)); |
76 | 76 | ||
77 | switch (ccdf->pec) { | 77 | switch (ccdf->pec) { |
78 | case 0x0301: /* Standby -> Configured */ | 78 | case 0x0301: /* Reserved|Standby -> Configured */ |
79 | if (!zdev) { | ||
80 | ret = clp_add_pci_device(ccdf->fid, ccdf->fh, 0); | ||
81 | if (ret) | ||
82 | break; | ||
83 | zdev = get_zdev_by_fid(ccdf->fid); | ||
84 | } | ||
79 | if (!zdev || zdev->state != ZPCI_FN_STATE_STANDBY) | 85 | if (!zdev || zdev->state != ZPCI_FN_STATE_STANDBY) |
80 | break; | 86 | break; |
81 | zdev->state = ZPCI_FN_STATE_CONFIGURED; | 87 | zdev->state = ZPCI_FN_STATE_CONFIGURED; |