[lkml]   [2007]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[patch 09/54] Prevent going idle with softirq pending
    -stable review patch.  If anyone has any objections, please let us know.

    From: Thomas Gleixner <>

    The NOHZ patch contains a check for softirqs pending when a CPU goes
    idle. The BUG is unrelated to NOHZ, it just was made visible by the NOHZ
    patch. The BUG showed up mainly on P4 / hyperthreading enabled machines
    which lead the investigations into the wrong direction in the first
    place. The real cause is in cond_resched_softirq():

    cond_resched_softirq() is enabling softirqs without invoking the softirq
    daemon when softirqs are pending. This leads to the warning message in
    the NOHZ idle code:

    t1 runs softirq disabled code on CPU#0
    interrupt happens, softirq is raised, but deferred (softirqs disabled)
    t1 calls cond_resched_softirq()
    enables softirqs via _local_bh_enable()
    calls schedule()
    t2 runs
    t1 is migrated to CPU#1
    t2 is done and invokes idle()
    NOHZ detects the pending softirq

    Fix: change _local_bh_enable() to local_bh_enable() so the softirq
    daemon is invoked.

    Thanks to Anant Nitya for debugging this with great patience !

    Signed-off-by: Thomas Gleixner <>
    Signed-off-by: Ingo Molnar <>
    Signed-off-by: Andrew Morton <>
    Cc: Anant Nitya <>
    Signed-off-by: Chris Wright <>
    Signed-off-by: Greg Kroah-Hartman <>
    kernel/sched.c | 4 +---
    1 file changed, 1 insertion(+), 3 deletions(-)

    --- linux-
    +++ linux-
    @@ -4545,9 +4545,7 @@ int __sched cond_resched_softirq(void)

    if (need_resched() && system_state == SYSTEM_RUNNING) {
    - raw_local_irq_disable();
    - _local_bh_enable();
    - raw_local_irq_enable();
    + local_bh_enable();
    return 1;
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-06-08 09:45    [W:0.025 / U:0.196 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site