Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 312297
b: refs/heads/master
c: 2c929ce
h: refs/heads/master
i:
  312295: b054499
v: v3
  • Loading branch information
Borislav Petkov authored and H. Peter Anvin committed Jun 7, 2012
1 parent 5d48669 commit 477eea8
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 169e9cbd77db23fe50bc8ba68bf081adb67b4220
refs/heads/master: 2c929ce6f1ed1302be225512b433e6a6554f71a4
27 changes: 0 additions & 27 deletions trunk/arch/x86/include/asm/msr.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,33 +211,6 @@ do { \

#endif /* !CONFIG_PARAVIRT */

static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
{
u32 gprs[8] = { 0 };
int err;

gprs[1] = msr;
gprs[7] = 0x9c5a203a;

err = rdmsr_safe_regs(gprs);

*p = gprs[0] | ((u64)gprs[2] << 32);

return err;
}

static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
{
u32 gprs[8] = { 0 };

gprs[0] = (u32)val;
gprs[1] = msr;
gprs[2] = val >> 32;
gprs[7] = 0x9c5a203a;

return wrmsr_safe_regs(gprs);
}

#define checking_wrmsrl(msr, val) wrmsr_safe((msr), (u32)(val), \
(u32)((val) >> 32))

Expand Down
33 changes: 33 additions & 0 deletions trunk/arch/x86/kernel/cpu/amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,39 @@

#include "cpu.h"

static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
{
struct cpuinfo_x86 *c = &cpu_data(smp_processor_id());
u32 gprs[8] = { 0 };
int err;

WARN_ONCE((c->x86 != 0xf), "%s should only be used on K8!\n", __func__);

gprs[1] = msr;
gprs[7] = 0x9c5a203a;

err = rdmsr_safe_regs(gprs);

*p = gprs[0] | ((u64)gprs[2] << 32);

return err;
}

static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
{
struct cpuinfo_x86 *c = &cpu_data(smp_processor_id());
u32 gprs[8] = { 0 };

WARN_ONCE((c->x86 != 0xf), "%s should only be used on K8!\n", __func__);

gprs[0] = (u32)val;
gprs[1] = msr;
gprs[2] = val >> 32;
gprs[7] = 0x9c5a203a;

return wrmsr_safe_regs(gprs);
}

#ifdef CONFIG_X86_32
/*
* B step AMD K6 before B 9730xxxx have hardware bugs that can cause
Expand Down

0 comments on commit 477eea8

Please sign in to comment.