diff --git a/drivers/devfreq/governor_memlat.c b/drivers/devfreq/governor_memlat.c index 57640063c643..33ce6e2765ee 100644 --- a/drivers/devfreq/governor_memlat.c +++ b/drivers/devfreq/governor_memlat.c @@ -451,6 +451,16 @@ static struct devfreq_governor devfreq_gov_compute = { .event_handler = devfreq_memlat_ev_handler, }; +void memlat_set_immutable_flag(unsigned int flag) +{ + unsigned int *memlat_ptr = (unsigned int *)&devfreq_gov_memlat.immutable; + unsigned int *compute_ptr = (unsigned int *)&devfreq_gov_compute.immutable; + + *memlat_ptr = flag; + *compute_ptr = flag; +} +EXPORT_SYMBOL(memlat_set_immutable_flag); + #define NUM_COLS 2 static struct core_dev_map *init_core_dev_map(struct device *dev, struct device_node *of_node, diff --git a/drivers/soc/qcom/rimps_memlat.c b/drivers/soc/qcom/rimps_memlat.c index 957825e959ad..1c3de9aa69fd 100644 --- a/drivers/soc/qcom/rimps_memlat.c +++ b/drivers/soc/qcom/rimps_memlat.c @@ -807,6 +807,21 @@ static int memlat_event_cpu_hp_init(void) return ret; } +void rimps_force_free_pmu_events(unsigned int flag) +{ + unsigned int cpu; + + get_online_cpus(); + for_each_possible_cpu(cpu) { + if (flag) + memlat_event_hotplug_going_down(cpu); + else + memlat_event_hotplug_coming_up(cpu); + } + put_online_cpus(); +} +EXPORT_SYMBOL(rimps_force_free_pmu_events); + static int memlat_idle_notif(struct notifier_block *nb, unsigned long action, void *data)