Re: [RFC PATCH] Fix abnormal rcu dynticks_nesting values related toasync page fault

From: Frederic Weisbecker
Date: Tue Nov 27 2012 - 17:52:59 EST


2012/11/27 Gleb Natapov <gleb@xxxxxxxxxx>:
> What is the semantics of enter_idle()/exit_idle(), what are they used for?

It's used by drivers/idle/i7300_idle.c for some tracking. I don't know much
the details.

enter_idle() is called right before the CPU is set to lower power mode: hlt()

exit_idle() is called anytime we exit this low power mode: irq,
polling on need_resched(), etc...

> Not present fault happening in idle task does not mean we exit idle
> task. If this happens exception handler will execute sti; hlt waiting
> for missing page to be ready. Any interrupt happening during this hlt
> will do exit_idle() by itself.

Well, the code executed by this fault should be considered as an exit
from idle mode. Now it's a small piece of code and we hlt() quickly so
I guess getting of idle_exit() there wouldn't hurt much.

It's buggy for now anyway due to that race where we may not have an
opportunity to call back idle_enter() if the fault happens between the
idle_enter() in the idle loop and the hlt() in the idle loop.
--
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/