Re: [PATCH 1/2] x86/entry/64: Do not clear %rbx under Xen

From: Boris Ostrovsky
Date: Mon Jul 23 2018 - 10:56:47 EST


On 07/21/2018 07:18 PM, M. Vefa Bicakci wrote:
> On 07/21/2018 05:19 PM, Boris Ostrovsky wrote:
>> On 07/21/2018 03:49 PM, M. Vefa Bicakci wrote:
>>> diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
>>> index c7449f377a77..96e8ff34129e 100644
>>> --- a/arch/x86/entry/entry_64.S
>>> +++ b/arch/x86/entry/entry_64.S
>>> @@ -1129,7 +1129,7 @@ ENTRY(xen_failsafe_callback)
>>>       addq    $0x30, %rsp
>>>       UNWIND_HINT_IRET_REGS
>>>       pushq    $-1 /* orig_ax = -1 => not a system call */
>>> -    PUSH_AND_CLEAR_REGS
>>> +    PUSH_AND_CLEAR_REGS clear_rbx=0
>>
>>
>> Do we need this at all? We are returning from the hypervisor here.
>>
>> -boris
>>
>>>       ENCODE_FRAME_POINTER
>>>       jmp    error_exit
>>>   END(xen_failsafe_callback)
>
> Hello Boris,
>
> If you are referring to the PUSH_AND_CLEAR_REGS macro itself, I am not
> sure;
> however, not clearing the RBX register seemed to resolve the issues
> mentioned
> in the commit message for me. Given Andy's comment though, I believe
> that the
> approach in this patch may not be correct.


I was only referring to register clearing part of PUSH_AND_CLEAR_REGS.


-boris