Message ID | 20191011055254.8347-1-clg@kaod.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | net/ibmvnic: Fix EOI when running in XIVE mode. | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch next (6edfc6487b474fe01857dc3f1a9cd701bb9b21c8) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 15 lines checked |
On 10/11/19 12:52 AM, Cédric Le Goater wrote: > pSeries machines on POWER9 processors can run with the XICS (legacy) > interrupt mode or with the XIVE exploitation interrupt mode. These > interrupt contollers have different interfaces for interrupt > management : XICS uses hcalls and XIVE loads and stores on a page. > H_EOI being a XICS interface the enable_scrq_irq() routine can fail > when the machine runs in XIVE mode. > > Fix that by calling the EOI handler of the interrupt chip. > > Fixes: f23e0643cd0b ("ibmvnic: Clear pending interrupt after device reset") > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- Thank you for this fix, Cedric! Tom > drivers/net/ethernet/ibm/ibmvnic.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c > index 2b073a3c0b84..f59d9a8e35e2 100644 > --- a/drivers/net/ethernet/ibm/ibmvnic.c > +++ b/drivers/net/ethernet/ibm/ibmvnic.c > @@ -2878,12 +2878,10 @@ static int enable_scrq_irq(struct ibmvnic_adapter *adapter, > > if (test_bit(0, &adapter->resetting) && > adapter->reset_reason == VNIC_RESET_MOBILITY) { > - u64 val = (0xff000000) | scrq->hw_irq; > + struct irq_desc *desc = irq_to_desc(scrq->irq); > + struct irq_chip *chip = irq_desc_get_chip(desc); > > - rc = plpar_hcall_norets(H_EOI, val); > - if (rc) > - dev_err(dev, "H_EOI FAILED irq 0x%llx. rc=%ld\n", > - val, rc); > + chip->irq_eoi(&desc->irq_data); > } > > rc = plpar_hcall_norets(H_VIOCTL, adapter->vdev->unit_address,
From: Cédric Le Goater <clg@kaod.org> Date: Fri, 11 Oct 2019 07:52:54 +0200 > pSeries machines on POWER9 processors can run with the XICS (legacy) > interrupt mode or with the XIVE exploitation interrupt mode. These > interrupt contollers have different interfaces for interrupt > management : XICS uses hcalls and XIVE loads and stores on a page. > H_EOI being a XICS interface the enable_scrq_irq() routine can fail > when the machine runs in XIVE mode. > > Fix that by calling the EOI handler of the interrupt chip. > > Fixes: f23e0643cd0b ("ibmvnic: Clear pending interrupt after device reset") > Signed-off-by: Cédric Le Goater <clg@kaod.org> Applied and queued up for -stable, thanks.
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 2b073a3c0b84..f59d9a8e35e2 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c @@ -2878,12 +2878,10 @@ static int enable_scrq_irq(struct ibmvnic_adapter *adapter, if (test_bit(0, &adapter->resetting) && adapter->reset_reason == VNIC_RESET_MOBILITY) { - u64 val = (0xff000000) | scrq->hw_irq; + struct irq_desc *desc = irq_to_desc(scrq->irq); + struct irq_chip *chip = irq_desc_get_chip(desc); - rc = plpar_hcall_norets(H_EOI, val); - if (rc) - dev_err(dev, "H_EOI FAILED irq 0x%llx. rc=%ld\n", - val, rc); + chip->irq_eoi(&desc->irq_data); } rc = plpar_hcall_norets(H_VIOCTL, adapter->vdev->unit_address,
pSeries machines on POWER9 processors can run with the XICS (legacy) interrupt mode or with the XIVE exploitation interrupt mode. These interrupt contollers have different interfaces for interrupt management : XICS uses hcalls and XIVE loads and stores on a page. H_EOI being a XICS interface the enable_scrq_irq() routine can fail when the machine runs in XIVE mode. Fix that by calling the EOI handler of the interrupt chip. Fixes: f23e0643cd0b ("ibmvnic: Clear pending interrupt after device reset") Signed-off-by: Cédric Le Goater <clg@kaod.org> --- drivers/net/ethernet/ibm/ibmvnic.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)