Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e54df4ca authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cpufreq: interactive: Cache tunables when they are created"

parents a58fc2d7 53994155
Loading
Loading
Loading
Loading
+17 −17
Original line number Original line Diff line number Diff line
@@ -1140,6 +1140,22 @@ static struct notifier_block cpufreq_interactive_idle_nb = {
	.notifier_call = cpufreq_interactive_idle_notifier,
	.notifier_call = cpufreq_interactive_idle_notifier,
};
};


static void save_tunables(struct cpufreq_policy *policy,
			  struct cpufreq_interactive_tunables *tunables)
{
	int cpu;
	struct cpufreq_interactive_cpuinfo *pcpu;

	if (have_governor_per_policy())
		cpu = cpumask_first(policy->related_cpus);
	else
		cpu = 0;

	pcpu = &per_cpu(cpuinfo, cpu);
	WARN_ON(pcpu->cached_tunables && pcpu->cached_tunables != tunables);
	pcpu->cached_tunables = tunables;
}

static struct cpufreq_interactive_tunables *alloc_tunable(
static struct cpufreq_interactive_tunables *alloc_tunable(
					struct cpufreq_policy *policy)
					struct cpufreq_policy *policy)
{
{
@@ -1165,25 +1181,10 @@ static struct cpufreq_interactive_tunables *alloc_tunable(
	spin_lock_init(&tunables->target_loads_lock);
	spin_lock_init(&tunables->target_loads_lock);
	spin_lock_init(&tunables->above_hispeed_delay_lock);
	spin_lock_init(&tunables->above_hispeed_delay_lock);


	save_tunables(policy, tunables);
	return tunables;
	return tunables;
}
}


static void save_tunables(struct cpufreq_policy *policy,
			  struct cpufreq_interactive_tunables *tunables)
{
	int cpu;
	struct cpufreq_interactive_cpuinfo *pcpu;

	if (have_governor_per_policy())
		cpu = cpumask_first(policy->related_cpus);
	else
		cpu = 0;

	pcpu = &per_cpu(cpuinfo, cpu);
	WARN_ON(pcpu->cached_tunables && pcpu->cached_tunables != tunables);
	pcpu->cached_tunables = tunables;
}

static struct cpufreq_interactive_tunables *restore_tunables(
static struct cpufreq_interactive_tunables *restore_tunables(
						struct cpufreq_policy *policy)
						struct cpufreq_policy *policy)
{
{
@@ -1270,7 +1271,6 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy,
					get_sysfs_attr());
					get_sysfs_attr());
			if (!have_governor_per_policy())
			if (!have_governor_per_policy())
				cpufreq_put_global_kobject();
				cpufreq_put_global_kobject();
			save_tunables(policy, tunables);
			common_tunables = NULL;
			common_tunables = NULL;
		}
		}