Messages in this thread Patch in this message | | | From | Borislav Petkov <> | Subject | [PATCH 2/4] EDAC, MCE, AMD: Add function to enable direct write to MCE MSRs | Date | Thu, 5 May 2011 18:49:34 +0200 |
| |
From: Borislav Petkov <borislav.petkov@amd.com>
Normally, writing to MCE MSRs causes a #GP. Add a function to enable direct access to those MSRs.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> --- drivers/edac/mce_amd_inj.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/drivers/edac/mce_amd_inj.c b/drivers/edac/mce_amd_inj.c index a4987e0..eb36e15 100644 --- a/drivers/edac/mce_amd_inj.c +++ b/drivers/edac/mce_amd_inj.c @@ -30,6 +30,30 @@ static struct edac_mce_attr mce_attr_##_name = __ATTR(_name, _mode, _show, _stor static struct kobject *mce_kobj; /* + * Caller needs to be make sure this cpu doesn't disappear + * from under us, i.e.: get_cpu/put_cpu. + */ +static int toggle_hw_mce_inject(unsigned int cpu, bool enable) +{ + u32 l, h; + int err; + + err = rdmsr_on_cpu(cpu, MSR_K7_HWCR, &l, &h); + if (err) { + printk(KERN_ERR "%s: error reading HWCR\n", __func__); + return err; + } + + enable ? (l |= BIT(18)) : (l &= ~BIT(18)); + + err = wrmsr_on_cpu(cpu, MSR_K7_HWCR, l, h); + if (err) + printk(KERN_ERR "%s: error writing HWCR\n", __func__); + + return err; +} + +/* * Collect all the MCi_XXX settings */ static struct mce i_mce; -- 1.7.4.rc2
| |