| From a51b55789d6520830013e033593a20266d9695a1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 29 Oct 2021 15:03:15 -0700 |
| Subject: ibmvnic: Process crqs after enabling interrupts |
| |
| From: Sukadev Bhattiprolu <sukadev@linux.ibm.com> |
| |
| [ Upstream commit 6e20d00158f31f7631d68b86996b7e951c4451c8 ] |
| |
| Soon after registering a CRQ it is possible that we get a fail over or |
| maybe a CRQ_INIT from the VIOS while interrupts were disabled. |
| |
| Look for any such CRQs after enabling interrupts. |
| |
| Otherwise we can intermittently fail to bring up ibmvnic adapters during |
| boot, specially in kexec/kdump kernels. |
| |
| Fixes: 032c5e82847a ("Driver for IBM System i/p VNIC protocol") |
| Reported-by: Vaishnavi Bhat <vaish123@in.ibm.com> |
| Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com> |
| Reviewed-by: Dany Madden <drt@linux.ibm.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/ibm/ibmvnic.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c |
| index 059eaa13e2c6d..9adfc0a7ab823 100644 |
| --- a/drivers/net/ethernet/ibm/ibmvnic.c |
| +++ b/drivers/net/ethernet/ibm/ibmvnic.c |
| @@ -4934,6 +4934,9 @@ static int init_crq_queue(struct ibmvnic_adapter *adapter) |
| crq->cur = 0; |
| spin_lock_init(&crq->lock); |
| |
| + /* process any CRQs that were queued before we enabled interrupts */ |
| + tasklet_schedule(&adapter->tasklet); |
| + |
| return retrc; |
| |
| req_irq_failed: |
| -- |
| 2.33.0 |
| |