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 CC3C9C5478C for ; Tue, 5 Mar 2024 06:10:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 536C76B0081; Tue, 5 Mar 2024 01:10:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E5B56B0083; Tue, 5 Mar 2024 01:10:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 35E886B0085; Tue, 5 Mar 2024 01:10:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 2804A6B0081 for ; Tue, 5 Mar 2024 01:10:51 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D28801C03B4 for ; Tue, 5 Mar 2024 06:10:50 +0000 (UTC) X-FDA: 81861961860.09.3E16E46 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by imf16.hostedemail.com (Postfix) with ESMTP id 86967180006 for ; Tue, 5 Mar 2024 06:10:47 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=TdmAj6Di; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf16.hostedemail.com: domain of yan.y.zhao@intel.com designates 192.198.163.16 as permitted sender) smtp.mailfrom=yan.y.zhao@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709619047; h=from:from:sender:reply-to: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=Bvc5HZM8z9+WRvNUROz2fsaP6vyZVdN9BcHM78cOacM=; b=qZOrOLvhbBcnhvKEJG3TPVqjyw3gi1deJQbARCyF6EGs4UsxP99DTImOnWUJxsxgZsb9EG XFE6KWzrlw8Mn4kd73cwexc0w8J12iog/+0rJy5HQdsZF5j5YQlewaV51ouTbX19M2E3Vc UMTWgOnTEHm8RE3Odv1RteB1yi5nfsg= ARC-Authentication-Results: i=2; imf16.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=TdmAj6Di; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf16.hostedemail.com: domain of yan.y.zhao@intel.com designates 192.198.163.16 as permitted sender) smtp.mailfrom=yan.y.zhao@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1709619047; a=rsa-sha256; cv=fail; b=FD6vlukEX6jdBBWzG/oyDzMs/o2AKHU0i3jlnsH1Hf69lmW8O28XpI05VeIXw9wagO9oM+ Xkk0dWwLj70bjrWEC9NkXwYLileCCXhw/v84wYsUN43N351/1NpPgDV6XKL/jB+iXM0FzC 0xFkPbKAqZ7D4GLAYptF0fGYe0DpuLc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709619048; x=1741155048; h=date:from:to:cc:subject:message-id:reply-to:references: in-reply-to:mime-version; bh=iW+gHiz97dUJYQAYk7XIhMv/xRS8y9W+4SguMPbSbfg=; b=TdmAj6DioNQql/npqjTsldQy94PQMJnb5tmZ3bA/H/3dkTGcT2GDRFDn a6EAnFLYquDdhxTFJfCpgEaOX2nKrIXNLhWLh1woBT6k2bXmVu+vBA5QW cv8TszXNAJsB4XGd36a1fD8xxN7k2QNjD/ChnxrPGZFU3sWtxV7x9z94F lsUCe1OFCF7jFA/K9hapuKAPU7AFxUDG4zuIyCvcJZrt+9E0NLz2dWqMP C3LchydYtwP/CzfF4F5bfCJsdKDv0O4G4l0ZQYTugTMCQBMj+Edyui8Oo ouG80eCeWLs6nKpu2dt3lF1Q6JkmI2Y001BJMJMUhzPkKEnWRspTTOdL3 w==; X-IronPort-AV: E=McAfee;i="6600,9927,11003"; a="4734873" X-IronPort-AV: E=Sophos;i="6.06,205,1705392000"; d="scan'208";a="4734873" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Mar 2024 22:10:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,205,1705392000"; d="scan'208";a="9210199" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa010.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Mar 2024 22:10:45 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 4 Mar 2024 22:10:44 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 4 Mar 2024 22:10:44 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 4 Mar 2024 22:10:44 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XERzQoByE7JN17RpN0kzbWXY4tf7cLHZvjO2u39VG2LY8wrcgQX7ENM2zXDN5BZ4gS+JUWYQHM+pPf1GdNaiPx0eT07niXNhepGx5141lzAf6iLEn+DpuNATzL1R0VpLGJXSGQjvYtmi+c6Nu0OoxrpFdmBOxPf2Wj5oAeUPTt3KvxirAMEE0E5qAoR6pvL1mHaAOwfdVmYluJpUGh6O9t4uV7/56RJ0lF29lRiVIEDh4kKaef7Fo9hjyO4gXO4TtnXVaIqZiuakDFcTwlHMMp5t7oo/qQGK4DGiiqrEKbNruo156wvpzrjBr8FA8G9EKlvI+EqC88Ty32UTVE8YjQ== 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=Bvc5HZM8z9+WRvNUROz2fsaP6vyZVdN9BcHM78cOacM=; b=bXlouWvAk02B/ZxAjgcHDVpn8AGJDZjd8Wr942AT5XMQqYF507mwClpgM9zEfOCfmq6eGosrT1h5wIzpBwFJSZC7Pbkx30TJMo9h0QiszJbOx6pRu0NFBEobm5kPL+4jFjsx1YWhQ6XbZLNhyHt8swWIU71z42TsS8Toya39SrBPnUk1xCPyzibhrGNo9pTUfCXHyWkgicZVSGCq/p2Nt2JxCQvsJdXYVBthWfs+OS+QpO1w+PGdq0leXjzFV3Ay9DK36DKbitOYDO4AcaZs3+H2gWHEChRwmDMyOesHrJHB9DNeVAtq/qUe6PS8gTbM5YwnFA2XLxDYwOV4cMJ62A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DS7PR11MB5966.namprd11.prod.outlook.com (2603:10b6:8:71::6) by SJ0PR11MB5181.namprd11.prod.outlook.com (2603:10b6:a03:2de::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.14; Tue, 5 Mar 2024 06:10:36 +0000 Received: from DS7PR11MB5966.namprd11.prod.outlook.com ([fe80::55f1:8d0:2fa1:c7af]) by DS7PR11MB5966.namprd11.prod.outlook.com ([fe80::55f1:8d0:2fa1:c7af%5]) with mapi id 15.20.7362.019; Tue, 5 Mar 2024 06:10:36 +0000 Date: Tue, 5 Mar 2024 13:40:42 +0800 From: Yan Zhao To: Binbin Wu CC: Sagi Shahar , , 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 , , , , , Subject: Re: [RFC PATCH v5 16/29] KVM: selftests: TDX: Add TDX HLT exit test Message-ID: Reply-To: Yan Zhao References: <20231212204647.2170650-1-sagis@google.com> <20231212204647.2170650-17-sagis@google.com> <1f9d2b41-95ad-42ca-b1e5-70212b93a9c1@linux.intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1f9d2b41-95ad-42ca-b1e5-70212b93a9c1@linux.intel.com> X-ClientProxiedBy: SI2P153CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::7) To DS7PR11MB5966.namprd11.prod.outlook.com (2603:10b6:8:71::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR11MB5966:EE_|SJ0PR11MB5181:EE_ X-MS-Office365-Filtering-Correlation-Id: def2243a-072a-4b3e-4ead-08dc3cdaf8f9 X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SYWkb4rQEmXECL1SfjAXelbyvCbfhJU1mccP/4mV5+kSDOtaDNJNPemDFv39HVHsvpmVDn/5VFNDrfiIPgEHe0EpItz32DmFn2s1a3ZyT9zlzkzfuIY/VANEvCNCxN2EUmJYIS0HVgPiJ86HVGGLEDsHA1vuiJFbUeJZ9G1HDPjLnvHb5NdauRJiOf7ZHXGNJJMxpZbnhb4EbQM5k4MmhIEfjngwWL/MAPGB10z0c8kIxWuCTJRnc0xxugN9tIt6Rr34xuszqjUY5DzE/AFmL3IFXxfTR5/crWe5absdGZ4QyjzwC3W8uOV/oMVwvsDMC1wdjzdI2WcEE5sBtuB7mLuOwWlXto/FQP75TUHXmsxWhv/OFD8Fu2GZNDGAZDkOGmDJcxU4F7nHCW2tqQo2tpIiXpn00Sxg9vAqv2iPw8+hoor33k2G+Vj9+iuZhf3jAEflgWENwVIk3spsmtWhop2wy/1CN7MbyEZJ2cDwHwg5Ezxay052LYchg62YiIEAZA/dKQZaOKzzCUlpSLye1/oqwMLXaIxv/JoTZvc6sdnincsfv5YzCzz/A45vjkcuSTudcqt2mRoEsKSQZ9BUL6jSR52Q9B6xvzqfndz0aRw/AlAJ4eL8apzVf4QO7Q1j0dqUYQlzmFvedQcALjq3XeqIw1osDsm0oSi6TACNii0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR11MB5966.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hMAiYS88n6O4VC5EyVEBtZ0JYC/HBi/R85TjQCv+na18Fs7OtzUXpgZrFPUQ?= =?us-ascii?Q?r/Seo9DvSIep9lJMaaPPbfsNOns4owGpWePbghLPSNq19wXd4lOXfUP+YYcP?= =?us-ascii?Q?CXg+IQe5s/izBVomTYZw7BsyEDsQoBrYxV8xz2meCERPuqq7CDEizKBEeDxU?= =?us-ascii?Q?al4ssKRpfc5gGaSzf/WVSq57OlNQdLQwxRa9e6YEwHMlWbsPuIra33rBTKjE?= =?us-ascii?Q?0I0DjguqHPiud9OLLJ4dn4l2ksjgEx5PzJfI8sMkWJ1/6CTB0mJWmtKku9Em?= =?us-ascii?Q?yCJ15IokDWCQRmOcOsr0i5cg04O9oGsePzu56mLdhFSObiLj4GPhM3W7MJIA?= =?us-ascii?Q?ZoQUFqn/iiFghJ29JayLsHl9Al873/yYvae5m1GDx4ycNUybPlSB3jxdXuGI?= =?us-ascii?Q?tvONygVl3ykO3y+Ylc4YtSK5DukZFltxi4TjroNBJPq7KfVEvEtT813PZ9zt?= =?us-ascii?Q?KiuFHVxQj4eMsE+jTaqeABvUr1vHOuhJcO6mQRqsbD6X8gGJhJxVdlMxx7E8?= =?us-ascii?Q?9CuzbofhCaxuAysSmHT8RSGOJJPzPVMh4Y0TxsmGK18nYTbC/WHRBWGhSddb?= =?us-ascii?Q?k+Di10RpaumKzEdGJBFBSY6QS+FEDTeVhqYKcTuVFDJh2NHfmn56o/5xJsZi?= =?us-ascii?Q?dV7wSamFxFIita9oarli4zPVfCdBU6AwpWdlBJNp+J2swpiihQS9Rxz3EN6m?= =?us-ascii?Q?RoaHEeh6XBjgtMnRuSzFOvaC977gG0qz2IkpfTiBA2iDcrJOgmS2s+a/T0tw?= =?us-ascii?Q?NrSa51cdjlVX5Hq+NlvvR1X6fS/zg/nJYFfDWSSWKFXs4nMzqj0cKHmznWjR?= =?us-ascii?Q?bUj1KeWArn3buMd9uWN4qnlisDWaobEzZPrVSL963MFBUDD2d65hYXK3eoov?= =?us-ascii?Q?JkrMYC5DYOmZsvFBuzGtcJMo3XPa5V7j+NA4wucQkqP2MjnWjKMSN6I1TDjg?= =?us-ascii?Q?Lkq5s8Mp+UplFP1MU0xncjfcJrnrHLo+nc8jTcqQ5TvxBmDu8MJ+IuawBt2h?= =?us-ascii?Q?YDZsp9fSc1A4W4yZdKFlbmSmxKv03wMDVW2oFsmypiR+MR7lCLs3RHokRYTH?= =?us-ascii?Q?FqmDo7uix4cC8aok5Pm5ToRI7kOSoA9wTKA1IvndmqJWRyqpFAppGTUGUwbj?= =?us-ascii?Q?PkNIxzDUKvZB8xo+jSsjf3RdVgNUHTZlQ9+tyyXe8TiDb6QbOY4BtsK1hz0c?= =?us-ascii?Q?KrCGAyvcoA0Rd9xvNhYyDDsgMZUZSRJMt9GwvBdbbmTPDqGi0zERyb3YudTr?= =?us-ascii?Q?PvrjhzlN8iPZxdlY6rduHN4Eb2ewDOTuDJ2Kgsz91gT8b9rihxr5ApHsy7Er?= =?us-ascii?Q?iF9N6tAfa5TQsJgO+Z/YWKWsaGTLsom1qGz4KZjWIx3BPDE2MMb+7cAa9kX6?= =?us-ascii?Q?HoPaFf4s3BKvZscQBwukpmgW/wIM3Rrnh7pCLlNe/qmzYwTrXAv3AW/ehuz5?= =?us-ascii?Q?T9DoXVnHsLWOSHe8UE2G+VyHvpnYkdv/pMyr+zs0VYxV+ItpC3QSZgEAnHMm?= =?us-ascii?Q?MvbIR/ZCHoJvaw3dMM6tXFA6Toqn2cwnLK7WuxIv21norvqy6DD1fnBJVZT1?= =?us-ascii?Q?GoWxnhKLAcYZkqoQc9QXk/5IGErvQ+NYybVvISSz?= X-MS-Exchange-CrossTenant-Network-Message-Id: def2243a-072a-4b3e-4ead-08dc3cdaf8f9 X-MS-Exchange-CrossTenant-AuthSource: DS7PR11MB5966.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2024 06:10:35.8844 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yewhIxjduZCRB+SYhhp1l1YQjF2j+BYQt/Zh5qlAXn5J/9WshpMNg6FITvOjARadsf6TTjIxSZaSl4DsOEHEEQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5181 X-OriginatorOrg: intel.com X-Rspamd-Queue-Id: 86967180006 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: d56bkzj1u3nhgb7jdgcdsmoopo768z1f X-HE-Tag: 1709619047-897177 X-HE-Meta: U2FsdGVkX1/N/ZfaELKK1Vqpnl/RjAQDVT8yN817Uy5w3vb/cdZLK/trm8eOo8eqqdJer9+QsaZSDH6ON6kpfoA7JHfK3bPT4au+hDZ3XGpqIkD1VMO4tMZeDn7v/Co4wYCSZjNrSih8DPi/oGHxXfGUTwAyhH8g7is8dDNWxxZ4MOGfzwtKGIcLr2A3PrQpV8sKk9bOHzIx57I0zcDOu3EUcnmYTpxE+4kvfD0AAhnD2InwL13gGSx+9B6hg4D+S/rb9yyrmaDR7WEBv7aX59/vpVMqEvwD0XRXuwG4ln1JWxjHdKJULUyiB9TAqam1yfgAybWsD9SkgQNMCmLMRVplQRvtN/0phFuhVPtRhDEZ1wNuYdU/rdRIWHB6ecxBudWkgq/KAGy3Zjyli2PsX74z/VQc5UHA5At7BaGuCPefyBke3ncQzI24lSyjNCvMjRkvBiT6035X1n9u4c8ebthrQImXQgHQ9WK7p5Wy7OskA+r1mzgOij7n11KbYuGSzSRFSSv2IwvELoLnG+7AnZnPOSjJtj8FuGWwAKHhDjPfvQ7e0HgS30cVh5War+qChfuRsogGKoPEgm7zHmtyJIOzFYbUcNyK+lbuvwzU4QLHLoE5BBbpQ4m6HA/cJ4d7TmgcAqXVaOOE0Pf4KuDbsFgzOalgF4Y244iZhAj/aKDvLXT2i3OoB/JQLkRkJQg1HuFRkASGKNIEnkkEf0i3K2zeSLluZr231E3ijA26MsmLVJi99Hmct7BPNlQoxpDlwWNOgMVxcfQoskNvk/VxgyRaDs6IHFcYuhYeasNlmroblp4sq+D/Sgv9FMuTIwlZFSWgnz/fAc2sMD+atDiVvWAdvHVYhtEFBQJHI7QsX6lhy8NUEsHAiVceE4G0qdrI0huhZkCg5+l9bAjWeo6ZHN4/XYYQlqRBuFLmLQOmL0RGHS+u8eE0y38PZ38wrBlce2NN+hqEMi++BztNtXT TxJTBSp5 e36dRDELkaUsnfH95to8NEpaoAlGV2KF2wNshoj9jPsdtD1QJi/MaCLkdpQ== 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 Sat, Mar 02, 2024 at 03:31:07PM +0800, Binbin Wu wrote: > On 12/13/2023 4:46 AM, Sagi Shahar wrote: > > The test verifies that the guest runs TDVMCALL and the > > guest vCPU enters to the halted state. > > > > Signed-off-by: Erdem Aktas > > Signed-off-by: Sagi Shahar > > Signed-off-by: Ackerley Tng > > Signed-off-by: Ryan Afranji > > --- > > .../selftests/kvm/include/x86_64/tdx/tdx.h | 2 + > > .../selftests/kvm/lib/x86_64/tdx/tdx.c | 10 +++ > > .../selftests/kvm/x86_64/tdx_vm_tests.c | 78 +++++++++++++++++++ > > 3 files changed, 90 insertions(+) > > > > 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 85ba6aab79a7..b18e39d20498 100644 > > --- a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h > > +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h > > @@ -8,6 +8,7 @@ > > #define TDG_VP_VMCALL_GET_TD_VM_CALL_INFO 0x10000 > > #define TDG_VP_VMCALL_REPORT_FATAL_ERROR 0x10003 > > +#define TDG_VP_VMCALL_INSTRUCTION_HLT 12 > > #define TDG_VP_VMCALL_INSTRUCTION_IO 30 > > #define TDG_VP_VMCALL_INSTRUCTION_RDMSR 31 > > #define TDG_VP_VMCALL_INSTRUCTION_WRMSR 32 > > @@ -20,5 +21,6 @@ uint64_t tdg_vp_vmcall_get_td_vmcall_info(uint64_t *r11, uint64_t *r12, > > uint64_t *r13, uint64_t *r14); > > uint64_t tdg_vp_vmcall_instruction_rdmsr(uint64_t index, uint64_t *ret_value); > > uint64_t tdg_vp_vmcall_instruction_wrmsr(uint64_t index, uint64_t value); > > +uint64_t tdg_vp_vmcall_instruction_hlt(uint64_t interrupt_blocked_flag); > > #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 88ea6f2a6469..9485bafedc38 100644 > > --- a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c > > +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c > > @@ -114,3 +114,13 @@ uint64_t tdg_vp_vmcall_instruction_wrmsr(uint64_t index, uint64_t value) > > return __tdx_hypercall(&args, 0); > > } > > + > > +uint64_t tdg_vp_vmcall_instruction_hlt(uint64_t interrupt_blocked_flag) > > +{ > > + struct tdx_hypercall_args args = { > > + .r11 = TDG_VP_VMCALL_INSTRUCTION_HLT, > > + .r12 = interrupt_blocked_flag, > > + }; > > + > > + return __tdx_hypercall(&args, 0); > > +} > > diff --git a/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c > > index 5db3701cc6d9..5fae4c6e5f95 100644 > > --- a/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c > > +++ b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c > > @@ -721,6 +721,83 @@ void verify_guest_msr_writes(void) > > printf("\t ... PASSED\n"); > > } > > +/* > > + * Verifies HLT functionality. > > + */ > > +void guest_hlt(void) > > +{ > > + uint64_t ret; > > + uint64_t interrupt_blocked_flag; > > + > > + interrupt_blocked_flag = 0; > > + ret = tdg_vp_vmcall_instruction_hlt(interrupt_blocked_flag); > > + if (ret) > > + tdx_test_fatal(ret); > > + > > + tdx_test_success(); > > +} > > + > > +void _verify_guest_hlt(int signum); > > + > > +void wake_me(int interval) > > +{ > > + struct sigaction action; > > + > > + action.sa_handler = _verify_guest_hlt; > > + sigemptyset(&action.sa_mask); > > + action.sa_flags = 0; > > + > > + TEST_ASSERT(sigaction(SIGALRM, &action, NULL) == 0, > > + "Could not set the alarm handler!"); > > + > > + alarm(interval); > > +} > > + > > +void _verify_guest_hlt(int signum) > > +{ > > + struct kvm_vm *vm; > > + static struct kvm_vcpu *vcpu; > > + > > + /* > > + * This function will also be called by SIGALRM handler to check the > > + * vCPU MP State. If vm has been initialized, then we are in the signal > > + * handler. Check the MP state and let the guest run again. > > + */ > > + if (vcpu != NULL) { > > What if the following case if there is a bug in KVM so that: > > In guest, execution of tdg_vp_vmcall_instruction_hlt() return 0, but the > vcpu is not actually halted. Then guest will call tdx_test_success(). > > And the first call of _verify_guest_hlt() will call kvm_vm_free(vm) to free > the vm, which also frees the vcpu, and 1 second later, in this path vcpu > will > be accessed after free. > Right. Another possibility is that if buggy KVM returns success to guest without putting guest to halted state, the selftest will still print "PASSED" because the second _verify_guest_hlt() (after waiting for 1s) has no chance to get executed before the process exits. > > + struct kvm_mp_state mp_state; > > + > > + vcpu_mp_state_get(vcpu, &mp_state); > > + TEST_ASSERT_EQ(mp_state.mp_state, KVM_MP_STATE_HALTED); > > + > > + /* Let the guest to run and finish the test.*/ > > + mp_state.mp_state = KVM_MP_STATE_RUNNABLE; > > + vcpu_mp_state_set(vcpu, &mp_state); > > + return; > > + } > > + > > + vm = td_create(); > > + td_initialize(vm, VM_MEM_SRC_ANONYMOUS, 0); > > + vcpu = td_vcpu_add(vm, 0, guest_hlt); > > + td_finalize(vm); > > + > > + printf("Verifying HLT:\n"); > > + > > + printf("\t ... Running guest\n"); > > + > > + /* Wait 1 second for guest to execute HLT */ > > + wake_me(1); > > + td_vcpu_run(vcpu); > > + > > + TDX_TEST_ASSERT_SUCCESS(vcpu); > > + > > + kvm_vm_free(vm); > > + printf("\t ... PASSED\n"); > > +} > > + > > +void verify_guest_hlt(void) > > +{ > > + _verify_guest_hlt(0); > > +} > > int main(int argc, char **argv) > > { > > @@ -740,6 +817,7 @@ int main(int argc, char **argv) > > run_in_new_process(&verify_guest_reads); > > run_in_new_process(&verify_guest_msr_writes); > > run_in_new_process(&verify_guest_msr_reads); > > + run_in_new_process(&verify_guest_hlt); > > return 0; > > } > >