[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 4/4] x86/spec-ctrl: Fix NMI race condition with VT-x MSR_SPEC_CTRL handling


  • To: Andrew Cooper <amc96@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Thu, 20 Jan 2022 09:14:09 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=u0x7qwCjE9UBVPjoPWKclpkFOfPmomR+s1KzDPSfnTc=; b=etkMdg3kjeVllB6H+Qu8kHUp06L3il1VPSfwWiHbL+vsymZYF85yS01d0tLZtQUoacGPdihyhMqRWIt1KwJORmsI1k3gEQueaZ7pXxeanP2CCfAcjwExyM8qBooleppx4jA9qj0E9B2HUiIf35NLQxJsKS5zKGCVFoYCMVhYc5KMFJwiDPFpKtYAmPmUTdzBTjet0ihyGj6TJEJb5FwyHJ0AHDDKzPnRsGoQyLhcKptnl2Z78v9FNfnwu2bY31yJPxv1HeRUSU9Sm5GmfrmLjktnrhAtMMGJT+TufdelWn2oSSBvyQcKX6+8LvnkGRoG5xihxe5sx1nVGdzhWdhsuQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MbUAxqKcStDTe0DiJ5Qy8oEd6wqUJze3OhKej/jdQg4VCUUVnSivdOrce9KtIxNm7U0zuTuym2OAEJ8C+9vs/QhzfEB4nf7JRZRTOlIw3ySxckhJ1PZH9av5FHraUL8R4/uabipvftqcsxfCfORyVGYpfMBoiJ7EBBn8Tey4Jiko6RLA3OIvH8opKy3etDHqGYfqc3G7+NVUCVJQryUb9zbwauIhvjSIOjHS4zP5OAGiVkLO1FJ5+OHk1E7FuWozqqNB+7DzdH/dxWBzFN49YVsZwCwjwvp+OM5rEegpzy2OxRSNFKG20j0bbHoSY1teiry4PoTu0Xtjk8uweV7J9A==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Jun Nakajima <jun.nakajima@xxxxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 20 Jan 2022 08:14:30 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 19.01.2022 18:00, Andrew Cooper wrote:
> On 19/01/2022 13:42, Jan Beulich wrote:
>> On 17.01.2022 19:34, Andrew Cooper wrote:
>>> --- a/xen/arch/x86/hvm/vmx/entry.S
>>> +++ b/xen/arch/x86/hvm/vmx/entry.S
>>> @@ -35,7 +35,14 @@ ENTRY(vmx_asm_vmexit_handler)
>>>  
>>>          /* SPEC_CTRL_ENTRY_FROM_VMX    Req: b=curr %rsp=regs/cpuinfo, 
>>> Clob: acd */
>>>          ALTERNATIVE "", DO_OVERWRITE_RSB, X86_FEATURE_SC_RSB_HVM
>>> -        ALTERNATIVE "", DO_SPEC_CTRL_ENTRY_FROM_HVM, X86_FEATURE_SC_MSR_HVM
>>> +
>>> +        .macro restore_spec_ctrl
>>> +            mov    $MSR_SPEC_CTRL, %ecx
>>> +            movzbl CPUINFO_xen_spec_ctrl(%rsp), %eax
>>> +            xor    %edx, %edx
>>> +            wrmsr
>>> +        .endm
>>> +        ALTERNATIVE "", restore_spec_ctrl, X86_FEATURE_SC_MSR_HVM
>>>          /* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */
>>>  
>>>          /* Hardware clears MSR_DEBUGCTL on VMExit.  Reinstate it if 
>>> debugging Xen. */
>>> @@ -82,8 +89,7 @@ UNLIKELY_END(realmode)
>>>          mov VCPUMSR_spec_ctrl_raw(%rax), %eax
>>>  
>>>          /* WARNING! `ret`, `call *`, `jmp *` not safe beyond this point. */
>>> -        /* SPEC_CTRL_EXIT_TO_VMX   Req: a=spec_ctrl %rsp=regs/cpuinfo, 
>>> Clob: cd */
>>> -        ALTERNATIVE "", DO_SPEC_CTRL_EXIT_TO_GUEST, X86_FEATURE_SC_MSR_HVM
>>> +        /* SPEC_CTRL_EXIT_TO_VMX   Req: %rsp=regs/cpuinfo              
>>> Clob:    */
>>>          ALTERNATIVE "", __stringify(verw CPUINFO_verw_sel(%rsp)), 
>>> X86_FEATURE_SC_VERW_HVM
>> I notice you did update this clobber remark, but what about the one further
>> up in context?
> 
> What about it?  It still clobbers %eax, %ecx and %edx.

Oh, sorry - I did look at DO_OVERWRITE_RSB only, not paying attention
to the now open-coded 2nd part, which - due to the blank line - doesn't
appear connected to the comment anymore.

Jan




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.