From nobody Mon Apr 13 03:41:27 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=1770918512; cv=pass; d=zohomail.com; s=zohoarc; b=YtN+tKa6e8pAQZLY+ZbwKR+FoELRrapJZyutlsq3ay3d6By60zafltnE87i4bgAzLDiGBLXcSVbw3BUgZy+3mboVFV+LV1WRZCmrIq3GnSDphOZHw3hYx0MbgWiFAnSe7Zjy8C6p26xPWZca3U+u4sZC/dTUA5HIftRZRB8YEec= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770918512; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nindylR6gt5IUWAulANTZohw8zNKiYcYVxeL92GrJPU=; b=UMYi1F2sVv5+s1h6eWRuTWOqZPr3ugvVdwJN8L+ux1DnfyeqxhncS3oJE17GlKyuCxhx05GFPf1rB8MLvEftMPTCCUBL9xQfhyWfUA93POm+2tgt+OG2T8cfw/EZ5uxhAiOqyxb8MeMY/M4f9xv7SUUU4gjVeXiEyp5M3T3S6qE= 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 1770918512740955.1147175084415; Thu, 12 Feb 2026 09:48:32 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1229694.1535542 (Exim 4.92) (envelope-from ) id 1vqanQ-0006Td-Cb; Thu, 12 Feb 2026 17:48:08 +0000 Received: by outflank-mailman (output) from mailman id 1229694.1535542; Thu, 12 Feb 2026 17:48:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqanQ-0006TW-9x; Thu, 12 Feb 2026 17:48:08 +0000 Received: by outflank-mailman (input) for mailman id 1229694; Thu, 12 Feb 2026 17:48:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqanP-0006TQ-Es for xen-devel@lists.xenproject.org; Thu, 12 Feb 2026 17:48:07 +0000 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazlp170110009.outbound.protection.outlook.com [2a01:111:f403:c111::9]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id f91c8df3-083a-11f1-9ccf-f158ae23cfc8; Thu, 12 Feb 2026 18:48:01 +0100 (CET) Received: from SA3PR03MB7419.namprd03.prod.outlook.com (2603:10b6:806:39c::6) by SA5PR03MB8452.namprd03.prod.outlook.com (2603:10b6:806:474::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Thu, 12 Feb 2026 17:47:58 +0000 Received: from SA3PR03MB7419.namprd03.prod.outlook.com ([fe80::8254:2aeb:5a33:a6dc]) by SA3PR03MB7419.namprd03.prod.outlook.com ([fe80::8254:2aeb:5a33:a6dc%2]) with mapi id 15.20.9587.013; Thu, 12 Feb 2026 17:47:58 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: f91c8df3-083a-11f1-9ccf-f158ae23cfc8 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sEU4W4vk7kJITe7tQtcmi7VPg6/lnRii1SbbD448S1UWn+wC8IqnUH6KVygqLsjf3aDCpvXhf7+FEvxi3m4PEsCybYWHFP3b1zp2owfxg+6E433i4XCed4JOJde1EdhpzA5XWMVYBcLyXy11tox5q9vktAHU/rGxqvCNlQ8jZ/giNYlyDPa6FMLYDLZ88XD7aU7NJe7LEF4qz+ZxRGgBzxIUX5AmzVv7V1CLLOwTp4lJ3SeEuhvM/4Y6VsdZqBVbKMaz7xR3T+iEpO3Q3O+5I90Cb9vLAigL027XAqZIa/nJrOQo8ZvuxlMePjvIVS7Zp9flzMm8FKRnO/7kiGrd2A== 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=nindylR6gt5IUWAulANTZohw8zNKiYcYVxeL92GrJPU=; b=Nk+8ZA+BrIb6wTG6bmzOHfNf0K7mPqXW1WViV/MW4EX86EDK1RPXh2eMb2XGNQnI0FGARS9Fr2A4aMWY+4ZQIT1UQORWvDg718WQ0sACda1VTpePr6p+1Pk1y5akZTEAU3owKElDkVg2/jMdMyz5vbNzuL/VVTdZevUNKMbdpRXNsiE5DZDx1b0ISnsS25Js6BZHRO2nvlQrsixaCohyqHQNgtLmMc8n7C+2HJrqEhFNF4miFBBDRuJMRyh2NDbOY6bpH7MHz8/WIHDAZeIF75PiBdCBcguKTIVG8k7VnmiLP13mU58gMX0KOUJAvRZaXBY0D4q6y22446ZZRAvNHw== 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=nindylR6gt5IUWAulANTZohw8zNKiYcYVxeL92GrJPU=; b=D/l3Ou3m5mDAShlL+3iRc7uEA6+cmH7IQrswErMJFWXRpR16BH4IQ1Ifi/DzEBPMX0/gMrpJ2WfRAQLxkeyDyLCwS6ewrEPKQBogylWUjSbbSKwM8X3CpMR2kyXeBBDmAYiBTZHv+umgaGJvHAZQvMZ+lSfonXvyArRJWqzXJxo= From: Edwin Torok To: Xen-devel CC: Ross Lagerwall Subject: RFC: unmap_page_range optimisation (avoiding emulation faults during VM migration) Thread-Topic: RFC: unmap_page_range optimisation (avoiding emulation faults during VM migration) Thread-Index: AQHcnEe5W7o/9c8i6Ei0IwBnD48R1Q== Date: Thu, 12 Feb 2026 17:47:58 +0000 Message-ID: <16133EFF-88FF-467F-B78F-E96EB148C3A5@citrix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3864.300.41.1.7) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA3PR03MB7419:EE_|SA5PR03MB8452:EE_ x-ms-office365-filtering-correlation-id: ed5ec43a-5fb7-4b2d-801c-08de6a5edc08 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?NmFoSGdFczRwOEluZ09KOHJsS01mSkFlaGRUYTRUdmFCRWtmdWkwNmZBbitJ?= =?utf-8?B?RzdFVGJOb0RsTWxNN2FpcEN3TVlxVVlraGd0RXpTOG8yZTYwdnlSZkZwcllB?= =?utf-8?B?UEhtWXNXOEw0cXhwMHY2QTh2OHNYMWxMZThCRllLb3lxaC80ZERFWCtJdFNB?= =?utf-8?B?Z094amVXSTg3aTV3cDZWVG56QWNuc1NvbXVjcFZMR081cW5CVldIRi9WTHZE?= =?utf-8?B?SllUekUreGYrSXFKdURJYU1uNUNSenVuSkFwUHVtTmF2WHVLRGFVcEpJUkFw?= =?utf-8?B?TEpMQ2cyQVAzcHF4eFpsTC9EUVU0OHZxclRISEZyTlNEV1hyMlN5cmQ4RUNt?= =?utf-8?B?RXVMbzFDS0ErOFYxeTdUcnJHNFgvOHNteEIraDVYQlNncVhQZ21XREIzQjRE?= =?utf-8?B?ZHdWRnFxRzVNbGxHUll0ZU5hckVoUTltY3JFcHFQMkxJdzRVSFFvMFRhcGJY?= =?utf-8?B?eDd3WTlHNDQ4NGxQSDRWaHNmUEtkS0hPUGJYa29iaFNEU2plUllQWVlqd3ZJ?= =?utf-8?B?WnNCS09yNDZ3dVJVMjJUbUdmZHhkNnF3cHp2aUZNcm9sajcrWTN0bDEyOE0y?= =?utf-8?B?TEc1ZDhOWjdYWXJkcEdEY3Q5dFJEWFdoOHl5OW8rMUdZTVNkdlliRmpOeTg2?= =?utf-8?B?N2ZndkxHcDdaMWVvSFBxSGVkaHRhWm5OaEVnZmxTMDJ0ZXQ4eWVhcHJSTGx1?= =?utf-8?B?UTljVVNJWHhQY3ZHbGVaZlN0TGZGYSsvSTlXYkRldW5UdzZuOTBIc0kyRUxY?= =?utf-8?B?NUwxMlA5K2g0NWFFVWlvNThGejRoUHV1ZWpHUFJVTDQ1czNYaXA4Q1FHdXRk?= =?utf-8?B?N0gyUUk1MG8xSWdUSkRiTHBKR3NzNGZOYUNSNkorZWtMRkM1eEoybTRic3Ny?= =?utf-8?B?cXdPMllSVENzNTF6NHFUaG9xWDczYzBNSjRqei9KSDJYbnVMMGFnYmdOT0U3?= =?utf-8?B?ZTdDZXhUUHh0b2k5S3hoUFZlZmZrclRvT2FkQ0VmOUNMVFVHVmFFS0NNbTlS?= =?utf-8?B?OW5YZjFvV0U0bUxqbkJSbEgvVi83bGR0aEhhM1h5YjBXbFNadkVCT2xIVmFI?= =?utf-8?B?WHdvM0h1eDl1bXlldHAvWlcrclRFRnRndzltVzRGUlBLd3duT0F2NEhYaDN1?= =?utf-8?B?NkRTMHA3bUtkTTVFYnhFSUF2RE13Y2FvSW5USVJtUE5mS1hkOXp4UlphMGhM?= =?utf-8?B?Sm9PSVFLek9TV3pBWndKenZNN3FGbGhVK2cxTVF5b1J1UEt5OG1aaGdDMENh?= =?utf-8?B?bGVHRTlVcjZVakJ6UUloWGdtQ0tYRS81bGdLeG9Qb1kxMVZTMUlaRnBROWd5?= =?utf-8?B?VWNrNitRMnNlTThRMEJkMGYzZFpQWGtvOGx3T1FRWlNJVkQ2enU5cDdpZGF4?= =?utf-8?B?aVlaa3dXaE5XRWxjZUhLaTBWeUJleVdOSjYyNzBqQzFBaU5mS2dvQkcvYTRS?= =?utf-8?B?NnBxcWVZODRGcFJLL1FqYVkxQVhnbkp5bU95VDdCT2VQd2x0Q2FJdnZIS3FP?= =?utf-8?B?Yk5hVzQ3ZGJOeXZWR1p2djJ2QTFkTjVrR1JZc0dJQkJValVycnArVXVOMEtn?= =?utf-8?B?NjhUZXNRWHVJVE1ZR2VkZHFrcG9Qbi84cjdQVGNhd042NW1vRU5tVWszSDlD?= =?utf-8?B?YVU4akFtay9Xd2RWcVFKMGxidUpYeFF4eXdpenNtb0tCdThTMGNWdjc5UTQr?= =?utf-8?B?WDNDdlBjYkdaSTE2TU5vZmtRbVRveFZ5YTdMUG1kc2ZLNXZhYTFtenNYOXFY?= =?utf-8?B?N3FJejUybmM4WmYwZWQ0UkhoSUdIdXJsVjNXZks4ck5MdmdBVW5LOXFqU2lP?= =?utf-8?B?WXN3OFdLdGJNWkljN21VM1JVWjVXU1dWUmhqWEJhK01YNTlmbmxWZStlb2h2?= =?utf-8?B?RGJDUnFXMjYrMzd3bktnaXV3VE1KaEJBYTdEbGM3elYyOWVkd2VCMEUxSmIw?= =?utf-8?B?NUU0bkQrR3JLdVdKbWZNS05sR0FZTkQ5MzM5MmJZWXlna0gza3hmWmNVUjhD?= =?utf-8?B?VDhvb0RoVjZZSGgyL1I4UGJGT21GTTBFVFZPc3VOMkMzdmRVcWxqQmZYOEhk?= =?utf-8?B?QURWMW5IeXcraFZ0WWFyc2JMa2Y0NmRVWDZTNkVFQUN2bnk5YlBGZUlwYnk2?= =?utf-8?Q?DI0E=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA3PR03MB7419.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NmN5eGk2QnVaT0dvaHRkNmdKMEMxZ2ZVTkhtaEtrQktYcnBLUXNyUzdpdXlN?= =?utf-8?B?cEFwVHBlcEMveVJUSVF2cWlLcWhEbnBzdHFTbGVJaUJ5enRybmpVR2liOXV2?= =?utf-8?B?TW9XMTE1UDh5M2xnQ3VFSEk3NnhNYXlhcDg3ckdpZm1nTXlTOVdueEF0UVVO?= =?utf-8?B?V2lkM3FIQ011SHNQYVVaKzU3M3Z4UmFZWWpLMnRUZDRVYUd4TTBWTzg5WTRY?= =?utf-8?B?K2JnYktBNTJzRUpIR3lQMjRWOFY0cXNwdWdCVEFRcU1qUkpLdDZRZ3B3aE1r?= =?utf-8?B?OHlnam11eVJlRTVDTFFuclR5TnorL2FRZjZnamcvLzhiQ0ZPSkVLNHlKTytj?= =?utf-8?B?QlZTT1k5bHNrK3dmSDJ0MXNHZFRjNVA4UkE1cElwMWJJRWxZQ1R3RG1yREdC?= =?utf-8?B?emoxVnQ0L1BvVVNmcVFLbDRTY2oxQTZORmNPaWV1MkpiZnJ1R3NRU2NIeHdQ?= =?utf-8?B?U0Z4ZDdEeXg5b2d3T295bklDbXJOa3lwWXpCcjM0WGZyVmtkMlZtdWt5TXNG?= =?utf-8?B?WUlkaVdqdE5RQjJNZ0pGUllDaHFaNDVoeWMwazZ6S2c3eUU4bnJqMEp5NGpw?= =?utf-8?B?RS90cUYwM2MrRU15eXlQTGRHVUsyM3JQaTRHN1ZIYVpGblE1d3UvVFVUeVp2?= =?utf-8?B?WlFVclFnbkt1QXVraWx5dGw4WHp0d2dqQWhKMDlNT05hd3AvVGJDZ3hJYS9n?= =?utf-8?B?dVRXcVZMSXNOeWhuN3gxTERBZE5ZSEVrVnBYTEVKTEk0MFdjNkFXeStuQWdN?= =?utf-8?B?aGNZdmtJY3R1TUFVQXAzWFViOHpBc2pERU1hTURJdlNiTk9LMEsrQ21vRXg3?= =?utf-8?B?MC9XbnhJQk9GRm9oMmdxZ0FxSDFxVjlVK051dWY5d1VzcHNBUVBlU1R4RUZS?= =?utf-8?B?K0s0TlhOUnFBTjdGWVJxNW83d1A2VldLYjFTRVJ0RGNRU1NmdEhMclkraFpi?= =?utf-8?B?ZTB3eEhlSk1ySVhEMTUwekozU29sd1pQdVMrZVo4a2hqRUNIcmU5OWMvSE1h?= =?utf-8?B?QjRXdjFRVlYzTmJVeDVva09wdFlaU2duMGdPUlJhcFN2MXExOUlwaGVpTmt1?= =?utf-8?B?cDRneDQrcnh1OUMxVW9HU3plNkRteXVHS1F6RDJtY3JCYU9QWHh5RERHMXRh?= =?utf-8?B?d0tackhoUDh3dmI5Wk5DVTRHbGFrNmFLeHVjYmJzSElCYUdYZW9WV1ZzdnRO?= =?utf-8?B?cEZuYzFaUnpLcWhXNTROOCt3aW9OUmpPdWFiS0Y0Rk1QQmlNNzJZd2dtRkpr?= =?utf-8?B?RU9lK0VFV2FBaDhNZUVuVUpqQXgwWFFNUll4bFRNVnowUklabUgrQ1NEa3pX?= =?utf-8?B?YkEvZUs2U1BqKzhyekVZVHd5SW8ybHBDdmpXandTbmo3a3ZHVzFkOE5pTlFl?= =?utf-8?B?SkpoWldNbmNQbEhMN0U3U2pXUExtaFNndnI4WFVhaVBFZFpEaHM4aFBPV08v?= =?utf-8?B?d0l0U1NyaStGcFZ0Y2RDWXdhSlMwUFFxTlBCbWdVL2VNM1hnNmdkSkl1Wm9Q?= =?utf-8?B?ekNLWktPOXNsK3ArTkowaUpVeVk4cFlBWWVKT3RKWXAwLzBvbTh5SGR4bkVP?= =?utf-8?B?Wm1QbHlIc0ptL1d6aTlQZjhySDBNWkVVbnQyT2lOaGMwbzc1TnIySVdmRCtP?= =?utf-8?B?ZktBNng2RDlxQjhkQTRSTUlJS3FnOVNLNXBiRDNBd0JsOUdKNmhyQS9YeW9h?= =?utf-8?B?SDdZK0wvY0Vld2JNWTBHOXVxWElGOW1RM0d5MytVVGozY0t0dktJc0p2UWpS?= =?utf-8?B?RTIwNlNETVAzd1ROL0VUTWpuNUQ5NmdRcHVOWlFTb3YxeDJ1TGVlNllMMXJB?= =?utf-8?B?SDN3UEZ3N2w5azhoVXZvaGgwRy9DY2prVGh5Z3YyTDlNcmtGTjVFTmlIZnMw?= =?utf-8?B?d2FFa2FxSVI1VVdIUWk2bGJ4cTYwWFk1RWVDa3FoVTY0ci9VLzlNVEVJYkxp?= =?utf-8?B?Uno1cEpVc3hlTW5VODhXb2c0TUpnV1luT1JNNW9jaldOeUNkek1ia28wc0Ew?= =?utf-8?B?MHFwRDRSV1p1am5LUEVmV2pKdFdpU043MUdXS3ZONnlyUFFEUlZVVy8vZW5a?= =?utf-8?B?WmplSUhKR2JXSkt3bjRkS3I4cTg4b1dqOUt2OG05eENmTGxPRDJOWHNnVlFR?= =?utf-8?B?YURvRWxjL1prREdQV0dNWTFrTVNCdXpiUms4YlU3enEzRlhtd2RYS2ZabFBI?= =?utf-8?B?TGUyVnkrZXFneTRXRXFUSVZzeHZzaXZ5UjU1cC9za01xTGpZak1XaGUxR0x4?= =?utf-8?B?SXlRUEZlc1VwenZreVNQcUhOVEZueTI3S2x0dyt3aGQ2NFkwY1NiQkFRNlhW?= =?utf-8?B?UXlMMDREb0M5YVN3YkVzZDdKdktNQTIraC9ZWEpmcVgrMTFZd3B4TEFtWm9u?= =?utf-8?Q?BTT+fU6wR53YzuBE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA3PR03MB7419.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed5ec43a-5fb7-4b2d-801c-08de6a5edc08 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Feb 2026 17:47:58.3747 (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: pRU2YpGJlhtCTG8RukGHF5eTENJ8ZpjgNLzDc+rzP0JoxB1Iscmb9hb5E4j9Hp1S/9acCpZU5v241V0xQkGcDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PR03MB8452 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1770918515078158500 Hi, When profiling a VM migration I noticed that on the sender side a significa= nt (~45%) time is spent in PV Dom0 Linux taking an emulation fault in unmap= _page_range [1]: The call comes from zap_pte_range (pgtable_64.h, inlined): ptent =3D ptep_get_and_clear_full(mm, addr, pte, tlb->fullmm); This has 2 implementations: native and a generic one where pte_clear is imp= lemented using set_pte_at with a Xen pvop. As a proof of concept I=E2=80=99ve deleted the native implementation [2], w= hich makes it fall back to the generic implementation [3]. This is not necessarily safe on SMP (it reads and clears as 2 separate step= s), but shows that a paravirt op is faster than emulation. To fix this we may need to partially revert https://git.kernel.org/pub/scm= /linux/kernel/git/torvalds/linux.git/commit/?id=3D4cdd9c8931767e1c56a51a107= 8d33a8c340f4405 To test this more easily I=E2=80=99ve written a small test program that map= s/unmaps pages from a domain in Dom0 [4]. Before: 3.26932 +- 0.00503 seconds time elapsed ( +- 0.15% ) After: 0.75642 +- 0.00202 seconds time elapsed ( +- 0.27% ) It is more than 4x faster to use the paravirt ops than trapping and emulati= ng. From a functional point of view the above commit is correct, Xen doesn=E2= =80=99t need a dedicated PV operation: trap and emulation works. But from a performance point of view I=E2=80=99d say that Xen does need it.= This is a hot-path during migration, and it=E2=80=99d be worthwhile to opt= imise it. Just deleting the native implementation is probably not the solution, since= we also want a value returned, and the existing PV operation is void. It probably needs a new PV operation (re)introduced with the desired semant= ics? Best regards, --Edwin [1]: https://cdn.jsdelivr.net/gh/edwintorok/xen@pmustack-coverletter/docs/t= mp/migrate-send.svg?x=3D950.6&y=3D2197 [2]: diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 690c0307afed..ab6318bb5676 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1097,13 +1097,9 @@ extern int ptep_test_and_clear_young(struct vm_area_= struct *vma, extern int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); -#define __HAVE_ARCH_PTEP_GET_AND_CLEAR -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); - return pte; -} +static inline pte_t ptep_get_and_clear(struct mm_struct *mm, + unsigned long address, + pte_t *ptep); #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, [3]:=20 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long address, pte_t *ptep) { pte_t pte =3D *ptep; pte_clear(mm, address, ptep); return pte; } #endif static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_= t *ptep) { set_pte_at(mm, addr, ptep, __pte(0)); } [4]: $ cat >main.c < #include #include #include #include #include int main(int argc, char *argv[]) { if (argc !=3D 3) { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } uint32_t domid =3D atoi(argv[1]); uint32_t batch_size =3D atoi(argv[2]); if (!domid || !batch_size) { fprintf(stderr, "Invalid arguments, expected 2 integers"); return 2; } xenforeignmemory_handle *handle =3D xenforeignmemory_open(NULL, 0); if (!handle) return 3; xc_interface *xc =3D xc_interface_open(NULL, NULL, 0); if (!xc) return 4; xen_pfn_t nr_pfns; if (xc_domain_nr_gpfns(xc, domid, &nr_pfns) < 0) return 5; unsigned mappings_size =3D nr_pfns / batch_size + 1; void **mappings =3D calloc(mappings_size, sizeof(void *)); if (!mappings) { perror("calloc"); return 6; } for (xen_pfn_t i =3D 0; i < nr_pfns; i +=3D batch_size) { xen_pfn_t arr[batch_size]; int err[batch_size]; for (unsigned j =3D 0; j < batch_size; j++) arr[j] =3D i + j; unsigned long idx =3D i / batch_size; assert(idx < mappings_size); mappings[idx] =3D xenforeignmemory_map( handle, domid, PROT_READ, sizeof(arr) / sizeof(arr[0]), arr, err); if (!mappings[idx]) return 7; } for (xen_pfn_t i =3D 0; i < nr_pfns; i +=3D batch_size) { unsigned long idx =3D i / batch_size; assert(idx < mappings_size); if (xenforeignmemory_unmap(handle, mappings[idx], batch_size)) return 8; } free(mappings); xc_interface_close(xc); xenforeignmemory_close(handle); return EXIT_SUCCESS; } EOF $ cat >meson.build <