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

Commit 35bb7600 authored by Markus Metzger's avatar Markus Metzger Committed by Ingo Molnar
Browse files

x86, debugctlmsr: add _on_cpu variants to debugctlmsr functions



Add functions to get and set the debugctlmsr on different cpus.

Signed-off-by: default avatarMarkus Metzger <markus.t.metzger@intel.com>
Cc: roland@redhat.com
Cc: eranian@googlemail.com
Cc: oleg@redhat.com
Cc: juan.villacis@intel.com
Cc: ak@linux.jf.intel.com
LKML-Reference: <20090403144554.738772000@intel.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 15879d04
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -785,6 +785,21 @@ static inline unsigned long get_debugctlmsr(void)
    return debugctlmsr;
}

static inline unsigned long get_debugctlmsr_on_cpu(int cpu)
{
	u64 debugctlmsr = 0;
	u32 val1, val2;

#ifndef CONFIG_X86_DEBUGCTLMSR
	if (boot_cpu_data.x86 < 6)
		return 0;
#endif
	rdmsr_on_cpu(cpu, MSR_IA32_DEBUGCTLMSR, &val1, &val2);
	debugctlmsr = val1 | ((u64)val2 << 32);

	return debugctlmsr;
}

static inline void update_debugctlmsr(unsigned long debugctlmsr)
{
#ifndef CONFIG_X86_DEBUGCTLMSR
@@ -794,6 +809,18 @@ static inline void update_debugctlmsr(unsigned long debugctlmsr)
	wrmsrl(MSR_IA32_DEBUGCTLMSR, debugctlmsr);
}

static inline void update_debugctlmsr_on_cpu(int cpu,
					     unsigned long debugctlmsr)
{
#ifndef CONFIG_X86_DEBUGCTLMSR
	if (boot_cpu_data.x86 < 6)
		return;
#endif
	wrmsr_on_cpu(cpu, MSR_IA32_DEBUGCTLMSR,
		     (u32)((u64)debugctlmsr),
		     (u32)((u64)debugctlmsr >> 32));
}

/*
 * from system description table in BIOS. Mostly for MCA use, but
 * others may find it useful: