• Kant Fan's avatar
    thermal: devfreq_cooling: use local ops instead of global ops · b947769b
    Kant Fan authored
    Fix access illegal address problem in following condition:
    
    There are multiple devfreq cooling devices in system, some of them has
    EM model but others do not. Energy model ops such as state2power will
    append to global devfreq_cooling_ops when the cooling device with
    EM model is registered. It makes the cooling device without EM model
    also use devfreq_cooling_ops after appending when registered later by
    of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
    
    The IPA governor regards the cooling devices without EM model as a power
    actor, because they also have energy model ops, and will access illegal
    address at dfc->em_pd when execute cdev->ops->get_requested_power,
    cdev->ops->state2power or cdev->ops->power2state.
    
    Fixes: 615510fe ("thermal: devfreq_cooling: remove old power model and use EM")
    Cc: 5.13+ <stable@vger.kernel.org> # 5.13+
    Signed-off-by: default avatarKant Fan <kant@allwinnertech.com>
    Reviewed-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    b947769b
devfreq_cooling.c 13.8 KB