On Wed, 06 Feb 2008 20:10:50 -0600 "J. K. Cliburn" <[EMAIL PROTECTED]> wrote:
> Zan Lynx wrote: > > > gnome-terminal gets stuck. > > I began seeing this very thing around 2.6.24 time. (Fedora 8, vanilla > kernel.) I could usually cause the gnome terminal to hang if I rapidly > resized the window while executing make check-headers. > > Over a couple of days I bisected it down to this commit: > > Commit: 37bb6cb4097e29ffee970065b74499cbf10603a3 > Parent: d3d74453c34f8fd87674a8cf5b8a327c68f22e99 > Author: Peter Zijlstra <[EMAIL PROTECTED]> > AuthorDate: Fri Jan 25 21:08:32 2008 +0100 > Committer: Ingo Molnar <[EMAIL PROTECTED]> > CommitDate: Fri Jan 25 21:08:32 2008 +0100 > > hrtimer: unlock hrtimer_wakeup > > hrtimer_wakeup creates a > > base->lock > rq->lock > > lock dependancy. Avoid this by switching to > HRTIMER_CB_IRQSAFE_NO_SOFTIRQ > which doesn't hold base->lock. > > This fully untangles hrtimer locks from the scheduler locks, and allows > hrtimer usage in the scheduler proper. > > Signed-off-by: Peter Zijlstra <[EMAIL PROTECTED]> > Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]> > --- > kernel/hrtimer.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > > Reverting the commit seemed to fix the problem for me. > > Then I went away on a business trip Monday morning and returned Tuesday > night to a dead computer (won't POST), so I can't do any further > troubleshooting until I get it fixed. Useful, thanks. > Try reverting that patch and see if your gnome-terminal freezes go away. Here is a convenient patch against current mainline: --- a/kernel/hrtimer.c~revert-1 +++ a/kernel/hrtimer.c @@ -1292,7 +1292,7 @@ void hrtimer_init_sleeper(struct hrtimer sl->timer.function = hrtimer_wakeup; sl->task = task; #ifdef CONFIG_HIGH_RES_TIMERS - sl->timer.cb_mode = HRTIMER_CB_IRQSAFE_NO_SOFTIRQ; + sl->timer.cb_mode = HRTIMER_CB_IRQSAFE_NO_RESTART; #endif } @@ -1303,8 +1303,6 @@ static int __sched do_nanosleep(struct h do { set_current_state(TASK_INTERRUPTIBLE); hrtimer_start(&t->timer, t->timer.expires, mode); - if (!hrtimer_active(&t->timer)) - t->task = NULL; if (likely(t->task)) schedule(); _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/