[PATCH v2 1/2] ath10k: Keep track of which interrupts fired, don't poll them

Marc Gonzalez marc.w.gonzalez at free.fr
Mon Aug 24 04:36:54 EDT 2020


On 09/07/2020 17:21, Douglas Anderson wrote:

> If we have a per CE (Copy Engine) IRQ then we have no summary
> register.  Right now the code generates a summary register by
> iterating over all copy engines and seeing if they have an interrupt
> pending.
> 
> This has a problem.  Specifically if _none_ if the Copy Engines have

s/_none_ if/_none_ of

Hopefully, Kalle can just fixup before applying :-)

> an interrupt pending then they might go into low power mode and
> reading from their address space will cause a full system crash.  This
> was seen to happen when two interrupts went off at nearly the same
> time.  Both were handled by a single call of ath10k_snoc_napi_poll()
> but, because there were two interrupts handled and thus two calls to
> napi_schedule() there was still a second call to
> ath10k_snoc_napi_poll() which ran with no interrupts pending.
> 
> Instead of iterating over all the copy engines, let's just keep track
> of the IRQs that fire.  Then we can effectively generate our own
> summary without ever needing to read the Copy Engines.




More information about the ath10k mailing list