Commit 7bb3fe27 authored by Zhang Rui's avatar Zhang Rui
Browse files

tools/power/turbostat: Obey allowed CPUs during startup



Set turbostat CPU affinity to make sure turbostat is running on one of
the allowed CPUs.

Set base_cpu to the first allowed CPU so that some platform information
is dumped using one of the allowed CPUs.

Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
parent 4ede6d1c
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -5731,6 +5731,10 @@ void topology_probe()
		}
	}

	if (!CPU_COUNT_S(cpu_allowed_setsize, cpu_allowed_set))
		err(-ENODEV, "No valid cpus found");
	sched_setaffinity(0, cpu_allowed_setsize, cpu_allowed_set);

	/*
	 * Allocate and initialize cpu_affinity_set
	 */
@@ -5941,12 +5945,17 @@ void setup_all_buffers(void)

void set_base_cpu(void)
{
	base_cpu = sched_getcpu();
	if (base_cpu < 0)
		err(-ENODEV, "No valid cpus found");
	int i;

	for (i = 0; i < topo.max_cpu_num + 1; ++i) {
		if (cpu_is_not_allowed(i))
			continue;
		base_cpu = i;
		if (debug > 1)
			fprintf(outf, "base_cpu = %d\n", base_cpu);
		return;
	}
	err(-ENODEV, "No valid cpus found");
}

void turbostat_init()
@@ -5976,8 +5985,6 @@ int fork_it(char **argv)
	first_counter_read = 0;
	if (status)
		exit(status);
	/* clear affinity side-effect of get_counters() */
	sched_setaffinity(0, cpu_present_setsize, cpu_present_set);
	gettimeofday(&tv_even, (struct timezone *)NULL);

	child_pid = fork();