RE: [PATCH 2/2] Register native mce handler as vMCE bounce backpoint

From: Liu, Jinsong
Date: Tue Apr 17 2012 - 13:07:19 EST


Konrad Rzeszutek Wilk wrote:
> On Tue, Apr 17, 2012 at 12:55:49PM +0000, Liu, Jinsong wrote:
>> Konrad Rzeszutek Wilk wrote:
>>> On Mon, Apr 16, 2012 at 01:07:35AM +0000, Liu, Jinsong wrote:
>>>>> From 76e40a60878ff72986fd8d92611400195ae0f997 Mon Sep 17 00:00:00
>>>>> 2001
>>>> From: Liu, Jinsong <jinsong.liu@xxxxxxxxx>
>>>> Date: Mon, 16 Apr 2012 00:16:58 +0800
>>>> Subject: [PATCH 2/2] Register native mce handler as vMCE bounce
>>>> back point
>>>>
>>>> When xen hyeprvisor inject vMCE to guest, use native mce handler to
>>>> handle it
>>>
>>> hypervisor
>>>
>>>>
>>>> Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx>
>>>> Signed-off-by: Ke, Liping <liping.ke@xxxxxxxxx>
>>>> Signed-off-by: Jiang, Yunhong <yunhong.jiang@xxxxxxxxx>
>>>> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
>>>> --- arch/x86/xen/enlighten.c | 10 +++++++---
>>>> 1 files changed, 7 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
>>>> index 15628d4..346ba64 100644 --- a/arch/x86/xen/enlighten.c
>>>> +++ b/arch/x86/xen/enlighten.c
>>>> @@ -614,8 +614,8 @@ static int cvt_gate_to_trap(int vector, const
>>>> gate_desc *val, /*
>>>> * Look for known traps using IST, and substitute them
>>>> * appropriately. The debugger ones are the only ones we care
>>>> - * about. Xen will handle faults like double_fault and
>>>> - * machine_check, so we should never see them. Warn if
>>>> + * about. Xen will handle faults like double_fault,
>>>> + * so we should never see them. Warn if
>>>> * there's an unexpected IST-using fault handler. */
>>>> if (addr == (unsigned long)debug)
>>>> @@ -630,7 +630,11 @@ static int cvt_gate_to_trap(int vector, const
>>>> gate_desc *val, return 0; #ifdef CONFIG_X86_MCE
>>>> } else if (addr == (unsigned long)machine_check) { - return 0;
>>>> + /* + * when xen hyeprvisor inject vMCE to guest,
>>>> + * use native mce handler to handle it
>>>> + */
>>>> + ;
>>>
>>>
>>> Can you just take the check out?
>>
>> What do you mean by 'check out'? remove
>> else if (addr == (unsigned long) machine_check) {
>> ;
>> }
>> ?
>>
>> That would fail to register mce bounce back point.
>
> Right, b/c right after we hit this check:
> /* Some other trap using IST? */
> 639 if (WARN_ON(val->ist != 0))
> 640 return 0;
> 641 }
>
> .. And the val->ist is not set for MCEs right?

No, mce ist is set as 0/5 (32/64), set_intr_gate_ist(X86_TRAP_MC, &machine_check, MCE_STACK);

>
>>
>>>
>>>
>>>> #endif
>>>> } else {
>>>> /* Some other trap using IST? */
>>>> --
>>>> 1.7.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe
>> linux-kernel" in the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/