From nobody Wed Nov 19 01:58:45 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=1762891752; cv=pass; d=zohomail.com; s=zohoarc; b=UXruRdaCMYaEaMEy9gjwdk8TdYFCmciXMEdJxhsiwc0j53yjK/T1/Ia91xmZ5ckADjJpt0L7VlPw67iL5Q3lQVnKRs62RORxedNb7QEyGp7S5z6RUrBo5cadAXOTiLN2IO8LIKAaBiV5sujy0pbdByT2+itnSlvY7G66G+Yb204= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891752; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=+avs39yG5SK8mfCma+H15nY8tDlKMQPGd027kBE3V08=; b=CDkVNmySnkLHJtEVroS3bRArtkxwFkW/zDiWPCULkq02NOnnFzwnANzWMiDqi4eE1IyE5dQ7xeos9Fu6WaHsIZIsWlLbyZ6KCuHKmp7bcVPHv2sIdlx0Z6QCm88L7f89m98aGXm2U8j8lcjAMw4Wnlcx14Db4Xw4u3MZH+BhNRk= 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 1762891752154567.6785555649338; Tue, 11 Nov 2025 12:09:12 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159303.1487660 (Exim 4.92) (envelope-from ) id 1vIufU-0004Gi-0F; Tue, 11 Nov 2025 20:08:44 +0000 Received: by outflank-mailman (output) from mailman id 1159303.1487660; Tue, 11 Nov 2025 20:08:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIufT-0004Gb-Te; Tue, 11 Nov 2025 20:08:43 +0000 Received: by outflank-mailman (input) for mailman id 1159303; Tue, 11 Nov 2025 20:08:42 +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 1vIufS-0004GQ-Fw for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:08:42 +0000 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c202::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 378ee571-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:08:41 +0100 (CET) Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com (2603:10a6:10:435::21) by AM9PR03MB7758.eurprd03.prod.outlook.com (2603:10a6:20b:3dc::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Tue, 11 Nov 2025 20:08:26 +0000 Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584]) by DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584%6]) with mapi id 15.20.9298.015; Tue, 11 Nov 2025 20:08:26 +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: 378ee571-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fcsQlWhCR44PPbZxswoiXzDPIQOrz0hbzx38fhIEZLMIcKMeOqjRCdIBlZ9fwsmznqPVMkUPY+D+8CCPESrapniBTIvTf0S88j+Ax4CYmD7NKabYlLe3+QtmaenRYyHs6LiKexmvzynNde1Ux/zudtNXCK323qM04s8ugIRppNz8cT1i5o3IGbAsXg7vIha8Td5xjWYvDYIivWxQn+ytsRk2/eJpxpxl+2A3w2NA8DjCXfIyC12OaAvmYKdYe8ueCYkXCbpgm72JU2fhyzexoEpyJuRqh2Lp8f5ccXrC3nHUEp2EwiafKMzMUKQnMHeWR6s+innENhR8CIdpyOgmbg== 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=jRCuIVzuINS30gEyPCfMn7DNf1LaFrcyTUi15pO1vkVh/WT0CYLcxwlTAp4h3KkhzieE9Chs3b2t5ingPexpUAgd6iR7zCBkh09kIRqPo26/rSC83keIeunWQXhYzZ3sAkK8Qe7gVWpweKRHj4LnW7NBYM/suLgnIZwUWsb16xMnRF5XhKEv1MuqJqQOySLpIPNsUx/qeLWJhO3saRyLGMysRqqC3PwWBBX8aET4LrIxn6wmGKSy7QAYnA7o7hH+IDwKKCdttVyV2erowoUTvJHttOBC12Ky3s/lNrcCEeAR7aDMllPxRPBl0UbQUpyZROYSddQuQV1gNn9WdZIpuQ== 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=BjDC8YfYAcxJ1O49Nzg4Upmnn0ky6q8NkqlGe8uu2LWPsq71FhW/QUelhZltPK/q6IiJ1YKrRUcorJ6z56b1Px2Kc6fMezAALhfOlcKgnAIARP8AYDUPHl4G1ILV5opjXO6qdR0i8AYRcHpP/oT4CZ7mygvww1f0gCIMim/WldwUbuylAa9wtut6nh4s+uB0g/qoFr7+u/A6+95psryLxBW3LubJwU4/K5PeXHMWirKgdW68+PBs1/lz3NuO6NVr2LF0Z8mPSzNBxZpd7j1+QCh5PM/KoVgaYwEaLAG9zOvQJZ76uQGPE7XjGOn1nm/rqVMgiqTPVj2OcUcs1f5iJA== From: Grygorii Strashko To: Grygorii Strashko , "xen-devel@lists.xenproject.org" Subject: [RESEND PATCH v2 1/3] x86/hvm: move hvm_shadow_handle_cd() to vmx code Thread-Topic: [RESEND PATCH v2 1/3] x86/hvm: move hvm_shadow_handle_cd() to vmx code Thread-Index: AQHcU0bwuBVmBHjS2k6n1jYAWQNcbg== Date: Tue, 11 Nov 2025 20:08:26 +0000 Message-ID: <20251111200754.3575866-2-grygorii_strashko@epam.com> References: <20251111200754.3575866-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200754.3575866-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: DB3PR0302MB8919:EE_|AM9PR03MB7758:EE_ x-ms-office365-filtering-correlation-id: 326c23ee-e286-44ef-ec87-08de215e12ec x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?kuVn5phmoQY2VNF1W+2UP2YEohAf2aKEdCPsdJiqBaKRZWGep5LC6qixIJ?= =?iso-8859-1?Q?jzYf1Z5EnuyQ+ufpHYo60AE4vWXu8a6izhHzhAKILOc7XX+DChJEtTjrIW?= =?iso-8859-1?Q?UkwbHO8TVuoknCQVIXv0K/TntLIAq4Z+QHThwinN8BhG16Wbw31c/d+6Gx?= =?iso-8859-1?Q?JHD9/jHAFr6zDFObrbnVLri2jm2ilx6etE8ihYgS3E2q2CsOO/Oi65PGvP?= =?iso-8859-1?Q?S4GoejK1Nb09pPhmll7D9h9smN2RMBATbq438nvr/y4T3GLNw8UR6GS+lx?= =?iso-8859-1?Q?PKm3GPSbHnvJ7txqxySAybM0al5ttBo/nZusyMbEz7Z7kOET/zAihYKROz?= =?iso-8859-1?Q?l07O3Sl4C6hqoGQd4Z1xswsRVrjOpQ90E+8JqMq/ZPoq6bxQOa+xxyUFib?= =?iso-8859-1?Q?2zWh/T2/9S/AyMM9voNjXuO/+mOHJT0yiXY8cd4emv3lgCq6ODutECYvpB?= =?iso-8859-1?Q?0CQXyMNuwiH+I1AOPr1uK+ysmCiIS5hhkLF0uU2SFIdFMjt4/MZzh6KdTj?= =?iso-8859-1?Q?KRafLbKPmxXaD8dTeX6hzvCRJ8+kVNT8M5KXM9DE5iW1NzB+uyFqDoBxZD?= =?iso-8859-1?Q?SvL4UKUWiokBAjwVPnzrBqRrgQA3+Gi8WZcgOnlswlMA90q/9PnJkubn/h?= =?iso-8859-1?Q?+CwYQwUOo8nXDcHcr54XIzpf2RwrZc3X5TwMB853mY4o3GyiBDD+vo0MY0?= =?iso-8859-1?Q?qFjyR8aREs2jBbmN9x5KfZKyb7kcWAmXsptVT944QYVqHtmIYv9Q+jpmE4?= =?iso-8859-1?Q?0azGDWAP8INcFmRMue0AnWED69e5z6Lyn4B4HVcLjrV8Ox1wIrVBVi1iOa?= =?iso-8859-1?Q?LudSCZKsl2caN98iC9vWVdNj1PEzULqanuzMBakEHXmInChoML5uZFFjRb?= =?iso-8859-1?Q?OJouh1qpGQ19TfS5D4vKiIaJan9ZEL9vGWfDaB2xMDC6Hh0xLlac5w9rBn?= =?iso-8859-1?Q?4Yhcf7yP2EsTj+ahqBPhCMulXjjXyDnstdPk0joya+RgPfksyobLnJsYyk?= =?iso-8859-1?Q?Pt7kZAq5UEUUXuC+vvp+BJ0IT4Ud2QLgon1gYZ9VBU517zYiIzsHBORIJ8?= =?iso-8859-1?Q?LbunDy3oSDFEEf8u+qY/RZHIbAN4x+Z7JVOjZ2KB8J5dFPCcnGbeDK/o+3?= =?iso-8859-1?Q?koukcuAA71AH7aKq5E6ijFzcOPpGMopZi3dVycow+LuGLTLkZoRXJLwOem?= =?iso-8859-1?Q?/SQ0OTflNAHxlDDCAKRkDMrOWs2Ie2wMLAHkHLHFB8ykiOzyQO9mI8yFFS?= =?iso-8859-1?Q?/+B0kwvy/MFQbsIoxYXpzakesJDwQcpp2NH9sib3j21zOUhIFKsFsjYsWA?= =?iso-8859-1?Q?M2dVkSHBqtq7Weh0xYhHqIyrnYP5YJr9YuZCPjl28mkaht+WZLMF2NcoOh?= =?iso-8859-1?Q?VfxfGmX0uRYviqqwrJn+ROdEmv4vfrxrhmfiYUJlfaTGnMcGhIgTiSeNYQ?= =?iso-8859-1?Q?guqXvlaseoS0yOAD7DZtY3x1O9uAaH5qW1DuyJx7gVhf/bFK9vPBaI80fv?= =?iso-8859-1?Q?N0tZag4GyxGSDVUZkdHL0aa7s5d2oj5TV6cs2u+GOLSAOMgP5be7P7m+v5?= =?iso-8859-1?Q?Wh1W/CSjLMN7Ln50s1D40Eddx3gE?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB3PR0302MB8919.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?XgVI8pLc1NpTvhW9A7uI+8SGrIcbK1suxKVyovI5nh5LGkY+HVCCzHXgWJ?= =?iso-8859-1?Q?1VfRKxfIqm37Iyr81BFAffpfQ521Y0vBJEWarPi3Mb+vt/HSiQkYlRuQye?= =?iso-8859-1?Q?OGS0u2nQDZ1RbNStrwQri9kqk1AfSLBzWlGRPXIOw+WJH0M2YAxj7HwaZU?= =?iso-8859-1?Q?j+RQTrFkJhFThB4qD1HFjFLCAA8A6tLgQEAnagmIVP2c9RZuW6yRQ9kfzO?= =?iso-8859-1?Q?f1Qe3AIuerZO1T6nt5zpg7s5AE++Ezicj/KumSdkH/Rqt5wkI5/EFpOdTq?= =?iso-8859-1?Q?8TyzVrBZ+Oi9F3Nt0z6pWLFEdnhPtz2Gc7NjW8flc3Y5tSfKW0eh7zT/jj?= =?iso-8859-1?Q?i473n6OEvAOunol3zVzZrEpWFgRVvtKRkAC/V4JLroa8jXdpqfgeogdg8w?= =?iso-8859-1?Q?y4q0qrmtoldjf6CfcGuFaezCOHnXmZr6vB7iq1aavSUc6DBI6jvcS1zyGB?= =?iso-8859-1?Q?wv0e+b0B2XyBemEFFA0W9NELXEN/OiCRG3lcVEjXEdaTx7/eKGUXbM4xzn?= =?iso-8859-1?Q?tFOidKL4G0RFD9eEkMcug+2uEDsM0E0RQBechhvCFNqzGQVDbiUd2vFyIa?= =?iso-8859-1?Q?7RJY0DutPjFa5/YDTNpH6fT/kexmvp9YFFBJMq3VOgWYGfu4Ldb+TscZdE?= =?iso-8859-1?Q?e6nxPh9A97TH+yBiekprLQqgt9iJSe7+pd7LLnjZRRohDRtYaQ+T2rJ8YT?= =?iso-8859-1?Q?TTqrqnqmamju6/L9DACM95Hco2dDv2ppMulpN+jrkjA7Sn4jmy51F/BQdH?= =?iso-8859-1?Q?S9pGwJkNZo9of/02aZ1H4f5qMa6tWT7C3wkUMSjfcpyROmiWS1AjDQnZLL?= =?iso-8859-1?Q?Bgg1gCKIFzxJw5LOku+Tr2wNQalgMhXPIKMHZqLax9hlFrgKU4aR0Zsx4Q?= =?iso-8859-1?Q?mzv8n6MEMJi2GJrp5G2iybU6dlZqH1GDZPVTxZ9gAlguKCVhlQefXIUtUw?= =?iso-8859-1?Q?qghHCFvHgrfapJoIGHGa7q7ubZyyPAXV2DS2/9gPQikpYpewACZW4wy4J7?= =?iso-8859-1?Q?X0uvrsJf0FTIONXigP2RcSriHSJ/qS1NO8PJ0rr1rDbxaq+gWgu0mKwJ9/?= =?iso-8859-1?Q?Aam8uYGWVwrkkd1mkCcJwlEJ7fdsOO0Azws02+CJzLGrzjAlL4s67Q6vZp?= =?iso-8859-1?Q?Yk7u2jBFhBp/vXQ3Ir65hT2rGzdgqFpMVbcFO37mYjnkd/wKMUG1biUOFP?= =?iso-8859-1?Q?B9Dgvvo/G8CL9fQkulGudiQs7QjUyh7pVueibLYuedipg7Ys2yUcPLS5xx?= =?iso-8859-1?Q?VfxkVf/b872k6lyC8TzQuf/0gvyuvz76+95VGV/4CXV6pOZIl9ZcME7IOA?= =?iso-8859-1?Q?EI7ndFLs1h4/hd9/UdwcgOg3xN4+gSqiNvIdhPXuAAERLMcPBXkH1/1ff0?= =?iso-8859-1?Q?twimy2C4Ey++sgGIkZNhlDkcLXwxW7vUVBFIaXuTbBkFGJSy/u8YkBTOwn?= =?iso-8859-1?Q?3HDHB9emi1y5T7JrLrp3l9YQiinprVbxHQi0r/hjIwo3Apgu26QW8F12jA?= =?iso-8859-1?Q?P2/FOGYmKG/Km4wnI/xC5mqZ37m9cB6/9LiZaM7S8l7owJ+qhvSOfS0Kpe?= =?iso-8859-1?Q?MPZT2saYJwC9t4B25jGI/dqzCNrVC1dvrFHZCcjYjWD6hhCWDLVFhEMuyj?= =?iso-8859-1?Q?UGlbeQzW2ww30xKjb620eWXT8/tQlmkz+w/yPORw9uunruOp7ksWwOPQ?= =?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: DB3PR0302MB8919.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 326c23ee-e286-44ef-ec87-08de215e12ec X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:08:26.0972 (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: EtbRX+k0wJogls3x4WBB1G7UYfKrTxawonxKtui4NEZQ4krM70YrbU529PdtWhznM4luVjxq4nseyw5IpF4c8EVIVCSD5xMPxTQRIOp2RUg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891754397158500 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 Wed Nov 19 01:58:45 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=1762891753; cv=pass; d=zohomail.com; s=zohoarc; b=Eg4YVq6+nNQZuwYpsNnsgZVtuCvEVM8vXBGVQo/aHcW3spv3zjw3+43XiKHCTrOcfJqQOKprXF5rXJaOsVznftyDGef4Wsa8zDJjF0RRXC7pVCyfRHpHrmXOjZB/xiq/BARIdB0XbyqcB+lq+/f4yU1b38hE92GWdo70FATarbg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891753; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=pgVfk4FXoNNmttOjLxewhjRJ89Pbkd84LjmcffM1nvg=; b=luVTQ5hGdQ8IRxk5eCGmDErzL2UuStWoPdWnKyrn//gp9W8/BfZfRS5HNWXC4EsXNqXrKDQ1iILS0KJ36DS5Kx3SEoNfygFimBlepJOagCBMSNX3GbM9cIIcqmEsSPIMcPYjuiyPg/wd+iDuh+xnhGWrsZyCPdiUZrNIGH3MD8Q= 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 1762891753652664.9409953788943; Tue, 11 Nov 2025 12:09:13 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159305.1487680 (Exim 4.92) (envelope-from ) id 1vIufV-0004i6-GU; Tue, 11 Nov 2025 20:08:45 +0000 Received: by outflank-mailman (output) from mailman id 1159305.1487680; Tue, 11 Nov 2025 20:08:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIufV-0004hv-CR; Tue, 11 Nov 2025 20:08:45 +0000 Received: by outflank-mailman (input) for mailman id 1159305; Tue, 11 Nov 2025 20:08:44 +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 1vIufU-0004GQ-5U for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:08:44 +0000 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c202::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 387452a8-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:08:42 +0100 (CET) Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com (2603:10a6:10:435::21) by AM9PR03MB7758.eurprd03.prod.outlook.com (2603:10a6:20b:3dc::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Tue, 11 Nov 2025 20:08:26 +0000 Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584]) by DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584%6]) with mapi id 15.20.9298.015; Tue, 11 Nov 2025 20:08:26 +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: 387452a8-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GChkTFZjWg0jioLvr2XJAI3ae4bgAA8OsViHVrMfzhLJu8sms/Pd71QN56KO+N4JagVtYGeQ9qc5gFqtOElwUlsPRB1bqJTVmkjLCBqnbjjtwL9fj6kfdKjfe9mZsSdBuVJfxOkBSWt3ARWGoK4oSDx4wxiijCFAeWNiWGRwoSRlJDRtscUhKA859DgZamTnWafvlisChZcN/0wvGpBVyJf3DQWEDhNzilAUv7OxrxRxVZ6sJopkDRZA8U2OSIuNEb8fvyTuio4+Xk7/EeXn1oLwA1eZFTZbxR/D39Fdp0aXWC6GgU4U55QE6UoDonnDHl7UMJM5aKgCBagctiCrQQ== 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=X4WtQE45+41Bpd7xpv5XZu9oSUNNdJ8gZoJC34pIO1JzaUn3xypiZf0PmzsVaabIebqt77OlacNFy8zeT/F4EjRQFgw5cdQRntpS4DEdj+TWYR0JLil/5nWM4DyBCUfeeYBIpPoV4S1w27CQKStLx6ms38yylaqtmGtbAU01QBGvQf9394otgnheu9+udPq1+UihSSZcj49oImK5OAsKoj4LqYeZX19DqvCqj8lrV6l6ZGHRpBwVDmC/sc3b5Ox9iW/Gr0FvmB08ya4PXYwPY4gXz52FhTda2JcDeLQHeL8OOVwULkWaaNDynUMmLT2f78TC2lVXivrj/7eobtCagg== 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=CdMR8gZSBXg6B9vxcxmk9jH+QlwBpdRV7p/cranQtSgQTd36PY7MAXRPn3YvtnxJyF0umiu1RW57yU1wxlVgMBGKa5iXm3W0mR47I5EFaXzaoe+ypSP6jmqs8mIBWEGvSP4K6XK8TA2k6jdXHgF275KwaSwsyPo/OtBykuo1UtXSW5na8yasKaiA+JRhzit8Bk6bxQLmWJ0L+0fc6fOW0jd8btbk7WdgD9jcqFTjrBH+9OYYKPOMr2BdRbqPjlQtP/GS5rnsgCWDdloq+Gm1FZGOuq+8aYe8+JWZCPBg1qNLqNfC8BS7qIvdLlxNFaAx9jfIffo4Jyr2jRXGz6hpMQ== From: Grygorii Strashko To: Grygorii Strashko , "xen-devel@lists.xenproject.org" Subject: [RESEND PATCH v2 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Topic: [RESEND PATCH v2 2/3] x86/hvm: vmx: account for SHADOW_PAGING when use hvm_shadow_handle_cd() Thread-Index: AQHcU0bwAk/DeRt/Z0ykYoQbMThuGw== Date: Tue, 11 Nov 2025 20:08:26 +0000 Message-ID: <20251111200754.3575866-3-grygorii_strashko@epam.com> References: <20251111200754.3575866-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200754.3575866-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: DB3PR0302MB8919:EE_|AM9PR03MB7758:EE_ x-ms-office365-filtering-correlation-id: 7e9e3bd6-9374-4b35-921b-08de215e1339 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?1eN7LXCnyNy7x6DKMW63D+MiAgNqcnaQrhLEH1SdAaFQgaOG6Di5nhQBIg?= =?iso-8859-1?Q?3eMizkEycsu8Z517kzQLOjTg20kU59LNpHAZVrxcEoRptUlccFhPO3z9hk?= =?iso-8859-1?Q?rVhKNSyMdjORHFz4NbO2XY/UME61+LJb69+0XPBOu+OVn0+D27e0ZUmFT+?= =?iso-8859-1?Q?/ddRrE32675Y5+MNo6REWzALNvW+byFi3+ExtVzxLKT8cQmI8r1hhwFMMS?= =?iso-8859-1?Q?1br3VTLOWXxTRQsunDukT6/QQzZGCzOGoQqi/4pYIFnTis0K0GWZ4QoW6t?= =?iso-8859-1?Q?dQ2fmmFF0QQSdSKyfpmcqWKa998uF9/vDKaOd7jy5KbJJfJTy38qQPUioC?= =?iso-8859-1?Q?vFpdFy0d6451gMidx7i4F0ywdoQQIGbIqsA3wF2USob6GETIc5NoXVdyB9?= =?iso-8859-1?Q?1h+LBwYsTc1lu0EVJGT+TdVi5WU94TY5etLlPB3fMdrrkeFxbKFOU+knGM?= =?iso-8859-1?Q?ZaruqBo7Dbk/mxKd6+48iDTwgyGdYfbWYZ9N9yo6seSrUgBdxo8kgKiBbs?= =?iso-8859-1?Q?ySofVGCargF9KV1793ONqESEuWk1u7ntNaQvV0KJYUvLk3M+MHwVsePakx?= =?iso-8859-1?Q?fhYf4fSvim86MmIggmd4fyXzMn3cWTjEhDCkLhnKeFej9MI2cFrfbhF7La?= =?iso-8859-1?Q?AuYuL7ElnBSFqcW3+f/ZfoROV7WPoKGec88SHUsaDx+rguYGTMBAAS/kz0?= =?iso-8859-1?Q?p/wflPxA8qCD8zxq0/ndgRfR59LViYFLiCEnTTX8ByKPXstuGTFwAfel9b?= =?iso-8859-1?Q?xOzrgRfmFM+xVPwzIBg4JP/QPPfTpyLXRnHAPmD5i7OMHerzFC8JwAihcf?= =?iso-8859-1?Q?uqUSaUJyCHcupWDQYuUr7R9WhworFufZqM9EWasCgX3kPeudDTFUa1KHAV?= =?iso-8859-1?Q?e8F+E4hBYoofLSseS8pQ1cUmtjFlA4qTAKMIL1SsQnIFJ+QyGpKTuHkPEj?= =?iso-8859-1?Q?skBpsUsjg7H8RvNOp4vsyirPvqZ49W8QReMqmP89kYBn6oUuKoFG/00Q+7?= =?iso-8859-1?Q?t0bVkNosEbYdLo1CpMphpvFMLskssurPJfhCG8Be5uDxAz+9aUy1/5Ig1c?= =?iso-8859-1?Q?cQjGTU9kk5zsMf55FK5J/M8XDQw+OOIwDk3myicbRVR88UghSbgICKgLir?= =?iso-8859-1?Q?NWTRPOiUZTF2pfEgQPhMafdLvyHuxva6AmDgv2LXp+wui+3zOq5FmR3Z1H?= =?iso-8859-1?Q?kTwlbkcT+SNBrYflxRUVYnGNET0oYBdX9MzQmhN8sni8DtgMZcFYgPcr+N?= =?iso-8859-1?Q?lSu9EiX02mjVNOqZLIKkMyzBlumgsQAdi/A49X677T67xPkuCWOg9rmvmP?= =?iso-8859-1?Q?zE82qAyQ3HyfF0hTb1O6YWcJfP2NfUMf3MF/5VV2g3SLNpClGKPRo6qIry?= =?iso-8859-1?Q?PcBGwXsH0aPkCnPPLB0XPqnX/WHamTvr74BCqhkm+igEz1RsDtVYTVsjGU?= =?iso-8859-1?Q?w6hxKxNsaVFEfR820IdRAvmubU0a4/4MnkLmkYwERbWUWb6JF8XZEFKZMq?= =?iso-8859-1?Q?NwxOr5X8F5s2mxyiy5YOv13IQNLB7zqYVDj99lZca2LKdlfsnhrY4yXKmM?= =?iso-8859-1?Q?/EBwVQR034t6Ab7uDt0pMeNl7wkT?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB3PR0302MB8919.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?XoHkZAdZz02/e03j0tWQ+InhZFJeQ16PLlGs/jlIPxZAEfbw68wkqqxksi?= =?iso-8859-1?Q?S9r9Pp3QG0uvNzcYFppJs39A94757fjd4R9jffR7U/2+ZCmGbgMc33LLLF?= =?iso-8859-1?Q?WdioyRyvBOHx8h/IuIzlQWhdiTK5MXdOZU2eh/lT//dSMUqg0LsMlELAo3?= =?iso-8859-1?Q?+JRoj2VY2aL27PKkss8/1voLF3kil33JGZHEHbSRKbwO0DNjTbEcgw3qes?= =?iso-8859-1?Q?KAkv/6D+7FYDeM4BoqT7He9LMiPVoPQOVH3aVOEmFocF0pGoE6St9BQxI3?= =?iso-8859-1?Q?ipnaY4pnWQ3yr2UY+JhNFni8VTve8WG50S483I/Twl/m68aBhzwQRpzBBr?= =?iso-8859-1?Q?hx5v2gVcF9qYm+8wnsqfiLhVv1Gvzp0RWf71QouMDvyi/ZQO8vx2q4Ke+8?= =?iso-8859-1?Q?iwwv8L561J0vNWPAYT9OxDpttId9S7ZUM4PPQyrRKgGLcx05cycerprKzi?= =?iso-8859-1?Q?jkQXUkyXlGcFct84oIOMAh5za52TMtom02cbfpUKw/pZYOfZCc0qYb/Dtl?= =?iso-8859-1?Q?o/0YHgoiOQbtRdpJIgCj7r9H8JBx26y/KP43zdfXbPrvPUzombP3wsyhzY?= =?iso-8859-1?Q?T+bTei6aptvtP430YzO7LKYNDi8SpuK4gbh8wSwJocTPW2K8YMoEKHLgqN?= =?iso-8859-1?Q?dCQyzMcrRddHqHyJy3xJsi9kS8yF7cy15jjUtzte8IfjcIQesr6ZYDGC3L?= =?iso-8859-1?Q?GJDieQO4ufZ6KYotKYz0RuvtjqMMUWg6In+kpP9gyXPAALQSB+rvzm9j99?= =?iso-8859-1?Q?qO7t5nbYxNzbxGyH6rrJ6dWFyWrhSUa9WW90XKdv9TWPdOXH9IK9lvID9p?= =?iso-8859-1?Q?Xu390/mU+yVDh2W3cV1uc3/ntyqki7DBrMh3t/+Tef6SlNuNEMH8dw3tER?= =?iso-8859-1?Q?13D/7lcOziPmazbSOQCDDNd1CuoMJbmaxMEw4MOmVIVwjL5kanyo3Uze04?= =?iso-8859-1?Q?bEgFhdc2H9LztBk7D1epfxvKe0/qTaL//dvA7lalf0ggqfcU2D4AL0Y5Rc?= =?iso-8859-1?Q?9LrrU8f6n+o+1DCXMh4mZQdBTYx8WDbTWi854N7Z2rtBA2IcdzwNH0UDH4?= =?iso-8859-1?Q?X9WPOoFOPRyr9qDfL8EMifI+1nspMrMcy8uQ5ErdgtVQKX51nv0gemgzbB?= =?iso-8859-1?Q?bOEPcXVyGeWGQpJXB0dHD8zvkvnFK+e6VnvU/pdyqcwkNj/Wail/KSJbhY?= =?iso-8859-1?Q?xMop1QjmvpZ3US52M6Tj+zDoMzixhwq2ezU6GcYZ+PE1mWXk9oZ4uWzwe1?= =?iso-8859-1?Q?4WAFbSCqyTfoK9f3CVIND9GaC+wwaglK28kOTn1ZkhTNhR/6Y+CHLWSDXZ?= =?iso-8859-1?Q?sr3ndTXxIo9SbibI7Z0pdHAngT3yA2OZESC0o9xL/vr6wCV3/tDmkfcmqo?= =?iso-8859-1?Q?qmNDyC6DzjTdvmIqMNPC6ytl4sCEY0ThtFFq9mY0079zSwFoYAkAdS7Waf?= =?iso-8859-1?Q?86hIdLbN4qwC7bla3Z9ogc54/Kc9UFqpqIBGW8WGfKxV7RJbJMqN3TfBM8?= =?iso-8859-1?Q?nnL2F1e7JBUlvuU0MmT0vEJR9ZLkENjzO8ijL76U8V+gf1SMcH5WhPv7U/?= =?iso-8859-1?Q?geDo5VAY/0iIFpSGas3dNAjXFTT0hb6GbM2AHD6ewdVTBZpH3kH7H6kQ0Q?= =?iso-8859-1?Q?afbQyxecSfGtgVOc7z7bFrBfChZlqjLFqa7II5f7HDc8acnqYlqmijEg?= =?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: DB3PR0302MB8919.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e9e3bd6-9374-4b35-921b-08de215e1339 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:08:26.5729 (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: CIPFWV0bXXtKZjdPTA40fQZp/IzIIKn9zcgyLywzhWef8HX5ynWVdDnpiGBVJ2KZAA1YOkhE5NgJktUsPtIyN30UMAdnPTwqC48+2SjGWmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891754341158500 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 Wed Nov 19 01:58:45 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=1762891756; cv=pass; d=zohomail.com; s=zohoarc; b=CVDKXvgpXaLoMSCSuKXUwGAg0/64hENNAUPypoC3BbZAlr9iF1uZCJmFGq6F7sTb+zViMOsV3g71Ec0FBbx/HDNNWJ6S3Wnx0eA/J2Qhyo95KWJqeTh6RTNu6fNNJCBFF6yivOcFxWRf5Hj9F+5WIu5/n50eamP/PwQF7wIU1Pg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891756; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=3fc8kqULrDlEecW0AMKDiqA+VYZUna5h4+g6PU7mwyI=; b=Viwts5uMZbRW5PQufLPgQ02JKgl5g/7/lUofdqvComCGLrujeXrEQNmh3MIDGs4rRsqjgJVPIcoglO5xx4rf4c3GXDUIZiVNv05ttc0asgNoue58AjkXCAKU3/T+7yRcDqalf24QzEbypklJbbIhJ1smh1omGBeJpCVHyXntQjo= 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 1762891756597348.06364622279546; Tue, 11 Nov 2025 12:09:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159306.1487690 (Exim 4.92) (envelope-from ) id 1vIufW-0004wC-Pg; Tue, 11 Nov 2025 20:08:46 +0000 Received: by outflank-mailman (output) from mailman id 1159306.1487690; Tue, 11 Nov 2025 20:08:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIufW-0004w5-Le; Tue, 11 Nov 2025 20:08:46 +0000 Received: by outflank-mailman (input) for mailman id 1159306; Tue, 11 Nov 2025 20:08:45 +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 1vIufV-0004GQ-5r for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:08:45 +0000 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c202::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 38b2c75b-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:08:42 +0100 (CET) Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com (2603:10a6:10:435::21) by AM9PR03MB7758.eurprd03.prod.outlook.com (2603:10a6:20b:3dc::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.15; Tue, 11 Nov 2025 20:08:27 +0000 Received: from DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584]) by DB3PR0302MB8919.eurprd03.prod.outlook.com ([fe80::ce88:43f9:c971:9584%6]) with mapi id 15.20.9298.015; Tue, 11 Nov 2025 20:08:27 +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: 38b2c75b-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gw+Hp6U5Kv5CgzluALCj3FrwmjA06q5oF8auei73QpNqxiBvJOxSKG2nPmgTPfveNMJmFV4FkNbegPhAzxdRgooVN2uSoHi4KldS24VexNGg/f3ZBXB4jRda9EDQwpuUTR9C+qv0WAtG4YvM4sEwboAPMnCrutKmCbksR0FJR9ptZzX+TP4CxzigKBiEqXMiKy8KDkWozGhGsOPMTBZ1dZiQliZff/dSriddKAHidLvOXNNYHUFvx8qY5m+MKg51rX61gmAcaLQwXjhVlyNNGwpqCK1zs7wDwv+WdvtJUf6WOJpLVTJcmR3WKNNJtJpy3DgwEIN1F6NQTDxkDxlFzg== 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=3fc8kqULrDlEecW0AMKDiqA+VYZUna5h4+g6PU7mwyI=; b=ncF02tUf3bXWZ/4GTgvkCV27izhwOTFrTZduf1h4GWJKyZWwz35vh1LCY4o+EbjVvLfemE6rnNm93A4uof7fI3CtVK5nPu+xdTGdNKvudEbpCj4QXaLUFQ0hWiKTyrN+bltHb8igCm4nWmq8iqMEVb/QUJnH8zEP8ieKXB2a510ZiAmHDP+nEieqgZFHqqLi2X02BT7HKwtn/hgl+CJAtXYYo9eLXctYX0w7W7pWFwv6/OUuNvdWk+0bESFz8Er8bHh2cNBQskBmMUVdjTWZ+6aoZA4CWlcDrS4rkzfuGgwpldHXHPcMy4piISvCISfBj8cs1tjT5rx/6sWDHMdi3g== 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=3fc8kqULrDlEecW0AMKDiqA+VYZUna5h4+g6PU7mwyI=; b=RPcEjmJ6lkqUseVJmFvWSMndzUeUqzveZz9tiiZi0qIeAvn0h3X38ALsO6IZ2ag/L7i382CZUeWZmQO8gHQQ8JWJjrnM1iZUzs6bTAWkaSYO9iROJnVtbDexcf+TAG785Y8JZ2q5PF8INzfV/XGzVcrN1/6N3WINclAXTARHNa7gwz2E2liFqD4ceswBgyN/wTUwEpZfOP1Y8Tk0Z1g+GGBcaJYaYUNhQOOkpaED8lKXIP3IuM4UxXk07/EBEyQvY1uxQw7hQ5hDeFypxTQHQUNRDOjHd59vewjX4FRpmdjqnIrUb795spXt9vy1Cc1xKqgwQuV/lNU0mDgjvh2JIQ== From: Grygorii Strashko To: Grygorii Strashko , "xen-devel@lists.xenproject.org" Subject: [RESEND PATCH v2 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Topic: [RESEND PATCH v2 3/3] x86/hvm: vmx: refactor cache disable mode data Thread-Index: AQHcU0bwLNN2MekWRUyLAAcFJooieg== Date: Tue, 11 Nov 2025 20:08:26 +0000 Message-ID: <20251111200754.3575866-4-grygorii_strashko@epam.com> References: <20251111200754.3575866-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200754.3575866-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: DB3PR0302MB8919:EE_|AM9PR03MB7758:EE_ x-ms-office365-filtering-correlation-id: b47fb9ef-ef0b-48ad-b339-08de215e1375 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?FLjFatVUM2kh2zJXml9EuJ2u/cuSAwXsX1QBgVeBTKwgJuHm+VzYHRzZEp?= =?iso-8859-1?Q?qChRm4y+LbiJuDg+Qt/oj09PWCfkEwhheUWDy69ZkintQ6ARcFr/QJYtlO?= =?iso-8859-1?Q?6nmw/XNoJq57iijrPT2ROx0wRSdhJXl8WaS/k8GlOeP17dpfbv+BbJKPvf?= =?iso-8859-1?Q?dEff7th4BAOuDYJZCfPe57Q1JGdXamTifAYrn4jOV6jjUZZBAVO5fTqAee?= =?iso-8859-1?Q?4wPWtdqrRgn5zSg/tyO76lxmqBjiIgfSUw0tyH1gARcW01KywMVpT7w30L?= =?iso-8859-1?Q?nY2eQWaYB/7vnTAQxiYmOPWw3szld5KI0MS0/eHHc+FKzSCQpie0m36omM?= =?iso-8859-1?Q?5QgwBLFXjxmw4QYAOIyqGo0mGpY4RhwlDrKQ+5ocDjzn8YF5EFsNpByjnI?= =?iso-8859-1?Q?zSc8dEN8v1SDk52bnu9y2b6JbM2rZc9SEdo29SlIGCUNCfJ6QJOfOAHjYN?= =?iso-8859-1?Q?IcHekz40jy/O9VB9muWmjmR4EUdVDWcr+UoCd9wkVOlOWtqt93Xdm8u1Ft?= =?iso-8859-1?Q?nYKtFr+j0UDsdThEg2weMKaMjsgrL4xSdJWHRchsyRnwfgwnFmZW6m7Zx5?= =?iso-8859-1?Q?AKABV176tAfPDiW29Y1o7fJx2GLspNwecTMmKDxr3efgU2Hijrp5vmGQiA?= =?iso-8859-1?Q?V7x0vQ/iSFeXdj41WAvKK/K9zCiLeMBrAx4QTDh9QIRVcDf584t3jD9ck/?= =?iso-8859-1?Q?gYTNwxhmJP4q3DmoxHHmbrNGVk8an4akgdE8eUh1IqRAd5UtREssOhnNPy?= =?iso-8859-1?Q?7TLDai8/JTbYbrAtzVo1u+C5Y8IFLvHs54ze2VIc6SQKDZK7EC0pi1ziW6?= =?iso-8859-1?Q?mN74xICCSIvEoJ2nImXKF65fwL0uBpkfSFaB2gdsbIDFGuUOciFBCOsbd7?= =?iso-8859-1?Q?oMTP181e/wl/gBW3FHKNZynbGh+gVta1TOP/jJZzMgeGtJ6uJCHPIKiM/d?= =?iso-8859-1?Q?40igmkXB5ULqg2/NeHJYPX2ltPmIzUu8d6U1RPt3UbcApLLeQnILAS3rwK?= =?iso-8859-1?Q?HnXqmkO0OGgqByuKARCObFXMT3aFYs70Z9tg+Gyg7yFqHlBvBNvnlhpRmD?= =?iso-8859-1?Q?6EV0rXpiuwyNg2jadjGthlGG5sDkvxCnRcuOLOvSTd/BivhA6u9ltXbht/?= =?iso-8859-1?Q?A4r0nKBIuM2WKi++sEREwfJlR5wvFjKo4nVO0HWrCJjUygLsmeNhj1Ls6f?= =?iso-8859-1?Q?Pe5W6528hC6ziTi0FY0Do7+GwooAAmWBi1ju8XLCaoonhjJ/vpkyiltjZt?= =?iso-8859-1?Q?nMETyKkP2lzwb1GFu4MLsyy0wkgdomBOUDxr7K1NIgHP+UDew/utPfbTS2?= =?iso-8859-1?Q?8zNhjynpo4gR7KRF7WY/mxl0L5IieZujq/TB4ZGwEqj6lAZ/4YUbj7M0Z/?= =?iso-8859-1?Q?swdUJBcBjLbVkz6AbevOuYT8CTzcN/+K6+sgzPzI1iMbGW890QFOqwDL9o?= =?iso-8859-1?Q?+9GsHx6YMt9t1mMr043zlBCWPb7jQlLjf8d++R0qVVVI7FrdwNbWSXswlH?= =?iso-8859-1?Q?Oy1ElcZOAyK67pxrrsBDGmYByK7mL/zbPQkYwr56uI7BV3oyQmi0WFgSOc?= =?iso-8859-1?Q?vbJnciiBLbUuW/tIc3QCxzDC3CDw?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB3PR0302MB8919.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?7+X9rXka39UYbXAu+gtIyjzlUKTry0bQ2BVIumERRYjkNy6CSwqzwHbd+G?= =?iso-8859-1?Q?xHipK3VegXfpKBF4OIDhTDHsFU4UgJ4iR1Yii9KTzDUC3gpOv6gDsThBzh?= =?iso-8859-1?Q?JOxnlZ7DodpPGbsjs224E5+ueVx/wDX/GHeuwsXel4b/IJ179O+ueGjQho?= =?iso-8859-1?Q?a0zbyHVRo0J+bScVbSyNg4LuGimFNyR1E2+MXfYLcoFuZy4Z+UZdUwP479?= =?iso-8859-1?Q?/e2tIIMM0fkAw4HJh/ipXbqtrngVtIyNXqPUMoOuQV9s7kCCzAcfnBO70/?= =?iso-8859-1?Q?bJIqL8Tsr2gbdUUSv5siLG94gRbHK7gP/2xb2QFqHcUwDZW6oI5jadLh91?= =?iso-8859-1?Q?ZVuunb5qiKSv+kZdqeTKnO8n7GH1g7QdiNyfTmRolSmgvHOJZjEoKfJtuY?= =?iso-8859-1?Q?MttRKiDlsF0zcu5YNxxgBtGlqNJxZpX1Jr6/N8A07YuLN+Wu5szsVU3IcO?= =?iso-8859-1?Q?+tgm+d7E8ezMPtGpFEeP+UwVjqKt+S0w1sKh8GpxpeWWnV4dh+TCYmTA05?= =?iso-8859-1?Q?02z/W4qQw9e0GEOVm+HPt59Wos3BIhTwY+q2SfILvoITJqS8E5E0mquIB7?= =?iso-8859-1?Q?0g5qnfYkM3sDVVUs5W6+OwB6dZn1v0xPI6/IfF/nDeh+wSKVy133udvSbA?= =?iso-8859-1?Q?vvooBObkcaAOzEbyeiFhdwzQJPFBI2pTAXZL7kmvHrOWV3/t/IkS9u3cqu?= =?iso-8859-1?Q?ONfbGjFxQ/JWGqh70iHdmLXbji+czJW2piWcRAYuwUkoPhqdWQFQKesT6Z?= =?iso-8859-1?Q?/1O+mDjrl6KL2CNHQJq9Y99yvZtX2IyFrvSYfor/GNvkyeszVgz5UCjw6n?= =?iso-8859-1?Q?raNNMPOE8DAkdVupAUXLQwSB5fj/xX4FeS6t5L28MhMH5QxfpV090RvG22?= =?iso-8859-1?Q?vv1fDwEb92bIuiPB2KJPOYpj8wseBMxTqRjuz1WdJQC1B5L/MxPQHp25sV?= =?iso-8859-1?Q?/wSN/fn1Ao94NBx3L3TlVxPqQ2f/eb9LwXgI2klEV8BbwYwetVFZzWwE74?= =?iso-8859-1?Q?PxzReyndPOiBQmIihedJpy7PhOUXGkr3x4CtbNc96TRxk52zlpFBGiz2To?= =?iso-8859-1?Q?V2ghKtE5MEp862etSVT+ojBjYoIKvTua/F+x0uMY1l7pQM0ux9L+r338+U?= =?iso-8859-1?Q?C6WgoNAet/wyrECC0cn+Q2WGgMl9eOO8+kuJGMj/jliyCIsenDH4tNyTG4?= =?iso-8859-1?Q?+cq1TgEeSeSRzpRKzASynhAvOMa6MORkFn5LwiFuGfwlfg5dE4XaHeG1aO?= =?iso-8859-1?Q?y1MbR2RgGTJHWG1a2sn+qlipe7wpEJ3LDbRhM/BMe70OSf/FzIFzXNJQ1J?= =?iso-8859-1?Q?DQQEhgWE8PQGRe9q4q266fHUNG1nWR+spZakxtWf04tsWvo/VISVAZQr0L?= =?iso-8859-1?Q?6o+fXHy7ommkwgCx5/6XBDAT6JCsWkIPrhnG3YQt2A3b0DzTWR57sD4rC/?= =?iso-8859-1?Q?UOk46HokTDBvOfzxP1OSXbf17GJ2iXcjAqh1EFlb7VEQiP9HMWyHAL2Rph?= =?iso-8859-1?Q?N80CRNRyXcU3VB/VQn+XS8gvR79N7fR35i3Yd2gOFS3fuzxcd+MAWWlVRg?= =?iso-8859-1?Q?5QgES9kaWnQURZlpjMgNH8FQ2FsKMozs2Sj8EmdO20vbvbRZix16r7M52p?= =?iso-8859-1?Q?fycK27jQ25D7vGa0zmheblBdnXTQiNVxiJFd3CQaB0M+9o4DjQooPoyQ?= =?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: DB3PR0302MB8919.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b47fb9ef-ef0b-48ad-b339-08de215e1375 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:08:27.0007 (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: 95jexWdLC4EiJ7V6J/bumHsONLdsuTO2KgBvdF4oPp7IbnPmfKzEFBciYKp366GXudUOxZAiAm2TWdg7IuRk2/bka7jq5/wATrY1WNyiSwU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891757887153000 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 | 30 +++++++++++++------------ 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, 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 67861bc8bccf..0d9a4a17c433 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 @@ -1496,19 +1498,19 @@ static void hvm_shadow_handle_cd(struct vcpu *v, un= signed long value) =20 domain_unpause(d); } - spin_unlock(&d->arch.hvm.uc_lock); + spin_unlock(&d->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 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