From nobody Tue Dec 2 01:04:45 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D77952D839D for ; Fri, 21 Nov 2025 20:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756691; cv=fail; b=BhoTNU2SKaTUJ2LM9YmTTJm2wNEDN8jg748RnZjkBC7vZCjfceUJcFN+eEKUyyphv8I+RLCOf1EG/ug62mNFrD/+S7AOPNK2jccgzj9BUF6RSWGUNksvVayk3a+9RQDz87OocBTklJ2wjf5N5TU46UhIvEv/Pf74roD7N3OAyp0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756691; c=relaxed/simple; bh=cvT5J1c6fQdCf9VsnJWJCLMrQf2Zm8HRgal5a6eS3nU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZAqJYhtml9qRULgXdmXrlPxm6T+ZTeeWD+4IY//je8FpVCWN6kzpKScGmbWm9E7Kv8pESPAvcW5isi81Dl6N3FI3Gb7iV7N0uhAFS6nGsOdY3IjXwno/6CFgrjy8oXt55HB7vID/LU7BTRW6T9gMySfQ/Kn+OaZk0U2fXYPSJTQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Ap/ToXOk; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=f2NwhyHA; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Ap/ToXOk"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="f2NwhyHA" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALK9H51008264; Fri, 21 Nov 2025 20:23:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=h4BEQK9BqWSN4ciOJqr7uXm6JYPgw/UjENTkI8lK2wA=; b= Ap/ToXOkKLXr6J55EtE8lsbLkVNLZjVTn4HEjMcyyOhlBZJBbiZnfwJvnD6IAtSH APtepmZk7wep8EgIIWue5CCQvR5zb0/8nqp6SDWH8cCTKpVtfwz+zkUskBQ14jfa rycsJD9ClTDfbFA+nfCgNRgKSB66dxCUgcg+9y9fCyUazmHew0w8lgRtyMbfE36R 8+C9VfHdJ9ex513YoFFXBeCM15c8aMwjq2+uFZxo1pN5c9AWxCBWYkYnJhf9GoBM XuxyYjUn61Z9jX7wcazYgKxhQK1x2deMPQUlGOfdTRqFfOzg1OgnDJbz9eEdYLT4 aA8kHq0TrfDC6nP1ZpXt+A== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aj5dtu7u6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:23:59 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJTslU035952; Fri, 21 Nov 2025 20:23:58 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011041.outbound.protection.outlook.com [52.101.62.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4aefyrcg1x-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:23:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cixnYqihSUNGZ9TeSBq4gOK2gYSHIwwEcPX05nIC+19NPfZY7qwnYJUkgBB1L0gIWPNZwQ5y47GtfdtrBVQwUn1BixR/GbeRlA94cOuuTL1cB1tIrl+0RpJW7jEHlk5N4hdduQv8S+co835N+pYdsF4nHfb9UkLAxr/B05dqFacylq+iBTuvx+YP4E3U54MiU/xcd+/NDo+l44If82JyBmmkm/dRTA+vRXhTQXUnS9vAN9sjE8KThpVZMaz4AJZaXopvHSrhGrfFV+FiutOiqDqXtw2qEq1j3F0TJEES4/e7zwLn4ICVvgDDed8mVgXtpRDvnJTWu+TrcK1u4x7oDA== 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=h4BEQK9BqWSN4ciOJqr7uXm6JYPgw/UjENTkI8lK2wA=; b=OkTRMBfnRkzDx0h1jsWnkIFkubVHZQQAEtVbr4r8m+plFcPl5r8vveWRTljA/udUrpAISmpojpo8o/XaDCabpshss24meuBfbYVIceRo3Lfm0jTnSnqOgdZV1gwZARHszQssxN/5qg1ww12MIVa9WFOaFXyeSqTB84/lq7AyIiO5xi3gaZL+hr+DgILJNFrHpw0K4EnSJnN7prBRgNnRUDDKc6p0DkxrLr7BxYIw/0j/XgoclWRUYVxVSFn+GUaSCJp7yUB7xw6dhH9UAVjxSghG5P1G9ybTZleH+KHiAJF9WBRURIuJIUUA028yQo+iHg9p2mUSWW6qDNADHlBiyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h4BEQK9BqWSN4ciOJqr7uXm6JYPgw/UjENTkI8lK2wA=; b=f2NwhyHAqr+gYvRiZjMQM/Nwz5+QQvAk+q9E8FZMFGYRH7V8jZj+jPXVDS5f3yzovmbgFzN/ngM7eEhaS+OrfBwyIrrFo7QAkc1HATBD72oQwUWLbEVmV2gj1A937bctXsvu29az4Eaimfx3nWNilCWcIKV+Y/jW8Eep/8PrMtA= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:23:55 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:23:55 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 1/7] treewide: provide a generic clear_user_page() variant Date: Fri, 21 Nov 2025 12:23:46 -0800 Message-Id: <20251121202352.494700-2-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW3PR06CA0028.namprd06.prod.outlook.com (2603:10b6:303:2a::33) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 91c8354b-d93a-47e1-2341-08de293be4ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qG9LnPKwp/VFo0KEyXhCJGCQY8NCGUvpx8IUm3bqjgPyrdEpy6Q10gxtaQaQ?= =?us-ascii?Q?2DSt33VCoOy6qxIEu7hv3hlRuaikih2A1PoVpAYCSikArcrWsASi2E2NNUZo?= =?us-ascii?Q?mzAlqkRzgArfGHwZ4ZVoFFeideZ1POI2cEjOOFXDA//ZPvENcLK1pGloegoo?= =?us-ascii?Q?TIV09TkUrPZkgWnzTEAMvNsy+g+SUTNzS5X5J04rtZ8AypS8iNqSVa7NeBVh?= =?us-ascii?Q?RSaGbhXGYJ7GaiLqifjWRzjwNePgL+rmQ6gzJnvOw+rqofo5wrVFgkRd4Ogb?= =?us-ascii?Q?mriLxSAYkaBw3RxAicVb0/Oqm8MnQkYFevmklUAmaeI2TXDXtzrR6SvhvIVa?= =?us-ascii?Q?q1RP03vCygOrQvDXiU7pCx6PSX3sVPbKTIVbxg3VbbZbsHrH713qMryIFwFf?= =?us-ascii?Q?SUV0dX7SxjjREUfUtC6cWRLB22Hwu7OlMxqrFiPOSQAcCl8ayU83dQ9389PW?= =?us-ascii?Q?Otf0l6oW2D9o7bChoHFVwbH1fsXridqIa0vNW1l1S2L74EpI+SRTELPG+gn3?= =?us-ascii?Q?NrkwpOLvVZVRz0j8XhytUy60x7OxZK6jEibEBekclLcOaruEb/zxTbOTxv3T?= =?us-ascii?Q?16sd+ypfcWY5M4+a8yys7ZTGIVf2XCrMTCdwL/6Hew+4geV9BsXDTsB+EJUw?= =?us-ascii?Q?7a/xsFJty/hNmDU4sakRcq+NWoP2+2efC6IdxC9MB8Yy9b3bbxddEkyAKquK?= =?us-ascii?Q?2wzpeVN4Rg9Ev3ZtJlGwMIR5o8347JqOAsdzD5PHJ4zGBLxZVApDH/GeiLpb?= =?us-ascii?Q?5Fs/9rIDMcK/QF1yYwfXu6H7bC5J8plC5Mucc7ubssl0MG4ttKlOpMxr8dkU?= =?us-ascii?Q?Byoe7t7FwNs/J63+jvDkApHYTxZiG0u7Dnr2TG2C49SjIv2qEpqi+yRoEgY4?= =?us-ascii?Q?ow5rFSfhUa2wFFDDQ3IUnSH4t1nR6uijfxrEg1cLudSWhz4zV4ZOYqdrtFP1?= =?us-ascii?Q?eI7edkig7JPHnio0mhcWQOZvIFXIzAIPvzg8h9K6P91n+v3UV+1WDem6/rwo?= =?us-ascii?Q?HXHgaF7wZz3oMaaQ9OWXxKEgXLn23cAHWEsONmXqEn2hQMTxMa2V20NeyurI?= =?us-ascii?Q?PYNc73G27jCQahznK+fJmrcekNS3uRe+0b2N6cpf/QHgtnwo+4frqiGqderU?= =?us-ascii?Q?9yFut3mb6SlvAROg9oOptMWT21+2Q3ALNPZ06i3rQc6j7UIFEOviZq3fK5K1?= =?us-ascii?Q?nzgFvJrvnHYjAwcprku0D/btzHtrWnJ3Cmo2gaS2s8gYtxn+RskAXWmLA2yJ?= =?us-ascii?Q?+PWu/DIuknzu/v4TF6xE6wi9B1XIH09nKHeMUMrJKef1sHyaGZdQ7XUXGebv?= =?us-ascii?Q?qbj1OYmTWEgB1GdkA6kAfYP3tikJANsoXJAo085L6BJxKBFoCdbF4C4RrDzY?= =?us-ascii?Q?CBFNrrdMG4foTK/j3GG+0AKrT5PTo5X/zpk5Pf4LLrkzo1cp9qkH0SEM/BcE?= =?us-ascii?Q?cn2wgpUAThYERpCGNcgPhtW0sxg7/3WL?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9IFIXFDoM+9UqjhsIvveJnGT9J17OImScnnw7GU2+udKsujE50dCnpZqVpa5?= =?us-ascii?Q?hEOrcyRpLWcECvAZ2b9kx2MMYFRFxWHo965Wlx2UfRN8xiGotoMvMtT6pEto?= =?us-ascii?Q?gYecnAeoixFW5/Wff919cgEKOMxkU+lvNVsFdaSNhzOSW33tvSjOQDhSWUTI?= =?us-ascii?Q?EYE+T9Q4YdTTbobqQSCD6eDyWXzApjciTIIgXGBptSRTZ+mSKpKEnlcxIKmf?= =?us-ascii?Q?tgtGhSEW7dvQUaMAmjvQGujZV8jZuJwX8J90WbcV80ooVUUVl39ImLkPSMKW?= =?us-ascii?Q?42XipzWh1+bYKIwpll+4nqOko5fZvRq+iBRryyK9H3Fu2Ngfu0VQ+4yBLafC?= =?us-ascii?Q?GKXUlDuW8aCRrXYen3OJnQY2MlkLaUxeLa+XgGfTGqi8adjZpMRIGU5IUtcK?= =?us-ascii?Q?pFDH/9x3G0b/qFjhfu//T1NPKARS9+6uPk6Qo1u7Vats6pQRGXkC7t8LVH/Z?= =?us-ascii?Q?sa/49HK5fKo0e96aMzfZ+BSNqu855Y8oh5Rtg/ewQzvK3o9+gooLKu0tRDzE?= =?us-ascii?Q?y2YHws0kfYU67+DqIWGRpnB9SQQBcZMdicr71Fn9SEB9PLIzSGgncKEk2knC?= =?us-ascii?Q?BI9DAA0j3y1IP1gyLOGAG0KnkEx2zvOz54nkFn+QoLN6NfcZsiKRl7/QFwri?= =?us-ascii?Q?9I6dMUuy8MY1uuitttCb8vfUs/AtCVnfaf/tU9GoneO6kQlkbvIPJzXBpCK2?= =?us-ascii?Q?m/CUbvKzudD4f8WwhWZ2yYvnyf42BjqrLOzzMJrPT/Xbw4CV3EmjLEsU0Nhy?= =?us-ascii?Q?e72aHFAtfXTFJKW/SRr+BZG4OVHtEU8Cn9jnOxovLOVTFHBkZk0t4QroQfiM?= =?us-ascii?Q?3cBoLz248g3fpo7XMFjgg9hIBLLLggVj3uihpfmkA2A3Q6AaMwhxvcWvlGQP?= =?us-ascii?Q?szewTQFsDB4X5Sw/+FDl1DWtbBV35OLfCBl47a9isnerZhaXDNtD+eYXzIgP?= =?us-ascii?Q?CdUKxhAc/spYIiQyRssrEfiud02T/UF7j8nINkhMjp1E9a8DMVuXa9/LyNLg?= =?us-ascii?Q?RUZ5FzCySpCQfvXliTmM7KDAYgfC6gmo+T44Ok0IHQQqKhcCsYhoNANRXrrN?= =?us-ascii?Q?Rpt8xSMIIQAY8zk19uhax8rpHmP+CYN8lZFG/49ePCSiM21Si/UyGmVuwH+x?= =?us-ascii?Q?S3Pmh3WdeB37a9OOdqo3LFCQJx9UOJzJxWvBuvhDiwaT1UpvILUADfzoVVha?= =?us-ascii?Q?BxZufaneNSmp8zXscuqOdU3saUhJ0X+h4yBHtlq60C9JNwbUEccfe8l53Rb5?= =?us-ascii?Q?kid/m54YDn1lLpCDenytIbJneuyYbio/TuxqR7R7sG5NkP4plE+T/DAFhvEe?= =?us-ascii?Q?CV3PJ+hkJ3alxCI6LO6TdBjte25SEQ4B1LShLiXItT1BS0f49ktzBvNu1eTe?= =?us-ascii?Q?Vk0mXhKr1vw1qDvoeUy+QIsSHZqSBsFrrg9D9ROvPAvjsgbH9WH1JvCDXWn5?= =?us-ascii?Q?fotaYLFdCFEoVUXz8oauiwzVQrh5e2Cfcii5dPGRSDvKarPr9GFprXVvwB1b?= =?us-ascii?Q?zwOSnz5qZILWARFiohOavxuJWniHYkQl3mpS5Ca2U72MLkgDU0TXwsBFXsPI?= =?us-ascii?Q?JtTdewxbnBKWyZDRFsbedE6a8NfizdHueUh51vcq4msI7rbDykc3iMWG7lnR?= =?us-ascii?Q?0Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JZ0Bfi7WR2zC2JEOqZK7Ag4rQFEQNOwj+DRM/jQUG/up+JlgdQiit6kHJyWhyBeuEyPfEeJro13F2ZeHnV6jITFKAFqylJa0/1mFXL07XJfUTJkEDuY817hXqRrwy7OsnXy8em5aSCOV57Z227+Pp89KV7zF7WDBIufwYMKoJW4GuPfqA8M+wPbUqqk7Y9m/W9LTKDk7GQIXIP5T+0Im9u44RTVwFYf+UseytfnAPOyErs20IY1FELoTW9o7bTztqK2qDk6KeWEqcBM6V9fT01VWiInJ3uWznRs86IZQ1CfnquWHvFM7+44XWkxJUNuVsg0ZNwwXoxbZZs0bHsu1N/115cfNdnAR2tkZ5EI/I2XWdRl372aKGG3pfFcnjWuo/w/4Aq5o0u82o8OTWndxLWS197vaDMPwd/21toNkX02J1efXbA88x8WB9rXt0EWoDwBUgzljV0qttrPClfHicYD08nZK7XJXsCcTFP0PmdoVuuakbEyrbOVyQD/QFqMl3emcThPqxvpktih0f75q4QgiKKQJm5DIscIltbgyTjHPor8wuv3EDMAbBFJvrjzfP+o57habTOCLMmG5z3QsVjjB3RwDTfDNuRenf3HOjDI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91c8354b-d93a-47e1-2341-08de293be4ae X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:23:55.1251 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kYzzwhbigtr1ZOEKnsu9f4G2C6Dy+wYm+CamstcxdjbmLrYU6TGFqxVxZQDfA6xb4O5zJiqTAyXZNWQl+OxQFGSw+LJ4fMXgoFieDJgVLkY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIwMDA5OSBTYWx0ZWRfX3bguy0nVE6zG JHGgLiDJxCh6iAUsTLrTzgTq6GF9Pr5Aslmo1Qq1KPhX+efcv0Ip1qQvYfeIQMHfiYfmHDw8pHW Z/Tk3jZR6Ufzt+jCm8o38mIggy8+BTb/oWlRFPhG0PxiFZG1TvMK82EvX5MbH6xZW1p3BCHdEgP BWz9ZKnmsSfEgRJe8wxswpteApaKe8qJwthd2zDRoGKBnLlaGvKzPLjkLo4O2xfvbDVfZV9NGda Bx7bZA0jUcxoz1QMtEPaH37PILu0+DPOzO2tHsvm54Ap1invHbFflsw4SFnp6TX1Lhmo7vDmcJ1 +RO+Dy5y/h4IlKKswerUTD1qbe5l8mR630vhGOyMCFiSsh4WzldpD9KOciWUCKBTajezB/I0e7W irrw5R2TfDcHbx4Jft8smx2qo3JJtvWyCit0B6NZcIiOGAlrcLE= X-Authority-Analysis: v=2.4 cv=Dckaa/tW c=1 sm=1 tr=0 ts=6920ca5f b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=Sf88-goebzjZ85YUTTQA:9 cc=ntf awl=host:12098 X-Proofpoint-GUID: WqhE1oTqpPgVY0pny2VH0-6iXJ2rW7DN X-Proofpoint-ORIG-GUID: WqhE1oTqpPgVY0pny2VH0-6iXJ2rW7DN Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's drop all variants that effectively map to clear_page() and provide it in a generic variant instead. We'll use the macro clear_user_page to indicate whether an architecture provides it's own variant. We have to be a bit careful if an architecture provides a custom clear_user_highpage(), because then it's very likely that some special flushing magic is happening behind the scenes. Maybe at some point these should be CONFIG_ options. Note that for parisc, clear_page() and clear_user_page() map to clear_page_asm(), so we can just get rid of the custom clear_user_page() implementation. There is a clear_user_page_asm() function on parisc, that seems to be unused. Not sure what's up with that. Signed-off-by: David Hildenbrand Signed-off-by: Ankur Arora --- Notes: =20 - For architectures which have a specialized version of clear_user_page(= ), define clear_user_page instead of __HAVE_ARCH_CLEAR_USER_PAGE. - m68k/include/asm/page_mm.h, sparc/include/asm/page_32.h already define clear_user_page() as a macro so we just use that instead. arch/alpha/include/asm/page.h | 1 - arch/arc/include/asm/page.h | 2 ++ arch/arm/include/asm/page-nommu.h | 1 - arch/arm64/include/asm/page.h | 1 - arch/csky/abiv1/inc/abi/page.h | 1 + arch/csky/abiv2/inc/abi/page.h | 7 ------- arch/hexagon/include/asm/page.h | 1 - arch/loongarch/include/asm/page.h | 1 - arch/m68k/include/asm/page_no.h | 1 - arch/microblaze/include/asm/page.h | 1 - arch/mips/include/asm/page.h | 1 + arch/nios2/include/asm/page.h | 1 + arch/openrisc/include/asm/page.h | 1 - arch/parisc/include/asm/page.h | 1 - arch/powerpc/include/asm/page.h | 1 + arch/riscv/include/asm/page.h | 1 - arch/s390/include/asm/page.h | 1 - arch/sparc/include/asm/page_64.h | 1 + arch/um/include/asm/page.h | 1 - arch/x86/include/asm/page.h | 6 ------ arch/xtensa/include/asm/page.h | 1 - include/linux/mm.h | 22 ++++++++++++++++++++++ 22 files changed, 29 insertions(+), 26 deletions(-) diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h index 5ec4c77e432e..d71ef845deca 100644 --- a/arch/alpha/include/asm/page.h +++ b/arch/alpha/include/asm/page.h @@ -11,7 +11,6 @@ #define STRICT_MM_TYPECHECKS =20 extern void clear_page(void *page); -#define clear_user_page(page, vaddr, pg) clear_page(page) =20 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \ vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr) diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h index 9720fe6b2c24..38214e126c6d 100644 --- a/arch/arc/include/asm/page.h +++ b/arch/arc/include/asm/page.h @@ -32,6 +32,8 @@ struct page; =20 void copy_user_highpage(struct page *to, struct page *from, unsigned long u_vaddr, struct vm_area_struct *vma); + +#define clear_user_page clear_user_page void clear_user_page(void *to, unsigned long u_vaddr, struct page *page); =20 typedef struct { diff --git a/arch/arm/include/asm/page-nommu.h b/arch/arm/include/asm/page-= nommu.h index 7c2c72323d17..e74415c959be 100644 --- a/arch/arm/include/asm/page-nommu.h +++ b/arch/arm/include/asm/page-nommu.h @@ -11,7 +11,6 @@ #define clear_page(page) memset((page), 0, PAGE_SIZE) #define copy_page(to,from) memcpy((to), (from), PAGE_SIZE) =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 /* diff --git a/arch/arm64/include/asm/page.h b/arch/arm64/include/asm/page.h index 258cca4b4873..0e8de245e283 100644 --- a/arch/arm64/include/asm/page.h +++ b/arch/arm64/include/asm/page.h @@ -36,7 +36,6 @@ struct folio *vma_alloc_zeroed_movable_folio(struct vm_ar= ea_struct *vma, bool tag_clear_highpages(struct page *to, int numpages); #define __HAVE_ARCH_TAG_CLEAR_HIGHPAGES =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 typedef struct page *pgtable_t; diff --git a/arch/csky/abiv1/inc/abi/page.h b/arch/csky/abiv1/inc/abi/page.h index 2d2159933b76..58307254e7e5 100644 --- a/arch/csky/abiv1/inc/abi/page.h +++ b/arch/csky/abiv1/inc/abi/page.h @@ -10,6 +10,7 @@ static inline unsigned long pages_do_alias(unsigned long = addr1, return (addr1 ^ addr2) & (SHMLBA-1); } =20 +#define clear_user_page clear_user_page static inline void clear_user_page(void *addr, unsigned long vaddr, struct page *page) { diff --git a/arch/csky/abiv2/inc/abi/page.h b/arch/csky/abiv2/inc/abi/page.h index cf005f13cd15..a5a255013308 100644 --- a/arch/csky/abiv2/inc/abi/page.h +++ b/arch/csky/abiv2/inc/abi/page.h @@ -1,11 +1,4 @@ /* SPDX-License-Identifier: GPL-2.0 */ - -static inline void clear_user_page(void *addr, unsigned long vaddr, - struct page *page) -{ - clear_page(addr); -} - static inline void copy_user_page(void *to, void *from, unsigned long vadd= r, struct page *page) { diff --git a/arch/hexagon/include/asm/page.h b/arch/hexagon/include/asm/pag= e.h index 137ba7c5de48..f0aed3ed812b 100644 --- a/arch/hexagon/include/asm/page.h +++ b/arch/hexagon/include/asm/page.h @@ -113,7 +113,6 @@ static inline void clear_page(void *page) /* * Under assumption that kernel always "sees" user map... */ -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 static inline unsigned long virt_to_pfn(const void *kaddr) diff --git a/arch/loongarch/include/asm/page.h b/arch/loongarch/include/asm= /page.h index a3aaf34fba16..b83415fe4ffb 100644 --- a/arch/loongarch/include/asm/page.h +++ b/arch/loongarch/include/asm/page.h @@ -30,7 +30,6 @@ extern void clear_page(void *page); extern void copy_page(void *to, void *from); =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 extern unsigned long shm_align_mask; diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_n= o.h index 39db2026a4b4..d2532bc407ef 100644 --- a/arch/m68k/include/asm/page_no.h +++ b/arch/m68k/include/asm/page_no.h @@ -10,7 +10,6 @@ extern unsigned long memory_end; #define clear_page(page) memset((page), 0, PAGE_SIZE) #define copy_page(to,from) memcpy((to), (from), PAGE_SIZE) =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \ diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/a= sm/page.h index 90ac9f34b4b4..e1e396367ba7 100644 --- a/arch/microblaze/include/asm/page.h +++ b/arch/microblaze/include/asm/page.h @@ -45,7 +45,6 @@ typedef unsigned long pte_basic_t; # define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) # define clear_page(pgaddr) memset((pgaddr), 0, PAGE_SIZE) =20 -# define clear_user_page(pgaddr, vaddr, page) memset((pgaddr), 0, PAGE_SIZ= E) # define copy_user_page(vto, vfrom, vaddr, topg) \ memcpy((vto), (vfrom), PAGE_SIZE) =20 diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index bc3e3484c1bf..5ec428fcc887 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h @@ -90,6 +90,7 @@ static inline void clear_user_page(void *addr, unsigned l= ong vaddr, if (pages_do_alias((unsigned long) addr, vaddr & PAGE_MASK)) flush_data_cache_page((unsigned long)addr); } +#define clear_user_page clear_user_page =20 struct vm_area_struct; extern void copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/nios2/include/asm/page.h b/arch/nios2/include/asm/page.h index 00a51623d38a..722956ac0bf8 100644 --- a/arch/nios2/include/asm/page.h +++ b/arch/nios2/include/asm/page.h @@ -45,6 +45,7 @@ =20 struct page; =20 +#define clear_user_page clear_user_page extern void clear_user_page(void *addr, unsigned long vaddr, struct page *= page); extern void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, struct page *to); diff --git a/arch/openrisc/include/asm/page.h b/arch/openrisc/include/asm/p= age.h index 85797f94d1d7..d2cdbf3579bb 100644 --- a/arch/openrisc/include/asm/page.h +++ b/arch/openrisc/include/asm/page.h @@ -30,7 +30,6 @@ #define clear_page(page) memset((page), 0, PAGE_SIZE) #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 /* diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h index 8f4e51071ea1..3630b36d07da 100644 --- a/arch/parisc/include/asm/page.h +++ b/arch/parisc/include/asm/page.h @@ -21,7 +21,6 @@ struct vm_area_struct; =20 void clear_page_asm(void *page); void copy_page_asm(void *to, void *from); -#define clear_user_page(vto, vaddr, page) clear_page_asm(vto) void copy_user_highpage(struct page *to, struct page *from, unsigned long = vaddr, struct vm_area_struct *vma); #define __HAVE_ARCH_COPY_USER_HIGHPAGE diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/pag= e.h index b28fbb1d57eb..f2bb1f98eebe 100644 --- a/arch/powerpc/include/asm/page.h +++ b/arch/powerpc/include/asm/page.h @@ -271,6 +271,7 @@ static inline const void *pfn_to_kaddr(unsigned long pf= n) =20 struct page; extern void clear_user_page(void *page, unsigned long vaddr, struct page *= pg); +#define clear_user_page clear_user_page extern void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *p); extern int devmem_is_allowed(unsigned long pfn); diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index ffe213ad65a4..061b60b954ec 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -50,7 +50,6 @@ void clear_page(void *page); #endif #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) =20 -#define clear_user_page(pgaddr, vaddr, page) clear_page(pgaddr) #define copy_user_page(vto, vfrom, vaddr, topg) \ memcpy((vto), (vfrom), PAGE_SIZE) =20 diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h index 9240a363c893..6635ba56d4b2 100644 --- a/arch/s390/include/asm/page.h +++ b/arch/s390/include/asm/page.h @@ -65,7 +65,6 @@ static inline void copy_page(void *to, void *from) : : "memory", "cc"); } =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \ diff --git a/arch/sparc/include/asm/page_64.h b/arch/sparc/include/asm/page= _64.h index d764d8a8586b..fd4dc85fb38b 100644 --- a/arch/sparc/include/asm/page_64.h +++ b/arch/sparc/include/asm/page_64.h @@ -43,6 +43,7 @@ void _clear_page(void *page); #define clear_page(X) _clear_page((void *)(X)) struct page; void clear_user_page(void *addr, unsigned long vaddr, struct page *page); +#define clear_user_page clear_user_page #define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE) void copy_user_page(void *to, void *from, unsigned long vaddr, struct page= *topage); #define __HAVE_ARCH_COPY_USER_HIGHPAGE diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h index 6f54254aaf44..8cea97a9c8f9 100644 --- a/arch/um/include/asm/page.h +++ b/arch/um/include/asm/page.h @@ -26,7 +26,6 @@ struct page; #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 typedef struct { unsigned long pte; } pte_t; diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h index 9265f2fca99a..416dc88e35c1 100644 --- a/arch/x86/include/asm/page.h +++ b/arch/x86/include/asm/page.h @@ -22,12 +22,6 @@ struct page; extern struct range pfn_mapped[]; extern int nr_pfn_mapped; =20 -static inline void clear_user_page(void *page, unsigned long vaddr, - struct page *pg) -{ - clear_page(page); -} - static inline void copy_user_page(void *to, void *from, unsigned long vadd= r, struct page *topage) { diff --git a/arch/xtensa/include/asm/page.h b/arch/xtensa/include/asm/page.h index 20655174b111..059493256765 100644 --- a/arch/xtensa/include/asm/page.h +++ b/arch/xtensa/include/asm/page.h @@ -126,7 +126,6 @@ void clear_user_highpage(struct page *page, unsigned lo= ng vaddr); void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr, struct vm_area_struct *vma); #else -# define clear_user_page(page, vaddr, pg) clear_page(page) # define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #endif =20 diff --git a/include/linux/mm.h b/include/linux/mm.h index 7c79b3369b82..6fa6c188f99a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3879,6 +3879,28 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, unsigned int order) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ =20 +#ifndef clear_user_page +/** + * clear_user_page() - clear a page to be mapped to user space + * @addr: the address of the page + * @vaddr: the address of the user mapping + * @page: the page + */ +static inline void clear_user_page(void *addr, unsigned long vaddr, struct= page *page) +{ +#ifdef clear_user_highpage + /* + * If an architecture defines its own clear_user_highpage() variant, + * then we have to be a bit more careful here and cannot simply + * rely on clear_page(). + */ + clear_user_highpage(page, vaddr); +#else + clear_page(addr); +#endif +} +#endif + #ifdef __HAVE_ARCH_GATE_AREA extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); extern int in_gate_area_no_mm(unsigned long addr); --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4FA329AAFD for ; Fri, 21 Nov 2025 20:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; cv=fail; b=hhFmAlamRr2wzGJusVDgTAI1D9bXSpGvvLiuw/nKhFkxp6wskA2gUwrzj1jJmRvMenfIQQ24V8TlgzUUs+9IJl1tIG41yUH1BWEmi40mhMguIPyXtqJw5Ll1OIop4YVvSUzAg/JWamKMglbm8djbA0u5CmfjbRRvvNP+nOpHuJg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; c=relaxed/simple; bh=SXG7GzfW357GnWIlisoh9WUkiaARXNDkgKkDipBP5mQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=JOd49WlDbcqx1SQs6vEdOBmArRcKE9gJMx4Z61aHvQHkNR0YA0P/VsZiQ2nSZLOz/E3aWBDiAC1Ry48T4ojtlTGL8dQDt39sA0WX5QoSqj77Aj2/01vUNQmXRr/DSrEO/Y536ksP+pxxH3ip+Dd0Y/O+RUJCshTOwB+l4d12nUg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=KKD8el7a; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=PTwWn7vb; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="KKD8el7a"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="PTwWn7vb" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALEhFI6009701; Fri, 21 Nov 2025 20:24:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Z+PxyMZo8ESVi+g4nyH7y0NY0SVdeKKpekxdSRfEmds=; b= KKD8el7ais6vqdCimCnRFYrDJiaqDez9PWEoq3AITrWliYnC92zC67VHQ/IZD5Nm xRVgw5pBBCk2H44wdKiaPGMPkaG9uxFNNuLjxnB5d2HMO2V5rsq0nzTFhwxEdklW QO5DrpT+2rkdOMtdyTVfW73entFx+MzhKjFpO6V5J37T3l7wewux37LNn4PyFRCT YTl2JyXyyLg5CZ6jiCBBDPpp7VHYwsYjnM3rCJbgZLt/qbGsNGcWbirsVV+Arp5a Ox2qVzGb0Y6TFDUahYDj9V824qkUGjpPLlK/5Iege44nu/+Uig1xIHpQRtRIzwl5 SgBE7ivVT5tKSwpt7xwhhw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aejd1md0j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:01 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJ51LQ009572; Fri, 21 Nov 2025 20:24:00 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011065.outbound.protection.outlook.com [52.101.62.65]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4aefyj66qu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YZHHIrp+AFoAegLze13trn1hsz7CVNez7eAsv56Fo22Ww6XMbdKgf2h6OX8MpyliDANtElER4P8eD1EqApzx3aUJWHg7jMI4m4r9eoFKgSmcGB1/uFMGFC77nUS90SaWWvQwGM+LeUw+MwwbLe4UAAQSEQoydxUo+v+jHxPNx32o8eED86xIdBwPCZCSnsXaz8V8OEFHcljCJDQZWvKdzfYWhyXOMLHQAPtAySraLB+hE6iUgf7Z41Ra9wfr0fLnSzIzqWAIEjyQ2Y3bVruEtWR2KeQ+ytsU6AXwAAQv8AeikFDVfZuyQfSuG22foXN6vlo/A3zu8yPizADzD4FQXw== 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=Z+PxyMZo8ESVi+g4nyH7y0NY0SVdeKKpekxdSRfEmds=; b=I97ORNAEnaxyRn15PRM24wusr/f9CGRz2IC+eNeW1Cem/lCcykrCSrZDOpZqSj0VXNvmzlFnUdT04RAauhh+EOeq3ROQIS0GfLcet/0F8mOuuCrDeVWD46ySQw/4YGFEOkGXSlACeDFHZYY7SGj5UABlLDv4j7DVyUa2fs2WdmTbFHr7Gr6lbq3RWrDnCA+IkjdXas6RC+sNt7YAPF0E3DTLjd87HWfPinxTPyWA6CVlENn53zkvv0piGG+3/0rjpX8Wh0WR0169PJ8u+Gc8+ra0P3mfWoEoaetzbWcJZUYfA5bmZpCK/B8qGxz31gqWbYHM0Yn6rynyXpAGbsUEPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z+PxyMZo8ESVi+g4nyH7y0NY0SVdeKKpekxdSRfEmds=; b=PTwWn7vbVtaywV6ttHAy3uelSxBT/G/2xaRNF7M221IrX09S0TzXYRHUn17QKAqbsmF3l4CPS9j4kmUrhNLdkLsCGk2KYk/y2c+vnI++hyRiHTWCuSXDUO+UziEoNwFCxg6JmlNDFX/bMz9lz4B09VMsFi3k/On406c6QOQDLsg= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:23:56 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:23:56 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 2/7] mm: introduce clear_pages() and clear_user_pages() Date: Fri, 21 Nov 2025 12:23:47 -0800 Message-Id: <20251121202352.494700-3-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW3PR06CA0015.namprd06.prod.outlook.com (2603:10b6:303:2a::20) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 76b5f461-5af4-4632-00cb-08de293be576 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MNTnJlvo8mROCDo5rUhq2DaV1mv/ZzBU9CZRTVyJi5duY3zBYk6zgZK8b4PU?= =?us-ascii?Q?Pqb5iocg2uX7TKff9mrqAeX7m4UOPLk2Wu0Aeph1g98G03tqqOUWx24dJRpA?= =?us-ascii?Q?2tgZFv1OIjoUJkTidHSt5VkgmIBCXZtKzmJlVQe7PrziCPrxKzS02qN8eLsJ?= =?us-ascii?Q?tfKBz1/lZWLZWvlya3MY2fwrNcpWxicBH60r3d9ndFZVQW5P/j9KhfNGT5Yy?= =?us-ascii?Q?q38RkcZ8IXSqH70rY00sB00qVcAnQC3jfJGKgIw5ENWVCmZzGh+cRubPMD2x?= =?us-ascii?Q?kj0hL/Aqwj/il/QJ4SUFKAwvT4bAmyh1KeCLzFT8l6LAwNehRmZ8rBEiY3WI?= =?us-ascii?Q?0TckSHE96uqzih+Swo0WzEoTauOSy+9iVdyPHqWvTk3hepfYLyVVJhrkBuMy?= =?us-ascii?Q?qLYxvec7ET88qwlHruNHoUwR9PA2BmzDxjwPL15afe+VqrlAWqtnT9DJsRv0?= =?us-ascii?Q?M5ffBMKSq9n4eVdUL1l6WmWEozWilFSoiWuFZ/2S/xWrxobAPImeunzPWBMB?= =?us-ascii?Q?VaMjPCEnQUETQ9IVkd20MDIXJUym2n5OchEiQgpgLr1o7b1onyB6ma0toUHF?= =?us-ascii?Q?YbNXa4Ejf6+y15f1rqBVJD1ESaPKqJECSFBCEjPdVYt+N681bcXLLblusKbx?= =?us-ascii?Q?bxuDnlTPZn+llkUs/oLfVtf9pwmbIDIkGDOhxoQgdJhgryMlgmXawef9yleE?= =?us-ascii?Q?adWP92nwmlPUS/og24uhCFUx8TznmF2PCHT4/tyQlMofNGoRv8JlxkZs6Ufz?= =?us-ascii?Q?J7AKkW5pDlSbcj1n7CF50Y4LTtRRlT8Crh6IhzEItXjHnAP35KWk2NCVsG23?= =?us-ascii?Q?l4/RS4YPbj7ff/aXuoU8/WgEnuWjMYpxXtkM/hVr3Pwlp7lrxgfMN5G3lvjY?= =?us-ascii?Q?viqbVEeJqofMfnbTt36phZC9eueXrF3+5hoi6LU+Vg7l3zDgndD/muPSarlt?= =?us-ascii?Q?ip/jiNlyJRhG3TQ2YyuKgT3jZvG6I8PlGbWZvOAqFeYVnNf7vmB0N7ymsQ1F?= =?us-ascii?Q?BIdty9hJIDV7AkN4Stidrz3sjlTZ7Q3sApg9abw2hP2QRUApdkfswqG6GfbT?= =?us-ascii?Q?TgwT7HcSCh8EdRGTAbm2R/72hAb7WkVvQeB53NYeQfTEiCGvUXvi5rAK3aM5?= =?us-ascii?Q?r74R32s0swI8f+Yl44dVpYVyPjrzyu2Ho7T93vTH6dk8NOarMk2+Vd8fJZDc?= =?us-ascii?Q?reku/kIKpu6TUui5C6wg95bGUZzOi79I3AJs39LyTOYnQLhkRzdTVtnC71Se?= =?us-ascii?Q?P7AGjpGpJyDYjmjLFTSmmKRByDTk2oBeLIgrLdijm3q0kaa7c5SmQiwO3TcZ?= =?us-ascii?Q?FU/r6FjtkNOTV3UjqRy9lkYS17P1kIKCxpQq0ySyWkBpAmLczmqO7WAxpKtE?= =?us-ascii?Q?rfdwyYyBkIcrAeKrF+WB4HZhc3zB24WguZVoFR8cuemQSvpwBK+ytkyjH8EA?= =?us-ascii?Q?rlv3lGuD5eDL6emTCPpNOalzdA2TgYyg?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ka4FHasvNIuKTjMLI6BacSWAvt1qZyfU6y392kLK80VY9Vh68GnPp5ZU2uQw?= =?us-ascii?Q?7/0k4GntaWkHswBojPHelldF7Dfn5ugd428jXxfupbYeav4LG35V/WSM7xLY?= =?us-ascii?Q?ji+TaYCxUYB2r2Kf1AOWzlW2hNuAxiEQoUBr+BfwvU5EHQYNDiYwoXA7KZHT?= =?us-ascii?Q?Uadne620LR42Z5XyaTapmjzMOfjgHtP2n2HPT13vXTz7a+LQLsskJA/9TSMK?= =?us-ascii?Q?8aopt3eIgGgRUjzT+Y75EE6mzmEbb6hE6pBfVK9WXEDbpR7W5DTq/Z0+8Dbn?= =?us-ascii?Q?fPUSpJJaSGE6SBmmpJcYrUD2U75D9i4feqp/TtVci3md/e/1LCx2b1qYl64S?= =?us-ascii?Q?mxdNoVStXJ22GBOgE+HVB1Z/EiekNsHmNJjWYGX0vw10uW8V3q5AodYwWBlH?= =?us-ascii?Q?9R7j3KrEr7/llkgwODi9jF3SKtwS4qbbN0yOWPpjmCzCCJnqa9+EUjbZt7Wj?= =?us-ascii?Q?7U04y7se99JFoaAcUo1fSrmpEmPWcru7tEJdC7B/zYXoUXDlPajyD+eEnGG4?= =?us-ascii?Q?AtvSVYs0H/cW2GKLagtKIXdaVQCe/KlPXwHqIHEpOYU2sHaE/Oih7Cu0MW26?= =?us-ascii?Q?P5zlUK5rhqPDbqgHiN/oHabawyqMPlebN/yYJKjp3hyIPscNAz0bFLRbiWYQ?= =?us-ascii?Q?qJbfjFMyYWK0E4fKMYbV99UHBJwVVk88obgfNYz6CBDClCiwgFVp5ZYFY8XO?= =?us-ascii?Q?Rjoja4HQKK+vXW0acQYvnASf9Wcvs/4hoxzzd2OEqzDIGL6kdrmc+NO4NEsd?= =?us-ascii?Q?gbHF5vp8/YEIc5JBB3LIKXntG+2x6BWoJPfNMRol1fH6rJq1abOm4mFgfVYA?= =?us-ascii?Q?5TuM/gN5leYpD3tw/xfdOpNhEfDF04tU2x32cO/a7clSw3WCYh2+zBVdG6/t?= =?us-ascii?Q?0DyQnZmfe7Y+xCcUnZGfJzkZM9JRrVb57mTYWVgzB0LhqKh5FR/AO9SSB54y?= =?us-ascii?Q?WJqtjzXrzXqeZmafwhD3PXadYfZgw148ifTO2sOj/qFDpFa2Xf6XTUaT3EhW?= =?us-ascii?Q?NFUb5WZJ6PCSgnwi0JGUB6ld4pFVeow0GAmEj7f9Mz9WQkc5h1XCUm2W8wVV?= =?us-ascii?Q?HGffjPGyE3CN/dcb/pm06ff3JASQgqicebSq8rnGVUWNlmw4irggPNuekjZi?= =?us-ascii?Q?ZB6wYOt9wy8hNiaqrZuKzLmA1sbFjZH1kVrWOBK1lBvUBAmr+JE00AUF/bAS?= =?us-ascii?Q?+WxQVZtgU+ilh1chq1H9/uQHK5W+YTyphIoq2TRBP5nqFVx/mjtGKHBgLzcv?= =?us-ascii?Q?0xe7QZi9HY8izSJ9YYIqqB2A5N+r0rcd/NTuCCulXgFt6nM7bcD5vw1Qdyn0?= =?us-ascii?Q?e2YplXh8d0O0Ir1deKuoc5tBJEDLbP6sWnUgrJjfu+p4YHPYLoAaQ//SIG/l?= =?us-ascii?Q?oKBFbdDKWOH/qSpAxNJO2ePJIly/k/N0sSFrfPPfCIj0S795Ba7ZbkHu602t?= =?us-ascii?Q?5KABTFaFRJnetAz65Le1aF/Cd57JclU7n1rHwJ1vMP/ONtlwNfZoLlme8/16?= =?us-ascii?Q?4vSDUw0IoSHdKfswHBjoD7rxOVY2E4EREqFUQLN6W9FgCziR8IXe8/3H8WYw?= =?us-ascii?Q?jZocLpwV1OVLcJwHENV0CGbqQGknbbltv5dHL9F35l5PvagOhJyAdE6x61GK?= =?us-ascii?Q?IA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: HvPZ2APbyb2+yEOC/bINSmwK18s0hUI3kxT8mmrHaXLV14PwfmTclzU8LGvKusRtDAdQ8Ad7MjtQkXxWwf3GnoSQecYGK7akrwItZ1l9DVlLzLpDOghGtepBb6l1CVHrBVnpJUetY7vjKw0cUmowgit2xnNzUV5i+hsrwyIgu53zA4trX1j9OMFs5aMnDCaXqr4omNV360E5I5hOs9DOMs7q6il7la37uocRQsOlU6D74/N8nFWHZnWpDOFCX88Sosl6rz5Sw7ay5JP4VDC4Rr1snc8a443djzqQ0GNJnAu5HQfEovzk0g640U+4fSOaCqWa+M412WLE0hcwWaXEG1vI1RSR1Tg+tGx2wrNCD+48zfJXL1SnT2+J+6ugG6CMYjoBm8sx3uk974N9us5NuTkQJK8oWKTM6qgAh5aDtMVPLKJyHdqMlRlqrReSq7hT9jl5pVcjcfwX3nyeGf566QmpoEZS1a6IndQ+Rl0Gx+94MJskz0vPsryUj/CKezXSodR4qIh8n/ApP5UaIf8rsKgWt34WidTz+ug45ZTLpZzSt39JXxNFN7dNxdF1GztZkmQoFcfWL0oxf1Os91lzL9j3KxVqAMcIU3VJqeDY49s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76b5f461-5af4-4632-00cb-08de293be576 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:23:56.4202 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N8bl4VnUIjJgB+IWFnwz+OYfpOwWAckJZX7cHr5MVQElFog1mqQkDScfGkgyh3ut2Xw2BYiArESAZmfPgoI2hDbF9QVfxcBu51ELPCmSzzw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 bulkscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-GUID: S_6RecttVZQzGeo9w48qZ7mDMrUOodcC X-Authority-Analysis: v=2.4 cv=Z/jh3XRA c=1 sm=1 tr=0 ts=6920ca61 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=VwQbUJbxAAAA:8 a=-4f2oCayxw7h4Rz1qIcA:9 cc=ntf awl=host:13642 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMSBTYWx0ZWRfX+4GACq06+m0G 6YwyvhI/+e6Zy6Z9hxu+D8MqG5j5BUow9dzkKaXdH4IRM1IRv55vROELl2x84jCw0eqBX7YdU/Z H8djaWPDKiVcWm2mPNB9RJLRJMTYepCrYo+95WXKbmmM81Ld/Qfmm5Dtv0nCHnmLYF+8R+SmrGL hivCQEpWi3X/h31UrJ+rVbig+84TkQqSmDddQpIrSh/SSsYuxTWqiAHjNVMoLHVpCYDm+W914+z efXAfzQDgM2tOGbtaKomhOjO2ftBIz3EXPzCYcJ3NPOqDHKPUQ3FacNw+cR2DF4r8bNj4RVjaiL 7Go3RF0qR5zaJxg+YXxOgTurjqiBgc5//vaxOqxQd0m0jyyCmMjsOhqhzzPSYgrkfGYv7jMDj7V Lynp8zK7RAfJyPpZBiDPid9Bj5NsAcKIYF9jpOtcUBMJIRhVZZY= X-Proofpoint-ORIG-GUID: S_6RecttVZQzGeo9w48qZ7mDMrUOodcC Content-Type: text/plain; charset="utf-8" Introduce clear_pages(), to be overridden by architectures that support more efficient clearing of consecutive pages. Also introduce clear_user_pages(), however, we will not expect this function to be overridden anytime soon. We have to place the clear_user_pages() variant that uses clear_user_page() into mm/util.c for now to work around macro magic on sparc and m68k. Signed-off-by: Ankur Arora Acked-by: David Hildenbrand (Red Hat) --- Notes: - Use macros clear_pages, clear_user_page, instead of __HAVE_ARCH_CLEAR_= PAGES, __HAVE_ARCH_CLEAR_USER_PAGE. include/linux/mm.h | 41 +++++++++++++++++++++++++++++++++++++++++ mm/util.c | 13 +++++++++++++ 2 files changed, 54 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6fa6c188f99a..c397ee2f6dd5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3879,6 +3879,26 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, unsigned int order) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ =20 +#ifndef clear_pages +/** + * clear_pages() - clear a page range for kernel-internal use. + * @addr: start address + * @npages: number of pages + * + * Use clear_user_pages() instead when clearing a page range to be + * mapped to user space. + * + * Does absolutely no exception handling. + */ +static inline void clear_pages(void *addr, unsigned int npages) +{ + do { + clear_page(addr); + addr +=3D PAGE_SIZE; + } while (--npages); +} +#endif + #ifndef clear_user_page /** * clear_user_page() - clear a page to be mapped to user space @@ -3901,6 +3921,27 @@ static inline void clear_user_page(void *addr, unsig= ned long vaddr, struct page } #endif =20 +/** + * clear_user_pages() - clear a page range to be mapped to user space + * @addr: start address + * @vaddr: start address of the user mapping + * @page: start page + * @npages: number of pages + * + * Assumes that the region (@addr, +@npages) has been validated + * already so this does no exception handling. + */ +#ifdef clear_user_pages +void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages); +#else +static inline void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages) +{ + clear_pages(addr, npages); +} +#endif + #ifdef __HAVE_ARCH_GATE_AREA extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); extern int in_gate_area_no_mm(unsigned long addr); diff --git a/mm/util.c b/mm/util.c index 8989d5767528..3c6cd44db1bd 100644 --- a/mm/util.c +++ b/mm/util.c @@ -1344,3 +1344,16 @@ bool page_range_contiguous(const struct page *page, = unsigned long nr_pages) } EXPORT_SYMBOL(page_range_contiguous); #endif + +#ifdef clear_user_page +void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages) +{ + do { + clear_user_page(addr, vaddr, page); + addr +=3D PAGE_SIZE; + vaddr +=3D PAGE_SIZE; + page++; + } while (--npages); +} +#endif --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70B6E2DECD3 for ; Fri, 21 Nov 2025 20:24:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; cv=fail; b=u2wpKrjcrR1qnYI2vXw4BpECOeUXTFcyuVad4M2xQmcjdiZEjRrsd9S/fBptCN/2ttiTwIqFZCfSlW/0cZz4lgr4xAVhu5sRD4pZQKIDs8mNecXMOzMTZ+i97gRngkDO72HrHfMNYyxb87gOH6pa62UY+H7RqgEk5kII35DIMbU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; c=relaxed/simple; bh=r8UGVSGs5IcRN4E7nGbvpO36nHXzvOgCSpzx/dhd428=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=HUWstkspbJM8XiFqkiyeLRIp9Lw4eHfEwziFzNhATA0Vg65iB0FJh4o59mAJUh2dedss4xt9Qcj66Y1MgamgcXsWZty+8HIETzX46wOD8Hqdwn2zPnBhafls74QSB71h1tr8fvNbzsziF/g4foXmpTnx4UvieMkBOr+u7JYYcJc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Spv76U23; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=SbIxR6MN; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Spv76U23"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="SbIxR6MN" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALEgmL1009398; Fri, 21 Nov 2025 20:24:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Ip23kfzOxDbJW0mpobiucf6pAsOVNIJD0dc5RTfTj8k=; b= Spv76U23ueVtfkN+UGjz7I4qHYVapv/PzlM8CJdXXn35ZP7AWB2bxeA8UwRy7fKB 4Dv3mqlirqehSX91ncOkSy7D6t6B+ugWdaznBp3MwN/f927Wsn6ZqcnynlkyM9HW GFfLRvC+ycMXx4J+sxJqVN0b1v3M32Sf49fA3kVFtwYjG/TEPO3zhGRiygOBvEq8 ROWukHlxGRAYziWIIHRYq8Gjenn8a7Jr0WynVZannK6jiHmAf4a1bVCzEEwtLekY loHMZw5DVYD9vLwkE+3VSMXJNuIzzk4mp7YpxI2USF122HjxbnMH4HJkM/8E0Afb LOx9WrKGWZ+ku1Phv2vWoQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aejd1md0t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:09 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJY0Mo004449; Fri, 21 Nov 2025 20:24:08 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010023.outbound.protection.outlook.com [52.101.61.23]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4aefydufpv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IcOzHpeMyM/QtE5Unlhp02KDo1VmtV5m2qaKD6gI3elbFtGyTmhS/IMTb9ofjmiyBjZ2LBy7SGMOwFqjU4X6pMoJgeHb5XGn0lEHN+dgJriAYrONAhE8H5BkNrT+xDJuFBkKG/NUEinBARAPAX5tKUHX8YL64vU4S9dPN257MXU/OLAYc5vERgwXPbfZp92mTnh9Lnbb5xG1x7kUKS32dIRGDzo46FYWCpovnpEOQSexDSg+0MZrr/Yy8YMuCDcGpRWdvrb3/6d1n9tJy5ird6EuW21sWOKy5KCiVnx0VvUjQF0esqLGAHaMIJUtSPgb40jDQlL6oeb6eb7QfgCEDg== 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=Ip23kfzOxDbJW0mpobiucf6pAsOVNIJD0dc5RTfTj8k=; b=J7+6De+xWUT3il0tKagE9ukF/0nVtqiEPWQxZsi7B4p5GTMCCjIwZmjnjC7yPhSnuCCTitUHoIgInCVyPZQ78tgSj4/q8Yw25UW6cUtBfCmupvVLO0KAzvEuE3yhHuwr2jFoMpP5I+/SMAl8/r1/RMIjd588ZPlnqvPMfoL2v4izWUaUg9y1ok7WfgM09m8rTUWNFrG4wBcnyOrb5AhJVDNSPQMXO2ETkTBsPdGDurIrgFiN54X+KhK8fEXeBHyp6/lsIFdI1Ena5DDN0XAPTMd9HVVLc7QC+uCs9wSQb1uWOelPKMgwgzJfRzsgWIhpw83NZgJYZ7IA0jmUEkbQAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ip23kfzOxDbJW0mpobiucf6pAsOVNIJD0dc5RTfTj8k=; b=SbIxR6MNple4nHCOp8E1RdUxjsFV7AkM9Zud5PL5WrtMQvGh9dP03sHYlZ3ipin/82boWqqNFXMCrJvNDibdY6HqUyAB0U5NPPYz+wTFZVqQEfQ6Y3n3rv5lYeHe6nGzeJShRQJaZBOFpq6fiYJ1xpmWjOPsuZt+QKH60NYEdP4= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:24:01 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:24:01 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 3/7] mm/highmem: introduce clear_user_highpages() Date: Fri, 21 Nov 2025 12:23:48 -0800 Message-Id: <20251121202352.494700-4-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4P223CA0016.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::21) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b04b722-6995-4464-ced7-08de293be856 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RNdWkw348EYtupRE2gwROiO2/KdgcbwD1w6lYdsNO7m3HRhtd/Je71JX2pzq?= =?us-ascii?Q?5gZfGiQlBEWujwKJ5oGPS0C4U+Xh3dmXES8kRYRmM9nvfGdznv2qhzTPs9zZ?= =?us-ascii?Q?Yo6YDwh7QD0s3EuCkX1CbcLTAu4kdfv1Ny3AkFgE2P3Vw5C5Knpcf/OSlUUB?= =?us-ascii?Q?PGd8kSWnqL0d0YRqUDFm6cVBQ83m5WpNXVfDbYD2gurNJep+NtTwNGjSoVpw?= =?us-ascii?Q?y16q5cZCckpRxW6R/gRUhRbdGLOMOPAuIh9C/YzsNBj/aYh4LGQ6BUxJw1cO?= =?us-ascii?Q?/QAmjOZd10bi2BK3b5JPLIX+ut9MuFBVx2PP7AAm6fV0FrVFYE+IhXAEM8h3?= =?us-ascii?Q?QaW7CutZknsWdejW4WsJ4Da8Eh38zpN8DCr/UtTckD2lH3eEyKydNWST2cI+?= =?us-ascii?Q?qKFiUfce9j0lSipEaUkSybQOlOBTvePshF/itWF8NqNJOS/wmAcOP2a8s5qU?= =?us-ascii?Q?u6LlPCLJ7n/oVr21LhANRD7BNgKpgwedgd/KbwHSrVtN2cz7yFOiLDxcWZ+q?= =?us-ascii?Q?HTHcxvZRugQKvesEVFfkFHbAjjejIqzm5Db0bmheNaaLVpfMf8/N9jcfQH/m?= =?us-ascii?Q?5EOoEfD6X7sEfaE+UVd7tBXnIYf8ecEj3QLbIAamyRuvJ+fEMNsBj1vF52YN?= =?us-ascii?Q?/alaANL2s5hkyIZlb/fNuWCYfhDZJY9jJdjhkmdAzBqr5ITfJBYjAd+IAqgA?= =?us-ascii?Q?02Qx//jLuW/TtlscESa+cWY8ci9gsfz94kiFb2O4Ae5Q6dZtvJrm9MOi00dA?= =?us-ascii?Q?dqFc4FIdieh2VgJZoSN4tn6aAVc7ncuG6sgA2cYYbOzeDqntcuN5rguvkpQm?= =?us-ascii?Q?zFiJ6n7whVrF+TTk4VcfL1SCd0EslP+UsKilBHLIVWKqurDADCMa8Wh8MRyW?= =?us-ascii?Q?40+T8X4tL2wG7HfU6SlKme8fkr+AZh2CngNc5vzRnrM5MWBkiLJMxiKMNX2G?= =?us-ascii?Q?zmn1EarCnDCYhPsuX37nPcj3AeRQk/PS/3Y9onoOJTKseqvdjFchAPKLkiQJ?= =?us-ascii?Q?MvyXEIcBOWCbQ/MD16YMJESkmqCE0b54t5Fubo7XBC5Y6/2UwGobS6z4fm32?= =?us-ascii?Q?inBfMrBVIrESvE0xYMvD3iC/ncNThFHiic/5kS1SHR5AHRolmJeYYOtvzm98?= =?us-ascii?Q?NGS83xR/IqH8o22SLd5ccrGMwDH14bIWs06jcdZbL0ELMI++i7jRyp40DBB5?= =?us-ascii?Q?ABx0Wa8UCymn4rKVzGm5d97btc9QLD0tXTP00UmmnMbnW61N5qutGX3KaRlv?= =?us-ascii?Q?gBtVaF/SWse4YKAyEh6/KTMLwazuv6lGOrbbo1oTqMQusaXK32nzFKAtpZBP?= =?us-ascii?Q?2QMCK0tP45+JqrkY1WR6K2dwrXtXo0UO/kWZRY9E4PnJpc0fwftTIzkdLXkh?= =?us-ascii?Q?l6O2KRVdI2LBqM7vWmcs+ub2PHXumA06BQG2USiEcZg1Kyv6VNPzSx474p84?= =?us-ascii?Q?pJl+dhVWWfxK7Ere0PT/01vCBX2ZexU+?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QqCvoNfnhBPztSNEPuZoC226Dlzdta0pLOlPchQGL+QOKOUiRdmYLePL/dbN?= =?us-ascii?Q?GaCdKPwnZgzSqp45f9RmI2R3mvoMLJb69NMRvTmW5y4/yfDvx1CAg7yFP23W?= =?us-ascii?Q?UrOIAJthdTlc4wwQ3BG4kQ5KfOqWGrWBE7eSE4zZBxak2i4t5B2GMdMTVSsW?= =?us-ascii?Q?Q93TVLnmkVGL9tch5DoDh1k46gl3QY7ZyX7NoNDYQNUHgIBfVOV/SC3x1WEo?= =?us-ascii?Q?/R3ypUhep26mzm30T1PAoV+mwF8pF1VuOuQLFo4Kscrgr8VGz273lThevSGv?= =?us-ascii?Q?FBEojDNrVJZlb1JTVAtxU51sIsXGPYDGRmKRZqGk2UB8C0VQN5grcNTHKN2A?= =?us-ascii?Q?nWx+3l/K9P/sRZoCxxAyujuC+6MJ0Uy+Im6pS0uD/j+UFupJAw5tWUOg85K5?= =?us-ascii?Q?HzJS05cNI1kus+0RCXrwFRFRGKKxORoFmJoyWfNzGmkZkjlTUNYQhWWKA4lZ?= =?us-ascii?Q?vmuLyGurg+92aq5cS1xbyblE4snQ1+IIvrysLI3160Ewgcdxm4gs+OntMi2D?= =?us-ascii?Q?vCvu3gH43pVJUINN7bisICW3rbJZrJaXT9rO/izE6g5OHF6m0SefwiJ3UUlZ?= =?us-ascii?Q?KmHtcd7omisI3OZHQ++qxxYufeixe4PI6vSmuSUamNLyMOmdn77Ry3semy6T?= =?us-ascii?Q?cnCOFY4CiUDREzhWE6Z8npvEANBEffZv5+s7fyzQsUgsOSM85PAj4HPvewgc?= =?us-ascii?Q?xmSk6UTG+YEL1XljILUk7M8A4lnwXU2awIMVPp3nifTtm89eGkLVnCay4iov?= =?us-ascii?Q?pp00RiTcwhsZwF16zJHsm/cyD8FvD+0MsEqqC9dvEEXGtUKbjlO6fqWJkqTF?= =?us-ascii?Q?SagnoE1Tp4UqGslu5a1gnYv52E67gy8ozRE3ydwhM8Y629D7GJ6ODvtFrLdt?= =?us-ascii?Q?fl02+y8Yy9gTAM2POMOPllHQcNhBn5ijqMeLZc3nOF37xyoKSkkRqJZGKIol?= =?us-ascii?Q?xiTi8SlUTxKfzMrw2o0xtIQ1ukHLP1mGSPOV/BQL4vyS8ezd6KE4/2d7y/fP?= =?us-ascii?Q?D6IEPMoGmDNoEjDJEEHFR5PTURL/Glt07iHsT2JPTCH4xaQpcVGBIRn9DjRi?= =?us-ascii?Q?0R7oLlCST7kJyoJ9XKWEmQFt4bBLCG7ihGCx083796zNcFU4/Wc+/y/HVqcs?= =?us-ascii?Q?RWIpVp7hhHStkuJuM7XWlgI5OzXyWtxyFJLrh21GMtsWAgsVTetTBPbap2IS?= =?us-ascii?Q?dRKZWiUmqzYoVGq/abL7wkcMvEO+mxU1kuoeUfL39M6EEBb3PpTmRIkj94yf?= =?us-ascii?Q?Tpgm1fAVmuUFrlkMt6zC4rLlui0fWyYwka2ed3BQqx2pp/nl7zpWjIvSd1n8?= =?us-ascii?Q?kQ8M0GNPuouj+3JiNiGSeJVYGZ97hJeegXI/aWBe220suxbosciBAMmeqe11?= =?us-ascii?Q?MBY5S2nw090aYmFuMsfSd8AMMlw6U+E3NdG/HevE84B0NR2Y5o2qqsJjRYHW?= =?us-ascii?Q?O+1vSsE6YcE/R9fT5DJugA9gLgFwHWAZpJYJfpbQtKDYJK1YDqkH1vZUgPtM?= =?us-ascii?Q?MaL9F6v3Fk8PZGQZMDnLPW5SA1PVUSRamzlvTViouMYXD7cnweVsgtf66DFe?= =?us-ascii?Q?Nee/ghOpwrEHPYM1MdRDz3vk8LMsTzpMMgfAsbLKfWP483zmQc1lPQYA91xW?= =?us-ascii?Q?2w=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TfWam+wsbSPOLWOnyvde0KGEQ+/0TyymWHbkJMsyJQDqDq4X68oC+/iaDSTKnCVVUYxdgcLCQpQnQInfGMx8EZ4cRHLU5SZaI2weHhIL+/kp+ScnRcS5y5Z7YfIhvgeh5aXKQV8T/AesAm3qfO1gMd5ppq5f2VM3sTUYbir1mouAsbdVC5CQsJ5Mdc7GchPkkmIdoFJ7vyHzRgIiK9NL0u5zoO4wLQQaVu8pE9O5eingkF4yfngHRONOmufVBRZp4IkAJB1igvyjzuczToZTZDh3S17sJFtqwSlHroJiQuojNLn3/+iL53W9NFJcH0QyybJ3PVl+RXi+QRQFYye2jz1i6kY2xQPeXPxYeq1vzRN3JrFw6UPljFbcyXnBoQehkzK2RkTiOOtaT8SnQouYrGhXmhNq1lT5UnVRxZtsB08X++dhDFxURY4fz43Km+1A1/m5/ibbvhb6UQRLqSFlmkjPRPkhbh2sv6DTj7NSY/g3AyHxF7fmZokcB9W62oqmEpTQ38OGOGBPowolBqgAWHyr25Y1DKh3g8IUVMeksy5yT3ZkpWiJfY6rIyEAw5z2dJldV3H/z0WlWYjMeJ96jhUV46QKTOrEg/Z+uUQYH0w= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b04b722-6995-4464-ced7-08de293be856 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:24:01.2401 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YtoTFE1Yp96pgepx1D52jBDTgPj+on7RU+Uvf0Z40Y4lnoaU9y28PnVjpbI0hnztD3kQXX+V/lJI/VeNndoactc80jM8tJGr4EqzxYAbEbs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-GUID: zcYuEvCrBVTPoLB5kw-ivDx37lph-NnH X-Authority-Analysis: v=2.4 cv=Z/jh3XRA c=1 sm=1 tr=0 ts=6920ca69 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=VwQbUJbxAAAA:8 a=d0Ruhql17P3IiE_7rwkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMSBTYWx0ZWRfXzV90tZr2ggLz UWEecukV9UH4T5LDdWRjbxU38EuUKK0OxTJzX2GJwbdnoDEKBEQLfsLxBqBInBPiX+uPY4fRA6R fqyIZbqXXB4B3652DeYcN85VlkvUt4xqtEClVTRIc2oEa/EDgwgjwa2hMRo01ZVwjYu5Fl1DFQf Nbjnz0iINNIRFlKdB058kq7Ohij+Ekc+YZaTi8CQ5tEY56cNwp66rsTTmMiSJIN+YfB0LhN5hU8 wmi6Mn8iuuIfn3nMlTAE7IW8jRmDOGbsyUMnYzuAw4exny9BQFvYr9GoaGmRQ9bgccjcmkw7sR7 TaonERpUYlrwND1+NQL+QKrz0aLWICvO2LjV7nTTyAML+funMeh1RDjG9i+4EQldiAsFwXA7uA4 eu+QAawl8zSUYw377aDEFi/CdECUZA== X-Proofpoint-ORIG-GUID: zcYuEvCrBVTPoLB5kw-ivDx37lph-NnH Content-Type: text/plain; charset="utf-8" Define clear_user_highpages() which clears pages sequentially using the single page variant. With !CONFIG_HIGHMEM, pages are contiguous so use the range clearing primitive clear_user_pages(). Signed-off-by: Ankur Arora Acked-by: David Hildenbrand (Red Hat) --- include/linux/highmem.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index abc20f9810fd..c7ca88ce9937 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -199,6 +199,11 @@ static inline void invalidate_kernel_vmap_range(void *= vaddr, int size) =20 /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ #ifndef clear_user_highpage +/** + * clear_user_highpage() - clear a page to be mapped to user space + * @page: start page + * @vaddr: start address of the user mapping + */ static inline void clear_user_highpage(struct page *page, unsigned long va= ddr) { void *addr =3D kmap_local_page(page); @@ -207,6 +212,30 @@ static inline void clear_user_highpage(struct page *pa= ge, unsigned long vaddr) } #endif =20 +/** + * clear_user_highpages() - clear a page range to be mapped to user space + * @page: start page + * @vaddr: start address of the user mapping + * @npages: number of pages + * + * Assumes that all the pages in the region (@page, +@npages) are valid + * so this does no exception handling. + */ +static inline void clear_user_highpages(struct page *page, unsigned long v= addr, + unsigned int npages) +{ + if (!IS_ENABLED(CONFIG_HIGHMEM)) { + clear_user_pages(page_address(page), vaddr, page, npages); + return; + } + + do { + clear_user_highpage(page, vaddr); + vaddr +=3D PAGE_SIZE; + page++; + } while (--npages); +} + #ifndef vma_alloc_zeroed_movable_folio /** * vma_alloc_zeroed_movable_folio - Allocate a zeroed page for a VMA. --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70AF41DF72C for ; Fri, 21 Nov 2025 20:24:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; cv=fail; b=Ye5u9JUAj9Vr5UYfL570q2MXKICNcJj9NFGwXLHwKIw0hPmIR91R0fNvlKYqFK0Qi0mvBV9/xh9V0/OaZbNL/bx09LvHIHf/XR9apR/C4z8cEqPaJTZNgVpDOXXR1rnedmiIVMdLCpqCjNZfHN7c2r+sKZ0/pvcSCEXOoOaJo5k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; c=relaxed/simple; bh=rCM9+gpWW99zA632rJFx2LGyC2/bu81eJ4jv84gQX/g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=gxILIWqdz+7t3zErL2rT4haepZ/AOoHGB9/2OkqnMApndLH00eo3oKRmumzCrnhrcs+2s7G/iHMoF7PkoYxhWpY0T9S++ErYQFd3ID8EvAOL/AGyMfbuvxSjqh39z/N+XBpIgxTeoaD8zbU+zmmukDEJRHHFGkTjiiYvODcP2i4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=evlpZ3+4; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=zs9IpSLz; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="evlpZ3+4"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="zs9IpSLz" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALEgsWi014546; Fri, 21 Nov 2025 20:24:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=A7YJVfgIlnS5kANFa3xwseJm17GMLncyCGn4THht150=; b= evlpZ3+42tJehOaieT+54xCQL64Ct793aPC/uw/ktMJsaIdzUAjJh4OQLnDE3z4l p2Mu7I4E5zghZivEsiPdgyMnBo4qpzKYdgqHuuPzurbaKC2mCSWIOQRAl08tqwDn /x3vjBzAx0mqwJYI13Z6uL9aKM6cu3Idnb9AVcEc/CBtUh8nNgSrxhhXiorTPRMn lwFUQIT/LA7qiLw8sxxHQpDgWzQr7gwnY8WRKS1ERD/KuvN3Fgq9ZVNwTyokPXnl XVJdBfO1luUio3NVe2UzI6bqOEFrU3sREWV/Lbr0JjtZmPFvEj93oTxfGZjoxoIB CXizs+s9wxNTNZZPxO/+nA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aejbuv6ge-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJY0Mp004449; Fri, 21 Nov 2025 20:24:09 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010023.outbound.protection.outlook.com [52.101.61.23]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4aefydufpv-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mBTokBD7BlEJ0hdTw0pa2RgY21etB7jY+fIZoxJROGVRhDzKA7FXbDw94Z+zDUX09z7zCL5ygevg1lAROXkFvorCLeFdeJQExdrNaLXRDwPxI214+tSZ/aigzP0HBIqVL09ukqfqlOAkvIwyzZgOkEuf68kqe5S43PT8+OSMHx34ebVGZHdVyY2V2ieVEfQQfMCA5WV+cDhBBw4xzDUBQCWHB/LYn5dpC1/q8pp47+2EVa7Zn+WIlnY1w66pJutS2kPuCgZ7zq5qnPVv9a8+UGhyIjZPbHMLNYTUwIwiRje64rObQeX5xwV4uCCapC7mjs+iw3LlMwItWDuMTB7wIw== 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=A7YJVfgIlnS5kANFa3xwseJm17GMLncyCGn4THht150=; b=aBORlGxpAfeiZlvxkjOnj08HW7S2QuukeZKrhzGuElZnvUZfj2QG7X4I2bN2EwL20cuQI9GcEGY6nhOc3aC07Xg/tJto3GKhrpHF3IRTF3+r2bhknxBT2AxiCXEn0HZOvIZisYjhwsoYtY6V+TITkHII6UAtl06VSh4upIzxVpsAQ02g5LEE36rvbZlOB1RNGvfDZqBkv5efbmerCDYjyNA4ezacedyFfWmMqDuod4vKaBqfl409xLolBCS8BWh0bkM5bvgdg6WC+xy0DgvyBN9zl2U+ZikGM/eI+Ex6coi7MQs3MbLKMaHzvS6re/DUwM7awgps0kowMkRu0lNDkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A7YJVfgIlnS5kANFa3xwseJm17GMLncyCGn4THht150=; b=zs9IpSLzGAjyNtGewIGKQAKU+y9MP1f2O5sCXbM8d6QFALZo5n4QjlnthJhInfW3quJFVfSWveT/p9FWpTP9m+xJO5yjCShv67XUDUb623r0b+rcyuMYCeFYieVedOVfJssFakOw2k7B4enLQ/TnjAcotgzFNTRlK82Kdy1u0m8= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:24:04 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:24:03 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 4/7] x86/mm: Simplify clear_page_* Date: Fri, 21 Nov 2025 12:23:49 -0800 Message-Id: <20251121202352.494700-5-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0050.namprd04.prod.outlook.com (2603:10b6:303:6a::25) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e220f75-0ef7-486b-949d-08de293be95d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qqNhLktrZGrUrRG8pnyU7ZDmC8C3xr7jK4hCjFPRim/k2Yod646Z1FinYz8T?= =?us-ascii?Q?LDbuDou9TF9LO55TVgBT5lgMt6EPdQzD/m11S7YDXzGWur9IIDPVtjqrHyKw?= =?us-ascii?Q?zixkMWKh8+rtFlJ48VG9RXO2LP5WKGyAorT5LC5/ws77HTrryLEDU59NQZGv?= =?us-ascii?Q?qWKCZ2BpBAVEYSg1uq8UHb8w/4KcxSA/lKq9HEwW2AH2PGDyxXkKZ3PgY7mM?= =?us-ascii?Q?Mt2BpPKTw8GlVxc8InaWNNIjqN068MI7RxFRHg/+NLIgAYoO4q6+6Arx8juF?= =?us-ascii?Q?/Ik+lOhH6dIg6kg/xaAD4sUYbwCf7HrU53Icd8SYvG2ShUQm3a+iclvXSToX?= =?us-ascii?Q?0DdCIvJtdY4KFx/YUh2N+IxwDcLPTm7N1dhElVYOhJq+e6cFWwW3QeEcq6hN?= =?us-ascii?Q?GNFYgWLkt8WDT9cJWH5dr4P/hYhG45jlEXgo2FGtY4UI+8qn7ADiS8MG++Gk?= =?us-ascii?Q?uUIqMVyjvGsPserbO4g/1ybcF953IwHFSg8DH+IKJWzMzO9RONUj9G0J8Z+5?= =?us-ascii?Q?iKyHWFhjn/h2GlyMv9m3vdFhLpMOkBYBBkYIYQfCuBWTI/9mucDZ8z2yX3aD?= =?us-ascii?Q?LQYlR5pBXgGgWpwN2IIwAQ72uOL/1tr9g9nJdBHYdaLYpRLQHm7hxANAR+pm?= =?us-ascii?Q?lGCgve7dizJRxCGimk80c+ziPVQGOtcCW3+3UgZ/ltacm5+Z4nxy7udp5iF9?= =?us-ascii?Q?o9B6Fy5P0efThWtzWDRNmUYqYjlfWVgGyAjq/Fh7xpQkkRqtfhej8w1nXj4u?= =?us-ascii?Q?6p1r23dMf0q+Rh0ny1YyKhYe6kJXoS5ikaDaGaKoOxAlNC/StfLh6Rd+//Mo?= =?us-ascii?Q?TtlteUruETZkUN7exhSonrsqCjuvyMAOei5OkpzKyLjbjUfqWEYgxbio7kCM?= =?us-ascii?Q?Wsc0nddcKqszRYkFYfBNyGrEd5y0i3lRPYpBmVWXMyTYVmdID+DpzDw7doCo?= =?us-ascii?Q?pSb+WuJ35ZJ5655vi7yWUx1pyQu5EPDNmqwpu413w423MlR8RugNH62Nebta?= =?us-ascii?Q?ZFhFjvw05snzxJz7ubk+h0b7NghagJqm2RDe+BQtBAg4y8S/NU0vxPIu+1q7?= =?us-ascii?Q?m+pfdiLkDEgo1Be4Ig80qAtfIeP5hvdkz3T8W/wr4uKIgBb9mcxbrGXW7PPE?= =?us-ascii?Q?xnROlmoMxRdwhci7ti3AfaZvww14cAQi0H7xqcDs7lZDvr36IQ11rXZR+VJR?= =?us-ascii?Q?+UZua27YrGe8tLWafEoGYyNfLnKUd9OzoaZtifwlb8WSwkbbtIVOGIdJVpt0?= =?us-ascii?Q?fR321rsEid1aRtAkqdZBZ0AmN+41iblXXXmHVJdUevG4zaVq9ppRJiH62uch?= =?us-ascii?Q?/7ZqdG3dvt811kCh7K72nYc3bmAGA6ey+79TxBibWI4GFjGvsMWru3F5i4RL?= =?us-ascii?Q?GdVhODhsOxwQ58dtno8JA/GI0JK7n1LfhyFnoDruQ2ngzxPbWjooi8pr1brK?= =?us-ascii?Q?FCm61itf55U0+xBcy2vFgDdvvYJ36U/O?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BLeVihZ0S4ipV+j2kWgENgLDm1UtqELNZENfu5WZozxcI9HSkXdkxmjigQFd?= =?us-ascii?Q?4d7QkAXMMYCCqT6tnhmbxHMMwroAj1NZj5WGvWrDS532rvLkzahRhq+eWSob?= =?us-ascii?Q?KK2ttMg2ZVW+PcLwBD99tvUJz3mICEWGH0nbFtiqrvg6SBoycjvpQWeB6Qp/?= =?us-ascii?Q?AoFDh2zvY3RIb9jWbyzXLK2yvYpnwXk+qNgsLxelUWr5SwrcGY+Vros+lTNG?= =?us-ascii?Q?bD74wYecWPG9QjMSIlMFp7PrlJZBFFyodMOXe4FwtjBQ5+EeU6Ap/6S868u/?= =?us-ascii?Q?m+JoyZb8q/VASJkwTFCT4T4vead4mW9mpNSuEw7fcH5DNCwR1TN2epxudqnB?= =?us-ascii?Q?8ccUJXZZ63ii2hebD0N+r8apRjoc+N3YeAy+wK+9HLP5qHWFuYQJf9AS+ijc?= =?us-ascii?Q?phRB6asOuN7i2kw8W29gi+ksQVE7i1JB8glxARjFZueOz3mj1LjIlfgehzvq?= =?us-ascii?Q?6ca/RkqqykHqSPIc7Vae3adUQfaE8SFsDNdYre/uXZa2YNnvMjxbuH7txcV0?= =?us-ascii?Q?+nBnkY3HH5iewjRHsLDlhIIpoRzezlqwyuCEH5Goy0CpUDrnyP6LbDyr93F9?= =?us-ascii?Q?w7XcQu99ToOjkqvEVuXmzLc4Riau0o4oMUf9u9WZsz0Y0pWaWvqICzWPtbew?= =?us-ascii?Q?lBMUfaQE7fCMg8QgeU/Gx1JgUop2f2AB8hXTC3pNY2lEg4mcanq9MZZQ8YRu?= =?us-ascii?Q?RmdICCqf4X4mmhChyob3YsNQd5J8ErAI9ZolmxlTQiDagnfcU+ZWySWas2FG?= =?us-ascii?Q?F6lMvY16oQxh2pG618ezbNLahOHUpggwWEm1Leki+AIX+F4UPk/cMK86eXYG?= =?us-ascii?Q?W63lMiu7GA3B+9Q58SeuCVhqyf9MpIyQXhI5KM3xIGOOOqll9FmEtauSFGSo?= =?us-ascii?Q?4tDF13R/o24ZaVydEgxwVPWH9n+2W0Qnk4jYY6lmFJt/uaLLLqAdulXNyMuc?= =?us-ascii?Q?LkIVimLKe3f+Ur2El9I3ydfLZiBa5Tw360Yt8BCK6TD7K6M9qly0pgXa5P02?= =?us-ascii?Q?wZCUwwP0uzTgfaPlBqF1SSr2X1p18FVNlpXVFYFLd2X6UkdBoVieRQGnyNYy?= =?us-ascii?Q?NV5cXMdDoLyAuby4RDe3rsOz7KT7xAY97qegMRhwHWhpmcNBjPlXJYljcKU1?= =?us-ascii?Q?mMz+7TUean6sz5wmt5oN7KLy0eeJj6FbQNQR6xb4fT0x5NXF5mnXviBpUI0e?= =?us-ascii?Q?z6OBzWsG0/5RUKw00h7bM8wlTNkFks+94Pi87SPwOS0K9a2MybjRsfDAUt+S?= =?us-ascii?Q?ifQw8uChMmeIYK9a4Ohc0vF+dUvSmKnsLxbs0BVChJXprm9gS/dvw7fklR8K?= =?us-ascii?Q?6fNUFDvXElxQpFQMY/RCVjujubmkkTJHscr6t+x1VwWzTVnHZgg/f+/8Wobc?= =?us-ascii?Q?ogkPaZmTPKBE7Kk2ia39/fOtVrbbW6y7+D8TDXR7k+pzqQSt3VfLLMz9Q2bU?= =?us-ascii?Q?VbQcDkKJPILvL08nmGHI/XIJWbDttidH6E+GlJpNBXajRSYMackPuaa6Yn8v?= =?us-ascii?Q?nNsmbuhpBYMU+PDp+FdN5RbQQ5CyP8QNHhXlJkQ3jweNSJM8LVzQ5EaObcNJ?= =?us-ascii?Q?bP3Gu0gN3R0daY0IrgNJ3kUoAEmj/oPweqnSJfDhQmn7bhrefYkKyntJl6Qf?= =?us-ascii?Q?rA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: BPjv64FHKardgAn9MrNfOKmfEo1lruu9tT4sqSkoiiIa0lqNpm+IX7DX5aR82tlUZPS8vIolpSG8rgPD8X2sSa5Fog2Lgc9IadJeYNRcLwMo2gHua1zTcLOflmUaNMjNcf/7CO1RiSAQGWYeQJBRwKpS6q23axLD77ZUG4M3ynmD7ODlFu898KoJqzc0fxPtNNcrpDRLU3MkXbwxMpFfMrktrdrueiRz32mx2odP9W4rth3yOQm59KCSpVKxwZTRjs3XEEeGfzMT8ArDQYAjBal4/1oGPq2DN8XydIiHKhLCgk66wwOob7/sgVcT1YA1HggVGkQixR5Kyp6KWeOnUjKAituVAv0SuPlklXyd7bMgbM3G0BgyHROfjMJhEhy36t3QPLaKRFe0YGLjwXDyXbUuBa7Eofo5UcCtBgqG4nxWsZ7ifVUoFoiWF5Owfs3VlwaYeZRr5fC/em5i7NkV7xRscrXhBJs1ENSdTDJO5hKOfeq4NOL7pCZuIX6ZuCajTjtGlkI1XMupbQ+1UTTr8U0X7qngOySE3avJQ2sDnmCVZEfqMXEaXCCQcrhIos/ELIcZ9MxGUKvkgHV1arCI5V69qYvZ9mBRHS/NX3PYtDI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e220f75-0ef7-486b-949d-08de293be95d X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:24:02.9638 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: slidGTLevPGDOkd+M82i10cp1wu+zG+XhIZbcKavkl8d3WWt28+tG0E22FnJBi2bCPibRwZy/3EirkIz92gP42CEr4jYgbOrLCSmDxFu9eg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMiBTYWx0ZWRfX924p7CfNC+Ox WGOu/UO2/lDc96/GDbMhWfi6/kSttNOzzI7u8EIGIwCQr/ifTRNE4rBYcZzzDlWDRAdC2/upCpQ qqQay5ej2HxFc9m/KWafFKUOgmlYx//DuNBYoXiZWDHMO4z/YsqyjTTKjUeI3ZfCW1Y6p4aCOSX fjguFXd8R4CF4TwkC9kFLxXC3b3RD+GSBBQwUeLwN7lGRHzfAlrDQoG60y9C2Q95zRFTHO+EKnj t+NOilCTmxo5dMKunUsfj3FAQL/DClKxJA42hd/9Kxu8qxUMqq+A5Aj/lCn9USfOpWnNOVYnMXP M88FLpyO3T9wAR29HfmSAOATSNfTJ3gdfM27zdDaW7ysx5353jm5KyVCrjPje1fRojdeMiW8Q6I OeGvo526744LCZ7awL7dI9tfgzi8Gw== X-Proofpoint-GUID: 6toqK3udfFIOQT_MheQHxMd1UpPc1GPy X-Proofpoint-ORIG-GUID: 6toqK3udfFIOQT_MheQHxMd1UpPc1GPy X-Authority-Analysis: v=2.4 cv=Rdydyltv c=1 sm=1 tr=0 ts=6920ca6a cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=CZTfYOs-HqEX1FBfxHsA:9 Content-Type: text/plain; charset="utf-8" clear_page_rep() and clear_page_erms() are wrappers around "REP; STOS" variations. Inlining gets rid of an unnecessary CALL/RET (which isn't free when using RETHUNK speculative execution mitigations.) Fixup and rename clear_page_orig() to adapt to the changed calling convention. Also add a comment from Dave Hansen detailing various clearing mechanisms used in clear_page(). Signed-off-by: Ankur Arora Tested-by: Raghavendra K T Reviewed-by: Borislav Petkov (AMD) --- Notes: - s/memzero_page_aligned_unrolled/__clear_pages_unrolled/ - fixup comment to specify x86 insns in the standard ALL CAPS style. arch/x86/include/asm/page_32.h | 6 ++++ arch/x86/include/asm/page_64.h | 50 ++++++++++++++++++++++++---------- arch/x86/lib/clear_page_64.S | 39 ++++++-------------------- 3 files changed, 49 insertions(+), 46 deletions(-) diff --git a/arch/x86/include/asm/page_32.h b/arch/x86/include/asm/page_32.h index 0c623706cb7e..19fddb002cc9 100644 --- a/arch/x86/include/asm/page_32.h +++ b/arch/x86/include/asm/page_32.h @@ -17,6 +17,12 @@ extern unsigned long __phys_addr(unsigned long); =20 #include =20 +/** + * clear_page() - clear a page using a kernel virtual address. + * @page: address of kernel page + * + * Does absolutely no exception handling. + */ static inline void clear_page(void *page) { memset(page, 0, PAGE_SIZE); diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h index 53f4089333f2..6157bf46590e 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -40,26 +40,46 @@ extern unsigned long __phys_addr_symbol(unsigned long); =20 #define __phys_reloc_hide(x) (x) =20 -void clear_page_orig(void *page); -void clear_page_rep(void *page); -void clear_page_erms(void *page); -KCFI_REFERENCE(clear_page_orig); -KCFI_REFERENCE(clear_page_rep); -KCFI_REFERENCE(clear_page_erms); +void __clear_pages_unrolled(void *page); +KCFI_REFERENCE(__clear_pages_unrolled); =20 -static inline void clear_page(void *page) +/** + * clear_page() - clear a page using a kernel virtual address. + * @addr: address of kernel page + * + * Switch between three implementations of page clearing based on CPU + * capabilities: + * + * - __clear_pages_unrolled(): the oldest, slowest and universally + * supported method. Zeroes via 8-byte MOV instructions unrolled 8x + * to write a 64-byte cacheline in each loop iteration. + * + * - "REP; STOSQ": really old CPUs had crummy REP implementations. + * Vendor CPU setup code sets 'REP_GOOD' on CPUs where REP can be + * trusted. The instruction writes 8-byte per REP iteration but + * CPUs can internally batch these together and do larger writes. + * + * - "REP; STOSB": CPUs that enumerate 'ERMS' have an improved STOS + * implementation that is less picky about alignment and where + * STOSB (1-byte at a time) is actually faster than STOSQ (8-bytes + * at a time.) + * + * Does absolutely no exception handling. + */ +static inline void clear_page(void *addr) { + u64 len =3D PAGE_SIZE; /* * Clean up KMSAN metadata for the page being cleared. The assembly call - * below clobbers @page, so we perform unpoisoning before it. + * below clobbers @addr, so we perform unpoisoning before it. */ - kmsan_unpoison_memory(page, PAGE_SIZE); - alternative_call_2(clear_page_orig, - clear_page_rep, X86_FEATURE_REP_GOOD, - clear_page_erms, X86_FEATURE_ERMS, - "=3DD" (page), - "D" (page), - "cc", "memory", "rax", "rcx"); + kmsan_unpoison_memory(addr, len); + asm volatile(ALTERNATIVE_2("call __clear_pages_unrolled", + "shrq $3, %%rcx; rep stosq", X86_FEATURE_REP_GOOD, + "rep stosb", X86_FEATURE_ERMS) + : "+c" (len), "+D" (addr), ASM_CALL_CONSTRAINT + : "a" (0) + : "cc", "memory"); } =20 void copy_page(void *to, void *from); diff --git a/arch/x86/lib/clear_page_64.S b/arch/x86/lib/clear_page_64.S index a508e4a8c66a..c245b7fc01cd 100644 --- a/arch/x86/lib/clear_page_64.S +++ b/arch/x86/lib/clear_page_64.S @@ -6,30 +6,15 @@ #include =20 /* - * Most CPUs support enhanced REP MOVSB/STOSB instructions. It is - * recommended to use this when possible and we do use them by default. - * If enhanced REP MOVSB/STOSB is not available, try to use fast string. - * Otherwise, use original. + * Zero page aligned region. + * %rdi - dest + * %rcx - length */ - -/* - * Zero a page. - * %rdi - page - */ -SYM_TYPED_FUNC_START(clear_page_rep) - movl $4096/8,%ecx - xorl %eax,%eax - rep stosq - RET -SYM_FUNC_END(clear_page_rep) -EXPORT_SYMBOL_GPL(clear_page_rep) - -SYM_TYPED_FUNC_START(clear_page_orig) - xorl %eax,%eax - movl $4096/64,%ecx +SYM_TYPED_FUNC_START(__clear_pages_unrolled) + shrq $6, %rcx .p2align 4 .Lloop: - decl %ecx + decq %rcx #define PUT(x) movq %rax,x*8(%rdi) movq %rax,(%rdi) PUT(1) @@ -43,16 +28,8 @@ SYM_TYPED_FUNC_START(clear_page_orig) jnz .Lloop nop RET -SYM_FUNC_END(clear_page_orig) -EXPORT_SYMBOL_GPL(clear_page_orig) - -SYM_TYPED_FUNC_START(clear_page_erms) - movl $4096,%ecx - xorl %eax,%eax - rep stosb - RET -SYM_FUNC_END(clear_page_erms) -EXPORT_SYMBOL_GPL(clear_page_erms) +SYM_FUNC_END(__clear_pages_unrolled) +EXPORT_SYMBOL_GPL(__clear_pages_unrolled) =20 /* * Default clear user-space. --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4F108821 for ; Fri, 21 Nov 2025 20:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756689; cv=fail; b=uMYlqP91rm5s/h3SIFWuNqu/PWm6KyjOLUc6hx1NKmiU0Ob23ilWvDs30NIO2uY2inEfEV2hzat8vDHWWuw9TBMo0RZ0UdwaDL3FX+Aa33MC6nU8+Opj8+r3viCpXQOs36z5+tHgDo8cdAQI8BYm4iAuooKGh+EG3z+3l6pAkvo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756689; c=relaxed/simple; bh=hl8vBt0Vi70A9aiAc25RELfjYbmZC51c2Lvbp0hhK80=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=RA+dtSKCRH/lRuJ9xk86uNBIiSya79WalhxNJrBq9LxOYri4fgZZUtS0DX1enliwcWvzHAc8HfIR9y3MCpRUPihHnPehzGo8ZXov2XSTcXr66cXjvz0rW0+130TKAd6NXC6NMdqvdpS4V4oL7H/WdAhapWcotCZw9lqHYCn0ZgQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=fOmEU9hN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wrVExkU7; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fOmEU9hN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wrVExkU7" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALEgqBs018731; Fri, 21 Nov 2025 20:24:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=5kBNuTegwwaa6hhW0PBUMbbl4E1WjRwR4GRz3L/XCqE=; b= fOmEU9hNd4tIQCqxKbJfNVZTCMKCwqDLD4VXKbZ+JievL5YnqgSpUDNJBVAf5XRT RkKFAcNPKZWfIQBBZX/whhY2UPKr13XF56vA8k3z9zgOaQNUFToNo6o7TWor/H36 7nnzkuCwPRGIP/USY1cT9TJPi4fQJTC4y742TMWta1PC0fvKwPVcp/mn0BdYh2D8 3YWSdTwjS1kCU4DGrzeJCU89VaikCZMfDRK8TkunY1ZGuDx073M8eY9LG2G8jkNl cUSDzfAf0ARrihmpuSWJGgoABbPXpKEbjSh744gqjR8kwxcVHYTxfOb4am69c/Jo 68MF5iGhuU+85okw9YeUHg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aejbq4f4m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJY0Mq004449; Fri, 21 Nov 2025 20:24:10 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010023.outbound.protection.outlook.com [52.101.61.23]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4aefydufpv-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VnWzwvIIeiHJecF9QYOCAozb6cEs6l0muSK3DzFB2uz6sHnZKQ6jE+0rB/eX7u/HlrOk6Ai76alA7uEHxRgFSf0tcJZsGkn6Cx9o2HG+fKTs+iRoAZleKUxGGioapDoRVldk+ctdIXDIUQDG9CBU46PtcRYSXZs4ScTSdWabZz0Q7Aji1/Ha5k0gsmujtmowN3byH9hZl4cu8e23pLMUIusQn+Ekf2ufNBsW544fXK23lv4nX2mGjEfBfKExtLT3pmkc660XTeL/3FmJpxmkpWCWRFumefgKN31nKoV92tZ1X0C4f9FpKmIc3HTj0gaLwLGAGzjK8uzC7+hyDrzI/Q== 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=5kBNuTegwwaa6hhW0PBUMbbl4E1WjRwR4GRz3L/XCqE=; b=aTiyNuJMYAXd4kdwj4CaJQ1Lt47rvVr2EdETE9mt52p5MoBWni8Ucio16ivi/Q/bKbKpisfXWKB0Rf3g0lKW57lLyHyzo7iwt0ZtyPVrEEoi3/uw7+W7TWmoPNOp82Z96ZloH+CoaYmp3Dp5O+BNiVTXuv0weWBqOj/bnZnCII+dHJc9zbn1YV0cgxR00jhr/1luYE5XpcukTK/QuVg1gXDM8AYE7yuWu7NyXwJ//fCrdzwrNyVnQ92BB+hihT+onX/kxbcY34ShiahLKbhXO+rDI9jObk+jqTVGTHL17QiTMD8QPidKAE/JzXddb8BnZLSITdnA/OrbeF8PfJlnKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5kBNuTegwwaa6hhW0PBUMbbl4E1WjRwR4GRz3L/XCqE=; b=wrVExkU7E3zzATokS6c8G4sGEPGqfnbOYLahtGhwgIA0712CGtvqDsr5u57IVc0YMS6rCVPdj8REUW9y3U5x0IEDyu0LEaGvMHNlrCklni9AdAWng6qCf67qk2EMcKfh0850Tx2CHyP8k+PxE0tWZ1JtTXA5chKGnBRcT+GxZe4= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:24:05 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:24:04 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 5/7] x86/clear_page: Introduce clear_pages() Date: Fri, 21 Nov 2025 12:23:50 -0800 Message-Id: <20251121202352.494700-6-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0040.namprd04.prod.outlook.com (2603:10b6:303:6a::15) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 063efed5-c227-4909-e29f-08de293bea48 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bc6O4sGt/AeUdC1clGbB57iFvagQ90mZBzOPfEpKgiF/MlvUqm5KPdJYzCFM?= =?us-ascii?Q?jXgNKSsH4EVjq794Xaf/JIoQNf9dkIbcDRiafOgUExXe1ym5342iTbzcBNEC?= =?us-ascii?Q?OU14mnUtodiS4vmNV4caAWA561lAtGFCYkk/D45F4s0P5d28vuS8nhbgVWeh?= =?us-ascii?Q?+mg8RsGGzm3P75s/IhJeLHPVVkh9hB8yQmyUhEfPCX2x9j4OUphOl9zkWdVd?= =?us-ascii?Q?E19H0G0dKAj/PLyQHOxzWg9TY0HDjpPHrqFYEiGnnmNHGj0JOHxHcFNVlfU0?= =?us-ascii?Q?ynUxO1ZVaKlKhN7dbyVxd9/Cs7ZAo7xU7oMZzd/t+vqDEhvCvr83j/oKd37B?= =?us-ascii?Q?6E06pyXj1AGW1V8VyfEwGUbC4+kNpVbqoTqb/dqIMuew404F9VHApMPjgB+T?= =?us-ascii?Q?rPmWihYJs2T1A6jTduqAhr4T6hbGsO3NG9nvgeYV/zUYpKCTHPGNvM6cMxRy?= =?us-ascii?Q?wfLY68fmHxEzGGyAgV1OPm3vjKWG3xeTuDp6uQ8Xdc2yX/aPFwk/LgQ5EE7P?= =?us-ascii?Q?vqhnTTVjbobGzHA856dwVvEdscmwI6NzM55aCdE1z0X7BBKCprUS/OBvckJr?= =?us-ascii?Q?ovMlttpmJaLjJiMRQfDMPkCxAEUSAV+GwiHToxuuzBg2XKMGCufiCUr7EwIm?= =?us-ascii?Q?+H0b8brFVtSY/5gqNPCCwV9we5mT+zFRiCwouYAX6vfidAgzcomi5aRi4IIz?= =?us-ascii?Q?FpsO0hQ+7ze7V+a95AhM6BwZ+x1xdPXuL0a2RcK/bmK/daFiqkLXnBN82eWY?= =?us-ascii?Q?oY59gc35neCgnMzK0qpLJ6BYyzA864jk5ltTG4F4NFep+GRi8mYI269Q+As3?= =?us-ascii?Q?k8SeYhSYCathLpDAKR5eb9u9l9JoDK2PVxN0YOF30QPqCQY6rYolSfHBAycp?= =?us-ascii?Q?w/hTgJiBHx1DybPRC769hOXPIMY8aKineQ2WlsEfrtOI1AD6vGCaE8/kdjnz?= =?us-ascii?Q?Ad5PNmZbXIZRLZDIepmrictqw2+3XepwMkjBKQtytZmaIaPbAZnBvgA3x+LB?= =?us-ascii?Q?w9vNHzSCnhEFGPaHJRQKs8B20PzAya25K/K10g+YR0hdctXvkmpe5RZ9uHl2?= =?us-ascii?Q?9Yyi3ISxm2UUE6jU39K7w4Fy0eNauGTqXLQh9bzZgHv3tMvQGTZQ9Hxey0yu?= =?us-ascii?Q?ZmevfQfvyjsEiz3/r5xMtD5YFByYgmmAhAMuA/4bodTag3PIJUqNasKapBes?= =?us-ascii?Q?ucHE2oumiHTEbZ8sjD+wMrfu9PONQ8q/bN3MB9yxoXjxitYKwKDDbqQyuSUs?= =?us-ascii?Q?FYKK3QuG/sOd7n+vARY7Re3LsYAH50C3Wec1zT3VmfvT948k7AwJ8hNkHu2j?= =?us-ascii?Q?UdgoJVghcxgQo42kU33t2JJ2Jbie+LZtVj85laNvR4K+WZ2KFVrClfInxIQC?= =?us-ascii?Q?jPrIlOJiEIImgJ1CJ7hEKMZX7hLrJTO5WOcLL4yH78kWs4jpFY5sGQdU/BSc?= =?us-ascii?Q?cV4ZqVqEW/5lKOfA9IHErA8FQDF5c1Xv?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q156aL28ftuuKu/N33kqHYhi+Q1CfVe5+JScX6PXJgaoix0f880mjlwIxqUG?= =?us-ascii?Q?SO62QHsA5mwRZSxY730rXum2uCEVV67Js0qFAtiGqUWHAEY8UvQDNki4HLGq?= =?us-ascii?Q?Q3As/0xAxsdlyqvdc8ln9MYhdaYbE2uQnxiNyPEeNjHJy4YQ97Bq594WABGj?= =?us-ascii?Q?SlfUJJggu41lhZz7g/FX7N86EZRzv0qoXOpdcEFFwZB5xUiBL73R8Wf8/NTd?= =?us-ascii?Q?9oEiSN/7sPXT2vjdEHb3uFQm5y5u4bbNm2SUXMq4GPFcpzUNWhpWv60d4FkC?= =?us-ascii?Q?WI5MGt6USH+Co29qZ2Qsxj+gG8/RNWo2x8ULTaF100bk+yqAWyIBfXTldrNd?= =?us-ascii?Q?kdB3DDWn7FYx5Sp/OKzH/62sAnK8sOfD8xX4Rrm3m23wsEKikkOD90jOEwjB?= =?us-ascii?Q?2vlz7jE9bTbQ9ONagaSKWL6GTYjeIbn6yT9HhCovXvIT4kON/VWO3tl1jZN5?= =?us-ascii?Q?/zGsYbCw3MilNhZupvgmVcBwwslZOsDlT2chrzpkRD0EFKd3TOCt0XBuo9nS?= =?us-ascii?Q?R0MbwBbmyx742ayCGd9VnlgDNxLBDEipPtCsvTqajfwkhrWB3nb3+JyfdV3e?= =?us-ascii?Q?uaYdcFF2r6YizCsyj5GARBXKEMoVrwPLfzLuKMq5RE+qutVgw9JjgA+i3gKh?= =?us-ascii?Q?KJySSsjKrQyMnY+p441e2rI8oW/TU5LLaPhbfp6lXbDWfWsQ2mDs7xi2EN0U?= =?us-ascii?Q?j69RSfZaiYBS/jK3ztzwFmF+V21gbxsYx/pmXS5Uv+vxRdZHKVu9J2CJR4H6?= =?us-ascii?Q?RfJwqp74fSAfhLExbSLQmpp71hfI1VU1xYv0NzkhnrvxeEIop678dyW4f+Qw?= =?us-ascii?Q?R93jQAxQmXeSGk6eVOh+q2MOYgNG94Q9AzmC5ojgsAjBpphw9w7Z5In7CzqB?= =?us-ascii?Q?WpdEx3GFO7ZhjDv2Qi4QrJHND8SCL36Jrnt5k47BxoUcazgffW4U2qM8FB3r?= =?us-ascii?Q?uKujebpAa40Jr2Zk3MMfCWRQl/p1BI76t+FddL5OcqydDDlsIHFHxZ4IP/eF?= =?us-ascii?Q?T9TAKRmAv6MjQghMsVUlR/Kl+yJ7MjNxZfl8RP7possNfQFXStZ1dmhhi6Tv?= =?us-ascii?Q?FPK8Elv9hLy6o8fFgJZJHUFFqkRknU5SmFIwrfguDE+9FoFlS7whX6IZGTVa?= =?us-ascii?Q?k9XpkqBS+LGNmerPlj9Thu2w8oKa/lpKa7ggfcZ83ofGm9Y7CWlfF/UI/yDY?= =?us-ascii?Q?syTjMq/9/Eq595kiAMd1CzyxfTQvA3Z5fxgL1Y/HJLNHdPKZNvrmxv1IjkYW?= =?us-ascii?Q?Mp5g55H2fuykZbaSJRYCUGX1LfwB1RVOYFJ+FOLj56Ib80/6v29QCZrBYqdH?= =?us-ascii?Q?zD6rO9FktcbV9iKlAHqVieNt0yJyOVWTjuU12cmP+aFUInx+ysVilU2JEmGq?= =?us-ascii?Q?FrlDKVKWXrIW7VEsxagn59dBXAxGHyQ/rDiMIHW/CuhuC+/DQbqXIvEvBHoP?= =?us-ascii?Q?N0XpNmvMvPFHsDuHWK2aiwjgK49yFIkRzdZiOFWeAroxinpGOMepW7US78f0?= =?us-ascii?Q?nSsaU1BbctQlJVDaGsZrWn028PxwsfuyUb8qMOoJpenoP+/1EHs/cYZ7y34G?= =?us-ascii?Q?l93JGYCOezu9KZxeq8e0i3MZvlgSB3o/0KFdCJhflXaKu7NVHU7BF+I3YZOD?= =?us-ascii?Q?vA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: I4ha8tPQRuoBOmFy1OGUeh90bKGdTzvSihgkY3/TkAORk/UdIfjBuL1TP8hjFzayh/PxDlqV1C+JkheZGc0xye8o0Vzdy/5ptIpLuzol0Pz7zBVFj1gX9lnEVRcMg3cdjDSS3YIvQNma4bk22LO/WRwUia/53iYYrpb68ei5glqEqJlRHJnlakT/tkf/BD58nOXUGETZdFSXNkhqvPDvA6v2dK2C2de6a071NGKDgTSlTZv5g4jfNEnHKMIiGmaikWGLgALvfKkQJu+kXG/YlOOnujvJ4ktj3feolI86MPLIkWh4sHdxKKYB6DAA1XSuod2iDh0TfLl8N//ptn4uR9+/nFY0cHW4airO7fD9zWinXnaX9sqLX115R4+Sx9F3wVNEwQ8Ox6lNfpF4LObdZbTCZufDF1iQEUtXyYmx8BUOxgOJ/s0/uYgD1puXVpU7QwUyw+WcWk1L2X9mEvT0+n+QT9k0RyHHbpEU3YshS0YQ+OakMaY8Qmw1vvniBDShgMnofDs8d2iPeKVih3wdBcjob+mM/RGEjsDvL1AQYUKywaXOseMRnmoJq13+ghiyh7ifcTcBMkDIskXVMZxFm+wTrOXNx2/I8/SSxJTexR4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 063efed5-c227-4909-e29f-08de293bea48 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:24:04.4789 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JmvZC8pqS6Z5zKlIZcXerQioDxhEhcpKcUMaeMbFVMHvyvzCJuX709DfaJcFvqeOAM/0WabbAj4EQS5bt28BRXzR5poGRG5x6TZbRG5Ih5s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMSBTYWx0ZWRfX5OQ5QAKjX+K7 URYPOpWle+cRnAMq4BhZioo1iAgyxlFDaQIUXQOIX9ETRsnWPlI+omIN253QucsHeX7FL8pwQtc eTTbQ0JR7zvSA1e5I0eAwm0E6OrEbDYgxbxeiTuyB9VdqT3HqJzNhjIVCLR8yytAHkWfs2KIKiA STpANT0YzpCuEfvsBvHO2012vNvKcu1sHf096+1FMPTjrodN5IVttRXsc/rZOAnagrBGfDWUBIG rbbz+tA6bLx8eMKN4jJGUfrbKyoxvJhGqdiYaOSDxmf4VWCgh9/0nxoppvdsGfmIBBPy9KTP5KS dE+D+DjSQa9fukCVzNlk1UXX2y+gqT8MzUWiECjv/rUKrLjDIKRdBi5kRNSbIL67n1ynrdxTJkE a9qP+KxqnzA0oV5tqqhjmnVJNklQvw== X-Proofpoint-ORIG-GUID: h9Pr8_igJYZATtBkeYFL_fGDqysvEqde X-Proofpoint-GUID: h9Pr8_igJYZATtBkeYFL_fGDqysvEqde X-Authority-Analysis: v=2.4 cv=a+o9NESF c=1 sm=1 tr=0 ts=6920ca6a cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=iwF2bFzG8rEmHyYS_TsA:9 Content-Type: text/plain; charset="utf-8" Performance when clearing with string instructions (x86-64-stosq and similar) can vary significantly based on the chunk-size used. $ perf bench mem memset -k 4KB -s 4GB -f x86-64-stosq # Running 'mem/memset' benchmark: # function 'x86-64-stosq' (movsq-based memset() in arch/x86/lib/memset_64= .S) # Copying 4GB bytes ... 13.748208 GB/sec $ perf bench mem memset -k 2MB -s 4GB -f x86-64-stosq # Running 'mem/memset' benchmark: # function 'x86-64-stosq' (movsq-based memset() in # arch/x86/lib/memset_64.S) # Copying 4GB bytes ... 15.067900 GB/sec $ perf bench mem memset -k 1GB -s 4GB -f x86-64-stosq # Running 'mem/memset' benchmark: # function 'x86-64-stosq' (movsq-based memset() in arch/x86/lib/memset_64= .S) # Copying 4GB bytes ... 38.104311 GB/sec (Both on AMD Milan.) With a change in chunk-size from 4KB to 1GB, we see the performance go from 13.7 GB/sec to 38.1 GB/sec. For the chunk-size of 2MB the change isn't quite as drastic but it is worth adding a clear_page() variant that can handle contiguous page-extents. Signed-off-by: Ankur Arora Tested-by: Raghavendra K T --- Notes: - get rid of ARCH_PAGE_CONTIG_NR. Subsequent patches add this constant (which was relevant for cooperative preemption models) to common code. arch/x86/include/asm/page_64.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h index 6157bf46590e..043e57c4ad12 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -44,8 +44,9 @@ void __clear_pages_unrolled(void *page); KCFI_REFERENCE(__clear_pages_unrolled); =20 /** - * clear_page() - clear a page using a kernel virtual address. - * @addr: address of kernel page + * clear_pages() - clear a page range using a kernel virtual address. + * @addr: start address of kernel page range + * @npages: number of pages * * Switch between three implementations of page clearing based on CPU * capabilities: @@ -66,11 +67,11 @@ KCFI_REFERENCE(__clear_pages_unrolled); * * Does absolutely no exception handling. */ -static inline void clear_page(void *addr) +static inline void clear_pages(void *addr, unsigned int npages) { - u64 len =3D PAGE_SIZE; + u64 len =3D npages * PAGE_SIZE; /* - * Clean up KMSAN metadata for the page being cleared. The assembly call + * Clean up KMSAN metadata for the pages being cleared. The assembly call * below clobbers @addr, so we perform unpoisoning before it. */ kmsan_unpoison_memory(addr, len); @@ -81,6 +82,12 @@ static inline void clear_page(void *addr) : "a" (0) : "cc", "memory"); } +#define clear_pages clear_pages + +static inline void clear_page(void *addr) +{ + clear_pages(addr, 1); +} =20 void copy_page(void *to, void *from); KCFI_REFERENCE(copy_page); --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D50082D130B for ; Fri, 21 Nov 2025 20:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; cv=fail; b=PL2myP4DHyRKXT4CPZSkTvu5V7E0TTn42jsL7ogQpQWRRjY3YJVVv4MbUD3X3ADjUZhtUhKVwYZb8xwBZP3IrZKEcG8/Gqtuzt07mOwHnxxM/BrgaD893qKu7at/fp6xVzRkFku5BNA8+T9ax0KAoERgM7w+whscV1gCGlmZQXw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756690; c=relaxed/simple; bh=2Bo8di+cBHEmpa78zHZVrzLXctSkp4f56kyg8x2qHcg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=hFI1ni8CnxlhGbRtINP1dXhaR+TacgjaBwT9nF4KjltFJgXcIAIuzRbfUCDD9Lyu4x6dWlqx9GqpPgBTtTCENB2Iez8iESsaMAP7axuYYi5Hgw2Ne9szZJbwNK3rkwWVCbvk1K2bIeM+/v3iUtBd8SZxujkg1O+kxyj0kxVyC2s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=gDTlJTov; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=l4oXF5zl; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="gDTlJTov"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="l4oXF5zl" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALEgurN014587; Fri, 21 Nov 2025 20:24:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=0jv4Cxyq3eTFGZWfBo0+KjGguxVW6A7p8xDPAEhlcVU=; b= gDTlJTovh2dGPcBjf0vt2IcgydwDnxlwMUmTWkPa9byj9Q9WlnpjeVEt6gMbGumT YP4N3J4XhcHM7KaLgER4+U3z2v/hR8SsKus0H4OkWgYXaOC52FwNaaWG7uKcc6Hw lmBp0GmTatCdbvSSecC6mFmLl9YRi6wYiqsKbb3efcqNM4U8IIpFRp8U0CtrUEnL zztl0LBABRIBIA9If4/iDXpN4YnY+cFSVS5mxOWtqyaAni21MqD3CzjoxKMFi47q wjyYopCpiRM2KhGL3sG529BXh1W4pNBfeFBAI8gS1V586hMl0hmnwwSvTfV+f4px +SYk599COKcj2pomCvHhDA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aejbuv6gj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:13 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALIW30n002499; Fri, 21 Nov 2025 20:24:12 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011034.outbound.protection.outlook.com [52.101.62.34]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4aefye2tk0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C/nCf6LRqjNrdQ+u/bgMZ2jNujhPlLSZS6C/aOe98O59VVTBfO7AOZVr6WVjEFHWXBAyQ9v238rKfI3uK/beZWlrTsNVNm8ayODP+QScKtJIyfjeZCAcHIEvm2HGezMALvXTWaSQ6XkweM2jowc/RW7EcYAatBfhzlr9QCrM4xn+F8fFan7RPTVfsQL0BMoQdEUMC6Q6sC23H7EPnnJ15pVwaMZ+Cvx8GXaOxOUfwPWSqg6nErRy4j09tB3sYv2K//TwE1+BhYVUUu/xkQUu/b9yQmuZ19xBhHjhVQbozP+l0CaBpimXzt/6/m3QXzeA+eEtQRV7kpVQQhgJHPf6Bw== 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=0jv4Cxyq3eTFGZWfBo0+KjGguxVW6A7p8xDPAEhlcVU=; b=iolo7DzqAboFMa1PwykBHM4gjQny0sNmi3DdbfRW08M7AD3WXeN338kGAWXd15oxPGPxAi0bc92KXyFSVyQokOtOzWbRiivTXgcAII2y219VPM/arGFc1ZJh02x5UG0ose1MagL18y+zoxi7icJdGxko5pmZGLUX/V4ppmciv1mEAcN6k0YiTPxjLrWCXsOAPj3aPxonfrAZV1T1N26rRgq/LefbN9gH7UVPHmfdjcFMoslwz/GF7izkwbvSFg1YN7FkFrfWSM5xhTh/U0rAaAPmEGzm++h/QjrsqnXuambom/HHNisvqmgvflK8z+YHR++W4hoC/ZnssmPwQ42YTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0jv4Cxyq3eTFGZWfBo0+KjGguxVW6A7p8xDPAEhlcVU=; b=l4oXF5zlI2r4a43ufiWkIHvbkMl42zZQh7dJpnMFFcUsGZbgT6353Ve2ZVtxBztvazGDkVd1uj3Mro2YML+dVfCfdANPeAgXLOLWIgSkA7oJ8IuWJ50jeHUspmN/2DqV7WZorU+FpCzIwThOoOqkP9KlwFkmkKQsVN/AoDm/E/o= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by SA1PR10MB6470.namprd10.prod.outlook.com (2603:10b6:806:29f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 20:24:09 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:24:08 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 6/7] mm, folio_zero_user: support clearing page ranges Date: Fri, 21 Nov 2025 12:23:51 -0800 Message-Id: <20251121202352.494700-7-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0058.namprd04.prod.outlook.com (2603:10b6:303:6a::33) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|SA1PR10MB6470:EE_ X-MS-Office365-Filtering-Correlation-Id: 16f27778-02c9-458f-1b6b-08de293becd9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HT4kNQunqeybh8vRJ59fgELfPN/yfcXCo5cYyl5Vmg1rxEXufDIQzj3NdA8/?= =?us-ascii?Q?gGyTGcO7fqVpB4JmY3vXJq1Qvh67+HU2K15leQ9A7U5lvEQPlxs7x1pQgGge?= =?us-ascii?Q?v1HRyxyDgLS4pI+6u+EC8ZvYLinDlt61tBcOJB/pffHEYwaKN4uwAHRoZQPj?= =?us-ascii?Q?jnc+6JmmCJK/RN9U0c3V9odnpyJY+iPGYsQAjHLHnSGwEt6eHrTrpBUR+0Du?= =?us-ascii?Q?M+LJYJMyn1inqry3AS+dZ/f43Fr4NgsSM8hCjwRAFcpMX1R1L/mJEkqRZnfP?= =?us-ascii?Q?IDqAX5Wm/5QBvw8Ytv59b8gNsxvZdrrWhBiPZsDz2DS/j4HbrIEtKX3rGCfK?= =?us-ascii?Q?INumyswUPKCws58PXWW8KHH3/KvN9JaRNPZBNNNj7/24XjcPOnGaNjqjFbwS?= =?us-ascii?Q?Lk0i6mHyMLUAYMJFZMuwy+87i171yg39tnTBp5kqLw+kWYSRNtkhiJTYxX6f?= =?us-ascii?Q?slhd8UD7lY4nLclXfPHH215rIRrK+71PDrNUM2U1oqBIRCgcirRPPuIlGQIW?= =?us-ascii?Q?4QSFvwPMGShpg/Xgzrk2xfujaPmMml6EauspZ3y+4cOBgg4S4Vc5X59lIjrT?= =?us-ascii?Q?pOGAK383o+YrwurP2q3mS4VzmCDbky+Psx1ytVzNAHVXAr4Ssf+uFLqS6i5Z?= =?us-ascii?Q?nnlFPCTPtQxFoewM3zy+ytr8dI9f06XBzzFNixAOHeDGTIgzFC7VVhotR8Nl?= =?us-ascii?Q?pVwHSQo1LzHda5dW/ka/NxyLOXIevomwzybJJSg1NJBFnNSdFgymPsrw3HbA?= =?us-ascii?Q?ljzYdUE8SdjrZZH86qAmIft3xEwEyyzF1Hw03Zxw6DEiZiryM4B2lsSxhBi4?= =?us-ascii?Q?L/BA9/HxSMFVyHqDqyhUAlagJzcayi+xH7rfi2yZwOChwIfvlGTZs0izqHIL?= =?us-ascii?Q?mLhMYuBxMsbHffrHrOP8iXyhVFx1GmLx5GkfQwAADboVikXoqgTGkZJtz6s5?= =?us-ascii?Q?lwBGhPKVdXlpP6uq/gs0010bSMCOhDGPLUQbkK0yV5MaNFavkyl7gpBmWq2b?= =?us-ascii?Q?DzthJnP49y4928inwB0dwCqBNMTFCAjadn7aXPdGzu09011zU97IyCTsa9/L?= =?us-ascii?Q?T75YQ65y21ErjDr0JINLQTbXxYjGVrsd+x7Fns8QiXzZ0z/dKQzBcL6O2ygh?= =?us-ascii?Q?35WyiIG0dBqpzoEGHda7BCVRcFVecEWb0j971C/WdZouzf2FfCjLBxKRcyFc?= =?us-ascii?Q?MMUBo49L/0K7iHM0UB3Z5J/1KLYsBkizb8Z0WoeOQUzQIK3m5SVCW+0BHsVM?= =?us-ascii?Q?DfSp1IaT+L25Arbw4pVe78s5xFFYSLSe5mDk9J2VzdxQLI338NY7xH938QnM?= =?us-ascii?Q?RvS+ioy5fDFCChfTz1TBR6/wYt8+UDwTbEj3+PYJ6317ZWn6vZlgbt1QE33g?= =?us-ascii?Q?DPqgpNVVS6WpghUfC9YUbq4c3fhgy6TN6IbACh1qdwrZqClnDhaGamFhqTLr?= =?us-ascii?Q?sDZmk0yZK/1y1CT5JRr2yZOqBbuLzPxe?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hoJ0WIhU9mqHOepdz3hUrBHSZvXwIxZ85JkHDU//Xz/aGgYz9Ozlr1f5lszc?= =?us-ascii?Q?pzWys4UN0pJGlHyfNvA558WIbVStdEZ2bODJt8AHaI1a1oRrPEVX9nb3uJwZ?= =?us-ascii?Q?4GgFDxuWnM8QY4O13zcZAIiUPfl/AFlV+RNz97xqrzFenxVKJgNcU6H+tteo?= =?us-ascii?Q?ILDU/xUwfFmp8N7LPfuq1ctsLh8du7wi4UlpqRSinUs2zd4ytbwfcAznI0do?= =?us-ascii?Q?5S6ixaXjfXFngezV3laHflD0T3jvBiVo5jMJv5hdUuXoQD0p8X0WaaVV5l4g?= =?us-ascii?Q?P4cqD5JzB3byJ0jyPbiBKuhr4SvqLSKOfg8B42gZNP6h2c5R8fcb+pePhqxf?= =?us-ascii?Q?V/U1b7r/Wk38oKsFlu+rnWq3JXZLueosWeowyfePftZG3IRnNZCWVvcjd4Tk?= =?us-ascii?Q?dMIFKw22qJxqdPbcmTULskcT0oRkviy8lAqVji3a0zrOOYFXdkB4BYEmcb5S?= =?us-ascii?Q?S1zAr3YsZa+E4+128pu/ptmgXommyf6dl1RjJnewyyWPekmOkk5H9JvcXS9i?= =?us-ascii?Q?ZpCNt1m4tqtBSDBfoDpM2DBbIyah/CzFKVaaQeVDlxNj3r87wRNhIoEgHDLa?= =?us-ascii?Q?WeLzh5OxptrBV7zDkm6HaZ053iz9gbpEcmLPFF59njbt2asHqIUJpWmauZru?= =?us-ascii?Q?ytHPflvhFrQkpAwcOBp/UiwKRiqJPj0vMw2GEGRwrTeTKaBp7qVpnGuSBEKp?= =?us-ascii?Q?ABJvayQXnIAxr5S5/zp1iIfEs/VdxBWsKESjbG/os7llhghDdUbjE8ouCXqd?= =?us-ascii?Q?TsXmPubRabQC+9GUxdXdIb98B/dB+LcIaMl34QKvMwq0R9nsz4R+raZ2Dhfq?= =?us-ascii?Q?+y3zqUiM4OetNHlcNKYRXRoQfofc3T4Sj6yMgGN9XXpc+bhhruBYoiP+zHDp?= =?us-ascii?Q?jDBnyKbPcnOXlmvQTWKolunJ0N9NtV60YES0xw2bMzZ3D49Q722aXEmFS2Rg?= =?us-ascii?Q?hWaRH34hk7pUk0sFW7u6zKXBGtToS8JEtVeGmZXNZRviun/xtancKnqMnIo/?= =?us-ascii?Q?VbcvprvGXerMStzkz/uB/IpWIhfsnwhwWixSJBlmuDBgi3V0BMYTsDDbDkPc?= =?us-ascii?Q?ET0YatoiGiWB9yIGIZ7xRJg/pHAywrV5j7PXpvVkvgbAGhZksXsstL8ugPA1?= =?us-ascii?Q?oJSkq310ofrYlMwwBlBnLgBKibK4h5LoIJ7m6KDZUvHnU+SLjdfIrVM/PoeS?= =?us-ascii?Q?5/9FmLSy24DyfhacFaYdRwbDDIp/3/68AbQG09D+kEeEVKMdIummO6sNTFO2?= =?us-ascii?Q?FAwyXhllrZ3F0H+iOMp2CfAdk45Lx6igtq4bfr3lt+JnWI5kTuNWKnjgSbXL?= =?us-ascii?Q?qGAdg+N9qw11ZpoJSlkSBIJnG/n0mIlzZ6AmN0E+YzYrWityPZbWTcvdKH0J?= =?us-ascii?Q?pZ2nXhhZBKvp9PhoIJD/gUfM26SiFomdVeb75WQOkIfQydmSFK8BS9BJQd4/?= =?us-ascii?Q?AkDc9FRG/Qj2ODXVLXFsoKyNf9KRDVPMnNB+Runz4NmyWqVMPehviUkH3wa6?= =?us-ascii?Q?a45VxqEEPoCLfbxinEzZ+rPnesep3Vq1SZytQfFqL50+4W+vUaSiUaT7GCfV?= =?us-ascii?Q?BlonRCVh1T+laTP2dG4JWpA22tmedsPkm1fK7dXwfZxQ79TTj5rxj6DUQfim?= =?us-ascii?Q?Dg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: cUi5GT6CBBG3Vhepewe4xVSCqOABfRBmEjVvzeLkEkdiHPfjikvPjU5wV/noxGTTy1HFeFIQbdln4fhiExGCarWcHp/1kRTzc7KuSpZIOwAZ43AaPa0EaucpkVMTyOZjxLKMS3oVV+32PIEwyT6I1fTR6DGqJBD7BkKPYWWrAWeqhrxBu4d5iZPMZGFn7UALUmdiCEsmwO0XuMtiTo+IWjmA6am5LC3pcQiuxGg/AmO4ZjxQ81WFB2VkmItD5TOYgW0LgeWY30wdbGbeMfmyuLPQLNMChr98LXKqcgj7IOgkb3Zc9RHDHfhoBfzujiunGBRcjDQNSTIypaGOevDIG2eJC440rqVfaFZx5LFIa+SfVNlIQsoupVK+C84pxSWUpnPsY38CnFLAizPdPuXyyCFT5yiuGdvJj7NEFLRhMAvNBUpYcGwCVVWkaTQzITzc1+K6RTQ+eLQX3iG+xxijTxr1Xkxrm6eLNdf+4eN4fG7hENC4OgxQl2/t9xYur/Qck587SRXRpbjgY+ViXJ4R2agHGKFdytBQzItQkejanElh9hfonzth9TSJ0FyvZWYSGulQdy8KL3gLArarCnvuHM6vIGKHNHv/7SC6xV6WHc8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16f27778-02c9-458f-1b6b-08de293becd9 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:24:08.8074 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oDADFWN4U1qtySV3VM/LoAFgxHlZc5vWQzBACapZnCr3jecb+ALyZJEdtpCiX6y8ncM9ZFqaa1+DXAtsnSdPk7CWjYK1uXbtTs+q6YuN9fI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAzMiBTYWx0ZWRfX17I1ff8jPppY HTzo07luRj4JawyjaOD1qIqogPiQKtQuvBpOYLoKDTOwx277dytg+FD+eQqzTAjoKJ6QWQCw3Nd pPONIJ07LOuACsh5Ydhgea7T3WzKBykZB7Kn42wMCsB0oDIARUxox+yE98DoP/eU31SjYOdj8sg CI4cbajJ+qRqoojD3ZBWi3OOZdtygjt0GBg7jzBdQMGe7tqJUVFdE+kp2MEhNE/YEiGydGuMWNe StAA9paVTc4AGsQVyo8Stus+225RQmMmkPfR1pbPAAXof1iG1SgL3rOUrie+BocfitfG+oRTkWz 6+NmUKHlty0Ydcl1yl+qwGi4aIuVgpqSuvIp9D3JIO1UATqrYzcnN5VY9cGJgm3/ySlXyevZWWG qEdmh7pTg+Av5oH5FXsXyQ4E+TgsFw== X-Proofpoint-GUID: 76JV7B0pcwhJbhHP6JKGa__a4tYlTI9B X-Proofpoint-ORIG-GUID: 76JV7B0pcwhJbhHP6JKGa__a4tYlTI9B X-Authority-Analysis: v=2.4 cv=Rdydyltv c=1 sm=1 tr=0 ts=6920ca6d b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=yF6BjjoBLw8LOi3scPwA:9 Content-Type: text/plain; charset="utf-8" Clear contiguous page ranges in folio_zero_user() instead of clearing a single page at a time. Exposing larger ranges enables extent based processor optimizations. However, because the underlying clearing primitives do not, or might not be able to check to call cond_resched() to check if preemption is required, limit the worst case preemption latency by doing the clearing in no more than PROCESS_PAGES_NON_PREEMPT_BATCH units. For architectures that define clear_pages(), we assume that the clearing is fast and define PROCESS_PAGES_NON_PREEMPT_BATCH as 8MB worth of pages. This should be large enough to allow the processor to optimize the operation and yet small enough that we see reasonable preemption latency for when this optimization is not possible (ex. slow microarchitectures, memory bandwidth saturation.) Architectures that don't define clear_pages() will continue to use the base value (single page). And, preemptible models don't need invocations of cond_resched() so don't care about the batch size. The resultant performance depends on the kinds of optimizations available to the CPU for the region size being cleared. Two classes of optimizations: - clearing iteration costs are amortized over a range larger than a single page. - cacheline allocation elision (seen on AMD Zen models). Testing a demand fault workload shows an improved baseline from the first optimization and a larger improvement when the region being cleared is large enough for the second optimization. AMD Milan (EPYC 7J13, boost=3D0, region=3D64GB on the local NUMA node): $ perf bench mem mmap -p $pg-sz -f demand -s 64GB -l 5 page-at-a-time contiguous clearing change (GB/s +- %stdev) (GB/s +- %stdev) pg-sz=3D2MB 12.92 +- 2.55% 17.03 +- 0.70% + 31.8% = preempt=3D* pg-sz=3D1GB 17.14 +- 2.27% 18.04 +- 1.05% + 5.2% = preempt=3Dnone|voluntary pg-sz=3D1GB 17.26 +- 1.24% 42.17 +- 4.21% [#] +144.3% = preempt=3Dfull|lazy [#] Notice that we perform much better with preempt=3Dfull|lazy. As mentioned above, preemptible models not needing explicit invocations of cond_resched() allows us to clear the full extent (1GB) in a single unit. In comparison the maximum extent used for preempt=3Dnone|voluntary is PROCESS_PAGES_NON_PREEMPT_BATCH (8MB). The larger extent allows the processor to elide cacheline allocation (on Milan the threshold is LLC-size=3D32MB.)=20 Also as mentioned earlier, the baseline improvement is not specific to AMD Zen platforms. Intel Icelakex (pg-sz=3D2MB|1GB) sees a similar improvement as the Milan pg-sz=3D2MB workload above (~30%). Signed-off-by: Ankur Arora Reviewed-by: Raghavendra K T Tested-by: Raghavendra K T --- Notes: - Define PROCESS_PAGES_NON_PREEMPT_BATCH in common code (instead of inheriting ARCH_PAGE_CONTIG_NR.) - Also document this in much greater detail as clearing pages needing a a constant dependent on the preemption model is facially quite odd. - Minor loop reorganization in clear_contig_highpages(). include/linux/mm.h | 35 +++++++++++++++++++++++++++++++++++ mm/memory.c | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 60 insertions(+), 21 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index c397ee2f6dd5..ac20d2022cdf 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3889,6 +3889,15 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, * mapped to user space. * * Does absolutely no exception handling. + * + * Note that even though the clearing operation is preemptible, clear_page= s() + * does not (and on architectures where it reduces to a few long-running + * but preemptible instructions, might not be able to) call cond_resched() + * to check if rescheduling is required. + * + * Running under preemptible models this is not a problem. Under cooperati= vely + * scheduled preemption models, however, the caller is expected to limit + * @npages to no more than PROCESS_PAGES_NON_PREEMPT_BATCH. */ static inline void clear_pages(void *addr, unsigned int npages) { @@ -3899,6 +3908,32 @@ static inline void clear_pages(void *addr, unsigned = int npages) } #endif =20 +#ifndef PROCESS_PAGES_NON_PREEMPT_BATCH +#ifdef clear_pages +/* + * The architecture defines clear_pages(), and we assume that it is + * generally "fast". So choose a batch size large enough to allow the proc= essor + * headroom for optimizing the operation and yet small enough that we see + * reasonable preemption latency for when this optimization is not possible + * (ex. slow microarchitectures, memory bandwidth saturation.) + * + * With a value of 8MB and assuming a memory bandwidth of ~10GBps, this sh= ould + * result in worst case preemption latency of around 1ms when clearing pag= es. + * + * (See comment above clear_pages() for why preemption latency is a concern + * here.) + */ +#define PROCESS_PAGES_NON_PREEMPT_BATCH (8 << (20 - PAGE_SHIFT)) +#else /* !clear_pages */ +/* + * The architecture does not provide a clear_pages() implementation. Assume + * that clear_page() -- which clear_pages() will fallback to -- is relativ= ely + * slow and choose a small value for PROCESS_PAGES_NON_PREEMPT_BATCH. + */ +#define PROCESS_PAGES_NON_PREEMPT_BATCH 1 +#endif +#endif + #ifndef clear_user_page /** * clear_user_page() - clear a page to be mapped to user space diff --git a/mm/memory.c b/mm/memory.c index b59ae7ce42eb..5e78af316647 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7162,40 +7162,44 @@ static inline int process_huge_page( return 0; } =20 -static void clear_gigantic_page(struct folio *folio, unsigned long addr_hi= nt, - unsigned int nr_pages) +static void clear_contig_highpages(struct page *page, unsigned long addr, + unsigned int npages) { - unsigned long addr =3D ALIGN_DOWN(addr_hint, folio_size(folio)); - int i; + unsigned int i, count, unit; =20 - might_sleep(); - for (i =3D 0; i < nr_pages; i++) { + /* + * When clearing we want to operate on the largest extent possible since + * that allows for extent based architecture specific optimizations. + * + * However, since the clearing interfaces (clear_user_highpages(), + * clear_user_pages(), clear_pages()), do not call cond_resched(), we + * limit the batch size when running under non-preemptible scheduling + * models. + */ + unit =3D preempt_model_preemptible() ? npages : PROCESS_PAGES_NON_PREEMPT= _BATCH; + + for (i =3D 0; i < npages; i +=3D count) { cond_resched(); - clear_user_highpage(folio_page(folio, i), addr + i * PAGE_SIZE); + + count =3D min(unit, npages - i); + clear_user_highpages(page + i, + addr + i * PAGE_SIZE, count); } } =20 -static int clear_subpage(unsigned long addr, int idx, void *arg) -{ - struct folio *folio =3D arg; - - clear_user_highpage(folio_page(folio, idx), addr); - return 0; -} - /** * folio_zero_user - Zero a folio which will be mapped to userspace. * @folio: The folio to zero. - * @addr_hint: The address will be accessed or the base address if uncelar. + * @addr_hint: The address accessed by the user or the base address. + * + * Uses architectural support to clear page ranges. */ void folio_zero_user(struct folio *folio, unsigned long addr_hint) { - unsigned int nr_pages =3D folio_nr_pages(folio); + unsigned long base_addr =3D ALIGN_DOWN(addr_hint, folio_size(folio)); =20 - if (unlikely(nr_pages > MAX_ORDER_NR_PAGES)) - clear_gigantic_page(folio, addr_hint, nr_pages); - else - process_huge_page(addr_hint, nr_pages, clear_subpage, folio); + clear_contig_highpages(folio_page(folio, 0), + base_addr, folio_nr_pages(folio)); } =20 static int copy_user_gigantic_page(struct folio *dst, struct folio *src, --=20 2.31.1 From nobody Tue Dec 2 01:04:45 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A92F03054DF for ; Fri, 21 Nov 2025 20:24:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756692; cv=fail; b=DulrLKx7/YtFGcG5koUUSDr4z/KXHILKJrtvSZyjtH36nsKPfeCyLp9pCyMlE/z3DCrjEIBE33KMtIVtdt1IUrIbVEAa3YcDMZpG6SweV+dXmmxNNUnlyfxiWBd1K9fxYuzyhZdTRPaMQSoHKWk7+usKTTGt1FHqXyssyDxhUIU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763756692; c=relaxed/simple; bh=PGhpzLhIK8Keg+/LjaOuU1AcN1utQKUkIUYuFCYpnT0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=kkkYRZyHPljHn8B87eB1DDKJ7klj7PfJSdeYpCLm0gIITjzHv/EYMD7XXrjIZoLAkskM6Z7d4Z0ifcl+yeatd3DNGqSGa7qaHCJHYG6KuKpvj/71cqvj/WsMdyeYKb2A0wGH44eFMtvoLjqzQkFguRbtN8NTWvlesSFrafw86AY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=j6roCcV/; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=VsZNV+Wq; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="j6roCcV/"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="VsZNV+Wq" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALKJpxM008282; Fri, 21 Nov 2025 20:24:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=5A4XZVvlhypTkioS7UOXOIryE5lsxiWEFTa+OltK3vA=; b= j6roCcV/O7XVCLD4b9B7owIeUnu4YnV+lzr+2Pw+js1DA/BHfUR+ALqwglRo1B2d GzPpQdv39DVP7iouU6Hfosz+9rU4YyownzYFeQ2J4q6uOd9/juI6ZGTDjb0RsmtV iJy5paj62hUOB6ci05dhPm/H7nqGcqE8AeaeCh2SfFDwctzkUe9CBzdSRUESCsmD qR8+P8NNjW8IF6lZ7wP3Edosf3HfIe3uYJtldM7jvjNZPceS2Kzxq7dEJtmjzvuz EjpAX7DDExmltpW3Ow6MAANb+4BtPx93+vqvvTB32pyweha5/mGfbLlph4GADdbg 0imAELmBg843TtNn13sWWQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4aj5dtu7ub-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:15 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5ALJcl0Z004333; Fri, 21 Nov 2025 20:24:14 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012004.outbound.protection.outlook.com [40.107.209.4]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4aefydufsc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Nov 2025 20:24:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wKNJvMuVLBJunSAIT6gPmEN9TSZdG0mqEIkGKcFGYHPLbrsyhGZ+8MLh8h+1fCo2pqb13a0haVwN0zgaDS+hfZXPgQh9RA8cJgJJSXvbl3ugw9nuC+3bh0orJbtbl1obcJ4FDfn6blAEhRFxFWjM1GSjlTWOQuM2cjv2KW0mNddQfIOgiqHd8AvasU6P+yJ9RyzKIEkWqVTEYwQv4kGDrBmzREliTCiEbnBpmziihc/J+opetvxIjmAkfabo9dPQBTpN2qUtkpyR+Gxf2BbA8A13ANk18Ctz9qD2KV1Jqz/pFvEe5/AMdYR+b75AB/SF3SIhMdWzJzUZ+oS6XFwQqQ== 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=5A4XZVvlhypTkioS7UOXOIryE5lsxiWEFTa+OltK3vA=; b=FqYr2s70fILEQS45SONKE8JuWYfGOsXYAcoURCZMyzPFmCpaJOTpnasuDDyy4HT2leVa127GGanHMqh9F8WcrU9V9YMi+n7i1D2QTtnPFG3rluUUmaGaNL7Ee3gL7uF3s2elHCV5OknBPfpLqqgvvTwk0sOdxQXZbtmeBkNO73xwTjJX+BwgfHHAMBhnVPYb/BsHfqx5mvUhcDbGdkAkssaaTBgLoVNmP4bftJiBIp82eaIGhInjCZPeCeuUJnZaZRmPBUqlFZkjFqDyrQLAHXv6Ia+zKUFKETF94K6r+dWrwWhM3ggDyeYgYuwox5btaOceC6hF8P+NO8x2qwKczQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5A4XZVvlhypTkioS7UOXOIryE5lsxiWEFTa+OltK3vA=; b=VsZNV+Wq/fjd7kYZyS0TmZtQnZJBoB//R8rVlsok1E9JCwZSVHznzTgC8KJRjjCKkP5V3/1JT29fB5iwM2AtaVY+K8lYmNPF56IGbAm0+buo28uAAS3DstmiycmNlRGVobJBo7+02zq5kXr48l27hh2mC39darqYBkdZ/ILIeKo= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM4PR10MB7451.namprd10.prod.outlook.com (2603:10b6:8:18e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.11; Fri, 21 Nov 2025 20:24:10 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::3c92:21f3:96a:b574%4]) with mapi id 15.20.9320.021; Fri, 21 Nov 2025 20:24:10 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v9 7/7] mm: folio_zero_user: cache neighbouring pages Date: Fri, 21 Nov 2025 12:23:52 -0800 Message-Id: <20251121202352.494700-8-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251121202352.494700-1-ankur.a.arora@oracle.com> References: <20251121202352.494700-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR02CA0020.namprd02.prod.outlook.com (2603:10b6:303:16d::26) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|DM4PR10MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: 62248834-f5ee-4de2-457a-08de293bedb3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?y9MSfvHhJdMEqpUFSaBOmafHBK12mmQk+pG/TbESQCbVF8NiFf4yEC5kJ4AK?= =?us-ascii?Q?KhfTOGM0Nl4yN3YkoC6YKGJmcBzQTl4vb7ra2T//qfNBWHu4QLiVemma1hMI?= =?us-ascii?Q?wV/3jbwjFVj7jm/rl4QIJXdC7DYKb3dlcsFCTv7KWB4GDI/PnH0aajDCM1Yi?= =?us-ascii?Q?gGFTg0iOf27v/1ZEuGFEj98laXhr6MWUiTtV4dnlfyxbX09fY4avfRBBBrP1?= =?us-ascii?Q?CZaCql0RyxwypsY1TTqpO74dkLW5hIGeR78qLqfW72ydLQhSsVBVg8tKToVu?= =?us-ascii?Q?uNwemr/rNchtbQyN7a6zDyVAH2lW4SkPpBtk/g6Jl5mmf5lY87aGnCTJE9X2?= =?us-ascii?Q?yI9cJqm2INr5RtJNy9v2gXd/0gpM8mdtyCfT3a3qrFHKLzn+UeK4gbTHZ99C?= =?us-ascii?Q?pr0Mhqq4liwJn/V1I0dzZT3CwHz4kr8jlxW8LmJi55uODClMUuG3oT2BNcQU?= =?us-ascii?Q?Athw4or1iWoMcdUTQQUzOILq84VdtTo1q9I2yqsMzvipoOm9M2BO1LoGlj9x?= =?us-ascii?Q?5cwj1QlnhKkmEyO8o+gkgTpYrYUEd0+LOlR8YAeFWoQkkZnpJAwyJQqL+4bY?= =?us-ascii?Q?9ZjK8uKJqBS9pF45qoNHCVMMSZcMtC5tiSCq4HQbqSWDfvn56Hjqp0n6B0L7?= =?us-ascii?Q?QFxXF3aSO8dsTEThf1ZFQKpNgS6H4S1Sbqt135G2amatbQ7z70xAoAYcIAjN?= =?us-ascii?Q?nDls8jBN4zqZIT4Wn7xneuJdvP6bZGwl9sGl+GV/7vVtyS0/Yei1XcMfdkWg?= =?us-ascii?Q?CMOWhZDa/fOSeL8n9bS2byluOtQfiTQ6i5xnuTdXnRd1gcsGymdrNKLy1DAm?= =?us-ascii?Q?1yI3SX1r6mDp6p2L8dbmFmVE2lzaaEqos9JkhUgBHl0J2xG4CI1o2x57bSL4?= =?us-ascii?Q?xPOnCQ0wWjcTk2xDrNXn4XaHLnD5x7Djh6cvKLk0d+UOqhQQ+qvas9tt7Nuo?= =?us-ascii?Q?Mk8k6wzp/UxIOKep/LuGXdPckTlLQL6RBCd91wr/9jDpZlXt/pgXCRf0I1a9?= =?us-ascii?Q?Ib/kBphMXLcn58/dEYOg0N/pJpwB8iMuv9mtazhLiVAdr71KJ5xJPqrv/Ae7?= =?us-ascii?Q?GPMO4Ck64UFbY+rMI8xJvXARpN9FX2QYtuvcHOFYYawtZ+w0RADegjnVuMbU?= =?us-ascii?Q?1PYnJQAUKCR6//oqZT/q88ztaYsPzYGHEDc+n4HpRJKJCBCSVFVA8Hxatx/N?= =?us-ascii?Q?nx+HhYAB/lO7MWpc2p3feC86x8tO+YQwg3xmjn7xtyR34424etSZWE7avGhi?= =?us-ascii?Q?u1W6tX8u+m4RfUvTRgrtNqySGFLM8JHCHKisQxTSYR6NyuuxjmO/GtQkj6ir?= =?us-ascii?Q?r2RZcwjOpUlTaV5LwsoLH+M6HLI1dd5rLmHfhXdDachZIf5CizWt0jJR91FI?= =?us-ascii?Q?ddXiFgOeHJAgIp7Y9EWa8/58HRtH2XdJPlFP22uAaLA7CjTXNGOVHcLZpHy9?= =?us-ascii?Q?wFbVum5+EM2tArYj4yQ8O793e01ztYRH?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?na5JntkBIocFws7oWeU2BN/986EaHZqFoy33Tx2XarkTf/eRg6EgfImkCeCk?= =?us-ascii?Q?cqd1RPdikXuONRUwgTZTS/fhomvTzKgA/vIKFMIUzHQVOeypTprvG/qeFCrZ?= =?us-ascii?Q?brgt3TAoPtwVGsqEZMtNB5HMjc/KWtSU9gYfUz+/ryl46s4O8GxIOQ/ncCgb?= =?us-ascii?Q?7X/3o71xjDv4FgUNpAbTBPjcVtVkX50W+ZCYiiOi3lldQ/p4dxNIlzg0qXOy?= =?us-ascii?Q?F/RHAF0JBLX04vzFDCOKlJy9yrPQs7OPcNLlMFB3eWEgZcn8Ihwz5dqaEc6s?= =?us-ascii?Q?XYAEDfwzeJVFFIJ399eFgKXOD2dz70NHWJNocB9Xo3go5g6XdtG4+PNQ6RL0?= =?us-ascii?Q?BGRR1JZc+FafZsbkSGpphPUX/G/OXiS/RSf9kf3T6CFrZu1bP1mUR3vtMRL0?= =?us-ascii?Q?nKwdYdzgG7/4c21JRBIUfpztiwSgfzFonk6ozAMLOCNJAVbRScXctE3bTjPx?= =?us-ascii?Q?tSTkR69jjnTThDQ3VQsLLkxZpsvj0nZAS9UiP24IARZS+uA59hdwQahyrQ9Q?= =?us-ascii?Q?ZWTf5H7m7mIBifLWJyXpw9CkIAJ85r78+LCM+QlmXB4vNo/bfF/5OsjmrGrC?= =?us-ascii?Q?TffTQ16X3G1Wchkr6S46MnGpUjr0jHZ7p912EvTSWIVOwDENsX8LqPj/G+XI?= =?us-ascii?Q?uctOhkMK+sKAZjpkEoOX6VGNUwqvQg/PFLECdgbV1mMGr+zBEiSI5eZsHr4D?= =?us-ascii?Q?SHxzCLdMr5hXIiE95ygBNZn1EcZ4wYLw4Q8lCdnKLnWCglNy2pLer+W5Ggrw?= =?us-ascii?Q?/0QfanGhBreynf/YM9XNFvM8/v9iTuZjo2J8h80qNQ3q9mPlueD+0HynzQOY?= =?us-ascii?Q?5L7Bx7Ym8U/4VXTrPv4bz7YIf6oLA9PNX3D5xHKjf3+z3l2tVEdydQ4jM1vO?= =?us-ascii?Q?0FlogIyo8I8F1HJLaNn8DJTGDTJ3cEKCw4iOfoXRvQqs1zYswOuFiBB4XB3/?= =?us-ascii?Q?MYuXxbvR5Usp00dEgGsEp8+KNp2Lr9+Xb2bHLZlye9fUsEvZ7ikJgdkYLr1L?= =?us-ascii?Q?u+u+hk4ORywPgqNw7LRxemoI40kLCq/4DKaOyTnp5FQA7rkORIZ/QzhSm0nf?= =?us-ascii?Q?USvYKkDVQTHKxc7CVAF+Vb+fIyGtH7b8QGiruYtd6ecZDB6WU7XuYBJMWXCV?= =?us-ascii?Q?l9otVPN7jLANkFUp/dzDFoDMML4Vmxx9uoNnXC3UpDKm+M/ByDvQRzItyWeG?= =?us-ascii?Q?KNV687hkmsG1zrXlT8zfBtzwrXLY2BgRn7dPPrvcFZMEQkFH5jZ0K3GAm2KE?= =?us-ascii?Q?tIvlIys8HSxw9eOr4bm9T5gPIQUERoPztknd2j3RaP4/VX8e5Ul2muttGQLA?= =?us-ascii?Q?8b3rIQW2T4k36xwHqslxJzKuJi7CuVEn2mqyf1UZ9akMCKA4YsBQ4/Q2eWw4?= =?us-ascii?Q?1fuBVtVaVKmvLYSl8dp9XKiW0hVHnvfMs1Ch0+owBc48vE9nXEVb6c0+4iV1?= =?us-ascii?Q?9fDIgPeXyeY4+hQJoGUgeppIW/YwH9KgK8dfq697i0eosPrJ8S4NecPQ4jZT?= =?us-ascii?Q?bRiDzSfw6cRbk+vyV5McSsy6Jw6rAfkn31fQIaSuYL/HVdrMG+l07nvdvMma?= =?us-ascii?Q?7nt4Rbjn98bgpoQ8iNiqSQerd6r0HrCpdym2ApGkdTKRZ3A7Qj2QeXAVWOSF?= =?us-ascii?Q?bw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: sWYIxpnKQntqRV5ciIBEREkPxmU4AN+5+AnDSTKY9aElsog9qfiJtohGzMS0ZVgzwqt9w8V4cxvrM62m7F4QVv12yAkedMC9zUAMc4Je0Ts1/d3CyNE7DYnZoeui0o/lIdhZV6QA0w543spPJp4MRHxs67b0tvKCXmQuu/p5XbvhaqoF0RdmZBs9QrbKWBt6LGsVWcaRtD9eZHcWkQ5oilwA4tTqb+RlDfSMHlyWmiiZcDWQoD2k4WuepS6amDT7J/IFn+1qFJNeNAf6vYk2wClkhMASvZnoGyY5O66fCDG3SdSisDN1uaT6rcWGBVTcjPA4U0zWIpvoe2pyDrIC7yOpDlXd5zbbw45DN68yVaAggF83W44eKmLL53V8W6dZ1tXlR6O2qLMaaNvTSImd20z6ANB/oeuvz2pFqCgTuNCyqNtOp3lFlCUa+2hjEmzEBouRI54OVvflr7XklFZCWJc5libA/nXs4sPt3r+QVixdl+l6lVD5+Hvfkx0uB0HKWhgMqsg9oe5cbih4tTd2SsWhZ+oZga++d5GBPI9sTXtp2PxMkfwmljeYDH3zRuMRfp4I0XnJwwhK/qFurKXZBb/nfKyxYQT1Ajflw5GTn14= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62248834-f5ee-4de2-457a-08de293bedb3 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 20:24:10.2723 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IGNaiP+NG3IdbWJ5C06GiXJpc08KayA05sLxX3nIdTxwP9ll8Xws72k0jsB3Z7rR6ACCM9a9XQc2XPD6gmNxzfP0VM3FHQUSn7JIuh+7mrI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB7451 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-21_06,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2511210155 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIwMDA5OSBTYWx0ZWRfX+eCVFNg9Lycb rnRXRDFwddnU3GGShVKKac55bb6hZGkPmAKIuQpXEEuPRKw1kgCY+XB3JeiytPxO9HghqNNKIac B+Cszj7pmSGDrrz6nOj4lAGaUAQoC6s9CJLX91Eqr39prnBMYSDgKYJZsxBQlH/e0IY0aQasWmQ yfieTTbc1SEsaQsxFikHeLeSbZcDqc6fm6j+jdgGAQy6aJqJ1hbzrsliUND0Tb0swdtpnkckfsh MxGaNrLZT5XwdG+m+pODyT5kNI8lJGvGhBQnjzafbAzVixDwcaEwFcXipL/vZPg1amec/7Z5lRV nkFCLeYrivJmrQFcwK3k1jq8vRMOjE4Ya2t6t7a7WBugv7YKauEtdRoF4FG2Vjc4lqZ9QAMuL41 c2/MqG/561qzntsAJ8xNej1curfmVA== X-Authority-Analysis: v=2.4 cv=Dckaa/tW c=1 sm=1 tr=0 ts=6920ca6f cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=EaYD0BI2-7KjZKhOlH0A:9 X-Proofpoint-GUID: qqkKbyJ4bWN2Q1ggYJf4_YhdhB5kPSaB X-Proofpoint-ORIG-GUID: qqkKbyJ4bWN2Q1ggYJf4_YhdhB5kPSaB Content-Type: text/plain; charset="utf-8" folio_zero_user() does straight zeroing without caring about temporal locality for caches. This replaced commit c6ddfb6c5890 ("mm, clear_huge_page: move order algorithm into a separate function") where we cleared a page at a time converging to the faulting page from the left and the right. To retain limited temporal locality, split the clearing in three parts: the faulting page and its immediate neighbourhood, and, the remaining regions on the left and the right. The local neighbourhood will be cleared last. Do this only when zeroing small folios (< MAX_ORDER_NR_PAGES) since there isn't much expectation of cache locality for large folios. Performance =3D=3D=3D AMD Genoa (EPYC 9J14, cpus=3D2 sockets * 96 cores * 2 threads, memory=3D2.2 TB, L1d=3D 16K/thread, L2=3D512K/thread, L3=3D2MB/thread) anon-w-seq (vm-scalability): stime utime page-at-a-time 1654.63 ( +- 3.84% ) 811.00 ( +- 3.84% ) contiguous clearing 1602.86 ( +- 3.00% ) 970.75 ( +- 4.68% ) neighbourhood-last 1630.32 ( +- 2.73% ) 886.37 ( +- 5.19% ) Both stime and utime respond in expected ways. stime drops for both contiguous clearing (-3.14%) and neighbourhood-last (-1.46%) approaches. However, utime increases for both contiguous clearing (+19.7%) and neighbourhood-last (+9.28%). In part this is because anon-w-seq runs with 384 processes zeroing anonymously mapped memory which they then access sequentially. As such this is likely an uncommon pattern where the memory bandwidth is saturated while also being cache limited because we access the entire region. Kernel make workload (make -j 12 bzImage): stime utime page-at-a-time 138.16 ( +- 0.31% ) 1015.11 ( +- 0.05% ) contiguous clearing 133.42 ( +- 0.90% ) 1013.49 ( +- 0.05% ) neighbourhood-last 131.20 ( +- 0.76% ) 1011.36 ( +- 0.07% ) For make the utime stays relatively flat with an up to 4.9% improvement in the stime. Signed-off-by: Ankur Arora Reviewed-by: Raghavendra K T Tested-by: Raghavendra K T --- mm/memory.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 5e78af316647..05bc9fc7289d 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7193,13 +7193,53 @@ static void clear_contig_highpages(struct page *pag= e, unsigned long addr, * @addr_hint: The address accessed by the user or the base address. * * Uses architectural support to clear page ranges. + * + * Clearing of small folios (< MAX_ORDER_NR_PAGES) is split in three parts: + * pages in the immediate locality of the faulting page, and its left, rig= ht + * regions; the local neighbourhood is cleared last in order to keep cache + * lines of the faulting region hot. + * + * For larger folios we assume that there is no expectation of cache local= ity + * and just do a straight zero. */ void folio_zero_user(struct folio *folio, unsigned long addr_hint) { unsigned long base_addr =3D ALIGN_DOWN(addr_hint, folio_size(folio)); + const long fault_idx =3D (addr_hint - base_addr) / PAGE_SIZE; + const struct range pg =3D DEFINE_RANGE(0, folio_nr_pages(folio) - 1); + const int width =3D 2; /* number of pages cleared last on either side */ + struct range r[3]; + int i; =20 - clear_contig_highpages(folio_page(folio, 0), - base_addr, folio_nr_pages(folio)); + if (folio_nr_pages(folio) > MAX_ORDER_NR_PAGES) { + clear_contig_highpages(folio_page(folio, 0), + base_addr, folio_nr_pages(folio)); + return; + } + + /* + * Faulting page and its immediate neighbourhood. Cleared at the end to + * ensure it sticks around in the cache. + */ + r[2] =3D DEFINE_RANGE(clamp_t(s64, fault_idx - width, pg.start, pg.end), + clamp_t(s64, fault_idx + width, pg.start, pg.end)); + + /* Region to the left of the fault */ + r[1] =3D DEFINE_RANGE(pg.start, + clamp_t(s64, r[2].start-1, pg.start-1, r[2].start)); + + /* Region to the right of the fault: always valid for the common fault_id= x=3D0 case. */ + r[0] =3D DEFINE_RANGE(clamp_t(s64, r[2].end+1, r[2].end, pg.end+1), + pg.end); + + for (i =3D 0; i <=3D 2; i++) { + unsigned int npages =3D range_len(&r[i]); + struct page *page =3D folio_page(folio, r[i].start); + unsigned long addr =3D base_addr + folio_page_idx(folio, page) * PAGE_SI= ZE; + + if (npages > 0) + clear_contig_highpages(page, addr, npages); + } } =20 static int copy_user_gigantic_page(struct folio *dst, struct folio *src, --=20 2.31.1