Re: [PATCH] USB: dwc2: hande irq on dead controller correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Oliver,

On 8/22/23 15:24, Oliver Neukum wrote:
> If the controller is dead, the honest answer to the
> question whether it has caused an irq is: unknown
> As the purpose of the irq return is to trigger switching
> off an IRQ, the correct response if you cannot
> determine if your device has caused the interrupt is
> IRQ_HANDLED
> 

If core is dead then it can not assert interrupt, it's more possible 
that it's spurious interrupt or interrupt from other device (IRQ is 
shared) and nothing should be handled. In this case reply by IRQ_HANDLED 
is incorrect because nothing is handled.

Thanks,
Minas

> Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx>
> ---
>   drivers/usb/dwc2/hcd_intr.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
> index c9740caa5974..0144ca8350c3 100644
> --- a/drivers/usb/dwc2/hcd_intr.c
> +++ b/drivers/usb/dwc2/hcd_intr.c
> @@ -2203,11 +2203,13 @@ static void dwc2_hc_intr(struct dwc2_hsotg *hsotg)
>   irqreturn_t dwc2_handle_hcd_intr(struct dwc2_hsotg *hsotg)
>   {
>   	u32 gintsts, dbg_gintsts;
> -	irqreturn_t retval = IRQ_NONE;
> +	irqreturn_t retval = IRQ_HANDLED;
>   
>   	if (!dwc2_is_controller_alive(hsotg)) {
>   		dev_warn(hsotg->dev, "Controller is dead\n");
>   		return retval;
> +	} else {
> +		retval = IRQ_NONE;
>   	}
>   
>   	spin_lock(&hsotg->lock);




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux