From nobody Thu Sep 24 20:54:01 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=1785164727; cv=pass; d=zohomail.com; s=zohoarc; b=H8x31bNC3WmVpixBq5xTNmD2Nnr0UhQcUdymv6A7rPHeRWieL8bxl0fI6YUZJUUzUjSGOmNGzbl33w7NNGjWQZElV0gcZ7Gfm6yZ9OKRn4JR74vEzlMrZOc6NJTfKa/MQLukOiTErCNNLYxCXr8mxk0+H607zrYu2+/MxOB9vEM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785164727; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fNm1nuNO+XAb5R8ex77Fpi902ddh3pTIX6BDJO1AGYQ=; b=clu03f1szV2gCCwf+9hD3xcls2gEFyhjC0t1bBBDuuC8IMovOny4yOHU2T87WHAZHOy8iImFWoAUu0VdsAf5WAwUceeg/t8Ej0F7X+1kpM3uCdLfDPl8CI06CnCR60HiZrsuI1f/SkSgmrlZF3V6Kog2FpMDTFEgNJaH1DtJ5Ck= 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 1785164727205505.0371056363996; Mon, 27 Jul 2026 08:05:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1371722.1619199 (Exim 4.92) (envelope-from ) id 1woMtB-0003k4-IL; Mon, 27 Jul 2026 15:05:09 +0000 Received: by outflank-mailman (output) from mailman id 1371722.1619199; Mon, 27 Jul 2026 15:05:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtB-0003jx-FB; Mon, 27 Jul 2026 15:05:09 +0000 Received: by outflank-mailman (input) for mailman id 1371722; Mon, 27 Jul 2026 15:05:08 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtA-0003j5-2r for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 15:05:08 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1woMt9-0007da-4M for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 17:05:07 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a677391-bab6-0a2a0a5309dd-0a2a450c9d60-36 for ; Mon, 27 Jul 2026 17:05:07 +0200 Received: from [52.101.43.51] (helo=SJ2PR03CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a6773a1-f479-0a2a450c0019-34652b331083-3 for ; Mon, 27 Jul 2026 17:05:06 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by SN7PR03MB7120.namprd03.prod.outlook.com (2603:10b6:806:350::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.13; Mon, 27 Jul 2026 15:05:01 +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.0245.012; Mon, 27 Jul 2026 15:05:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" 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=s4tjOl0fuwL4QXfG77SGdFqTyJvcudTtQb6zd+gTLM+fCUBRx+Y83oMeQXundQkVFkBu/CUUO5LKCE9/IHj2h/1CPEklRVmK4eqjmEbSqkceUp3yXY8tYMzv8hpe3EvEu0QMiKSp/Xr3c0LwNMcXGxApuhoBMFEd+2eoF8W5VfV4KIMf591LQ10EI39qC5IjPdPik+nq3VT4+oV274YFOrl8ihTJG9TUrGNEsP7Sc3cjIh9W3u4Jl+ESiBgHDWoCQ58MHta/n9qIU72oIgNdqizByhkKLzDOaSmF9rR/nZn8gWsxCYRBZm7C4dzLFkbOEHMs/grNg1bwQH2oXZ09pA== 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=fNm1nuNO+XAb5R8ex77Fpi902ddh3pTIX6BDJO1AGYQ=; b=x+qgBUvGiKrpjtKDtImvr7f6hccMBj8Es45OtKhIS5cUbCPAcAyz4L0ZqlH+FmxZmGfzoqIUi1jTW3vFSKfOnXs9w/gRNhuk/j0GO1ryBhegB/HcYbn2HYgrZYS0hRXp1Uq3UjRDssxBXGHGNOOVFEJKVwC8FoA6grE/wH6HVnx0awVhOzHYi2ymsT04iJdYaSs0/E73CSnk+RklVa9wSJP8YdYAYrzvq1iyxq07YpZUo1Z7s41NkhmR1qoReNNMa8d6lZerynGZ/H1Vc9b30kLMMm4FRVp8h0g5Z2QlQkhIxuY9RPVRYQyl0ly+UPkJu66TcTxJQ1geaK5d/P4G4w== 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=fNm1nuNO+XAb5R8ex77Fpi902ddh3pTIX6BDJO1AGYQ=; b=q+XS17bOWzPD5Vcd6eNsj/ql8NfCRbwtmU8/tvNnh7XzJBxTkIaYuVOSqdsxCMZZhVqLznZi9noG+nMrdUoi3OLcDohNAotETFUBRQayrHTml+w0WMQUrqrkKYQ4im3bF7LGvcu2WD6VKoOGYTKli4cJWpUV9aFVHTCDVYQhEHQ= Authentication-Results: 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, roger.pau@citrix.com, Kevin Lampis Subject: [PATCH 1/4] x86: extend update_intpte() to support atomic get-and-update Date: Mon, 27 Jul 2026 16:06:12 +0100 Message-ID: <20260727150615.1373200-2-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260727150615.1373200-1-kevin.lampis@citrix.com> References: <20260727150615.1373200-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0481.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13a::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_|SN7PR03MB7120:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c2671ac-a520-4252-20dc-08deebf06e45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|22082099003|18002099003|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: 6oZknuTh5TKI6CbdPirRfYI6v0CIWCnWOo8QaEFPRe42qwZ0bun1Vsuj17GXT2Q5ghKwK+6LkgFk3BIv3irciHxH9p7OZxk8foloR+BHnGIVpA+cjYD8EoXAS1hwKcFynjuHxCJZR7VSDVbFH65FEMfe7wID/1hrmb6WznPQai9uJS0tfh9m0nZ3tUp89Ti5Uwo+6yu7geNeZVXmVpTGT1f+5d2ee8OoOTbmElUV8ONUDXvDwq9GK0BXF5XP402Phq0++/Yih3d7koS1inmFPtyGdVtbepLAXm/lfVTvGqAEBOoevpB0xnuQPnBbz8JN6bLioR/L224Q9lhj3ynjh94B8+2GSQg/SaxJrrIQVpopR1ZvYoCAHMMH9eN4ZNya4KdJMA1PEcdRH0kWtMXfn9tAnlmv1ZmAY0YrXipWzqst/9O2IkiBhpi7NN29A7UYbyISDmpCPzSPoIB84Z3/azmZSMpkgmOy+1WwQiOlyaq9L07a94fhVzclM5wFU1RHrZ9WEnL6pUsXYCZVbi0wvI5Wc/hT+OP9WiytcKTQht70F89XpmlypUty3GC4S+/aN/XlJzqvAEeaehCgRPgSOuVI0OC4VDvvelJDnBou5aQ/1UbwL1DqFDzOVWJ6T78jSuOIZbDeHrxl+sa0atIhvmb3k/IKQlWlPQ8bq9yQwd4= 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)(376014)(366016)(1800799024)(23010399003)(22082099003)(18002099003)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1mhC0CWHNREoYNL6jQUog1KOFKZyLMst2CXEy5AKQgptIMwvmqdMUVwGoVlI?= =?us-ascii?Q?0krvs7zCnWVgkUYYyAB1Xkheb/xBHfZXTHrrKB2UqpdEFlo6nj8HW4PR+pqs?= =?us-ascii?Q?VbYFKooQwEl2y8VXe0M7o5et12erN7bCetLp4AbSkN8z+HGBN11mlPSdZ8NX?= =?us-ascii?Q?SGCfs4ES1d4I7owF9Sk3ziwtdh33TVEK5oeA2e5lnZvgjMMFTwI1md3+XEcb?= =?us-ascii?Q?79cPI9u+GoW1nSigGB8Ny6A0g7pXZiMU7hTHrWxuJjvSxm2D7QOrpJMvdZ2o?= =?us-ascii?Q?9R+KnkkEB5R3JNbW01DeNUdvGbMAVWD/xXjMBBIo1x9c4AiI+GcLPpCX7nZH?= =?us-ascii?Q?qe5IO6YBeHcMAuwxXGIpyxzbCtJS03zT+626SyhjhJE/2iQdIJ3R4rdKK7FR?= =?us-ascii?Q?AWAlehWLNKWvu5kpKUa4v9rlfoKiN0/Tw6tLh1Lm0Sk0T01s4Ap159C8BFLX?= =?us-ascii?Q?pv8CVIaOKI5QM482MHJrC+27v0ISawiMTNnrZ8VnfIBkh+kO0MjvlfySt0cz?= =?us-ascii?Q?c1bTZ8Rp+3AeSv+B1ORC5FK9rkuZrXJ6vIQjWx6Lha6mvTNjXEOBmucn4cPV?= =?us-ascii?Q?CPRSbHIwFddnggauASUA1Uqq9D3zor9E+lt3YlvX/CaFz9MeFU8rgSoh3hcz?= =?us-ascii?Q?cdYkbzRyGUJPBhAg5CL0gk2tW88+YRI7Gm7uQ6YBxjIhlKY/2c2Cm5qAWyMB?= =?us-ascii?Q?PQkBRiKIS7D4H1/M8Pul8o306KLTaqmd4fElgwCG7m8twU+m9eltsbn5+eSB?= =?us-ascii?Q?P/Jc3RywNrNTWWTPpIYWdnrfQx8xeWXdDcV/TTvrQPR2sEAOxpXueU+tx+sI?= =?us-ascii?Q?PEOdLcUmoG4Lgy/rzLK7OlOPhTBAC/CaUXuAxaED/juUZa8M6oioITzjWbv+?= =?us-ascii?Q?q4nreZKAlik1U6WgDMCpWs6oiQxx4ruruT9/xzEBip27tpwfnX1TQ202t9iq?= =?us-ascii?Q?e2eHF3HD0NgHQpTXl9DvA6NUAyvY9fYz7rYYWNugn5ImTEP7ZG/dQ1eOUVel?= =?us-ascii?Q?ZtpwDsVZBUnQm0MwTSjPipdUQxrpohBe0GXOMKObpT5RTvzFaEv/tSKpACcD?= =?us-ascii?Q?Cg3U9TdzpkFHzy7y0ba4orDwgtFPjrlZeHS0usKaFXZFX2E429sDgd4mZpgZ?= =?us-ascii?Q?mzLFZJLSoz0l9JWbEtts7eRXymzP2xT5yBJW0lwXzX+yFRnh5GPGBL46FiMK?= =?us-ascii?Q?EOQyrt4w7F/xEor96mly/HwWOqIHsSf1c/htof61Q/Pf6RpKj31mhBuO5a6W?= =?us-ascii?Q?Jv3DQRPraMU7Hv35/GUcJmSX6SpaGpB88Yo8xfwp2FcVsNrkBdFcdnhhStMn?= =?us-ascii?Q?DlR37dtCArT5zT5E2uBZ9AkgwMl/SmH5hcNEGDQvrULQm2DXV34WYZQZ3cwi?= =?us-ascii?Q?MXkpa1vv8pIE0YRAn6RxKENpE5HFGeZaNmIzRP4e7MZCgZoM9l99niWdLi4S?= =?us-ascii?Q?3KxUpU/BH8B2h97krCbkD3jLdv1gtoPp+nCGaCvb8xhyWxqALM3qtsuN9pmd?= =?us-ascii?Q?oHPiIlxkGMdxgd4Yvglyz7LlAzGZO26dL2aFy/6jfsTmWUnhq0ne2XLBCDho?= =?us-ascii?Q?8HlcXdmq7GFClY7yBYb/1BnUYgKaq3JLsKWXAwN/gDji9FRjGqGPaA5yD5I1?= =?us-ascii?Q?PaUhZk6xArFrMVlOCLDu7tZZKet7pAzk8F/44ZSHR81XZyMGEpAz3eDXS/hW?= =?us-ascii?Q?50q5OTqJ8QLllHArLZsks1wRde8TIi+BVoRPv+kkSnlxFQ6hJthCyPeD90Aq?= =?us-ascii?Q?zXKRdwaBew=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c2671ac-a520-4252-20dc-08deebf06e45 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2026 15:05:00.9987 (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: MOIBwg46vDqDvJbzYSxEjFAGo6W4SPaRHrEBa3BWSB4j/+cnOHJ5ImAi47q+6vpicklOYewXmNTxAwaiSkxoCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR03MB7120 X-purgate-ID: tlsNG-d25034/1785164707-02ADCA5B-1556DC4B/0/0 X-purgate-type: clean X-purgate-size: 3101 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785164729736158500 Content-Type: text/plain; charset="utf-8" The update_intpte() function now accepts a new use_cmpxchg flag and if set returns the old pte value through the new *old pointer. No functional change for existing callers. Signed-off-by: Kevin Lampis Reviewed-by: George Dunlap --- xen/arch/x86/pv/mm.h | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h index 4564cab9fc0f..8c42cf3b3f4d 100644 --- a/xen/arch/x86/pv/mm.h +++ b/xen/arch/x86/pv/mm.h @@ -66,13 +66,14 @@ static inline intpte_t paging_cmpxchg_guest_entry( * 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, - mfn_t mfn, struct vcpu *v, bool preserve_= ad) +static inline bool update_intpte(intpte_t *p, intpte_t *old, intpte_t new, + mfn_t mfn, struct vcpu *v, bool preserve_= ad, + bool use_cmpxchg) { bool rv =3D true; =20 #ifndef PTE_UPDATE_WITH_CMPXCHG - if ( !preserve_ad ) + if ( !preserve_ad && !use_cmpxchg ) paging_write_guest_entry(v, p, new, mfn); else #endif @@ -82,30 +83,36 @@ static inline bool update_intpte(intpte_t *p, intpte_t = old, intpte_t new, intpte_t _new =3D new, t; =20 if ( preserve_ad ) - _new |=3D old & (_PAGE_ACCESSED | _PAGE_DIRTY); + _new |=3D *old & (_PAGE_ACCESSED | _PAGE_DIRTY); =20 - t =3D paging_cmpxchg_guest_entry(v, p, old, _new, mfn); + t =3D paging_cmpxchg_guest_entry(v, p, *old, _new, mfn); =20 - if ( t =3D=3D old ) + if ( t =3D=3D *old ) break; =20 /* Allowed to change in Accessed/Dirty flags only. */ - BUG_ON((t ^ old) & ~(intpte_t)(_PAGE_ACCESSED|_PAGE_DIRTY)); + BUG_ON((t ^ *old) & ~(intpte_t)(_PAGE_ACCESSED|_PAGE_DIRTY)); =20 - old =3D t; + *old =3D t; } } return rv; } =20 +static inline bool _update_intpte(intpte_t *p, intpte_t old, intpte_t new, + mfn_t mfn, struct vcpu *v, bool preserve= _ad) +{ + return update_intpte(p, &old, new, mfn, v, preserve_ad, false); +} + /* * 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,_ad) \ - update_intpte(&_t ## e_get_intpte(*(_p)), \ - _t ## e_get_intpte(_o), _t ## e_get_intpte(_n), \ - (_m), (_v), (_ad)) + _update_intpte(&_t ## e_get_intpte(*(_p)), \ + _t ## e_get_intpte(_o), _t ## e_get_intpte(_n), \ + (_m), (_v), (_ad)) =20 static always_inline l1_pgentry_t adjust_guest_l1e(l1_pgentry_t l1e, const struct domain *d) --=20 2.52.0 From nobody Thu Sep 24 20:54:01 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=1785164726; cv=pass; d=zohomail.com; s=zohoarc; b=CQZyV8V7YLhWvoIST4hGxnRJgVXGdz0yRBYSX0hhl0LbQ9tEGx/v9XBz0Uq5cmGMgac06xX5gD0YVKoQOdtK07nkaPdpk38f4nPwsBv4v9wd3Ar8ZUb7a/ZFptQW1JHGGzwDlrJPuQiPO5OcgBReQ8SW5aTQTkjItGK3elGR6Aw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785164726; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PaSZ+4Bh6/Qv4PdxxpQxW+d/eMMp06pD/qD0eGNft/o=; b=bSnEuivy/yZWz0+SfDs/EiaquQqv5qll064B/4zbIpXprW6pQH561FMSR9nAb2uGkXu7hl9ZBYHLCKNhQV8eEj1dGMuJzeyP8C8/jFseGDAkyyL6qrl2fUc9QPwrONdJEOczvb9CessoLaeMWM29CY3k9kKOtwircyb9Coy/VJ4= 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 1785164726587532.9541188535559; Mon, 27 Jul 2026 08:05:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1371723.1619208 (Exim 4.92) (envelope-from ) id 1woMtD-0003yU-PA; Mon, 27 Jul 2026 15:05:11 +0000 Received: by outflank-mailman (output) from mailman id 1371723.1619208; Mon, 27 Jul 2026 15:05:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtD-0003yL-M5; Mon, 27 Jul 2026 15:05:11 +0000 Received: by outflank-mailman (input) for mailman id 1371723; Mon, 27 Jul 2026 15:05:10 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtC-0003uT-Hn for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 15:05:10 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1woMtB-0007da-UJ for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 17:05:09 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a6773a4-bab6-0a2a0a5309dd-0a2a450ce3a8-10 for ; Mon, 27 Jul 2026 17:05:09 +0200 Received: from [40.93.196.34] (helo=SA9PR02CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a6773a4-f479-0a2a450c0019-285dc422c431-3 for ; Mon, 27 Jul 2026 17:05:09 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by SN7PR03MB7120.namprd03.prod.outlook.com (2603:10b6:806:350::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.13; Mon, 27 Jul 2026 15:05:07 +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.0245.012; Mon, 27 Jul 2026 15:05: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=OIBat6jkRD+tnlX2AS6BP6Ij/dSAGdwfzQFa8MkKu3mFPx0lQ/nfHKEFL24tMQIQfYNvhTOMVIhUHisWTxOHNOnAefmR2m5gMsBJIfUe+2p1F1xrPHrB1lESnReexeH7s8W5cTn+GnawJ39P5KSFp7E3H98dayE2Ui/Pt4HYygblbYsqFwYU+hUgIn8xF/2fsSBMmQrWYNCxqq5/I99Yl2XoaFwXKIZwPoLaHM/oEzEZPkgMNi4Fy/1ge8Kxd7gdwp048rqXEHwoysOVAwlVRydFcF9aDpc0oymI+TFD4Ed+hmvpVBWuAR1vXjkWVn9wh4TdvjFEZRce0kprprRNpA== 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=PaSZ+4Bh6/Qv4PdxxpQxW+d/eMMp06pD/qD0eGNft/o=; b=ucJuljTARHb9Oz5Ea7A+u5G+wXOR7epVSRJB9ZhoHMtibelq9CDJstoVHomSnpu78pkjgPvCgkW2GGId1mUlhlIrJWTVZPW2ZYvflixFVRGb+4Oio/omfVbJWCQUA5sWjLfu6saQ/bGhLcdtQHD8eC/oHLGz3nufuxRvo8yk9c5FkY4aVkXOFmP8fcPLuFEvkNYtZO2YpnmUGXGTurbT2X4mPhY+kA0I0PWGzxhOismK4PSqc4rKHQrZRiG71pEQHcKUyUMFiYPlPJXrxmLvCTFkapdvNJ1pRhRuMQaLdjg1SMaka1vCtUX8LwmleWQNOyi7xkmBaPp3e7ugPkSSrA== 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=PaSZ+4Bh6/Qv4PdxxpQxW+d/eMMp06pD/qD0eGNft/o=; b=Km6Bo/WLvPMleGOHGgB55YgCzP/KX6U2Gjv0b8j5UulCnZNc7nQdVNk/GqBJOGXMkQeizPXQGVQPR2avNzPe0Rl8Zaeqkvqa9DeDRGiEhMmt/Gf6Wmz7PhbfnaRaWjYQ9FffaH5nGIbtSJPchDPc7WbPjflYPB4f5/bKQLULeLA= Authentication-Results: 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, roger.pau@citrix.com, Kevin Lampis Subject: [PATCH 2/4] x86: extend mod_l1_entry() to optionally return the old PTE value Date: Mon, 27 Jul 2026 16:06:13 +0100 Message-ID: <20260727150615.1373200-3-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260727150615.1373200-1-kevin.lampis@citrix.com> References: <20260727150615.1373200-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0322.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::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_|SN7PR03MB7120:EE_ X-MS-Office365-Filtering-Correlation-Id: 8555dcac-cdd5-49fc-4d42-08deebf071db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|22082099003|18002099003|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: GfNxjlXr7UUWS7Flvp2uuG4qBPejGw5t2SI5Uw9Kw398FjGQ0P2r1XR104oL8rVi4ACXvcotOF8R2+cIR7kwN/n1bF3VBFlcpjg/kcsrw3vkuiY+hlDlrEFUnfxLbgizSXmKb2BeCJwinq7ttSHYMAqZfMSl2Eylg7LFI6IZqV4bvZUrOenk1C2l1B/F5/91KVH5pzOgShxTSMLyDcX3NY+S2CgFzydX52nyNN0okYECoVlNVLxNHcuaFBzzNKqvWxLaXh1XQHRWRZG1yD9dZrmULLklLHyNhLd3s/S/G1a8jGx4ijnr/QroQ5CMpOGsxuQJuDEw9gaUGan386DH9xxytUr+9AIjBA8HkmmCbOY4TMautjRGL2sNpGcYquv/sCxuY79ivEM9vYcZRClUYmWExhLHlzPjxAiOm15EnFUu0QvF9c/9q6/mAJ0aShkTJNkM16jEDYJ6hAVINBEG+4wXrxmplPDuRbDAkHy4FN35XgyLX3VcK97BwbGtCqRxd6Ma47aQF8tR8l4rgoDt2qoEYYzgh86n9QzQgDlwQgSYnXIJ4xwSzn/nrHWQKKMyIOfStk4JHRq/3vLcHfO+N7boIyO18oJqVfy6vx/1EKomOrrljKVvRABoUx8fN4SFkG+4nvfp54iO/zRI+ktP3R7UeSP0Eov+wnPKH3BEH+U= 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)(376014)(366016)(1800799024)(23010399003)(22082099003)(18002099003)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PQ6dgHjP47WlggWCt5wAr6Jklk00g045J1rdnSfgOgr4zbn8XeQ7ig+4RIvw?= =?us-ascii?Q?YLbHoI4b+RxGTf4P1xHUe60XgZr7Enn5mJP/OYt5bSzst0bCEIALOec6LFP2?= =?us-ascii?Q?1K6ewr+jsVa+LaqITqZ/1MPuv5QumI4wmvWcK/NEtTofmqFW6n1yroAmMxqW?= =?us-ascii?Q?TOn715aXMXAn3WtL7d7v4i65eId7k9SfJfBp71ED0W2eRIdRiejWEndHVe5M?= =?us-ascii?Q?EctR93crsMgL4wa1trc3tDi1NPYfheEffBPP+zkV1IHyzauuXzcD2FkNAVK2?= =?us-ascii?Q?Gp8oZI9et19B4Bh/aN/SiGIBiX9/RpPZxJ5FWSD4WdKy50nm9eAGuMsPrpnP?= =?us-ascii?Q?yULLPM0AYxEl4Y8yuSKPSA7fCllk0XfYEdNU+gL+HM+c8AGJT0HKxeHpV9R2?= =?us-ascii?Q?2VHEU3NL89fvjEhnbkuYLQcbQg3QxzW9YxgxcdI8o+gfSwnFdzNuPXvXyrmf?= =?us-ascii?Q?2umxyeTsrxWWLv4w9dXYkyCZQhkmqlMclYKDxUMaqO4rkCTEbF47pe1RJ8KV?= =?us-ascii?Q?tS9Sjb5n++E0Ojna2/z6XzBc5QwduFdxQ49HeDpmAKPzTZN6HmS7R211FFM9?= =?us-ascii?Q?unqjUe9oOCeSRIHUEBoI0ZKHYcpVI+33KV+HP4bHo04WRKceIWNsxm1u0HJl?= =?us-ascii?Q?xPhf/nMTCLA39gILb87QsZLGhmThHkvf2DOkS2cGSQJ4VbXgrGQgMw3Gqrm3?= =?us-ascii?Q?EqI4KueAB0XY3+HdfuTxGXxDK9uF9cS6zjO0MiEN9aaYOUrAaa11QoYEoZms?= =?us-ascii?Q?xr5TiPcIbFpG4Ms1H2r9t+xkFEPwvkscxTrZlO5iBF6LsdfD1FEyauN7ySwl?= =?us-ascii?Q?/83itqAtyB9WSwWArL5N/iNEwp8EGfl96h0kpWmL0PRptsjScWYd5+S+6G9I?= =?us-ascii?Q?fjwq9is85HUqVi7+k7JbrtlLDfTV8Fq0MsTa5xebNaPgCicEu94nq2W6xM1H?= =?us-ascii?Q?tEA/sspBqsqEMRD0TiRiwy9HSQOEZkeWbTpjZZctOs8dC/79J+WihxhZ5HSD?= =?us-ascii?Q?a170qosiWzllZuqe/H6imLayK6NTLwXfXuz9WwP2NYdnboBEVxty5YRDJIK1?= =?us-ascii?Q?5dw297+xHbC2Zf9U4ORd693+XPMiPDlHAapa/0zz2G9l/m2d2+YD1K5KjasU?= =?us-ascii?Q?VFVEQ5/o/wzDsUIWUfr6vzuqVb+3GhqKbD19kmv8YhVA/PpkbndHOrK151Nb?= =?us-ascii?Q?pu2Iv1YGsAbQYxaLXxmneIY7B8lXsDZIAjKMMpqovg7eGl3FGxIAidkLIw7b?= =?us-ascii?Q?5h9Pa4fMoCRKdc4L13VMHkgwfbuX6d75UX9k6Gtvh9zEqmw3ccIxjkb4rU/i?= =?us-ascii?Q?MKv40yUnMjtWt80UF/o5K4rkQHJf+p1BAoIJbuZ76bI0qW37BTg4rv3PwrPS?= =?us-ascii?Q?Kr4tw1/DUrUZHiBQVTWiiHcKLTIYg4zUndtMxgz3QaBWFIUJZIKaGLx5iOI2?= =?us-ascii?Q?rfJ7SuRcW41rITnb1Z3Er6NgfGqcTTNelnaAtA4qvzBogu1eYSq0Hdom9vw2?= =?us-ascii?Q?QLUF7X0uYgG6Bk5VG/l5KcXrvYK+Zt1RIJrXBmDMuqGC45ICjTpx1QSVuXa0?= =?us-ascii?Q?ShkSqCruYtAWcheGI/l5qJ1FoV6+MHrOgRL/Lcdrwhpv2eVETWSxosZ8RRmP?= =?us-ascii?Q?+vEqhQD/gini20XM/39hTK1VGRfa2jH+np3BoLd0Ia9YKEROGkSFlF5/c9pW?= =?us-ascii?Q?EQMIx+ioobz312j1H7mIr6UM2wLgk+/IdLS4fIXxKINjlGagXd+phVGdRInF?= =?us-ascii?Q?lSwwppG9QA=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8555dcac-cdd5-49fc-4d42-08deebf071db X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2026 15:05:06.8780 (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: /IBSUzGntDQKMTrgIWXgGdZLFtPc/hcPmCsQdai0BVWJF3diy6WxjC76K7nL6+womCK/kQsrjnveZ0rbYrMVgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR03MB7120 X-purgate-ID: tlsNG-d25034/1785164709-51737A5B-FE524C5F/0/0 X-purgate-type: clean X-purgate-size: 3512 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785164727512158500 Content-Type: text/plain; charset="utf-8" Calling mod_l1_entry() with a valid ol1e_out pointer will do an atomic xchg= to set the new pte value and return the old pte value through the ol1e_out pointer. If the ol1e_out pointer is NULL then old behavior is preserved. Signed-off-by: Kevin Lampis --- xen/arch/x86/mm.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index bb4ba0afe2d4..500549c8e036 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2151,7 +2151,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 cmd, - struct vcpu *pt_vcpu, struct domain *pg_dom) + struct vcpu *pt_vcpu, struct domain *pg_dom, + l1_pgentry_t *ol1e_out) { bool preserve_ad =3D (cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD); l1_pgentry_t ol1e =3D l1e_read(pl1e); @@ -2213,8 +2214,8 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_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, - preserve_ad); + rc =3D update_intpte(&pl1e->l1, &ol1e.l1, nl1e.l1, gl1mfn, pt_= vcpu, + preserve_ad, !!ol1e_out); if ( page ) put_page(page); return rc ? 0 : -EBUSY; @@ -2237,8 +2238,8 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_t nl1e, if ( page ) put_page(page); =20 - if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - preserve_ad)) ) + if ( unlikely(!update_intpte(&pl1e->l1, &ol1e.l1, nl1e.l1, gl1mfn, + pt_vcpu, preserve_ad, !!ol1e_out)) ) { ol1e =3D nl1e; rc =3D -EBUSY; @@ -2246,13 +2247,17 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgen= try_t nl1e, } else if ( pv_l1tf_check_l1e(pt_dom, nl1e) ) return -ERESTART; - else if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - preserve_ad)) ) + else if ( unlikely(!update_intpte(&pl1e->l1, &ol1e.l1, nl1e.l1, gl1mfn, + pt_vcpu, preserve_ad, !!ol1e_out)) ) { return -EBUSY; } =20 put_page_from_l1e(ol1e, pt_dom); + + if ( !rc && ol1e_out ) + *ol1e_out =3D ol1e; + return rc; } =20 @@ -4140,7 +4145,7 @@ long do_mmu_update( { case PGT_l1_page_table: rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), mfn, - cmd, v, pg_owner); + cmd, v, pg_owner, NULL); break; =20 case PGT_l2_page_table: @@ -4505,7 +4510,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 Thu Sep 24 20:54:01 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=1785164734; cv=pass; d=zohomail.com; s=zohoarc; b=V1OWIk7LKGYz6YLOUtsMxiHdePddSwIVACrebP4rX/cZcMvQdC8siqVH9/M+CUmg2HIp+8uovwrWGTW2W32t4sDQ//LzozxPE7ZdS0Nr9/SjlYyc7aC9mPgJ7UEv+KiqoAjuI176iWWmuAFaIsU8tmM9pe8uL3TopJLpJAwlKrY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785164734; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=srJPZVfKyCLc9jNc72RgnPcAtxJpFYEiKTbfZigXhyU=; b=Q0zJXu2MBA9+veZZ+k4XLEO9gQVk14AJ0WuZhfsGv52Aiu/0Vtms1R/DV8EBdM5rWPdq1Bi6tO8cb0yCy0pnIxyJbY/D9fjBrxL3XlTGXwWHmL+ZLz72wyIROxGr8jbAxoeCi0GEDyjazL/OFQ/alp/LIIDMQyCJiLrq4V1WTWc= 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 1785164734139192.28308263981467; Mon, 27 Jul 2026 08:05:34 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1371724.1619217 (Exim 4.92) (envelope-from ) id 1woMtK-0004J8-WD; Mon, 27 Jul 2026 15:05:19 +0000 Received: by outflank-mailman (output) from mailman id 1371724.1619217; Mon, 27 Jul 2026 15:05:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtK-0004J1-Sk; Mon, 27 Jul 2026 15:05:18 +0000 Received: by outflank-mailman (input) for mailman id 1371724; Mon, 27 Jul 2026 15:05:17 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtJ-0004GB-3D for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 15:05:17 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1woMtI-008bcG-GJ for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 17:05:16 +0200 Received: from [10.42.69.6] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a6773a7-2eae-0a2a0a5409dd-0a2a45068392-24 for ; Mon, 27 Jul 2026 17:05:16 +0200 Received: from [40.107.208.39] (helo=PH0PR06CU001.outbound.protection.outlook.com) by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a6773aa-195a-0a2a45060019-286bd027246f-3 for ; Mon, 27 Jul 2026 17:05:15 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by SA3PR03MB8182.namprd03.prod.outlook.com (2603:10b6:806:465::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Mon, 27 Jul 2026 15:05:12 +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.0245.012; Mon, 27 Jul 2026 15:05:12 +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=JWcMQ3ykFM9xof0UWt7anfKXNQuKG9b7XTca5CaFjffp/OcKEkkDkA7nZIH3BMW7KqsBcqNI/GcFQInhLlLj02p4DuRUgajp2qdOe3Mip83+5quG4DGon28QEqItpwwCS7mOQk//wpRpDy5ebc1x+ztTLzbgF+xzSA39++DRmiDgzhyP4cW1G9dFm3FRdz9lcO+Y44i2BtZRekvuEILTHcz05CoiuSxBaQ4iLs4iDF5Wmsc80Fz4A/7F8k5rcCVPNwz5+ipY6oNbeMN+9m+1rEkDS3xHclDz4sN/0Zmr2le1ZyO2hJ50tT/VxIQiCAwbTIGptydA8h+i2C9WizOjVw== 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=srJPZVfKyCLc9jNc72RgnPcAtxJpFYEiKTbfZigXhyU=; b=AWfwf0VC+jJcxruADW6rJU+LtyAW7vNYwXb+gsBs9DqU2Vkpstc2uQR8lwunCdERaJLZ9gNx3Gdo5E3aW0Nq5KAGW7poqi5x2iUahcK4LSiGwkttZo20oDCyC21VdCpBa+W4y3z8/eW+hobgQ3Emy7t54+V/iPTE61tvKWjNKnSHmCWVfZ1s+2MgER1BmMIDYPRG8S7LLvH7zhtdYe6BwbmoXCLmzTdGvsK40lUswlVBZX/rMSPXJ0UAvEeIWv6SyoJczd04VpvK1SKGC1INVn/hyt/ov7KBhAtb9qWXH5S8z8TnS+jXFwk5ebnAcnSmCtZ3ZLA6wWfOEcsx5Sm13Q== 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=srJPZVfKyCLc9jNc72RgnPcAtxJpFYEiKTbfZigXhyU=; b=xCMdwgknE5+30ehzknbRtBzmRpYVpEd0OhpzwfVGTWWd7rQ3b6/aXUjSC70D0p+flSazGxzVvkNjudk1DAZ+quMs0vYrT4ZiUOnSO5Ag9dwBIEXjqbNsYlfZCmCYN82oYQlM+jr8qkPf9DOjjLaH1krjNyV2/apowsChBEig5XA= Authentication-Results: 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, roger.pau@citrix.com, Kevin Lampis Subject: [PATCH 3/4] x86: extend do_mmu_update() to support returning the old PTE value Date: Mon, 27 Jul 2026 16:06:14 +0100 Message-ID: <20260727150615.1373200-4-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260727150615.1373200-1-kevin.lampis@citrix.com> References: <20260727150615.1373200-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0470.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a8::7) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|SA3PR03MB8182:EE_ X-MS-Office365-Filtering-Correlation-Id: b62bd515-cbd6-47b4-959e-08deebf0751e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|366016|376014|18002099003|56012099006|11063799006|22082099003|10067099003; X-Microsoft-Antispam-Message-Info: PwWkAVObzw1bf6HxQ6XrXvXyU2p6FCHRPzzODmHsnGtmgwNfzMFPYIBFvuRtD2oNL6Aj3Y7mShJKpyHzleidZuz8dPFcZbCE4uYssiu40gCD8af4dwfjj0De6J8NDO47k0ERSTDJrtPqi4WC7sqOjgg5G2r/bCH1PyhHqUPdToo2Q2350zeJzhGEeeKN+FzlcIACX5H8NcM1JLCZ0z1x9Wj7xOyxa2+e3xueAIM92PxQm1J1sST2rLnX++ceF1SK5KjMuXmdGPSpNYi1RDjHybgUSKZAGLSQgk4Vs2Bsp083cRCD0Yzxoa8+81jDOZNgw3exG9A8Dh4LqkVUMo8XqaHx43oBHkpyENOD4uWlo4uonCSt91FM4yf4enTjVX4OEfHr0iGjzuszuB+3xwJ105EN3ELWNbxXaYTSAM6xLyfNEX4UiJLuULL2g0NNLugW2xamb8WlcG2z3LWTxEnxpfDqgtiZnC45Nnzb79jz3UnMW0AHOY3xFn7PsquYGUPzDMuzFVHpHNAp0VH4VLCMnApB0zzc58GS0sj4g9wM0rK1MY3mSn0Ufwe3DkzKu+SqWvf8h7JtFX4eNnzaKA4RMglMmKxdoiolm4HwdqBum1bi4NAjrWG8iQCeWGQdbswXUPFB29/7SuqneVcQgyLGYWDlLWxBMjtk3xEj/tc0jBU= 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)(23010399003)(366016)(376014)(18002099003)(56012099006)(11063799006)(22082099003)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?E8hN9BTCtNKllX1wrEPea5yMeixEfw6RsabQwKkYy0ymqi5kXFBe7s7685R0?= =?us-ascii?Q?Vxl1a7otfdwVtpfl+O1WZJH26sNO7LAmpR26CquJf5GpNr3lUdyvllMFeVHO?= =?us-ascii?Q?LeFrdJiropQb6UTTCd3wxvodBJzSdqMHECaUzCGAdOGFbwyJWrnI5rR//ZxJ?= =?us-ascii?Q?+8rwbrp7zfH4q+fPU/MrsM7Z6/5VamZtLxI9lXQLx/6S8kWugGEyb0cOr64U?= =?us-ascii?Q?0wCRs21XbwEPFXjUs7NxO3RzvYnHtVLNBlKYUkIP1VTSF7NAWZ/5fSg9v7Bm?= =?us-ascii?Q?r+Udmn7fjuLcmuFg/m+RTa8P59d/B7TLPFDy3mgIIOeyXa61y1wNkWu86Rkc?= =?us-ascii?Q?1jgAjXIRApBvKDw194ukXFfBMA6IuOxyMxIquVgGnZHD58jLdgLewLWQO3Hk?= =?us-ascii?Q?6pVOr2w/DM/XwhD5ycRC8akyoxtdYijWFCcEIUgvE4uWe4YoZIuSiV1G3e/h?= =?us-ascii?Q?Mo7SVsbUUFafU9sNTP/KB3j6aJxCJ/2mPhkwXF9fAs7LigF3tedjMDwAyV71?= =?us-ascii?Q?rUCXasenJd3Wv3p0iPQg/pVkrJpWF043Imj5Ot4/Y7wZkruk9rd4hbcIr52g?= =?us-ascii?Q?GIcjWmmcVGXKdt097COWX322wplBH69lDJe1MNgEW/XtFT3nx29R74jDkSPQ?= =?us-ascii?Q?XDdlfTiJOQE8IfWy4rYzOwukeR4PgqREIYb0+X6uMLTuIFBpxJAUzmRM+/bg?= =?us-ascii?Q?8y2DKN6OTmKiyiDfH/U4MW+sUNlwwL+IRmkoTpdG3lQs4lmtpfd63kyV0sxV?= =?us-ascii?Q?DITmJHcQUf3J0+7NjhppFVzB7kcqYfWNuAW5HC6+PFhXX0VuqTbqZNraQ8kc?= =?us-ascii?Q?JhtSK6HVA7uXsJEaXwUjsxK1buSF3PyIGvfNyK9akzlkBzrwxInAAjIirkFY?= =?us-ascii?Q?O19aEpTq7VNJx7h0XFHtR0FMNLnMp9Aa6zluM0I5GtoTtKzzjvScOggwjUpU?= =?us-ascii?Q?fRoTNwyeyHJ6fbWXUtm2L/mJaU0meE6L4vFjxxSCxKcr4MOQZeaIqpuS3U9P?= =?us-ascii?Q?KJhlt6/3sbaCacrSlD/oi93CkDlyF/1pKrK5eLZFOJpsaftu7AbH5mqibO+m?= =?us-ascii?Q?W2pomkmlZR3CQCVhdiTiFU4obV9/vRmyA5zyj7PEzE7mDY5cmikGjUCDnqhy?= =?us-ascii?Q?rkwQrIoxTERiWpAUgy3QGGeUCI9A+8ulunGfhpWCOLV6elK+hbCyv4kMR594?= =?us-ascii?Q?XPemxViZitk54iFLrEjA4ZuCZsFOqHajtGisHwPhmc/q9JRFE4v9qFmMU/r1?= =?us-ascii?Q?sDMko2gdJSWQPgF3PsV2mf9toOUIZUhMxKtCTt3zcOpE7CbA2t0EIW3izSTA?= =?us-ascii?Q?tzYQydIDqK2VMXBTxH7uJv8MvnGbzwspQn0PtOxbOIGWf1NHOUqZZXZU25Ec?= =?us-ascii?Q?tNh0OiYmORhWti6ZUFywcx7+W5WeepafENwU/JweKGM12V6SCG0rZfNDfPeF?= =?us-ascii?Q?TvqxoSaBLNQCJuGn6cxEWz2M5ziu14n0RPdGBpoTe0OWQO9uNmHi1O0LAHmY?= =?us-ascii?Q?WgrjiKuVFNCjBz1CI6AmMHxYpdQTpEjoIjbOeeHERa7aq6hrm26u/mp8kOLd?= =?us-ascii?Q?8vsBy0BNPIaehk8GQvukN9z6t452jdCEYGMOL6dGXMXIq7shLwk/B7Lg+pjw?= =?us-ascii?Q?KSwfFgyplposNlNuxjxaLK7L6AZXpo1bOHpiQTUvqeDs//g5cNCifWofYZ7B?= =?us-ascii?Q?jwOPq1SnaDq1EqDboRHVjui4JQwAKyboJpgJo7KLQAu12zxpVey1aV17MPwI?= =?us-ascii?Q?H0hlWAy0yQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: b62bd515-cbd6-47b4-959e-08deebf0751e X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2026 15:05:12.3559 (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: e+tc0ShppoZdiQzkvMQAOf+x8AdqRmDhtuMR69GYGLw4NLiMLiPNjRUwfrOUVNaicUyG893hsie0DfOeTMwsLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB8182 X-purgate-ID: tlsNG-16d1c6/1785164716-1FCCD77B-FFBA1D60/0/0 X-purgate-type: clean X-purgate-size: 5251 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785164735544158500 Content-Type: text/plain; charset="utf-8" A new parameter write_back_old when set will return the old PTE value. - The new PTE value in req.val must be 0, this is for clearing only. - The PRESERVE_AD flag is rejected with -EINVAL because preserving Accessed/Dirty bits into a zero'ed PTE doesn't make sense. - Only l1 PTEs are supported because they are the most frequent and have the biggest performance impact. - The old PTE value is passed back to the guest through the req.val field If the write_back_old flag is not set then the old behavior is preserved do_mmu_update -> mod_l1_entry -> UPDATE_ENTRY -> paging_write_guest_entry The new get_and_clear call chain looks like this do_mmu_update -> mod_l1_entry -> update_intpte -> paging_cmpxchg_guest_en= try Signed-off-by: Kevin Lampis --- xen/arch/x86/mm.c | 62 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 500549c8e036..278b992aca5c 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3988,11 +3988,12 @@ long do_mmuext_op( return rc; } =20 -long do_mmu_update( +static long __do_mmu_update( XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, - unsigned int foreigndom) + unsigned int foreigndom, + bool write_back_old) { struct mmu_update req; void *va =3D NULL; @@ -4144,13 +4145,41 @@ long do_mmu_update( switch ( page->u.inuse.type_info & PGT_type_mask ) { case PGT_l1_page_table: - rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), mfn, - cmd, v, pg_owner, NULL); + { + if ( !write_back_old ) + rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), = mfn, + cmd, v, pg_owner, NULL); + else + { + l1_pgentry_t ol1e; + if ( unlikely(req.val !=3D 0 || + cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= ) ) + { + rc =3D -EINVAL; + break; + } + + rc =3D mod_l1_entry(va, l1e_from_intpte(req.val), = mfn, + cmd, v, pg_owner, &ol1e); + + if ( !rc ) + { + req.val =3D ol1e.l1; + if ( unlikely(copy_to_guest(ureqs, &req, 1)) ) + rc =3D -EFAULT; + } + } break; + } =20 case PGT_l2_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(write_back_old) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), mfn, cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); if ( !rc ) @@ -4160,6 +4189,11 @@ long do_mmu_update( case PGT_l3_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(write_back_old) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), mfn, cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); if ( !rc ) @@ -4169,6 +4203,11 @@ long do_mmu_update( case PGT_l4_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(write_back_old) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), mfn, cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); if ( !rc ) @@ -4198,6 +4237,11 @@ long do_mmu_update( break; =20 case PGT_writable_page: + if ( unlikely(write_back_old) ) + { + rc =3D -EINVAL; + break; + } perfc_incr(writable_mmu_updates); paging_write_guest_entry(v, va, req.val, mfn); rc =3D 0; @@ -4366,6 +4410,16 @@ long do_mmu_update( =20 return rc; } + +long do_mmu_update( + XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs, + unsigned int count, + XEN_GUEST_HANDLE_PARAM(uint) pdone, + unsigned int foreigndom) +{ + return __do_mmu_update(ureqs, count, pdone, foreigndom, false); +} + #endif /* CONFIG_PV */ =20 /* --=20 2.52.0 From nobody Thu Sep 24 20:54:01 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=1785164742; cv=pass; d=zohomail.com; s=zohoarc; b=ZflaalLX/bHoWTWEITZtL3d65ADZVLPCrrTO9eoVINC4p1w70F8fAzfdVPU7f+BCURerS232+0E9q9IA/zHutpeVBtgceixZI1+cUMKIBEwvMuF76J7lzDkpTIA30ayOHhWrPFbEZUcLS79OUi3mO9aR7DkkUWn2Rdfd2N6W7R0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785164742; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ujfQculv3wHfFyekrZ5tWOrthojOAbuyk/54bXUGct4=; b=QN7zRVB+EkSeZovDfeg7UEZxyfJm/XtYtFq+2bG8bVp09qSJA2K8mJdEtgdnQmZDuXuxtmQM7/TQRGpUJ5lkJrPT9IWabIPtSI5K171e3J4/MrB+Jcie2H+m6wK5upqIQiYMSnuyigt3YWRLa/0/vpbbqnyrHwPyqYCccg2tYOA= 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 1785164742587342.7352011930418; Mon, 27 Jul 2026 08:05:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1371726.1619226 (Exim 4.92) (envelope-from ) id 1woMtT-0004iF-BN; Mon, 27 Jul 2026 15:05:27 +0000 Received: by outflank-mailman (output) from mailman id 1371726.1619226; Mon, 27 Jul 2026 15:05:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtT-0004i8-8G; Mon, 27 Jul 2026 15:05:27 +0000 Received: by outflank-mailman (input) for mailman id 1371726; Mon, 27 Jul 2026 15:05:25 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1woMtR-0004ej-5H for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 15:05:25 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1woMtQ-0007gq-Hr for xen-devel@lists.xenproject.org; Mon, 27 Jul 2026 17:05:24 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a6773b1-bab6-0a2a0a5309dd-0a2a45099ac8-6 for ; Mon, 27 Jul 2026 17:05:24 +0200 Received: from [52.101.48.8] (helo=MW6PR02CU001.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a6773b1-be1a-0a2a45090019-34653008bc71-4 for ; Mon, 27 Jul 2026 17:05:23 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by SA3PR03MB8182.namprd03.prod.outlook.com (2603:10b6:806:465::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Mon, 27 Jul 2026 15:05:19 +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.0245.012; Mon, 27 Jul 2026 15:05:19 +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=bagaMyk3/tc1uanchugvAElI5+0lYM2n/edTxQsDtAW0exAagpCWDRF9bwH85fTSBb/92uE8zTh+xiIrO+HCa4oQ1fGCSw682+ufakIsk64l+yGv86wF/6T9ZLj0dQtp43uPBzci13l1FjRTTAKXlcNBeM3gzfUkQqj2pQ38Foippqtv0ufeG9EF3B14mP8jQoGZzsiQNaJ23xOg6AD8+ZsSQy0MnOXcUzAfUpFDZDDbHlsisV1gp7MZMuxa1G1gFeZf9ZQ3LDI9zdAXrwoRuG/0dFDd9FvEcSUKvDCklJfAYcnaPDlrAtPbLBw6Gh9qJMGjk4pq90lcOPBSFQMPUQ== 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=ujfQculv3wHfFyekrZ5tWOrthojOAbuyk/54bXUGct4=; b=RGoDZDx3ikcs5wm77zia7brzx6sQ8wcD18HI9QZlaoUAkFiG4vLrT374sVtYXRggMNj3v9/jDFUHcZzGfzQ8Mvw7JYYElO1i11tv0bjsnQY1sG8RYzLyIcykJ/V6/LPg1wAe6P30AjnBFI/DjEeFE9of6uivXvb+KiSXYr5Ns3TcGuOU7zjz41GWbAHxv9GKSYdBlTF9wnVkX46k5igvc29cv+6XWGlWplGtDD7uTSwv9WfOl9untPfGuLRQltIoQDGrgOQWr4XXIjMnhfKEo0ectIhdnHWDBp+hldXe486UEYceWdFhUlyq692VFW3/bBxirGJSeGZKmCOysvjviA== 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=ujfQculv3wHfFyekrZ5tWOrthojOAbuyk/54bXUGct4=; b=nA8TbS+M5zVDtVgljFnXdmsxKb57AonEJqplL5ZJcbjZt3gzIJgnPihkoFg4JMM1yqse4adfSPVu+MyUg5eeIgd/QKQtSznuVAyRy8BTYXQpZfpg5wAVx2AV1klwMRfz8H3g4MhgXUG+DGgiIO/0933ArAgZ0LJdTbpDAYjdyVE= Authentication-Results: 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, roger.pau@citrix.com, Kevin Lampis Subject: [PATCH 4/4] x86: add new pte_get_and_clear hypercall Date: Mon, 27 Jul 2026 16:06:15 +0100 Message-ID: <20260727150615.1373200-5-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260727150615.1373200-1-kevin.lampis@citrix.com> References: <20260727150615.1373200-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0576.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::23) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|SA3PR03MB8182:EE_ X-MS-Office365-Filtering-Correlation-Id: 7fbd3f07-383e-4a26-3678-08deebf07907 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|366016|376014|18002099003|56012099006|11063799006|22082099003|10067099003; X-Microsoft-Antispam-Message-Info: oSKSOAwFZLLKaLKdryqMteqUGUHxX6rfKwmR7Q8fALr9NsnUwCnO+WkAAdsrUVFgcnAGR1QEedC7q8T77pPYzIW29PHED5ah5dLDveXn6byLYYMs8qNiCUDYXYwDGSpV/K/enQGSBX+wqky3bmUQmeMbv9sybzILrnt2Rs20VYYuWmfukuarN0Iwbi/AmfP7gU2Y/QEt5Fq7GS0fh0/8GEvi5VLBzLZKcf+THh/k24tJpz0GzwtnsjttOYygFHHfdI5+mI58bR/eFHgrqQCMo/MwFOUPJ0MkfD/9HbPnSHlisLAFRi9kJl4EiY2GPc8k5FkFnaKR0Y4hL7/cqqeEV4HVrQIttiYRYnqyUtGZ1XFJ3BPg20djEOq09igSLtXJQAMDQxhgo8ZISg+72L9kCc4O3aLEvFtsr8Fwo6TT0dKiKJOlb+u4Ldzypz+ejE/Lo4bnmm1m3ltWyzekaZy4UzE9Ynm67TmgSWnPMT6OL1sbZzjBb/Fl+WFADYbxXL26JP6kg/4xm8s90L7phf5+vwaKzFKZNemX7K1R+qJ7BUMfx32Yc3SiumQT9n2qSGmozNOyvUug4F0HgR552gk3ek/SvPuT4YymVX1RE+O5/XitWlss1SPnoj5ZdU8kPz2JfqwStc3TvXjiRV4qNI4cXvaWcXier2HPqfGyXmzPF8M= 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)(23010399003)(366016)(376014)(18002099003)(56012099006)(11063799006)(22082099003)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CYYxcZYZwWapWm7MOu9/X9N88orSBcs7+2aYM97kRsEpsewtwnyQA4WJnfNf?= =?us-ascii?Q?Mtss54AviFlb6h46MiZGbDu2ZNDwgljpjNgVz37TalQ2oXKYJcWrVg7Arx37?= =?us-ascii?Q?ef+Z3UOpiYnSOg0Tsdp4mg8T32kas0+xDfe01cSJLx5BEBD+0AjKx/txEU4u?= =?us-ascii?Q?5henOVebrDE8+vd6evVJzKee1FmMTxq5B31J6MYjlnLiqdz82aClZcWguFys?= =?us-ascii?Q?W8rKBaaZCNkcurOjT5QYVP/4NJmHrNcVX+vRDscN7wczIcNEEgyr4vf76PF6?= =?us-ascii?Q?RrLZ4TBYD9jP5Y7aX2WbLyaxt58LAb2PqBXUwUgBZ71Ul/zHGBLkskkCQ7Dv?= =?us-ascii?Q?znOZV1HnWU6q2OTFVx4wrtZTvTOJqFzGZpOJqlG1QK7qajlw93IAtcz3bKnn?= =?us-ascii?Q?YkdM+q6dZ/WnHbLItAjI0vK9xyMwHDPQTQ54agnVU+dGg03S/96Sq5SJZUb2?= =?us-ascii?Q?ISqcnRXEtrOj3UEaA170OsW6i4Wwt8fhN5a3HzwX7UasdQY0n6OigT4ykEu9?= =?us-ascii?Q?dYwh+8ooFhTFLNp2lwhfXFhlpJ5AxR7qu5CIeGytFk8hNGi6aM6AFSoJ8fz4?= =?us-ascii?Q?/FdZGYwAbWkP4Kmxl58g+lTi7WvZY4RAupzy9aTvnbP4xykhN1HS4yNzN6Ze?= =?us-ascii?Q?kbz57INWKLT4lIrPKkvDtljWhCRX/vMQfT+S/h0aTk2jGS30mf1aJpuHQYt6?= =?us-ascii?Q?1jU4PVUdjpY8v8IAYUSZMg6xmxit5j9HDhJe5Kj6WxPQnv4jXPxDVRRntvZf?= =?us-ascii?Q?FhqXt0nAqco0Sd/Y+d3tRiymm8RcgxRqVEWkupyUImQ3r1egAp0JiW3s3lp6?= =?us-ascii?Q?D7JfVKYocI/y5/svf67Vki40J0ttcpJtwKIwm6gltLcyuFzU83upAFn/pfeo?= =?us-ascii?Q?45dEl4P+TKh8T3qByQewe/wx4iMCHRoIKg5FXpYGVRERSCTCuUIEXv6kGE8F?= =?us-ascii?Q?PzbNNlN26Rwv78f62IBlxDfWm4U9oB84ui0LcDbfuDV+9XMv6i7gZMOYQQIx?= =?us-ascii?Q?wFkmX1a91I32p+KzQsi//R7kJ5RZ/unl3eWnsN7+SPYuIFot0zyc//cNfgUz?= =?us-ascii?Q?xTclYS3nRJhAQ/+B6afS+q6yPj9b2Y9jYDd6g9PZ/YBsEIIUm+D4zSI2DY2X?= =?us-ascii?Q?AHXNuuvYynYQMzXAJm6NRx9i9g4R1VJLndTTOGr20RPZ5RpqSVl2I4TsYjEp?= =?us-ascii?Q?5nbFTPJVgNUObpr9IDeMSx19AnZwNNa962C/JqjfDDmXGrHL9fPXMMCbW0zl?= =?us-ascii?Q?pOztliLPAeO2lKFSdi0NscvzTGQZP/hLjaUeJDN/0X0bP3FSmjxp8FvyKFDp?= =?us-ascii?Q?noI9QUtbar4p57BhQLbAJj2FxLwt4Uhfy2CMB/swuLcj1qgabDm0qR0Zd1qa?= =?us-ascii?Q?aFyA0bz9+CzlkcQqPXR/KMBYlMZ2nBknWQUM7QIgooxS2XPgH51NqkLmqLjP?= =?us-ascii?Q?7sbJbbpoDC4RU0+EasEqFLA8SjXhbJ9mcg0pW1KAPCCiKT1sVirK0I1ClJXi?= =?us-ascii?Q?7zIozmBIlyB9RPWqKdAkSmUpJMMSZo+1jYpspKt7FoDLkDNOHdAVW1DxAyVW?= =?us-ascii?Q?KHoryqgi1Jp3ZKlDLFWe9tnIHmRSfAYzvnJpUExFf3Gotz5MzFrv+M4oXuH7?= =?us-ascii?Q?ZwytHg5Vu8hT2lSLx8czVaA2vNh6q6qTnkDtVhEBh4x6Rdfd1i6xuuMXScIy?= =?us-ascii?Q?Rf/tDyi0ef7NGJdBgCfiHPpC9IP+s+TZVOVzjgNVXH26xTnVNHua5h3anw78?= =?us-ascii?Q?oAqVmX9vWQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7fbd3f07-383e-4a26-3678-08deebf07907 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2026 15:05:18.9583 (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: i7Y04Od7Kd3YQuMtUXJUGKr7uuoRGE4twA5a4uxZ7WNh9Y03QVrjhCRLYt2+Q3Gx81iGy+3EIkUMg6eXwypzaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB8182 X-purgate-ID: tlsNG-bad1c0/1785164723-3A8D9034-D49B0814/0/0 X-purgate-type: clean X-purgate-size: 4655 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1785164743615158500 Content-Type: text/plain; charset="utf-8" This new hypercall uses the same interface as the mmu_update hypercall exce= pt the old PTE value is returned in the mmu_update_t->val field. The purpose of this new hypercall is to improve performance over the current trap and emulate behavior. Only l1 PTEs are supported because they have the biggest performance impact. Signed-off-by: Kevin Lampis --- xen/arch/x86/mm.c | 24 +++++++++++++++++------- xen/include/hypercall-defs.c | 2 ++ xen/include/public/xen.h | 1 + 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 278b992aca5c..e5fdfc66081a 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3993,6 +3993,7 @@ static long __do_mmu_update( unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom, + unsigned int op, bool write_back_old) { struct mmu_update req; @@ -4013,8 +4014,7 @@ static long __do_mmu_update( { if ( likely(rc =3D=3D -ERESTART) ) rc =3D hypercall_create_continuation( - __HYPERVISOR_mmu_update, "hihi", ureqs, count, pdone, - foreigndom); + op, "hihi", ureqs, count, pdone, foreigndom); return rc; } =20 @@ -4316,8 +4316,8 @@ static long __do_mmu_update( =20 if ( rc =3D=3D -ERESTART ) rc =3D hypercall_create_continuation( - __HYPERVISOR_mmu_update, "hihi", - ureqs, (count - i) | MMU_UPDATE_PREEMPTED, pdone, foreigndom); + op, "hihi", ureqs, (count - i) | MMU_UPDATE_PREEMPTED, + pdone, foreigndom); else if ( curr->arch.old_guest_table ) { XEN_GUEST_HANDLE_PARAM(void) null; @@ -4330,8 +4330,7 @@ static long __do_mmu_update( * on the fact that this argument isn't needed anymore. */ rc =3D hypercall_create_continuation( - __HYPERVISOR_mmu_update, "hihi", null, - MMU_UPDATE_PREEMPTED, null, rc); + op, "hihi", null, MMU_UPDATE_PREEMPTED, null, rc); } =20 put_pg_owner(pg_owner); @@ -4417,7 +4416,18 @@ long do_mmu_update( XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom) { - return __do_mmu_update(ureqs, count, pdone, foreigndom, false); + return __do_mmu_update(ureqs, count, pdone, foreigndom, + __HYPERVISOR_mmu_update, false); +} + +long do_pte_get_and_clear( + XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs, + unsigned int count, + XEN_GUEST_HANDLE_PARAM(uint) pdone, + unsigned int foreigndom) +{ + return __do_mmu_update(ureqs, count, pdone, foreigndom, + __HYPERVISOR_pte_get_and_clear, true); } =20 #endif /* CONFIG_PV */ diff --git a/xen/include/hypercall-defs.c b/xen/include/hypercall-defs.c index a625d634b694..0552e93ab560 100644 --- a/xen/include/hypercall-defs.c +++ b/xen/include/hypercall-defs.c @@ -174,6 +174,7 @@ multicall(multicall_entry_t *call_list, unsigned long n= r_calls) #ifdef CONFIG_PV mmuext_op(mmuext_op_t *uops, unsigned int count, unsigned int *pdone, unsi= gned int foreigndom) mmu_update(mmu_update_t *ureqs, unsigned int count, unsigned int *pdone, u= nsigned int foreigndom) +pte_get_and_clear(mmu_update_t *ureqs, unsigned int count, unsigned int *p= done, unsigned int foreigndom) stack_switch(unsigned long ss, unsigned long esp) fpu_taskswitch(int set) set_debugreg(int reg, unsigned long value) @@ -232,6 +233,7 @@ caller: arm table: pv32 pv64 hvm32 hvm64 arm set_trap_table compat do - - - mmu_update do:1 do:1 - - - +pte_get_and_clear do:1 do:1 - - - set_gdt compat do - - - stack_switch do:2 do:2 - - - set_callbacks compat do - - - diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h index 2149b8dd3808..9e2ba0107d3b 100644 --- a/xen/include/public/xen.h +++ b/xen/include/public/xen.h @@ -118,6 +118,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_ulong_t); #define __HYPERVISOR_xenpmu_op 40 #define __HYPERVISOR_dm_op 41 #define __HYPERVISOR_hypfs_op 42 +#define __HYPERVISOR_pte_get_and_clear 43 =20 /* Architecture-specific hypercall definitions. */ #define __HYPERVISOR_arch_0 48 --=20 2.52.0