>>> On 17.02.17 at 16:01, <boris.ostrov...@oracle.com> wrote:
> On 02/17/2017 05:26 AM, Jan Beulich wrote:
>>>>> On 17.02.17 at 07:39, <haozhong.zh...@intel.com> wrote:
>>> --- a/xen/arch/x86/cpu/mcheck/mce.c
>>> +++ b/xen/arch/x86/cpu/mcheck/mce.c
>>> @@ -538,7 +538,14 @@ void mcheck_cmn_handler(const struct cpu_user_regs 
>>> *regs)
>>>      gstatus = mca_rdmsr(MSR_IA32_MCG_STATUS);
>>>      if ((gstatus & MCG_STATUS_MCIP) != 0) {
>>>          mce_printk(MCE_CRITICAL, "MCE: Clear MCIP@ last step");
>>> -        mca_wrmsr(MSR_IA32_MCG_STATUS, gstatus & ~MCG_STATUS_MCIP);
>>> +        if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
>>> +            /*
>>> +             * Intel SDM 3: An attempt to write to IA32_MCG_STATUS
>>> +             * with any value other than 0 would result in #GP.
>>> +             */
>>> +            mca_wrmsr(MSR_IA32_MCG_STATUS, 0);
>>> +        else
>>> +            mca_wrmsr(MSR_IA32_MCG_STATUS, gstatus & ~MCG_STATUS_MCIP);
>>
>> I think this wants to be the other way around: Write zero in the
>> common case, and make an exception for AMD (and that only if
>> on AMD it's really useful to write other than plain zero). Boris,
>> Suravee, can you provide some input here please?
> 
> I don't see anything stating that writing non-zero values can result in 
> an exception of any sort. But I am only going by what I see in the 
> documentation.

But the question was the other way around: Is there a need to
clear only the MCIP bit, or can we as well write plain zero to the
MSR (allowing the conditional to be dropped).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to