lkml.org 
[lkml]   [2020]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [Softirq] a76eadba0d: WARNING:at_net/mac80211/rx.c:#ieee80211_rx_napi[mac80211]
Date
jun qian <qianjun.kernel@gmail.com> writes:
> On Thu, Jul 23, 2020 at 6:58 PM Thomas Gleixner <tglx@linutronix.de> wrote:
>> That drops everything which has not yet been processed and the above
>> warning is due to this.
>>
> wow, I made a mistake, thank you for finding the cause of the problem
> so quickly.
>
> How about the following code. we need to clear the corresponding
> pending bit at the
> right time Instead of all the pending bits cleared in the start.
>
> pending = softirq_pending();
>
> while ((softirq_bit = ffs(pending))) {
>
> pending >>= softirq_bit;
>
> set_softirq_pending(pending); //Only clear the corresponding
> bit which will be processed.

How is that supposed to be correct. pending has been shifted
right. Something like this should work:

h++;
pending >>= softirq_bit;

if (timeout()) {
/*
* Ensure that the remaining pending bits
* are handled.
*/
or_softirq_pending(pending << (vec_nr + 1));
break;
}
}

Thanks,

tglx

\
 
 \ /
  Last update: 2020-07-23 16:36    [W:0.111 / U:0.592 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site