Thread (6 messages) 6 messages, 2 authors, 2016-02-19

Re: [PATCH v4 2/2] powercap/rapl: reduce ipi calls

From: Thomas Gleixner <hidden>
Date: 2016-02-19 21:52:18
Also in: lkml

On Fri, 19 Feb 2016, Jacob Pan wrote:
quoted hunk ↗ jump to hunk
@@ -1380,6 +1375,7 @@ static int rapl_detect_topology(void)
 	int i;
 	int phy_package_id;
 	struct rapl_package *new_package, *rp;
+	int lead_cpu;
 
 	for_each_online_cpu(i) {
 		phy_package_id = topology_physical_package_id(i);
@@ -1392,7 +1388,11 @@ static int rapl_detect_topology(void)
 			/* add the new package to the list */
 			new_package->id = phy_package_id;
 			new_package->nr_cpus = 1;
-
+			/* find the first active cpu of the package */
+			lead_cpu = cpumask_any_and(topology_core_cpumask(i),
+						cpumask_of(i));
Yuck. Why any_and? The result is i, simply because i is online otherwise you
would not be there. 
+			if (lead_cpu < nr_cpu_ids)
+				new_package->lead_cpu = lead_cpu;
So the above is identical to 

			new_package->lead_cpu = lead_cpu;

Hmm?
quoted hunk ↗ jump to hunk
@@ -1500,6 +1503,15 @@ static int rapl_cpu_callback(struct notifier_block *nfb,
 			break;
 		if (--rp->nr_cpus == 0)
 			rapl_remove_package(rp);
+		else if (cpu == rp->lead_cpu) {
+			/* choose another active cpu in the package */
+			lead_cpu = cpumask_any_but(topology_core_cpumask(cpu), cpu);
This part is correct.

Thanks,

	tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help