lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 9 Feb 2022 18:05:52 +0000
From:   Sean Christopherson <seanjc@...gle.com>
To:     "Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>
Cc:     Thomas Gleixner <tglx@...utronix.de>, bp@...en8.de,
        aarcange@...hat.com, ak@...ux.intel.com, dan.j.williams@...el.com,
        dave.hansen@...el.com, david@...hat.com, hpa@...or.com,
        jgross@...e.com, jmattson@...gle.com, joro@...tes.org,
        jpoimboe@...hat.com, knsathya@...nel.org,
        linux-kernel@...r.kernel.org, luto@...nel.org, mingo@...hat.com,
        pbonzini@...hat.com, peterz@...radead.org,
        sathyanarayanan.kuppuswamy@...ux.intel.com, sdeep@...are.com,
        tony.luck@...el.com, vkuznets@...hat.com, wanpengli@...cent.com,
        x86@...nel.org
Subject: Re: [PATCHv2.1 05/29] x86/tdx: Add HLT support for TDX guests

On Wed, Feb 09, 2022, Kirill A. Shutemov wrote:
> On Mon, Feb 07, 2022 at 10:52:19PM +0000, Sean Christopherson wrote:
> .Lskip_sti:
> 	tdcall
> 
> 	/*
> 	 * TDVMCALL leaf does not suppose to fail. If it fails something
> 	 * is horribly wrong with TDX module. Stop the world.
> 	 */
> 	test %rax, %rax
> 	je .Lsuccess
> 	ud2

If the ud2 or call to an external "do panic" helper is out-of-line, then the happy
path avoids a taken branch.  Not a big deal, but it's also trivial to do.

> .Lsuccess:
> 	/* TDVMCALL leaf return code is in R10 */
> 	movq %r10, %rax
> 
> 	/* Copy hypercall result registers to arg struct if needed */
> 	testq $TDX_HCALL_HAS_OUTPUT, %rsi
> 	jz .Lout
> 
> 	movq %r10, TDX_HYPERCALL_r10(%rdi)
> 	movq %r11, TDX_HYPERCALL_r11(%rdi)
> 	movq %r12, TDX_HYPERCALL_r12(%rdi)
> 	movq %r13, TDX_HYPERCALL_r13(%rdi)
> 	movq %r14, TDX_HYPERCALL_r14(%rdi)
> 	movq %r15, TDX_HYPERCALL_r15(%rdi)
> .Lout:
> 	/*
> 	 * Zero out registers exposed to the VMM to avoid
> 	 * speculative execution with VMM-controlled values.
> 	 * This needs to include all registers present in
> 	 * TDVMCALL_EXPOSE_REGS_MASK (except R12-R15).
> 	 * R12-R15 context will be restored.

This comment block should use the "full" 80 chars.

> 	 */
> 	xor %r10d, %r10d
> 	xor %r11d, %r11d
> 
> 	/* Restore callee-saved GPRs as mandated by the x86_64 ABI */
> 	pop %r12
> 	pop %r13
> 	pop %r14
> 	pop %r15
> 
> 	FRAME_END
> 
> 	retq
> SYM_FUNC_END(__tdx_hypercall)
> -- 
>  Kirill A. Shutemov

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ