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 064F5C48BF6 for ; Mon, 4 Mar 2024 13:57:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 266986B0074; Mon, 4 Mar 2024 08:57:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 216766B007B; Mon, 4 Mar 2024 08:57:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0DF566B007D; Mon, 4 Mar 2024 08:57:35 -0500 (EST) 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 F37826B0074 for ; Mon, 4 Mar 2024 08:57:34 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C569240BAB for ; Mon, 4 Mar 2024 13:57:34 +0000 (UTC) X-FDA: 81859509228.13.0A61592 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by imf21.hostedemail.com (Postfix) with ESMTP id 5BE2C1C0013 for ; Mon, 4 Mar 2024 13:57:32 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=hOFCgLBE; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf21.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 198.175.65.21) smtp.mailfrom=binbin.wu@linux.intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709560652; a=rsa-sha256; cv=none; b=i5C2/UDzRT5jSp54NXod+4PZN8/ipI/pO9BgPxhvHR/eNIcOvLytBkySMYsulwnrcH3CN+ gtHxRawOoeSjrXSvyT3tyOF1vdbJ/c/FN/DEwxqO7IHPd3r2UszMcMAQIwUABMkJgLDf75 8xpfEsn96AOAC/GP9lK31jdVlQ+Fr70= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=hOFCgLBE; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf21.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 198.175.65.21) smtp.mailfrom=binbin.wu@linux.intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709560652; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RfvzwoJ+2KWAMZfH278QWfMUx6zuxiWphGh0X733KDc=; b=Ybxg+WEP6BnA5iHYZzmVb7y70g52j47rkv8QNUCt2IqRpyMbUB7AblwfxDxZgUgIw9FEM5 PrMLoGAPoBVDi13MnWN/nl+PMPQ6smkHivi+Xr51SD1Mrt9+ZMZId8qL5it37ZAr2JsZCc xAvzVZHqhU3rpEXdIb4hBVRKum8PZm0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709560652; x=1741096652; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=GMWrlxz2sTYpPhx3ekf7oQgX2MpEth+T8xxra+NmSyw=; b=hOFCgLBE/QXJoG7/ohfSPnnQ/XIf4t7W5QLIt/HiybaCPElVIsdqk6wx 2k95RLJ7QQSac6fLOof+61e7QCLUGUby1JHzwVwbNo0Hm5rEAysBktVxX LaHJ8SsuIgyp7iVqvd32rRMQVq0P+HieD4n+RBiNYPytBUytlB6MOirre hZj130dbBZoHSnjSsTao8Ss7Qc9VdHDyEoTNdRxK824PQhFhr5vrR4w5i 9QC2q01h2/DkZsKNtvtNDJjU9WoYkV1FcgPHBOWk+ObO6kh6uSHXPaA6O Z+YUT4A1MzX+7WS8IpSKP50IhdniOmOcEXbTQo7r8W9nKnMzi6cYKH4on w==; X-IronPort-AV: E=McAfee;i="6600,9927,11002"; a="3977536" X-IronPort-AV: E=Sophos;i="6.06,203,1705392000"; d="scan'208";a="3977536" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Mar 2024 05:57:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,203,1705392000"; d="scan'208";a="46512380" Received: from binbinwu-mobl.ccr.corp.intel.com (HELO [10.125.242.247]) ([10.125.242.247]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Mar 2024 05:57:00 -0800 Message-ID: <0059c183-eb4f-42f5-8f1e-7eef6b0a4bcd@linux.intel.com> Date: Mon, 4 Mar 2024 21:56:57 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v5 26/29] KVM: selftests: TDX: Add support for TDG.VP.VEINFO.GET To: Sagi Shahar Cc: linux-kselftest@vger.kernel.org, Ackerley Tng , Ryan Afranji , Erdem Aktas , Isaku Yamahata , Sean Christopherson , Paolo Bonzini , Shuah Khan , Peter Gonda , Haibo Xu , Chao Peng , Vishal Annapurve , Roger Wang , Vipin Sharma , jmattson@google.com, dmatlack@google.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org References: <20231212204647.2170650-1-sagis@google.com> <20231212204647.2170650-27-sagis@google.com> From: Binbin Wu In-Reply-To: <20231212204647.2170650-27-sagis@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 5BE2C1C0013 X-Stat-Signature: 8yrjnmegowaem1hj9qrff1pmiixx9awa X-HE-Tag: 1709560652-471925 X-HE-Meta: U2FsdGVkX1+gVV3G/E+4UoG7+lPTtqF2MBjzCMUB53vS2KrjTmpYpmH4L+BTmt5Ijsta0n1dDnu7cq9AaISEwYcprYDl1y29ITTxJ6jcz3jCRk3Gw/ddaxyBTqZAWWqj9zG99hZ9dxbFAHpfdApJPnvtd5xvx6CNslCq4WQo1CqiHqrWfaft/cwy+NrdCPZM8ew0tsWHcCv9UylmkfzWoNNexyzzK0A1vyZ2pdtr0J4ritgBh72ezoxqMOg6AuaxcmISTr0Di9BrUyWH2lmOdgJET8Ex4J5Uv/POhqG8geCbbFQc3u66LsDHta+Io/4iOE6qWN4lrW/4t79SNQoFaGlHKv+Y8OymplQ1BFmRu5a3xRQ47pD0+oH1fGsI7i1OqEEpGvSdAW/FCsrGxuIAHTYR7cbuz5CZu6V60IfukT+R1hxW82Bacc9GIhYiz0anS8DZVWiL8XwEYwTnSNk0T/krQX6mYY4WQ4hcdfh+7zZyRcwW2xhxGT9IGYi27Y5Q25nBTMgpYtIKVH6O1fb0h1dZXEuWETQl7OmHuqmPaWk2pWuDOJGNzEMPpdpIEEybl1A0fHUopwjcT2acz1PYjOGRoIOgC5wzg4yFKTjyoh6H3c0HizhhD+mRymus2kOGhNS8C6tuxXdm0iV0Mh7x0kdqvXSTdMY3AvD4ob6PevQYYil/zK8CUyogYkR+3OBlfg/C2bP/+IomL2Agpjf7JWIuAPg9wLeDzuKCEPx5C5CuPSlHl1i2hLNq8TIB8O8zsp/hGw46lJW2Jfl56rGBHDKjklf1D4cjSPzb2oIGhMYqQj7ooDAzgf9CdKFjBq/FGumoec1F6vmbtS6lvzfZQlQ48TJFG9Im0rcURB+AjSrFHAxAm5JVpA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 12/13/2023 4:46 AM, Sagi Shahar wrote: > From: Ackerley Tng > > Signed-off-by: Ackerley Tng > Signed-off-by: Ryan Afranji > Signed-off-by: Sagi Shahar > --- > .../selftests/kvm/include/x86_64/tdx/tdx.h | 21 +++++++++++++++++++ > .../selftests/kvm/lib/x86_64/tdx/tdx.c | 19 +++++++++++++++++ > 2 files changed, 40 insertions(+) Reviewed-by: Binbin Wu > > diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h > index b71bcea40b5c..12863a8beaae 100644 > --- a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h > +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h > @@ -6,6 +6,7 @@ > #include "kvm_util_base.h" > > #define TDG_VP_INFO 1 > +#define TDG_VP_VEINFO_GET 3 > #define TDG_MEM_PAGE_ACCEPT 6 > > #define TDG_VP_VMCALL_GET_TD_VM_CALL_INFO 0x10000 > @@ -41,4 +42,24 @@ uint64_t tdg_vp_info(uint64_t *rcx, uint64_t *rdx, > uint64_t tdg_vp_vmcall_map_gpa(uint64_t address, uint64_t size, uint64_t *data_out); > uint64_t tdg_mem_page_accept(uint64_t gpa, uint8_t level); > > +/* > + * Used by the #VE exception handler to gather the #VE exception > + * info from the TDX module. This is a software only structure > + * and not part of the TDX module/VMM ABI. > + * > + * Adapted from arch/x86/include/asm/tdx.h > + */ > +struct ve_info { > + uint64_t exit_reason; > + uint64_t exit_qual; > + /* Guest Linear (virtual) Address */ > + uint64_t gla; > + /* Guest Physical Address */ > + uint64_t gpa; > + uint32_t instr_len; > + uint32_t instr_info; > +}; > + > +uint64_t tdg_vp_veinfo_get(struct ve_info *ve); > + > #endif // SELFTEST_TDX_TDX_H > diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c > index d8c4ab635c06..71d9f55007f7 100644 > --- a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c > +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c > @@ -241,3 +241,22 @@ uint64_t tdg_mem_page_accept(uint64_t gpa, uint8_t level) > { > return __tdx_module_call(TDG_MEM_PAGE_ACCEPT, gpa | level, 0, 0, 0, NULL); > } > + > +uint64_t tdg_vp_veinfo_get(struct ve_info *ve) > +{ > + uint64_t ret; > + struct tdx_module_output out; > + > + memset(&out, 0, sizeof(struct tdx_module_output)); > + > + ret = __tdx_module_call(TDG_VP_VEINFO_GET, 0, 0, 0, 0, &out); > + > + ve->exit_reason = out.rcx; > + ve->exit_qual = out.rdx; > + ve->gla = out.r8; > + ve->gpa = out.r9; > + ve->instr_len = out.r10 & 0xffffffff; > + ve->instr_info = out.r10 >> 32; > + > + return ret; > +}