[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YgQCgCx0R+RvFkyE@google.com>
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