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

Commit 6b77df08 authored by Arun Sharma's avatar Arun Sharma Committed by Linus Torvalds
Browse files

[PATCH] oprofile: ppro: need to enable/disable all the counters



Need to enable/disable all the counters instead of just counter 0.

This affects all cpus with family=6, including i386/core.  Usual symptom:
only counter 0 provides samples.  Other counters don't produce samples.

Signed-off-by: default avatarArun Sharma <arun.sharma@google.com>
Cc: Philippe Elie <phil.el@wanadoo.fr>
Cc: John Levon <levon@movementarian.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 50462062
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -138,11 +138,14 @@ static int ppro_check_ctrs(struct pt_regs * const regs,
static void ppro_start(struct op_msrs const * const msrs)
{
	unsigned int low,high;
	int i;

	if (reset_value[0]) {
		CTRL_READ(low, high, msrs, 0);
	for (i = 0; i < NUM_COUNTERS; ++i) {
		if (reset_value[i]) {
			CTRL_READ(low, high, msrs, i);
			CTRL_SET_ACTIVE(low);
		CTRL_WRITE(low, high, msrs, 0);
			CTRL_WRITE(low, high, msrs, i);
		}
	}
}

@@ -150,11 +153,14 @@ static void ppro_start(struct op_msrs const * const msrs)
static void ppro_stop(struct op_msrs const * const msrs)
{
	unsigned int low,high;
	int i;

	if (reset_value[0]) {
		CTRL_READ(low, high, msrs, 0);
	for (i = 0; i < NUM_COUNTERS; ++i) {
		if (!reset_value[i])
			continue;
		CTRL_READ(low, high, msrs, i);
		CTRL_SET_INACTIVE(low);
		CTRL_WRITE(low, high, msrs, 0);
		CTRL_WRITE(low, high, msrs, i);
	}
}