From nobody Thu Sep 24 19:43:20 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=1789072199; cv=pass; d=zohomail.com; s=zohoarc; b=Rl7MYTQ5ANqdPVzA4VxM6aV85H0G5rMV21HBuorj/y1ODpbwxM++C39VoOIUNrDlsfc0q3bkkgKq8mjkYa6rouHPDfCkOOljDkekrop9cT0DOHJ4euofTD9G6NhKHtN4LfE46ckzLF5mZpoNRLcK+28p45c0IC4Gx4qIB/0rXFk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072199; 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=5PZCPy/IYhqH9L3yDZWNxwVLgkKWTeL1+WTsiJoODCQ=; b=fWz73PbUa+LMTZ3OBYt8SV4quseWhttE3F9NZ+yzKRAANY1tdZXNh7vmkzIBTQtscH70UjdatvYP0XGg8w6tuCe9BfeBJ9vBS/dSqwzddRBZSJoyEP6hFwdkD/eG/W0+Dlra/0ZdF7bnuAmFSLcinL4JFoUjldk1/7SevcSC3iI= 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 1789072199009318.6368499468797; Thu, 10 Sep 2026 13:29:59 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415359.1644804 (Exim 4.92) (envelope-from ) id 1x4lOm-0000H0-TC; Thu, 10 Sep 2026 20:29:32 +0000 Received: by outflank-mailman (output) from mailman id 1415359.1644804; Thu, 10 Sep 2026 20:29:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOm-0000Gt-Pj; Thu, 10 Sep 2026 20:29:32 +0000 Received: by outflank-mailman (input) for mailman id 1415359; Thu, 10 Sep 2026 20:29:31 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOl-0000GO-5F for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:31 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lOk-001ixY-IG for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:30 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa312e5-e002-0a2a0a5209dd-0a2a4505c826-30 for ; Thu, 10 Sep 2026 22:29:30 +0200 Received: from [40.93.198.47] (helo=CY7PR03CU001.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa31328-4cb1-0a2a45050019-285dc62fd1a8-3 for ; Thu, 10 Sep 2026 22:29:30 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:26 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29:26 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" 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=NW2YyJnJAMsu+9Qo+Ne5yJ7S7JTABKaffF98Ht/hMFGyoayWWRBgcpof+0uNe8hF3Z9c9lED8WJJhWkyOmmEXqDusrWNusef6RiAX47xYHcU/pKsslcJabXHIJEciaxMXmJlQkEuQ+woUvPQaWIOKCmaJ+WUpTrMTA3hdNQKb3/JybSXQlCxz+meBlR7ohIW3I02c+JYT/zfWYUPmrScdA8+8Hm+B06w4Jt3v8X5169Zdcp0NcNV1CQ4Mr0y7RxQtB3Vk/w83RO/e7anZjE2R/1j6MNqBM7aWZwuSMdp1eNclJIEUNRCzybPDMQYBoG9WDPO4t+JJC7sRXgbFfoDdQ== 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=5PZCPy/IYhqH9L3yDZWNxwVLgkKWTeL1+WTsiJoODCQ=; b=FqY4B6b++/Ncxrkd2NwK19gehOYD8AFTGllyGu/JSK9bu9oN7pGtZiszBAqEuNTmGBB+Ol8UzsCkzWooK9cuDFjvSeVfu1FYPf8Y02epNqzMz+zKf19Df07O24L1gemoMchsizIAndWqRQNodym1SnrIje6A+oxGspRgxqz8R8SjZE5LdiszZFuDEBi8ge5DCXH33ZDiT9m5JOke0kEOQ9WHlar0PL27lcRhNWFstT2JiyA5ZcHvBIBQOMlpMyq/or+BRmdPdozI6B3zHm+kfmYKx3N/uwn+e64hJB0gGhxJspNfETzl27nZtjYkaSJGOyXgbDys7Idi4evIKGhkQg== 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=5PZCPy/IYhqH9L3yDZWNxwVLgkKWTeL1+WTsiJoODCQ=; b=hnNhDFjzqk/xHw1UvF1FiEq+6e2OfQLCERYN7O+9m4n+azo9CKRAICuo3WSpgkFI6DT/ftEGbD2oTxrh+c9L+mfFWz3oq/mLhE5FUDPdu+4SVXPGZ22jR+KEomKOynfLJl95E4nv6id9k+SEWGFviF+Dk+us3u5y7hyCihGWegk= 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, teddy.astie@vates.tech, George Dunlap Subject: [PATCH v2 1/7] x86: make UPDATE_ENTRY() allow for multiple operation flags Date: Thu, 10 Sep 2026 21:31:07 +0100 Message-ID: <20260910203113.462943-2-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0595.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:295::12) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: bb5e4a74-0c4a-406e-c20c-08df0f7a34f7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: sImLlXhak9nGVI67t0uBRoxsAVITuqH7Bz4CrhGhTmS+Uy+uwY+I+OG9emmHTMZ4g26uGCTpuaNaWbfgptFR35wyE9p8c8PUUDo7R/43SCRyhIdD3rnfxhIZ0KmwaI/4bCCeOB5I82CT4OiWQprKWQjY/ZiDsn5YoOFzWz2WIBvevJ/9DDwRdBklMzS71ybLPfgNjVscCm1tMjqKaZxpv5bQRz5kcQFRPDe8+WWLA6uC+uMNA1x3YRjZadkZJq1kZc1Ya+Nhs2T99xUr4qzB3IZ42C57n5+8f+1LbfZZK8//bdHzx0G0Xn00mj65UDsfAeLtcY/ga8PIvyhoBL4KEcSXJYd+416qpGWEr1rXwGKgGoGOGjaFbF0s8MWWjxF14VmZIvPNQViSkklZPQrS060md+JbbtWfjSImqTS48DqD2aYZj3VAj6d19Qgh2yKfGa/h/39n9oVgc2WnVo+ANOlDyBpPcGyWlr9GTI6o+QRFjmSalJG8RiDVQAOMjq4RHZsnCE7YbI9k/dbThNdKTNTvcZEQo3hkUtlpWPRNLQ5h8Yb7umy7R7KoqJXnVXNvnJ1NmoNJEQP3WBLERRKccsd+Rh3ztM1EOI0EA35FMsmU1G6M3cZWd4KbrdV/Fw5EfiAr78+1vNjfMmwYTSS4ihcZH7UcL1cxvWZJSEFCVIQ= 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)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MOQyfGzHkrd3uvj7X4vgoGV3os1EgQD+rkXu9Sv7XC+tdT38kcNdJeo49paw?= =?us-ascii?Q?9a6WCaPQIuwwegTtKFGPwFXxN00+asLDe6gYOx9h7a+iz248Rc6Kb4Qdm4Ua?= =?us-ascii?Q?bFvROkj6ify4flm+y/Q8SRiYYBtnihxRwyXrOsb5T8yOHmsaoOasOCQVXf6a?= =?us-ascii?Q?UJMQwBeaE+jxcdkBMnXJ5VmtZdA1oMOCCrJlPaP7jLDEz6iNm5ybKkmBF39l?= =?us-ascii?Q?vqs9CKf/sLrNkFrtO2tOSmGab1O8+jgjHz/ojeJklBqiKkt40/QI1tl7/G8a?= =?us-ascii?Q?MmRYFVprRLSoespKJjhnOZ/v1maR/ywIdU0RPqWgUzgyTyT5klj+QeRVNSZH?= =?us-ascii?Q?o0SRNkFS7B8roo+Wk3QW7NERPcwQOV+mfmqHWwp9WKlhTtYN4uqbKWaNiU6t?= =?us-ascii?Q?rtklGm+w8AxiXRHSokaKhyv3MwMy8ZZNYwCwywXol37lN5cgs1iTC70uN3JH?= =?us-ascii?Q?R25N+AeHHHX7yH73EQI689YH9WQS/59EWwYaL89FVsUeAYr2MzEAVatOzJ+J?= =?us-ascii?Q?0UDYTy90DZ9sz0vI+n0EeO8Shoqofg48nexXUiuIQ1g0fdFQToSRNHhpNS0P?= =?us-ascii?Q?//nwjugKMGnyyhjnLpD42NrK3cvb9QcwYax4nwaWjoTbbyoJTirOx9oyjkWv?= =?us-ascii?Q?BariF+grdyCV79PhS8JIcDjg2wCVkR4M2IfnmZCIvw/lik8F9v76Q9XuDoG5?= =?us-ascii?Q?SemwF3IgHkjNVsLXW7OCVLJ8qzZlgv0WngCqLsXzgnEGq8RfLjSDc7+wS0Bz?= =?us-ascii?Q?awcBFDPNY0GAmgq2y+/aZPIoumGjMdm3TB4AqZIsBLDc9Dn+nOBica3RX5ob?= =?us-ascii?Q?FCfmxCKInn6OPGmNy9rt9hlYJao+LSOe7EmmgqXFEKIA8ehyz4CfRO0+VYh4?= =?us-ascii?Q?rwRBomiP4KkmKh0X91rHoA8SC09P5XGyASXZr1vHQyJNqaGX6k3+meUBI/n6?= =?us-ascii?Q?VPfl7+/UrxtStmETuM9Py+6+nEg6ZsEDDVhKuZvRSEypBzjH21os9SpxAXN7?= =?us-ascii?Q?5brmH79xnzx4rwQ50s97ShQd4YV+DtIYhiDfr51t+eB4jaTrA42zeFZ8gf8r?= =?us-ascii?Q?e0hRSb28npNmbSQfsDrfKO0GDQWKX7H2RyA4cEZrVMGcAp1v25gjd4oL0yCe?= =?us-ascii?Q?WTmbWDKBHpbPS9/GGC5jmWdMeQSPQVJPheooTH9Nid3+Fj9RUfD7o1U1Dpbs?= =?us-ascii?Q?FS3b/6xy/6Wdo1TWWvv4teiCABYMdsyKvjGMLQl2Yiqcr/a6ppOd6X40jpcx?= =?us-ascii?Q?y/apZ9dNpBo9WuXOqIXKESi7JNT1K++YNpoHBOwcVhZO8p/wztvknW0XEjuS?= =?us-ascii?Q?kOMDpT+YpZY+gnklXEe/73Za9wMjh+qjk4iA7Mc28iJY7IYLLnXH9ETRuHns?= =?us-ascii?Q?4tODfE8o2oAt+eGhqR670pf1SJlVOyNIQVIb2N+u4OvsEbSvvNNLzmEDWXnB?= =?us-ascii?Q?oLngcQwyKEuK/kjsrJhSGfgpncuSkUS8s5x7Ow+abl3Ke5g8SVtCKHU/wvpY?= =?us-ascii?Q?LxBGc116O4nF/MvxkQ/3vc8vrbuVLiNIs+HIzcXEuyEIjFXaK49Y4omSLvGy?= =?us-ascii?Q?NumsIDlRE1c55uA2+axQgTWWPNXd9TyZ8Aj3znS7lR8ae2EPkgYgVdbAnJTX?= =?us-ascii?Q?KAG68+3+0LgAGPNtTqrbqGSYJwJ+p0+ZN/K3KGirWrR85CzGZzqstshhNSnD?= =?us-ascii?Q?Vfl3pq2LY6VlHy2sEnBPLw8wyUHim+ehiKRF/VqnX34V8YUXwood8wQe+rmu?= =?us-ascii?Q?wl5RTJNxxA=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb5e4a74-0c4a-406e-c20c-08df0f7a34f7 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:25.9990 (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: XvOUmrrjsuqCsblJAi2D1rkzsjK0wGlwB9mGEFUBUVB+5d21uONtoJrqa9hSaT0KgnmlGIUJYBYle6n7m5UB1Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-c201ff/1789072170-722AB2A1-80FD522E/0/0 X-purgate-type: clean X-purgate-size: 11395 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072200743158500 Content-Type: text/plain; charset="utf-8" From: Jan Beulich Signed-off-by: Jan Beulich Reviewed-by: George Dunlap --- Changes in v2: - New patch --- xen/arch/x86/mm.c | 48 ++++++++++++++++++++++++-------------------- xen/arch/x86/pv/mm.h | 13 +++++++----- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b158742408f9..5f778557b1e6 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2149,10 +2149,9 @@ static void l3t_unlock(struct page_info *page) =20 /* 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, + mfn_t gl1mfn, unsigned int update_flags, struct vcpu *pt_vcpu, struct domain *pg_dom) { - bool preserve_ad =3D (cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD); l1_pgentry_t ol1e =3D l1e_read(pl1e); struct domain *pt_dom =3D pt_vcpu->domain; int rc =3D 0; @@ -2172,7 +2171,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_t nl1e, } =20 /* Translate foreign guest address. */ - if ( cmd !=3D MMU_PT_UPDATE_NO_TRANSLATE && + if ( !(update_flags & PTE_UPDATE_NO_TRANSLATE) && paging_mode_translate(pg_dom) ) { p2m_type_t p2mt; @@ -2213,7 +2212,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_t nl1e, if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) ) { rc =3D UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - preserve_ad); + update_flags); if ( page ) put_page(page); return rc ? 0 : -EBUSY; @@ -2237,7 +2236,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_t nl1e, put_page(page); =20 if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, - preserve_ad)) ) + update_flags)) ) { ol1e =3D nl1e; rc =3D -EBUSY; @@ -2246,7 +2245,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_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)) ) + update_flags)) ) { return -EBUSY; } @@ -2260,7 +2259,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentr= y_t nl1e, static int mod_l2_entry(l2_pgentry_t *pl2e, l2_pgentry_t nl2e, mfn_t mfn, - int preserve_ad, + unsigned int update_flags, struct vcpu *vcpu) { l2_pgentry_t ol2e; @@ -2292,7 +2291,7 @@ 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, preserve_ad= ) ) + if ( UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, update_flag= s) ) return 0; return -EBUSY; } @@ -2301,7 +2300,7 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, return rc; =20 if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { ol2e =3D nl2e; rc =3D -EBUSY; @@ -2310,7 +2309,7 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, else if ( pv_l1tf_check_l2e(d, nl2e) ) return -ERESTART; else if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { return -EBUSY; } @@ -2324,7 +2323,7 @@ static int mod_l2_entry(l2_pgentry_t *pl2e, static int mod_l3_entry(l3_pgentry_t *pl3e, l3_pgentry_t nl3e, mfn_t mfn, - int preserve_ad, + unsigned int update_flags, struct vcpu *vcpu) { l3_pgentry_t ol3e; @@ -2354,7 +2353,7 @@ 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, preserve_= ad); + rc =3D UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, update_fl= ags); return rc ? 0 : -EFAULT; } =20 @@ -2364,7 +2363,7 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, rc =3D 0; =20 if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { ol3e =3D nl3e; rc =3D -EFAULT; @@ -2373,7 +2372,7 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, else if ( pv_l1tf_check_l3e(d, nl3e) ) return -ERESTART; else if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { return -EFAULT; } @@ -2386,7 +2385,7 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, static int mod_l4_entry(l4_pgentry_t *pl4e, l4_pgentry_t nl4e, mfn_t mfn, - int preserve_ad, + unsigned int update_flags, struct vcpu *vcpu) { struct domain *d =3D vcpu->domain; @@ -2416,7 +2415,7 @@ 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, preserve_= ad); + rc =3D UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_fl= ags); return rc ? 0 : -EFAULT; } =20 @@ -2426,7 +2425,7 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, rc =3D 0; =20 if ( unlikely(!UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { ol4e =3D nl4e; rc =3D -EFAULT; @@ -2435,7 +2434,7 @@ static int mod_l4_entry(l4_pgentry_t *pl4e, else if ( pv_l1tf_check_l4e(d, nl4e) ) return -ERESTART; else if ( unlikely(!UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, - preserve_ad)) ) + update_flags)) ) { return -EFAULT; } @@ -4135,18 +4134,23 @@ long do_mmu_update( =20 if ( page_lock(page) ) { + unsigned int update_flags =3D (cmd =3D=3D MMU_PT_UPDATE_PR= ESERVE_AD) + ? PTE_UPDATE_PRESERVE_AD + : (cmd =3D=3D MMU_PT_UPDATE_NO= _TRANSLATE) + ? PTE_UPDATE_NO_TRANSLATE : = 0; + 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); + update_flags, v, pg_owner); 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, - cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); + update_flags, v); if ( !rc ) flush_linear_pt =3D true; break; @@ -4155,7 +4159,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, - cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); + update_flags, v); if ( !rc ) flush_linear_pt =3D true; break; @@ -4164,7 +4168,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, - cmd =3D=3D MMU_PT_UPDATE_PRESERVE_AD= , v); + update_flags, v); if ( !rc ) flush_linear_pt =3D true; if ( !rc && pt_owner->arch.pv.xpti ) diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h index 4564cab9fc0f..3aac0f3309a4 100644 --- a/xen/arch/x86/pv/mm.h +++ b/xen/arch/x86/pv/mm.h @@ -62,17 +62,20 @@ static inline intpte_t paging_cmpxchg_guest_entry( #undef PTE_UPDATE_WITH_CMPXCHG #endif =20 +#define PTE_UPDATE_PRESERVE_AD (1u << 0) +#define PTE_UPDATE_NO_TRANSLATE (1u << 1) + /* * 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) + mfn_t mfn, struct vcpu *v, unsigned int f= lags) { bool rv =3D true; =20 #ifndef PTE_UPDATE_WITH_CMPXCHG - if ( !preserve_ad ) + if ( !(flags & PTE_UPDATE_PRESERVE_AD) ) paging_write_guest_entry(v, p, new, mfn); else #endif @@ -81,7 +84,7 @@ static inline bool update_intpte(intpte_t *p, intpte_t ol= d, intpte_t new, { intpte_t _new =3D new, t; =20 - if ( preserve_ad ) + if ( flags & PTE_UPDATE_PRESERVE_AD ) _new |=3D old & (_PAGE_ACCESSED | _PAGE_DIRTY); =20 t =3D paging_cmpxchg_guest_entry(v, p, old, _new, mfn); @@ -102,10 +105,10 @@ static inline bool update_intpte(intpte_t *p, intpte_= t old, intpte_t new, * 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) \ +#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), (_ad)) + _m, _v, fl) =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 19:43:20 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=1789072191; cv=pass; d=zohomail.com; s=zohoarc; b=H3kwO3gR2cS6aNMi6U7IqzoEkrKC7+CxKn37KW7SqibAoVcQpllSNPHJw3Ua7SfYv5ctdbNukhTcAi/Jcz1KWhLI3SwUeojLuLpIQkSX4n4WUo3kuuq+YnvWZv7QbckoCopOhw+nmpRRnM4xA7wb3eV19xrcM5tQF3jPUxRXxPk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072191; 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=PZTj/1vocxaUbG8pca89bpaode5EiKcz4pQy300Ltjo=; b=JTiD10N6BE4CXD8Vc6zI3WSzloa9rodrAv2mjs98FRO8HhdGav1xoX6hgGw3nG8MYfpsq6/4WpCtb75pYSY3T8qhfZaDy1wmwjil0pwPvm3WT8bfNblotqJT08ht+UTNgtwRMT0aYpEk0EzQFqi/PgA094NVvGPKG2kDUfvjf8E= 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 1789072191449951.5102587072971; Thu, 10 Sep 2026 13:29:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415360.1644813 (Exim 4.92) (envelope-from ) id 1x4lOt-0000YI-6k; Thu, 10 Sep 2026 20:29:39 +0000 Received: by outflank-mailman (output) from mailman id 1415360.1644813; Thu, 10 Sep 2026 20:29:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOt-0000Y6-3w; Thu, 10 Sep 2026 20:29:39 +0000 Received: by outflank-mailman (input) for mailman id 1415360; Thu, 10 Sep 2026 20:29:37 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOr-0000Vt-3x for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:37 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lOq-006SS3-0s for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:36 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa312e3-2eae-0a2a0a5409dd-0a2a450cabdc-38 for ; Thu, 10 Sep 2026 22:29:36 +0200 Received: from [52.101.193.0] (helo=CH1PR05CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa3132e-f479-0a2a450c0019-3465c10060e3-4 for ; Thu, 10 Sep 2026 22:29:35 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by PH7PR03MB7463.namprd03.prod.outlook.com (2603:10b6:510:2e6::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:31 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29:31 +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=DPJYtAV14UALF92Xgi0gJSNVL3ZziYwb04t85AVH1PG8mcOGWohLqWF/pagWr7Z0PjEdabd2e/xmChsr83WILuY188Rvttjzisz/mF9j7zP8vUYaM8RVP8G4DHzt9gW+o4LAnddFFcuTTrhuNrddBVkilR8Hvm8KRYBr8pTvyiAvC8cCTJH+rhnTATrRtUCiCKFwftHYBVB/JKyMQ/FOC5fhCpSExrCBVoPng0JNLI7FLaJ0Q7ngXN0eqFDhnCTwtYrKCfEVgmMdlKD6OGHpJmtG3oDcLJccRFsW/o2x7AOyG7F2xtJsOmxf528l757JjeafKFkSKT/VS0K8C//KRg== 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=PZTj/1vocxaUbG8pca89bpaode5EiKcz4pQy300Ltjo=; b=pkMG+QO+1pdshCPOAnFm1JJ0RD7EdhMMwwS8Y3gotCMYNr5bAK0k6VkSFB/Wwh5aOi4e2LFlwK92A7z0/JwNW6tp31uKSGtMjHMrqGJTriFw2LqjqKWBJpho0InpoxESipuU6caJlH7QRIzxKNftFJtv/Fw2JXzaa1Mh//ew+znefMiIGikEYJ/YbIafzeT1715ftmkLj0mSPgpK2v14IJNVP+HwQDcVpz9puHmDan6hqMmHimEyhLHR2jVIiGpS8meUEH6GshHCDNqcYKu89cfjQO8Kgvv07yZzKNsJ3pX7Zc3IxMPEcMUQ9vZPl1bRZ6ypcdyLfvDEF1Xvlfst6Q== 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=PZTj/1vocxaUbG8pca89bpaode5EiKcz4pQy300Ltjo=; b=YqobQ7ZqWoqCCc/71PBr4kHN6JW3iYpg8APUE6iICeRyd2qY3PRBorjIqvCws6gzbsH1V4bS08HLUYKBldoN/6RivYINmUvG/ST+lKCaIaX28Nv6PoYuqmrODheWIhOukJh8m9HiMbFEaRs1MA/Nd/jRIs3iIl9ykaf/+NQ5GpM= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v2 2/7] x86: Remove return value from UPDATE_ENTRY Date: Thu, 10 Sep 2026 21:31:08 +0100 Message-ID: <20260910203113.462943-3-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0171.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18a::14) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|PH7PR03MB7463:EE_ X-MS-Office365-Filtering-Correlation-Id: f04066a6-3645-49fa-29e4-08df0f7a3829 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|23010399003|10067099003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: OFyBa64dycf5FSiO7xUUZVTwwUgVGVh1n+JcGwixq3jkBws03zkGFZ/q0UHK4VICtfqCDfKcRDFxtXhJFtnwPfTaYZRWvkmQ9GoNJhiHvg0cjtTVH6ochQjIVeg/cTZo9N2QOoD+B+5de+dKITGeIfh1t2E0f2EG1ZnSNtZl2J6kylRGc8qoRmFFtoEp957Zn4zLfmIUy6RvBqTUndD+Db9k1c4Pdxo6KcwbRkGQ7kaoU03WvIFXjKu+eVZP+Cu9kQYjldMmcOk5IAOFBVAhbPIsKqC7acsqaAR/mnGLBS9VwKl0mm0GdoU3GLOjz5oaBxt5vJi7jcxtnNF4CEHO3xJO7zXvy/UyfUqGFr9aom42M+KGlLwUfcK1ahj4WFSQSblny4uwSrq3T6m3szCk8XFeXAH5Q/htos/zNg9sYIvqiRrbQz82HamlFIqkzhCBHv9qRo5EamCMpe5+pMIhUeFHwpMX4Ghe/V4B6T+uYGu1ksbBvDt6S+dKgc2eULBeiLN12v0VSTu8baOeoQA1k67tsPD3N+71yMfx4Sy9QEOhfcLVIPWISuu+aZVPvXICeCJzGYadXvD8CefAzHqJRAoWOIN5k6aMkckQvYLzkOTopL3CkbOVEIgJPzbUv3APHuH2BbZxb0JTIhbzq+f3Icuw8Ei7INH3Vw07Rj70ZVo= 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)(366016)(23010399003)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tow1kS9J+6YSZPvctbuV6qXCJkNxTniXDz4OxQANgjeIpJpWjrzk+7CqNDrQ?= =?us-ascii?Q?Sy/jMFTsV9XF9OwZO4Cvyp0Y3YrlHbAWXadJA4c+HDTBYUC26PWCP1BsszAF?= =?us-ascii?Q?9ovDgP6/70QnqTPyXFycKu/43EytGjunbQubOXuNNaph4MP2IR6fpJkX2eHZ?= =?us-ascii?Q?6h2Wg2jaVWGvNpi2LW5WXSHb54RaETHsOCQ5EJLJJ5T7a2Tr2oXfFitJmwlU?= =?us-ascii?Q?6nOenrjRLlPkY9ktQabInneUqRH0vWpJKbBSmD4CUXAlx7Lw9Qi089mmNg0M?= =?us-ascii?Q?GSBQckD6TdwSAF8HgCOBHDQoZUnc/XJ31zAsp3926ip1CKp5Vk2pcXEzkk1G?= =?us-ascii?Q?sBQL1Ja1Z+oWgUIxmlVjZuv78zjJaL2CVT47smfDY0umNsEb4ZvWfn4GRiHT?= =?us-ascii?Q?Zl2Ky/ICn8xWBHqwtFbS6KT8/f8CCATEXLd/bAtxFyh+LcKkduUyjRHO2ahv?= =?us-ascii?Q?a25xSmbIqeHxhVhkZgk4wB1WVcccCiZkMlHzrUHcTsvo8bfXFkbq7wevh0Kv?= =?us-ascii?Q?XDHWXcDeTv7aPu8ynnCu0iHPh6/AgQdGMpTh6sJ6A3Z4tvSgdbkgRcRQg3kk?= =?us-ascii?Q?BAK1gSzfxqYRBrfvzQ9yckw7pvIBkCZCrQ/TI3wabnFf6/sDnqg6sP9Jyvd8?= =?us-ascii?Q?TNnxsx0PD0QRHKIV0sFWhPYqqZ3v36xyVYbgN/Ud0TILiW+bxtuQkqn0GmZW?= =?us-ascii?Q?ArC2atl0v8LlwFtc+BvNDSosfieRrP+q9+nAWdH5yP7hd9CMTsug4ymS4AUU?= =?us-ascii?Q?HbknjmsH+Spf+DYF+AnhWT3fzubixJOdk97JRvqZXSA4eMtcGWtH9RECw9Lf?= =?us-ascii?Q?FyzP2Lt21x8osX4+9WnXlWHXubv7atrMqqTVnNOc9TBh7hrhC3gmPq0zStZs?= =?us-ascii?Q?Z1d8H/1cX4jbQiEVk1xFELuoRMuWpTqoblbEqte5aDt52y9YrQELtW68B+Ex?= =?us-ascii?Q?dmzdRq21cxhLikTv5oQJNiuZKjJGC/5OhIvpAmpXFKTV3dUHc5ic/E+lWrCQ?= =?us-ascii?Q?jcV1Go6NPa5b+n0hFBcuTX+piHLfQKCCc2U1NfnUUCHiolknLe4lCJ6KYFOe?= =?us-ascii?Q?Rirtr0NT0OJDYkhaiBYWOcqF23kD8xp3UTqkUKrOKNtRsGoUW6V+ki9OMc9Y?= =?us-ascii?Q?Rk7he1LC5IhqZD4jU7xDYkOg3Ncjapt70JPZ2m/J/7Pi5WNSUDapaSz5j/Ap?= =?us-ascii?Q?Owp9I4PElYNVbej3gcYLnj+GyZ4CA8yOk8RhZk72OsO9Js/xpckQ4Ud0CzSp?= =?us-ascii?Q?06LOZXEj9xhlM99Mgps/sdoyLMacYn54jsL52uQVHtwdJq0paqBOOPSnMRVg?= =?us-ascii?Q?FTVysdKNyGTGmdlbLQCLL/DXuwWa8k5oEi8TVy0doFLHxXftLYNKYDCbX6s2?= =?us-ascii?Q?n1HCFrWZs4ZQT9eXXfMPVbmU0J3kQ5RqFNHkqOTxHt7KzBwZM8ZR48lx+aYD?= =?us-ascii?Q?pxBu6PpSRRzR9JRMaTm2A2Ywn+zpcShiDk8kQD3hiYM2qlmPyiOYr5N8S/oH?= =?us-ascii?Q?hoIGMdgfdzxRSeoQuIppAKLhGO8+85X0XU9k2ML9SWjMJQiaicSiH3Zyk+Qp?= =?us-ascii?Q?3zoW5/VsglWhj0ycXoNC80MYm5pKl6N/JpOr+fc+yYr/lXH1Qid71CkVuAXZ?= =?us-ascii?Q?mZQPKhMOuIhS3li9Vr2xXeGWOBOvuA7/5/P2Nt88p8ZdJIVCvmpQLm5k+kzT?= =?us-ascii?Q?vaYB8b86xLyElLgsFPfEH32IW4mT/CvW0lluv8Q7N8b16mF4T1E3og1FA/cz?= =?us-ascii?Q?VHlwwYvtrQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: f04066a6-3645-49fa-29e4-08df0f7a3829 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:31.3313 (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: YahzVvmvDQgscT6UzPRHV49JJfoQJSjtOW5+pMVZmbQGC0SacPrbkWeD32CNMMiXq15CWx26Oi4kR5nuspwnQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7463 X-purgate-ID: tlsNG-d25034/1789072175-774D7A5B-9D31EFF3/0/0 X-purgate-type: clean X-purgate-size: 10387 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072192800158500 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 Reviewed-by: Andrew Cooper --- 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 5f778557b1e6..dcbc44f57c54 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2211,11 +2211,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) ) @@ -2235,20 +2234,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; @@ -2291,28 +2282,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 @@ -2353,8 +2335,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); @@ -2362,20 +2344,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; @@ -2415,8 +2389,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); @@ -2424,20 +2398,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 d89306d34fc6..6a2e37d4a4ac 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 Thu Sep 24 19:43:20 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=1789072201; cv=pass; d=zohomail.com; s=zohoarc; b=jp+oevEenIxWJjfHe26HHqCmmzkTArBIeX7dHi2Ug+8svVaL6j+ezYZ20PJIYnrJGTrOXpc3Idzwc5JaThW8+GvRjPvdsqHtPDKD454TMMdPuiEKDpBCIZgYapugvafe1uIt9l+GVNuT9OVmSryGY+AlSvqYK1qdIsi9eB/omRo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072201; 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=+tOYekDsGmb2RFUH4obI70pViMHgOTrmNkYgsBIQIZY=; b=NIraLFGyIAwDnxw76Cak964g2wUf68oPAaH0veDc85MGm4ZG44qO67lzznwDfNgSaaVwLnzDtq4saGlWO+DUVjnJUl8uTdYhhuY0GRoqvb1x7Hp8fyW6GRaQ5RsbZh+klqglGo/uWf0JEHdgW9pFivQ6rIg+FKMfqNB1W64Ie7o= 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 17890722011841000.7083443885195; Thu, 10 Sep 2026 13:30:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415361.1644821 (Exim 4.92) (envelope-from ) id 1x4lOz-0000rN-D1; Thu, 10 Sep 2026 20:29:45 +0000 Received: by outflank-mailman (output) from mailman id 1415361.1644821; Thu, 10 Sep 2026 20:29:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOz-0000rC-A9; Thu, 10 Sep 2026 20:29:45 +0000 Received: by outflank-mailman (input) for mailman id 1415361; Thu, 10 Sep 2026 20:29:43 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOx-0000oo-C5 for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:43 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lOw-001ixY-P6 for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:42 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa31318-e002-0a2a0a5209dd-0a2a45048eee-38 for ; Thu, 10 Sep 2026 22:29:42 +0200 Received: from [52.101.43.50] (helo=SJ2PR03CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa31334-b57f-0a2a45040019-34652b32efb2-4 for ; Thu, 10 Sep 2026 22:29:42 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:38 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29:36 +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=aavSg4qCAsn/Ui1ldOXOnXYYDh71ZvX+iKZfqag7gmJZb2QacM5K9OC7+ztFUxAFLAbC1kmupmHRtND1X4zO86rVG6Z/w6GBjxwzFxRh6Xy65Fa4CRMfHjn6eYGB2hiLOYjB03PkLOUMKtJeCdBEfovJ3U5BPsHC8rD4QDab+uLrhJaXTz9gSxVuftkYypVd/CgqxQUGNsJJvPETn/OZaEL34hLbjVTAnbDByBf6cTuuRDYXbNUBbkRARYFytGz110VwsSNrd/Imte2+JtmmCNoP9z5u+KRZW3tkUneGGG8Q+gF3NuSB7Dao8ylL+2HzgxQyV1A2ricKoRjsziJAag== 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=+tOYekDsGmb2RFUH4obI70pViMHgOTrmNkYgsBIQIZY=; b=KJ+QfPpLEVE0KmIMJFBFngOOOYTicXoxGWyNcPxjf80imZBe9ahFacliJT5V3+Xz7y7psHWXKlIpHFm+JRwZYFKIxPyswdtPtznXZ+S2lKbzTNHN9b9msJwu1MdQT6wjofiO/RX3hLjkpU16jhnJ4asnpiMxlj1g/XCb4Bn5oL1cGCNOooZ+5WDb0Yd0gheler0gjsNIQeFcPsaGhwv+DF2TE2Y7/3ZEnuAzz5YsI8J+W79kxQvd3INRNzkOUd+VBrYCCkCncE2bxSrLer+pil6FmqKl/v6ICNlVeTgWs0RsB3bmYQ304+UTJysGDQb2FhNusKzdkN14V5kNIOb6Nw== 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=+tOYekDsGmb2RFUH4obI70pViMHgOTrmNkYgsBIQIZY=; b=0DiYdQfZKkECOxUjPrOQPLK3T7eC/ka2oZZDHCk0yOyDVAx8OZH6YJtzcvhEp/I6N5LJ3XMb57WsY+6RlpXvxMB16wn1r0tHteSZc2n4+JWGAizBWRYmSLx5B95nRYUwX96nIE4mFQopG52YEJTF2vtmmQOKUn5vzRzjLrZ3PEE= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v2 3/7] x86: extend update_intpte() to support atomic get-and-update Date: Thu, 10 Sep 2026 21:31:09 +0100 Message-ID: <20260910203113.462943-4-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0087.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::20) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f496614-f066-4b6f-d123-08df0f7a3b47 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: iTS59yWX85vqvXs4cCCZqrTcjReZw/JTccywAJpqIaoQ7dLuHSuI6nV4/QPcWofOCxk1ZX5Yh0tyuNwW6SvvSeqXiMonxZMc4TMnNMKthY250OCxHRGfrI454JCa4cR72a0SnbFBG3u5diRVjDbDrGI4oBivpc3MUaYDDRpnT0prqJO5IF+QCCwlWWN8OJwNee4kY6mmez1Hblitilj7FSeCpxTDMLyvx+lxe+zqyKhr4IneXL6a5FBzGjvRrhW3FeVx0apevmJ3fIKwZVWoRXUCKO2osnCG1eLh4OBgxREuJi056Ud3tStxmT2Xz17zwinJCZIFPUpDBTmSMj7sQRUDrEM73tEwRViHVtQcu33Jj8xdo64B5XxboOCyAZNB1DTfrWN+8FsV8AsJnbrvQmKFjfvXZbUm1GGfnkg+Zr6bM26UbTtBbM2nkkKYHmdfDT/y3EDTq2BtDCEvaunbuk5jR0GBOEsSu5B3WAW1ODHrHlTHI7ToLL7C54HMs3mSXfJuvJjz8o+vEg27S/L4SiexMptH2RgQXYRn6CZWxRQaLK8w8knvyk+rXABG7yEbvphRN4frX1zyBZG/SSKGNpqE85LDjVBUbiL9L5h+AMpxl0kL5BQbCiwSzAL6csalNivAv0hs3m7ASV+ZogDbFX0QgrlrbS1OEBfLwYuTw4E= 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)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L6k3r6XWuZm26AQYoKiQdAuA06oZhsBFpljYsNtwA4ntJk5i2jsSmYad7Lpn?= =?us-ascii?Q?HwcjkhISm3TsKBitWyrS6zRuSc4yudthlATP2pSXS/VxaQ2v9lRXKYxnCp/E?= =?us-ascii?Q?42Szw6IBD6rg1E/vvkUqAp7r7K/kRZ6qBRJZMelk1XJH6XmJdTMpRCMLCAWO?= =?us-ascii?Q?6dTBc0dUHLmezc/EJ8ws00EfFyXTB/kytS/ZcxdN1KOENtY+NwFPq/49P8DE?= =?us-ascii?Q?w9jC9Sfq9p7H0+7fq3ge4tGqZ/qNAww1zERpxRVviRUi+/VZK13h63ftMUyh?= =?us-ascii?Q?SVFtyd5jwmiwRZWWXKOManN1KKJbI+pmN0RmIsGsQv+575a+BDdS6MTn1m6i?= =?us-ascii?Q?SBN3hBukSl2u7wh+82wAPViF7jQ5D56SqqWMSUv4ddGff9tJhs9xuDZ9amgo?= =?us-ascii?Q?dBMGD0MP7QveyFyI3EyIixzSQ9itE0z+CP9Wqa4FQrjMRBh0zk7ojxw/1QJr?= =?us-ascii?Q?CYHE1Tr0YRT0PDEQ5m/WuTkNShGnA45edq6ftMJ44i3XyjdNlEfxq+DeB2Su?= =?us-ascii?Q?RY0c4Veo24Pi132KRVUX5s7je7h6D1b2gdpnJwBKl2DzyJ/WAZ3pEYwFNLsi?= =?us-ascii?Q?pmEKsKwqLiObXmhk5fm6H2bR7HNUdNXz5Fi8/k58UYRXOzQ/iWMczZchj5ie?= =?us-ascii?Q?8XOlItx7G2/qBMXsJV6m2UVFau/aVqV/ur7XzrlEheX0N9fi9/xUQyx+3hdO?= =?us-ascii?Q?P0oX1GPahU4ChyAA6RBn3NcdZJt+YYEUaPi644OLG0wGjW+OCrFh8oSg/alU?= =?us-ascii?Q?9L3l8TgAdXrwExKCoTc4qH1IxcusP7KDtciTqS6KHx+akdXUCH1cEFR6tg/y?= =?us-ascii?Q?wWjnoQuO1ZXHpvLA/kO9u+tk795eowQs2PgCEq19o04aVup9/ijtS7RTouOJ?= =?us-ascii?Q?GwFUgAXAI5ieiHzYBgOVHurE6mUe1zLnzZqC4DOnxQYyKfK5ygadrnudTsN0?= =?us-ascii?Q?FFAid/JGu0q0LVcwnwSwMC8LTEOV4EDxLrVpGdQ0yPLuXXsfJr2q04Q5HYoC?= =?us-ascii?Q?TaMaBvgTTt6JeRmecIm25gq/jM8Kz0s8oCjFuhEYNLqF5lxVGXrhdsd0fwSG?= =?us-ascii?Q?g7eEI4IdK+2CGLZdxTACvCbtkhMG2lmYtxJXNvOFsjtFrap1ZLEl5NuPY8gt?= =?us-ascii?Q?IUSfZBbZ4J+WbnVW3/vji4AhI+3gcar8KmVZ+CoFEzNIcRsvw1HHtJOE5gth?= =?us-ascii?Q?5F5zW3KCPTX9FPNS/SBYZlB0oBZzxwKL3D9cGbvV0zKMYDt4j8RXydTu1UcS?= =?us-ascii?Q?6v2y7CqAhDlWLApB9VbPuRsbeTIcETQNqHwIQyj45FHFOgmsYlDAJDlAih3a?= =?us-ascii?Q?NoCXVzTdwEvGZnp0jZrokY/178URGrcsCRARPdW0u1PnhwPHM1EcqgBoDH/E?= =?us-ascii?Q?ubwQY34wNrS3XEmxq5EU6sFUqVtgz8r4P2No0/kk1X17wgscafoevgHqaD/1?= =?us-ascii?Q?DOCbCeNObpnAM11wnL1rcN/o2rUTUs3bx1ZVnWky22HZE9GxQXUQZypWB1SD?= =?us-ascii?Q?+9BPb7ZvsTfnBixKvx9j8ADZ+KeP0A4AKfg0mkUKX3yoVhgCTdp8DsdTJEKH?= =?us-ascii?Q?lbQpIIfl6zBhrKtSfPhNYELc+yl/BP1pyr0olyKCuwu7PV+L1JMibsRy3rbS?= =?us-ascii?Q?vkZS9RR030IpQ3zG4ggVN58GjTLcGHnw1gVb3E50t8bFCFjfixJiWgKUqD8C?= =?us-ascii?Q?3JIgYLFXWUbjTVXjGKa6mMlauB0akxleiVnJOTvQDMOga5IJbhNqVLEv54DC?= =?us-ascii?Q?pAcVLHyLmQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f496614-f066-4b6f-d123-08df0f7a3b47 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:36.5783 (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: TdXZPrOZBICOfHzxkejODxYT2tuxYE+lEu1mFrxXwg+yKNqzE88yUmKcreomS238Dl1AG5xgDviCKrqRXHgadA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-ebf023/1789072182-C3AC0B50-FE2B843E/0/0 X-purgate-type: clean X-purgate-size: 2341 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072202652158500 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 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 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h index bfee0feb7b21..f2bb26aef5b3 100644 --- a/xen/arch/x86/pv/mm.h +++ b/xen/arch/x86/pv/mm.h @@ -64,15 +64,18 @@ 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. + * Returns the old PTE value. */ -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); else #endif @@ -95,15 +98,16 @@ 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 static always_inline l1_pgentry_t adjust_guest_l1e(l1_pgentry_t l1e, --=20 2.52.0 From nobody Thu Sep 24 19:43:20 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=1789072197; cv=pass; d=zohomail.com; s=zohoarc; b=LxtG/+r4LXB9x3BTsiV78FfA994lVacfXE6mYOEMZI34TrpXi8RYhcBDfkTDR1QTsqTJ8MFWzNK29nP+pfAynEE1ztQn1BMGQcJ6e7s1iNsXSnuTiNStIJ0lzdR41xw/WUpMSweIPsFZ9DSxZJzjMHK+T7k0mLtf2A7BUC7kNNk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072197; 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=ZRMOrcUBuKZGWJ4fSy5SoqfBgF/O6euKv4pLdi6oABw=; b=YrOfkApdhGcvHu7zn8QdZz8eNiVh4U6DLEmMNzVsFcA/z4vCcZ3i0Q8WO4uD5FX1KfTsYlUJeEUXl/XCF3TsDhUy4gsRq8C+eJsn1ZoJrCcLc//IXC4L3Ize9zql5ziVLbgGVwgtTiYzuwlGYPZOKDulsRYaV+Gf4z7KKFFf4PY= 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 1789072197825704.1260811668332; Thu, 10 Sep 2026 13:29:57 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415362.1644827 (Exim 4.92) (envelope-from ) id 1x4lOz-0000xw-Rp; Thu, 10 Sep 2026 20:29:45 +0000 Received: by outflank-mailman (output) from mailman id 1415362.1644827; Thu, 10 Sep 2026 20:29:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOz-0000wr-Ng; Thu, 10 Sep 2026 20:29:45 +0000 Received: by outflank-mailman (input) for mailman id 1415362; Thu, 10 Sep 2026 20:29:44 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lOy-0000pt-BC for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:44 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lOx-001ixY-NR for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:43 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa31318-e002-0a2a0a5209dd-0a2a45048eee-40 for ; Thu, 10 Sep 2026 22:29:43 +0200 Received: from [52.101.43.50] (helo=SJ2PR03CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa31334-b57f-0a2a45040019-34652b32efb2-5 for ; Thu, 10 Sep 2026 22:29:43 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:41 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29:41 +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=ceBxpU+qmzyTFxqWrmw0ZDlcv2YfwyKl9jAtshhLOf7UJfrDd1WF72FJ04tbpoO8Ld9sXC9YVwOv/c/swmyrjAMwlqmhbg9F+J/d6Wg3lz8khxvgl/Wd0+X1JWAB5vTfaRI9VCs9Mp902Q4xFS0u78zJv/B7sbS8s8EnRAmX6t7On3KEicF77uR1JheFDu9JTS8A4GubSM7Ekqc+JP0ercgZEjCK/2SSpRikvdrVDF6RNuPTuoPQTKnUSMOJj1DNJfj+IZhJ/o4AEBdY4af+ljuNI3ZDu1H0bPNyWLRrWL1uvnl1vbsDgLfdYfN0N0+pgZczxDZ/wq5zLt1jvYc58Q== 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=ZRMOrcUBuKZGWJ4fSy5SoqfBgF/O6euKv4pLdi6oABw=; b=Ql0IQeIclGCrEsV2RPNJbYTjXT1g43iFNLssc3QqGGzjilwqaTyJlm0JfY2A3D7lnYKtQz42ISa6l5jbGaeeHY+1U3DJ6clDW8AxqhFUfUppWUNvuZ/YrNabZGLM8qKefLvHawzOIPWCqLCVtDFo3cYeIwoLLMtfTCpj2f7fkU1QZKheSUmin783t2swSR7U5imftFEsFVyWUXdMTdi4l/RNhVUSKYpGE5gUsrS+mDKk+DRbRoATrppl/xPrXgxlRIaIOIKSENYNtj+RiTl5FcOxLQ3TMdNu0LWQn62Nf0DmQivBN7iEinZ2J20Uz64TWluYWU9kf0nzBHwLJVMkMQ== 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=ZRMOrcUBuKZGWJ4fSy5SoqfBgF/O6euKv4pLdi6oABw=; b=PBoEr2rEnbvZZdQakJqTTDXUnJCQuaUyq4RFdEzBCH7Q/6n+bzp0Jz22phlU1TylR3VC7FCwvSZFzP62LUnczYPikj1JOXgAfKN4Ke8vopeCNBmCW37gFUCfxVpAMYRDisMD1+tirk8jRAhGW8Zoh9DUGnTvA1ba27EjqGdgyqQ= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v2 4/7] x86: extend mod_l1_entry() to optionally return the old PTE value Date: Thu, 10 Sep 2026 21:31:10 +0100 Message-ID: <20260910203113.462943-5-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0079.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::12) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e6e19c0-dafe-4112-6f52-08df0f7a3e21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: iNRfAir0NI7rQSNTW6zVsZHzr/SbY0vSPnsrpR4Vna4M6ZTfqw9vZKrrBaCU4rNrwmPixdHH50UFmHSy3QRRptsH4JvoyGyESP5JRjRypT0kCuztFQ5nZYJHWovVhsKupUI6VaXzYDpGqkNjJ73+tRC+lev8UvLT/FA3VqQtxauIuSJPXmMYTQW9SImPKSNG8guiyG+9NDqkDO0BpGq+nRCAui8l9xgUOfpXfGbyIci0nuvQHYuBB/45ODlEelkXf0esqrGXdOG1ix+QoCXOFIwHxjiYPBXEGhxQyvmctIYZHnCgx7sm1gCSdV+2sB9aaNnYAjtmggflveZGlw5VbAnuF/dvqA/TTJBoVsLCVo9vbzyd1cizc66Dom2CPtMLeysYcTStAH5iYsqCtL1pPrM/IwFuDjUGIWlSTC2PmJfFGKvSXvIVTqsMIgBY3JajBlsiTRysqFiexITLqYO90bwZmei7AH1WIAOjd3NYzWSSi0WhDuIPMP49kKN1samDgWiZjd38bAgHyLRk6jCEXdcchB4WQZreNuKY7vPmzkz70UjYdWNHSk4EC5Q3NouM1JQgY1ASmaPmoYXVCAYpr47jhfhy+NKRXyJr6cL6xtmoskZjKguqDVSOd5E5rdOGpkW3RcaSt1G84OoYZ1edacH8PTbxHoWQh+yWQiZklOc= 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)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2O+S/Vun0/xXYZrOyVIrXO/FX0MUEhnM9kviWv+9LXfOGj042yxr5IBsO9Bo?= =?us-ascii?Q?DSNMFVo1WG8tlYQwkKP+pq7DIjMCn4P6nHUfjWujbD61BGfQklXFuvguXLws?= =?us-ascii?Q?r38ZDI+1GyK0fD/cQ8hQE+mh+4cuy0iBpY2yP8Ong1HABB/Jkisojj1eRknP?= =?us-ascii?Q?nuyaHt5pujcEpTdhlAl9HekWMoiU+imPN99qyz/WPOJ6OqeTP/O7nMr22BGd?= =?us-ascii?Q?3BfP6HthMRSC9OCr52yW0UV2whp/QLTzo0gMUh3Ven/0w9EZU2CY4UOfY0eC?= =?us-ascii?Q?dj1oTSzo2bXc3lmOdtrXDNrRiE35j09pJzi4U6WPygnPQhGL28+ilOYx+rfZ?= =?us-ascii?Q?Z2ZibjVCV4KgRffojPo5XuF7vPGYLdzQtm1wdbqMQLYGZu4p4Lm2+aZMYAw8?= =?us-ascii?Q?sdMCaOcF04PqpLWftYJ4AgLtHENIjjLybzorRGWX6+L/U1NTwSJoYoF30/4r?= =?us-ascii?Q?vQwQzr75FIrqWx43JchiJ0E18pVddJi6ULhVX0SoueON6338rE+0lRRZE5oY?= =?us-ascii?Q?bhG8YgwToB5pzK2anweMGRi6YeKxvmIydxwusj4jLmf2iah3g6lRAcfDi+iH?= =?us-ascii?Q?JWUczo/77OzuVQ94MmVPYiO/cNw3JoShPeG5pLXY1BUfITax/45PK1AgwLHn?= =?us-ascii?Q?/Z3zXwwxh32cBHp+2uHJXN8eXj227JYmNYn13RTDjrX7thXK7k5FJ1jGXbit?= =?us-ascii?Q?ZboBn209yqp2COcwDbF9FmLiOwv/bLr+rQeLHGEnuqNijSJKt+TR3cIU6B9U?= =?us-ascii?Q?+ShaBg4jwVvFInaU3clcaCp3Fc22rM/3jq81ww382Y4VV/l82FFgrRFDotLG?= =?us-ascii?Q?NPBrUxFW8lfSTM+Q1c/X0J/6Kk6kHIS1rHDysIrVDcX5teoAevYc/xZOZJ0z?= =?us-ascii?Q?VbclOXj1KLiMqj7p2b4OSdpPimCJdTh+sX03BLXMBwJj6DS+N/xoZQiNVyDG?= =?us-ascii?Q?R/Vzw8LcQMrigvHi2ItRgxnrGYCj6myK8MH41SVE+YHXYdgu4FLRT1erilIP?= =?us-ascii?Q?i3ygXd5ynG/sSRM/+wSq6Z/uVOYFHKg/T+0MvbxILLI8gnxMc3rZ6b8dN6Vj?= =?us-ascii?Q?yQj3kbukDQVFLRalxhlOhN+wAbZ1d/QUheyNF4T3JgNjW3obpZfXlL4QO4q1?= =?us-ascii?Q?NdzVMA83cQB+G5dD+u1t/4z5KQQ46IuQUat5GQfAJDkYtQDzaqnZPdS1lxwa?= =?us-ascii?Q?C8KCDsc4Oqk4LrPGU3LqY0dFwJuyL+ml8tkVe9K3QPUxbvMU6a+ItbJ5u9Mh?= =?us-ascii?Q?BajyOF52+oUorqR7Qmm7tR/FHVU3y5o87lM4j9JeMAlv32u5dBosKZQjxT9P?= =?us-ascii?Q?EqEmUN1QOWtyfYgDxIaDnwT+xyTpOpf8bmazQuXyOuG26lnu//Taj1vRYyQA?= =?us-ascii?Q?bnZmN7SKWMrW+8n9S/plHGuujAqKgcuAQWbHsw3NasJhTeHRJcgUzfCV7YLF?= =?us-ascii?Q?0DnpXKLceDIfsnd6ajNs1HWTCib9V/bBMxHqmMAixAZbCprOYEY3s1496LTp?= =?us-ascii?Q?GJR9EBVWcCgvIn73f+l9pS0SOH+BU5WXjtAL0A3llMqr2+7/BRedNxEW+VZ5?= =?us-ascii?Q?Fc4Rzt6blYZGuDm1nkzXOqeZE7es+LrnF9wjOeSUCaOAKRniEAMyTxF2LQ9n?= =?us-ascii?Q?YPCrrFSodvhU8/+dGbAn8kIPVudeN2jxUOkIRgxvkRlygt58iA2Ly56Pmkwi?= =?us-ascii?Q?0LjYw9gGsRRWY+KbB3IVFwTJua0uQ8dKrITjuaykHQ6BGm5wSFZjfwSUSk+C?= =?us-ascii?Q?WWGxpM8XaA=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e6e19c0-dafe-4112-6f52-08df0f7a3e21 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:41.3453 (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: jJMNS9WapxuYo9knz0E3pfYs67jtqwt25oRq35mvfzXJcCbF6qvDwd60RSxbgbb4wmNiHYunfj5DJCl762C1HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-ebf023/1789072183-C1CD7B50-DC8DEC67/0/0 X-purgate-type: clean X-purgate-size: 3287 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072198620158500 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 --- Changes in v2: - UPDATE_ENTRY now returns the old pte value instead of using an out pointer --- xen/arch/x86/mm.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index dcbc44f57c54..59ad5ce16486 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2150,7 +2150,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; @@ -2211,9 +2212,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); + ol1e.l1 =3D UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, + update_flags); if ( page ) put_page(page); + if ( ol1e_out ) + *ol1e_out =3D ol1e; return 0; } =20 @@ -2234,14 +2238,20 @@ 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); + ol1e.l1 =3D UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, + update_flags); } else if ( pv_l1tf_check_l1e(pt_dom, nl1e) ) return -ERESTART; else - UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags); + ol1e.l1 =3D UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, + update_flags); =20 put_page_from_l1e(ol1e, pt_dom); + + if ( !rc && ol1e_out ) + *ol1e_out =3D ol1e; + return rc; } =20 @@ -4109,7 +4119,7 @@ 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: @@ -4474,7 +4484,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 19:43:20 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=1789072208; cv=pass; d=zohomail.com; s=zohoarc; b=BI/uuV8ghuH67a6YirEbqKuLIyP3W0Kg9sk6woOYf8sUiv8oHwrxyv7J1GAueJltmDrhr+ClFh4tyWOy/NYLhK+uJq4b+wLWnxARH8r6SyJHp6PQRD+ZkWIOrBnQX9VZIc/jhCUPB2M7fu+njOtWlwWJGl1PGfSm+CPsi4BCFKU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072208; 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=XeS3HADGVZC3svsA8mdXVt6dTdJRoxy4Cwr2pNlCGck=; b=EfcQa580Izt9gDLM3Wg8RqCJaF5+Ast3BnbFk3Z9Hi58hZh5xsLzrEMspfrI3WYyS+8i+IE/3G0rNUdhzXPKB9WnqoP9PXc+U7WdHdcUBItF4k++uMQXlYd0/fSw1CgtJQ1aUsNYf3cCV5R1BtKgjeWtm3ukiA40rD44b1Q3LNo= 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 1789072208036273.0799265850144; Thu, 10 Sep 2026 13:30:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415367.1644839 (Exim 4.92) (envelope-from ) id 1x4lP6-0001WS-3a; Thu, 10 Sep 2026 20:29:52 +0000 Received: by outflank-mailman (output) from mailman id 1415367.1644839; Thu, 10 Sep 2026 20:29:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lP6-0001WL-0a; Thu, 10 Sep 2026 20:29:52 +0000 Received: by outflank-mailman (input) for mailman id 1415367; Thu, 10 Sep 2026 20:29:50 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lP4-0001Pg-9L for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:50 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lP3-009Pyo-MW for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:49 +0200 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa31323-8faa-0a2a0a5109dd-0a2a4503c878-20 for ; Thu, 10 Sep 2026 22:29:49 +0200 Received: from [52.101.201.11] (helo=PH7PR06CU001.outbound.protection.outlook.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa3133c-fae8-0a2a45030019-3465c90b4ef2-3 for ; Thu, 10 Sep 2026 22:29:49 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29: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%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29: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=ZGcAE1nabQSJCg4idVFZUBIqfvhOVsBKkt0mw2dbi2VGzFpLVrgjY8IN04qL2nMNpYBEBYM1zk6QCRu+ALO0/lNa/HGoBCyAkDOhLTg2KqW7qPum+CjyP6mQn/lNIn7tKpY0E9zcXi0Mjxx3xhEWyMZcGpkPZAD6LVsZZsluJYm8pA6oc2aVT+fDZfQeFXgutvQue78qObY54QDT7RQmVE94AywxxwU4urtUB5OKgU5hPvDattT8iA9fCRplnWHOUZi/wJPguVFV0t9jLN9NiPDBUalfBvGk4tvKFcoWHY0kY1ZZDz4vZCwd4cKFYBcX3OOrvpYOFdv2WH1tMriZqg== 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=XeS3HADGVZC3svsA8mdXVt6dTdJRoxy4Cwr2pNlCGck=; b=o0KJ6fyFiK48aM+1qxqdJq1lEQeWHgRpRa7iIyn27owuQDyM+DWZuVe6m09Y3x1EYdFtvSkjvIrX8+QnlSWulIEn3ETnJ3ohn8uPfEirorCFiemYGgSAGNjr7KpbnNtRtlaaBvPoC3wgZG7Tyb4dB1NTSD+AL1+yyS2V2yE5QMdqEMbFCI/5G9tm2Ti9Z2LtkHYlY6/oMbzEOrCErU69tmK/n+7gM3iNkchlf0ZAfvQLitVpTPpoV69JtEg9T1eKl90E9M5eg7NbitJWdT8Z6C1LfCkBMA7/h6q0yW+rAtA4NLAm3W4MTfTpJ9kPCi3zWmvWYLC7aWA47DrAAY7k9g== 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=XeS3HADGVZC3svsA8mdXVt6dTdJRoxy4Cwr2pNlCGck=; b=jb2z7wj0uVY1/kjVNoTMBdpCi9eUD/r/x9xGxLHYcBxlojivxh1Lj9IZAFCE7uaDcF9ub1Ls9AAe0Hf2G2UC3QhwHN4h2zm+QNzEJ9cZrrb8e9ySax1lolElCCOdoul2utxgzg0ZwnMEzeydICEn2RKK1GutxdVxt+1dK1s/9Cc= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v2 5/7] x86: extend do_mmu_update() to support returning the old PTE value Date: Thu, 10 Sep 2026 21:31:11 +0100 Message-ID: <20260910203113.462943-6-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0655.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:316::9) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: f128ecf8-1af3-4b02-0d5f-08df0f7a4127 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 9rtd7mQ58Mm7HtpktbYPOnO4l1wrB8GdjEZhnD0xRoTMvgYwYxQhofPLVSN3Kqw/mWU1OoVjAipVOXNsgtsEXTZZXAnloVNX9lzL3nrbcyHDiKxtVEMmzNn0PBpTtL7CN6PBLQCvBaMeyD0+cUqak78xD6N2T4BfGzapjqsHjxKq5uKjUIqvDCJPeIXDeH61GmGa3LIaWQwHquQhtvLX7QNlePtXm2Cx1ZDyPxj6U/3rOMzokYHkTo2XnfToPTADZaTg4ISStFfLuuLGM9Ct/A9d32eBhyzvGePtjOd0zkZ3CTCYV1ihuz2k2/vPuNf+Q80ee0ko51Ob6TsvA23N/RsbCTYu2dvqMRi2WTYEoYoBxdrjNzTXKJ0mohsLdpuieThrllx+MvlhsExdpf/96qYB/YDn42R6sPl0yZSJ5hPLa0W1i+X8eXlfX+ywNA7MOKIVd+aYZ5e1gv5/xPBUo0Owbr0ARswXrh1lGmHJ/XjJ4c/GuYhKgARns2OtJXAG9TWc6WdUxb/Z4rFyd032tMoCO2l4Zvn1xwEIElWn/jQlXz85Hg33pDLhWgqr27J8QWi9OwmpHJG3jv/6sNggUt2mZ4CM4egqQXwoeV0cUg067OgKIZdsKsKfn6I2miG3fs6YlZhozq31K2HXFQczwQvczBjaq5fos5pOe8s+nww= 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)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FH8xrQVK5qNUHJOxjjbZViifiWaH1ocEo1SMdAOqSfxEXCu91E8l3ELhHoSC?= =?us-ascii?Q?S/0D3k6oOqgQOselEfnVkBbcrzK7rtsIZdImRsO/XVn/RT1OioZeGAgyf4VF?= =?us-ascii?Q?wt1sA0ka9qZGKjwv4jiUxkchHb5eRdehOe43SafRXvaopcQB+ytgwgLGXYL+?= =?us-ascii?Q?vqxKDwShIfQYQaQDWq6Xh201dt/oprojR5TxZPGAJ7XE8gXRHilprUjqgesk?= =?us-ascii?Q?WpApRc0WjU8vHNbnT01Lek/ABqkEU484/38IQXolC25UEt4bItXbyFmSeqBO?= =?us-ascii?Q?l29FsPdmhfwd9Q66S9jw2Qowo/zE7cJ7ipQmxF+75gtXGCxXx55VolDkr1vI?= =?us-ascii?Q?ut52htYZH2Yc+rx/nW/YCfhUZMT5bnfR6F3D1a15ljORah2IlGPWNc6IiUNF?= =?us-ascii?Q?PkLO+dS+75EyCAN3MADHZc9gX0VGMhOxVRGI2TJVbe9snDfynXYmLbHF/7Tz?= =?us-ascii?Q?ugxM3bemZlsLJTnOkac9XdBzVSKYInuFAzrIgjj6FpxrhxNAc53V7udOl2xw?= =?us-ascii?Q?fav50RuhKSztYdt5HdibPxTrvEsyFb2QaMd3DfhsoBeeOUh2xdAuEjX0kCdg?= =?us-ascii?Q?Gn5GYhq9ZaVc66iPOgthXLhdmMZmfDwvkVcS6RdUP5HW/sIARDlYjlS5Xu8X?= =?us-ascii?Q?J6vriapIDpX0se9UWuJksA5RsFYxRqm/NWy+aQiKrF7VQ92G8DafgsaQAsBK?= =?us-ascii?Q?1E0kwl2w5WoA3IvYVExnmiVoMx94SWWJ6kRp4MsyuYE3osYw65XpKO49BiLZ?= =?us-ascii?Q?5hQpPecMSJqEi0UsCN76NiMDqWFXEelHzMRKN63lkSfL4deqYZB5F5MJX20a?= =?us-ascii?Q?oX78gPu/gbViajrgvYCxv5QxCO+3Rbqz9PALHLCGjDHTx6mhxEJ3kZ5kjNUZ?= =?us-ascii?Q?qm9Qf6KE4Vv5FQNjtpbd6zL1qbd9asqnoDJQK4jR1zv3bS1GBZDjdXyq3t6Z?= =?us-ascii?Q?nux/DD/Nwvt822zCmy6TRr4/ARF3qNYDSJjpj6zvszcuKE+cpq1m1ix1pvMK?= =?us-ascii?Q?gdFuebhpKtOnDQwJv7kBlFjg9tSP6eJo7z3uszRJhKPOg6nzOnKKbD8aprrW?= =?us-ascii?Q?SHd6OGjRdZNkNJoj24dw+DUgLEd8+GTAzDgTNJb68Hk1xER5di2GhTHGJfDJ?= =?us-ascii?Q?mgbrHpGyez7vVKkg4CyYy9QbIuMBXBykYi5lsjYzX2J2FiUwg3IV+1D6zsav?= =?us-ascii?Q?ncox5MyadWrIEvgdGHyfLHBAa4An8tOkSq6u+OIzSkHjCv9LxSfU+j/2MijZ?= =?us-ascii?Q?SBYIT6KuK1tJv4o+MbVK+9floEaxbRsUneqJBVJjtdivUp+iDkbkavfv5gyY?= =?us-ascii?Q?LsGX6TlQ6bHVrZjjQBbXVRvF7QdGxV3v920biWAnCQ5W1FuWG3uyQX1M+UCp?= =?us-ascii?Q?c/qv2VdLMJTwj5h9E0MIYqiz+mkOkpgbNxNshpGXXl2/sjVmt4mlPo3PHa0l?= =?us-ascii?Q?4M5XM8UdCqpyXTw6EgtOhvPUG9VaK9e2TH1nHu8HCEPuTZXd4efaEKijHR6o?= =?us-ascii?Q?wMAxeZoCEG47wOOAfG+HvP+bfmjl/KCeSPEVBxmoxTkEx65imGxt+LsNUzts?= =?us-ascii?Q?Qbg+EYQfVAwFHJw1pftt/1hfciVezv79gEf2vsgGjQhN5ORC0CVCXpqrefAj?= =?us-ascii?Q?DUsBXgghPFSP6V8dAkyr5iGedFllKUokX8imylo+7Rdr2em2a2gtEqZ71ARI?= =?us-ascii?Q?/LQXlBsDp1lYlM6Z9G3ldOXp4pja7xdfbjiGi6lgMKeArWbKBxLCnEW1qdKN?= =?us-ascii?Q?IT5qnadxaw=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: f128ecf8-1af3-4b02-0d5f-08df0f7a4127 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:46.4242 (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: igLld+7+vgiDunaj5Xte6bHEce/qNZUJKH3ZJEAkChH0VIRbaNzVIsR7hJwmXpGOdD7u2a+oFCAPFsyxQW4Jgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-33051d/1789072189-758824E9-068030D2/0/0 X-purgate-type: clean X-purgate-size: 6168 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072208790158500 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 new PTE value in req.val must be 0, at the moment this is intended for clearing only. - 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 MMU_PT_UPDATE_SWAP is not set then the old behavior is preserved do_mmu_update -> mod_l1_entry -> UPDATE_ENTRY -> paging_write_guest_entry The new MMU_PT_UPDATE_SWAP call chain looks like this do_mmu_update -> mod_l1_entry -> UPDATE_ENTRY -> paging_cmpxchg_guest_ent= ry Signed-off-by: Kevin Lampis --- 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 (Jan) I decided not to remove the `rc =3D -EINVAL` lines. Even though `rc` already has this value I think it's more readable like this. Let me know if I misunderstood the issue. --- xen/arch/x86/mm.c | 48 +++++++++++++++++++++++++++++++++++++++- xen/include/public/xen.h | 1 + 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 59ad5ce16486..b498a8460935 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4055,6 +4055,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 @@ -4118,6 +4119,30 @@ long do_mmu_update( 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; + + if ( unlikely(req.val !=3D 0) ) + { + rc =3D -EINVAL; + break; + } + + update_flags |=3D PTE_UPDATE_SWAP; + + 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; @@ -4125,6 +4150,11 @@ long do_mmu_update( case PGT_l2_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(cmd =3D=3D MMU_PT_UPDATE_SWAP) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l2_entry(va, l2e_from_intpte(req.val), mfn, update_flags, v); if ( !rc ) @@ -4134,6 +4164,11 @@ long do_mmu_update( case PGT_l3_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(cmd =3D=3D MMU_PT_UPDATE_SWAP) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l3_entry(va, l3e_from_intpte(req.val), mfn, update_flags, v); if ( !rc ) @@ -4143,6 +4178,11 @@ long do_mmu_update( case PGT_l4_page_table: if ( unlikely(pg_owner !=3D pt_owner) ) break; + if ( unlikely(cmd =3D=3D MMU_PT_UPDATE_SWAP) ) + { + rc =3D -EINVAL; + break; + } rc =3D mod_l4_entry(va, l4e_from_intpte(req.val), mfn, update_flags, v); if ( !rc ) @@ -4172,6 +4212,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; @@ -4181,7 +4226,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..559190688a1e 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 =20 /* * MMU EXTENDED OPERATIONS --=20 2.52.0 From nobody Thu Sep 24 19:43:20 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=1789072211; cv=pass; d=zohomail.com; s=zohoarc; b=LZpkJTR7NlMrrwuSFqXC0OBxxlb4rVwabZO9yWtbzBsORfJ9jQP/g6ZWeGzXp/gpFiRR2HFAe3otVpwS0YnzinZPAv5d/BT7yLur33HPoOt8j5gr8kb2OfTyy7sLw8PpjdHiyHmBL5OUHjSQq7FYHvkdapo5ANJUMMutWcoM5e0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072211; 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=SGru9pf2RpibDMFcJrBFNb+rJC6hAox/YLh0z7EKIL4=; b=NxiKOv330yS9MGKCO2mGwYrAb5QreMs8ydJAYH+yA4wGuJP16HNXl+EvbciqJLH7I+ry2/jODMd+MNT8NERS/gsozXJtjik/FSNWx7yx7qyDnB7KY4OlDL1J1HGc9XYVDm7kGc0pld4hSFGTDFFEQDMOPxHy2M1JwmSqMsRiUgc= 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 1789072211208583.7697289187934; Thu, 10 Sep 2026 13:30:11 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415370.1644849 (Exim 4.92) (envelope-from ) id 1x4lPA-0001rH-DI; Thu, 10 Sep 2026 20:29:56 +0000 Received: by outflank-mailman (output) from mailman id 1415370.1644849; Thu, 10 Sep 2026 20:29:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lPA-0001r5-8e; Thu, 10 Sep 2026 20:29:56 +0000 Received: by outflank-mailman (input) for mailman id 1415370; Thu, 10 Sep 2026 20:29:55 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lP8-0001ng-VA for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:29:55 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lP8-001ixY-Bo for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:54 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa31318-e002-0a2a0a5209dd-0a2a45048eee-46 for ; Thu, 10 Sep 2026 22:29:54 +0200 Received: from [52.101.201.42] (helo=PH7PR06CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa31340-b57f-0a2a45040019-3465c92a4222-3 for ; Thu, 10 Sep 2026 22:29:54 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:51 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29:51 +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=tSbCM71foQNn+INJrfRstGgCUbLAQJW5sutXH33wppMhs4K1bbBCOXmoJmZEluQpxrOO6BBa3eDtVuo+NGxssssUUldOH7PNg3gyuZpUyPQnPSXZM57Rut5h4i0UXBka5/w7TpF1U3o1CiLOgWttsjPla6S/Sot4qLY+84d+Kn5J/tqsQ0Oq4Dc/jWBshRQC3WyndPp7xXLB5JQBXWsMq8xZ+RoMWz5OSdmjczyTb2Ji/rUfk5ZiYLujZBXwLIUFj31L8mffKXtgNtRMCKNeINXpsoIhU+PQ9G78BpY078Mr0hCbLUNbC5gt1RPw9z8N0J4ethL8EDiQLS2FqXcRQQ== 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=SGru9pf2RpibDMFcJrBFNb+rJC6hAox/YLh0z7EKIL4=; b=ms5hbDcYba274pAx31g867NhUFcsGgdFOOTCH8Ts3IOS948/y385iKjZ2vc4NM+zUwk8RbPMXBRpzm/tF0Qd2TKgOUf1r41FMDL5MHosplmBtlauEnV2fJ/6+Hs9EUH6dNdNq63m25BdPRmoEL1TOtBrakfA2e5l7bm1DGxqEPXFLU6BsDWwhoOVQy83NmiCkHF/HtB/yJEyq2/lmtmD9AgJ87fDL5nFXjT7pWux+YtPCCRBFfe5y3ISC4YPSlFOLtqGvxpSrcE0pZWQU53f5THaBCqK7cg0siayzBE+ofDlzsm8SyUbFrlW5NxZf+8ba7UbYw3gC6aJeY24yvPRIQ== 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=SGru9pf2RpibDMFcJrBFNb+rJC6hAox/YLh0z7EKIL4=; b=KZofkVw1oSEt3eFdx77QRyYWSdKJvg/LS/Q+qOCuOgL9NOjXOSxBniGaSlQ1HfWSUYDD9lycIY58Ws6aoU8/oesKHnuhJFGdTuAmRTE423pTwna6O1Zr4lx/LmigzgK+HXXATbi+tqWRzMk+KUUztCvERICHKVxZReyqtUqiPoI= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH v2 6/7] x86: New feature flag XENFEAT_mmu_pt_update_swap. Date: Thu, 10 Sep 2026 21:31:12 +0100 Message-ID: <20260910203113.462943-7-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0669.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:316::19) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a015b00-fa12-45bc-3853-08df0f7a442f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: SbCapKSucEV6AMu/a7bXjOmBH8VPO9ymfoRfJqQ9wfqawSDHiX5qBDLD/qIfsxDUlqdpAlJ3VT8oiRzUXYTd9eEvmmSdnr//TWzUovDNvqg0Akipugwo136YNb0drwg2xlWfG1kCEZ3z2SI20rbnWoHc+Djfuwe21F7ih5Fr0rPiibHo1ZlY6mhnTFx7m2eHSJJluK6m3UetAiXx9rW03Gv0hGfJCbQ4EAyyxjymNf4T3UanFfd0EDsmj9cWE3AL4h5i0WA1gm/nwD/Q65V7uFC0N/AB4CmV8x0yDP7fqCTAv/NmFon8UWjeDcaQVy7j8bF2lDhYVr7a70pxdANSnwLQazAM2WEBvdHpJblr6jAp2Z0Y0NHGHzrjn7A4Gffcyfrnlzyk65OhNGQ5PzxyZJ3ytnKS3RKDiHCzrT8exe8G8/9gdKUbGkmIXfg8K7cV8z5HWC6ZjKl7AkwTA4FgfsZsqdIULFqowa3NtCsqpt3gJAPnxKjW5nqp/tE19khKqxxgSDypf7mN7dNGgtW7Vxz02JeyycBZYVKxfKRCm6lPpuV/R0sPk4r4b9IWA20ckI9jfrKAm3pPhJ/C41eLWysu/S2fVPFtuj7s6ZNueCRLw6UWbdqWdlkJ13sIc6I8XOU95q1xNICYM+l+2/xMZ1tyE4PElHeJy855wXhcZl0= 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)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JnqaALAbwO2+BR8Vprylf89EfaM2Q6SY05CKDBBui9fhJaWW13IdZ5iVWLkD?= =?us-ascii?Q?TjYTyrtf9wYeFBg3FZIcHEDjh2P0oq6lxflF6TN7pDSSRp7sRNh+j1Qpa6hr?= =?us-ascii?Q?6CdI2fISdvycugkz4dxPQIVj1YuyDBc45bsnflBOj159hVyNAFGb2Ltnj7Ds?= =?us-ascii?Q?RXxpBXrs8mopLsRdHOKbXUhYCrC3i9vte832eeej/z3aSI9iRe1gFqKMdgng?= =?us-ascii?Q?v7TzgxUdMtbkUwGOkn3XUmGZOkMQFi4fTRPVA5CrEJfKuLOUQyWB0e1Xo8wk?= =?us-ascii?Q?AqMt6U4wvVyePGWeIf++6DJwi+ChdvzTqIEfqnr3ei7zUcYv86gcAOD9p8rX?= =?us-ascii?Q?QdBp+IedMLNyUrp4uznF+eUQXnc/y6olMjHvASFG7+rcZJUaYqoC61ze2qNS?= =?us-ascii?Q?t0qy9AW5kT1vkm38G9bGhb7G/9OoXjy8Xmcc6s1Hoyh0+rBXyK1hTynTr+t0?= =?us-ascii?Q?mqTq+P4HVyJOJu/zor1drwo5Iyb8MDknR0/KAXJWjO4ZgPatwCf/i7+Gq+/b?= =?us-ascii?Q?RRZOufipNQVNhwHM0NGvoRPDI4I28qKBD6fEjxzmfmt9gjoEb4K4oH8LEWpE?= =?us-ascii?Q?qW3UZNBkjYjBfcpeyuIoTa7/YjlbmVEjSxdEpgP2gmN3MDzr/iPsEtxD+UvM?= =?us-ascii?Q?1Ndr8SWnoejVMQ6vLwe4bXtOEIpdK60Y7LoRyyyQIdRAayFRj9OFMH0zqIun?= =?us-ascii?Q?8uRnnTrw58KJWBpxRggnwioMvjAHcvw1WemiVaWrSh7IAgt3bQZoIoJTnRrF?= =?us-ascii?Q?UlUF4dObcsjGSzd6CleRnVjR0abWJWxx1gtv3MV9E7nKvRDlkJpV82tRKc8F?= =?us-ascii?Q?DPSsnTwPH0VyOJ+Giqz4bHGNjtHoqR8RlSCVSi5hfzT7pYXFfCiyQEBYGfkH?= =?us-ascii?Q?kyhNAUxxfizxfmWOSvWt+XCLdO2y78PKrXZlMOCsHEF1CGiEIJYnx1UXt/MJ?= =?us-ascii?Q?2f7/kgxweWh8w64YNJ8w5vrEnSFSfP1Xko0n94n6EqvasZiy77Z6bCOAAgcy?= =?us-ascii?Q?PWdIv8IWOcRA6DnnN0W6jNI9MYjnhvo74RF3hOq3KjmSawVFRlD3ir04WUSc?= =?us-ascii?Q?Y4fe5I+wePD3RcCvyIr2zbvxixlr4zOq5mVY0JDioV/JNOgB7zjesM7mRAo+?= =?us-ascii?Q?l3+7dPJFAakw4qLVg5Kji2l0CNFUKjb+KTvsqHi/6vEwExvWybxowWg7wkkm?= =?us-ascii?Q?76nuhZQNd1W9mVyTlAM24e3/od9vou4ljM3PrehM8kGybb0Q62LJj7bDRorD?= =?us-ascii?Q?qGqaFJMSWP4oz/hUvGZSoSxPUNfXEL4MfL0CqKek2vU56uZK5U2IPgCCZHv/?= =?us-ascii?Q?6BzotawqTJAUW+QUzZyUY3k6MLxOhjI2c3VPEFFoTKyPDqV2GU7gatiRuWvS?= =?us-ascii?Q?yml0PvC6Xy6vICu7Ipv0RbmFh8en4LMRyBsBsVqvJJZrHJ7wYl7evEvumXEg?= =?us-ascii?Q?7zZTKMyIXip3b2lqkQfyuBlrT+xEy2vqDbo0kxGoMfsbM3H/8SlkOzZmc8Fr?= =?us-ascii?Q?qQK5Es1/NedRg2kyeN0Uui7DGljBkfOKR5Sp4nIHqTQhBSA+bLHft520QJW5?= =?us-ascii?Q?CO80mp13Baq4JnMzAd35ksBA/tFEaYF3svQ/HOSbFKqzFRy6TocOJ/DN3Cjc?= =?us-ascii?Q?wqyTTi8BJeVJS2nDG/ceePe6Hiq7yRII6tAHdoHSfI4QiQ/tYFw4wzjcyohS?= =?us-ascii?Q?SCY9LSlQJ+KUh146xDhNPLqRHWr3IczBsfoZwz3EOkfLHDbKEOAjCKNJ5dh5?= =?us-ascii?Q?MFoZT00Rxg=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a015b00-fa12-45bc-3853-08df0f7a442f X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:51.4963 (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: PppaHaoPwR5q/qfDVl3XbQBQudQY+DGX+qVGn9hsBMm6kkseuiZFMeTd28haYZIaJgCDUvDeMBZG6nSF8QKcOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-ebf023/1789072194-C28C9B50-265DBC0C/0/0 X-purgate-type: clean X-purgate-size: 1380 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072212682158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Kevin Lampis --- Changes in v2: - New patch --- xen/common/kernel.c | 3 ++- xen/include/public/features.h | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/xen/common/kernel.c b/xen/common/kernel.c index f4bbd8818fa8..fa335803478e 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -690,7 +690,8 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) #endif #ifdef CONFIG_X86 if ( is_pv_domain(d) ) - fi.submap |=3D (1U << XENFEAT_mmu_pt_update_preserve_ad) | + fi.submap |=3D (1U << XENFEAT_mmu_pt_update_swap) | + (1U << XENFEAT_mmu_pt_update_preserve_ad) | (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 Thu Sep 24 19:43:20 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=1789072222; cv=pass; d=zohomail.com; s=zohoarc; b=bGk+n2qhry+3cjUE4U6Da33Eav/LsxxdbcJo5TyW8lKNtE9tOA7BoTzt5Mfn1AaEm0NDL4aX/1J0cJ1v3LRhsPZGM6O8uchkghFrJ2IhNQqopHbVRhPey/Xy9X3MSKh/v7saHbj8QsRK+GIJMQPKymUo6XaesJGtchWiSL1mxQg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789072222; 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=n6mEgrZ/yEkYJ75Fx6a0pe4gKbItEtZTaCIBuU3TM7Y=; b=TI3SKmEXdk9bABoItptX8nesmPQkudLO4oJMSKyL0bL49DcqmwEXl0Yio6uJ84lpZVM5h8JZEhlgi5B3msQDbzebPtEXCYS1NB8+ushfhJRy2ukjihrU/R5pb54OvP4xhxeHATYiUtW3Zb9TECJoI74qVtltWtswrmDfvbmJW64= 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 1789072222381517.3352567695638; Thu, 10 Sep 2026 13:30:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1415376.1644857 (Exim 4.92) (envelope-from ) id 1x4lPF-0002SF-Pk; Thu, 10 Sep 2026 20:30:01 +0000 Received: by outflank-mailman (output) from mailman id 1415376.1644857; Thu, 10 Sep 2026 20:30:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lPF-0002Ri-Mq; Thu, 10 Sep 2026 20:30:01 +0000 Received: by outflank-mailman (input) for mailman id 1415376; Thu, 10 Sep 2026 20:30:00 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1x4lPE-0002HX-Hw for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 20:30:00 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1x4lPD-006SZZ-V3 for xen-devel@lists.xenproject.org; Thu, 10 Sep 2026 22:29:59 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aa31345-2eae-0a2a0a5409dd-0a2a4505e0be-2 for ; Thu, 10 Sep 2026 22:29:59 +0200 Received: from [52.101.56.50] (helo=BN1PR04CU002.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aa31346-4cb1-0a2a45050019-34653832fc39-3 for ; Thu, 10 Sep 2026 22:29:59 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by LV5PR03MB8433.namprd03.prod.outlook.com (2603:10b6:408:361::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 20:29:57 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%6]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 20:29: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=bKC94Srzw1AoPGmqOdeXvkjWysVY6psH/MAZ5w6VE/uk8v71JBwdKupWB82daO67fFp5fzl9G6Rd0isclz78S+8wushKdTnlQs7s21jhL5oQH7pu1CalbAuE1CmEjySr55VOVNWZ5zTrouSgGRFysqHnCZtuk6y7lFwBKMGAmyMplqT2t93/UvpsZV4eUb6U0rMsjWdMTrLoO04M7Av0kLSPBmCcPekTMT8UuRnHi5iPf+x5WaljOtC4Ah/xJlZSPh90GooNfgT1xAKn/IveET4P436TlC1rGQ8Qdr2eEnzJEghG2kskiAR2X6kA4VUACwS8etB2goOfyedG2PfD6Q== 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=n6mEgrZ/yEkYJ75Fx6a0pe4gKbItEtZTaCIBuU3TM7Y=; b=TZhtRmykXtvn24ouGzR9Z3wc3UJJ4FuQxQhM0cqq2Jqrc301FJofPxccCLEXrOktzVTE4x7+fKyrhocMrvnPxZsIL4HibJ002L69cZr3WPCP5tA3RJq8wnYMkl1npdxvwierZJ01912BSsiSqB4xXsuqggvDF/dy/3UxqNXMcCrVKoEfNC122XbSbP1Ix++vhFrjyTMyndHDb17+l7SRZtfZ+ahlfihVZ+JqrXbet9I29nSbLciiFsegfWC5c6XTFQyWx4ZNQqqeF9PfOodtg95Icv83xfNuWN0uXprQf6ulnjM1v8OcgPhIjLDkL5TQUq6P8pzpTmx65M4s0nNlgQ== 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=n6mEgrZ/yEkYJ75Fx6a0pe4gKbItEtZTaCIBuU3TM7Y=; b=K5yEjza8GjlIBEA/SrE9uU96P+xJramz64u/15yO4ZD6bJNGzApqHIXQy50vp2kKLca3nm5zkhH3Gw4BuFggAW3xZ/f9crrWRMjBi9dB13+ryMyZyWByxWY/B2Xn6OvRb4VApNkB7EDlwKScr9mDiF7JvA7X7woUzN8ovCyTrLA= 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, teddy.astie@vates.tech, Kevin Lampis Subject: [PATCH Linux v2 7/7] xen: Add new Xen pv-op pte_get_and_clear. Date: Thu, 10 Sep 2026 21:31:13 +0100 Message-ID: <20260910203113.462943-8-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260910203113.462943-1-kevin.lampis@citrix.com> References: <20260910203113.462943-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0167.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:312::12) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|LV5PR03MB8433:EE_ X-MS-Office365-Filtering-Correlation-Id: 02f17a03-2677-4f79-5783-08df0f7a4719 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|6133799003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: JyYQJywcx6klSWBpazNCp1YVKzzFszsL+sdFYMu7hfG2VREVt3n/5CBSMNLiG2N1ebySm+oklqtBB+3nQuQOo3ZCz7r9m/xlaPd8YHfiXc5sbBbm7KOmPxPfb6N4w+GXYJW4I6EgDF+jLQSBaZKyKzQV3DRcGrAz+MevwBuEZRwk01sajdPX3zjjbNDNiUhZIrdcVYiJu6M9VDhvIXB6wBeeeEOThwQ5fZFNsPQXXY5LM/SQB9ZvqL4CsE5FumLfhwXwawhsqheJZbM3RHtofWGTfKG0ZYqd5bq5YQy6FxydvmI6PyS8opLX6/fOtcuvOnYQpp3DI/G/K3p7w23HYayq02sk34PDBZk1J/z62Qi5svuQKUqJdCQ+VSx1vBYex6ZTirGh9Z6cbYhNuaiOQhNrM99+Hi2/BEZkvCCFMwSN1e12V0eGcNeauO+b1ys7QiIeceZKht2bBjA4jr/ZADyJaCfLclSReo6kfFg4ZcyhzfTp1JsGyscqu1Ai4Odfe8WfZgKV/69d0/k/5XIRxT6oNfkyfZUNFAb3+F6XzcGiq9r8CyuIIFfamRGgF2G70F9PnYZBkJ5SN3MTIo1SDL0ZD3HWQX+k9Xbh2Yoz9Y41D8U2rA5rQEknlAoGGH3FsTgDx6j/Vu3olK4PNaPJZ+eyYEbV5Liw2S8JUeKxiPk= 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)(6133799003)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QN+w0xPzOQmcy9p3iq80TnBv4xbfJ6JMlhG9x7giPo3ID0oaA4cqpOX5C/lx?= =?us-ascii?Q?XdND49GTY98y8wZFMzY1LzxZ1Di60y8hN3XYggqMX7nAOTf10jGGxMGhk3xS?= =?us-ascii?Q?NsEW31hxEuyzEjUyNbSyEALvLyT8APKpeqmNoJpOXeSYeuaX4gvJS2xx6ZwW?= =?us-ascii?Q?xkRfgko6Pss4MhxFe5wQDS9f8CQZ6CvIxODIXo8zz3V4v281Vg6XPmeF4h+8?= =?us-ascii?Q?Fr5MPYaUi2OJFNk/xPrh9Fn+li/UnkH6Fx7IWLfyJgtaei6byf3LoQpZZEdu?= =?us-ascii?Q?r7uWeeYF+AkhvfqN8EQJH6jhneMXu07bbCOGa3szo6VMvu2lffv2/jNMNzYQ?= =?us-ascii?Q?HkA4zZmQSs+abAkcnD8sZRpZDQb1Vd+StCrY0/dsb3F8abC1fvjCVudEFTl5?= =?us-ascii?Q?WOs/fv9st+qWQgy6VfVy4QSwAp0k9ofd2IZ4VlXenO3Nn1vbyYzn0Z+viG78?= =?us-ascii?Q?h3PfF6IBDy+yZAzh3rdEMKgy/oq6xYTqnMca+yfC3oIFxYBK44Hn76VVYvJ4?= =?us-ascii?Q?Arh1KVoAUv518YcDNu9fxtv90kixjEzmSKM6AUpMPwopyQyGg7oCnSdmizEO?= =?us-ascii?Q?TxNO7WxdNtLT06M/pv//7Gh8AJMUFdzvLqsiBgYQUvkQuOGVF1yb6wkv5NYS?= =?us-ascii?Q?1nPF96QJcdukNAY0k9/ASoPnZg8Qbx7BT9+WcHcAPl3jghaQLe01fCfH4+z5?= =?us-ascii?Q?C4Fq1PNYqK/kgfGafKZH4vy5/IuDRUyXsuxeRshsbWY40QlUgWa2TlHzZlhM?= =?us-ascii?Q?TxYvE9UHLHUVmdnPX1DeJ5wBFcpyETcHmFDQiOWfVHrcR/u5LZqV00ar4SL/?= =?us-ascii?Q?p8RMItu3+NbRm5YWBZDLSsvLm+3fCyiXS0lG5CimVGtcnGKOLxdUksbT4R55?= =?us-ascii?Q?Z7zDFhPs56jHFmkd9OGvfaT3nhk1uQCpcBjxV1Jm1ZEmZdyM/XR0hTllpJlO?= =?us-ascii?Q?p8lZiGRT3vymwF9gIb4Mc6Vkcz+If8fKYa/2Wr7CbIq4q2dZdUMtNs1VCUSt?= =?us-ascii?Q?n1X8hzl1yzkFQJ9BforAqRUA2aMw8SgkNTKONzjO5IovNGVNPhQyM2PkiwuU?= =?us-ascii?Q?TPYUdVhgVhy2GGVsohXsYxkWjDu2akRQXzS0SrYAHTuMOJKk9J8LpnoA+yrs?= =?us-ascii?Q?3Ac3avEPBYPfz/z6HGXcj6dLnl9qjTBfRh/IMybF0UF/m2CmnV5fX44talwN?= =?us-ascii?Q?g0EqHjLHRS7cuaH+Wvo+ngE1WjhbfNKnMV+I+4cBwbI2t7V04k9WQnJKolnZ?= =?us-ascii?Q?F+qT6rMbY3dgIueUAgJ74FVYwqhsBat93TdaGR0ww+XbLv3wRlX1j9auQG5g?= =?us-ascii?Q?DU+1MnFFfObWkRUZjbRTw3R7B++cco2HJtVJAvE+PWfhuZYi22Jm5oIJ37ll?= =?us-ascii?Q?7e0/cXX+BQrja6JirUJikin+eZHBiwuc1ZdYib2e4qMVgQbKzWdOF2iZqRrD?= =?us-ascii?Q?GGIxsI2GgFjRuk6LDefnLckTfroTYkW6ANQIbHXYwFqGfCo7UJCK3F3wGtN4?= =?us-ascii?Q?emWbbym2vLJnJU2jFbG9AL1XqoCeHwhPWb9bWgHnHgto+VbXZJwnDpT6Z56o?= =?us-ascii?Q?fwC5RKuEQF/s4vng0A2mSt0+sJtAsRMlnCOMWZegSnDsEUwmrW+5a2/pTv5u?= =?us-ascii?Q?/DiHgY9pwVSm/1bOu4REPUBr/rZu1NQIjrrMntLfbsOBXlZtqwMFyC1LsDgx?= =?us-ascii?Q?vUlJ3rjEyvlAF6hLHS8v9xN3DM654ckHBpfAchozbxr0BZv64sOGWWpM5KC+?= =?us-ascii?Q?6J9wMyHRJg=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02f17a03-2677-4f79-5783-08df0f7a4719 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 20:29:56.4005 (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: SaeDvIkq3oKEf2HJxq5+1hS3uGcvuSnSJfJQPgEwCkJfpbfI3XxGzoAVKv5RnAS1rGy4bSJrOZV2jHlrM1QdiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR03MB8433 X-purgate-ID: tlsNG-c201ff/1789072199-F56AD2A1-959B29AF/0/0 X-purgate-type: clean X-purgate-size: 5273 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1789072222787158500 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 --- 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 | 15 +++++++++++++++ include/xen/interface/features.h | 2 ++ include/xen/interface/xen.h | 1 + 7 files changed, 27 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..b0d7d6520984 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..7ce2feab6434 100644 --- a/arch/x86/xen/mmu_pv.c +++ b/arch/x86/xen/mmu_pv.c @@ -359,6 +359,15 @@ 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; + u.ptr =3D virt_to_machine(ptep).maddr | MMU_PT_UPDATE_SWAP; + u.val =3D pte_val_ma(native_make_pte(0)); + HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF); + 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 +2174,12 @@ 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..92f972e53323 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 =20 /* * MMU EXTENDED OPERATIONS --=20 2.52.0