• Rafael J. Wysocki's avatar
    cpuidle: menu: Avoid taking spinlock for accessing QoS values · 6dbf5cea
    Rafael J. Wysocki authored
    After commit 9908859a (cpuidle/menu: add per CPU PM QoS resume
    latency consideration) the cpuidle menu governor calls
    dev_pm_qos_read_value() on CPU devices to read the current resume
    latency QoS constraint values for them.  That function takes a spinlock
    to prevent the device's power.qos pointer from becoming NULL during
    the access which is a problem for the RT patchset where spinlocks are
    converted into mutexes and the idle loop stops working.
    
    However, it is not even necessary for the menu governor to take
    that spinlock, because the power.qos pointer accessed under it
    cannot be modified during the access anyway.
    
    For this reason, introduce a "raw" routine for accessing device
    QoS resume latency constraints without locking and use it in the
    menu governor.
    
    Fixes: 9908859a (cpuidle/menu: add per CPU PM QoS resume latency consideration)
    Acked-by: default avatarAlex Shi <alex.shi@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    6dbf5cea
menu.c 15.4 KB