lkml.org 
[lkml]   [2006]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch] hrtimers: add state tracking, fix

    * Tilman Schmidt <tilman@imap.cc> wrote:

    > I tried kernel 2.6.20-rc1-mm1 with the "tickless" option on my P3/933
    > but it has now for the second time in a row caused a system freeze as
    > soon as I left the system idle for a couple of hours. The second time
    > I was warned and switched to a text console before I left the system,
    > and was able to collect this BUG message (copied manually, beware of
    > typos):
    >
    > EFLAGS: 00200082 (2.6.20-rc1-mm1-noinitrd #0)
    > EIP is at __rb_rotate_right+0x1/0x54
    [...]
    > Call Trace:
    > [<c021d049>] rb_insert_color+0x55/0xbe
    > [<c012d15b>] enqueue_hrtimer+0x10a/0x116
    > [<c012d9b4>] hrtimer_start+0x78/0x93

    thanks for the report - this made me review the hrtimer state engine
    logic, and bingo, it indeed has a nasty typo! Could you try the fix
    below, does it fix your problem? It might explain the crash you are
    seeing, because the typo means we'd ignore HRTIMER_STATE_PENDING state
    (which is rare but possible).

    Ingo

    -------------------------->
    Subject: [patch] hrtimers: add state tracking, fix
    From: Ingo Molnar <mingo@elte.hu>

    fix bug in hrtimer_is_queued(), introduced by a cleanup during
    the recent refactoring.

    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    kernel/hrtimer.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    Index: linux/kernel/hrtimer.c
    ===================================================================
    --- linux.orig/kernel/hrtimer.c
    +++ linux/kernel/hrtimer.c
    @@ -157,7 +157,7 @@ static void hrtimer_get_softirq_time(str
    static inline int hrtimer_is_queued(struct hrtimer *timer)
    {
    return timer->state &
    - (HRTIMER_STATE_ENQUEUED || HRTIMER_STATE_PENDING);
    + (HRTIMER_STATE_ENQUEUED | HRTIMER_STATE_PENDING);
    }

    /*
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-12-19 21:01    [W:4.100 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site