Re: RCU question

From: Dipankar Sarma
Date: Thu Dec 09 2004 - 23:31:27 EST


On Thu, Dec 09, 2004 at 03:59:45PM -0800, George Anzinger wrote:
> I am working on VST code. This code is called from the idle loop to check
> for future timers. It then sets up a timer to interrupt in time to handle
> the nearest timer and turns off the time base interrupt source. As part of
> qualifying the entry to this state I want to make sure there is no pending
> work so, from the idle task I have this:
>
> if (local_softirq_pending())
> do_softirq();
>
> BUG_ON(local_softirq_pending());
>
> I did not really expect to find any pending softirqs, but, not only are
> there some, they don't go away and the system BUGs. The offender is the
> RCU task. The question is: is this normal or is there something wrong?

Why do you think there would not be any softirq pending after do_softirq() ?
What if the cpu gets a network interrupt which raises a softirq ?
And yes, RCU processing in softirq context can re-raise the softirq.
AFAICS, it is perfectly normal.

Thanks
Dipankar
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/