[PATCH] net/ibmvnic: Fix EOI when running in XIVE mode.

Thomas Falcon tlfalcon at linux.ibm.com
Sat Oct 12 05:48:03 AEDT 2019


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 at 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,


More information about the Linuxppc-dev mailing list