• Rafael J. Wysocki's avatar
    PM / domains: Rework governor code to be more consistent · 704d2ce6
    Rafael J. Wysocki authored
    The genpd governor currently uses negative PM QoS values to indicate
    the "no suspend" condition and 0 as "no restriction", but it doesn't
    use them consistently.  Moreover, it tries to refresh QoS values for
    already suspended devices in a quite questionable way.
    
    For the above reasons, rework it to be a bit more consistent.
    
    First off, note that dev_pm_qos_read_value() in
    dev_update_qos_constraint() and __default_power_down_ok() is
    evaluated for devices in suspend.  Moreover, that only happens if the
    effective_constraint_ns value for them is negative (meaning "no
    suspend").  It is not evaluated in any other cases, so effectively
    the QoS values are only updated for devices in suspend that should
    not have been suspended in the first place.  In all of the other
    cases, the QoS values taken into account are the effective ones from
    the time before the device has been suspended, so generally devices
    need to be resumed and suspended again for new QoS values to take
    effect anyway.  Thus evaluating dev_update_qos_constraint() in
    those two places doesn't make sense at all, so drop it.
    
    Second, initialize effective_constraint_ns to 0 ("no constraint")
    rather than to (-1) ("no suspend"), which makes more sense in
    general and in case effective_constraint_ns is never updated
    (the device is in suspend all the time or it is never suspended)
    it doesn't affect the device's parent and so on.
    
    Finally, rework default_suspend_ok() to explicitly handle the
    "no restriction" and "no suspend" special cases.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: default avatarTero Kristo <t-kristo@ti.com>
    Reviewed-by: default avatarRamesh Thomas <ramesh.thomas@intel.com>
    704d2ce6
domain_governor.c 7.26 KB