Skip to content
  • Ulf Hansson's avatar
    PM / Domains: Eliminate the mutex for the generic_pm_domain_data · c0356db7
    Ulf Hansson authored
    
    
    While adding devices to their PM domains, dev_pm_qos_add_notifier() was
    invoked while allocating the generic_pm_domain_data for the device.
    
    Since the generic_pm_domain_data's device pointer will be assigned
    after allocation, the ->genpd_dev_pm_qos_notifier() callback could be
    called prior having a valid pointer to the device. Similar scenario
    existed while removing a device from a genpd.
    
    To cope with these scenarios a mutex was used to protect the pointer to
    the device.
    
    By re-order the sequence for when dev_pm_qos_add|remove_notifier() are
    invoked, we make sure the ->genpd_dev_pm_qos_notifier() callback are
    always called with a valid device pointer available.
    
    In this way, we eliminate the need for protecting the pointer and thus
    we can remove the mutex from the struct generic_pm_domain_data.
    
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    c0356db7