mbox series

[0/3] ath9k: interrupt fixes on queue reset

Message ID 20210914192515.9273-1-linus.luessing@c0d3.blue
Headers show
Series ath9k: interrupt fixes on queue reset | expand

Message

Linus Lüssing Sept. 14, 2021, 7:25 p.m. UTC
Hi,

The following are two patches for ath9k to fix a potential interrupt
storm (PATCH 2/3) and to fix potentially resetting the wifi chip while
its interrupts were accidentally reenabled (PATCH 3/3).

PATCH 1/3 adds the possibility to trigger the ath9k queue reset through
the ath9k reset file in debugfs. Which was helpful to reproduce and debug
this issue and might help for future debugging.

PATCH 2/3 and PATCH 3/3 should be applicable for stable.

Regards, Linus

Comments

Toke Høiland-Jørgensen Sept. 14, 2021, 7:53 p.m. UTC | #1
Linus Lüssing <linus.luessing@c0d3.blue> writes:

> Hi,
>
> The following are two patches for ath9k to fix a potential interrupt
> storm (PATCH 2/3) and to fix potentially resetting the wifi chip while
> its interrupts were accidentally reenabled (PATCH 3/3).

Uhh, interesting - nice debugging work! What's the user-level symptom of
this? I.e., when this triggers does the device just appear to hang, or
does it cause reboots, or?

-Toke
Linus Lüssing Sept. 15, 2021, 9:23 a.m. UTC | #2
Hi Toke,

On Tue, Sep 14, 2021 at 09:53:34PM +0200, Toke Høiland-Jørgensen wrote:
> Linus Lüssing <linus.luessing@c0d3.blue> writes:
> 
> > Hi,
> >
> > The following are two patches for ath9k to fix a potential interrupt
> > storm (PATCH 2/3) and to fix potentially resetting the wifi chip while
> > its interrupts were accidentally reenabled (PATCH 3/3).
> 
> Uhh, interesting - nice debugging work! What's the user-level symptom of
> this? I.e., when this triggers does the device just appear to hang, or
> does it cause reboots, or?
> 
> -Toke
> 

For PATCH 2/3 the user-level symptom was that the system would
hang for a few seconds and would then silently reboot without any notice
on the serial console. And after disabling CONFIG_ATH79_WDT the
system would "hang" indefinitely without any notice on the console
without a reboot (while JTAG/gdb showed that it was entering ath_isr()
again and again and wasn't doing anything else).

For PATCH 3/3 I don't have a specific user-level symptom. But from
looking at the git history it seemed to me that the ath9k hw
interrupts (AR_IER, AR_INTR_ASYNC_ENABLE and AR_INTR_ASYNC_ENABLE off)
should be disabled during a reset:

  4668cce527ac ath9k: disable the tasklet before taking the PCU lock
  eaf04a691566 ath9k: Disable beacon tasklet during reset
  872b5d814f99 ath9k: do not access hardware on IRQs during reset
  e3f31175a3ee ath9k: fix race condition in irq processing during hardware reset

Maybe someone else on these lists might know what issues this can
cause exactly?

Regards, Linus
Kalle Valo Oct. 5, 2021, 2:24 p.m. UTC | #3
Linus Lüssing <linus.luessing@c0d3.blue> writes:

> On Tue, Sep 14, 2021 at 09:25:12PM +0200, Linus Lüssing wrote:

>> Hi,

>> 

>> The following are two patches for ath9k to fix a potential interrupt

>> storm (PATCH 2/3) and to fix potentially resetting the wifi chip while

>> its interrupts were accidentally reenabled (PATCH 3/3).

>> 

>> PATCH 1/3 adds the possibility to trigger the ath9k queue reset through

>> the ath9k reset file in debugfs. Which was helpful to reproduce and debug

>> this issue and might help for future debugging.

>> 

>> PATCH 2/3 and PATCH 3/3 should be applicable for stable.

>> 

>> Regards, Linus

>> 

>

> I've marked PATCH 3/3 as "rejected" in Patchwork now due to

> Felix's legitimate remarks.


BTW I prefer to mark patches as rejected myself in patchwork so that I
know what's happening (patchwork is lacking in this respect as it
doesn't notify me if there are any changes in patches). But good that
you mentioned this via email so I didn't need to wonder what happened.

> For patches 1/3 and and 2/3 I'd still like to see them merged upstream

> if there is no objection to those.


Thanks, I was about to ask what I should do with this patchset.

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches