From nobody Wed Nov 19 01:57:47 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=1762891819; cv=pass; d=zohomail.com; s=zohoarc; b=gZNgKDzJ+jG76Iaz+lWdBqaLxYp68esx8vG4BL80s335PTxqhztOqoAgbnW4j+NlWK/Nqjh/aL7qKl7bP1lOJBF+iZxwHK/6dTy3zNxRmESRNj/7FnbhJF0Qtr96WQqeqwisv2D6wji29KBqt4n7SvPskaTjCnrB43cCINjXDJo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891819; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+avs39yG5SK8mfCma+H15nY8tDlKMQPGd027kBE3V08=; b=SPaMHrh++fo+iIhtfFUfft1/l6oZvscS8/HCnoF0gE/VCcqcTi/gNn3QdNzgIViOxb6IIM3DJAYouGMPXcmHXHv+3e8PQF4FY5kK8CynytL0V3r46gHzAzjTAG9fhybf5bbMPuF8teP22e4sH4WAwn7XxAaWjvJ4gfNgo225v38= 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 1762891818999109.68723105391643; Tue, 11 Nov 2025 12:10:18 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159343.1487710 (Exim 4.92) (envelope-from ) id 1vIugp-0007TO-GN; Tue, 11 Nov 2025 20:10:07 +0000 Received: by outflank-mailman (output) from mailman id 1159343.1487710; Tue, 11 Nov 2025 20:10:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIugp-0007TF-Df; Tue, 11 Nov 2025 20:10:07 +0000 Received: by outflank-mailman (input) for mailman id 1159343; Tue, 11 Nov 2025 20:10:04 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIugm-0006ga-K6 for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:10:04 +0000 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [2a01:111:f403:c201::6]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 68c19a29-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:10:03 +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:10:01 +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:10:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 68c19a29-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Uqqrbz1fkos4x7kBPHdwWFSUVzINzWgiIufyXJj0dGO8++zyKGAIj2Mu6aITQSlzodf3vKCNFQs8eYbzvEf+y3aTAwMap4q38pUJ9E0uAs2CANwZuQNmt7jqv6in91eJ97UKFHVaQlt5c1Jan0TJM3yCQ/4n2nDsP2iqbCsnG+cwMMrcWeHd+uVG4WW5xDZ+yUrsSPHBFPq+U6THOzZmcL/mUix9heQuNBlzeJeh7BQk1uCXvQENkHIywct8M1VPhlUSpTGPNIKWcdpUbJSmpE8JqI2wH5xu5hjInVpHw6YCdHD61cDDH0CusfRLp89+cOCLv9qZMS7p5emG/70Few== 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=cj7Qg+Qvm0K/gJv/g100ujBGKk2iEcngFIDX8EenC7oC2RSUKy7ZyLtsmUI8anRxbi89hMoIKbij6svktY2+NTAOUx05CqO+NNJUYq5XOcPd++/0q/meI461IgAj8ZjYFZiaapEgOjLPS7nHP073qXpZ0Ye89WhNYyG9A9BuL5lQIocLsGOFAMt0lC9GR1MZp30suz91bYgkRTaY8dKX5nmdyoQ5gq1qcM1Oio0fX/tTmQIB1jViy7woOIaJjxlKLb1in5CO2ZQZ6stuIoDGzBuwKeSmwm4Lgzh5y5K3QIXGdcvYzq1zFPP1GQ2vUcMNp7d1Ck3zBIg/IPymckfaWA== 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=jnM21kvUxEmgw5VuTbkCibomGjwSmfuOmYZFu88I/khYJ0hbwa2/crHRmJ1ls8e7BpdEP47T+c0EgI5VTN455UpPtavcGc4DBc/IlCstP9F/+IS+wFPesHkfx8M+dHiFyrWz+5qTzcBXsWlEjCMxZhlQywC3vjQNI47WuSI1XfU+bMlAaJCUGV1jSUivbONLPATXt6oJuItO+d05MpldMXoTRw69sMunz2ybIWURMh80v/jar77/GKkJxhG1so8NwFfhVD2Btm50+qUbMwny5Q4NVsYo+OdlH55VKUrPQTdxjzGm4OKLwXXrSnIBkk/+UlCRef6cBSylWuox28xwdg== 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: [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: AQHcU0coeroPA1YNb0eMzNzEaOtgJQ== Date: Tue, 11 Nov 2025 20:10:00 +0000 Message-ID: <20251111200958.3576341-2-grygorii_strashko@epam.com> References: <20251111200958.3576341-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200958.3576341-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: f14df5e5-b372-4f34-8d9b-08de215e4bc4 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?AGasMzrpATybdeml51+oHyQfy3913jr+rA1gW8zKjwF7Sg+v0ZY5w1vu6I?= =?iso-8859-1?Q?O43G9Qxo9udlnWCSEgP2iLzCGJTTRgGv829mgF5rQs8JEv270+1lSFfEtC?= =?iso-8859-1?Q?tIHUbZmXABiLPU8+Ogu086gi+u+KXOGJT9nIY4uDs/fHGED1dMp75pkoem?= =?iso-8859-1?Q?zQ9QwMrwPEc40dXW7Db2FHQAGn4LPewEbggJd2icpBrz/b7OGt/Bw82h3v?= =?iso-8859-1?Q?XdOCSgnApz0TYZQJOx7xi1/6zTnU9S1f7lGHcnLhMhMsZlB8kAaTHF3fRU?= =?iso-8859-1?Q?NLia3SL3+RKS/WRvH75WbW/q21tRcXe0muO2+ijllqjMzRHwglDxg5wJwf?= =?iso-8859-1?Q?I6ybGu+XfBUY5S89vR8z4KvgiLN+oU1/yYQMAlEMNoTiRSajOzuf40RA/F?= =?iso-8859-1?Q?+wGEMEddAnsYw6Zt9smSVDGUPyBlaPRxGeJmiZ8qslU7qN0zpyPU5RHgI2?= =?iso-8859-1?Q?92/gUgEYvahFkK7/wx458LLVixdy0PR1WGFg9+/LiOHgjv5iZp4l8ILLv/?= =?iso-8859-1?Q?jSCyBl63jF/RhI2lquIr9CkbjEiloyiKlDD+gfp+acd/A83WwzAr0KCa/f?= =?iso-8859-1?Q?N2LpcrvnR0042zLZh3Pj+RyF9NdmI8J65X/nLBcEjillmmWZWJngcsYQyX?= =?iso-8859-1?Q?jo9fEIZZPRRuNqDXCv6VikLVZJ+bsG04Mk8fwaFncMkska4zzKSEDeoQs4?= =?iso-8859-1?Q?WgFU/mFpMlUQshPBMdmnJnLErMyYI1lgj7MNJPKMNVq+Zt6tS0K2WRNxSu?= =?iso-8859-1?Q?cXcMifxE/vQikVnLqaZUcFkcYjTEAQF4g6WPvcVtUQlvel5iIEMW6SUmRo?= =?iso-8859-1?Q?IxSn055ZXqLdUC7ilU65nadW0lC21rE1ROi0eR4j9fxDD7KA2iAk1+vH16?= =?iso-8859-1?Q?jJQIC511Dv7BbpIj8Rp7qASk20BwYj2kK8Rujkr+SxiX9Ocp4Dj+1nCGHR?= =?iso-8859-1?Q?bmdx1DmrqFrxMyIZEfjvrkiSbBEyKXiZb3E84dc6HYdlicAF2MboqQIx1P?= =?iso-8859-1?Q?nPXtUkOZ87x/nv8pGgx6uT7AaCpmqeWTpFDzNQlb5gelE5eHLId2jrcbro?= =?iso-8859-1?Q?zeQxBi06VGZV7kqOA4vC5uEhH71uT0AQ7qmPEgU6gWcuch1M6a3ZtQ8JyR?= =?iso-8859-1?Q?EmcKCskmTrbhrBSpCQF2ZZfqC9/fNeEFhYmCUe3Jqdasmy5zRp2PP8Ft09?= =?iso-8859-1?Q?7RKIiYQRPF12dnpH4TUCfr+Oax8z9hMVqvYKr5h4NIRo0DLMgyTilNnJ5u?= =?iso-8859-1?Q?b0OuWQL4Vx5BoQRe0TOQN9mKNY6a6dhPO40aD8Arggg/00tlHq0698dM4r?= =?iso-8859-1?Q?FXm/BWf1jH+S1kNnzTwJFMHzD9qCOrHQcT7gf1YEu5dOxBTLvReOK9g23B?= =?iso-8859-1?Q?YG7hhanMaDRlcDkXvIsEyWMZQJPU/3WX5KrKyNbUIBKGWTMnnesyR/e91m?= =?iso-8859-1?Q?xOsgwyjVkpZjdPH9keT4bibvFwMkdaYWB6kSancv9jZL9CYxhrHPHXpHEj?= =?iso-8859-1?Q?MsND8zyRGG0bXQsbyobvgqeg4708pmzz7XF8HnTbnE6xls4EPcd7KtmnqC?= =?iso-8859-1?Q?c8wvkyaZOyPbNIpIJtrSwLaUbbyu?= 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)(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?HNu/SlnkzQoXocXQyj+yMQxFyDSfs832PTizwcfqpPQgPbyhH1Ji89Igiz?= =?iso-8859-1?Q?gvfL6cvTkZLyAfdfQQkHV6c+gux1rpDjU2wBPOcV7UcSvQxFGvRnpxVNR8?= =?iso-8859-1?Q?nUTWxu43jvB64jJ8hQyxaB9MNh/SUSsYwa2UOEa/O8xc4xtn1f9oNGpmRC?= =?iso-8859-1?Q?OfzbithEmSPBMHfKaBhoZlxq55KKBvFHVeU4bvsAS3m9UcPqIuEitVpfET?= =?iso-8859-1?Q?3cRq6tfBtiO/Sjep8LABU5Aw8tTOYMnIkYsKsDwTqJDqrdkAqXjlOQm8Gs?= =?iso-8859-1?Q?vP68Ve7vW3WqEZUNLvo6tT5/5f2XWQRBjTgzFPtNPHtWVrUMcxlJPjSMTs?= =?iso-8859-1?Q?nzotaZXqX2gng5MAkh67g00Dt+4wgqVlnTZb5W6nwVx95GUaIBI6WncviX?= =?iso-8859-1?Q?IP9mjPSACvrlC96yiP5npcGxK5H90VR7wxudzysgA521XiHlT2+lNEWVvL?= =?iso-8859-1?Q?3Fvqjgbb6J4KDs8FyJP6+dxJH18LEsDPSMzdDrqvdvxvkDYfDTsPG5eSX7?= =?iso-8859-1?Q?UJUWfjZaW80wdiZyrN7q/07BphMODK9H+rc9kCadVGIJiQf2ccTKRbwb5D?= =?iso-8859-1?Q?GB6gMrQ+f2kWGd9+VPCIwFj0DjjZoYvaByd52YDPg4LnbEeAVtx6mx6ANQ?= =?iso-8859-1?Q?UvFUkfNZyZYZJfuMBSfxjVMfCeeimi7yaI/wTo0MXNUxnu8rhOCAYXgkWF?= =?iso-8859-1?Q?4XE2O2nYe+6ratPsXRKrCq7YRq1Nc4iVWy1fuyMhYAYP7P+mI57/SrFCzO?= =?iso-8859-1?Q?YikVNjn6PejjNeSmKuWXlSNrSOXzLE5/R+2+i5UzfrpEoLjHEmrJwYHnHS?= =?iso-8859-1?Q?LHNZ75fo+77K6BqpygkhoQXcQaak63ccK38hSs73l3BeU1U+E089OOfu9w?= =?iso-8859-1?Q?6+MQ1U3JrUX2LQV1tI79Kgsl6V60gi7d195q8KX1SLu2ShaN98XKBlU5aK?= =?iso-8859-1?Q?jqv5SDx5S9hezlw+KACMEKFSLqc67piFRsCnjkcz2wnKDQQp5iyYHH6jOr?= =?iso-8859-1?Q?z5viBKyO+xy3h8cOldLrSSNjwIbKTLJhyI7HhHl/0AaSOxaHqgxa9SgwQ7?= =?iso-8859-1?Q?akOGWVDW7uR5UlaGWZmlsWZex/0yO3yzT4XAlj/oijfbjUyH+VG83UytYB?= =?iso-8859-1?Q?8CLAEVnnc90c2TeJ77weLGPr5zNMO0e3jHHXQMbHzUI3dh4T6ZuoCSbLbq?= =?iso-8859-1?Q?OeZgW0Ub4Ak4s74/GT+apXVX5ftVhHvEuvFPe7BVXd0k7fSYCAKs2x87Bm?= =?iso-8859-1?Q?I82l+g+yIjJCKydlDHY2NawcAI/uI+nGFAo8uveTBtGa+If2b9uVkoehbk?= =?iso-8859-1?Q?u+9AR5LKbVTO7ZikH5W80EBF1jRqLEJyboV+oLUPsn8RTfAjKjsCLu1dlR?= =?iso-8859-1?Q?G0lb+96+WObv1mINKB3ebMjA/GNrey2oGjkASHyOsqRm09NdgLghUigx7U?= =?iso-8859-1?Q?c34k58S17KN5FWOXRBKdJZr6zJFUAmC2hgqYUd/EAru9qENJEtY5hg0YwT?= =?iso-8859-1?Q?ofzryADm9MOa28M8UH588f30aizn3laQPHB6BXF4CF9xrjLzBkUxJolhTH?= =?iso-8859-1?Q?+n7uBzLMhvn1onKwDdf5wvfEX55rx70zFKYPtE/1pnSuIgk/wFfadf2/RZ?= =?iso-8859-1?Q?mnqlo99fTF16b+xQJOfgEAMvwTOhs/2zdZaiEnRF7fHm+Dpit1/hdPwQ?= =?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: f14df5e5-b372-4f34-8d9b-08de215e4bc4 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:10:00.2924 (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: pLpOg/lUrMhLeMu15ZzPZOvIbY3IRzTPHMu9ng/mbXw3jNsPgekHynekggG0xK/qe+36nbKiYzoQj2PXnqDINPrzlefjWQLqmjw2o5Lp3IU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891820079153000 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 Acked-by: Jan Beulich --- 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:57:47 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=1762891827; cv=pass; d=zohomail.com; s=zohoarc; b=hRLL7Hxc9YC+sVovdsvDWiEG2U+SmvKm9y5XSjhU2fgfaaMEL5we2CiCal6+ICN10MuDRcjh94XKXm9KHYD933hMKJELOUihiugnN2iSqbqekCL7TKB31XcKuvF4OOJdEujedIX9oGyrBXGg0zv0uo1jrNbomNUCwHAS/GIysd8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891827; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pgVfk4FXoNNmttOjLxewhjRJ89Pbkd84LjmcffM1nvg=; b=apJtAFd5oq5seISorfExK39YXwAG1cJupPsCd5OCPpFVY5i0ifWXsMmC+9EuxUm7X+gud/cQDMW/OzGVI+depMIwk2b8D2vohW8l/n4+HHaGHW07YDYrcn+pWpiPvNpnD6YzqhhieyIjx6THNCaC0yHywL4jp44LxRfizRLtfzs= 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 1762891827568754.1244632708804; Tue, 11 Nov 2025 12:10:27 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159344.1487716 (Exim 4.92) (envelope-from ) id 1vIugp-0007XC-Tn; Tue, 11 Nov 2025 20:10:07 +0000 Received: by outflank-mailman (output) from mailman id 1159344.1487716; Tue, 11 Nov 2025 20:10:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIugp-0007Vz-MO; Tue, 11 Nov 2025 20:10:07 +0000 Received: by outflank-mailman (input) for mailman id 1159344; Tue, 11 Nov 2025 20:10:05 +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 1vIugn-0006ga-KP for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:10:05 +0000 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [2a01:111:f403:c201::6]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 690612a1-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:10:03 +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:10:02 +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:10:02 +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: 690612a1-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wQvmiwF5qlQIJEAJzLS05w/fQIf6++lZh8KsfosEXoNDUdh1ZsgHI+Cg9Yf10SrL9Z/mnx9/0j/1Xz6rZJ+01E2cggArDdCX8eDQ5iYHatl+oI/rnSVroKVRJJubM4Qg4cWkaK/kOn7715NLRQ0dN4NonQ62Istc+PPCdW83Sv8PP9dS+p/PoBcdTg5GhyDwVra5Wbt8ym9k6cz3whNai5acerm010SB7xtFoshAPTko4mrfmp7+RPcAwi1jkcGoyVvwC3u+lD/kfzhwfraKawux2HpnZn1c6CQ5N2049mFqEtKdJYyDVeeoHQ+YgqK0sX44r+XTOzT/pjbEQm3OEg== 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=juw/umd5P0NcIEXo1UtUT2+NmZYQVAQ6hp33nt403aoYYbBUwtLW2r8lLMVhStNoRjGASiX1ZQC/fXn7mitXWQP5DnAGJG80yto6EZPYdCi+rTufzoBxS1LyoGx5NbwCQzAHyR3bEq9em+fDTzFTfHF6wpcbsUigJKmEVMU9fRefWflD2WQeW8huCGiPu3wesq0xoErSSdkHVOFIhKby5Z3G4vkRSHT8axrUCBm1rakOchMyhMaGbEItXRPqvrb7mFXknsPaADx703OchxP7FQ6XNXqFf40OYXcD6jSXmZrRgca/RBkS2c19mvnGJpazXtGlhi1dCSa7U+0OUJf2TA== 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=HlJvOBC0iw1iXR4Y7OcQCkiK9g4Tr+XK54lMUBUGzxoRFIEQtwc5QvLiON2onZs10iMMKlT14cnCXCwrs2k97vx/OP4HQSchXCWeQeJZrQOMtejPqmBbiBYAtxbBHZPPwzhTucNdb0yD0C1dnTTYq0y157KLfYhmZnrDSjaPTwFqBmfI8UQRjqpkRvo9SFp3II/tV5CgMu1tD6WyGw5zbYoZ1j/huHMaZhm22ms2z07W90U34LF+PQy8mMkaBBIvF/TDUr/4IbI5OXpDTXQr877PYCZMpeLc/Ign4d5cbyrf6yGjOmdt7LK4Vx3dh5pX9VmLpqE7CHGcU1oBv5OVdg== 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: [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: AQHcU0cp8fef9PeSd06dFSU8qlXKnA== Date: Tue, 11 Nov 2025 20:10:01 +0000 Message-ID: <20251111200958.3576341-3-grygorii_strashko@epam.com> References: <20251111200958.3576341-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200958.3576341-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: 9804fbff-d443-483a-80e7-08de215e4c26 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?MEStXg8xfWqdGND2k2ik0o1WWOIjULtK0pthDJMuX2GFzjw4jGhZFocjhU?= =?iso-8859-1?Q?kAZOZgxVl+LffY36P4PapdeyzEeib2l5KzRYqHOOkGRlCWnhQ1NggqWWLk?= =?iso-8859-1?Q?GOBUYf5YUCasn3qCcO57QUGEJtb1TJ8Plhjw+u5fLpsOkpdU9hr35HyM61?= =?iso-8859-1?Q?t+Hs4GuZwsJiFwPffoivj9TE2jujcE2XSNbDgx0N3jhjEE4Km/H+CK20GC?= =?iso-8859-1?Q?+Vpv90eMDEWvvsuqeHtgpXx6inGDiqJu0nXr35RGEK+Or9hDc/EkiJ7lYA?= =?iso-8859-1?Q?BU3DDjQJjr+hKk9DPQdiwUT4HkoVR0J3DB35YocSotZZL7e1X6pguZ2Pio?= =?iso-8859-1?Q?GgLcPMWbsjFk6UL5rujYfxU2nfW9MMpqd0glVTlBK9raJJSMARG2BC6T/a?= =?iso-8859-1?Q?0xampA89mei9S78zKKpSsXCtXNjQzv7Yx0JaR9bNDuzkliRYB6jcDDy17d?= =?iso-8859-1?Q?CcIribm2mEmFcJ5peUwPgfW+dmJ/TVZS+nTd31mCBbBaWoPMPI0dI6nSrm?= =?iso-8859-1?Q?am1beXFwKylq5iW08ZUHBp/X85vOtYkiZ3XLgNSw6tRlU6ozE2UaGM3HQ/?= =?iso-8859-1?Q?dNcreOAoaiShU+zfhOHNtVJYx37TfdRq+/rb8YhSp3qGdPzak+xK4KgpmG?= =?iso-8859-1?Q?HbFkBMZD6iAjAwt3U8PoaM86WofAnrxtA9KyAio5qaSepZeYmZLsmLZ4Q3?= =?iso-8859-1?Q?pRbAwxWDk7XDCLd+rgk6hzmtfjJGzoouLI2/0tGdsQ8gJhRSpnUyxA1fVx?= =?iso-8859-1?Q?j5GeExjFha7EiF6HmzoPiSdtH6Kski6LJLry1IlaUWC/77OFITxE13S6Qy?= =?iso-8859-1?Q?wlGvj03Hw1582iz4BGOCvru34bcIgUoqk+2pvmC5D8II2uyF3EOgdXR0tI?= =?iso-8859-1?Q?Ja7/LArz+jyI3rUugYx0aUkqpu+btJmiUA04VqPUUSoLqQ85WbC0/weBBZ?= =?iso-8859-1?Q?AG5MuZaQfPIQtDfAfI7sHLVmaSpFsaCig2AS61ek8gNvToNZ2SvGM+jBLO?= =?iso-8859-1?Q?vMRB3bFLlJlQ9fLT7OpLcwt1DSLMC0y6wzIFNZ2wMpCuZMF6i0MS9A+dMO?= =?iso-8859-1?Q?0skr/Mg8oLfbDqTK8s6M3CaKCsXmgpWpvrXWq4fgkY1gUSgQ6hEvZOLNEi?= =?iso-8859-1?Q?ZhSYGe8TasMR5dCpgqsuobw6GZHJDaMjtI2qCYCwgXNoK3TR1z+cegpDms?= =?iso-8859-1?Q?RL1cGPf7XdXEKu2N3uNN2nVLopJ/3hFnl3J57z3ihLwB9KinoHZYY2H8w3?= =?iso-8859-1?Q?UTqVrXzBcgyw+1l1eHn1/i9d0ToZwRK1LckED1NpLAKukcyEUjDk3HA36u?= =?iso-8859-1?Q?pC+gUlY9yvFWMcAvx0znxjOKDn7KgH5KGirPWehM4y0vldeBJX7nZlWN6S?= =?iso-8859-1?Q?1j5qB2wywZFBG9XEyNC/saW6Kcez3F0zWLh/6RzI/EYy3pzZIDCHX9Zf6J?= =?iso-8859-1?Q?XymTay0W1EJ01h3mAvWbX0F2dC7nGpQPMBYWMwKtm2+XCYQ07iSBcV4C0r?= =?iso-8859-1?Q?K6WhOuQApSo9ujcGgLVLlNePksgWIBDny9yTR2EttAKGF2UglSFR5NcuEM?= =?iso-8859-1?Q?KWu0IfPHLW4/gdZMeZAcku/UDtlh?= 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)(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?xayXg3kV+7TQdoIomv1Mivng5U7GE0qcKjrlgUlItpbbsZM3q8e9L4eAJ4?= =?iso-8859-1?Q?EdlSoTeu5g3qSCWR2Z/MgkawvfYAl6vQCGpTZYZbbMoZHVvk9qdTY0exEh?= =?iso-8859-1?Q?pyibktg45SJwqXtTa9IaPXdJHxcGZNZnWXuVRISTbmwRXaMEYF3covI1Ki?= =?iso-8859-1?Q?MLuVhN4LcJaR1cJZRLw+IxVfjloC+mHgct8XDC7GD67pyQApIjPqEXnNCQ?= =?iso-8859-1?Q?LzXrnmXGUAeOeypOxREC4/8GD0KZ3gwovlf+zL6lzPLHb8/KsI7uAkzoGD?= =?iso-8859-1?Q?I4vS/gkUTrczhRWly0Z0WTreUOGzta49REuamkOk7pNdA1jKeb7OcSXD1v?= =?iso-8859-1?Q?lZZus1zPyEgrhPNO0P76txOKGQY0qmijaFE1nQgXwrgd11YdjbcUdGS6Vy?= =?iso-8859-1?Q?Es/68madtrVCGlkhMFmY2M2WMfSsm5qJQRUx0DdlEDxGpMQGG7lVyEDhEA?= =?iso-8859-1?Q?s+fuhfM+ufz9Vt25+gQRBOdOQHLDWT1S4fMTfwqYGJrOgM5KL3iwuM3dLe?= =?iso-8859-1?Q?A/I8zcd4DHPAW+hmYJGeRZILPGzP4pk+H/GFayQ0anoaCsxydcG3GwfqPL?= =?iso-8859-1?Q?ak2NxxO8sZ3d2NGtUU+7dDRhSTbVmZSbY1NMAidR1AGasnyDIPIjGOZCO2?= =?iso-8859-1?Q?227CAjNfJi2QSY7mHKPIwvVBIysHk0vhMGXQnHrnBMfDnIG/K4nyu2JGYh?= =?iso-8859-1?Q?sHrC3yukhCWHxCAZ6PWpfGud4hEKzAW9oxF4Br/Ko6WXCCPCn6fk4xPMni?= =?iso-8859-1?Q?lawVra0y0W6d4eJca7PChpQ1T6487oGD8fIEsFhNqsPxb5x8ZW2wONF3IX?= =?iso-8859-1?Q?aOaAxmTw1unW1VC7o7CeXuoFDvVBZIYbmh2VrTKc33M4rWmH3G4yjWSYKn?= =?iso-8859-1?Q?1qF1+QGWiLSYPwP8n0EVDcUrpEbezy5zPtumXM7F3t9KgGBU+IPHxkoqRR?= =?iso-8859-1?Q?sLLQZQbI4SvqJiZ2/txENF2UADG7Eo8Ee55CViqnBL+NoaOGaCHLkkU1fe?= =?iso-8859-1?Q?XmYXCwK+eKVkJJq3F2xW+ujg1DFSSkkgQIoJtW6/6neVLTI4UiMzU718m6?= =?iso-8859-1?Q?582YCnX1PSTq+D1U6hppG8VJY/s3Nx/o6MU7FnN/o1S7U8mIjPthEOS1WY?= =?iso-8859-1?Q?SJ/XRrIs2+Oax8wCMkGF5YHhG+QiGxDuiIILOeACzHRxIFoH/Z8iy8VQ4N?= =?iso-8859-1?Q?Jwagzk0yOoh87jnWaSWFSYktUdZgzr2ITIBhJWUTjdvzruBK+KHX6FjYjX?= =?iso-8859-1?Q?4aIZ0Hr4QKUOkgmBIDQ6pj9BxjMmpXp7qZwlWqnA0rAGMrY4wy4a8Oxx2T?= =?iso-8859-1?Q?CZPH7lVxumrJ8mMa6pANvsILHTNW+Oj5vTd4wbdtIbSe6Z4RqzO4G5uc21?= =?iso-8859-1?Q?KWX9ovQWlqg4JTDndwJxglFGGs0M4hEWrQBw3yDh4IwXnh2wr1/F4+DQ/R?= =?iso-8859-1?Q?Vqk2vNvOOunFhHtszRfKGnq2wXyRrgQVU82JW3tRtlEpblali1lfewNJUz?= =?iso-8859-1?Q?D2BgM8eebBExbVvBOFsbpVTIUv7PyS4CAgXe4VmyDgSgQeZnqjXNbKtIAT?= =?iso-8859-1?Q?jV/8+FQqQJnTqbHCkI79QHBWlS1xRoYUkzbDoQng+0WqGcFqNDnjH+hiDw?= =?iso-8859-1?Q?TlIPkRlrf1uMBbK+gP8zGtfx0atdNqQJM6Nf/jCa7o4ZGtCFw5DYqyEg?= =?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: 9804fbff-d443-483a-80e7-08de215e4c26 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:10:01.0607 (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: 6vBRJE6kz8KVVvSkVutDpRvuN5DoJDC74RkaWFG36ocPOe4ccPuT/d68bbCG/LZbBEXe/pdw9V7CJHiqCiHGskydUz5HXUvkTOXhIWA1NaU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891829441158500 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:57:47 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=1762891822; cv=pass; d=zohomail.com; s=zohoarc; b=DQcunCjmhbQM+JPn0w/wkGiVOU1BssFH7Oww2vc9M34QoEw/zKKseYuXeDJrgr2Fo4UkOz4UaLNrm4c/rTIw5FvGTwXSHXMMaIN8KhpcIscuzXnj6YEB+qUyKaTeykis1jcVslKeQ06Pr50N9tdLmSVciMTt2zH5FsAiVqO1BY8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762891822; 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=3fc8kqULrDlEecW0AMKDiqA+VYZUna5h4+g6PU7mwyI=; b=ICW++A4q3SHhKWGN/ktLS/vxOmSbW9cmx8eQ/2DohwAn2i1w1HGLr1CZhbI7GQJCfgoFrCSPQ4JrOEGvvDiIwl/X5JCmmV2eRjlm0LfleOPh8lrqLZh88boXV+fD6kBIRogYFxIRGwzWhUcawQ8rq4e/EYjd/N4JtjrdnuXTVbc= 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 1762891822801589.7809096920581; Tue, 11 Nov 2025 12:10:22 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1159345.1487721 (Exim 4.92) (envelope-from ) id 1vIugq-0007ex-9L; Tue, 11 Nov 2025 20:10:08 +0000 Received: by outflank-mailman (output) from mailman id 1159345.1487721; Tue, 11 Nov 2025 20:10:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIugq-0007dZ-3S; Tue, 11 Nov 2025 20:10:08 +0000 Received: by outflank-mailman (input) for mailman id 1159345; Tue, 11 Nov 2025 20:10:06 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vIugo-0006ga-Kj for xen-devel@lists.xenproject.org; Tue, 11 Nov 2025 20:10:06 +0000 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [2a01:111:f403:c201::6]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 6936e856-bf3a-11f0-9d18-b5c5bf9af7f9; Tue, 11 Nov 2025 21:10:04 +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:10:02 +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:10:02 +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: 6936e856-bf3a-11f0-9d18-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y1IQQZ1r+FmEzWH/eF1Ztj7bzpxozSBpPfDp3wnbup0FWHu26sKFrgwgbNh445EWXjYr854spdt8KoBZ+e2eTK0oQSMvw/aRXgEzcXXOanakulSuLgaf2J/lB+EpCN5yWGQ49RPViCWb1ezBmwwSjH2M5ITqWgTq1lD2ISk9W6oiA1juGxAgUpeSzoSZCGDpYl76ZksROzM2PcqzFVTw7tBVQv8IvYtrab0LCUH9oyzvU0Trx84lq7RIMnFi2x1cSZ+V1yYJPKQba/37hlErfGnRmblif2lkC+hNzdG8stYM0wR0wANTkyeXvYQ1nO6gmk4Tl+42HL/iCzTVCS9kqA== 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=d8EZAOrnw0gdKd/Q9kQCGyLZW6oOKG9lq6q0gkYa2kVxjHCYfVea9fZ+zKEQ+JapO+6qmiP7hus4Uw5EHXpExz1TFgV8AVmQ+qpCkURvifsWFrrdbFKXBBm5sv9O+qamzbqVXLv0QmkmC1xjUjHmI8sSkQ79Ns0LOYkzsDBh1oAS/QMZifbBKN55Ryz0Z3PxmEZ3Cd9StdmMTxqIT+dM60PwfoVCb35KCQFDcX6/2GqwMAM9hP6EOYJ54W/SAevbe934Wlo8wMJfGp89pfkYYoekhDvcIOQHT+d3CFk4b+RTZ+/vLrn0iVZe6FvsrjrKNlteIBydbdGWWcCFDlnf6A== 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=kbZjEuY77xQK4bpxt/23sGo5PuTz/s5WRtJuaOF767/RQzzTSfly0HW071CiC7buMDd2STBTkCwPVrF+FyCm/xcw7aJPUWMR5wqsKnrq7+uuJIX6wbm0qE3BG5AITOax0AofqCi1zRTbYqmG9FP65HxDusKYpD7AeG6lDKmllsAm12n4IDVhpgqgtsXm4w5xg2V/psEdgQEp5XeXt2ZNvypbQlZDpqA8muAM+erlCqSz+hRFMKvEQDyx6rzBPCr+3TRSUdf+CqokggszupVqrPeDdAkeXU17g+ZNyMr5t8YkNVgmemNtxb9+Sw1jFNbU4Smn7TmfOOlkQuzFCFEELA== 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: [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: AQHcU0cpl9PlXpLMdEqFkDnu6fI4GA== Date: Tue, 11 Nov 2025 20:10:01 +0000 Message-ID: <20251111200958.3576341-4-grygorii_strashko@epam.com> References: <20251111200958.3576341-1-grygorii_strashko@epam.com> In-Reply-To: <20251111200958.3576341-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: e7d1592c-4371-460a-8e6a-08de215e4c5e 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?/Sy/b1ofl7T4z1gQbENVqsAe7j/ZEWpojfGFqwiFbegmP04LDy8WI0uE/w?= =?iso-8859-1?Q?7HjYYm26eVd9ybrPHT+vpFyI1ZCjrodo7DH5nfSOLKaaJob/LgCj1FAtWA?= =?iso-8859-1?Q?BopxqCDD8/uTsGc/8qQtvF31cF7fuSI+fBE4cxuOgUTaqT30CXUIDkCRGv?= =?iso-8859-1?Q?OVV1+RbZTQYECEn4eI23GgXLO5BTESgmLXSZ/RATX5Ir37eAaPs0gk1BIv?= =?iso-8859-1?Q?1GofNqggKwtDVPzcrcLBqmsES79XdwZ3QopAuJsjr/l1MtVCCOewSAUB/n?= =?iso-8859-1?Q?f9q8vKs9aKC0v8rQgHU/rD+rxO82KZefU/pb/ouEp9vbcvbVpE7Ahc/wA4?= =?iso-8859-1?Q?iD+Nnzp/nkyWHG+892AcKq99NZC51heWh4CYoDTVVzDIqZnXxiBuhMyIpK?= =?iso-8859-1?Q?N+1t1vQxsp5wquTesiXH97L3f+MpvRGj4LTqCW6ST6kTKneP0aZYUiQZ1o?= =?iso-8859-1?Q?K70l0DJW6U67Cem1DI+4Tp1IThFP1brj6zhGrqVOH1wHxHQ6cApGimCwd4?= =?iso-8859-1?Q?G6P/xv4OEWwEj/V/RgeWunJ0ljJ4SBZyErXX55BYYLIgwjHltllUzk7YPp?= =?iso-8859-1?Q?IGqrQBCFWUHEy9BakMGF66pZZJzXTE+kYP/uZw7rNjAQOgb5821DNWHHoX?= =?iso-8859-1?Q?ga+ubkinVyRro+XLieVEBAUzF0XLJx3CjP1BC/+LMRMa7Z1Mw4p5tZdSsw?= =?iso-8859-1?Q?cYGk3PuEYoDT0+PkW2bAyroX9+iogd0cxdc4aqSEztD7CbIt+9CHsprg6M?= =?iso-8859-1?Q?pyflJZj7D4LyHcmCKooxj1uA4A4VPDNF8ME+LRLk8ClPereabzYgPxxvSL?= =?iso-8859-1?Q?KREGC0BUSq1iZZ2cL808aHdlChRVX3YVtMngRfnu6+ziBK5WySEFCGOY5Q?= =?iso-8859-1?Q?p4Lv2Soajd9/CLasj+3ycVbj0CRGs4WYwiKVknwe0IPCC4bwMHDw9vqRGw?= =?iso-8859-1?Q?UuUAgznMQ1rorqjjYppvKGbVJ3NwuCczZyG/XwEtQ/76wfgVjjDxgetO4O?= =?iso-8859-1?Q?XxspJxgbn7crfw2sfPf20lkojpUNsayyGNYOb5BtMLicvw8dnieitM6gBh?= =?iso-8859-1?Q?obbzuYSnQFmy6N542NhHSQmDDzduxmlEOFvtpmVDdVkQh1ddXoUkVSS3IH?= =?iso-8859-1?Q?YwHA+KDOxzKBj/5oO8lQTQEBxiGdxgSocqSlzDhLmwnkbQlMVnQpikFtTa?= =?iso-8859-1?Q?0QduhQFAaYKjcYytDPd+RZXkTrgdN6CsdP46o6OBT1Eu7AxtEG2Z+w8Yxm?= =?iso-8859-1?Q?7nQdmSJKnApuQ7O2BFRxzUrYvQhXnacIkWTRB8YfKySVC9u9DAMTQFEu+S?= =?iso-8859-1?Q?pEHbdG8d58rPkLkORCcWLa5lH0vn97kqiYYvMACKD/wnJp+J16N0pVYvUR?= =?iso-8859-1?Q?moLvo74dABJ+pV5acXeLSnevYMK2WcXCjWM9DdASIZnLl1nZeI5rISPVVB?= =?iso-8859-1?Q?DZu2kD/PyErC5ufJciAx4E34es/F5hHdbbHMBcY2LA1HsVw0gXEFzMltHA?= =?iso-8859-1?Q?TBOuju5MG5wyLjSPESEVbv1eSm3CHeNoVF1MO4h9HSiG/UBlz11WvSCOQq?= =?iso-8859-1?Q?1FIdLzBAN2mc52bmc5+5isG6yQkU?= 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)(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?I/GXpMxHUqj2ABUfDs0bmVe+LpOYXNd8dYyCkxFnPxiX6QCvZSOzDXwQ/A?= =?iso-8859-1?Q?o29gpVgXvP/FvC44Qx2VndiT/ooLEEgKibEsbuCErsDMCAyufl/SeWvwZO?= =?iso-8859-1?Q?UksgvGkbTBgqMEJwJc0+YjVE/KEjrsdQN98/GZuBB/cx2pq01+J0B1HZhM?= =?iso-8859-1?Q?uyImrlwIskWEtoOfKKClA9AxWsRZqNyoZRNkTrobWQaPy1JYgpGUyHGRNN?= =?iso-8859-1?Q?QShx2k6HxXMiVQxFNNBbtjLsovt0T5tIMxmZfIPuzjBsC1i4d9NkHhygWP?= =?iso-8859-1?Q?/1xHtLaCU/Wo3ajNypqP2I3DgsPSvOLjCilsa1jrpQOI0/KAKw+6bGooEm?= =?iso-8859-1?Q?lUWZp294qsNLZFkwsH2OjoSMsxDDMHoaElTkniTvRYMLGp9cL/V8cQT18U?= =?iso-8859-1?Q?9adg5vZdKwBi20gswbwqPJkICtueztAe9nyniGDegETqG7Ymib8s05iNIB?= =?iso-8859-1?Q?eDHdzth04EUe85NkBaGsLU0FiNyPIPfQmHHB4uOxlqP6WsMa7dQo/0/qK3?= =?iso-8859-1?Q?Jfj37maDcmakcN8bm71TUfMT/nB5zlxOoMnsgoUb9Qi79fEM5Kipn3MfCr?= =?iso-8859-1?Q?Rbb4O++WMi5TQ8v+EblxQC828k17wLaa9n8FjXmawzxXonv3vYllZLJxCY?= =?iso-8859-1?Q?QNt3hGjDNu62fkDUptJDgTn629N83FLuouvYb/ISXjFl3fFk0YdsUlk0SS?= =?iso-8859-1?Q?7eorZmASvziW2Jec5CBE5dUgv570OU3h5Sxn1qFpLaaZ+9HBNIE6QNfF6m?= =?iso-8859-1?Q?D8E1AMpzCmmeRXgevp9Dm2Vs5DiQjjAdFRgx0K2y6RQg28hsVgnh5KJaBB?= =?iso-8859-1?Q?yw0DUYm0MD2TB/QDljJ/mh+CYzAR+zP3IRXVLD9NghFX1zET7k+7SYnj+j?= =?iso-8859-1?Q?pzzp/Y3FI8mYlUUMvJSQ74YEJJHXQf2oXDZWQyI6RZ0kpcdIucxufM4Oqv?= =?iso-8859-1?Q?s5J4B1j1Iepa1TfVx3e6Vdds0WzmkRi3ngJj8BtgYGzxYD5J34r+vD2Ow5?= =?iso-8859-1?Q?TOhdXsBN87XdxgTyiVsVNfO6JTzkpnQb16PEzROiTqmH52rUE4dmrSG4q1?= =?iso-8859-1?Q?StkEiwAPZAcDznBkYhc88i3wehmj48fIEMb4vk/9NcyVr/z8FoYAGlyKem?= =?iso-8859-1?Q?B2Pao/odNrkyBSXgYSIAmzCkY3sL0QixaeL+cBlTkY/zWmkk2uWEHa4W/+?= =?iso-8859-1?Q?0qXiGgKVK7hahU5+lIJ1XJGapKNzv5dvzy3mYdJc5jeszcj9F80G51P2jp?= =?iso-8859-1?Q?GGPTa3hal0uuXV3dFXRGwF636pIEJZ/+Pr48sVuUXffxchLgdjZhRP6FCV?= =?iso-8859-1?Q?8jvVaHJkVsLFr9BMqRZtuXRIlh+sKurXxHWoP9togc3ByGqG5ujcVMIbck?= =?iso-8859-1?Q?4h46VoYYBbP0b4f+58aUF73zAtGtV2aYSpfoXqZ4wC4Ds7dpYIAPvrQHwc?= =?iso-8859-1?Q?DuvT4nmzxF7oZCy7XJ/yPvLMi4gwLtqpDrEQY0QnmQRPn+jiDUybAWhgHS?= =?iso-8859-1?Q?na1m+QuhFiq1MjL42Vt+fJ10JAdEiZYnQrqgwPxXdpTUa3VgoOwxoMEN6o?= =?iso-8859-1?Q?QwCMYLMAeaQDOkEb9H69Wyrj2h7w9JTJvXKHieWgZVXCnvW6yKTS4GfFFR?= =?iso-8859-1?Q?STEnlDUT/mIq24zpUCPHzOCgnvgXNvuM7STX8CbQQ6ud9loAiMsXAzuA?= =?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: e7d1592c-4371-460a-8e6a-08de215e4c5e X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2025 20:10:01.6485 (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: ILHPTK8Dbt8OMMIfS9/ttQDw1/PsoHOzILxRo0x18BgMv1PqKxQBWA58w50yF1k5Ifqhkh1qB0J5EmF8B+RYPozlXV2NR3OSc3IWtIX537k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7758 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1762891824069153000 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 Reviewed-by: Jan Beulich --- 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