From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DE0CEB64D7 for ; Wed, 28 Jun 2023 21:16:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 03D4B8D0002; Wed, 28 Jun 2023 17:16:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F304E8D0001; Wed, 28 Jun 2023 17:16:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF7858D0002; Wed, 28 Jun 2023 17:16:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id CF95A8D0001 for ; Wed, 28 Jun 2023 17:16:52 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 93642A0B29 for ; Wed, 28 Jun 2023 21:16:52 +0000 (UTC) X-FDA: 80953416264.28.2EC875A Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id C542D14000E for ; Wed, 28 Jun 2023 21:16:50 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=rL7tFVol; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687987010; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SHmTybyGcoc5/JHuzcVL5NX4Cs2gDAkCaV9bDoHI6B0=; b=QihITlukYAbqpQMW6+SA0HgXyJOnKncozt0bi8MpIrKVJz40veHJXwaabaxlX2WGAlqBji TGU5BYgWC5KI9OfEldxNbjPFlcFsw9cXqGxLTyJZJ9rSPAoS45Xkqku3kHiQhj3oCy/QSo 24mtvT8+E8ajWxgAsqa1fF8q57bIjSg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687987010; a=rsa-sha256; cv=none; b=lnDz3w+60oFVyQVkF3a69SecEmFsnOTKOqEqlepSL9LalKETQEBVanzChYN9T3l5RS25nE 7uJQSFWnU7KVrmmhpnPgJZ64COrcMq4Ip7SWqECmVpkn3uxPf+5g63Yr4CLWdQp8RRpYyY PU7DGY8AJHRI8vYd3/orI2n+d7RYVZA= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=rL7tFVol; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=SHmTybyGcoc5/JHuzcVL5NX4Cs2gDAkCaV9bDoHI6B0=; b=rL7tFVolsDXSDWlE9Rcxp2bWmN Q9/yYXbuz8LgkmajLixE4pyVs8jNt0e1htRkRgqpAojAOnS2IOcggOUqw7n4Njl7Fsvsy1wXYY71M 6QN4rTTRRQfiWfLfN4AgVeNqDhL+cq3CIfR3KSmolf0VLZuS2C/wSY3e4G5TnkMziNOhqb1HFJjNy v3qIw7bK00JYJ7nic7cGo0ApMaYScx2DWyHXF+5w3wLSGpyxnahYAgdApeZERqxR1XZYoCZZICuVF 4FTp11QpjOsXVK3HYE3/zq0Zx7zV/3s0TnkCRbD6kn0mE8gqnVB+o8WEI9UzwY0l7e2YqpWy2t8y2 jv+xC5HA==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1qEcWo-004E0P-8M; Wed, 28 Jun 2023 21:16:42 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id C765F3002C5; Wed, 28 Jun 2023 23:16:41 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id AA92C2481AF37; Wed, 28 Jun 2023 23:16:41 +0200 (CEST) Date: Wed, 28 Jun 2023 23:16:41 +0200 From: Peter Zijlstra To: Kai Huang Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org, dave.hansen@intel.com, kirill.shutemov@linux.intel.com, tony.luck@intel.com, tglx@linutronix.de, bp@alien8.de, mingo@redhat.com, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, david@redhat.com, dan.j.williams@intel.com, rafael.j.wysocki@intel.com, ashok.raj@intel.com, reinette.chatre@intel.com, len.brown@intel.com, ak@linux.intel.com, isaku.yamahata@intel.com, ying.huang@intel.com, chao.gao@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, nik.borisov@suse.com, bagasdotme@gmail.com, sagis@google.com, imammedo@redhat.com Subject: Re: [PATCH v12 20/22] x86/virt/tdx: Allow SEAMCALL to handle #UD and #GP Message-ID: <20230628211641.GT38236@hirez.programming.kicks-ass.net> References: <20230628152900.GI2438817@hirez.programming.kicks-ass.net> <20230628203823.GR38236@hirez.programming.kicks-ass.net> <20230628211132.GS38236@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230628211132.GS38236@hirez.programming.kicks-ass.net> X-Stat-Signature: ehr3ma6759tpq8cp1ay9c9kg1a4dsqk4 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: C542D14000E X-Rspam-User: X-HE-Tag: 1687987010-946562 X-HE-Meta: U2FsdGVkX19ZjWtN6hfVkDuG0/El2JmPUZxSNWqlbPghsIGOHDK7SjPHZ8G6ZRxcl7dTI0OecLxpd+pM68+MEPjKOh/1TghuEsU/aqO/WJg1IsrROpDJNvVHDaGxoNxRHr+z735FBi5fM1PQlgjF+OkXlGkv1KO1XTnzwOiDraBsigVY2H/p7bjFds4NcwR8LzGjNc8Gwve7rrfXxsTcOep+pr5l2KrHH/Dp4xdWeLho/xhqWti6QSMFXhAZoA8Ipak9+9wkCOvRSPkMwVj79z8cJKG6w8lWw8w3xR3KQvSuIA15m5f23kATbOcrOZwDyTdEv/NyL9qQZI0EdnONP56Q3EoJxmcEu31pRURDfD9rxtD8GGaYSdJfcl2uRsxMr/aCPhGP7dJkJnYA7FiMLWW2X48iEOMk6ZBdRy1GvF+ViPb9X2fn8a8YeF9BsyDHH5Rg7L2ChuoJlPpA61CiKzjOxlBGWvNUGOvxgEvqOpSk3BBGnG9+/xQe5DKlXY0F0T+faasnpsP+yOwZDEuV3zl3HoZOz02t7/dBqrlZsBCoJoo1n1ZuBTefCLCA2QeYbzudTT0T+FzufWf6BdqBdRuD+ca1y/VCaoPtVBe3IfunTfb9xK0is6RnAWeisjR1+lc27RxJyURzihPXz2MAsZG7DWd6gMgSkSaqUWauC9l1LzSYDFv6A87C7etFB9PDqQ6PsvTq2Rr6PZqFREVN5sx6GJWCIHzBoZY0GLpQei20jA5nRyvDlmXJ+vkdgduQ062T0SAtwnKrUX70WSRdYTuxcUJr5LSpO44lR+GnRR08/+bHa9FqEQv6H46qr5bImnAuDVYpB37aVtIkNAfmik18Ovmpq6okzHe8aNoLqPEzSLW2VQ4v/AwjuEm7wZm6+GnB9V3nXHIY8iFm1s7QdssOC2eNjA/9w/MFYgy314cKiWGI67gQDKU31Z2LPHeEAQih5fcT3E3UVTM7TA7 EcWn58tK 5NbduQAanHPeCJIti4lEbjAvm8NAbULQrv8yL43y+o1y28RzoAJ1hZLrqTC2hASQpA4881yRFYNYWh78R+/w17aWQ+MO69+L11ttMpMADdQWEuocXsK1nDf9Z7RbWPv4qCrL6ZaYE7qA9f1k= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000012, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jun 28, 2023 at 11:11:32PM +0200, Peter Zijlstra wrote: > --- a/arch/x86/virt/vmx/tdx/tdxcall.S > +++ b/arch/x86/virt/vmx/tdx/tdxcall.S > @@ -17,37 +17,44 @@ > * TDX module and hypercalls to the VMM. > * SEAMCALL - used by TDX hosts to make requests to the > * TDX module. > + * > + *------------------------------------------------------------------------- > + * TDCALL/SEAMCALL ABI: > + *------------------------------------------------------------------------- > + * Input Registers: > + * > + * RAX - TDCALL Leaf number. > + * RCX,RDX,R8-R9 - TDCALL Leaf specific input registers. > + * > + * Output Registers: > + * > + * RAX - TDCALL instruction error code. > + * RCX,RDX,R8-R11 - TDCALL Leaf specific output registers. > + * > + *------------------------------------------------------------------------- > + * > + * __tdx_module_call() function ABI: > + * > + * @fn (RDI) - TDCALL Leaf ID, moved to RAX > + * @regs (RSI) - struct tdx_regs pointer > + * > + * Return status of TDCALL via RAX. > */ > +.macro TDX_MODULE_CALL host:req ret:req > + FRAME_BEGIN > > + mov %rdi, %rax > + mov $TDX_SEAMCALL_VMFAILINVALID, %rdi > > + mov TDX_MODULE_rcx(%rsi), %rcx > + mov TDX_MODULE_rdx(%rsi), %rdx > + mov TDX_MODULE_r8(%rsi), %r8 > + mov TDX_MODULE_r9(%rsi), %r9 > +// mov TDX_MODULE_r10(%rsi), %r10 > +// mov TDX_MODULE_r11(%rsi), %r11 > > +.if \host > +1: seamcall > /* > * SEAMCALL instruction is essentially a VMExit from VMX root > * mode to SEAM VMX root mode. VMfailInvalid (CF=1) indicates ... > * This value will never be used as actual SEAMCALL error code as > * it is from the Reserved status code class. > */ > + cmovc %rdi, %rax > 2: > +.else > tdcall > +.endif > > +.if \ret > + movq %rcx, TDX_MODULE_rcx(%rsi) > + movq %rdx, TDX_MODULE_rdx(%rsi) > + movq %r8, TDX_MODULE_r8(%rsi) > + movq %r9, TDX_MODULE_r9(%rsi) > + movq %r10, TDX_MODULE_r10(%rsi) > + movq %r11, TDX_MODULE_r11(%rsi) > +.endif > + > + FRAME_END > + RET > + > +.if \host > +3: > + mov $TDX_SW_ERROR, %rdi > + or %rdi, %rax > + jmp 2b > > + _ASM_EXTABLE_FAULT(1b, 3b) > +.endif > .endm Isn't that much simpler?