From nobody Sun Dec 14 23:26:09 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=1761782128; cv=pass; d=zohomail.com; s=zohoarc; b=HAdqA3o9yx3XnFp2AqsdFUHGT2hYTSqwcxFrxyJLd7hx7RWn6xb3a4MbwKOlCbizjkRmex0j5p+pve4494B/1g73PO8Uuv4bw4LptPvwdow+gNSqvh0cjBwXfCw/SyeqWpenMrHD45Ry4s154V9w4AxFmIDM6ABEHD6Ia+LA7mU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761782128; 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=6vYktPG7/nwlYkKa2a3rArYpths8kX5Wcbe3ZIUmiVQ=; b=UhwxDhnlg26xxYNBUUHS0lMHiL+Z3d2THAMIVa3vYuriXo7lUX7PJMj8K6pQzEN98m+4Rbu/q1qQJToBlrwVg76C8ngwuTBETqilyIIiaMrtoXaWwE2QceSnOGNoIBIDguf/Gdnr1IOEPkfOe3IrXBd17vqMPIFy2mEDOgS224c= 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 1761782128548271.2038741504674; Wed, 29 Oct 2025 16:55:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1153175.1483616 (Exim 4.92) (envelope-from ) id 1vEG0M-0002Oa-VS; Wed, 29 Oct 2025 23:55:02 +0000 Received: by outflank-mailman (output) from mailman id 1153175.1483616; Wed, 29 Oct 2025 23:55:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vEG0M-0002OT-S8; Wed, 29 Oct 2025 23:55:02 +0000 Received: by outflank-mailman (input) for mailman id 1153175; Wed, 29 Oct 2025 23:55:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vEG0L-0002OI-KH for xen-devel@lists.xenproject.org; Wed, 29 Oct 2025 23:55:01 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id acc052ea-b522-11f0-980a-7dc792cee155; Thu, 30 Oct 2025 00:54:58 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by VI1PR03MB6336.eurprd03.prod.outlook.com (2603:10a6:800:139::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.15; Wed, 29 Oct 2025 23:54:54 +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.9275.013; Wed, 29 Oct 2025 23:54:54 +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: acc052ea-b522-11f0-980a-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GGm/VnwN1w6Va50pKrafDr9sNb5YZzDOgVNFBpu/DE9I9F2BqJdyOFamC01YT3BsPye/h5lSSCzs2L41d7f0LVcyk31ETqgKbXNNG5yowHnvcGRKzUdMwzw3lvPzO41BNlKcNg+RVUoza13e6mvRe4uKPto8QlD+IWfz0FlalwuUpcmEXcJfPrltt9Hh/vWp8ILd2UAGXO5lb5+/8+5fLcUvcT1GA4CqPcmqu6NIS/6qnMir+5HoUOCFXZ1HntsnxBzfKhQahFEqtdgDgoYpv2SrjH+dSEI33HvgUD608L/dQKlTVhDU39pu45ZudPgqaqf9MC94s1cCr9Hw8sDrpg== 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=6vYktPG7/nwlYkKa2a3rArYpths8kX5Wcbe3ZIUmiVQ=; b=rmG11KwCxQvKcuryZKT3aPnqjIqJUDg8K6mbTLUDE3/2iQj0nGhDew+u77Qzl9a9uSMKnAxEPSvYDWeMEajF/wLxHRgGLS28d1szPQV4j1cclWOPB347f6tBNVbCKziPbXGFpi5MfJay6Z8gUtq6ShOvdTVxC8I1mpgoU5L70aLrTeVvX0VK0RZiFNUTPYlOp2QwGszvY3teYjgEPvjEfljKqP36/WPj5zcv8EBcepLYdARxhGQw0Ka9LJG+CdUpH5Ev9j2CPIzsLI459hl/2HKGLHw0yZN3wGGyBy1TjpQ71eCnG54JnWaf5excCxpcYquhyYjBwsO0leOIGBqWRQ== 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=6vYktPG7/nwlYkKa2a3rArYpths8kX5Wcbe3ZIUmiVQ=; b=JzHBiYXvBWUo5ZbEo66agvO2iZnmN1nOAm4qr024GVaZgr26Oz90/UepgMb/YztEFXGFWelzISHm6eUFPvILGB1rkMoPNyaT6M1XiTZ1RsO4yU61p7uxMq8RuCLLmxwrXY/GX9T6ZoL71mnqmkacLORMl0McSi6YUiU7ppffNDQ6rpIv1rRfXqrwYCy0aMwED9bQnmukvaGQj6ye1SV7HqoO0RF7NWcmGNLfGHVSjc7JOGtjPyobiYop4vpg+zs68Otjkf5Zy4eSGhIu46A6lyS2qaXcdqAhOTV0IOqQv3b5BuB5j5m87ALjYYTKcuQVC52zpemnmcgleBObGHH8Nw== 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 1/3] x86/hvm: move hvm_shadow_handle_cd() in vmx code Thread-Topic: [XEN][PATCH 1/3] x86/hvm: move hvm_shadow_handle_cd() in vmx code Thread-Index: AQHcSS9r8alwr4OxGUujyvJHVPESBQ== Date: Wed, 29 Oct 2025 23:54:53 +0000 Message-ID: <20251029235448.602380-2-grygorii_strashko@epam.com> References: <20251029235448.602380-1-grygorii_strashko@epam.com> In-Reply-To: <20251029235448.602380-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_|VI1PR03MB6336:EE_ x-ms-office365-filtering-correlation-id: 1a5bce11-9fd7-4abb-170e-08de17468ee1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?LZeFzNsaIJBoTCOXegExubkfkRYB6Y/smCTVvsOwLmV/FUDwzcG9eQ+r8Q?= =?iso-8859-1?Q?Yyg2udo3sOMWpGanOmriJdWwbmu+guNea9qqjl5PJF7iOKb7grSADzZ3+8?= =?iso-8859-1?Q?eXWLJbToX/hVJKatVlduZ+XE9c/9XbTcwTi1u74+NlTmjbHezpBo3xQ2cF?= =?iso-8859-1?Q?FPO9MYkzAHENL0WvQnqvWgtw2fDdV19Jj53KiLKY1wBaWXHw93X/p+JFyP?= =?iso-8859-1?Q?VpjWgsAoOPtLt7Mu8CaXsHpAlen+PNqbUWztRxucRcNhjj32c4l6f+HppO?= =?iso-8859-1?Q?0rVCKcxzgoWOOWXWiqyN8OLYIf6z0Q+v5cMI5PRMUhhUZudqaqav5Jrs0d?= =?iso-8859-1?Q?udGswAYl61Os9pYh2u53/mtfyGnnxW7wnv/kpfn+6dS9hj/0bM/V/AKtUr?= =?iso-8859-1?Q?N+0ZcTg586wUXOtbeQLAX5T6vkCDg4dGBycHf5zgHpKyRWmvVffmCdYJJh?= =?iso-8859-1?Q?ZFo6pgE5CxR/pBTtvLPOsK+hkcM3EnpR+z03ZpSX6ztbrtXrfh/GjijBY5?= =?iso-8859-1?Q?uBm6J9DTcLikR/IkX9yT61BV9mKp54pqns+eZmnpHy+2/uta+utV9f2kLc?= =?iso-8859-1?Q?vK88VnEv+Qb3VZJDn4LRvKnfYpQ2wjE6jwVoLCsQNQB3oNI+SxNildcG2e?= =?iso-8859-1?Q?75A6QWWYgBZ65Z3bXpgKRWjXqW2jSiwUqiB/KwCcUcTaONDAYz0uBk0FJw?= =?iso-8859-1?Q?v3iYWGvcqtQzKWFd9hM5ADFQvaV5Lk5mnC9voO33iKVtZAA+qCmT4BIzOa?= =?iso-8859-1?Q?0goZ1AIBO+Q5D+rdIpifvpQRYL5Od0UVGS532llWowxlZajxtNVNal9hHq?= =?iso-8859-1?Q?sl5UOugXUES2YHIwUPk0xRgSNRtXh9fWz+cYgRHnvw/jfOu25zOopU6K+0?= =?iso-8859-1?Q?iVz1kpG1nVMdc2nlFhWo4PC0ToMn9/Wwa67fypCQtJM86MZ/EJrUL2/Z5a?= =?iso-8859-1?Q?fwP6WU3e/qOzSUDx+ZKEZOK21nO9rnX3YMuL/QFIVLDYBCCN+dzvek9tlj?= =?iso-8859-1?Q?1QvGTUlkY6r8tP2VcmO4VgJW6e17cK0doi57/6olP/KfO8EI1eDGeJds7g?= =?iso-8859-1?Q?49Z78y68++6xoQkaELXJHVtBnCYWhBPYjcQnfkhSNqh3TlPSg54Ioajk8H?= =?iso-8859-1?Q?uPHGhHEYh/0iN91+ED2yk0JyKNuyXGuRSWK4ILoOSIl+I/fkjWvTW07pMD?= =?iso-8859-1?Q?+rucJ7asMwfmvmAJp2zBpNonSLjP8N5hEBhwiypnkNHyWUJNk2O1k13x+n?= =?iso-8859-1?Q?N4LtVHg/A95mUlvav5JHyCdpM62EsJWEToH1PmpxOVqcPYsviEJ0nb3x+R?= =?iso-8859-1?Q?Xlxqb1SeKvzh5qJr+7FqzneUB+F5Uqklw0i/v/Ix/sRA7ihpjfSMeMmZ6f?= =?iso-8859-1?Q?9kx8y3OObd7WVpTAyMy8vIZhFg27IWbr9YqK3tCXkaO45LKKhmFhhfvxCm?= =?iso-8859-1?Q?PvZ37h/vamV9cwHlRCEH0RAMG782TR6XcZBHArjuEvSZHeSkWyeXQz+pK6?= =?iso-8859-1?Q?9dZTsJVxbmP+HFnhYVQJE7O8YU8CNfKOp+oHAxAUGlpW4Lnk/MUL3dekPF?= =?iso-8859-1?Q?m0VF5YSnIdY1JtZWYTtuwjglTaSX?= 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)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Ws/0G7uhLmatR0H3p3bduVLyWgoGXhlgqeYjoGPVMqRKk6Uk2FM9VldUT/?= =?iso-8859-1?Q?NpPH2LO+GBx9VP8u/CWwgBDGkRyqY7YqBL5SvHHsUXxv5rQXcKttx7+FTD?= =?iso-8859-1?Q?JLVY6X5DbRJNti7i5cvMkSHaa4fNLgRaqbFLosk5n6MyoiZp4Dlfe5bPjY?= =?iso-8859-1?Q?uP74OaNVOQLzY2B0DEJPJ+9RAnAOmu6im36il5uteF8zyLISyM5xm3OkqB?= =?iso-8859-1?Q?nOEBY5D6bWzHB1adK+9Bh4gZje4SeK2tf0ietW2ji9bsYSyQD6O3sQ22Dj?= =?iso-8859-1?Q?oUBHEV14ckzSNmEMvtdPMjLlDiuVHFl31UvACKGvxv9QUZqcf/26b8vw6U?= =?iso-8859-1?Q?LdjP3FUgmxVzOOoYte97jdDptZP6P//Ax4GTmkHHNKInvb8cB8jJxvnsV0?= =?iso-8859-1?Q?H3YU4BJgwf1VjYCdhQIieV4UnUWe0lT0+1xuD/naf/5syawmDdsKQlMPJy?= =?iso-8859-1?Q?rkjcAPOMmp1B5/gLuAJTT9fFx9yEHlSB40S1blqdkcGaOteXuWIucJRY0m?= =?iso-8859-1?Q?hTBbPN8MKt9EUlrZQyRACLZW2uj3pSA85p5wL5rAHygFtT4wteqFa+16sS?= =?iso-8859-1?Q?GOQ6VOK8lvtbv+af4G4S4Quk3mjUGnM0Wp9NTQiMLCxlr5qWAGXxDzg628?= =?iso-8859-1?Q?1UjINW4WgGu2GtlB4uv8yYEq3vjmtUWmyMP2uTv+wJNZthMrxLXy/Z58Jt?= =?iso-8859-1?Q?+w8fgHKzbxtUN78FSxvTstcRMh+RjAVbBxBem/s+4Mfw9RqA1zDxgyNAlL?= =?iso-8859-1?Q?FohgdPBKBYMp3G5409i4Gpa+ZQVS5WIOLCj2Sjo2yEeo1WWyV3yxGgQlKP?= =?iso-8859-1?Q?ZdV8WRaY8+G++ArDOB3wUe/VIQWtwyXWDFq/snfwPVH+fI/Av9bv5MKREq?= =?iso-8859-1?Q?xSGcHeU8ErG/obsLJYB37EESE+hmxYffyqdVYfb/omRyUJITaV95ta7Ard?= =?iso-8859-1?Q?qfwLLPcHt9EvsGee4Kjg7Zuz/B5m84/aufE/v1YJi8Uz8rmM81PdesvWhq?= =?iso-8859-1?Q?IbBo913eCy0Fe5KHt5XiK8HBP6sqbDJyQ9/wpRLAdlcV043kNxi5AudZPi?= =?iso-8859-1?Q?Y4pbruUgEZm0kA2scI6FXV4rIqSzPYhODf0wv+xwN/9XKM6NQWFq15UBoP?= =?iso-8859-1?Q?Mhkg/B45qZcRJhCmTXn35Aw0e5RQ5vA4Y/Z0S1XgXXaawjjsMRttkYPR4S?= =?iso-8859-1?Q?2nOx9cS8IZT5clGzpKoP/WoX/IyiNClxSsJ8rgaMwwcmUvkJ+I/xZ9SS2N?= =?iso-8859-1?Q?VAECC3RQ9NHf9keeWUyr7YFRS6L7IS36VmMuzmACMFT6MC+omobgb8PYFK?= =?iso-8859-1?Q?PzUqmMZCr+4jPBWvt+wBfMM/leaVYfygOEr5/YaDAtwRGWTofrJDBDKjKI?= =?iso-8859-1?Q?UONJeDw4XtJzu/j7XKLmG7mqbpJVPHptSlB5SIpySBpaKOCgs4W6+KUnQs?= =?iso-8859-1?Q?jgciKz4/6KVXxoV4HMvCag4RQnnp91AkDgr2U2HGZybVqBNa2DLGRgbr8v?= =?iso-8859-1?Q?ZF5bEd1IFRI0Fol3YiXubvQ6o/CL6ge9PTIeE/xpVgHZOtBZiCtbhzshN8?= =?iso-8859-1?Q?ivojMECJ6WGMLmFi7sHK26YNt64KleAquqEqb/v325mmua7HY+s0vFG7Rf?= =?iso-8859-1?Q?V3dWpO82FZGgstS5e8xVemeJnxT3G7eDGtpkp3HlKx+R/sWBlG8bl0XvwH?= =?iso-8859-1?Q?mxmxWK5oQIEb7Da6xYY=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: 1a5bce11-9fd7-4abb-170e-08de17468ee1 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2025 23:54:53.2748 (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: zstcxumgJ31Jq1/dtwdKZZJyRoluiBAQksEiK4hJ/U/tpNQXQ0Gf+BPuZDYb/KoTylGLbO/pCpOofSO4aRZNNnjKiphHV7DxxAoOxUTYJh0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1761782131146154100 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 in VMX code. While here: - minor format change in domain_exit_uc_mode() - s/(0/1)/(false/true) for bool types No functional changes. Signed-off-by: Grygorii Strashko --- xen/arch/x86/hvm/hvm.c | 58 ------------------------- xen/arch/x86/hvm/vmx/vmx.c | 59 ++++++++++++++++++++++++++ xen/arch/x86/include/asm/hvm/support.h | 2 - 3 files changed, 59 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 e2b5077654ef..a7ee0519957a 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 @@ -1421,6 +1422,64 @@ static void cf_check vmx_set_segment_register( vmx_vmcs_exit(v); } =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 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); +} + +static 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, true); + + 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, false); + + spin_unlock(&v->domain->arch.hvm.uc_lock); + } +} + static int cf_check vmx_set_guest_pat(struct vcpu *v, u64 gpat) { 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:26:09 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=1761782130; cv=pass; d=zohomail.com; s=zohoarc; b=RkmLwgQY+fjt2vGyb6QmayKXHJ/pBsp9QnLLrQ773Nmpk5Ssv9n+KVQ4JihXVRXzRkgMdl2lcofhsgCQf/WXKJotf2SP4z3fJA8AYXOleGeALcKJuxkH5AKomzBuvuiKvI/EIm0Cjp4PpUBnxtgrdaWyvdS4mg2vvcLnOePuwiQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761782130; 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=CW854e/emRIA+lob0OlKUhQFAX79JYtdj6gRsLxNMYM=; b=n28dQgnaMPgONAaTHSKIU5xvjryVg9YxD48DDSrVRiutVlNfv79bs4Uu/nIk1+Kc5VM2DSQtDwMdFAfzK9AqS6CLw8EAnsUSgVlGA9F0j1WkkqOe7WlrZFtVJyJ8vLRxPaX7dMTKcjenv6CCiKT48mgaE8wsQASlREXGp4QyZL0= 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 1761782130345589.6691735754541; Wed, 29 Oct 2025 16:55:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1153177.1483636 (Exim 4.92) (envelope-from ) id 1vEG0O-0002pb-CD; Wed, 29 Oct 2025 23:55:04 +0000 Received: by outflank-mailman (output) from mailman id 1153177.1483636; Wed, 29 Oct 2025 23:55: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 1vEG0O-0002pU-9b; Wed, 29 Oct 2025 23:55:04 +0000 Received: by outflank-mailman (input) for mailman id 1153177; Wed, 29 Oct 2025 23:55:03 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vEG0N-0002OI-F6 for xen-devel@lists.xenproject.org; Wed, 29 Oct 2025 23:55:03 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id aef872f3-b522-11f0-980a-7dc792cee155; Thu, 30 Oct 2025 00:55:01 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by VI1PR03MB6336.eurprd03.prod.outlook.com (2603:10a6:800:139::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.15; Wed, 29 Oct 2025 23:54:57 +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.9275.013; Wed, 29 Oct 2025 23:54:57 +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: aef872f3-b522-11f0-980a-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DcxCSQfGO8gg9C1NU8/p35k35tD+1JgSu48U6Ts+/ie7kjynb5PAMX+tMPZGxi91f7zc8zGHRZoCV/zrZRm+4ANDlG3uX5h5OIAzgKTXSQE1YUMyqCSEE08t8pgb3oXae1cx18BItUcxInM06hkmfW38Dt1570Qw4fTaFA2uC3QzU612S3WJ8ld3nwJ+souv7Zkt2jAiQza/DOdqbEzjGpqIVBLmo01tAkLBz+rwxlq9cV3nQI+jpYklwwjtnE2SYiJeyCSOrQlnaT4hbC+fBWi5t3SHXC3bMi/+zBHjTTwt/vFxoH8GbzxjkI7ha3QtvHYMfqw/ihBGMn8uHh4QZg== 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=CW854e/emRIA+lob0OlKUhQFAX79JYtdj6gRsLxNMYM=; b=M1Ueg5+ruUW/WOyQAIWLZbo4dZefVJQHrCSknxl8m0d1O1vdgAoelQWAky19mT/Bz1FfZFVGK06tRxataThlTN4RK4A+SUUu7ZEcDwP/NtcH2VMl4lxuATKlXz+k6+naSKzhLSqS0q1eyF6jT6Q6hcnc7eWoTlKDMwvTpny4HSbWzODEYcJDXN/kE6UbrsnMPuPLwKBlBL8oFXKS3J4g2E4SHoJAECvNdefIbbWpkLgJmW9rRifeFJFh4wq2KeUqGXmYbHpKFRnBisR2MKQ2VIzraF0H9lc/GwgZuxr9QEx4YR8ruQDi0BxGO9oNLtZIODyLNHmx3H6CQzPahJFWHg== 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=CW854e/emRIA+lob0OlKUhQFAX79JYtdj6gRsLxNMYM=; b=bAg8BOCGI08NBSzEqTDP64vwcxXh7L5FAWrdySeIGcn+S3y7Am5Ihc+lCm+0Rb484M1cZdgHbyj1noGsoxq/TVdphEUeG3IuBadbG4O3NxnjTUSXovXiQYX4av4dWTNwfn6zP9RyOImJaHS/u9X7BYrwOAWDwAwUS791i9KOkrdcZ+XPGq+gtFHpJNWV/6u0njTZO65WJvyabAl2ttbOBGXawZl7GRnidWX9gvUcq4szYQAsgXAPJgHOeMrdCFQeisoHFspcDePuTkelg55XOvMXbZc6MKYP6VSimCEJ/K6AEg4V+qLXkCDyjTG7NcKUwwgO4Ifl7CrQV7LQ+wxRfA== 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 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Topic: [XEN][PATCH 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Index: AQHcSS9urzbDquX9/E6h94nu5/XwxA== Date: Wed, 29 Oct 2025 23:54:57 +0000 Message-ID: <20251029235448.602380-3-grygorii_strashko@epam.com> References: <20251029235448.602380-1-grygorii_strashko@epam.com> In-Reply-To: <20251029235448.602380-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_|VI1PR03MB6336:EE_ x-ms-office365-filtering-correlation-id: 9f56000a-9eaf-4a49-aad6-08de17469086 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?01FMMst9OQXs0jlF6o14b5VlQ3E6onxMZuu0Q6byHaFY+RkGNCPcYa8juX?= =?iso-8859-1?Q?fCg8gDeScP5kSTAIlIjVlbvj8Wi++Oe/n9DW2diBHFdtwkxE0d9l6ijnV8?= =?iso-8859-1?Q?6ClDuE3Vg5itEbTpb50xecoQY9ciqoP8roQb70Et/ZIHURoNTgWfurPnzW?= =?iso-8859-1?Q?dnS3uBRgdyqf24jAo5MdA1AgK3lMK7mppsD7rzDXMobXrc4FiE/GqndtS5?= =?iso-8859-1?Q?UTxy7o2alaIOc0pkTWHmDFuUpO1h4H5XeCwCvX25A9j8vs6XDfrJ4209Ul?= =?iso-8859-1?Q?lD3w2ZksNm5zSDa+pMvdJAiIhNbJ8c53+BmO6OgGfQeiq/7aRkoakXAP57?= =?iso-8859-1?Q?KGdXUqKvv1Y6JHlCVIQVgKoLHd1x+gaTyvlbBUeYjpB+nE01YeI7DKeOhJ?= =?iso-8859-1?Q?Ab7YRfThYwdfR/vBrK6CB0BR0f5o0lXgW4LhbGVcw/aXNCHWAE6J+nXH/l?= =?iso-8859-1?Q?c/5If/drt1+2aB+bigPcs6BH3hWysICvgtv8qcIFoiwuw15YFkiYz3Afeu?= =?iso-8859-1?Q?DnijyJhSeg2S/wBGtjABtJ/vwmp4IIfCOecG2WdciDoxeNB0c8jU9cchwr?= =?iso-8859-1?Q?ni+u4mz15n0WuSAEO1Rv36X+3fG5FbkaXInzgTit+WPiPTqR1ShhAD6Ksy?= =?iso-8859-1?Q?kZrJfwcMdKKrCXVmAD/3f/KLF1aW0TsKg6SgaRrlIBd21ke8Jkw7p5RK9K?= =?iso-8859-1?Q?yJ8iBWvndiQcO1luyT85cN202EAZQGM9kDO7us9x9Piwbco4/quyqgX5eB?= =?iso-8859-1?Q?C/ERr1jKINXftdB/unNvgM4wxSOh3iv+UV9xRlHRFO87xnFTGPE2yGBK4L?= =?iso-8859-1?Q?vaOxBb+6cBZKDSzcdN0ZZFnX6eIWZ7jJIxB+XefdMyq9BvHOpuPqutC5yx?= =?iso-8859-1?Q?Q/l6dWMfIqmhvXsZzX5UM6JNy9lLbeq9rMCqAN47nk0Ygt0SSIuikUOrAH?= =?iso-8859-1?Q?9XBl9tLrolhj4lH9dFlKc0ia/c7w3K60E2Ry8Y16k05QzmdOxkLbdxJAYC?= =?iso-8859-1?Q?MTGL3n0vNAoxbM09bZwgeMFAnENyaQX2HOwg0NHHNveZqamU0/rpjB7pxA?= =?iso-8859-1?Q?q4E/g7zjBQNmmCFY7QAdFWyLO/s7fCfe8bzvb0Z0OVmeCqa558XoOOzlVZ?= =?iso-8859-1?Q?cxWr9IQ/pKrhW2ntgMe01UWl1R+MlvS2Z9xhMGGzSQRYOuUd8dmmPG9M/j?= =?iso-8859-1?Q?abkx6ssp9524m6GlbpMyDQD90CAVx2R5wGs9f5BHRswvufWGM4poQB6Zb1?= =?iso-8859-1?Q?7MOKfHK4STFUWD/fdwkv+82ZMOwpcVImVO+Bi+n3FQGo2z8rv8RcCnyr4v?= =?iso-8859-1?Q?mVsrZNtbYy1BQyiR4hFbqwCDPilvjk0pxiSoCcKfxdx22xyTDYSQb+KYCU?= =?iso-8859-1?Q?xk0olMnOqMJo+kPGyq1fQk45HPp34TrTc4nyPoZ3S//Lc5b2mmnRpXY4bY?= =?iso-8859-1?Q?K8Xj9A0BBsaxd5OCUdmC/jsMvkyYThVRJcT/StN9tzZUTPQX1LYbHi5Hp4?= =?iso-8859-1?Q?GbHwJK3zvB9ldT5n0rBC04oY/NS6qSR2RLUfUds4J6rP6dwpYZQyZsKYDP?= =?iso-8859-1?Q?fKd6kGw9P8Ea1yZZT+DXj46meg53?= 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)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?9bqH/wfW2E7+tsC+D6p3uL+UoRnPQJ6QhjsWeKrlOEhvC/FbmbcJ5vJ6AH?= =?iso-8859-1?Q?Ki1UvM3sM25HGb6AH+r328mGs4epprxolW16gMtvDY7ubZYVAzFAyy5W9Z?= =?iso-8859-1?Q?BmEQaEyLtFBQdW+oHmwDVWC1teXoTHjZyLQlgdr92BhULojJx3rkOFeOv7?= =?iso-8859-1?Q?esxUCgmJgpp21P8NfO6xQPSl5Eb/WiCvsl5LQZ6NyS3rHKF2TeaOvjrDnv?= =?iso-8859-1?Q?RBITn12uCMJ/NLocMIH+RclY1hgvkHRMuJwD7qJmOndVESpQqJNC076uPn?= =?iso-8859-1?Q?FsxMku56U2yALdJ/5pbO+EEs+frwC8MYUg8mbi71f5d0nUwQC+L4OjERTG?= =?iso-8859-1?Q?DBqh0ZWpqRD22GH6/d1gxhHLPdutW35MwbfySNqjR1rG+20svQPIzaczz0?= =?iso-8859-1?Q?v5x4DNvz1EiglmW14Nh2NQSd2sW5q1Hm/mnPbVXdjrkpa3RxR4b4CUYUAL?= =?iso-8859-1?Q?yqEt74YBEkWgPdJr14vfu2EJFa3mcaZa60VGfVaRQ14kyq7d9yqfPHvTiq?= =?iso-8859-1?Q?OjnHDkS3IL+PhphoCaW3CUuea0xXygrWdcsLCExK+eEC2mJPJACtaMGG3z?= =?iso-8859-1?Q?y9P5MLApfTHfMr8ygx+fbGs3P1GXxwsOiKmsYusZy8Sy0LVAHn6z97F4rK?= =?iso-8859-1?Q?aXZLT2SiBw+NQEi8XOEcJvvdX0GLx6G26UEb4jAjm0Lpz6qcrIUvsKAFpL?= =?iso-8859-1?Q?z3fwNojDLByZJPPwzkwyU1lcaz5RhTGgoAmBIgRLZYj59E8genGGcNasXI?= =?iso-8859-1?Q?OtdySy39ECZxdJiNRWFrLnDUX8kQxXYVoutJbyIoCYl6TZLSiXRr/xIfAT?= =?iso-8859-1?Q?6agkL/vFhwX9mvviXBCGtfLNF7iuT/h6x5LNJwjj4qt3bgagTGQIcF7Ciz?= =?iso-8859-1?Q?27teBOfyC2O0VdMiJt7JcQOyT5+a0OXFTIOr0RbTSRhsaAt1doFQotk1Xk?= =?iso-8859-1?Q?c8tS+HaX0nxfJbu+fr3vCWMecr62aqHehR8TZRTyqM5pbBTfeU8Alxo2R3?= =?iso-8859-1?Q?JJOQKOezuSrnHmX7bfUv2YeyNl34RxVJnna1r3pIk6Hc6Te7K0EGj/TP/G?= =?iso-8859-1?Q?/NOQFoy2zTiPH2rt9QCQjkjbnq8nNhWoTtLBBrA6kVDppGPf3bfUnWxRhQ?= =?iso-8859-1?Q?07kvmUiWWkIpMIfekPnl4Nl6asxSDRqcex2ektAvjQGRKsMX7mhmvkO/jU?= =?iso-8859-1?Q?EC6YPGC7x60UvIpZU4taL6BiG+41w9z3kIxRGFWzwY0Mu9BGPexcEFl1x2?= =?iso-8859-1?Q?TOuDbbla0DHiMdRkoy/xeUOxLwS65w1hArbi/U1CeuuzXhI8ob2MHYoz19?= =?iso-8859-1?Q?bLrZPE4v2ikydqnXsbQe+ZxCAmkDn0HrZC8ltk0NgO6WhlsGHaaoI4QVVK?= =?iso-8859-1?Q?5m44K92l+Pm/wNhXWho7JIlnM6+iq+Kvh3dsSYmyhP2Co1+0xxUsHpgWGG?= =?iso-8859-1?Q?Ejvzu8VfD78Qb6JdhezGEwA9HRHDQaHNSK/tcD/Y28v7taQmkugYuL60ar?= =?iso-8859-1?Q?KQFuaVMcbmTSiQC+B/f6IMloEydVJ5P+CjnmzyAlS0elMI3h+eBVQaqGdN?= =?iso-8859-1?Q?YnrMrm+4WsFTidwN6/ZkZMDcr6cda+FGm8Ew4Xt2TT6dgMlKcXpRxW0ddT?= =?iso-8859-1?Q?enMCjSijePncR2lYBN7n0J5FEeeXl/SwSd2k4dGy6cPpfPLUPC7iflccCQ?= =?iso-8859-1?Q?UfJZjnKCuCvPa2RXuWM=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: 9f56000a-9eaf-4a49-aad6-08de17469086 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2025 23:54:57.2941 (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: xPjaxHLQx2h44NOwOohqXzAuMWjhlmde1SHmLNGhKhb4jtS9PTydNSd/4wNiyD2PE6LWh+pfJ5Oq+D4PDQO63qowvs63RxMPQYs4MTQ4V7k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1761782132095158500 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 IS_ENABLED(CONFIG_SHADOW_PAGING). bloat-o-meter add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-290 (-290) Signed-off-by: Grygorii Strashko Reviewed-by: Jan Beulich --- 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 a7ee0519957a..05b394840e59 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1506,7 +1506,7 @@ static int cf_check vmx_get_guest_pat(struct vcpu *v,= u64 *gpat) =20 static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value) { - if ( !paging_mode_hap(v->domain) ) + if ( IS_ENABLED(CONFIG_SHADOW_PAGING) && !paging_mode_hap(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:26:09 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=1761782125; cv=pass; d=zohomail.com; s=zohoarc; b=C2GgbiBCq1jV2wY7r3to4X+hSwiI8lwcE+Ylc+mfu95WPQ0kuMmwLjxcVnUC6FWt681dpPgNfIRkDGDObksjxjcFI/5+4JURBSba/S9cnD1jBq6NO+6imQdP/fa/uGCnkzI+omL4JUs1LJpvfdp6Y+W7Sc1gQMxWeU1JbZJx82U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761782125; 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=il7YhGntNP2H/6iqRFr6trkLVAFYpSgjbytJCfNcxDo=; b=WzQT/dtHiDmOamFsaR/NMfqCXbBIn5ALm8oMlyOC3VIFaw6dcQp5s07xRRuXGGbjQ69L/00eV1gME1QhGGako2JL3jpCnnTlEw/OOTqZjh03s0kJ6QPVl2BZiBZx6X9WUtMAQQekA1Bzo16QMF4QfT004b2CLSzFCk920z2oWJw= 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 1761782125113604.4171573105804; Wed, 29 Oct 2025 16:55:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1153178.1483646 (Exim 4.92) (envelope-from ) id 1vEG0Q-00034t-Qi; Wed, 29 Oct 2025 23:55:06 +0000 Received: by outflank-mailman (output) from mailman id 1153178.1483646; Wed, 29 Oct 2025 23:55: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 1vEG0Q-00034m-NE; Wed, 29 Oct 2025 23:55:06 +0000 Received: by outflank-mailman (input) for mailman id 1153178; Wed, 29 Oct 2025 23:55:05 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vEG0P-0002OI-DT for xen-devel@lists.xenproject.org; Wed, 29 Oct 2025 23:55:05 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id aff06c27-b522-11f0-980a-7dc792cee155; Thu, 30 Oct 2025 00:55:03 +0100 (CET) Received: from AS2PR03MB8907.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::22) by VI1PR03MB6336.eurprd03.prod.outlook.com (2603:10a6:800:139::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.15; Wed, 29 Oct 2025 23:54:57 +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.9275.013; Wed, 29 Oct 2025 23:54:57 +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: aff06c27-b522-11f0-980a-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ht77dcaBFwddSNfHVhoDhL03ltwHNxiWCS1qxJpD11X2JBPy8CSJBYEeLpvzuxFwj9B+Y0HnXkpsE+S/FjoosWzb4IFy0KN1v+jhS8K9fLoYjLK2VMhVIek/vn2I2GTb62dHmzJLKRC3gMINvzhOFCEfjGvW2+LDOMUla510Eb0xDXAgVLb5Wic34kw7fd5gudcGC9NFTR/MEFJTYYJerkUekI5XKQ2tTU2IsHfTHFHXEcLCYhwWkdCVXnpGETbPfMpgPahTzKVPj++7IAPW2RQTGMxstRCH787wBQd69B25VOaRVncwb6VUIHLsGHMu56E/EJn68mUHRaQSuJuLvw== 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=il7YhGntNP2H/6iqRFr6trkLVAFYpSgjbytJCfNcxDo=; b=Tia7udHTlYMCLactlwlZjB+iwNjdyc/Ma6LWGQh/Pc3nuEeRdDIGfFjLKFFrESOR0VTHM7U/Ww96/MVcNaqG4nNLAlfYppLLtfnf4UZNehQwOipc0XWG12W24CDZArvFafNWx2p28P2W2uSEe4iWTGgdvG8CcFKtqieM3xPoJk+7arYvCJ+0MaDWjBmZLyTUez4UDOfRUv5yTzPFmEKEtSW7QyOb+A4uerKbnPd7kuRidmvIdppN1H+KaQHvvARVFtbk2MYhC2Bw8p5y2P9CoKHbTHUc4WNDLp8oc5RjlBaTGpmXj86Pr2QTBiKsXiyeqo69olibqdJZ7m8BnK/78A== 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=il7YhGntNP2H/6iqRFr6trkLVAFYpSgjbytJCfNcxDo=; b=AL3wObV3d+yy5qew7SQvzr3Qw8xrzMiwnn5/EPM7OZMcTiSX9oZv/ENMF6BcATp2Q+nIQcFaLggW4TLO7rjIfUx8945ajG9R8fWl1DY82VQnE8XX8WdCKndrFTDDL/6HvZEHvUC30reDm5FBLTe8sL0YdE9GGG7wKxQD+R6EtLyyd/2YSVeOU6jkLv9bfncCjuYXV8E7uCgs8r+lSXgGYKDD45L2XgKM7E+EP5fiS4gQ6dPvntvKK2YAbq/1N5+eIxFkgm4tLdRdAf/m5J4FDuXtPtK0E7ox7v7fvBpQZxhqt4dyfO34RXZIc2Axfx3n1gyfkoFnBgT92XfdI0D6GQ== 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 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Topic: [XEN][PATCH 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Index: AQHcSS9ubBvE8ofkdUWCspcCjT9/kA== Date: Wed, 29 Oct 2025 23:54:57 +0000 Message-ID: <20251029235448.602380-4-grygorii_strashko@epam.com> References: <20251029235448.602380-1-grygorii_strashko@epam.com> In-Reply-To: <20251029235448.602380-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_|VI1PR03MB6336:EE_ x-ms-office365-filtering-correlation-id: f645fb71-d978-4838-cd34-08de174690bf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?7tyB1sSsCwWzcaYSGHa7PC89goEy3ZwJqYuoHz4Xr0w5wDn3YvYxQrlk+P?= =?iso-8859-1?Q?SyaznnWdKF2Fetd1tcx8tbIfy+3j9pESuSrjEohAK1dgnSI5hGbiHflYga?= =?iso-8859-1?Q?LzxaM3YtbvKV4SE1LeaFC17eUms/j4Cav6cjZYXHCY4v/I0801y8aKTgXq?= =?iso-8859-1?Q?shC9RkWwjLD6PeoE1PIs9GdiWhKRr2YJLPg3CgH+bILFambGOQztJAJPpF?= =?iso-8859-1?Q?fxP2NtCjiVsOu/m/RzyHoUCzDZPycofagZg7tjePAcLnNRwlCtsMZq9X4Q?= =?iso-8859-1?Q?BNjIdLUX4GJJ+zbDMJqD9x3sX7Bo++tUYTymGNI/xIwitfaallvM9L/csf?= =?iso-8859-1?Q?NIm13UH9mNGiJ11nwpk0fbm621p/va5ciuqNxEVLW/RDkwlGw4ixhNzVwB?= =?iso-8859-1?Q?A8taapZHvc5sHwT8pAJWB1TDtoKd+AFwCFv0YTCxFSUJ1MgtQ4lgon58sh?= =?iso-8859-1?Q?YxhvcIQ/rPx0WvLbdRQKrv5aZUKHhVP/Dkt6GqcS16WDp3MXqQEbm6ijxd?= =?iso-8859-1?Q?iSiDsKChHmOI4WJubG/GGezi2RoMp/Po7ZSaDRmb1WeQXdh1Fc7MjTfTlH?= =?iso-8859-1?Q?Ben0wtZOLt/30j4Fgx6sZWWnd9UhTAIRCWhbCoo8hhf1Le/Av2FMqxxa6g?= =?iso-8859-1?Q?kMwVvi74WFURgK62ANliVN2NyfhGalrYh9/Dw5y05ENUfcNAy3q306oEv2?= =?iso-8859-1?Q?/KAewb5xw9FAIuGPkg201rqrVsJVzZ4/+b3F64DME71HwvXwwOjBfNX186?= =?iso-8859-1?Q?dSAmdjFHU+urLn668daEIgnscNSRSQ4COIBshu2iMPyqbsraecZ6igS+4s?= =?iso-8859-1?Q?EBTrWqKGc57hOq77Zcyoipe+VhwCIS4AEktp2qjzh4hu/oyf2xbkEUr6Sa?= =?iso-8859-1?Q?Aq0Chmv88hrTUiwSQERYaMRxkWTyTm/Ba1lC2e6BDvJRVlJG1skxk9Sivk?= =?iso-8859-1?Q?lHJQScsLDu1hVjUzTkWNgve00Go4nIvWq3AgH5bPXfDsydrXTLfkurTPts?= =?iso-8859-1?Q?lQ5TyhsCfhJDa0mQAnmUZ31JDV4T02CVGf+Bzukh87BePb9BgE2uA0vI8+?= =?iso-8859-1?Q?Vem3H/XZglbzHIeJeeV9mUUKB2j7PPxD2ivTC0oB2auEq6F8bazAxCb0hG?= =?iso-8859-1?Q?GVM9kIfpdKEpOp1a2ZjG1lNw2d2djudBlcAwIXRaBeEJo3qbOLo/GY2KOQ?= =?iso-8859-1?Q?N+lqTwiF6F5IDqvfpXYkl2FHCo8dhZNh1LaQXmv1nUvEPM9ZtasghL7OMj?= =?iso-8859-1?Q?CkDsnVMvcCtiMXcSKaw0iOqAnmPauPv9kHiuxkJGFg8CWOAOeWVI3v3xoS?= =?iso-8859-1?Q?xRq5WqAE8+vF8ll1PjbRNNecUGBbXKguc1I1DtvE1d6XcGSJkWgM1VkcWl?= =?iso-8859-1?Q?F7aCAx+6PV4PCmALtpbW8gx4mIW+Khjzu3/E9nBeEP4tTEMcBHSe9zpTPq?= =?iso-8859-1?Q?uwHPAKLmb2IbBYcamWoo9ne55qKS/YgVPTP5Hpgfhap4aZNDQbdIsncyh/?= =?iso-8859-1?Q?R25XAOeTDUEhEshKNKIBS0+81vyVc7GYKX6sHKNukN9B9rzbg3FekN9WL3?= =?iso-8859-1?Q?4CHC1/dWegpTCEaTQ+CQuNI9Gf2M?= 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)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?EdMDITq49WLRWJMlKr8eTu0U5aLNDFTWG4J2QjXdRivVxNKcro4lBnJPfX?= =?iso-8859-1?Q?lOatSkg6LvDudUYEbqktxIZWUDm3TAS+Pz306EgJ95Ny7NTWMisZVp0WY8?= =?iso-8859-1?Q?3l8bGLEbCtlfWTQG4vMMdgx2iNuiX8L4S/CsfrksaoyCG3k0g+MqNfPhG2?= =?iso-8859-1?Q?kFlYYS8vvi8tgUPxHJ1Jyk2CArkh21tg1HRAxmUFTLSA5zTQx5JEkGc5rh?= =?iso-8859-1?Q?tGpk2T8GhuYM1uMgXchgomfL9yhg+3uH/tsld7BKXQSKAl0Ic0RGdp+N45?= =?iso-8859-1?Q?g5YYFKtNef4qZQBHHlRe5aItVYFcIvBqnUPfEK5xLxvUK6GbE5QUQqcotY?= =?iso-8859-1?Q?09GfIjS7sGvKWWrQcqtp0g/l5Jr1GQ9Gkqsyyw6pomo8jBWGHu0vN3FEhk?= =?iso-8859-1?Q?y+Y+o7QPwYO9fygy/JrphcoOjptGWKVPufNaCd14ymf3QPSZ/LkrbP8akA?= =?iso-8859-1?Q?ePQzN8pudwAZdwcDJiHXZ8co22Bvkvj1Vu3D6BFseesij1B6TtSmq8T/Ml?= =?iso-8859-1?Q?gnoYpzZa0I5loZHGiwQbgLOFGSLwcMGCwod6T7XGeym9JKm7nX5ftCT8FK?= =?iso-8859-1?Q?5k87vprql9TTCqdMiLG3roVUcj++ALbi3YwPxVsNy4GAJPFUvxJdsxN3Fq?= =?iso-8859-1?Q?dA3adR+DSIYJAbs51TPEDmZ5qhcYGkgDY2hnBlV8HBiQIHZJv01gocvQF8?= =?iso-8859-1?Q?arycHMIHGYVX/gb81hXLYVnzL6PLX902zyr85doeORm29qlmVNjR7Txp8i?= =?iso-8859-1?Q?MSI2XQQq0iXHtTvyOVMyqhrc2WJeaOCFZTQ3zct9YHqjT/8msuEQrWbCjh?= =?iso-8859-1?Q?T8lERQLAUg/88ExzswO9FXCUfctG4GH3E3r84V0dHjFsyzkmb1sNN7UmXc?= =?iso-8859-1?Q?O4vs3JPvjWvOEtxhuLdShlbz1NDL3HpP4hCSra/1YTxlhyrCWoMhRKihcf?= =?iso-8859-1?Q?64D+8mZaCOjjfWF9HeRhq46hL2F9Oxwy17O01PsaVQGRT+/IhFKPSaPrOG?= =?iso-8859-1?Q?eZMscSEBeex4U2MsawQO4vQS7khajndsfUOPiGYXCha7V/9NmfVbOqCB33?= =?iso-8859-1?Q?jqyBz7/x0gG/zrxL1bDoZluFWVilWlOlX2/QrB3NdpjC5ujEL4jZiBBMmQ?= =?iso-8859-1?Q?UL1kQj9YQkOhQRf8P49R7UWTq+on7j1Pj7w4+Q0ocp9CVm4M09JquT0exZ?= =?iso-8859-1?Q?NMwwY3BVTJL5t4Y2QXtkLjp6GSPIj1WeoK5AcYb5VM49z7CT13uG9LtVvZ?= =?iso-8859-1?Q?fZQDjtcKT6NsD0xoHQI2O3P2pg9tZ2hYWCQ1ALPZOqoD/QfAhmyOnC1CgB?= =?iso-8859-1?Q?0Qx3bn/KoMS1nEO6T5ND0ED20iX8hioJwTLf6WshlWLw/s0DMKuXjIyjZQ?= =?iso-8859-1?Q?jws3uNraG7jtnQ84UTvndASdc8caczdJ1Wu0rQw8wvNBtfxFbPYLn4qhzY?= =?iso-8859-1?Q?hfZ1D90gCMO+MdEGD88pPw097DaXCH1DTAZvJl2Po8uUgNbotkKLazbXqR?= =?iso-8859-1?Q?Rxg/d4VJPHwY8SaAoPrySqY1KUh3GuG8k78AEQHlIIZwTkdDR5b85usizr?= =?iso-8859-1?Q?dJF/bYaczRKQdKxLS2EeJeLlDtk8XlRyHr3RN5FjQxaeBTEYgsTS0Harwg?= =?iso-8859-1?Q?/YX7Hsl3jsz0/a+rCBEyDZkyqU0tLaLo3lAJI3t5sEx8rn2Bu7NTB4wZTX?= =?iso-8859-1?Q?6TZwvVQ3YBfIMEyKh94=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: f645fb71-d978-4838-cd34-08de174690bf X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2025 23:54:57.6530 (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: YMQctobJpjVCtVOPz+07f8WqMwI3HX+MNfLxGvYgKY/mSl0q9HKgfQDceVeepVZzYYuoVpGEf5n3eZMjv9PTdWKGzBeVSECqQPoqVlJaLco= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1761782127138154100 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 "is_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. Signed-off-by: Grygorii Strashko --- xen/arch/x86/hvm/hvm.c | 1 - xen/arch/x86/hvm/vmx/vmx.c | 29 +++++++++++++------------ 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 | 14 ++++++++++++ xen/arch/x86/include/asm/mtrr.h | 3 --- xen/arch/x86/mm/shadow/multi.c | 2 +- 8 files changed, 33 insertions(+), 28 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 05b394840e59..23dbf60ec37f 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -583,6 +583,7 @@ static int cf_check vmx_domain_initialise(struct domain= *d) int rc; =20 d->arch.ctxt_switch =3D &csw; + spin_lock_init(&d->arch.hvm.vmx.uc_lock); =20 /* * Work around CVE-2018-12207? The hardware domain is already permitt= ed @@ -1432,7 +1433,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 NO_FILL_CACHE_MODE) || mtrr_pat_not_equal(vs, v) ) return false; } @@ -1442,7 +1443,7 @@ static bool domain_exit_uc_mode(struct vcpu *v) =20 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; + v->domain->arch.hvm.vmx.is_in_uc_mode =3D is_in_uc_mode; shadow_blow_tables_per_domain(v->domain); } =20 @@ -1451,10 +1452,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(&v->domain->arch.hvm.uc_lock); - v->arch.hvm.cache_mode =3D NO_FILL_CACHE_MODE; + spin_lock(&v->domain->arch.hvm.vmx.uc_lock); + v->arch.hvm.vmx.cache_mode =3D NO_FILL_CACHE_MODE; =20 - if ( !v->domain->arch.hvm.is_in_uc_mode ) + if ( !v->domain->arch.hvm.vmx.is_in_uc_mode ) { domain_pause_nosync(v->domain); =20 @@ -1464,26 +1465,26 @@ static void hvm_shadow_handle_cd(struct vcpu *v, un= signed long value) =20 domain_unpause(v->domain); } - spin_unlock(&v->domain->arch.hvm.uc_lock); + spin_unlock(&v->domain->arch.hvm.vmx.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 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; + spin_lock(&v->domain->arch.hvm.vmx.uc_lock); + v->arch.hvm.vmx.cache_mode =3D NORMAL_CACHE_MODE; =20 if ( domain_exit_uc_mode(v) ) hvm_set_uc_mode(v, false); =20 - spin_unlock(&v->domain->arch.hvm.uc_lock); + spin_unlock(&v->domain->arch.hvm.vmx.uc_lock); } } =20 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 NO_FILL_CACHE_MODE) ) return 0; =20 vmx_vmcs_enter(v); @@ -1495,7 +1496,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 NO_FILL_CACHE_MODE) ) return 0; =20 vmx_vmcs_enter(v); @@ -1541,11 +1542,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 NO_FILL_CACHE_MODE; } else { - v->arch.hvm.cache_mode =3D NORMAL_CACHE_MODE; + v->arch.hvm.vmx.cache_mode =3D NORMAL_CACHE_MODE; 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 6f174ef658f1..ce31401a5d53 100644 --- a/xen/arch/x86/include/asm/hvm/hvm.h +++ b/xen/arch/x86/include/asm/hvm/hvm.h @@ -392,6 +392,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.is_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 ecd91389302c..44a535d16207 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h @@ -46,7 +46,9 @@ struct ept_data { =20 #define _VMX_DOMAIN_PML_ENABLED 0 #define VMX_DOMAIN_PML_ENABLED (1ul << _VMX_DOMAIN_PML_ENABLED) + struct vmx_domain { + spinlock_t uc_lock; mfn_t apic_access_mfn; /* VMX_DOMAIN_* */ unsigned int status; @@ -56,6 +58,12 @@ 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 is_in_uc_mode. + * Protected by uc_lock. + */ + bool is_in_uc_mode; }; =20 /* @@ -93,6 +101,9 @@ struct pi_blocking_vcpu { spinlock_t *lock; }; =20 +#define NORMAL_CACHE_MODE 0 +#define NO_FILL_CACHE_MODE 2 + struct vmx_vcpu { /* Physical address of VMCS. */ paddr_t vmcs_pa; @@ -156,6 +167,9 @@ struct vmx_vcpu { =20 uint8_t lbr_flags; =20 + /* Which cache mode is this VCPU in (CR0:CD/NW)? */ + uint8_t cache_mode; + /* 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