Commit 6a149036 authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki
Browse files

cpufreq: Add policy create/remove notifiers back



This effectively reverts some changes made by commit f9f41e3e
("cpufreq: Remove policy create/remove notifiers").

We have a new use case for policy create/remove notifiers (for
allocating/freeing QoS requests per policy), so add them back.

Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
[ rjw: Subject & changelog ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent e21a712a
Loading
Loading
Loading
Loading
+14 −1
Original line number Original line Diff line number Diff line
@@ -1266,7 +1266,17 @@ static void cpufreq_policy_free(struct cpufreq_policy *policy)
				   DEV_PM_QOS_MAX_FREQUENCY);
				   DEV_PM_QOS_MAX_FREQUENCY);
	dev_pm_qos_remove_notifier(dev, &policy->nb_min,
	dev_pm_qos_remove_notifier(dev, &policy->nb_min,
				   DEV_PM_QOS_MIN_FREQUENCY);
				   DEV_PM_QOS_MIN_FREQUENCY);

	if (policy->max_freq_req) {
		/*
		 * CPUFREQ_CREATE_POLICY notification is sent only after
		 * successfully adding max_freq_req request.
		 */
		blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
					     CPUFREQ_REMOVE_POLICY, policy);
		dev_pm_qos_remove_request(policy->max_freq_req);
		dev_pm_qos_remove_request(policy->max_freq_req);
	}

	dev_pm_qos_remove_request(policy->min_freq_req);
	dev_pm_qos_remove_request(policy->min_freq_req);
	kfree(policy->min_freq_req);
	kfree(policy->min_freq_req);


@@ -1391,6 +1401,9 @@ static int cpufreq_online(unsigned int cpu)
				ret);
				ret);
			goto out_destroy_policy;
			goto out_destroy_policy;
		}
		}

		blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
				CPUFREQ_CREATE_POLICY, policy);
	}
	}


	if (cpufreq_driver->get && has_target()) {
	if (cpufreq_driver->get && has_target()) {
+2 −0
Original line number Original line Diff line number Diff line
@@ -458,6 +458,8 @@ static inline void cpufreq_resume(void) {}
/* Policy Notifiers  */
/* Policy Notifiers  */
#define CPUFREQ_ADJUST			(0)
#define CPUFREQ_ADJUST			(0)
#define CPUFREQ_NOTIFY			(1)
#define CPUFREQ_NOTIFY			(1)
#define CPUFREQ_CREATE_POLICY		(2)
#define CPUFREQ_REMOVE_POLICY		(3)


#ifdef CONFIG_CPU_FREQ
#ifdef CONFIG_CPU_FREQ
int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list);
int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list);