From nobody Fri Oct 23 15:33:48 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876801; cv=pass; d=zohomail.com; s=zohoarc; b=cbmWkjWs3RGdvZx8hdGA9QfxXhAInUoYhtUP3eDzwCCJhPmv6YWIWvacv+zG1RwzIA2tGf2wAxdGafWJjI9Pe3kJUgErXQAdzwhteWU5JJX7/SOei4Zn2o2ZGPec9GncfmJ7ebXynjYR36dbjRIMxe8+i9zXu5Ajj9qWLGRQwh4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876801; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o6J5mtRqMkkYJgCnuFbTlfm0vxzMbd7IsBhqGcPmZ0U=; b=Hz0FMUs8ocstNsOjzTqqN5IigEVflHhdTTAkiHD5Oj49SNT2NOapCRjM7z0NG6WFC/8fGmuinqrSLhLKg/th8NRoFKBJlKEGzNFDzW2r9JswJgYu0W8s7IOxAfC1XQo6H3j1eBi+AMfYxuN2VfA4dh9flm6WQJitz8x6xCSxi84= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1790876801658389.3705070553624; Thu, 1 Oct 2026 10:46:41 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438579.1657296 (Exim 4.92) (envelope-from ) id 1xCKrN-0004tc-0p; Thu, 01 Oct 2026 17:46:21 +0000 Received: by outflank-mailman (output) from mailman id 1438579.1657296; Thu, 01 Oct 2026 17:46:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrM-0004tV-SQ; Thu, 01 Oct 2026 17:46:20 +0000 Received: by outflank-mailman (input) for mailman id 1438579; Thu, 01 Oct 2026 17:46:19 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrL-0004sS-7Y for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:19 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrK-009PVE-Kc for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:18 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c4d-8faa-0a2a0a5109dd-0a2a4508d8ea-38 for ; Thu, 01 Oct 2026 19:46:18 +0200 Received: from [52.101.56.34] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c68-f659-0a2a45080019-34653822a43d-3 for ; Thu, 01 Oct 2026 19:46:18 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV3PR03MB7658.namprd03.prod.outlook.com (2603:10b6:408:28d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:45:46 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:45:46 +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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=q8by02G+UCdBylnn+ydknUyzzkgW+FK3e26F5jeg2iXyIvqv5goncWog5RsVHamkXBGidH11mYvCt57kwKF2QUc2rnXO3VWGNcaTGbnom/EXTba1hLjF+Tet5mmew+SeWI8INXR2neBMa8bqgzkMOGL7yEax5G/8LZmsogBDQNzS7of2iGCSEMrwSPNAj/0uBy2VvdztKe1jjDKpAE9HieIZVvcd7slvpB2g6P1oLtNI0k476Pssw7CC3+0y5c20RrtjLZyPL+8NmVE1pEbfasnvz1tFxhpx3DpILfs97flvSBpHAtoWA1eQsz9JA3N7K8J42M39wCjdpH7Kkl81fQ== 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=o6J5mtRqMkkYJgCnuFbTlfm0vxzMbd7IsBhqGcPmZ0U=; b=rNGAx8nVzkfpVbC7Fv2fr5oeYdG6RSpYzWcvzygiZb/0ZmbbONRngn89DbkhwZ31vRnKv3JljuJ2x1WvuLJmKi6cYGoqyQV73vqRTOI0F6eXMrxlssTMQuUJlENGJdV7fEl9oZFUtJtjJWzoaGk6Lncc3QeNrxB+YrBCDbfyAdGL3DohfsgNQkJ9f8X2+8zS6KMKXTaxyWL5BXtdSTYDoST3oyJnRtuVqpDsgViZPAOKgGUP8LJmfFOl6ez+icmegyEsWO6Cp4XvlEM3E5Sn5DsUeS1XvT2LSvgjSBKcKRk28514iI10GZaZ9+hfbpsNMxXk8a9EUufN7uJdJD3ACw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o6J5mtRqMkkYJgCnuFbTlfm0vxzMbd7IsBhqGcPmZ0U=; b=x5s3zieBZq3UwMuym8X4oG746w+cJHpQUd9XZgjWeBWONZ7zcGYMUrPUWqjs4VPa6w0Gue4bvrqWJrXkIIg2jlSegA9Wy04XqMJKWrFMY5QYY65JrYu5ESELx0ieYCK3SFw29UiMSmwOrHObKvGf8fF7qeVKbRzEUH+XcjE4oRI= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v3 1/6] x86: Remove return value from UPDATE_ENTRY Date: Thu, 1 Oct 2026 18:47:44 +0100 Message-ID: <20261001174749.2275245-2-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO0P265CA0013.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::8) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV3PR03MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: a9372c10-5c13-4cee-e5d4-08df1fe3d2ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: 7m2xm3kjFwBVdSh5aHc8e+Z295PbqMKJ6lCYSSnVDCKkjVtcKLJZffFClJXb+rv4ClpEXga94449ykQHPG4UoouadIwlq3Vj4Go2Dd3G70scqzSq3elVv1g8exVJGUuIMG8fNDs37D52BRq7eW+rdMcpYOH30T593/J9umDZmO79w3E8STLYYYDd+xFkETyCTs6XTO3GKFUp66y0zwoiqah0+S1//sPIQaxH6XhxVx8/YGuw4HyD7MriYVoKSRHRFDNKxL9VIfYgFb8A7eKies0B/Nuc4j84SvkiI/9uAvYTEHmQ4GThGiBu+K3f9HcCGPgxivizntIOE615HnMHNKmjVcBFYC073+U5DMH54+qmk14tvoImVliCTtNV6GakM4x3o0N+i69C4C3AxT2vafFN1Ml3IcYRpChd0ke4fJkX7Z5CR+3gacLebTi9maRMKGvrzDBe03uBgeYe0pI+uIjaqeD8vdkexZ65ON3tP83AYt59a/bGHTgsaGAGd2+CR/PH7AQhNhUu7Bas6Yp+L01vO33TgjBHy911KrxLsv9gWf3mc2soNay8S0yJT4pFdupolvyiy8EgSEOJTWu6eHhWdcEWLTOU/D1UJ1/1vpIRX/jJz6KLQSi8cf7Yf6pUyhV+B1PRTt7USH4wMxqqyYac1XEfbU256rLZjBT9V3w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OKFsOJIS6ry7+pwPWpnNhElPA6IGl6zy0lnn9mHwQPiLC6RxLyul/1QolwLg?= =?us-ascii?Q?xOiwD7bbjkpy2LovLWe1zqCMuDhZqRQwvEN0Dnn9y8u/rkryhTuZHxqVKVfA?= =?us-ascii?Q?wDwONJflWnnQsWqTzJI2654WpYbafgFTm7t4IjZdr/Q60+cRTLHnu4/z1tY/?= =?us-ascii?Q?t7Om2U7Sk3mHuydwDn14k/f9PvZwpU2QqSs1yLfqnmD0COGc5w9hzHhSuuMN?= =?us-ascii?Q?ywOfUE2ymQhyAiB+ditxRgMzOywU8FKhWyRcf0qDf5W97oeZJwg6ebiSmj5L?= =?us-ascii?Q?UmGlE2cPoglo2GNlZkLUZNXF4TjRno88KE3NPt3eTzb4dfeEvNx15VHICj9T?= =?us-ascii?Q?zbuABWbQI1QjGrkP1ZRpxURkjHzd4A3T4ak3eNl1OUVnX3+v32zcj7Yucbr1?= =?us-ascii?Q?zA6dDzfbbtAAhpoG4xaxvLBB3FX80OiuSWFqEWBwoLw8AcOsZG7AZ51w2Gq8?= =?us-ascii?Q?yfNJAWC4xE00KTQK54lTmfm/T8URaKOsj3Ma/g7fkHCNe3OrnjxSBbUhNfnO?= =?us-ascii?Q?RBe6xFeoSl0v02WUMctr5miYFpk91e6Jb3Oczzwt02OWAWA7OLw9b0YCcB9J?= =?us-ascii?Q?L+hUCv6imwyBumMOunqVqtJCYUQkVYDgC5I5CuEs4xp684gZ1APcDJeF5slL?= =?us-ascii?Q?i1p00IWJACs4pEpiIfvH4GUAjpluq+/A1/rjqrEaRJFnb+aw5pBDdIPed594?= =?us-ascii?Q?B+tl8//d1xaWKkjSnVD4vhsONSGl2Te/BD21XrcZEX618ahhbnErGmeF73e1?= =?us-ascii?Q?yWrME0uk37Xe4Is5sAnSNOEdX+Vd7LlQLFr2+/EQ0k92sts5QlaXtKZBN4aO?= =?us-ascii?Q?tykrNytW5ZdBKn+IkCFysC9VGc/0v6JiWtPfepZ5ZAAY4+tIXCBOr6zqu7jC?= =?us-ascii?Q?uLmlH3vpSs7E0Dmh8CmxqjIQVtNgYwIxjLBS4Ax3SyP1Ch4ziVCt5sNaVkKD?= =?us-ascii?Q?9+4+4zpi2979bWqLXyHsskaFMubbi1uGbI8QemwHdgBPhnmU45r9qdfzz47Y?= =?us-ascii?Q?tyVRaJcIQX/ix3QRU8JHhv35LuSyPnbGGrsE7p0qjDVMngl/O6HnVHnBgbZk?= =?us-ascii?Q?jEj1y9mFKfe1kzFSIkDUhVZFgSlDrsH0vZKNqqpJbivaq2teThNBq/759HhS?= =?us-ascii?Q?02U9QNzLNgBSec7ydQnVWexv57GPnYs+TOar/OgqbjzVYrUsfWh0Qa2iVYQZ?= =?us-ascii?Q?ni2OpsfVnHrtyWRmWZ2CtbvRFWHGMZgC98PuNSKWkOpKXcAfwlEQL1xrgEb6?= =?us-ascii?Q?dSLkhL7Vs2zZtG9XuJ7IPFsncAxQSU2JpIZoPw5gVMcxTWBxV2teB7ulVmif?= =?us-ascii?Q?P1gAWmkx46eR1iOkp2xg1JYkSnci4gjiXFQ8VH0t9C5mQ451avUhbHhHBHRH?= =?us-ascii?Q?G/VUzb6eyKcqPuVtu6h6PZEGNrOj85T5yjRfUWqgPI6wBfFLxh7SyRGscKd8?= =?us-ascii?Q?Egm/r6pCXqTy8xcykstPTGM6ZObFMbAbBJlRyQwfSHB/PwT6j4TOJuUV+N+m?= =?us-ascii?Q?nGNw5ofMBVeyqJJ7iaa2QWcq3BDO+AoF0hLmhCfskxIZx+JukAHR97jg3Xu/?= =?us-ascii?Q?9lDw0JiWrGzz7LFqgtO302b/bWgxb7C1fq+/dA7ntcLQRka8q2wciq7rsECq?= =?us-ascii?Q?mdgH7+pDYzJObePSf2TsGamwcSnNzQJSf9ynnj038KDf+q45DyaFQQGP5/5Q?= =?us-ascii?Q?MmOQNLODYPbh/U13HcBRfzqudAFD3gJ4iTUpUJDW1Zm6dOhwN0xaew2mdepA?= =?us-ascii?Q?roBsQOk2iw=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9372c10-5c13-4cee-e5d4-08df1fe3d2ee X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:45:46.8252 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uXWfbcaGOuJApmsuCkEo6X/eld0BzPnIUTzKQguaI9va7WurVtwfXCuEls2sAomRBYNCsImP0ZeMrt9BlT5iZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7658 X-purgate-ID: tlsNG-c1860d/1790876778-D6D4087B-5CE6C553/0/0 X-purgate-type: clean X-purgate-size: 10413 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876802231158500 Content-Type: text/plain; charset="utf-8" UPDATE_ENTRY/update_intpte always returns true since 1bc30c076a7f "x86/mm: {paging, sh}_{cmpxchg, write}_guest_entry() cannot fault" Signed-off-by: Kevin Lampis --- Changes in v3: - None Changes in v2: - New patch --- xen/arch/x86/mm.c | 74 +++++++++------------------------ xen/arch/x86/pv/grant_table.c | 53 +++++++++++------------ xen/arch/x86/pv/mm.h | 6 +-- xen/arch/x86/pv/ro-page-fault.c | 3 +- 4 files changed, 46 insertions(+), 90 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b1bbecc7d7f7..1ddb8b71469a 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2215,11 +2215,10 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgen= try_t nl1e, /* Fast path for sufficiently-similar mappings. */ if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) ) { - rc =3D UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - update_flags); + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_fla= gs); if ( page ) put_page(page); - return rc ? 0 : -EBUSY; + return 0; } =20 switch ( rc =3D get_page_from_l1e(nl1e, pt_dom, pg_dom) ) @@ -2239,20 +2238,12 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgen= try_t nl1e, if ( page ) put_page(page); =20 - if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - update_flags)) ) - { - ol1e =3D nl1e; - rc =3D -EBUSY; - } + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags); } else if ( pv_l1tf_check_l1e(pt_dom, nl1e) ) return -ERESTART; - else if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - update_flags)) ) - { - return -EBUSY; - } + else + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags); =20 put_page_from_l1e(ol1e, pt_dom); return rc; @@ -2295,28 +2286,19 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, /* Fast path for sufficiently-similar mappings. */ if ( !l2e_has_changed(ol2e, nl2e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - if ( UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flag= s) ) - return 0; - return -EBUSY; + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); + return 0; } =20 if ( unlikely((rc =3D get_page_from_l2e(nl2e, mfn, d, 0)) < 0) ) return rc; =20 - if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, - update_flags)) ) - { - ol2e =3D nl2e; - rc =3D -EBUSY; - } + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l2e(d, nl2e) ) return -ERESTART; - else if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, - update_flags)) ) - { - return -EBUSY; - } + else + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); =20 put_page_from_l2e(ol2e, mfn, PTF_defer); =20 @@ -2357,8 +2339,8 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, /* Fast path for sufficiently-similar mappings. */ if ( !l3e_has_changed(ol3e, nl3e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - rc =3D UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_fl= ags); - return rc ? 0 : -EFAULT; + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); + return 0; } =20 rc =3D get_page_from_l3e(nl3e, mfn, d, 0); @@ -2366,20 +2348,12 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, return rc; rc =3D 0; =20 - if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, - update_flags)) ) - { - ol3e =3D nl3e; - rc =3D -EFAULT; - } + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l3e(d, nl3e) ) return -ERESTART; - else if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, - update_flags)) ) - { - return -EFAULT; - } + else + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); =20 put_page_from_l3e(ol3e, mfn, PTF_defer); return rc; @@ -2419,8 +2393,8 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, /* Fast path for sufficiently-similar mappings. */ if ( !l4e_has_changed(ol4e, nl4e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - rc =3D UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_fl= ags); - return rc ? 0 : -EFAULT; + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); + return 0; } =20 rc =3D get_page_from_l4e(nl4e, mfn, d, 0); @@ -2428,20 +2402,12 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, return rc; rc =3D 0; =20 - if ( unlikely(!UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, - update_flags)) ) - { - ol4e =3D nl4e; - rc =3D -EFAULT; - } + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l4e(d, nl4e) ) return -ERESTART; - else if ( unlikely(!UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, - update_flags)) ) - { - return -EFAULT; - } + else + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); =20 put_page_from_l4e(ol4e, mfn, PTF_defer); return rc; diff --git a/xen/arch/x86/pv/grant_table.c b/xen/arch/x86/pv/grant_table.c index 1df68440a24a..38767826f5d8 100644 --- a/xen/arch/x86/pv/grant_table.c +++ b/xen/arch/x86/pv/grant_table.c @@ -98,18 +98,16 @@ int create_grant_pv_mapping(uint64_t addr, mfn_t frame, goto out_unlock; =20 ol1e =3D *pl1e; - if ( UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, curr, 0) ) - { - /* - * We always create mappings in this path. However, our caller, - * map_grant_ref(), only passes potentially non-zero cache_flags f= or - * MMIO frames, so this path doesn't create non-coherent mappings = of - * RAM frames and there's no need to calculate PGT_non_coherent. - */ - ASSERT(!cache_flags || is_iomem_page(frame)); - - rc =3D GNTST_okay; - } + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, curr, 0); + /* + * We always create mappings in this path. However, our caller, + * map_grant_ref(), only passes potentially non-zero cache_flags for + * MMIO frames, so this path doesn't create non-coherent mappings of + * RAM frames and there's no need to calculate PGT_non_coherent. + */ + ASSERT(!cache_flags || is_iomem_page(frame)); + + rc =3D GNTST_okay; =20 out_unlock: page_unlock(page); @@ -165,10 +163,9 @@ static bool steal_linear_address(unsigned long linear,= l1_pgentry_t *out) goto out_unlock; =20 ol1e =3D *pl1e; - okay =3D UPDATE_ENTRY(l1, pl1e, ol1e, l1e_empty(), gl1mfn, curr, 0); - - if ( okay ) - *out =3D ol1e; + UPDATE_ENTRY(l1, pl1e, ol1e, l1e_empty(), gl1mfn, curr, 0); + *out =3D ol1e; + okay =3D true; =20 out_unlock: page_unlock(page); @@ -293,19 +290,17 @@ int replace_grant_pv_mapping(uint64_t addr, mfn_t fra= me, "PTE flags %x for %"PRIx64" don't match grant (%x)\n", l1e_get_flags(ol1e), addr, grant_pte_flags); =20 - if ( UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, curr, 0) ) - { - /* - * Generally, replace_grant_pv_mapping() is used to destroy mappin= gs - * (n1le =3D l1e_empty()), but it can be a present mapping on the - * GNTABOP_unmap_and_replace path. - * - * In such cases, the PTE is fully transplanted from its old locat= ion - * via steal_linear_addr(), so we need not perform PGT_non_coherent - * checking here. - */ - rc =3D GNTST_okay; - } + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, curr, 0); + /* + * Generally, replace_grant_pv_mapping() is used to destroy mappings + * (n1le =3D l1e_empty()), but it can be a present mapping on the + * GNTABOP_unmap_and_replace path. + * + * In such cases, the PTE is fully transplanted from its old location + * via steal_linear_addr(), so we need not perform PGT_non_coherent + * checking here. + */ + rc =3D GNTST_okay; =20 out_unlock: page_unlock(page); diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h index 3aac0f3309a4..bfee0feb7b21 100644 --- a/xen/arch/x86/pv/mm.h +++ b/xen/arch/x86/pv/mm.h @@ -67,13 +67,10 @@ static inline intpte_t paging_cmpxchg_guest_entry( =20 /* * How to write an entry to the guest pagetables. - * Returns false for failure (pointer not valid), true for success. */ -static inline bool update_intpte(intpte_t *p, intpte_t old, intpte_t new, +static inline void update_intpte(intpte_t *p, intpte_t old, intpte_t new, mfn_t mfn, struct vcpu *v, unsigned int f= lags) { - bool rv =3D true; - #ifndef PTE_UPDATE_WITH_CMPXCHG if ( !(flags & PTE_UPDATE_PRESERVE_AD) ) paging_write_guest_entry(v, p, new, mfn); @@ -98,7 +95,6 @@ static inline bool update_intpte(intpte_t *p, intpte_t ol= d, intpte_t new, old =3D t; } } - return rv; } =20 /* diff --git a/xen/arch/x86/pv/ro-page-fault.c b/xen/arch/x86/pv/ro-page-faul= t.c index 34349e9437eb..f6baf371926b 100644 --- a/xen/arch/x86/pv/ro-page-fault.c +++ b/xen/arch/x86/pv/ro-page-fault.c @@ -200,8 +200,7 @@ static int ptwr_emulated_update(unsigned long addr, int= pte_t *p_old, else { ol1e =3D *pl1e; - if ( !UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, mfn, v, 0) ) - BUG(); + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, mfn, v, 0); } =20 trace_ptwr_emulation(addr, nl1e); --=20 2.52.0 From nobody Fri Oct 23 15:33:48 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876797; cv=pass; d=zohomail.com; s=zohoarc; b=kSov/ivs9SeIQ5g2g5+u0a1XBeUfnWwQcXSGccwznaZxruoScAaXDNypA5B/02FV+xIq5ww7IYb2aOS3CtMv/Qn/jPo58HUcfLaVPSIidv/7ygET8HyhbJEvYXVweUg9BglVWMkKVYPsWgr1l2829FyQHDlrGeDytzyjB6RbSPM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876797; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vZP1qWvcBKGy+An2YvUS92jnRpESFXMLGTu4MwG7Q+E=; b=fUT5yLId1ZLuV/cMEx7NcCafX+bnNrLrx1zH0pXnZ0M8nFFt93pokXhe/EBwNWYd6qA9Y8gxgKjmVrrVMYmuieAvwjC5bvu/6v/a3TB8qsgOzXn61+ram14tkKJv5Cs73XZ6GQswyYne/f5PgKunmm5SyTbBEv6B18NQF6U8jfY= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1790876797082175.48901868119844; Thu, 1 Oct 2026 10:46:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438580.1657299 (Exim 4.92) (envelope-from ) id 1xCKrN-0004wB-8O; Thu, 01 Oct 2026 17:46:21 +0000 Received: by outflank-mailman (output) from mailman id 1438580.1657299; Thu, 01 Oct 2026 17:46:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrN-0004vp-4C; Thu, 01 Oct 2026 17:46:21 +0000 Received: by outflank-mailman (input) for mailman id 1438580; Thu, 01 Oct 2026 17:46:19 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrL-0004sh-Op for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:19 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrL-009PVE-5h for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:19 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c4d-8faa-0a2a0a5109dd-0a2a4508d8ea-40 for ; Thu, 01 Oct 2026 19:46:19 +0200 Received: from [52.101.56.34] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c68-f659-0a2a45080019-34653822a43d-4 for ; Thu, 01 Oct 2026 19:46:18 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV3PR03MB7658.namprd03.prod.outlook.com (2603:10b6:408:28d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:45:52 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:45:52 +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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bCdrN+1icuEEUNxB/NlzkCfdm4CSTQeIMaxzvAUtaFkvdFl8jlvrMIXpWDIkP6rDZi4P9ADl0yzaBt+W/s0Fh8NjfH6rr4vaxpzNVp36BSujn7gowCNvd3RShBUAaNiczsDO5M4+TVFoPH261PmBx0Ew87hmKw2+0DJSk7FTuaOtWKsGdVG5u/Vm+R9oRC24FNCjQhkxnCwpbbAn+KLHPE6VC+NArBUVJxvXIOg5D1iYQt9ZUwYA9eKqlDaPQburikIixFyINF5JXPKG+8UjdW7FI4G+4iSiKNB3yyy1kx4BJehkGnhPOX0rdAY7KiwhEgd6fFPQwzErpC5M37ue9w== 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=vZP1qWvcBKGy+An2YvUS92jnRpESFXMLGTu4MwG7Q+E=; b=gtoCOM2E/zp8S/llem+ko8SZDq48rhY012FVQDTT4hT25xvH02hyAnXiy/q7R/f/U3W5hLfgEkUusGr2EtWWf+vNU7fGr8+kEaOaKBYikylz4Y+3TP4UfkRPyNXwuXy9B/FkYid1AfO58+Kj30l+yQuoJH6ZroKID20pHeAxXEOtuTN7PuVlNy1nDhA5ptxDYmsv1msx2lKf+KBT/C8BkslS8OkXENyU10a6M/6DiRUOnefsUyo/rkTVE+weK6mNVlbN0DqsYiOwa0qu/dqzPiAQiWsiol9mRhubhk7prlASi4N++D9C8wdTH6E6j7Pu9CLrnPHezjiN/D9fDzARog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vZP1qWvcBKGy+An2YvUS92jnRpESFXMLGTu4MwG7Q+E=; b=gpBFyQ7FMvK3Nq72Y6o09Q8U8e79H+GznPiDJXHH6WljfSn9IeaVQsfhLcTUGGErJ/xAUsHhIYmCCVND2N2Tpyl43w03crIG0rid5CvsDSaVyUvBcxUv6i4hVquWIHt7EYw8jaKt85V9O4AVKSOwdGCdNtk4iY25Cx9UVqyXpBU= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v3 2/6] x86: extend update_intpte() to support atomic get-and-update Date: Thu, 1 Oct 2026 18:47:45 +0100 Message-ID: <20261001174749.2275245-3-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0395.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::22) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV3PR03MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b8cfe6c-f47c-46d3-4c9e-08df1fe3d615 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: Rm/ob5e5sARmqFN3HzBGAqygO/EUMSdNxhmV/e4PomMZlUqI4U7HDeNid1WEn6ICos6fHfb9ECDWE8soyIT92pQnu5flZYYC05r2l53ZIc5qO1y9C+rTVgg5t503pFVEQjcXfF0RaFrw1iJu6QIx6Jlen88WrlyFkSFVIj8UftWB8+Z0RFnYdK8kOmJQHjpIfOO6H6sl1IJ/ydQGIdx9w7ekSFHkPLW99QNjiM330SnizTOgr+inp4gcGwGYf6jz1hrNIVeuNXeqxKPbHkWSiiEJVPTwQX2osPerAw+SVIZUlWWbeXrk3LnNaucduxI+rD6fZ+YdoJzQTQ/rwFRHIqYsIzXDYNKFsY/7s9gIETa3LI/IMgMBoissgdxpa9Abd7tCw7lF0+PgeqhCvhsviX7Ur8cZ47pXLlPea8QdtGyKTH81HP7ihPekZm0CtROiHz30811HeoLelBfqxjGmOfnRJX0JPugIr2dXcy4loyJkQDPZDN5CjdTPeSEFmQaqUkJwCU42eBX+pniF7cAWYRQI4JNPaQCkCoM4ihsHhcI5rOUXXYsw/IvNVVd+fSVzs84/8z9HHnwUyrFWHZ47frjxicKjN4qGrLVI2g3X7hh5i5IZS7blxYD5V5fpZFRAYXGMKwcRSZ3sVh4zRJRpCUB/s3thvpQqJYUMOq8MYXs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?n/L5DH/FbgISSNlzRQRGWAriYThALBO2HDNWJ9z6/138ub2YiXnryftoHP5j?= =?us-ascii?Q?rlTt6v6HXoWVJmX5204L4Et19Y8nQ5ESz5mKtmtp0hCuGj8GahgKjepN+Eab?= =?us-ascii?Q?MMYkYL59DmQjeNOKXkuHNtkxymqHSvnJ5fFJpP0myntkg/G/qzzUHcYEjMDg?= =?us-ascii?Q?hMksXdHklq5K43pYKNZxmgQDcmdPnQOYnE+9OBA8+lA1LPfwDivmWjjxqjQI?= =?us-ascii?Q?RRjmx3D226ZdqJ5IvzQQ0sZkVChvJ95xLKKbU6+A3imI+g3VhTAUn/aG35t6?= =?us-ascii?Q?HyS1KBRYHtNlJrOVMtiQOemm56BiT6xPUppwCjwHfyxOcxEqRkIpnhfteJGy?= =?us-ascii?Q?Ivx8OnMgKvrizMHk/isq2I7CCfOWXirISG9izbQxn+YmqoQhoNB+nRXCCRf7?= =?us-ascii?Q?2ac9NZtCgAptGkBNZiXpWxG5zSG0/F6HRT18grWAzyouVnfuwGr5q5ki1sOD?= =?us-ascii?Q?JYdHIpg4rygPjP5EfJ5D9cYc9bC/+8xAfJfDKuQNcD65p8q8cVN09VmkK/Gl?= =?us-ascii?Q?r+wAVAK8Sc0GNbcO33f9Dc5ms28liDTDBRkwXWDTwcS1DXo6pgyr0VA/m3tv?= =?us-ascii?Q?4e0HLvYh/7M+QpWrZny/pP59Ln+biOUB9YaZ1D2+DB6dB2p1qUFlW79+AKob?= =?us-ascii?Q?UajJAj06E9/iKoVWbCt/zJ4sgXMv2vCuko8QXsyZcB8oc9DEm7BHWXVzJogF?= =?us-ascii?Q?Hm8gYnnqnVJFfSIG5mhnTJaZ9dNww2xoIF/QM5iZn8RprttC4B4+eKJ6uYT0?= =?us-ascii?Q?3nD42M94NR32JjImzekLXG3/xcKJlPjcrwFvdSki6hOzcqHiTfkX6BxRHDuG?= =?us-ascii?Q?3vvmJp6UKNJBVF1qT1QZy6TENZ9VR2IS/6D7VD0Mj/A6ukD8+jnpA2rmRbz2?= =?us-ascii?Q?yQah9JGL4sbgYpvdgIhA7+ojl7IS5sOEWa/tdL6rHDNCu4fVZkBSIl38DN+c?= =?us-ascii?Q?0JcG96F9bfLHp9nW8zqyHizQLvjJIjpXsTSUdsPNyGGeTn3zhflOzmeKftn8?= =?us-ascii?Q?yCcnaQ4lYsUdOS2pt3nlFH1xp2FCXvW8Pc45z6nCobkRIq3Ue9XdYvJeMFrb?= =?us-ascii?Q?yK1X3hD4UgzIi0NYM1J9bDTNCejmbQR88oliAZRg+Yzi9A3vnCbD7OLW+ZYm?= =?us-ascii?Q?NNppYJVNAgRO8rBsUxKrwOBX9ohGEjoT3pyIu32al1ZMNmUJmZ7CmzhYz4l8?= =?us-ascii?Q?pzTfr8pOWVDhSbDw8lqf8t576zJyY0ZUIK/1pYZiEmMxdl8EFCF9fKXeFNgK?= =?us-ascii?Q?bM/E1AKItCho5Sj2fgGmESj8kVaXOAxP33ZGXmnUTfN6Lyc5HiaH7dPZmBrt?= =?us-ascii?Q?vPtiU/Y3uPy9nxjO15lqq8KLwHN9RG5YAf9r4r3bMqlxgxeyGlcZtYohWxVR?= =?us-ascii?Q?OC9eqD+gFQBv+FogQCkjGLcSnJrVHDP+bcYaSqFJyQVsIUdLs5A1hGC3KoCf?= =?us-ascii?Q?5iMr1Tyk+hqubfbWd/Aeeu15mG0zLFS0xd6OMqsBgQifoXX8ODDFHtLA7ObH?= =?us-ascii?Q?yi+mEVPs6IUaSIdr2dCJNRtLXFUodLyCX4PIUebXPoL+3JYhJ65QnHuv0wc1?= =?us-ascii?Q?GarC7qAO5gCeQpBeYJi1fCWmCBAuGMKAKMBCqyxlir59FNEvH78KrTtog8V4?= =?us-ascii?Q?CyPJZuReZEM3TYUr+VKTw7+R5DKVnXnYKezmpmX+O1TW7fAHnilpQgEjwDJh?= =?us-ascii?Q?Hn3Xnc981rl7PbkdlYNjNg6sMLVeFliRKopqd5qR3r/rzC2DKPde5OKK/ron?= =?us-ascii?Q?/jfu+TgYDQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b8cfe6c-f47c-46d3-4c9e-08df1fe3d615 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:45:52.0245 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9xx4sn3GdeptJYEWuYBO1Ld2GratQnC/I+6Kj5Naw6nhgLTg0Hzja1UVroPo2autyYKTX3dR7Sye5w0zDYTilA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7658 X-purgate-ID: tlsNG-c1860d/1790876779-D795A87B-0B713DCE/0/0 X-purgate-type: clean X-purgate-size: 3025 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876798066158500 Content-Type: text/plain; charset="utf-8" The update_intpte() now accepts a new swap flag and if set returns the old pte value. No functional change for existing callers. Signed-off-by: Kevin Lampis --- Changes in v3: - Return 0 in the paging_write_guest_entry() case (update_intpte) - Add UPDATE_ENTRY_SWAP to convert return value to correct type Changes in v2: - Add new PTE_UPDATE_SWAP flag instead of a bool argument - Return the old pte value instead of turning `old` into an out pointer --- xen/arch/x86/pv/mm.h | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h index bfee0feb7b21..363db35b5fe3 100644 --- a/xen/arch/x86/pv/mm.h +++ b/xen/arch/x86/pv/mm.h @@ -64,16 +64,23 @@ static inline intpte_t paging_cmpxchg_guest_entry( =20 #define PTE_UPDATE_PRESERVE_AD (1u << 0) #define PTE_UPDATE_NO_TRANSLATE (1u << 1) +#define PTE_UPDATE_SWAP (1u << 2) =20 /* * How to write an entry to the guest pagetables. + * If the SWAP flag is set then does an atomic swap and returns the old PTE + * value, otherwise returns 0. */ -static inline void update_intpte(intpte_t *p, intpte_t old, intpte_t new, - mfn_t mfn, struct vcpu *v, unsigned int f= lags) +static inline intpte_t update_intpte(intpte_t *p, intpte_t old, intpte_t n= ew, + mfn_t mfn, struct vcpu *v, + unsigned int flags) { #ifndef PTE_UPDATE_WITH_CMPXCHG - if ( !(flags & PTE_UPDATE_PRESERVE_AD) ) + if ( !(flags & (PTE_UPDATE_PRESERVE_AD | PTE_UPDATE_SWAP)) ) + { paging_write_guest_entry(v, p, new, mfn); + return 0; + } else #endif { @@ -95,17 +102,26 @@ static inline void update_intpte(intpte_t *p, intpte_t= old, intpte_t new, old =3D t; } } + return old; } =20 /* * Macro that wraps the appropriate type-changes around update_intpte(). * Arguments are: type, ptr, old, new, mfn, vcpu */ -#define UPDATE_ENTRY(_t ,_p ,_o ,_n ,_m ,_v , fl) \ - update_intpte(&_t ## e_get_intpte(*(_p)), \ - _t ## e_get_intpte(_o), _t ## e_get_intpte(_n), \ +#define UPDATE_ENTRY(_t ,_p ,_o ,_n ,_m ,_v , fl) \ + update_intpte(&_t ## e_get_intpte(*(_p)), \ + _t ## e_get_intpte(_o), _t ## e_get_intpte(_n), \ _m, _v, fl) =20 +/* + * Macro that wraps UPDATE_ENTRY. + * This version converts the return type to l{1,2,3,4}_pgentry_t + * The return value must be used because of compiler flags. + */ +#define UPDATE_ENTRY_SWAP(_t ,_p ,_o ,_n ,_m ,_v , fl) \ + _t ## e_from_intpte(UPDATE_ENTRY(_t, _p, _o, _n, _m, _v, fl)) + static always_inline l1_pgentry_t adjust_guest_l1e(l1_pgentry_t l1e, const struct domain *d) { --=20 2.52.0 From nobody Fri Oct 23 15:33:48 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876803; cv=pass; d=zohomail.com; s=zohoarc; b=DtZ2x58lWQgWVfhfYhKquDskeozN18z7ZTHcM1KKcwdWAegbGshHcH1MGe+n2AXsom8YaGikakcJt+W4xYwsXrMZai9NWVD+5H4UazrBPGYZ8hdHl0SdeYo3ftpxovQDLWEnTZ5T/7l00/V6WVRr8z0B2BsGPqOuYkKAPNRdy/U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876803; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pQ+J3wc2JXd52VnbMqfcY5c0kIzjo5Lek38sZL8Kkbo=; b=FBmMiDmN4CZu8uq8NiIu4axkjVjB4nvtMyFsseZBE8ddCdUyOfnDpW4txt8nVjVDfVNBZvjTgtT81WUKWYCWlb+Yd1lg3GixGOFnhanawfjn63svEb4ZUraLEFYYmEqqsiA6oChW0X18kr7/+dKefbAMu84/+s8p7mZk12risSY= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1790876803857477.6639648175951; Thu, 1 Oct 2026 10:46:43 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438581.1657307 (Exim 4.92) (envelope-from ) id 1xCKrN-00053O-R7; Thu, 01 Oct 2026 17:46:21 +0000 Received: by outflank-mailman (output) from mailman id 1438581.1657307; Thu, 01 Oct 2026 17:46:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrN-00052Z-K3; Thu, 01 Oct 2026 17:46:21 +0000 Received: by outflank-mailman (input) for mailman id 1438581; Thu, 01 Oct 2026 17:46:20 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrM-0004tN-Md for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:20 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrM-009PVE-3L for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:20 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c4d-8faa-0a2a0a5109dd-0a2a4508d8ea-44 for ; Thu, 01 Oct 2026 19:46:19 +0200 Received: from [52.101.56.34] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c68-f659-0a2a45080019-34653822a43d-5 for ; Thu, 01 Oct 2026 19:46:19 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV3PR03MB7658.namprd03.prod.outlook.com (2603:10b6:408:28d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:45:56 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:45:56 +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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XGHpgIzMzfDZSQzPJnE++QRrzIaLi0BdGN/7DYH8rjVFnVZVSKMrwhQjzbvoID5s50ahPRffp8WWvPNNJ65XY5LBwk9ur/0++oJcX35FIFnITi1g7Id4U3/O5+UpJuhWn0NIK0wzUcubWIV18J9ijMoztg60AiZue24eqQkSClcN+uJvnMCXVfZis7CXTRK9BkjhOpFmhlkuhcQzeqnoyon0bOaYzI8ZOXED6l0A9Et5Sht3jySiSzwUz+q4GxM282uFeAzdJarqAqon+hOMLnPBCQowY4d3wBbXx70gXF0wxLLOcRkQR7uJZUvisG8Be2CPWeTHExcRj2t3xE6RvQ== 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=pQ+J3wc2JXd52VnbMqfcY5c0kIzjo5Lek38sZL8Kkbo=; b=pfywxmhFDceI9qd7CH2gUdQilTwyipyc6qnT9rzC1iSr0cUUgLUmK4+6930yJEVfdAMVUqH6eqqGQQpVGX+bBfyQn2TPhPsIXrxFEYhtmvTodHTD4tLFJ5Kohrmge33G2Tmebwcn5IQspmNXRGfd1BufuIyQrx7LvPiYCl826pwzNUvoA14ui6isIpShZpj55lRjWVJQSoa7lO7j/DZ4zRvKHjp6xZte2zUJbC3jQqYqY7A4Tf+lgorgJ+nIka0QVLLFr8KgBexwXOsMR4WxgKqF1xh+ZSy95lWRbpmm7xs62jBe7WakY0ooWEDCUejXqmnuVEupsG/YPjzgoDXqwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pQ+J3wc2JXd52VnbMqfcY5c0kIzjo5Lek38sZL8Kkbo=; b=jkJFFZRd9Yw/yrHPCKK8Bljeiv1uOFQO/4iqkt5RzIEEMMI/aSjV+ke/YBe+sYj/0Vj3PTcUiIEIN3CS0EfNwBCw9mr8xn6swQGr51WAnrOekVQn/3663oGcW8Bo7NJ+26NOmISsZSzySvQcXKX+X+QO2aZXKwoS25iUN4Kya/4= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v3 3/6] x86: extend mod_l*_entry() to optionally return the old PTE value Date: Thu, 1 Oct 2026 18:47:46 +0100 Message-ID: <20261001174749.2275245-4-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0394.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::21) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV3PR03MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: 42232dd2-dacb-4723-7d1c-08df1fe3d8e7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: +ipdoYBCVO54ysnyVuFUzzc4f3h4k6JhZAD2ys/8STdplHwIWeuavrRVFjVBCzA9rmGNX8IC+pK2lk41wMHBTyFljcFHfhhRgbcz3iGaqDu0qn5sshh5dWBScLtZerxh1FK2ZcdztyvYEpfi7FbIm3bP8i1qJn1bS14a7/dlEM+WGZF5H8fBGhBU9GN7vnpmaQ+9rGWQx3TyhbkhN1m4o7y75EKp6OwiuXmTTLCJB/csc/bLjhm7+yLEvBovONj//5qNEHI24HO00kSAVaokGxxOFohIngC/8y5tBXRiznBa+NkV3OwWpzvkKBF3F1llydol0SGo+BPMCbKR4bfxPK45fbVrRsBrxWBL9Jgx5JiQKKtF9ainGdMN5m1qTfWlzlz3PXAfTG0nEtg0U/+3TtsnCCo5Q6cNTuM/KFNPW+8dO803xNuEOt/4dwdHhzzfDFr7LMZKtugLs02TnJOslCEmdyiPM6ruePQIMPDxMLYiGTgKTUDKGLvnY5ZLE0c3JEpR7132DGYWxkjcpGPyhwXIz6vqcv77aSTk/126F92wV743oH2gH2Qb82BjtArDIxDabUvEdfi8Z61IdPBwo5F26ilfZ7XUkRHHwSkgnnt2cXA8fP2eyt+x+XjmkrBv/4fF9WyI4GAomUxl1yjv4181W8h7/1iy7MwXmx1zI6I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iuvux4zOZAkMGpWGR9v/5EN8zDSDrzbTkShmi4kJyOAZcMCeQGZdsv8ptNeU?= =?us-ascii?Q?PkELX/pjWxA82YCr8vHVHxe2f2O2yxLlSO8VoQTWrVzkJAKOmKAouMdW+ISb?= =?us-ascii?Q?zEfLrUEFq+tcTDqMXRLURwuNwxxzP1JC4QoGpm62l3TNI1LCFTY2dKlrWPs+?= =?us-ascii?Q?nS6Er/IvGvXF+aQMaVec8/dD8cl9DI3AfaUtRFl5Oe4HJMQxw3cisxM4Ln4L?= =?us-ascii?Q?ylpoyiDPrMKWap5maZJtmAIVruhkg7yaebFoc1gnF/ap2Vr88tC89SVIGA6L?= =?us-ascii?Q?JzBNjdTNlVQoLh7lL7/nj7V3UsIQhommp9SXPak66iP70PC0TGAHn9C38wLH?= =?us-ascii?Q?h8x5V0OfcLdGXHxwd4ZtcIHaCgtz+p5nSSLBVJQmIEFWgsbVsyEId2A96d0l?= =?us-ascii?Q?ge+Gof6gEKu3B6ey2QERYCu2Iuelv26Rk3VAtJ1jG/5i5Oa58vguS7uvefGF?= =?us-ascii?Q?GTNcwtJR+hVMt1FUIY7+g67bej4m5IlytYqMhkzlJo5iLVTrw9n6wgqtBD1L?= =?us-ascii?Q?dOxl0Q7z/JMa+H07ey7UEbvLGkkZY730I5YafBvcSSwUhV2r+GG27T4JyYOG?= =?us-ascii?Q?7zaIX7nim/nbT6/IhGKokb8G/CaeyI8SspM8D/mEKk08ifRM/ZQCDs0FO0Em?= =?us-ascii?Q?5nu5hSvYQbTuL3Wt4FrFyxzXzHoOQ5fK6fbSz53v+rcXDfto/AAeNZjpCR9Q?= =?us-ascii?Q?u00/D45sbTu1rTJ/lPONbtN+tLpi2atYAQsHDMFME5hYnM4IQbx5i6UyDHZ7?= =?us-ascii?Q?w1lr/mVgPBLyd26nefnidiEYxPz+LGVhkByK7ilxzww2PDxLh8XjmmLMuGUa?= =?us-ascii?Q?uO7FCuvX00jvecFFlF5EjA4vMs2yjlaqLUTHWnEPr/ewtMRDZ73KEJeRWN/m?= =?us-ascii?Q?3fLtxS6t30RvwgmzKAXhhYBFOGWmvqnuuZg2gl7CQRtoex6EQZ41B3VPtEhL?= =?us-ascii?Q?vQhEYo/cGBXg7hjm2XQyp5kVhmmpZ6zVtkQGK53voPs9ncfNcPg10aDtwUXQ?= =?us-ascii?Q?QbaTe3F0Zuh8LPDLT/asJm1upALpMV65IbvR9Eyfehe0Omd83wTvsCMAuFxF?= =?us-ascii?Q?g7dVoLNzX9h+aeSMfJSNzgVSr8cNGvUed909tsssS22ua6FmYzhXKZQNPfyb?= =?us-ascii?Q?t6AOdOmQZLbGD5Us9AoOqiYPDmSlzhAjssEhKVx4S2nDPoEv2jsSVIwyHsBv?= =?us-ascii?Q?IjpFJOJWfknUICMrrJjwcL07CaCW4O2l5quAPKPQ3ZKmU/7tkpBxHKCTbh2Y?= =?us-ascii?Q?263LL3XpEny7YKUrhcHYI+LdljkPNq+PMt8fpn8lotBxr6eP1DzIsbX20Ys2?= =?us-ascii?Q?cx4EzbR33+hGE5IVsa8cn7TOVMpyuZE7KH//tC2vvVB6o7N0YddI2Vd4UmXq?= =?us-ascii?Q?IW0q805+BuzlI2KXFNLeB0Nqn7AD1L6Kd/g9+3FuBOxtAaJUzwenmX0yycHl?= =?us-ascii?Q?kcrBPScqi8hg1xgvbq3fzUl3bZHzRwnzVz71S5uiVcP777xn3JEhkY72pGJ2?= =?us-ascii?Q?e4a9mf+DqzgTjXOAziLOgs+H0p2xdaywyGdwiKSsRwvU0p7BHzGzGFi7Z6ZH?= =?us-ascii?Q?me3aPCww90mC9A8O3aw/mLOI2STWdOgfWuZATUa9ng49y8+SZpSxxen3K+v9?= =?us-ascii?Q?ZGrbeHCdbawbuNbnuzceb4E+2JdzU0jOjtWJjtyRdi8gt/fpHaJ47tR/wfI0?= =?us-ascii?Q?jCHWUwufEsY4MqdE3voF3XZX0Jt/N8wGOsQ/0+wVB97z5ozbYjvkd4oezY2I?= =?us-ascii?Q?I7xZLzPsTQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42232dd2-dacb-4723-7d1c-08df1fe3d8e7 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:45:56.7997 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yMJDKPX9BA3iDYyoJjWkSzWns5y2DWtJ0eqPzfPiwr2EOS2DMMNidZRfcAxPLcDyTlIkJPNINO5IZDMVWDAnoA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7658 X-purgate-ID: tlsNG-c1860d/1790876779-D634587B-209EA177/0/0 X-purgate-type: clean X-purgate-size: 11242 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876804287158500 Content-Type: text/plain; charset="utf-8" Calling mod_l*_entry() with a valid ol*e_out pointer will do an atomic xchg to set the new pte value and return the old pte value through the ol*e_out pointer. If the ol*e_out pointer is NULL then old behavior is preserved. Signed-off-by: Kevin Lampis --- Changes in v3: - Add swap to mod_l{2,3,4}_entry() Changes in v2: - UPDATE_ENTRY now returns the old pte value instead of using an out pointer --- xen/arch/x86/mm.c | 107 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 85 insertions(+), 22 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 1ddb8b71469a..535a62139cad 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2154,7 +2154,8 @@ static void l3t_unlock(struct page_info *page) /* Update the L1 entry at pl1e to new value nl1e. */ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e, mfn_t gl1mfn, unsigned int update_flags, - struct vcpu *pt_vcpu, struct domain *pg_dom) + struct vcpu *pt_vcpu, struct domain *pg_dom, + l1_pgentry_t *ol1e_out) { l1_pgentry_t ol1e =3D l1e_read(pl1e); struct domain *pt_dom =3D pt_vcpu->domain; @@ -2215,7 +2216,12 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgent= ry_t nl1e, /* Fast path for sufficiently-similar mappings. */ if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) ) { - UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_fla= gs); + if ( ol1e_out ) + *ol1e_out =3D UPDATE_ENTRY_SWAP(l1, pl1e, ol1e, nl1e, gl1m= fn, + pt_vcpu, update_flags); + else + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update= _flags); + if ( page ) put_page(page); return 0; @@ -2238,14 +2244,25 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgen= try_t nl1e, if ( page ) put_page(page); =20 - UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags); + if ( ol1e_out ) + *ol1e_out =3D UPDATE_ENTRY_SWAP(l1, pl1e, ol1e, nl1e, gl1mfn, + pt_vcpu, update_flags); + else + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_fla= gs); } else if ( pv_l1tf_check_l1e(pt_dom, nl1e) ) return -ERESTART; else - UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags); + { + if ( ol1e_out ) + *ol1e_out =3D UPDATE_ENTRY_SWAP(l1, pl1e, ol1e, nl1e, gl1mfn, + pt_vcpu, update_flags); + else + UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_fla= gs); + } =20 put_page_from_l1e(ol1e, pt_dom); + return rc; } =20 @@ -2255,7 +2272,8 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, l2_pgentry_t nl2e, mfn_t mfn, unsigned int update_flags, - struct vcpu *vcpu) + struct vcpu *vcpu, + l2_pgentry_t *ol2e_out) { l2_pgentry_t ol2e; struct domain *d =3D vcpu->domain; @@ -2286,19 +2304,33 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, /* Fast path for sufficiently-similar mappings. */ if ( !l2e_has_changed(ol2e, nl2e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); + if ( ol2e_out ) + *ol2e_out =3D UPDATE_ENTRY_SWAP(l2, pl2e, ol2e, nl2e, mfn, + vcpu, update_flags); + else + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags= ); return 0; } =20 if ( unlikely((rc =3D get_page_from_l2e(nl2e, mfn, d, 0)) < 0) ) return rc; =20 - UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); + if ( ol2e_out ) + *ol2e_out =3D UPDATE_ENTRY_SWAP(l2, pl2e, ol2e, nl2e, mfn, + vcpu, update_flags); + else + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l2e(d, nl2e) ) return -ERESTART; else - UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); + { + if ( ol2e_out ) + *ol2e_out =3D UPDATE_ENTRY_SWAP(l2, pl2e, ol2e, nl2e, mfn, + vcpu, update_flags); + else + UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flags); + } =20 put_page_from_l2e(ol2e, mfn, PTF_defer); =20 @@ -2310,7 +2342,8 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, l3_pgentry_t nl3e, mfn_t mfn, unsigned int update_flags, - struct vcpu *vcpu) + struct vcpu *vcpu, + l3_pgentry_t *ol3e_out) { l3_pgentry_t ol3e; struct domain *d =3D vcpu->domain; @@ -2339,7 +2372,11 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, /* Fast path for sufficiently-similar mappings. */ if ( !l3e_has_changed(ol3e, nl3e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); + if ( ol3e_out ) + *ol3e_out =3D UPDATE_ENTRY_SWAP(l3, pl3e, ol3e, nl3e, mfn,= vcpu, + update_flags); + else + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags= ); return 0; } =20 @@ -2348,12 +2385,22 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, return rc; rc =3D 0; =20 - UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); + if ( ol3e_out ) + *ol3e_out =3D UPDATE_ENTRY_SWAP(l3, pl3e, ol3e, nl3e, mfn, vcp= u, + update_flags); + else + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l3e(d, nl3e) ) return -ERESTART; else - UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); + { + if ( ol3e_out ) + *ol3e_out =3D UPDATE_ENTRY_SWAP(l3, pl3e, ol3e, nl3e, mfn, vcp= u, + update_flags); + else + UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_flags); + } =20 put_page_from_l3e(ol3e, mfn, PTF_defer); return rc; @@ -2364,7 +2411,8 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, l4_pgentry_t nl4e, mfn_t mfn, unsigned int update_flags, - struct vcpu *vcpu) + struct vcpu *vcpu, + l4_pgentry_t *ol4e_out) { struct domain *d =3D vcpu->domain; l4_pgentry_t ol4e; @@ -2393,7 +2441,11 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, /* Fast path for sufficiently-similar mappings. */ if ( !l4e_has_changed(ol4e, nl4e, ~FASTPATH_PDE_FLAG_WHITELIST) ) { - UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); + if ( ol4e_out ) + *ol4e_out =3D UPDATE_ENTRY_SWAP(l4, pl4e, ol4e, nl4e, mfn,= vcpu, + update_flags); + else + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags= ); return 0; } =20 @@ -2402,12 +2454,22 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, return rc; rc =3D 0; =20 - UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); + if ( ol4e_out ) + *ol4e_out =3D UPDATE_ENTRY_SWAP(l4, pl4e, ol4e, nl4e, mfn, vcp= u, + update_flags); + else + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); } else if ( pv_l1tf_check_l4e(d, nl4e) ) return -ERESTART; else - UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); + { + if ( ol4e_out ) + *ol4e_out =3D UPDATE_ENTRY_SWAP(l4, pl4e, ol4e, nl4e, mfn, vcp= u, + update_flags); + else + UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags); + } =20 put_page_from_l4e(ol4e, mfn, PTF_defer); return rc; @@ -3277,7 +3339,7 @@ int new_guest_cr3(mfn_t mfn) l4e_from_mfn(mfn, (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)), - gt_mfn, 0, curr); + gt_mfn, 0, curr, NULL); unmap_domain_page(pl4e); switch ( rc ) { @@ -4115,14 +4177,14 @@ long do_mmu_update( { case PGT_l1_page_table: rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), mfn, - update_flags, v, pg_owner); + update_flags, v, pg_owner, NULL); break; =20 case PGT_l2_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), mfn, - update_flags, v); + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; break; @@ -4131,7 +4193,7 @@ long do_mmu_update( if ( unlikely(pg_owner !=3D pt_owner) ) break; rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), mfn, - update_flags, v); + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; break; @@ -4140,7 +4202,7 @@ long do_mmu_update( if ( unlikely(pg_owner !=3D pt_owner) ) break; rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), mfn, - update_flags, v); + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; if ( !rc && pt_owner->arch.pv.xpti ) @@ -4480,7 +4542,8 @@ static int __do_update_va_mapping( goto out; } =20 - rc =3D mod_l1_entry(pl1e, val, gl1mfn, MMU_NORMAL_PT_UPDATE, v, pg_own= er); + rc =3D mod_l1_entry(pl1e, val, gl1mfn, MMU_NORMAL_PT_UPDATE, v, pg_own= er, + NULL); =20 page_unlock(gl1pg); put_page(gl1pg); --=20 2.52.0 From nobody Fri Oct 23 15:33:48 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876793; cv=pass; d=zohomail.com; s=zohoarc; b=gFLAE+1p10u1SFe93OMTXBB7K8Hu1DQOOTdWOyNcc813EPEKCqL13oX5AllyjFp34Q1AGO2em43zWZZzFb/7MHIUsBl1+nhK1UR93Xpvlo/VOy4Rm3JPpAdWgNcP6s2lEkt0F/6pc4P9XxNmz4rlp4ZbMD5MtljT/jIW50iSSfA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876793; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9yukoTJTvfx2/TW/Z+5HPZvKVMIqRm9iNuXR7qMg8Uk=; b=BKo/aNFRhR7VxWS7gOGwCpu3BGmOAd1l4fUbAYlEcCU7/bvwY87oeI6OUfRnTbrLd8VyLi9URf/xzl8OzdYZ5WyiWn3F6uGc4XtHFttRs/Ho3MQkEsYqgr1q4GyZfYdxfIIph+kVod8gX/E8ZowC7cApKsv7Pr83L9pZUomxRQw= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1790876792951420.80121962992314; Thu, 1 Oct 2026 10:46:32 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438578.1657286 (Exim 4.92) (envelope-from ) id 1xCKrC-0004eX-Nt; Thu, 01 Oct 2026 17:46:10 +0000 Received: by outflank-mailman (output) from mailman id 1438578.1657286; Thu, 01 Oct 2026 17:46:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrC-0004eQ-L6; Thu, 01 Oct 2026 17:46:10 +0000 Received: by outflank-mailman (input) for mailman id 1438578; Thu, 01 Oct 2026 17:46:09 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrB-0004eK-IQ for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrA-002g9X-VQ for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:08 +0200 Received: from [10.42.69.7] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c33-2eae-0a2a0a5409dd-0a2a4507ddcc-34 for ; Thu, 01 Oct 2026 19:46:08 +0200 Received: from [40.107.200.26] (helo=CH5PR02CU005.outbound.protection.outlook.com) by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c5d-b4ea-0a2a45070019-286bc81a16b3-3 for ; Thu, 01 Oct 2026 19:46:08 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV8PR03MB7518.namprd03.prod.outlook.com (2603:10b6:408:190::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:46:02 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:46: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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MH+CSoYzPrJyCfvoCgbuT0z1KY38FDEP9Cq3/BwZZR1XPVHSBp9EUuEjR33eYWGzVa1JHahL4SNSqdCSx2fnN9kwfDyrixYGXIy3WfziZceUaNZUjNd3+bI3kN7LOrQOExe8pwDih76PjHxz7aAOMMiFREIybynw3SBJ2rAVdObLnOjNl9JeForvlPOUsj3YRDYWnbph9N6WhAqASv+XMoPq7dZotgxaCEBbN20ICgdYIN6IobFD9ElCpJ3WiYheUUyUyGVUOuMHb/1urXWZD8PIbwNgviqdx6EbjxycJcqOp/JX0tuG+dBN0DSPAKFR0cNxt+r+0b4d8WcMjG8Rzg== 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=9yukoTJTvfx2/TW/Z+5HPZvKVMIqRm9iNuXR7qMg8Uk=; b=Zz5lxKZIHVIC0Zfo9eIn9kAAXY8xDgQ3omLk0dsDHjHEOXRLxe9PpLDHp8TfA+aoYnHCYjgeD6lJYcuPZwBjwfzBXnm32FzZq967MXH22DsmZdlLQlscOgN1QTOBREaypTikt6TTEn53zz3LNaaAPhswwWfTWG3FvkHvYBE41x56VeRUX7/ith+NPxVB2nZ1eDTRvnW+QekVX6KFwRq1x9AVtW6xxIv+2UUW0sZczXeyKIgN+k0NGTiTGQtzzzuX7mSfdLfYbo6AJ0QRoge2XO6sNRYPmsebMiGXFsL7npiRsqIHhm06YFGZ7WSSaydeLYWeE+Lmlw9iad862fjIwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9yukoTJTvfx2/TW/Z+5HPZvKVMIqRm9iNuXR7qMg8Uk=; b=E7y4n8//Sg1viuAHHWhjNywv8d/0KJq7OBTHvU2X6RbEBhKC1G5EdvgyKlv02dMr/ha4NEVPqQFh4ThnDPLk4+VCerKBxIuNP/7txFbLY1Wyx6M+PwxXHd1iv3s9oZYT1ySSTe4ram48vx5uXfSDBB7AbKBaIWgj5vNX0d0BUl0= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v3 4/6] x86: extend do_mmu_update() to support returning the old PTE value Date: Thu, 1 Oct 2026 18:47:47 +0100 Message-ID: <20261001174749.2275245-5-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0095.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:191::10) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV8PR03MB7518:EE_ X-MS-Office365-Filtering-Correlation-Id: c8b8dcb9-ec96-49c3-d835-08df1fe3dbbd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: c8Bj9LZOdXwBUWI+lE3BDQBJBz3pURh/KBXjgvhGXA5jSWNERVMD3iN5VPRXJ9oaputSfp86tHXquNPoV8bX/+0b2NQ+8Xklse1guqhE0ACDbHZTL3buhiXC5NB9rRjOwVKDV10yu68VoWidXCSRug4NiWWC2LiR4lT43Evdjrj1NLdoEJWJ5CwAuunHhCG94v159Rb6doLpGyCNzTugdGUAUffuEKvLp0L1lUzAGfnGAOyCqeyhWN/5a7OJvzK5pQmLNdpge9GAz3arHopxBKYED/IanFQHxlQiRidokSsL/0VaCd8Fk8debnjeRCnJ6JHd1S5htvUNTsiN82Lyyt71QQjc07NoNOSED0ydAI+sF+xGpUPqhLoU8fr+4J/3vdCDueoqwfZDPJ5ufNp1yOTi4qMG+nqhC4pFCz4Vd3Fpy1Wa9BCJWMs03x8wxbnHC3cLXe9cT83cCWb4Mff54pdxJZf/epgBWmOpie+lvugbQlHlrlLlXgq0WfkFRjLm3r6N57rMkl16YuOfTBHZnDdYS1wu4HUIxiKK/nKlyIA81XQ7RmLP/5Lxkr67EVcdNZOWJdWNfE/a11MGCtzhxZ2yFcFpJ2RA23A8+qyKk1++3dkkODyCWkioBgCsXEHRgveEf2mLPsccEqRr0lMKS3O3SIclCWwu1QBgrRN8dE4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Qp60arT+AZfbvrt/f/AZhqaJTEXFC5QEdzlZqkc4Y3yy+4+AWh7zwjCIoAMf?= =?us-ascii?Q?3+UYbAVQDyYjxYBpS0a3KBBnISROc4C9KOkldjHClr/afXxtk0gJaAU0MuxH?= =?us-ascii?Q?pC7IeDeeFUk/0XSBy6owMsnVntL/KoM1EnzrxSQlB7MrZln2W827EWvImxoq?= =?us-ascii?Q?AE5uBcm6ojuuQLIpFA1WsxGxd1lubRQQ2PSARtA+LocpcMVoMsgzuX/44pFm?= =?us-ascii?Q?YzlsaakVEXsW7HvStZ+oXIAXCyOrD1r2Lmy7BvEY+XGCl+iJOxmG/J5FWH7V?= =?us-ascii?Q?hD/KItaLJdQSQG3gXHvpHzik66t4+XK+EVieGvKJFt9QNsaCaAn0XF4bgYB+?= =?us-ascii?Q?eX/THTBueO7TQhtOr18V2gQTRsqv6QncLET8JDvzHzaX5+S1O5Iumu393mNe?= =?us-ascii?Q?U/7Et9bhfPH/TtGek8+58qQWSu/CR5dYfMY7eSSTqvLOvzbzzpKjDDeqRwBR?= =?us-ascii?Q?7l9MCieDS2c2JSNtgih4tCiytl7XYQLEcITNH7dFgWNjH/89zR/tasGRrgHK?= =?us-ascii?Q?9aceRdmlVlf6X+vWdY6qvdB8vyqUJ3MqRvWT0uoZVMX+K4W9JSEjjLxqhe+n?= =?us-ascii?Q?60Nfhi0aylUgmfrP8WUH78o9y1XWSpw2E1p0HRJKE4c0METzCER5hJnvHjKU?= =?us-ascii?Q?hUhjw7nLQaAGh8GRl86eilbh2L3dgKon8PHmNNdE87/kwIezyTEhEAFQ+/Ni?= =?us-ascii?Q?Qh2arc7afUMFGgtfO+0DhhBwDeqVHt8P9cmRAGF0Y3jErRb7l2uPlR4RGodQ?= =?us-ascii?Q?6IsEUZwElCNv60ipv1GXplXLs6Dj7rSI3KUBd1bIlRa3xKNfmPPzGljcgNBg?= =?us-ascii?Q?mQIQS6zuNVPcQTfy8lmXyEqAXPD3KH/v+rgV9ivUu0OveVbOaDTKcOPVR3D+?= =?us-ascii?Q?cUgg+pRllUkNxoiMiPHmgcTuNAPT7j6CEbu+7/zk29Vun6OWkfzlGDstnmMf?= =?us-ascii?Q?XsIiBvL5kXgZ1U6sboczOPvBV4hMvxv//u/eOEbahkoM3vUiaRyEy9PvVen+?= =?us-ascii?Q?ZsInHBIL++t6l0I8DJvrXgcF+nfSmdWngo/zFZew+wMbwt+9XBa/Ll+fuQH2?= =?us-ascii?Q?4gbt7ahzlPk7cMAx+kUOJ+u0YUwYIkph2ACnbiNNV/Xhek84lFtI7L70VBC6?= =?us-ascii?Q?W2GcVSBxfLV3csvGxzx/NDw2/bwqscJ+u+C6b2J2wS4v9Drumpjn+dy1JKRN?= =?us-ascii?Q?/QyOCZl5kX1Rg2O4SPONVOK1kJUW06Laph1KIilkCesqrYJYv8omxIAjOZ8r?= =?us-ascii?Q?cFKgr1GU/6DBAriAuzpgYe9jWRUzx3GUf8geN1/XuUHrGgtEzqLmUmB60Qbq?= =?us-ascii?Q?xubv1Fr1tHzj3yX41KsJN/XXwJOG0af2JmtrmhF+C7oqPPQiGi3l4KccruUY?= =?us-ascii?Q?91khTpzb6rTd8bZAlLdsdpxAlkgIaz968v38zEZzDfrm2uoWMVuNNI48WBmO?= =?us-ascii?Q?NV+MgiBX1XWfqd2cViKB9esWtpitQI+zovI1OWMhBmHtmRho0mgcToMaUr3/?= =?us-ascii?Q?8ODwNyBVEV7SFonUueA8GYSPifI9CbixBip93sk1/tvxxZORuzCRPbWPrajL?= =?us-ascii?Q?p5CHDjrDk/EQ+OhvH5xG5iLhLrYiWvs0X9eLiJzOSqNR+lg5u8ji2fn2ebAY?= =?us-ascii?Q?v7SvQEq3sJRLf8QmeuCRI0pOVrGaP4cWbLWHKHUZQQxR9KP8fXIHjDhxeabA?= =?us-ascii?Q?G4Cit2OKDguuQt3oZr1DKxZn+CBM6ghxK67sXuRqAehBEy6xt/a19FrP+EVO?= =?us-ascii?Q?EHGEG4F54w=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8b8dcb9-ec96-49c3-d835-08df1fe3dbbd X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:46:01.5924 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7TJGUp97vsCUyybuOUwxvF1fpbC3QIgMPtMWVPruvgE4Dq0GcPP6nHIfjFvqRVlo93j6VGlD1iZqbqMjFPG/Qg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR03MB7518 X-purgate-ID: tlsNG-ef75cf/1790876768-A4AC8AE4-64939F3E/0/0 X-purgate-type: clean X-purgate-size: 7883 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876794193158500 Content-Type: text/plain; charset="utf-8" A new sub-op MMU_PT_UPDATE_SWAP when used will do an atomic swap to set the new value and return the old PTE value through the req.val field. - The old PTE value is passed back to the guest through the req.val field If MMU_PT_UPDATE_SWAP is not set then the old behavior is preserved do_mmu_update -> mod_l*_entry -> UPDATE_ENTRY -> paging_write_guest_entry The new MMU_PT_UPDATE_SWAP call chain looks like this do_mmu_update -> mod_l*_entry -> UPDATE_ENTRY -> paging_cmpxchg_guest_ent= ry Signed-off-by: Kevin Lampis --- Changes in v3: - Do swap for l2, l3, l4 - Allow all values not just 0 Changes in v2: - Add a sub-op to mmu_update instead of new hypercall - Rename to "swap" instead of "clear", although only `0` is accepted - Remove spurious curly brace from `case PGT_l1_page_table:` - Restructure `case PGT_l1_page_table:` to avoid diff churn - Add missing `MMU_PT_UPDATE_SWAP` check for the second `PGT_writable_page` block --- xen/arch/x86/mm.c | 80 ++++++++++++++++++++++++++++++++++++---- xen/include/public/xen.h | 1 + 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 535a62139cad..a2d05d6c7113 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4111,6 +4111,7 @@ long do_mmu_update( case MMU_NORMAL_PT_UPDATE: case MMU_PT_UPDATE_PRESERVE_AD: case MMU_PT_UPDATE_NO_TRANSLATE: + case MMU_PT_UPDATE_SWAP: { p2m_type_t p2mt; =20 @@ -4172,10 +4173,27 @@ long do_mmu_update( update_flags =3D PTE_UPDATE_PRESERVE_AD; else if ( cmd =3D=3D MMU_PT_UPDATE_NO_TRANSLATE ) update_flags =3D PTE_UPDATE_NO_TRANSLATE; + else if ( cmd =3D=3D MMU_PT_UPDATE_SWAP ) + update_flags =3D PTE_UPDATE_SWAP; =20 switch ( page->u.inuse.type_info & PGT_type_mask ) { case PGT_l1_page_table: + if ( cmd =3D=3D MMU_PT_UPDATE_SWAP ) + { + l1_pgentry_t ol1e; + rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), = mfn, + update_flags, v, pg_owner, &ol1e= ); + + if ( !rc ) + { + req.val =3D ol1e.l1; + if ( unlikely(copy_to_guest(ureqs, &req, 1)) ) + rc =3D -EFAULT; + } + break; + } + rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), mfn, update_flags, v, pg_owner, NULL); break; @@ -4183,8 +4201,22 @@ long do_mmu_update( case PGT_l2_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; - rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), mfn, - update_flags, v, NULL); + if ( cmd =3D=3D MMU_PT_UPDATE_SWAP ) + { + l2_pgentry_t ol2e; + rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), = mfn, + update_flags, v, &ol2e); + + if ( !rc ) + { + req.val =3D ol2e.l2; + if ( unlikely(copy_to_guest(ureqs, &req, 1)) ) + rc =3D -EFAULT; + } + } + else + rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), = mfn, + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; break; @@ -4192,8 +4224,22 @@ long do_mmu_update( case PGT_l3_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; - rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), mfn, - update_flags, v, NULL); + if ( cmd =3D=3D MMU_PT_UPDATE_SWAP ) + { + l3_pgentry_t ol3e; + rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), = mfn, + update_flags, v, &ol3e); + + if ( !rc ) + { + req.val =3D ol3e.l3; + if ( unlikely(copy_to_guest(ureqs, &req, 1)) ) + rc =3D -EFAULT; + } + } + else + rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), = mfn, + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; break; @@ -4201,8 +4247,22 @@ long do_mmu_update( case PGT_l4_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; - rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), mfn, - update_flags, v, NULL); + if ( cmd =3D=3D MMU_PT_UPDATE_SWAP ) + { + l4_pgentry_t ol4e; + rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), = mfn, + update_flags, v, &ol4e); + + if ( !rc ) + { + req.val =3D ol4e.l4; + if ( unlikely(copy_to_guest(ureqs, &req, 1)) ) + rc =3D -EFAULT; + } + } + else + rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), = mfn, + update_flags, v, NULL); if ( !rc ) flush_linear_pt =3D true; if ( !rc && pt_owner->arch.pv.xpti ) @@ -4230,6 +4290,11 @@ long do_mmu_update( break; =20 case PGT_writable_page: + if ( unlikely(cmd =3D=3D MMU_PT_UPDATE_SWAP) ) + { + rc =3D -EINVAL; + break; + } perfc_incr(writable_mmu_updates); paging_write_guest_entry(v, va, req.val, mfn); rc =3D 0; @@ -4239,7 +4304,8 @@ long do_mmu_update( if ( rc =3D=3D -EINTR ) rc =3D -ERESTART; } - else if ( get_page_type(page, PGT_writable_page) ) + else if ( likely(cmd !=3D MMU_PT_UPDATE_SWAP) && + get_page_type(page, PGT_writable_page) ) { perfc_incr(writable_mmu_updates); paging_write_guest_entry(v, va, req.val, mfn); diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h index 2149b8dd3808..2c403ca47ed6 100644 --- a/xen/include/public/xen.h +++ b/xen/include/public/xen.h @@ -349,6 +349,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_ulong_t); #define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr =3D val | (*ptr&(= A|D)) */ #define MMU_PT_UPDATE_NO_TRANSLATE 3 /* checked '*ptr =3D val'. ptr is MA.= */ /* val never translated. = */ +#define MMU_PT_UPDATE_SWAP 4 /* Update and return the old value. */ =20 /* * MMU EXTENDED OPERATIONS --=20 2.52.0 From nobody Fri Oct 23 15:33:49 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876801; cv=pass; d=zohomail.com; s=zohoarc; b=LbBOLxHAxAN4cp4681z1l+br3zp0EeIzNCO5qn9tK43mliDoDob+M9Wcm1t9JnFvDuyTPna6A7UvdzuysPMfaa12RCVYTMIcg32k0LXxmAzkI9dqMKXOwyYeFT/nEM6u0E0bkolSbcgU+QWKoSZtNA/FMGtCxWTzqMhlRD3RpHY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876801; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Qbe4wM1dK5RGYKvhg1OVSDgiavw9HA7GO7PeMS2rtwY=; b=k3MC1l9wSCBqtjV0NTjCluTSsCtMdkqJ8Djy71HQcjtcGmvEFtkvox1d7Kgw+B/hI8JzW9p/OQQd8yE/wW1s9uoEmJ2BZepCD0sfU/wrhDo7PFpkyEwQsA5eVqxPiSIvDrhZRRHGYeqAqYTX7uFbH05yokD3K8zH9F9FhNRGfEA= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1790876801676988.3289999600609; Thu, 1 Oct 2026 10:46:41 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438582.1657322 (Exim 4.92) (envelope-from ) id 1xCKrP-0005WE-3p; Thu, 01 Oct 2026 17:46:23 +0000 Received: by outflank-mailman (output) from mailman id 1438582.1657322; Thu, 01 Oct 2026 17:46:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrO-0005Vx-WE; Thu, 01 Oct 2026 17:46:23 +0000 Received: by outflank-mailman (input) for mailman id 1438582; Thu, 01 Oct 2026 17:46:21 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrN-0004u3-7p for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:21 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrM-009PVE-Ik for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:20 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c4d-8faa-0a2a0a5109dd-0a2a4508d8ea-46 for ; Thu, 01 Oct 2026 19:46:20 +0200 Received: from [52.101.56.34] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c68-f659-0a2a45080019-34653822a43d-6 for ; Thu, 01 Oct 2026 19:46:20 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV3PR03MB7658.namprd03.prod.outlook.com (2603:10b6:408:28d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:46:06 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:46:06 +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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w4aumFDwIkBPPPVsU0E3l55BwelA5MMTeQVUw2sjjt8Q9y7WN/iygbUKQtmMJukAY6WU3ftSc/MV7Mu+OEN2kzL99bo2Cu16F9FiXZvZsKeQS14biEDg/nLTR1zp7BfyqclAVsw+OmHypdyajZ+xzIB70pIxwz/mHg+EgAYGTsNIDUSkjn5tp5N2byH1v+tUaPSvYtUTWNK4GlAFBN/VXnRM5j3yq0sNGtydC/zSw1X5kZ5jHki1vnnI5VCU+VFIHhwpRvCDvXzW9sCzXgH/jG+MCcCWafEnozHs1Rjffd4Mfup6yLZ2b7/85KJOh4L7IhVPp+tHY+t2ZNWb6awZ6w== 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=Qbe4wM1dK5RGYKvhg1OVSDgiavw9HA7GO7PeMS2rtwY=; b=TlxIC4KeNrSTnmGkH6oJL3hd/iSv3fJVxMjkXMeJFaB7vX1GGABkgeHsFyOGvwts4HCVy7CTBRYcXokOpqJ22URwCq0Eh/C+jgT+8x/QwvKHYjKFtIS73JfnFidVWTYk3NpB9G5EfKO83xIjD3CXxuOLPS8ZbwwG2gub3NQadtWhZmpJ4lQEjslDgzLvFTNWFpt4HP3nr6welVbMdoscIoERdjXjvHuMkNYswqe35vsZy8WnAg91/uBchx5Ib8o3xxLTDjHI4kDT0TodEo320wfeiG6DCyNIOS9GibZzRLI1UKNyyz1g2Sp1g7HI7apzjFzE3fFV1Ct2T2b6HGN3yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qbe4wM1dK5RGYKvhg1OVSDgiavw9HA7GO7PeMS2rtwY=; b=EV1iYSVvtk6So6CYsVOQ+KWAcqS4njbmuVZgO1DpBHkI/NeVGq4FZoM6Lu7jaPDPXMGYei+YUdhvLvZ+ezA0equnywAQrCMD2IToofYkNCfU78h1etybqW2QIV3Fj/8t1yM0E034P7oObKZMBO0JpP+o+kk5ZfYEfTTSomaAnLs= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v3 5/6] x86: New feature flag XENFEAT_mmu_pt_update_swap. Date: Thu, 1 Oct 2026 18:47:48 +0100 Message-ID: <20261001174749.2275245-6-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0102.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:191::17) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV3PR03MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: 8bd97cd2-afea-4fed-da6b-08df1fe3de7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: lG3DN/oHmstrlGPSFwsxOIaY5pTuDLVyhLq+Y7EyAG4Tu55V8LJ0rZO4QO23RwNGKrBDCuDmEi1kc7HKqnqhjGUZUSopUP2zNSavmWHvGQ4vHHLlt2U5FB2g234H3PuhnepVvou02sD0xOCELjqhOrupylnJqspq+T+R8CKyBdUiVSdRQMtXpRDnwVakra9kAArsh7zzqL40MHIMJ7tqatLHadof+KBX6f4GHf68Bq6U9C50nwBOrEdekYIGozlpYCegiC2ds7aMp/YPziqOJr4fSiv9Gh+KnDsybSGxQuyBTXG+O/SNCuGbXZkRNNkWDAGZfF47wazDXCYT3vcjjEkTBo2SCPzy5UITFq2t1jo8WrtG2JfvlowGkXHT4Gl7/6tVJiUq7g1Z/ePSa0sEkbEGwMKbYHcRx0rT6j9VYGHeV4nA+WpjdWCpxOPHHPARiudkXdZgXFZCV5y/tsqLsq8Lo+kY7uAW37tj4ghcJ59kqbdYmNwTi7P7EWFmk2uz7DzuVIo0SSKaZN/v5CzJvt91otHs7bOn8rZO6yIax47AXk/4O5aGdzgN0Rp8V5I9HO70UOkZN6eS7Bd2KvnTYBVwuM6qYOaloOUwCbwfjKirOR0PnTRFxsAyguFA1D9TXomttnQ3ovHnYZAS3/0jpM3JIDbKYdyz73Sfs10JEOM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3Humsww7slK0KOi5pZhBYem8ZJLr1eCIIdQqM8iwNgePOQ55AXqES254azrn?= =?us-ascii?Q?k59aNQRm6s8DNhX2PUxggQGu/3E2z/yjnmBxzWaQujelEgQD2hOreZcZvwT8?= =?us-ascii?Q?li0ylu7jPfa52VCAGR1ePogyMcXmxb3gxqVQFlUtvfcXGAwtmcWaEVq5ICBW?= =?us-ascii?Q?tZTuAuZLr3R7AMSoR6Ncok093xqxQEO/zbo/BgPyzQlclsQozK96GFnn5UxO?= =?us-ascii?Q?4U2MXat0VfbUOTUaEeezJh07fbwghC3YrdAlOwFiPw1cYXlkdmqKLeCu6aTh?= =?us-ascii?Q?EzBp1IRzNnY+GjnJVu85Iu4l8Je6vO2WehtLRKWkaAOgmsbiBZPsu5711v75?= =?us-ascii?Q?z7ndPvdQUU0y+4kvy9NUAVstSCjpdDBe/0gIFQUZnOCij7sdke4LNdiiuXDR?= =?us-ascii?Q?oomGM6G/rBBH5OcsPdNXy3xCXTqUpxcEDTlhjuWoe6FrUYzK6CEAPe7bGTAq?= =?us-ascii?Q?UgOFj4/jvpVZh/7EE5Hsc1YoslYLo+H+LTIpcg7EFWzJueGu3SpDb8j/Rbdn?= =?us-ascii?Q?wSLZlyq/PuuIWUjdKOWSWAIs3TbE/Kl8xqdoEFGyhh7do8uuZm0fZeVRjADv?= =?us-ascii?Q?cU1PcPsbRDeQHgR8dEFXtHGFRn0btRRMIbnQwNeZ/Be0lLpnoUq3YgrT7cAq?= =?us-ascii?Q?ONA8u7BTUHSSY207bGqaWmRiCghoAJwzXV7dEjA3EYpviqgjMb1YjnKCFSzi?= =?us-ascii?Q?4tY2DC3va1leM83Qks0k2Bgu48jDrADJ6y9CA4n78bZPrvlIZrNzxYzgT/nC?= =?us-ascii?Q?wolrCSIctc5lu5wT7NKeeTfW1PQ0yCknp/soMXSuWs0EZbIWce7p5DqUX6kf?= =?us-ascii?Q?VmeEHSf+8nLfVKEjDqUthja7BUlBqvaYxFU/HUYoDbM5sFhZ+1N4qCRlzpaT?= =?us-ascii?Q?UfBB9lltxxsg+Ye7rrfn4wghmMLrpXy+cseQa3UFDTNvRRUgqzYCkXJlwot6?= =?us-ascii?Q?1DGrX0NredDuPWVr9sXROf3TN3b1W9Bsx5VxpICfKbpwar8NvPixwEPiGp3v?= =?us-ascii?Q?DjNh2zsxGWwy2eazFWmseTtYfXH24TeqU4Ix7AYPflSufE0vqdtx15+EG+eH?= =?us-ascii?Q?3llyfQwjOjNvBgVeFtrs8wrbaUjgMRP2wBD1XEKlkiXQoscsxUjSihZZyuCt?= =?us-ascii?Q?4asknbBlaBHt1tn7QFcsz8B7XqtcrzxkIyUHMtJamX9aWhbtR/krPaARLEGS?= =?us-ascii?Q?u+6qppnS4qAzGlNDJu94X7uqINyZp31TRPGMoYBmCo+OqH3xq6mbBh9y+Tfs?= =?us-ascii?Q?yUaIKc0FTnDJb97po0y6tXEJPmYWbAJ8YTYiqt5tofPnCSE0JQjObHwRFvMX?= =?us-ascii?Q?dEgC4YzeVXwf66iaPvq3NcoxKgu5pXRvhLZWK7ENdL82sxNZNJYwWWEo+/p1?= =?us-ascii?Q?4+V0VtwIKTyin/JDrAnXAppSLkbDeCLESiZYMupHam4wFF+r8U8KpRGhhJlg?= =?us-ascii?Q?3zfrdcr/UyKlVLXbW8BX48z6ver+gOn8+O5zE+JgVQcNuVE4V0QixRb2IZSj?= =?us-ascii?Q?YrKlpAdx8XsUq9fxAvxoKOwpTiXLwmsahCHp9GKFmsaJltEd6u7N/xFi+iCK?= =?us-ascii?Q?pwa7NwWw/cpGrlKgHJwqBEFilFmgYfcHeEYiEEYk4Xqli6Ys0aLJcAogLtso?= =?us-ascii?Q?D8Q7dXDS0rcTSOlKxnm81H12HViIqpPT6d2IqRRvJo0gjvzCqg67Vinaa71d?= =?us-ascii?Q?4XgMSavCsIGyXripzjlCOqVDmI9lmoTXW8dWkDj1r4fi/qIj/WFze+hZq7R4?= =?us-ascii?Q?kDhOjxJpjQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8bd97cd2-afea-4fed-da6b-08df1fe3de7e X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:46:06.2479 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UmYQQvDPWka8iXJYOVstTVF8frjE5wfdWOu0fPDJMUzahtoKVw6EmAFZi8/u2n4qL0ykF28TdfL3jUYcw9afsA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7658 X-purgate-ID: tlsNG-c1860d/1790876780-CDB4987B-B25B594E/0/0 X-purgate-type: clean X-purgate-size: 1317 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876802142158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Kevin Lampis --- Changes in v3: - Reduce diff size Changes in v2: - New patch --- xen/common/kernel.c | 1 + xen/include/public/features.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/xen/common/kernel.c b/xen/common/kernel.c index f4bbd8818fa8..67b56ba302cf 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -691,6 +691,7 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) #ifdef CONFIG_X86 if ( is_pv_domain(d) ) fi.submap |=3D (1U << XENFEAT_mmu_pt_update_preserve_ad) | + (1U << XENFEAT_mmu_pt_update_swap) | (1U << XENFEAT_highmem_assist) | (1U << XENFEAT_gnttab_map_avail_bits); else diff --git a/xen/include/public/features.h b/xen/include/public/features.h index 880193094713..227f1e408e41 100644 --- a/xen/include/public/features.h +++ b/xen/include/public/features.h @@ -128,6 +128,9 @@ */ #define XENFEAT_dm_msix_all_writes 20 =20 +/* x86: Does this Xen host support the MMU_PT_UPDATE_SWAP hypercall? */ +#define XENFEAT_mmu_pt_update_swap 21 + #define XENFEAT_NR_SUBMAPS 1 =20 #endif /* __XEN_PUBLIC_FEATURES_H__ */ --=20 2.52.0 From nobody Fri Oct 23 15:33:49 2026 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1790876808; cv=pass; d=zohomail.com; s=zohoarc; b=IiqRPt5gkXeMvjUnRkI8GTSdfSr3Ml+lIBuOjw9bKGUzx0isuCRoSZg9JnniA+JdUYOwzrxONv56fUzNR9i5sDn73ctI1MGMmypQCU9BxCH/QjUXiB9YfEMWlKQNgre8rzQU3WIbLqOOdb6ZdDTeHMI+Ltu2rK/bJbHF1RGFgis= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790876808; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nikBxQbmFT/YhbgKKDRdnJ8hkPNwNqLqVDmA4JG0VDY=; b=ft9YwyV1Az4RzF7liEog1e+O5uUbjnFokHCDYBWUxsGiRgf9/GjaTD4P3Rdb3P9YXNMXZqjJYKWju+wMEmTsf0aNjswT8FrLbkE1DLA/etty4/XWz1HJBQ7dVVcm5szXD8YF7HyBBhnrmXM+a34moWVveIRrz8q53voERqChYs8= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 179087680812042.306313985978704; Thu, 1 Oct 2026 10:46:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1438583.1657326 (Exim 4.92) (envelope-from ) id 1xCKrP-0005ar-GV; Thu, 01 Oct 2026 17:46:23 +0000 Received: by outflank-mailman (output) from mailman id 1438583.1657326; Thu, 01 Oct 2026 17:46:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrP-0005a0-AN; Thu, 01 Oct 2026 17:46:23 +0000 Received: by outflank-mailman (input) for mailman id 1438583; Thu, 01 Oct 2026 17:46:22 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xCKrN-00052k-QP for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 17:46:21 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xCKrN-009PVE-6q for xen-devel@lists.xenproject.org; Thu, 01 Oct 2026 19:46:21 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6abe9c4d-8faa-0a2a0a5109dd-0a2a4508d8ea-48 for ; Thu, 01 Oct 2026 19:46:21 +0200 Received: from [52.101.56.34] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6abe9c68-f659-0a2a45080019-34653822a43d-7 for ; Thu, 01 Oct 2026 19:46:20 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV3PR03MB7658.namprd03.prod.outlook.com (2603:10b6:408:28d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.18; Thu, 1 Oct 2026 17:46:11 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0451.026; Thu, 1 Oct 2026 17:46:11 +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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pNANjimBmCqjVR2ymmRZtHfOIIrU7lWU4TKr9LwkMffbfWymlh5QCY85j4xwdiWltiFgyA2uAlwHn34461xc042ue/KE8FF9FzjcaW0Ea7TuCcBvjJQdeEJYt+MZgYTIAJY3l1SGVGlKyTxfSqTB4JjjI0Sb3yfe0fquVXxkRmQCf4zsAiObqhUspIX3CPX9/l9EZGQHx0lugXji1Jo3zej02KO8xwpUD0DCtRx9tFX2/355SpGa/5AWZ4fEx0ienw4ts5fkwdtpuLHp9nUFw3iJankxg+/fnLN6tVNdjgbQjaLA6f1Y2ibZpXJS7r9frHD3z4ud/rekPwaeNaUJHA== 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=nikBxQbmFT/YhbgKKDRdnJ8hkPNwNqLqVDmA4JG0VDY=; b=uE0qOL4EYNEKl+2fcAF2rfJPNTt6WiP/NS+ySjIZhW3h5afy05rEk5rVrzxtI34kCeKd1TBOtV5dJHv55S1VA5hxeNsECl51d2+bQJp3JwGOF321Bu5jn6efSD4Ic5OlWLZQboH2WbczybXWfBkWhtXWNdMfOPzE3qT/Z1E084IET1d8i1dT0aVIO626i0Cx/xEVYCHbUoFK8WNVbdQPXAPM9EFtqiYUvK7OYB9B4ef/wV1QiPy8YgEi3Fkp/cULAtM0875aScOeAnBNi9U1b0cpQjVRqJkv+/HtIvTOFCuDoQIJtwMTwImlsRiuey241Ci7pboXhr0ggtPxkK/8SA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nikBxQbmFT/YhbgKKDRdnJ8hkPNwNqLqVDmA4JG0VDY=; b=q6dBWKBmGOgaFmPb/5SG1ocTN6Lp/HAB8IlfupwadHWY//jx8S+eI++DvT/Icrz8Vjczx5r4ruMlByOxnbbqiKOYLMamPe8SFlcfKVryc5XVrWmaAnvmaWIvdrH6qQMDgiNpcNeUZH/AFiHuJzNKLaNewBZ+SgAQ4/eVfqBuLPs= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, teddy.astie@vates.tech, Kevin Lampis , jgross@suse.com Subject: [PATCH Linux v3 6/6] xen: Add new Xen pv-op pte_get_and_clear. Date: Thu, 1 Oct 2026 18:47:49 +0100 Message-ID: <20261001174749.2275245-7-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20261001174749.2275245-1-kevin.lampis@citrix.com> References: <20261001174749.2275245-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0163.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18a::6) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV3PR03MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a63f44e-03c6-4b51-f8e0-08df1fe3e1ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|366016|18002099003|22082099003|6133799003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: 044Kf+VW+GD9VNBsLwU29tz6oR9PKXQSt5oPd6wYhWEIn4QDDiqSJaUbzEUhw9Ze1PSzkpcKTvs+gdS/GGT59bW/mO6glg61ihfOTNJKhlmd5fSLNdk3VhnnVxLLEduIusm4uzpQ8IpY+b1dSxaxzhcvT3ORlQLH+s0thO+Fs2J4jSaXSSsMYY14AHrQSWvhH7Tw+CucOX5fOwx/8pisCdlQHPxH5gny5etA+xKdQF9Kmda+EZkSyMPlGIYDLnbKhr9QLFwbdedgPzVZC8kSrqrW/9PakZ7/6Vlv6i5YESsyfbeamMCuQhoAIzXnJ0re73V4c1KqfnmFayyZX/dmOeeErj6e8QELjLmMv6oOfz+PJ/1hU+7sjm7AzHCHGofpixQFeU/z3ptIk6wBEFpSvhX+tQj4JFs+QKZBLwlb81XGSfohui7h6a40aPIt0ydilfrk8vtDjsfXYzeOf/CT70WQoztd41KtvQjeruBqbAkXxikEM1T4SPG0aaw0bIOxzb8/KV8fEqweEajvr0xHXfQw3mpFVDrsDZHDVTl4Y8I/FvhI29LDSWaFicuYreynWUjgkb7GTMd49mT0lQX1uwkDy7A2oBcfTZbABDJe0a0psaFdV5dY4yCDKjiY6z15bNqWZGKXANQ2HBoJn8Hi6byzEvGycUc9KZ+6HZA8FAM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(18002099003)(22082099003)(6133799003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bBKgxkVrQqrItj/TywxRE2DB4sw/ztjUmioH5QDEo+yZRuDRqSOIORpEdS+/?= =?us-ascii?Q?2MN2LxmzEOMBsAeE9Qbxze37DCwbMkUVbvyhrJNfHn48/aYMuvpDE7+INsiU?= =?us-ascii?Q?aC7cd7+Gs4VMopW3NLHI1xE/3LaidSjZHM5iTwVL+D2MRFzc9tBU5uTATJNA?= =?us-ascii?Q?1G8ERnDyR+Dfpzye4TqgkohvXFYomJCzD+KsjqZV1Dqp0EgxpTbS5dZhkAjS?= =?us-ascii?Q?3NVKJxPYbLSlSwuyaOmQCW8LlnpgDPxZza+10Ztwkp/z51J8PbJ3LUnFb8d7?= =?us-ascii?Q?AKa7suEuNSNxlSthypDYioQQrFbRmimVNTnPlP/IuN+uk85ZBJMcbyzpwIq5?= =?us-ascii?Q?cbkl0dOqVOZA4uKfm9w/q5TJDIxTk4aSa9G/+NLII1RI1JdW32I6DIcq0yLR?= =?us-ascii?Q?a50TP7jLzh/89X+MZSL1RWDL17tWBny6PGyNEtj59KKs/rieff8iia0Udcbi?= =?us-ascii?Q?fTm3dxzUi/4PLr52M+6W4EjUCSEHcBsZJ7oj1PU7qoJl4A2vaGUMSbrC4UDi?= =?us-ascii?Q?9RyT0Ewa+iNYw4o0GRBLvX4gwideWY0I99Bqz24Ao5fS0tVRXidKkF1jDvwA?= =?us-ascii?Q?Q71L6PFJ3VfPA92vgi0RvWpPRGX57kSQVHwDUBix1eAUWtler4S9hRpxKzjY?= =?us-ascii?Q?px3cStumWiprgS6fAHJPAB/lT04JFW6OungLHKrUlFhHzyrGTZNn05hXoV7F?= =?us-ascii?Q?9czuHivKJZi97fS4OsggUYT0uPqPTVAPqqdTDiNsI/3LZ9gsOZMlSFlgymRx?= =?us-ascii?Q?7gOneoatwisOCPYXQvLxFjkq9lM0ZVz6KPeZoIDZnrTzfJLhhR6YAhslQFVw?= =?us-ascii?Q?8xCSzCmBnr9o/fF/3McDQ57ypQIqERZER0Upcpir2U5XtzbLJoU2mwHMBt0I?= =?us-ascii?Q?tJf9WIiVDildR2IJXnup8JY738yTNKAdGrtnNx5Xv9MBiOHW8ECdiQGMvRtv?= =?us-ascii?Q?b5ExfpuzEZup3TkC04n33TZoI4CAzIlPZsTo6ogWNCx9CWcPgQZKuoO2BZwd?= =?us-ascii?Q?HlyJO3Snkz3dbDsuqLPS7fAFZeeD1T5bMiboMAuTgVA4/gAhWl8qMvMknr2N?= =?us-ascii?Q?vi92QJ/mqDL/DP+aEV3sXSm/wOZ9txbnEgjX4qSm83K7+zzYBcWf5crVjqiF?= =?us-ascii?Q?pSnYHz7H/Kr0sVtpA9d1mBMlmc6DxZGCa+WWmLfdJ3ZB1tHH0fy5cIN1UhVy?= =?us-ascii?Q?jfGKnoPx4WltxTbKd7kv3uRgmGenglikn/DgFJadYGqWH6UuBNiy6IRv8pJS?= =?us-ascii?Q?aWfmVGdnxQeY8SpIyPVK7hbjyxy9c5tKTgp1DGIonDJwhiWBaOIAt9u7P4Ky?= =?us-ascii?Q?4oMswnABNxIo7FkLqS7b/5NZwP1Wg+5vNwfSdoQ8bKn5lQpfAeyTpw2ww5mD?= =?us-ascii?Q?LR9yxIcFY2MtvjhCtsnDTiae6aJyNRAE6KWsBkq86gn101qlZ20zGrft4T7k?= =?us-ascii?Q?4Tq/OMKi2+SkI0t3+391/V1r0Dno05glXIjdDzsXir9Qc63x2KJyAz1hvzNm?= =?us-ascii?Q?+prr++JG5GzEArPYKzF89rUOdHJmItfTFK7nwJIBp+UKNEIOD4OmGoukM9dA?= =?us-ascii?Q?bSxo4gb4NH3YYXdWk6Gt7pXg8OgcZVmP+SR62rVcEDEyeCA27Q096Qv+o/k5?= =?us-ascii?Q?QFBRI7M2ZO2zhL1I4L2sA0uXB0tvPKI8fN2wFBz713IgzIrFPFCEfC5B5Pui?= =?us-ascii?Q?R78ZaUKDnvhbVdaFLBa8q+YacrDrZQVLcq1r5ONW4pWRWgCjAvFbdDj5Hw07?= =?us-ascii?Q?+0Ps9/VuhQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a63f44e-03c6-4b51-f8e0-08df1fe3e1ba X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2026 17:46:11.5824 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: V8jMIeS9VDPLN2mw5Puy9p25TsP2+khe0VFFdsO8RRxY8pE+ah2B8ev2XUkL5a/l7AYI5yYsbaBarfaMnIbRlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR03MB7658 X-purgate-ID: tlsNG-c1860d/1790876781-CF55C87B-D124DC65/0/0 X-purgate-type: clean X-purgate-size: 5495 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1790876810386158500 Content-Type: text/plain; charset="utf-8" If Xen supports XENFEAT_mmu_pt_update_swap then for performance reasons call mmu_update with the new MMU_PT_UPDATE_SWAP flag instead of native_ptep_get_and_clear(). Signed-off-by: Kevin Lampis Reviewed-by: Juergen Gross --- Changes in v3: - Add spacing to xen_pte_get_and_clear - BUG_ON if hypercall fails - Remove extra blank line - Add documentation for MMU_PT_UPDATE_SWAP Changes in v2: - New patch --- arch/x86/include/asm/paravirt.h | 5 +++++ arch/x86/include/asm/paravirt_types.h | 1 + arch/x86/include/asm/pgtable.h | 3 ++- arch/x86/kernel/paravirt.c | 1 + arch/x86/xen/mmu_pv.c | 17 +++++++++++++++++ include/xen/interface/features.h | 2 ++ include/xen/interface/xen.h | 1 + 7 files changed, 29 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravir= t.h index 0591aa38fd85..0a3a286c46f0 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -373,6 +373,11 @@ static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) PVOP_VCALL2(pv_ops, mmu.set_pmd, pmdp, native_pmd_val(pmd)); } =20 +static inline pte_t pte_get_and_clear(pte_t *ptep) +{ + return (pte_t){PVOP_CALL1(pte_t, mmu.pte_get_and_clear, ptep)}; +} + static inline pmd_t __pmd(pmdval_t val) { return (pmd_t) { PVOP_ALT_CALLEE1(pmdval_t, pv_ops, mmu.make_pmd, val, diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/p= aravirt_types.h index b4c4a23e77a1..1bd4c19450b5 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -135,6 +135,7 @@ struct pv_mmu_ops { /* Pagetable manipulation functions */ void (*set_pte)(pte_t *ptep, pte_t pteval); void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval); + pte_t (*pte_get_and_clear)(pte_t *ptep); =20 pte_t (*ptep_modify_prot_start)(struct vm_area_struct *vma, unsigned long= addr, pte_t *ptep); diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index ac295ca6c92f..c2a7035b4848 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -58,6 +58,7 @@ extern pmdval_t early_pmd_flags; #include #else /* !CONFIG_PARAVIRT_XXL */ #define set_pte(ptep, pte) native_set_pte(ptep, pte) +#define pte_get_and_clear(ptep) native_ptep_get_and_clear(ptep) =20 #define set_pte_atomic(ptep, pte) \ native_set_pte_atomic(ptep, pte) @@ -1243,7 +1244,7 @@ bool ptep_clear_flush_young(struct vm_area_struct *vm= a, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long= addr, pte_t *ptep) { - pte_t pte =3D native_ptep_get_and_clear(ptep); + pte_t pte =3D pte_get_and_clear(ptep); page_table_check_pte_clear(mm, addr, pte); return pte; } diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 00b59d774389..58ecd12b10ee 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -178,6 +178,7 @@ struct paravirt_patch_template pv_ops =3D { =20 .mmu.set_pte =3D native_set_pte, .mmu.set_pmd =3D native_set_pmd, + .mmu.pte_get_and_clear =3D native_ptep_get_and_clear, =20 .mmu.ptep_modify_prot_start =3D __ptep_modify_prot_start, .mmu.ptep_modify_prot_commit =3D __ptep_modify_prot_commit, diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c index 820af6f0aa57..a1e79672a408 100644 --- a/arch/x86/xen/mmu_pv.c +++ b/arch/x86/xen/mmu_pv.c @@ -359,6 +359,18 @@ static void xen_set_pte(pte_t *ptep, pte_t pteval) __xen_set_pte(ptep, pteval); } =20 +static pte_t xen_pte_get_and_clear(pte_t *ptep) +{ + struct mmu_update u =3D { + .ptr =3D virt_to_machine(ptep).maddr | MMU_PT_UPDATE_SWAP, + .val =3D pte_val_ma(native_make_pte(0)) + }; + + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) !=3D 0); + + return native_make_pte(u.val); +} + static pte_t xen_ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { @@ -2165,6 +2177,11 @@ static void __init xen_post_allocator_init(void) pv_ops.mmu.set_pud =3D xen_set_pud; pv_ops.mmu.set_p4d =3D xen_set_p4d; =20 + if (xen_feature(XENFEAT_mmu_pt_update_swap)) + pv_ops.mmu.pte_get_and_clear =3D xen_pte_get_and_clear; + else + pv_ops.mmu.pte_get_and_clear =3D native_ptep_get_and_clear; + /* This will work as long as patching hasn't happened yet (which it hasn't) */ pv_ops.mmu.alloc_pte =3D xen_alloc_pte; diff --git a/include/xen/interface/features.h b/include/xen/interface/featu= res.h index 53f760378e39..b346d58c0a41 100644 --- a/include/xen/interface/features.h +++ b/include/xen/interface/features.h @@ -97,6 +97,8 @@ #define XENFEAT_not_direct_mapped 16 #define XENFEAT_direct_mapped 17 =20 +#define XENFEAT_mmu_pt_update_swap 21 + #define XENFEAT_NR_SUBMAPS 1 =20 #endif /* __XEN_PUBLIC_FEATURES_H__ */ diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h index 40c9793e9880..64c120d8a100 100644 --- a/include/xen/interface/xen.h +++ b/include/xen/interface/xen.h @@ -252,6 +252,7 @@ #define MMU_MACHPHYS_UPDATE 1 /* ptr =3D MA of frame to modify entr= y for */ #define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr =3D val | (*ptr&(= A|D)) */ #define MMU_PT_UPDATE_NO_TRANSLATE 3 /* checked '*ptr =3D val'. ptr is MA.= */ +#define MMU_PT_UPDATE_SWAP 4 /* Update and return the old value. */ =20 /* * MMU EXTENDED OPERATIONS --=20 2.52.0