diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-06-11 15:19:49 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-06-11 15:19:49 +0100 |
commit | 7734234e956f0d259f2adb4bd994e0d887fa579c (patch) | |
tree | 9dffff4b13ea677f3552d8e9627188729a63ea3f | |
parent | 991fca38acc8627b484f2587847f5ff30ac72236 (diff) | |
download | xen-7734234e956f0d259f2adb4bd994e0d887fa579c.tar.gz xen-7734234e956f0d259f2adb4bd994e0d887fa579c.tar.bz2 xen-7734234e956f0d259f2adb4bd994e0d887fa579c.zip |
x86: Clean up efer/ler macros after MSR changes.
Move them out of a header file and make the macros proper functions again.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r-- | xen/arch/x86/domain.c | 1 | ||||
-rw-r--r-- | xen/arch/x86/traps.c | 24 | ||||
-rw-r--r-- | xen/include/asm-x86/msr.h | 17 | ||||
-rw-r--r-- | xen/include/xen/cpuidle.h | 2 |
4 files changed, 27 insertions, 17 deletions
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 4dc081fa03..d766ab4890 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -58,7 +58,6 @@ #endif DEFINE_PER_CPU(struct vcpu *, curr_vcpu); -DEFINE_PER_CPU(u64, efer); DEFINE_PER_CPU(unsigned long, cr4); static void default_idle(void); diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index bfc4f248ce..e30b1528d7 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -81,6 +81,8 @@ static char __read_mostly opt_nmi[10] = "fatal"; #endif string_param("nmi", opt_nmi); +DEFINE_PER_CPU(u64, efer); + DEFINE_PER_CPU_READ_MOSTLY(u32, ler_msr); DEFINE_PER_CPU_READ_MOSTLY(struct desc_struct *, gdt_table); @@ -3113,6 +3115,28 @@ asmlinkage void do_device_not_available(struct cpu_user_regs *regs) return; } +u64 read_efer(void) +{ + return this_cpu(efer); +} + +void write_efer(u64 val) +{ + this_cpu(efer) = val; + wrmsrl(MSR_EFER, val); +} + +static void ler_enable(void) +{ + u64 debugctl; + + if ( !this_cpu(ler_msr) ) + return; + + rdmsrl(MSR_IA32_DEBUGCTLMSR, debugctl); + wrmsrl(MSR_IA32_DEBUGCTLMSR, debugctl | 1); +} + asmlinkage void do_debug(struct cpu_user_regs *regs) { struct vcpu *v = current; diff --git a/xen/include/asm-x86/msr.h b/xen/include/asm-x86/msr.h index 26fded68c0..820a2528e6 100644 --- a/xen/include/asm-x86/msr.h +++ b/xen/include/asm-x86/msr.h @@ -102,24 +102,11 @@ static inline int wrmsr_safe(unsigned int msr, uint64_t val) DECLARE_PER_CPU(u64, efer); - -#define read_efer() this_cpu(efer) - -#define write_efer(val) do { \ - this_cpu(efer) = val; \ - wrmsrl(MSR_EFER, val); \ -} while(0) +u64 read_efer(void); +void write_efer(u64 val); DECLARE_PER_CPU(u32, ler_msr); -#define ler_enable() do { \ - u64 debugctl; \ - if ( !this_cpu(ler_msr) ) \ - return; \ - rdmsrl(MSR_IA32_DEBUGCTLMSR, debugctl); \ - wrmsrl(MSR_IA32_DEBUGCTLMSR, debugctl | 1); \ -} while(0) - #endif /* !__ASSEMBLY__ */ #endif /* __ASM_MSR_H */ diff --git a/xen/include/xen/cpuidle.h b/xen/include/xen/cpuidle.h index 0b3b3fec27..cf73341bf5 100644 --- a/xen/include/xen/cpuidle.h +++ b/xen/include/xen/cpuidle.h @@ -27,7 +27,7 @@ #ifndef _XEN_CPUIDLE_H #define _XEN_CPUIDLE_H -#include <xen/smp.h> +#include <xen/cpumask.h> #define ACPI_PROCESSOR_MAX_POWER 8 #define CPUIDLE_NAME_LEN 16 |