Messages in this thread | | | Date | Fri, 29 May 2009 14:56:14 +0200 | From | Martin Schwidefsky <> | Subject | Re: [patch 1/2] idle profile hits with NOHZ |
| |
On Thu, 28 May 2009 22:19:44 +0200 (CEST) Thomas Gleixner <tglx@linutronix.de> wrote:
> On Thu, 28 May 2009, Martin Schwidefsky wrote: > > --- quilt-2.6.orig/kernel/time/tick-sched.c > > +++ quilt-2.6/kernel/time/tick-sched.c > > @@ -166,6 +166,7 @@ static void tick_nohz_stop_idle(int cpu) > > ts->idle_lastupdate = now; > > ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta); > > ts->idle_active = 0; > > + ts->idle_pc = profile_pc(get_irq_regs()); > > Hmm, tick_nohz_stop_idle() is called from > tick_nohz_restart_sched_tick() as well in the context of the idle > task. > > I think there is no guarantee that get_irq_regs() will return > anything useful in thread context. > > So get_irq_regs() might return a NULL pointer which will explode > some of the profile_pc() implementations. If not it can still feed > total nonsense to the profile_hits() call.
Drat, but if it is called from idle we should be able to just skip the assignment to ts->idle_pc, no? Then a simple in_interrupt() test is missing.
-- blue skies, Martin.
"Reality continues to ruin my life." - Calvin.
| |