From nobody Sun Dec 14 23:24:16 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1762527919; cv=pass; d=zohomail.com; s=zohoarc; b=PX3boKKotjjZXBVukZsC1FhanSUm0p05cHirbOo9OXBKZ4t1UrfaJUgDZdHom4X8INovZVhEdNQ1PoC574fUGpzbkoOD89VTSMRB2pBWChPHBiF4PooZKkJ06e8rKiSCTYUyTbI7hc1/5s5GPn+TX/TmTAoNDoZ2TySbybNCGhM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762527919; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+avs39yG5SK8mfCma+H15nY8tDlKMQPGd027kBE3V08=; b=JFJVOjxBuWyIzlgsvqMG37WyKwsfWQddf8BT2J4be1n2QCIqoAb95c3N9pyQPY/a0p/tpy+x5YsiKRcftS3kL+MasZ61ad/Ts4WoST8h+61BJEZZ3Bl14i+qjrpueotnCx62cm54kTy56r7k0Wl6ExIArUHe887lU0gm4Ci1M7c= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1762527918992274.08227736584354; Fri, 7 Nov 2025 07:05:18 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1157664.1486364 (Exim 4.92) (envelope-from ) id 1vHO1Q-0007ab-O0; Fri, 07 Nov 2025 15:05:04 +0000 Received: by outflank-mailman (output) from mailman id 1157664.1486364; Fri, 07 Nov 2025 15:05:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1Q-0007Zu-Jo; Fri, 07 Nov 2025 15:05:04 +0000 Received: by outflank-mailman (input) for mailman id 1157664; Fri, 07 Nov 2025 15:05:04 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1P-0007Wa-Tx for xen-devel@lists.xenproject.org; Fri, 07 Nov 2025 15:05:04 +0000 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20f::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2316626e-bbeb-11f0-9d17-b5c5bf9af7f9; Fri, 07 Nov 2025 16:05:02 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by AM9PR03MB7605.eurprd03.prod.outlook.com (2603:10a6:20b:419::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 15:05:00 +0000 Received: from AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593]) by AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593%3]) with mapi id 15.20.9298.010; Fri, 7 Nov 2025 15:05:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2316626e-bbeb-11f0-9d17-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YA34QMzvgeR/MSMSF8jh4tPbyd90G5VCOvJHvg2kaa/I0eAOp9XsJrgQBG/aeuVAg5I9oFWknC2drhioC+dv6camMmz6ULvuyPTKEx9WxeNFi1ZSYCuGTy/cDkamhWJVynURC6dWVRVKBA+A7iFG7ByG0O5aSeqWs7LFOIMrkNxQQJBGBmGI+H6BqXkih3Bqz2jrqP5gMFoKdKlWj5g91RCUx+GYPlcHhSQ6C/IoDbiqYefZGgcvPGSnzww0XPu72Mbov6yEHYUAA00gl9gkaQ3PLO4kaRP70MMFQW8NFliohijL0laSySGPgZ+/LWmUoBqPGr9ocb40QYMUb9qN7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=+avs39yG5SK8mfCma+H15nY8tDlKMQPGd027kBE3V08=; b=um2jmdZpLoF/8tsjwWPjNTPAed9YbYtUcp/y/BWGAIOgQfh09wBzKtTDsezT4ncv8WTDqcFSh5sCM6r+COrZp9O+o9yjNAaiBDX1RFNRhQdppW7OulohqEpbAmuA+BD19LzXj/1UjIdNfd7hXokhCJRXm1PxL9wBpULYpr+TRaEoA1MnAOnpBofSRhJT6PcwI7hVX9HZFC1oQACDQMq1m/RtdDAVyXYEmIrKaYRU1WbdOFsFwdtKVPp3OgQpunug0nvwhOZKAluKuT8BgcwzFbQW1CJ8AnNb67i4PlVXeDHekE/EH/z9xhnlII9ASl4mRLjR4OQ5yRd1AylCj5lBTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+avs39yG5SK8mfCma+H15nY8tDlKMQPGd027kBE3V08=; b=E7rEDkO5Xka+JJovUY77Xt80eGYvU3GXTbPEbpJzSTZZFE+RPMcSR+Qwy27xJRohZjvCbZXm8T10PGdxdiGbFXyDsY2SRIVpLabiO630sEHJhLjPgfUihbD410O0FSE4wwvC3R1K7tMDCfBVV0imKkqccV90efTwzSiYSL9AuLGdg63JaBwhQ7EjYhD4JtQ3sCfaZcXtuRxB4r4IfRDo+S+2XWNTTDYkirXaYDW6WyvIF1xZYvDkrCyuin92tSkAAeBIEkGnQyzwe9ZElgcAf7PoZi/WZdGnb4BnDlDgqQT9ha/1srPmIYK+iY9b5XjfSoGlKIXHiJI+mUhS+PqOJQ== From: Grygorii Strashko To: "xen-devel@lists.xenproject.org" CC: Grygorii Strashko , Jan Beulich , Andrew Cooper , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Jason Andryuk , Teddy Astie Subject: [XEN][PATCH v2 1/3] x86/hvm: move hvm_shadow_handle_cd() to vmx code Thread-Topic: [XEN][PATCH v2 1/3] x86/hvm: move hvm_shadow_handle_cd() to vmx code Thread-Index: AQHcT/fjfIdwynHJNUWYN6zFEsAQrQ== Date: Fri, 7 Nov 2025 15:05:00 +0000 Message-ID: <20251107150456.2965906-2-grygorii_strashko@epam.com> References: <20251107150456.2965906-1-grygorii_strashko@epam.com> In-Reply-To: <20251107150456.2965906-1-grygorii_strashko@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS2PR03MB8907:EE_|AM9PR03MB7605:EE_ x-ms-office365-filtering-correlation-id: 4b4f7f08-54c4-45f1-538f-08de1e0f05cd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?yQLpeaXyF1ms7dYtUSBjr37me8bPFMXijFv/xbojjLJE/6d/91kM6QoXQA?= =?iso-8859-1?Q?gFmOQyLdtFj867XDpNWhjwRHI3FKPu+6nqR4l/s+wjp7qET4EAlf/uaRZ8?= =?iso-8859-1?Q?r5tVq9Dyvofpl29/fmzCBvgrNexu8MpSMsoFra2dCvJtSFQEQbXdJ3IA3x?= =?iso-8859-1?Q?7y32F0gBI4qujABea7FFbl1VFer6/S6iLqyuKHKgByi9CT/AVGmcobqlOy?= =?iso-8859-1?Q?TBCCCWMydZIIQErXF1iU2MiNQJibEfNnyTHeRQQoQ1EbIaHinEn1gcXevj?= =?iso-8859-1?Q?LfqDgGh8DzBQBlh03HdO1UXRoXQVYbXexZFnfqNTQqI7ME0o8/Ri4qq+Hw?= =?iso-8859-1?Q?QU1PsMFgEAbpYVvb9V3rELJav5sBiiF2AVo2OH0SL0YjKqSCPcoZePn4tv?= =?iso-8859-1?Q?9BAwPe/KuHhqbRlxSlkNQpbfDHU/Li9YTE9BYGud3yDRrhUe52V5uQeLSe?= =?iso-8859-1?Q?qyO9w6WemUpBrDD8NtUNGma/5rzxRTkrSLi7WeQ+6YeMkRu8VOk5eAGDgl?= =?iso-8859-1?Q?0E+99Nak8w116cMwzlMXKXd0rBzGu9B/8LuzMWetlu/JCpA6WnjtfT4hN+?= =?iso-8859-1?Q?XGrcvrLvJTPnvKUMz6xBN/VLavKfYveuj3NoTgA6RXW2VDSg5qGAHGVm8y?= =?iso-8859-1?Q?vmWuwa0dVQUjWKxQ9RQbiYyLMoKsmXolfqOU2SW9fxCYD1TXl0bcs6kqfF?= =?iso-8859-1?Q?j4P4lLmnLIXz8dokPsUHeo0otln44STNyFVUdjib0JQ5OXTzfzKc/CT/fs?= =?iso-8859-1?Q?8JB/M2iXV2be9B2AqBdITdmev7TGNVd+6or8bR6Bk1YAnRqJGaLbXd56BZ?= =?iso-8859-1?Q?ciFHCdDeUdB531bYEnODLTQtZEoctSdFpLgtrorCOXh/wEEmlDKXNu9Fp0?= =?iso-8859-1?Q?r0FobRJuDknh1WQD37todUOKhbXymmAesiS7VNNKdgcOw1EtN2iIDpEaG8?= =?iso-8859-1?Q?hQDpO75jyJJZKGgeqWT4LcMpMadUviLDf070DfI47Gv7Bz6WgLxTMX/+Ve?= =?iso-8859-1?Q?9IvjcqKJkGKpuUSmaWgJutbNJl4GnCKj2IPs/T+6N3RCGy9mu3lgxEDHnf?= =?iso-8859-1?Q?aeSMphMsLfJR3GmQOr1CL4IYlJcBJdeHfMYVcBiz7WJrPCak6v57927NcO?= =?iso-8859-1?Q?d0XjOt1o9b3Pfn7snd9NUCN21lc+/aosbh8DNjDTggas8mH6x20iSwDrHy?= =?iso-8859-1?Q?XSZhAjpjyZXGBo0+6lWL0kKWFAu2FdzkTk7IP5/TfrTE3qJVnqVVAf5bqZ?= =?iso-8859-1?Q?Ib/NYjj9v0444pwZc6oTlkpB6WXSNuM2btptGtuBveNcqg7pD4UYt9owWd?= =?iso-8859-1?Q?3fQFZ3AxF/wmTG5WVify03GqWO5dtSS+n38hH4lSMrQc7zrjJDdCw9fkGu?= =?iso-8859-1?Q?9NGQ/Z6xr8agjHV0B0JloaphjlQP1xz/b4G2J7MlkZtrftlP3211qmudvF?= =?iso-8859-1?Q?dS9KCRpR7mp8B0MVS1xS0/yE+CU3c9mX3lC6pDuvtzT2dKBudlVT0P+/Ut?= =?iso-8859-1?Q?gVYnDQR034GvhspPUslTrrEzOeMqxgpx/QPwpOYd318WsOjFoQ0xSmfc1I?= =?iso-8859-1?Q?ly16kh7iTiPe6t71hn56m5n7daAC?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB8907.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?FboyO9z46MQzkXuYNbvVOCWjzzvKBNZIj77sxSEGGXF19HTo5cG+MGnNu1?= =?iso-8859-1?Q?XtZPLAWa6zw9aBgR5gMqUf0fPp4LIkvxt4hPKegm4XDhLUIXKS8YZGPFAO?= =?iso-8859-1?Q?TfzjoVLOFSE5ozezaCUdqoMB754hcezXLK9V5TV2J6f0Xq2vO5+7Gt0og7?= =?iso-8859-1?Q?77N8WG99LwZvK954CTNhz5nbY37uwsF47HjCNxB8sl4115K3ayUG+AeCmN?= =?iso-8859-1?Q?ZZEzmecgaaOJxsuxVoG09BjNZ3gonM2+un7aXGG7AMuvMjBnfLZefMNnkN?= =?iso-8859-1?Q?MVBq/6wlh6sua0fV4HHvtIt4thD0Vp+rZavyBqiiTc53VnPrJ3PI41ql2q?= =?iso-8859-1?Q?16rPG6Luk4hNFCMJYmJAbBH98ZL+ojHiz9DgeYLyZt/d7EUunkZcGHMujJ?= =?iso-8859-1?Q?oVWnI9bUpxVP6SbXinWwyBjnjKVmQqxg04WpKGrDscmIASWkA7Nv3cjFb+?= =?iso-8859-1?Q?TQXmnL4XJToyZbV2N+4EWWeTP0gK5ihyjJ6o3FKMxFMc3UrEE5b+zxSXOT?= =?iso-8859-1?Q?FpT70/FJ0o2/Zsx+TUQfXYCcQ0e4hxS9eY0wFT+qb6KSlgVFfzC0bVIDEs?= =?iso-8859-1?Q?xy3ViWAscU1I2u1uPNzgtXczlCtJvSPRwcKuMD55uvatvJh8VosLSKo7Jf?= =?iso-8859-1?Q?XCnIENTINmRra8vmzxMaEk38GFKPCB+9iVOQiffaE5M23sxByhW0hnLLu7?= =?iso-8859-1?Q?ml8txp2ozuzksBxpEbs4RGFgEeApUkXf1It/bN8I1ZhfvLxx4NovShCdx0?= =?iso-8859-1?Q?SwP/1bg23y1j9yeRf+BJ0Mw//Zj5ybVXeXCpC2R7hqU1gjF6yN4nxMnqYe?= =?iso-8859-1?Q?1WFaigmAULJ2uIVpgLH08DgUYX5/HPi/Pc3fqKT6V1c3JX1rRRNSYBjhKU?= =?iso-8859-1?Q?T8jwxpS/U5120EOxRvdXcAY458ID9B2su3IUYjTZZDTvu13xo1g93f33/W?= =?iso-8859-1?Q?SyDUXN499RAH/OCNcjDSN5BDYsF42mhay3S+08Hk4y21p0KJ1VqTZfNjPt?= =?iso-8859-1?Q?N7UyD3CxvXpiCZDnTw3Qzj0TYvbmiP5BMwANf5gTzqfavoodimiC01MqqR?= =?iso-8859-1?Q?YXLI6xIoU9ziRixh478vA89s4RBE++zRo4NBqnfS77eqFIvDwPa6YhQv0E?= =?iso-8859-1?Q?PtnjWwDaF9aKLK2e4Apvm7IExlBtBVii0yPRa7YNHSLTgJ8w4bRydVeEkX?= =?iso-8859-1?Q?o//SBc6Fo15+HQNSqzR4UqWNzdUL5uREhKr5V0UHRqyk7PNmnC80oqWrWL?= =?iso-8859-1?Q?PdUZUksgqI+243Pvj9chxffm0PIvhrQfkfE+Vfvd++cYNHAuUBNaWOXqy0?= =?iso-8859-1?Q?FAOQgTdAEgnZFWvfQRnZEb9qCMKpTm8ThwgOiz80QWlnNThDdlFMDS39to?= =?iso-8859-1?Q?MDo9kPXcIsK3jzQjoI47jQGfobvaSpH/v1DfPyib4LkeAwrjgxpBSO/p+k?= =?iso-8859-1?Q?mHE+tJbuw7RlI63CmFKLaYKpVTd/T9GN2BA7qb67eo/fQCOHKYQs0XIU5N?= =?iso-8859-1?Q?PZI2RN1ItfWB8zbRAZiKwxAYKdrAF7OK4N8YSi2A0wKhV6SGJg1MXsnLhR?= =?iso-8859-1?Q?B2Y83K5GNNFwEYSuqAuO55SYZAJoF4KaBlCtT8RCs0OcA3Yh4e9rnQAmLj?= =?iso-8859-1?Q?0S1FDZvtmXLUd7hhI/csg1/pMrMKkpQZKCocQ/AMIHYZY2PoXrOhUphA?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB8907.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b4f7f08-54c4-45f1-538f-08de1e0f05cd X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2025 15:05:00.3744 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Uuk/r+JUyJNIqjj9opMYhATCbp1glxnJIPrvF5h7nMdZ7sr6BvxhzBIuuwhmatMpxx6SalBcVpV5SNZVELJTJB2f+V91Pgmo5QPby0IgLo0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7605 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762527920613158500 Content-Type: text/plain; charset="utf-8" From: Grygorii Strashko Functions: hvm_shadow_handle_cd() hvm_set_uc_mode() domain_exit_uc_mode() are used only by Intel VMX code, so move them to VMX code. While here: - minor format change in domain_exit_uc_mode() - s/(0/1)/(false/true) for bool types - use "struct domain *" as parameter in hvm_set_uc_mode() - use "struct domain *d" as local var in hvm_shadow_handle_cd() No functional changes. Signed-off-by: Grygorii Strashko --- changes in v2: - use "struct domain *" as parameter in hvm_set_uc_mode() - use "struct domain *d" as local var in hvm_shadow_handle_cd() - move code before vmx_handle_cd() xen/arch/x86/hvm/hvm.c | 58 ------------------------ xen/arch/x86/hvm/vmx/vmx.c | 61 ++++++++++++++++++++++++++ xen/arch/x86/include/asm/hvm/support.h | 2 - 3 files changed, 61 insertions(+), 60 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index da3cde1ff0e6..9caca93e5f56 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2168,30 +2168,6 @@ int hvm_set_efer(uint64_t value) return X86EMUL_OKAY; } =20 -/* Exit UC mode only if all VCPUs agree on MTRR/PAT and are not in no_fill= . */ -static bool domain_exit_uc_mode(struct vcpu *v) -{ - struct domain *d =3D v->domain; - struct vcpu *vs; - - for_each_vcpu ( d, vs ) - { - if ( (vs =3D=3D v) || !vs->is_initialised ) - continue; - if ( (vs->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) || - mtrr_pat_not_equal(vs, v) ) - return 0; - } - - return 1; -} - -static void hvm_set_uc_mode(struct vcpu *v, bool is_in_uc_mode) -{ - v->domain->arch.hvm.is_in_uc_mode =3D is_in_uc_mode; - shadow_blow_tables_per_domain(v->domain); -} - int hvm_mov_to_cr(unsigned int cr, unsigned int gpr) { struct vcpu *curr =3D current; @@ -2273,40 +2249,6 @@ int hvm_mov_from_cr(unsigned int cr, unsigned int gp= r) return X86EMUL_UNHANDLEABLE; } =20 -void hvm_shadow_handle_cd(struct vcpu *v, unsigned long value) -{ - if ( value & X86_CR0_CD ) - { - /* Entering no fill cache mode. */ - spin_lock(&v->domain->arch.hvm.uc_lock); - v->arch.hvm.cache_mode =3D NO_FILL_CACHE_MODE; - - if ( !v->domain->arch.hvm.is_in_uc_mode ) - { - domain_pause_nosync(v->domain); - - /* Flush physical caches. */ - flush_all(FLUSH_CACHE_EVICT); - hvm_set_uc_mode(v, 1); - - domain_unpause(v->domain); - } - spin_unlock(&v->domain->arch.hvm.uc_lock); - } - else if ( !(value & X86_CR0_CD) && - (v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) - { - /* Exit from no fill cache mode. */ - spin_lock(&v->domain->arch.hvm.uc_lock); - v->arch.hvm.cache_mode =3D NORMAL_CACHE_MODE; - - if ( domain_exit_uc_mode(v) ) - hvm_set_uc_mode(v, 0); - - spin_unlock(&v->domain->arch.hvm.uc_lock); - } -} - static void hvm_update_cr(struct vcpu *v, unsigned int cr, unsigned long v= alue) { v->arch.hvm.guest_cr[cr] =3D value; diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 6f2cc635e582..d7efd0a73add 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -1451,6 +1452,66 @@ static int cf_check vmx_get_guest_pat(struct vcpu *v= , u64 *gpat) return 1; } =20 +/* Exit UC mode only if all VCPUs agree on MTRR/PAT and are not in no_fill= . */ +static bool domain_exit_uc_mode(struct vcpu *v) +{ + struct domain *d =3D v->domain; + struct vcpu *vs; + + for_each_vcpu(d, vs) + { + if ( (vs =3D=3D v) || !vs->is_initialised ) + continue; + if ( (vs->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) || + mtrr_pat_not_equal(vs, v) ) + return false; + } + + return true; +} + +static void hvm_set_uc_mode(struct domain *d, bool is_in_uc_mode) +{ + d->arch.hvm.is_in_uc_mode =3D is_in_uc_mode; + shadow_blow_tables_per_domain(d); +} + +static void hvm_shadow_handle_cd(struct vcpu *v, unsigned long value) +{ + struct domain *d =3D v->domain; + + if ( value & X86_CR0_CD ) + { + /* Entering no fill cache mode. */ + spin_lock(&d->arch.hvm.uc_lock); + v->arch.hvm.cache_mode =3D NO_FILL_CACHE_MODE; + + if ( !d->arch.hvm.is_in_uc_mode ) + { + domain_pause_nosync(d); + + /* Flush physical caches. */ + flush_all(FLUSH_CACHE_EVICT); + hvm_set_uc_mode(d, true); + + domain_unpause(d); + } + spin_unlock(&d->arch.hvm.uc_lock); + } + else if ( !(value & X86_CR0_CD) && + (v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) + { + /* Exit from no fill cache mode. */ + spin_lock(&d->arch.hvm.uc_lock); + v->arch.hvm.cache_mode =3D NORMAL_CACHE_MODE; + + if ( domain_exit_uc_mode(v) ) + hvm_set_uc_mode(d, false); + + spin_unlock(&d->arch.hvm.uc_lock); + } +} + static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value) { if ( !paging_mode_hap(v->domain) ) diff --git a/xen/arch/x86/include/asm/hvm/support.h b/xen/arch/x86/include/= asm/hvm/support.h index 2a7ba36af06f..9e9fa6295567 100644 --- a/xen/arch/x86/include/asm/hvm/support.h +++ b/xen/arch/x86/include/asm/hvm/support.h @@ -119,8 +119,6 @@ void hvm_rdtsc_intercept(struct cpu_user_regs *regs); =20 int __must_check hvm_handle_xsetbv(u32 index, u64 new_bv); =20 -void hvm_shadow_handle_cd(struct vcpu *v, unsigned long value); - /* * These functions all return X86EMUL return codes. For hvm_set_*(), the * caller is responsible for injecting #GP[0] if X86EMUL_EXCEPTION is --=20 2.34.1 From nobody Sun Dec 14 23:24:16 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1762527924; cv=pass; d=zohomail.com; s=zohoarc; b=NP6Yx0wGmyWmfoMDmgEE0Eq3wTy1E9WriAHJfMCAfO2kywVLXRUlW1zP0X8K8w23iewX9p4Aexg67MR352SORLA45IqWrgdq++9z9e++o2enEfE7GWBdfejf0uGGN68dXdxqt36dht8hhe/nB8Cck0Q3sYASPtHcgtjececb/xE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762527924; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pgVfk4FXoNNmttOjLxewhjRJ89Pbkd84LjmcffM1nvg=; b=LKT7pF+DnZprcMUKGl9URDL9VWSJa2FCYzHSJtqEGNRbvgQJss2LdFhUjSSapHVTOTZRnK2RAQITIlTBUuUms6fq4ujXb8eSHqCuuL40FT0fwi1bpllCV8w2Gps5ybC5c++ef7nD0zCsCnHZmxBbiOLlpwx3aNuQvaspheaGvj8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1762527924837793.1831743858353; Fri, 7 Nov 2025 07:05:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1157665.1486378 (Exim 4.92) (envelope-from ) id 1vHO1S-0007z1-2u; Fri, 07 Nov 2025 15:05:06 +0000 Received: by outflank-mailman (output) from mailman id 1157665.1486378; Fri, 07 Nov 2025 15:05:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1R-0007ys-VY; Fri, 07 Nov 2025 15:05:05 +0000 Received: by outflank-mailman (input) for mailman id 1157665; Fri, 07 Nov 2025 15:05:04 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1Q-0007Wa-UH for xen-devel@lists.xenproject.org; Fri, 07 Nov 2025 15:05:04 +0000 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20f::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 235932d9-bbeb-11f0-9d17-b5c5bf9af7f9; Fri, 07 Nov 2025 16:05:03 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by AM9PR03MB7605.eurprd03.prod.outlook.com (2603:10a6:20b:419::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 15:05:00 +0000 Received: from AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593]) by AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593%3]) with mapi id 15.20.9298.010; Fri, 7 Nov 2025 15:05:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 235932d9-bbeb-11f0-9d17-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eZU7OdoNyvhtAmfYIR6tkC6ZzRfysvZmsUe4PHlI93rBdlwmFv6LKjzo2Wk6utWybVYO+2CE19PCOCdza0LB9ZU9GFgDNCJ8pXA9Uwe+Sjpe5bZYkWiGLbMSNUHLLAf6EOpeFtJDapclU0g7Uhmtzc48IR0e2GEkVPcWowxYuzsaD9CBSyNtTxNDT7v8Fsey1dEZXe0KTEpCa2KFw3Tw/9SM2QGY/esqZcaLUC0xCEelFGExVUHj9dazMEQDazcVdLVtGWi0mJkVO8c2433Aw3Tt6ClZScfiw9Ckx+y8w1kBZZwRm983/oSHDNZUHEc8PPYeBvFrzu4/3P3WjISgNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=pgVfk4FXoNNmttOjLxewhjRJ89Pbkd84LjmcffM1nvg=; b=hb9DFirdVutGj2eSfnGkxIT4cIpseWv2+Jn2XiCRFObznNOwr+MHZapSEhGCXm8ESrDZF3bY1tYpOnW+bZtYgrl3mues8H4z/7CYV4MAgIWhJXL9i/pF+uvvVNIwb6ZMtQXTx4Z4+6Z4e7sh70e+2lsUmLsJ5UqMBxdXVfxmJ+60JUjgMybsAxv6g9w/BsluldkbhArVpu5I37OQBOt+zUGYlBmli8ih9ud9lyBdw/ePodtVsUg9Iiy+WANufrtBWpHtuddUDeieUS4yd1TUYEORF9tJFVovmhEvC7QlgwL0uU+W8ASFMNVq4ub3cWi35ALjS+eIIqVhKBA57rQfUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgVfk4FXoNNmttOjLxewhjRJ89Pbkd84LjmcffM1nvg=; b=dd8ikIcitqCHcp92ek/OzzzI9hgzYTlFLI3KIEtDPafK6580/mPbAPcSEVny6XlMiCkkS+s9rwquW4Wn52bGG5BwclLKvHyBpOY62w8OE4LAp/gBbU8Rtht9Tiii1MHZeoUGkiCJMrco89JzaJhhiarFQ62ypgVjMKBdJ+LwuCxtbRsBAbfuFm/1aBslbQGRTFhh24StNfKeFpdGopOxB0UPwK0NHyQCeXj3ncJeVeqiGp267QBg8VL4g5vS7NQ+eWY0nx3kHbHrU+/235wZLZzF9oHRC1O2jfQclpxsE5JCvcYrxYmJI7HTFj9QWyfxdto4lDKvHKh33Y4duSifjg== From: Grygorii Strashko To: "xen-devel@lists.xenproject.org" CC: Grygorii Strashko , Jan Beulich , Andrew Cooper , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Jason Andryuk , Teddy Astie Subject: [XEN][PATCH v2 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Topic: [XEN][PATCH v2 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Index: AQHcT/fjhmbe8yBr3kSMWLJqeXgjQQ== Date: Fri, 7 Nov 2025 15:05:00 +0000 Message-ID: <20251107150456.2965906-3-grygorii_strashko@epam.com> References: <20251107150456.2965906-1-grygorii_strashko@epam.com> In-Reply-To: <20251107150456.2965906-1-grygorii_strashko@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS2PR03MB8907:EE_|AM9PR03MB7605:EE_ x-ms-office365-filtering-correlation-id: 6910e75e-7cf2-43b0-f84a-08de1e0f060f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?XzC8mEYbw91clCZbWK/9CyBUmG+JRJVujQLxhHzt25OEyPNnDHvCOXFbAf?= =?iso-8859-1?Q?so7C9m1U3uGX/kznXHHT9AVOajK1GA/mORemy0Cxj0gGbsraBYqPlhw4P7?= =?iso-8859-1?Q?BaKKSRx1u+byh8QCFLRUFgB3Siey4Q7tc/n9Wi7mPByGCGWcf4JRtQY5uG?= =?iso-8859-1?Q?qzayTS9SXxX0fzMTCx5JZnK/VP0JpCmqpKjN0KKuLKGrmJb3X3vPFw/dLp?= =?iso-8859-1?Q?KJCetc/KnYrvodG4QIvuG2Lk6HiUaiDrAf+NuX/eoANak9cgiFYJpgKc/5?= =?iso-8859-1?Q?ueI/51iMiwcTu0Pw9o/ODY4WMy5TVDu1WSDlK35jKw1F2+Zq8PI2F5cWCW?= =?iso-8859-1?Q?I9UM8eNSAc7ar8yZ76WzvuFsLN0kb5gR9lHbiQQR2LhplBvt3RCxrffbWQ?= =?iso-8859-1?Q?dilYhaq2cvAA3nue72YPXd/nEIsH20UskCKK0HsUGoWcViwt+my9axU9zY?= =?iso-8859-1?Q?jUIiC3sTCXvoh3DQVnGZ5UPgLgrg+QYrBMUErFgLntYqgKtdMFYag7JRRT?= =?iso-8859-1?Q?ZaIs4wOjMR04J84/4Ku3zdZJcrxvfrOurPn1x+sS5LGVwkedrF1/SV3K9D?= =?iso-8859-1?Q?9zHxY7viahDSxHWN0MzX7jjDPB1HFXT8iIGbJOImVF14xqNtlXu5uayJwq?= =?iso-8859-1?Q?ngVhsXwLRdSZnC+0irxOqDG7cPy9X7ZBXNz08oqpADqXObGPwzzx58eLvk?= =?iso-8859-1?Q?PAsQhbwnk6gOnL+hccnMTyAmUqvEm9vm0Ok86wp4ZeLV9yfSZe9m8fgR8c?= =?iso-8859-1?Q?UKZGilhewQ604U1S4QaX/Gstimkdvu+i29QgEr8KqFAQDAGQJvQeMAspGH?= =?iso-8859-1?Q?UtnQDVID0fEjjOxasuVY7CCda4+c0b7N9LUJoSpmddNiq+SV8DoWc60gTx?= =?iso-8859-1?Q?Fw/AHN01/lGOvDM38NUvCS2VxBV1HAF1L7lGJvNxzX9AeGo55C15/q5P5V?= =?iso-8859-1?Q?+6Xhwg0cVl9+fR46xd2RkPI8PCCJenT8AdKl8mU39j+OR4isQxq4IImNqt?= =?iso-8859-1?Q?dKW+SGTYVzlj5neCgbnBm8JeKr3GOXfPiS6OYIrLJE4J3+ScIEI9E9eWnN?= =?iso-8859-1?Q?lgYpekiJiCE+yUxDd1Aw7dvhfiQEMGUYIah8Sm2bBvBUre7oqw4NVgsx+R?= =?iso-8859-1?Q?r0GlClXyZHxFFUbpbUTxiQheryKrKYPjddcgP2dCLJyYysY7ekw0ycJfdY?= =?iso-8859-1?Q?VfC1lIiAJCa81i85v6GIjCavi8/Vr3gtFI0Fyvy05VPi2qlWdFTZ0m+QXx?= =?iso-8859-1?Q?RUYIRyBdbIBTfzXry4o49FNNJ4Ftq9ylOz8/sBVG9wfE6XsY1g9eob1xVH?= =?iso-8859-1?Q?ppjSOgqJyrAgzCsBOBayeFhynZ3IB+aF6tnEmLOyQhxFX+Q4vFEb2a8MCS?= =?iso-8859-1?Q?EuPcvf0AWOUJKhPpkjb5KzXQ+3A3lHZwAJnILe2v/GIj9Zdb2lV//HMSs2?= =?iso-8859-1?Q?DKdkS7gA9Z5NuzKDa04LIOjXcoxz9nshrrW+nAes9dW1dASucQKUL6FcC2?= =?iso-8859-1?Q?cFG8iQbp0Cn/q7x9StHtbptLcsWEX4xHrexIna4FYfDQVtdxXlqOGwUwZb?= =?iso-8859-1?Q?t9r4q7vaXV1qfLr41tnyVmfvpzp7?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB8907.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xBpM3rx9fMYrvLGEsBSmZB7YprYzZnd0/3sIt3Vd+D0bm3Qc0Bhj1rTIIM?= =?iso-8859-1?Q?l2Ottg6+bCp2Kp1pSi4kFZ5m2ZjVkENrMkGMFNkYp/cy0b6kmR1jrVPFvi?= =?iso-8859-1?Q?WxHxIeNkjSIJ6XhY0DhTkuAKLJsYlLqoBy2q6wsQeawZ6shrfE64MLSIXq?= =?iso-8859-1?Q?T1MkBDjzectQ2Tk3HgjgcSFNju/M41UinT99mF0VBSm8sfADZheocxtqAs?= =?iso-8859-1?Q?E951yjY/AyyT1Z4vGHfoSrDGS79LGskFiKjVhVX1AD7e44fA0IjWhEpE1k?= =?iso-8859-1?Q?bktFo8OF4Ke+khKAdxGXhJiiO0a2/xS6FjR0MojtisJK/1o7fU9PH5sg69?= =?iso-8859-1?Q?F+TuTPunGLBI6QRkLQF1FYL4ErC6mf0kYdF5FkAJiob4wRgzcAAklKybTS?= =?iso-8859-1?Q?8QZtO1UBvUGkjYy/igMKOiNtS1+pvGkJTImcGcudxakBGuXpGl0Ly8SYnW?= =?iso-8859-1?Q?69mylV8gI1ZYSs2yKlzGgtyrFjM4PqzlL3Sf/40whJ+MdlJ5ouGwl25CYf?= =?iso-8859-1?Q?J2X/YiUd0BODaUrc4N40/oATJlz/3xrzENz+nKOSoUd1YiufLphhAuiEgo?= =?iso-8859-1?Q?6/ruCs3jEfn0kZBkh6ras9wvjTqNXpbLKm/plQgpIclfCsH2eUXvBh1ADY?= =?iso-8859-1?Q?B27AKETUxaa9uIIbOrHlL02CUB84U+UQatBv3h5Pyt+KuI0GpJP3gX+v+Q?= =?iso-8859-1?Q?nLyTwVT/mowX245Q1N7RxdE2mar5STZwCfoY3ZGpUv1e++WR25/4uGJCIP?= =?iso-8859-1?Q?EnAROKSe63de5X7+qM307lf16WQWzxqbBkDIAy5fOEdsqlW6KwZnCNj61m?= =?iso-8859-1?Q?/Q19DJP42nn6r/9zXAXryOu9McxM0ukixHflIXV9fD7c27C8dKpi78F2D8?= =?iso-8859-1?Q?Uto4LB/aryw3p6dyWX5cvqoTgY0PPTHyKfsMFzSKWCqWLVhVI1Q6/1MX0a?= =?iso-8859-1?Q?kjt8wrqrJuvMhwTfNRu74f28DoY3TRXoKVvHgq5XgFLs7PxXOWer2B9Ukl?= =?iso-8859-1?Q?3usZBZLGwmrT0nGdV6vqDCuqIUxYxcax7tn8qZbpjCyT4/xQLWhkOXpkyJ?= =?iso-8859-1?Q?akJUe6enDlegx+4J6MyOf3/xRGQIr2ow35pHpFOt3SCR1MG+7x5shR9u/t?= =?iso-8859-1?Q?94L7McW19stQXzDBCP4qB4gp94bqLdWUDlXaQ8FMmdxsBiLECObQYT+fhu?= =?iso-8859-1?Q?323be9SMPuIZapz8e7kfs0fs0Y3SIRarlDI39WG2lAN+nsAh1LiDHvG7S6?= =?iso-8859-1?Q?yBA1PSaZjiRndlEIPnwzKIPp2qecRAO4e0uwMkSZHwpLPdx+wgl0Lkarfj?= =?iso-8859-1?Q?U3Etnb4kvCzICtOGpAL5ojAYQ508VIKvLmLKStx0JQjTZVVm+efxBeGhta?= =?iso-8859-1?Q?h7558IXQ3VWqVwY+xR/wvxx/w7oUff7LElPkRUOja5o0ZTUbNNNoUd32JL?= =?iso-8859-1?Q?a4ghe3Gy3i97S7gWVICu/6UKkKYjMTvU+RMErPamoE5eWMewvRUpEaRhjK?= =?iso-8859-1?Q?KAp/yzec0wqY0l8gQEeTEJRiIbevpOJg1NNL1EspXRNUMs63Kqjf51MRT6?= =?iso-8859-1?Q?+YA6ktlcMKpYkkPF3LvgUprpFYOdx119VQFag/CZCq9A/BDtH6mZ7YB4Bz?= =?iso-8859-1?Q?7ib32q09gQN3XBH0B042LOK3jl8MCY16jg1dsNH0MNIHkkcl6DVcUklg?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB8907.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6910e75e-7cf2-43b0-f84a-08de1e0f060f X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2025 15:05:00.7626 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GGN+D6o6oXz8Pt4VTrjdqJTPvQEVS/Bo8KS9iRWvL8uX86aYVuLfe8FrOJ4U0Oy4z4Gh3+tH6r0lhpDzB5iMxplmaIRTzTZbBJvAhxpvahM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7605 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762527926254158500 Content-Type: text/plain; charset="utf-8" From: Grygorii Strashko The hvm_shadow_handle_cd() can be used only with SHADOW_PAGING=3Dy, so guard hvm_shadow_handle_cd() call with paging_mode_shadow() which accounts for SHADOW_PAGING state. bloat-o-meter add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-290 (-290) Suggested-by: Jan Beulich Signed-off-by: Grygorii Strashko Reviewed-by: Jan Beulich --- changes in v2: - s/!paging_mode_hap()/paging_mode_shadow() xen/arch/x86/hvm/vmx/vmx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index d7efd0a73add..67861bc8bccf 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1514,7 +1514,7 @@ static void hvm_shadow_handle_cd(struct vcpu *v, unsi= gned long value) =20 static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value) { - if ( !paging_mode_hap(v->domain) ) + if ( paging_mode_shadow(v->domain) ) { /* * For shadow, 'load IA32_PAT' VM-entry control is 0, so it cannot --=20 2.34.1 From nobody Sun Dec 14 23:24:16 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1762527928; cv=pass; d=zohomail.com; s=zohoarc; b=AlD56L10cyuRCN8v9JNSgnZ7ZQQnZL/+8QoiaNDdyd7w3ByO3DUI0o8Xa+lpVVCGcfAwQyINRWd/d3lGQvWGie/oUVtfBUaoMYv+cmYlERCXhOyhOX9pSzVbwVweBV4gt/gy17SLmZWs0UeP2Z3HMR4f3UTrgSoXlyVUgvFIF64= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762527928; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jgSg04VTwELxGBtpkailCzDMtsJ8p2BN93jiaDfig1c=; b=Vcu27EvckqEsNBjdTyXxxBuZe1Lpms+qvBs9juR8d25eETkOoU8B58huucBYCStF1NKzqxWXokhGtt+Gq9gSo/jAnCDXHuy9tB32Vh4sHO93CGk9I0pg4j35zFt7tXAJsy68oSVe4Xur894A3GSWZlSFPKI1KRixAg7zrJTMHls= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1762527928923441.22071607459804; Fri, 7 Nov 2025 07:05:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1157666.1486388 (Exim 4.92) (envelope-from ) id 1vHO1U-0008EZ-BN; Fri, 07 Nov 2025 15:05:08 +0000 Received: by outflank-mailman (output) from mailman id 1157666.1486388; Fri, 07 Nov 2025 15:05:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1U-0008EO-7o; Fri, 07 Nov 2025 15:05:08 +0000 Received: by outflank-mailman (input) for mailman id 1157666; Fri, 07 Nov 2025 15:05:06 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vHO1R-0007Wa-UM for xen-devel@lists.xenproject.org; Fri, 07 Nov 2025 15:05:06 +0000 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20f::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 238f2d42-bbeb-11f0-9d17-b5c5bf9af7f9; Fri, 07 Nov 2025 16:05:03 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by AM9PR03MB7605.eurprd03.prod.outlook.com (2603:10a6:20b:419::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 15:05:01 +0000 Received: from AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593]) by AS2PR03MB8907.eurprd03.prod.outlook.com ([fe80::804:c187:252a:9593%3]) with mapi id 15.20.9298.010; Fri, 7 Nov 2025 15:05:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 238f2d42-bbeb-11f0-9d17-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zP2ELMR329gCGgI9wMOaFXtotby9FgtsYzAT14L+Fm3MNwJ4kx5jmqgoXszZjXyYw+b35gabecf9FiKYkyRPo4aP2n8+R3FJ0Ard4D+FuvBePb26huKby73/Xu771t2I6YRrtH+OxhZfKFJBFE0r2hru6z4uPD9QSGdTp1Z5u13yYJBMufuGRt5Dscog2wZcmSH9gqYLSP5e9AZAEIP+ZP5wQGu+iFzRMejp7WIqOCMJvT5j8N8FTxhwz0c4KV8kIvlQcKUk3FDAe2M+FDwVGE7TJMqHGUzTRwqpabOWLlsFUE32y1qqoPtZMBaP35mz/jOfORUy36bTq3iem9xGkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=jgSg04VTwELxGBtpkailCzDMtsJ8p2BN93jiaDfig1c=; b=s1pe0qGsl61SKJII9UI9+ECWJKvH3BejBHLKIFZvxsSK+MArYW0Q3hMT+4qhVcolwdNksxsaek4AZe7zKcuFo9PoqRUUw5L9U//rNWt95gp+M/3HKvFzrW2ctAiWBbFmiU//Guja6Z7IKTNSwUIFBXHRwvvNtOdeTtXkX/gdiYgIbLyQpRW6n0h5ehxUtch78qq8+tUqGD8/06J9gkJtNFsS6qDMol7SIw4etG+/HNIKFnyFkuX8Ij/+M718Q8XX81CrXrP3Ml+MDTIKYJyd6hVPc7EQG4LfKDIBOhp9z442h4U7Wltkp/nxxlLuyYhMLnXkCk8nsYoHpHjXQ+ANnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jgSg04VTwELxGBtpkailCzDMtsJ8p2BN93jiaDfig1c=; b=I7djVyUos2vyi+uVB2CNaj6TUtfHEPbYwB8lgzjuzNxIknGXFy8czJqBZEXFbpr3qI3jY6682nglPulynzlI52TlwqSVXlcxlUSD7kneyuJ0TwiKX0IHrqWR3NYm8ynagkWMOOE+KPbIbG+zooO2ctW/Nlco+5k01mwOaafg+3QsNhk/lRXWJdqOLebg6KW/9R+jFXUs1CmhW5yZDgOMh2nU53UhgKlHmcSq5/3slEmKZsvoD40DvyrOndc0aRWT3LhcyoVlk3wr8kbF7ZHBfFfSYMCYXfu5BcHgqkD4M6XhxKn7rUbq+KUQZ7E8bHyjGPcSax6a2iyWf7mn9GEnaA== From: Grygorii Strashko To: "xen-devel@lists.xenproject.org" CC: Grygorii Strashko , Jan Beulich , Andrew Cooper , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Tim Deegan , Jason Andryuk , Teddy Astie Subject: [XEN][PATCH v2 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Topic: [XEN][PATCH v2 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Index: AQHcT/fjyqxpZv5UYEyu+2eXf1BscA== Date: Fri, 7 Nov 2025 15:05:01 +0000 Message-ID: <20251107150456.2965906-4-grygorii_strashko@epam.com> References: <20251107150456.2965906-1-grygorii_strashko@epam.com> In-Reply-To: <20251107150456.2965906-1-grygorii_strashko@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS2PR03MB8907:EE_|AM9PR03MB7605:EE_ x-ms-office365-filtering-correlation-id: 65eba2bf-3ba1-41c5-3649-08de1e0f065c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?tKR8MNU+GmIzg/b9r7CL9rWLipJ0qgFCf0WvoWSPF/GYAbYna5JEuFXa5c?= =?iso-8859-1?Q?pp1KvTaVacsPailDIvr+jp81h4eUMli1hUQErQu4v5zUGY6JHGPfNueXrU?= =?iso-8859-1?Q?LNUAMa6DmNsha6azzD+5pAujUvcKT8UF0SWrkg92lqQdIo/ns1EeRen0la?= =?iso-8859-1?Q?qEcBzGx1avXFtDTKw3CdMEPl9tLy961P8DGlGJsL1zFrRzZu0+cdOfd5LA?= =?iso-8859-1?Q?8gIytuMcDNqJKzZ5L3EGoenvmFD5jSVQdLm8A/xUO6s/CW2b5t1IFhLjFb?= =?iso-8859-1?Q?FyYHAZXasKKaCxgVo+P9BwBzRSkwGLsFfHmTtGhSuLPhKu1a4kXvW5xom0?= =?iso-8859-1?Q?6DN1GsZ6QIFxiipVbAYldbAswBpphNJAdZbJwbioObC5oYoVPWPfyhDbWt?= =?iso-8859-1?Q?hs5vgT29tIwrtP1WMdITVATesib4kRMqfgP0BJBsdkY4g0WaEEdG3u5TPf?= =?iso-8859-1?Q?5qQMpbAHdVyWyQock7v8aT99Sxp6NqS0IHsYR/npwt1XIz8WohhcqJMxrk?= =?iso-8859-1?Q?OCULOKywv+fAWSRhEzltUFcCb6iVahuyZeWaLucpyxu1856sgrfuj6R2B3?= =?iso-8859-1?Q?QfOjxK7n47wZcCNQvGmUDySk1L0F6T45h8bWC328tSTxgNbiw6wBosxHcw?= =?iso-8859-1?Q?v1aB4kox6VvPUMn9Hg6UpXj5EMxjEZbmy8/Bp9ORo0OHrq5M7pah/9deeC?= =?iso-8859-1?Q?jEK1CTRUZfzZX/aVJ3WGnN4SOOOqFQYqaZYNuISo5ZPtL1aMqF7gFdCRQr?= =?iso-8859-1?Q?wenQkPn86knb+Gqjhn96K6LcOeWsFiJ4rsvw06sjMom04PrUk6fvY0dVQP?= =?iso-8859-1?Q?wcKFvGon2/IuIk/wNSz0Y6EgtOJupfDyVpzetn8z9kIVrbJacyxqCKyjmN?= =?iso-8859-1?Q?uktgv0+DbYUkbZAgRrnrDPAx6kqtTdyu16exTSQQeB8kqiU0BdweZeg8Xs?= =?iso-8859-1?Q?M2/w9kfaBkF1tX49iqOFhdG2c6O1W2h3g29X2gVVUCbd9o6EnLQ7ATXXF2?= =?iso-8859-1?Q?tb0xCAQMTiU/HYTdrFxp3N5aA8y/ipr+yu6hzh3I80mnUZudp5i+/e8opZ?= =?iso-8859-1?Q?T0jB22lb8Lnr3tEB79LT/SN5jiIBGires/Chg368yNYuNXfmy/ZE/fFHcL?= =?iso-8859-1?Q?dJgZYevu9qTnX1Ezs6KKQYQ9KRajNc+WmbY3nPwJpE5vRIjtDE2UgtT8iG?= =?iso-8859-1?Q?xmHn8hjXjwF9TOzKeEMdLz4HAudfXdbFyrdk4jp14XN3Rw6I43DjeX11xb?= =?iso-8859-1?Q?K/fBdEm5cbZqKKCBxLP19dCq2keR4RXESyOiL+kDFcZ95uUEv5Wf7k5ilh?= =?iso-8859-1?Q?XFEplF80ze0DcCgBzw+3Mi780G+dHWYrV0xm+F9n+aWg/7HMTW7IU2V0w2?= =?iso-8859-1?Q?3HWFRjG1SW1kZHjBvshNF9YT3nj0KkNb19JdM5ZZgMzByVC+qmIJ+hdvMk?= =?iso-8859-1?Q?uZBkPIZhs46u3I+2D1uQKY+3+cdMNTodc+oRYPeF23B4j2sNCBjscKLhLc?= =?iso-8859-1?Q?DNy7bQUJJJAg6Jb+DHN47dvtRsklcL9FhT5rHDjSHPvXqCU1k8KO4QVVVf?= =?iso-8859-1?Q?tjQXujx3XTMjO6wnlJUIwRwXNkf6?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB8907.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?thv7xRbkl1rb333ajwXCR6FAt9AVU8vjB5EleMYhHhFnEjEy3vEOLjfNEX?= =?iso-8859-1?Q?4w8QunFVmIlfPfHSveWKSVXspIsOXOsfoKY3A0uC2k2sh8S0nBFWNeeJaI?= =?iso-8859-1?Q?IpLhmDeprxyhWNuRrmTRxsgQgRSx5nCspZUbOlNX+MaUV1fZtE3My5cq0S?= =?iso-8859-1?Q?W0WZ/FbVUvQJyaCAct4aZA72i6bFvsefI9bRHEoCS70kcE7EnTpI4XjEta?= =?iso-8859-1?Q?4R+36LOMWq23LtHr7xvwHEcQGHkrcOCuUrvAJRKU4Y6DbU+dHCAHCrHbyi?= =?iso-8859-1?Q?sl9/YFEen6KOE7efzf+V1X4t6UIJXWjJxWs+RULxGivhAlGR+Dt9LH1ceA?= =?iso-8859-1?Q?usc/NyHIElC55Yd/p9JodLAh+ggdMZxtlrGMEtQdC4P5duDp5B6PHBUIGJ?= =?iso-8859-1?Q?Ti9V3a1vVJSFPRRskv9hqHXn0L5SK19nmqOESHEPneovGwc3Unt+uzSlaH?= =?iso-8859-1?Q?Gazckb6bv7L4cRY7Vpx+ChoHvB84Et57Z+QW2tWy1Z2cU7Gu+w86HN67ak?= =?iso-8859-1?Q?2kp8JKVt3H0hTchJbaNFJfO5SjR0vg8Tluax7YYwg4LG2VaaaH2vYMCU+C?= =?iso-8859-1?Q?nYxEMy7TL4IjAHPuKy8I6S9ZLrZRu4jWfeyJXV+lUMgGOxqg06HXgK4fh4?= =?iso-8859-1?Q?6+L40Fcs1HuaTQ5Q6G/Agbr9ehq1KBfXT5/WCUvwOeVK/RXiq7psQImNqo?= =?iso-8859-1?Q?PwquaCDMs4hwwC6VOCvHWmYmt+j3+DM/lX4DzmThgoDZ0Wfle5Pu0L3Vtb?= =?iso-8859-1?Q?NmND1g/F//p/fTVYPrTGCrVYAOdpiqifHuUaTzVx8ZWVB0X5N6gd9948fx?= =?iso-8859-1?Q?buXJg0dBn8IGQcM35iDZ3zbTUCyvBP1BUFEi3HCm4tCqvuD5yizzcybyLU?= =?iso-8859-1?Q?ESQxH2uF+l7LI+Y7CaWD1jRuIlVDnLLlqe7sY0i1TKYPMJEzJq+KiGdnLp?= =?iso-8859-1?Q?br6l1PZFFM6VLXPK2SmZ/ttnBjBTSPQPcCSSVVY4/tZIV6Bu393RKHZHAf?= =?iso-8859-1?Q?ZfZOvslEW6JseJx8pKm9se45rjNJ2fMxW+AdXOny+hPBGJu3dw7bAjFtb8?= =?iso-8859-1?Q?v8Nm/ht2HNEmn1Fee/IAqQ/GKIZNxAMvQ8pimJfPzzvnXHlDZlbbaO8nf6?= =?iso-8859-1?Q?a39QVvT1ri4+yoepQw1LKIO97P2FsH+z9S7AZXl0kt+mwiGkPM1EAbGStW?= =?iso-8859-1?Q?mLEJwybV06qjLEgU/yavh4gsHx+Fs32Gx8ztD3t+3tBIC8rP/O2it+ig76?= =?iso-8859-1?Q?yrrtjaM07piRyEAMwCnfzQo2bku+hxeWXJ3Z24Z1xvLSS6TuZs2XXggSuN?= =?iso-8859-1?Q?KZhtX5RWdNSpj15bFUjk+jZU62wbTn9Sp/qlCmYZ0epFTL9mma9pcwIYxy?= =?iso-8859-1?Q?7fqbxGsQLjm24/NCb8rGbMAQiLDR4hUnK2Q+PwCEtLuIMgLrACrdtRRykK?= =?iso-8859-1?Q?bp1eVMQcAKX7makvsUh6+B3pS5PonbvSkRURWB6SBHCwpNgUZvZc72lAsk?= =?iso-8859-1?Q?7R9FVVWMU/jQAIf7ODVti7xLP4TNRATEKLY+BR0BPLUVHJiCe+ERGk7lR1?= =?iso-8859-1?Q?7efcO7zSHoH1zX5QzdWGojm3Rn+CXDaKhD/nmSOu822U0L8E+0j21quERl?= =?iso-8859-1?Q?7v7EjF7NtioWKIpxCjiOha0mXanl9wYeMlgsQraUVLI2KGR+e+LDrv9Q?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB8907.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65eba2bf-3ba1-41c5-3649-08de1e0f065c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2025 15:05:01.2991 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5zOJILz+Uft6dk4Om4hBSUEUhOSF+9trmQnRLkJ0LLPxwccfH+qztW24ENbSnkuDnLdgw1foDeMWy2jJ3/3kEuWQS3oOO2pDNt3oSloIkzo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7605 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762527930911154100 Content-Type: text/plain; charset="utf-8" From: Grygorii Strashko The Cache Disable mode data is used only by VMX code, so move it from common HVM structures into VMX specific structures: - move "uc_lock", "is_in_uc_mode" fields from struct hvm_domain to struct vmx_domain; - move "cache_mode" field from struct hvm_vcpu to struct vmx_vcpu. Hence, the "in_uc_mode" field is used directly in mm/shadow/multi.c _sh_propagate(), introduce the hvm_is_in_uc_mode() macro to avoid direct access to this field and account for INTEL_VMX configuration. While here: - rename "is_in_uc_mode" to "in_uc_mode" - s/NORMAL_CACHE_MODE/CACHE_MODE_NORMAL - s/NO_FILL_CACHE_MODE/CACHE_MODE_NO_FILL Suggested-by: Andrew Cooper Signed-off-by: Grygorii Strashko --- changes in v2: - s/is_in_uc_mode/in_uc_mode - s/*_CACHE_MODE/CACHE_MODE_* and move them after "cache_mode" - reorder uc_lock,in_uc_mode in struct vmx_domain - move spin_lock_init() xen/arch/x86/hvm/hvm.c | 1 - xen/arch/x86/hvm/vmx/vmx.c | 28 +++++++++++++------------ xen/arch/x86/include/asm/hvm/domain.h | 6 ------ xen/arch/x86/include/asm/hvm/hvm.h | 3 +++ xen/arch/x86/include/asm/hvm/vcpu.h | 3 --- xen/arch/x86/include/asm/hvm/vmx/vmcs.h | 13 ++++++++++++ xen/arch/x86/include/asm/mtrr.h | 3 --- xen/arch/x86/mm/shadow/multi.c | 2 +- 8 files changed, 32 insertions(+), 27 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 9caca93e5f56..c09fb2ba6873 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -608,7 +608,6 @@ int hvm_domain_initialise(struct domain *d, } =20 spin_lock_init(&d->arch.hvm.irq_lock); - spin_lock_init(&d->arch.hvm.uc_lock); spin_lock_init(&d->arch.hvm.write_map.lock); rwlock_init(&d->arch.hvm.mmcfg_lock); INIT_LIST_HEAD(&d->arch.hvm.write_map.list); diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 67861bc8bccf..12748298c10c 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -590,6 +590,8 @@ static int cf_check vmx_domain_initialise(struct domain= *d) */ d->arch.hvm.vmx.exec_sp =3D is_hardware_domain(d) || opt_ept_exec_sp; =20 + spin_lock_init(&d->arch.hvm.vmx.uc_lock); + if ( (rc =3D vmx_alloc_vlapic_mapping(d)) !=3D 0 ) return rc; =20 @@ -1431,7 +1433,7 @@ static void cf_check vmx_set_segment_register( static int cf_check vmx_set_guest_pat(struct vcpu *v, u64 gpat) { if ( !paging_mode_hap(v->domain) || - unlikely(v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) + unlikely(v->arch.hvm.vmx.cache_mode =3D=3D CACHE_MODE_NO_FILL) ) return 0; =20 vmx_vmcs_enter(v); @@ -1443,7 +1445,7 @@ static int cf_check vmx_set_guest_pat(struct vcpu *v,= u64 gpat) static int cf_check vmx_get_guest_pat(struct vcpu *v, u64 *gpat) { if ( !paging_mode_hap(v->domain) || - unlikely(v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) + unlikely(v->arch.hvm.vmx.cache_mode =3D=3D CACHE_MODE_NO_FILL) ) return 0; =20 vmx_vmcs_enter(v); @@ -1462,7 +1464,7 @@ static bool domain_exit_uc_mode(struct vcpu *v) { if ( (vs =3D=3D v) || !vs->is_initialised ) continue; - if ( (vs->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) || + if ( (vs->arch.hvm.vmx.cache_mode =3D=3D CACHE_MODE_NO_FILL) || mtrr_pat_not_equal(vs, v) ) return false; } @@ -1472,7 +1474,7 @@ static bool domain_exit_uc_mode(struct vcpu *v) =20 static void hvm_set_uc_mode(struct domain *d, bool is_in_uc_mode) { - d->arch.hvm.is_in_uc_mode =3D is_in_uc_mode; + d->arch.hvm.vmx.in_uc_mode =3D is_in_uc_mode; shadow_blow_tables_per_domain(d); } =20 @@ -1483,10 +1485,10 @@ static void hvm_shadow_handle_cd(struct vcpu *v, un= signed long value) if ( value & X86_CR0_CD ) { /* Entering no fill cache mode. */ - spin_lock(&d->arch.hvm.uc_lock); - v->arch.hvm.cache_mode =3D NO_FILL_CACHE_MODE; + spin_lock(&d->arch.hvm.vmx.uc_lock); + v->arch.hvm.vmx.cache_mode =3D CACHE_MODE_NO_FILL; =20 - if ( !d->arch.hvm.is_in_uc_mode ) + if ( !d->arch.hvm.vmx.in_uc_mode ) { domain_pause_nosync(d); =20 @@ -1499,16 +1501,16 @@ static void hvm_shadow_handle_cd(struct vcpu *v, un= signed long value) spin_unlock(&d->arch.hvm.uc_lock); } else if ( !(value & X86_CR0_CD) && - (v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) + (v->arch.hvm.vmx.cache_mode =3D=3D CACHE_MODE_NO_FILL) ) { /* Exit from no fill cache mode. */ - spin_lock(&d->arch.hvm.uc_lock); - v->arch.hvm.cache_mode =3D NORMAL_CACHE_MODE; + spin_lock(&d->arch.hvm.vmx.uc_lock); + v->arch.hvm.vmx.cache_mode =3D CACHE_MODE_NORMAL; =20 if ( domain_exit_uc_mode(v) ) hvm_set_uc_mode(d, false); =20 - spin_unlock(&d->arch.hvm.uc_lock); + spin_unlock(&d->arch.hvm.vmx.uc_lock); } } =20 @@ -1549,11 +1551,11 @@ static void cf_check vmx_handle_cd(struct vcpu *v, = unsigned long value) =20 wbinvd(); /* flush possibly polluted cache */ hvm_asid_flush_vcpu(v); /* invalidate memory type cached in TL= B */ - v->arch.hvm.cache_mode =3D NO_FILL_CACHE_MODE; + v->arch.hvm.vmx.cache_mode =3D CACHE_MODE_NO_FILL; } else { - v->arch.hvm.cache_mode =3D NORMAL_CACHE_MODE; + v->arch.hvm.vmx.cache_mode =3D CACHE_MODE_NORMAL; vmx_set_guest_pat(v, *pat); if ( !is_iommu_enabled(v->domain) || iommu_snoop ) vmx_clear_msr_intercept(v, MSR_IA32_CR_PAT, VMX_MSR_RW); diff --git a/xen/arch/x86/include/asm/hvm/domain.h b/xen/arch/x86/include/a= sm/hvm/domain.h index 95d9336a28f0..83be2bd1c29c 100644 --- a/xen/arch/x86/include/asm/hvm/domain.h +++ b/xen/arch/x86/include/asm/hvm/domain.h @@ -97,12 +97,6 @@ struct hvm_domain { /* VRAM dirty support. Protect with the domain paging lock. */ struct sh_dirty_vram *dirty_vram; =20 - /* If one of vcpus of this domain is in no_fill_mode or - * mtrr/pat between vcpus is not the same, set is_in_uc_mode - */ - spinlock_t uc_lock; - bool is_in_uc_mode; - bool is_s3_suspended; =20 /* Compatibility setting for a bug in x2APIC LDR */ diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/= hvm/hvm.h index 20b373cea6fb..728b9624522f 100644 --- a/xen/arch/x86/include/asm/hvm/hvm.h +++ b/xen/arch/x86/include/asm/hvm/hvm.h @@ -394,6 +394,9 @@ static inline bool using_svm(void) return IS_ENABLED(CONFIG_AMD_SVM) && cpu_has_svm; } =20 +#define hvm_is_in_uc_mode(d) \ + (using_vmx() && (d)->arch.hvm.vmx.in_uc_mode) + #ifdef CONFIG_HVM =20 #define hvm_get_guest_tsc(v) hvm_get_guest_tsc_fixed(v, 0) diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm= /hvm/vcpu.h index 9ed9eaff3bc5..eae9ac53767b 100644 --- a/xen/arch/x86/include/asm/hvm/vcpu.h +++ b/xen/arch/x86/include/asm/hvm/vcpu.h @@ -168,9 +168,6 @@ struct hvm_vcpu { =20 u8 evtchn_upcall_vector; =20 - /* Which cache mode is this VCPU in (CR0:CD/NW)? */ - u8 cache_mode; - struct hvm_vcpu_io hvm_io; =20 /* Pending hw/sw interrupt (.vector =3D -1 means nothing pending). */ diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include= /asm/hvm/vmx/vmcs.h index 53aa9e3556d3..d28a2682e9df 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h @@ -46,6 +46,7 @@ struct ept_data { =20 #define _VMX_DOMAIN_PML_ENABLED 0 #define VMX_DOMAIN_PML_ENABLED (1ul << _VMX_DOMAIN_PML_ENABLED) + struct vmx_domain { mfn_t apic_access_mfn; /* VMX_DOMAIN_* */ @@ -56,6 +57,13 @@ struct vmx_domain { * around CVE-2018-12207 as appropriate. */ bool exec_sp; + /* + * If one of vcpus of this domain is in no_fill_mode or + * mtrr/pat between vcpus is not the same, set in_uc_mode. + * Protected by uc_lock. + */ + bool in_uc_mode; + spinlock_t uc_lock; }; =20 /* @@ -158,6 +166,11 @@ struct vmx_vcpu { =20 uint8_t lbr_flags; =20 + /* Which cache mode is this VCPU in (CR0:CD/NW)? */ + uint8_t cache_mode; +#define CACHE_MODE_NORMAL 0 +#define CACHE_MODE_NO_FILL 2 + /* Bitmask of segments that we can't safely use in virtual 8086 mode */ uint16_t vm86_segment_mask; /* Shadow CS, SS, DS, ES, FS, GS, TR while in virtual 8086 mode */ diff --git a/xen/arch/x86/include/asm/mtrr.h b/xen/arch/x86/include/asm/mtr= r.h index 25d442659df2..3a5b4f5b6eec 100644 --- a/xen/arch/x86/include/asm/mtrr.h +++ b/xen/arch/x86/include/asm/mtrr.h @@ -7,9 +7,6 @@ #define MEMORY_NUM_TYPES MTRR_NUM_TYPES #define NO_HARDCODE_MEM_TYPE MTRR_NUM_TYPES =20 -#define NORMAL_CACHE_MODE 0 -#define NO_FILL_CACHE_MODE 2 - #define INVALID_MEM_TYPE X86_NUM_MT =20 /* In the Intel processor's MTRR interface, the MTRR type is always held in diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 7be9c180ec43..03be61e225c0 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -559,7 +559,7 @@ _sh_propagate(struct vcpu *v, if ( !mmio_mfn && (type =3D hvm_get_mem_pinned_cacheattr(d, target_gfn, 0)) >= =3D 0 ) sflags |=3D pat_type_2_pte_flags(type); - else if ( d->arch.hvm.is_in_uc_mode ) + else if ( hvm_is_in_uc_mode(d) ) sflags |=3D pat_type_2_pte_flags(X86_MT_UC); else if ( iomem_access_permitted(d, mfn_x(target_mfn), mfn_x(target= _mfn)) ) --=20 2.34.1