Problems in cpuidle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux