Commit 377bacd1 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Xiaolong Wang
Browse files

powercap: intel_rapl: Replace deprecated CPU-hotplug functions

mainline inclusion
from mainline-v5.15-rc1
commit 5d4c779c
category: feature
bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I92135

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5d4c779cb62e676aedc278de910b4bb8ef65a5cc



--------------------------------

The functions get_online_cpus() and put_online_cpus() have been
deprecated during the CPU hotplug rework. They map directly to
cpus_read_lock() and cpus_read_unlock().

Replace deprecated CPU-hotplug functions with the official version.
The behavior remains unchanged.

Intel-SIG: commit 5d4c779c powercap: intel_rapl: Replace deprecated CPU-hotplug functions
Backport a dependency of Intel RAPL driver support on TPMI.

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
[ Xiaolong Wang: amend commit log ]
Signed-off-by: default avatarXiaolong Wang <xiaolong.wang@intel.com>
parent 26a10f7f
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -173,16 +173,16 @@ static int get_energy_counter(struct powercap_zone *power_zone,
	/* prevent CPU hotplug, make sure the RAPL domain does not go
	 * away while reading the counter.
	 */
	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);

	if (!rapl_read_data_raw(rd, ENERGY_COUNTER, true, &energy_now)) {
		*energy_raw = energy_now;
		put_online_cpus();
		cpus_read_unlock();

		return 0;
	}
	put_online_cpus();
	cpus_read_unlock();

	return -EIO;
}
@@ -231,11 +231,11 @@ static int set_domain_enable(struct powercap_zone *power_zone, bool mode)
	if (rd->state & DOMAIN_STATE_BIOS_LOCKED)
		return -EACCES;

	get_online_cpus();
	cpus_read_lock();
	rapl_write_data_raw(rd, PL1_ENABLE, mode);
	if (rapl_defaults->set_floor_freq)
		rapl_defaults->set_floor_freq(rd, mode);
	put_online_cpus();
	cpus_read_unlock();

	return 0;
}
@@ -249,13 +249,13 @@ static int get_domain_enable(struct powercap_zone *power_zone, bool *mode)
		*mode = false;
		return 0;
	}
	get_online_cpus();
	cpus_read_lock();
	if (rapl_read_data_raw(rd, PL1_ENABLE, true, &val)) {
		put_online_cpus();
		cpus_read_unlock();
		return -EIO;
	}
	*mode = val;
	put_online_cpus();
	cpus_read_unlock();

	return 0;
}
@@ -332,7 +332,7 @@ static int set_power_limit(struct powercap_zone *power_zone, int cid,
	int ret = 0;
	int id;

	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);
	id = contraint_to_pl(rd, cid);
	if (id < 0) {
@@ -365,7 +365,7 @@ static int set_power_limit(struct powercap_zone *power_zone, int cid,
	if (!ret)
		package_power_limit_irq_save(rp);
set_exit:
	put_online_cpus();
	cpus_read_unlock();
	return ret;
}

@@ -378,7 +378,7 @@ static int get_current_power_limit(struct powercap_zone *power_zone, int cid,
	int ret = 0;
	int id;

	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);
	id = contraint_to_pl(rd, cid);
	if (id < 0) {
@@ -397,7 +397,7 @@ static int get_current_power_limit(struct powercap_zone *power_zone, int cid,
		prim = POWER_LIMIT4;
		break;
	default:
		put_online_cpus();
		cpus_read_unlock();
		return -EINVAL;
	}
	if (rapl_read_data_raw(rd, prim, true, &val))
@@ -406,7 +406,7 @@ static int get_current_power_limit(struct powercap_zone *power_zone, int cid,
		*data = val;

get_exit:
	put_online_cpus();
	cpus_read_unlock();

	return ret;
}
@@ -418,7 +418,7 @@ static int set_time_window(struct powercap_zone *power_zone, int cid,
	int ret = 0;
	int id;

	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);
	id = contraint_to_pl(rd, cid);
	if (id < 0) {
@@ -438,7 +438,7 @@ static int set_time_window(struct powercap_zone *power_zone, int cid,
	}

set_time_exit:
	put_online_cpus();
	cpus_read_unlock();
	return ret;
}

@@ -450,7 +450,7 @@ static int get_time_window(struct powercap_zone *power_zone, int cid,
	int ret = 0;
	int id;

	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);
	id = contraint_to_pl(rd, cid);
	if (id < 0) {
@@ -473,14 +473,14 @@ static int get_time_window(struct powercap_zone *power_zone, int cid,
		val = 0;
		break;
	default:
		put_online_cpus();
		cpus_read_unlock();
		return -EINVAL;
	}
	if (!ret)
		*data = val;

get_time_exit:
	put_online_cpus();
	cpus_read_unlock();

	return ret;
}
@@ -506,7 +506,7 @@ static int get_max_power(struct powercap_zone *power_zone, int id, u64 *data)
	int prim;
	int ret = 0;

	get_online_cpus();
	cpus_read_lock();
	rd = power_zone_to_rapl_domain(power_zone);
	switch (rd->rpl[id].prim_id) {
	case PL1_ENABLE:
@@ -519,7 +519,7 @@ static int get_max_power(struct powercap_zone *power_zone, int id, u64 *data)
		prim = MAX_POWER;
		break;
	default:
		put_online_cpus();
		cpus_read_unlock();
		return -EINVAL;
	}
	if (rapl_read_data_raw(rd, prim, true, &val))
@@ -531,7 +531,7 @@ static int get_max_power(struct powercap_zone *power_zone, int id, u64 *data)
	if (rd->rpl[id].prim_id == PL4_ENABLE)
		*data = *data * 2;

	put_online_cpus();
	cpus_read_unlock();

	return ret;
}
@@ -1416,7 +1416,7 @@ static void power_limit_state_save(void)
	struct rapl_domain *rd;
	int nr_pl, ret, i;

	get_online_cpus();
	cpus_read_lock();
	list_for_each_entry(rp, &rapl_packages, plist) {
		if (!rp->power_zone)
			continue;
@@ -1448,7 +1448,7 @@ static void power_limit_state_save(void)
			}
		}
	}
	put_online_cpus();
	cpus_read_unlock();
}

static void power_limit_state_restore(void)
@@ -1457,7 +1457,7 @@ static void power_limit_state_restore(void)
	struct rapl_domain *rd;
	int nr_pl, i;

	get_online_cpus();
	cpus_read_lock();
	list_for_each_entry(rp, &rapl_packages, plist) {
		if (!rp->power_zone)
			continue;
@@ -1483,7 +1483,7 @@ static void power_limit_state_restore(void)
			}
		}
	}
	put_online_cpus();
	cpus_read_unlock();
}

static int rapl_pm_callback(struct notifier_block *nb,