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

Commit 95e74e62 authored by Robert Richter's avatar Robert Richter
Browse files

x86/oprofile: use 64 bit values to save MSR states



This patch removes struct op_saved_msr and replaces it by an u64
variable. This makes code easier and it is possible to use 64 bit MSR
functions.

Signed-off-by: default avatarRobert Richter <robert.richter@amd.com>
parent bbc5986d
Loading
Loading
Loading
Loading
+8 −20
Original line number Diff line number Diff line
@@ -78,19 +78,13 @@ static void nmi_cpu_save_registers(struct op_msrs *msrs)
	unsigned int i;

	for (i = 0; i < nr_ctrs; ++i) {
		if (counters[i].addr) {
			rdmsr(counters[i].addr,
				counters[i].saved.low,
				counters[i].saved.high);
		}
		if (counters[i].addr)
			rdmsrl(counters[i].addr, counters[i].saved);
	}

	for (i = 0; i < nr_ctrls; ++i) {
		if (controls[i].addr) {
			rdmsr(controls[i].addr,
				controls[i].saved.low,
				controls[i].saved.high);
		}
		if (controls[i].addr)
			rdmsrl(controls[i].addr, controls[i].saved);
	}
}

@@ -204,19 +198,13 @@ static void nmi_restore_registers(struct op_msrs *msrs)
	unsigned int i;

	for (i = 0; i < nr_ctrls; ++i) {
		if (controls[i].addr) {
			wrmsr(controls[i].addr,
				controls[i].saved.low,
				controls[i].saved.high);
		}
		if (controls[i].addr)
			wrmsrl(controls[i].addr, controls[i].saved);
	}

	for (i = 0; i < nr_ctrs; ++i) {
		if (counters[i].addr) {
			wrmsr(counters[i].addr,
				counters[i].saved.low,
				counters[i].saved.high);
		}
		if (counters[i].addr)
			wrmsrl(counters[i].addr, counters[i].saved);
	}
}

+2 −7
Original line number Diff line number Diff line
@@ -15,14 +15,9 @@
#include <asm/types.h>
#include <asm/intel_arch_perfmon.h>

struct op_saved_msr {
	unsigned int high;
	unsigned int low;
};

struct op_msr {
	unsigned long	addr;
	struct op_saved_msr saved;
	u64		saved;
};

struct op_msrs {