On Fri, 2009-08-28 at 11:44 +0530, Arun R Bharadwaj wrote: > * Peter Zijlstra <a.p.zijls...@chello.nl> [2009-08-27 14:53:27]: > > Hi Peter, Ben, > > I've put the whole thing in a sort of a block diagram. Hope it > explains things more clearly. > > > > > > > ---------------- > | CPUIDLE | (Select idle states like > | GOVERNORS | C1, C1e, C6 etc in case > | (Menu/Ladder)| x86 & nap, snooze in > | | case of POWER - based on > ---------------- latency & power req) > ^ > | > | > | > | > | > ---------- ----------------- ------------- > | | | | | PSERIES | > | ACPI |------------------> | CPUIDLE | <--------------| > IDLE | > | | | | | | > ---------- ----------------- ------------- > > Main idle routine- pm_idle() Main idle routine- > ppc_md.power_save() > > pm_idle = cpuidle_pm_idle; ppc_md.power_save = > (start using cpuidle's idle cpuidle_pm_idle(); > loop, which internally calls > governor to select the right > state to go into). > > > Relavent code snippet from drivers/cpuidle/cpuidle.c > ------------------------------------- > > static void cpuidle_idle_call(void) > { > ............ > ............ > > /* Call the menu_select() to select the idle state to enter. */ > next_state = cpuidle_curr_governor->select(dev); > > ............ > ............ > > /* > * Enter the idle state previously selected. target_state->enter > * would call pseries_cpuidle_loop() which selects nap/snooze > * / > dev->last_residency = target_state->enter(dev, target_state); > } > > void cpuidle_install_idle_handler(void) > { > ......... > ......... > cpuidle_pm_idle = cpuidle_idle_call; > }
All I'm seeing here is a frigging mess. How on earths can something called: cpuidle_install_idle_handler() have a void argument, _WHAT_ handler is it going to install? So somehow you added to the ACPI mess by now having 3 wild function pointers, that's _NOT_ progress. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev