Message ID | 20220122025921.199446-3-sukadev@linux.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 48079e7fdd0269d66b1d7d66ae88bd03162464ad |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,1/4] ibmvnic: Allow extra failures before disabling | expand |
On 2022-01-21 18:59, Sukadev Bhattiprolu wrote: > ibmvnic_tasklet() continuously spins waiting for responses to all > capability requests. It does this to avoid encountering an error > during initialization of the vnic. However if there is a bug in the > VIOS and we do not receive a response to one or more queries the > tasklet ends up spinning continuously leading to hard lock ups. > > If we fail to receive a message from the VIOS it is reasonable to > timeout the login attempt rather than spin indefinitely in the tasklet. > > Fixes: 249168ad07cd ("ibmvnic: Make CRQ interrupt tasklet wait for all > capabilities crqs") > Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com> Reviewed-by: Dany Madden <drt@linux.ibm.com> > --- > drivers/net/ethernet/ibm/ibmvnic.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/net/ethernet/ibm/ibmvnic.c > b/drivers/net/ethernet/ibm/ibmvnic.c > index acd488310bbc..682a440151a8 100644 > --- a/drivers/net/ethernet/ibm/ibmvnic.c > +++ b/drivers/net/ethernet/ibm/ibmvnic.c > @@ -5491,12 +5491,6 @@ static void ibmvnic_tasklet(struct > tasklet_struct *t) > ibmvnic_handle_crq(crq, adapter); > crq->generic.first = 0; > } > - > - /* remain in tasklet until all > - * capabilities responses are received > - */ > - if (!adapter->wait_capability) > - done = true; > } > /* if capabilities CRQ's were sent in this tasklet, the following > * tasklet must wait until all responses are received
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index acd488310bbc..682a440151a8 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c @@ -5491,12 +5491,6 @@ static void ibmvnic_tasklet(struct tasklet_struct *t) ibmvnic_handle_crq(crq, adapter); crq->generic.first = 0; } - - /* remain in tasklet until all - * capabilities responses are received - */ - if (!adapter->wait_capability) - done = true; } /* if capabilities CRQ's were sent in this tasklet, the following * tasklet must wait until all responses are received
ibmvnic_tasklet() continuously spins waiting for responses to all capability requests. It does this to avoid encountering an error during initialization of the vnic. However if there is a bug in the VIOS and we do not receive a response to one or more queries the tasklet ends up spinning continuously leading to hard lock ups. If we fail to receive a message from the VIOS it is reasonable to timeout the login attempt rather than spin indefinitely in the tasklet. Fixes: 249168ad07cd ("ibmvnic: Make CRQ interrupt tasklet wait for all capabilities crqs") Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com> --- drivers/net/ethernet/ibm/ibmvnic.c | 6 ------ 1 file changed, 6 deletions(-)