|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xen mce bugfix
Jan Beulich wrote:
>>>> On 27.02.13 at 10:24, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> wrote:
>> This work around an issue when test via xen-mceinj tools.
>>
>> when inject simulated error via xen-mceinj tools,
>> status ADDRV/MISCV bits are simulated hence there is
>> potential risk of #GP if h/w not really support MCi_ADDR/MISC.
>> We temporarily work around by not clean them until we have
>> clean solution.
>
> Excuse me, but - no. Changing the behavior for real MCE-s (which
> you added) for the benefit of fixing injection is a no-go IMO. Or
> are you telling us that after all that earlier change of yours is not
> really necessary (in which case we could as well revert it).
>
> Jan
>
The reason of the former patch to clear MCi_ADDR/MISC is that it's recommended
by Intel SDM:
LOG MCA REGISTER:
SAVE IA32_MCi_STATUS;
If MISCV in IA32_MCi_STATUS
THEN
SAVE IA32_MCi_MISC;
FI;
IF ADDRV in IA32_MCi_STATUS
THEN
SAVE IA32_MCi_ADDR;
FI;
IF CLEAR_MC_BANK = TRUE
THEN
SET all 0 to IA32_MCi_STATUS;
If MISCV in IA32_MCi_STATUS
THEN
SET all 0 to IA32_MCi_MISC;
FI;
IF ADDRV in IA32_MCi_STATUS
THEN
SET all 0 to IA32_MCi_ADDR;
FI;
For Xen mce, it's meaningful to read MCi_ADDR/MISC only when real error occur
(which indicated by MCi_STATUS), so only clear MCi_STATUS at mce handler is an
acceptable work around -- after all, to read MCi_ADDR/MISC is pointless if
MCi_STATUS is 0.
Thanks,
Jinsong
>> Reported-by: Ren Yongjie <yongjie.ren@xxxxxxxxx>
>> Singed-off-by: Liu Jinsong <jinsong.liu@xxxxxxxxx>
>>
>> diff -r e84a79d11d7a xen/arch/x86/cpu/mcheck/mce.c
>> --- a/xen/arch/x86/cpu/mcheck/mce.c Thu Nov 01 01:41:03 2012 +0800
>> +++ b/xen/arch/x86/cpu/mcheck/mce.c Thu Feb 28 00:34:22 2013 +0800
>> @@ -144,10 +144,19 @@
>>
>> status = mca_rdmsr(MSR_IA32_MCx_STATUS(banknum));
>>
>> +/*
>> + * TODO: when inject simulated error via xen-mceinj tools,
>> + * status ADDRV/MISCV bits are simulated hence there is
>> + * potential risk of #GP if h/w not really support MCi_ADDR/MISC.
>> + * We temporary work around by not clean them until we have + *
>> clean solution. + */
>> +#if 0
>> if (status & MCi_STATUS_ADDRV)
>> mca_wrmsr(MSR_IA32_MCx_ADDR(banknum), 0x0ULL);
>> if (status & MCi_STATUS_MISCV)
>> mca_wrmsr(MSR_IA32_MCx_MISC(banknum), 0x0ULL); +#endif
>>
>> mca_wrmsr(MSR_IA32_MCx_STATUS(banknum), 0x0ULL);
>> }
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |