|
@@ -128,21 +128,11 @@ static inline u64 paravirt_read_msr(unsigned msr, int *err)
|
|
|
return PVOP_CALL2(u64, pv_cpu_ops.read_msr, msr, err);
|
|
|
}
|
|
|
|
|
|
-static inline int paravirt_rdmsr_regs(u32 *regs)
|
|
|
-{
|
|
|
- return PVOP_CALL1(int, pv_cpu_ops.rdmsr_regs, regs);
|
|
|
-}
|
|
|
-
|
|
|
static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
|
|
|
{
|
|
|
return PVOP_CALL3(int, pv_cpu_ops.write_msr, msr, low, high);
|
|
|
}
|
|
|
|
|
|
-static inline int paravirt_wrmsr_regs(u32 *regs)
|
|
|
-{
|
|
|
- return PVOP_CALL1(int, pv_cpu_ops.wrmsr_regs, regs);
|
|
|
-}
|
|
|
-
|
|
|
/* These should all do BUG_ON(_err), but our headers are too tangled. */
|
|
|
#define rdmsr(msr, val1, val2) \
|
|
|
do { \
|
|
@@ -176,9 +166,6 @@ do { \
|
|
|
_err; \
|
|
|
})
|
|
|
|
|
|
-#define rdmsr_safe_regs(regs) paravirt_rdmsr_regs(regs)
|
|
|
-#define wrmsr_safe_regs(regs) paravirt_wrmsr_regs(regs)
|
|
|
-
|
|
|
static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
|
|
|
{
|
|
|
int err;
|
|
@@ -186,32 +173,6 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
|
|
|
*p = paravirt_read_msr(msr, &err);
|
|
|
return err;
|
|
|
}
|
|
|
-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 = paravirt_rdmsr_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 paravirt_wrmsr_regs(gprs);
|
|
|
-}
|
|
|
|
|
|
static inline u64 paravirt_read_tsc(void)
|
|
|
{
|