All of lore.kernel.org
 help / color / mirror / Atom feed
* Problems in cpuidle
@ 2009-03-06 17:32 Premi, Sanjeev
  2009-03-09 10:05 ` Högander Jouni
  0 siblings, 1 reply; 6+ messages in thread
From: Premi, Sanjeev @ 2009-03-06 17:32 UTC (permalink / raw)
  To: linux-omap

While working with cpuidle, I have come across these problems.
I am also working on the solutions, but would be good to hear
more thoughts.

1) The flag 'enable_dyn_sleep' is honoured only in omap3_idle_bm_check()
   but in the C1 state, omap3_enter_idle() is invoked directly.
   So, the system can transition to deeper idle state(s)

   Same is the case with 'sleep_block'.

   Possible Solutions:
     a)  Call omap3_can_sleep() in omap3_enter_idle().
         This makes omap3_idle_bm_check() redundant; and can be removed.

     b)  Make single entry point for all idle states
         But would be an overkill for C1 state.

     c)  Change omap3_can_sleep() to check for omap_uart_can_sleep()
         and omap3_fclks_active() only.
         Move check for 'enable_dyn_sleep' and 'sleep_block' into
         omap3_enter_idle()

    I believe (c) would be the most optimal.

2) When 'enable_off_mode' is 0, and (mpu_state < PWRDM_POWER_RET)
   the local variables mpu_state and core_state are modified; but
   the usage count for the original state selected by the governor
   are updated.

   Solution:
     Recalculate the idle state and update the dev->last_state
     (for cpuidle driver) to ensure that usage statistics for the
     actual state are entered.

     Only problem is that latency corresponding to original state
     would have been used by the dynamic tick functions.

If things go well, I will be able to submit patches on top of pm branch
by tomorrow...

Best regards,
Sanjeev

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-03-13  6:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-06 17:32 Problems in cpuidle Premi, Sanjeev
2009-03-09 10:05 ` Högander Jouni
2009-03-10  1:42   ` Premi, Sanjeev
2009-03-10 15:14     ` Kevin Hilman
2009-03-11 13:23       ` Premi, Sanjeev
2009-03-13  6:53         ` Högander Jouni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.