s390/pci: improve state check when processing hotplug events
Processing pci hotplug events can fail when a pci function is in an unexpected state. This can happen when we already processed the change associated with the hotplug event (especially when receiving hotplug events during early boot). Just ignore the event in this case. 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>
This commit is contained in:
parent
d3a73acbc2
commit
ca25f564c4
1 changed files with 3 additions and 2 deletions
|
@ -76,7 +76,7 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
|
|||
|
||||
switch (ccdf->pec) {
|
||||
case 0x0301: /* Standby -> Configured */
|
||||
if (!zdev || zdev->state == ZPCI_FN_STATE_CONFIGURED)
|
||||
if (!zdev || zdev->state != ZPCI_FN_STATE_STANDBY)
|
||||
break;
|
||||
zdev->state = ZPCI_FN_STATE_CONFIGURED;
|
||||
zdev->fh = ccdf->fh;
|
||||
|
@ -86,7 +86,8 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
|
|||
pci_rescan_bus(zdev->bus);
|
||||
break;
|
||||
case 0x0302: /* Reserved -> Standby */
|
||||
clp_add_pci_device(ccdf->fid, ccdf->fh, 0);
|
||||
if (!zdev)
|
||||
clp_add_pci_device(ccdf->fid, ccdf->fh, 0);
|
||||
break;
|
||||
case 0x0303: /* Deconfiguration requested */
|
||||
if (pdev)
|
||||
|
|
Loading…
Reference in a new issue