Messages in this thread | | | Date | Tue, 27 Nov 2012 23:53:07 +0100 | Subject | Re: [RFC PATCH] Fix abnormal rcu dynticks_nesting values related to async page fault | From | Frederic Weisbecker <> |
| |
2012/11/27 Gleb Natapov <gleb@redhat.com>: > 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.
| |