From nobody Fri Dec 19 20:36:13 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 F387F326D43 for ; Mon, 15 Dec 2025 20:49:59 +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=1765831803; cv=fail; b=Qiurm9saFAargtbErkOWaYcxGekoPgELPxCO5k57+OqLPxUhuHczPW6Bv4p+Qq5r3IFRBf3b6d1AzlRrx5GWGl0F3Kho04G6IAmGS7mq3lX87zBlw/TBdHGhdZcPwTPtQMrBZXXveifmpyAb2KLq60krxveMZMRAJs/xDR/j9DU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831803; c=relaxed/simple; bh=l9XISLBfmNcHLGh0zGeX0GeRTydV895GK6aXodbjZPo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=cYiRZ0RR87o5UMRgVgRmiijWB4gaLXZODi1Z0oDg0l9HvllyYZ+6bm3YXv+SuEQHW278Q8wCKuWJ63mM61pmzwzprufB+VWBiOhNGf5ibHzH0vFb9T+OEoXGlgVIM/m9muP97tI8ZH1A0rgcAl1svNGsQxwyqwxt8+OfWEtU+cs= 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=d7wPGaW2; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Ble/Tog4; 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="d7wPGaW2"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Ble/Tog4" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCJl52788721; Mon, 15 Dec 2025 20:49:32 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=UpFq1ymArQ2xKqgTVLmb4fljTM+UUldv/8SQ63qpNMM=; b= d7wPGaW2P8Uh/qBm5Y7/GIJsfvJ21KOytrKKi1+aiUCaDKnptSLCs5A0kzbG+sWH 1FVbfywiO/xsM5LSRkTNE/iuYks1ptL7XZ0yJde6UrpCJZ02NvWe5gQwzYCFgdTj wyxex39mNjphUMJ3SXGff56q9OEc5vtpAaTaXILr8zqbwo1hV90kxW9hGGvxE1Ht D/i+ZinS7LU/5QrQSfaJIcGPj1fZCu+xdVx4rnv+X1eTjG57MnqsbG2b7m8Iq4eR P/4lrohI5yMzJ1PW0afTRcnrKx6NakGKohrDTfP+AZFptwMp2bfaFhus/eZKI/jU 7Q+ZLiMsxEQRCoAgyY8aWg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b10prjssw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:32 +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 5BFJJR1g022444; Mon, 15 Dec 2025 20:49:30 GMT Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11011056.outbound.protection.outlook.com [52.101.52.56]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xkjej2n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WQIHh5CoSRLIQBcEi+1l+/nRDJpLqZp6uVz1fcEYn6zWvi0YmRYtrfiYc+yeqYu10kui/YJ5CzB06IQR47BfkmKCapPUBHy+IGrsS/QRE4WCACk/9bA47lQY1Sya6U/fyVMCEGwRaYFhLFnsmlKO+posKSQ2x4RUqeuyiPZJ1xuTpWYX8grjLj1cMG+YARyR9n2h9sHwJNYmg4jLk6frqORnM8Y1c/gQgozKKTDo/aYQCmxraVoSGLkLCbmMfpLAIQ7JrXhVTi9h32zwv1absSq9ZkdDimVLU/YUBB7KbkX0CPPdyX0FB2GzV41vHTHk3vsJ7KRltLgoLQrNEn3PVQ== 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=UpFq1ymArQ2xKqgTVLmb4fljTM+UUldv/8SQ63qpNMM=; b=UEN0TmAeTMwAMM+R0YUGgfkSdPeoI5o9dH7DdLxwEvAoZCXwsu6IOz2uUwUaphS6NJF5pAXhZtgarLPJBZevUDXdV3V5lADfsThttU03O2ARIKZU44zOZUaJ/EryR+JHwLiQJ2jNBc6u5KGpr1kPch72nm/FGrV0yfMlvS/o1EvVvsklOG1o6lCsB+6Eo8NbkBNab8xulUTcwoh2vaRXDCC54R7sFa+vQI1I1pb1S8GlSTQ/Uvo+I4pT20gBL9hOKK5UGHMDpXy6b6EUhYZjp+XOJyybnjJKdzWQKCwZ60tuhhgWza4sU/nBAtD3gN/hQANzhJBcD5zLAAKFS1bTEw== 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=UpFq1ymArQ2xKqgTVLmb4fljTM+UUldv/8SQ63qpNMM=; b=Ble/Tog4hjwNzXkRej1QGf6PXMEkDVshpcp1U+7qSkchCN6VowXnvAWvFFyZkrBGFoA/sn5pqblnOP3WRxS/Jo4ifOSSnmSy/DWo7lOVfAJ1wnzNBlyjEWZ3apJ2KbjVNDoiTdrGxtDXMT82MLJQWT87Qx2rlNdXS9CoDrrNVYo= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by LV8PR10MB7992.namprd10.prod.outlook.com (2603:10b6:408:1fd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:25 +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.9412.011; Mon, 15 Dec 2025 20:49:25 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, David Hildenbrand Subject: [PATCH v10 1/8] treewide: provide a generic clear_user_page() variant Date: Mon, 15 Dec 2025 12:49:15 -0800 Message-Id: <20251215204922.475324-2-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0268.namprd04.prod.outlook.com (2603:10b6:303:88::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_|LV8PR10MB7992:EE_ X-MS-Office365-Filtering-Correlation-Id: 80ca9734-7161-480d-c056-08de3c1b6ed8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VvO3tlmyOaAjqv2uLFRV3aCq7rGDliS4x43cmWBRlxt9pykhsdQiQJmgB+NJ?= =?us-ascii?Q?+olyX5mHQnR8eF0cwAcC4BMQCfqQn0feTTeh6y0XYWFcoMyF06oOGm3w2NeR?= =?us-ascii?Q?0Pr0OQZTSAAc7+dg0Z4J9qKzqz06zkCg5rQGfi6kXxtyltafA9RqHq9rl7of?= =?us-ascii?Q?KksIsJ5bSrdRxvtziCjezVlsEbf+v6ysSbpcKbpL2L6sZTMy82PLg7/5Q2QJ?= =?us-ascii?Q?nBpBiu7W404AwVfUg/2uNNbHs3FELZiGKBU0UdTKonKVtm30eWyGj25TuENG?= =?us-ascii?Q?Z/NcQ9sRWVnv9q73ZYbHhAipx2IgULkcWsf+ILZOLAF4BaR9xKI9AnMgGKdi?= =?us-ascii?Q?KP7LkQlNpxMOP09jhcn5C3qb9r71IY3KBlcP13WqkiyKs/fxSB1bEben8MAI?= =?us-ascii?Q?I7nCEYQMD5mF8QQOftv7OnKRY1K8/d3k/ZcboErqKzgzMaWPoy6I53Q7v572?= =?us-ascii?Q?kV6pvQvy7sCIYqMRh61XPvkLHyDRSX8+VRq6rnF89xBJW04vMJrk0nKVqn7E?= =?us-ascii?Q?fDHEKsdxu8vj/fSTX1yswbb3D7FiIPvWdty7a2PglOLB+apPXmfWj84gGXSz?= =?us-ascii?Q?tgAWuwC9rBHEzZ/EZ3tjr75Loz2jPxc/QT0S+NOuMEGxd4YGcknwqBNH2B4O?= =?us-ascii?Q?kCcQpwdPRKUlML5MxC2pI6vYwiZ3GIkNgF5U+oMzM2LQuwbBhyCPnvcV/E3i?= =?us-ascii?Q?fHtm293w2+JJc1WNVzJPhDeNbM+2qW+k7u2NeVPWJrUBILPH3TStQaPpyqzW?= =?us-ascii?Q?QlYXWwDVOJeQ3w//qQCVL11Dd7lPhpCrd9SABMyyIlMXq5yxe3dE/Mdxx1sk?= =?us-ascii?Q?t+y7fbi2YuPTtVSnb62oPv+Tt+rvHVAFhGtboox3mX401+lgY8ZRQJRFXSOd?= =?us-ascii?Q?/q1m9vPzhgB7vzX7oEDO4Vnxil6V8feu4bnrGfr+5LW/zdnpjmizYHTCXkhU?= =?us-ascii?Q?c07ZUs7rTNOuqz4n0jIeZUs6qPp8RyQUjPiCRtBI88nPd3MTs1Dkz7ghvLZL?= =?us-ascii?Q?coeexBbwaoh3xI/o1E3etknoO2MuhWlIcG1WZ0sE7dHmo9At5/+adQ6tzzrc?= =?us-ascii?Q?O0xDI5hKA50n51fv+GF49EhBorxCRCqpKY/4MOxz+g6jJZYgqXIZEjpgdlrr?= =?us-ascii?Q?ZP074ufM4LRLttJKJlu+90B6hBTAFLhGB7gFAcvD0eCsSRUrkz4f6Engo9Jf?= =?us-ascii?Q?z1KZziUqfKG9BOBmwojCdeO9wy32dWwdQSGbwUnwxf47v42a8ugAfqNZ72e+?= =?us-ascii?Q?il4rotMKmA5BCLN++Q8KyxpCbUCCBfDrvkqX16q+hg0JFK/n5lqlZr5irBjc?= =?us-ascii?Q?BhVosbW+4xFFjlS0i/6qeGE3tXou9rf5X9v8d/0qEnz9zRiarkACcXMQI2xC?= =?us-ascii?Q?O23DAocdqVuthxVgux+GOn976qDOOWe2ctK7ezM9egdDI8Bq1zNUMQtUtPjN?= =?us-ascii?Q?Hna3vM1YiOeKWVwMPxaJGW9wY4M2fPBZ?= 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)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9atcQdnJA5OttILoslCTYnIk8JmQROgELT0Cd1aQqUhPFQkP9qnZXoNpRp29?= =?us-ascii?Q?y/am5ZOOKqXAgm+JDJbKwsN8b4bSW3+lTVq8gKvYlRk6bCuaMfVdNqM0k34L?= =?us-ascii?Q?xLOglrkDOmS5ghKe0K3grE6WlXHqJiVNkWmlkD+pRXy55n6QfBUklPM6RCVD?= =?us-ascii?Q?FkbTu46n1hqpUWXHSXclbWLRCLGTV3w9/HOiZXdY+GfdEs8mbqR3nxnCnJl8?= =?us-ascii?Q?I5AZVBYMXuLUqkyD5kWsbqu35gF/Rka7BiCLgcgI93ZxJO9eXnFYUW10ypGc?= =?us-ascii?Q?wKY9OaBpYvfTEZQsR1mmpoJNKI1pq36tUm3tdl/fq6gmOrszNxdftPYteh8q?= =?us-ascii?Q?bzgH6e37KNPDMrKW9kin59ux1hb/8Q6aG4rqx/BLNMhPqTRIBUDc3Qd42elO?= =?us-ascii?Q?qXjBIjpzgDmkp19rD8hqCBr/xSSU490q3PoTZ38twp2Q2wKwEQmR6ll3sqVs?= =?us-ascii?Q?vjpm923R+5ZnJTX+BLU20BdqjymWpZ3zfrtfofesFJ+TsHJ/jph+90/0q9Ab?= =?us-ascii?Q?Pr2BCqpVtb4/NnRaJDBXhJuWve8BdWOPIrdmH5MLUtFXIYKA4VptzIcrNAM0?= =?us-ascii?Q?+BzFZFTJVopwjc1iMPBWk5XZPjMODILT/72n+eX7vWhmgW3b9wSSRNV67DEK?= =?us-ascii?Q?+yyTO84CQRvM2ukmsvbLOhe78I+FmoqU/OlZttti4rZ9c9PeilMIxJcAczok?= =?us-ascii?Q?AkWKzGFLvW3NG5quPGtJSl4oSaL1oY6DscuIWTmxBrpeE7Ocpslbhtbn3fVC?= =?us-ascii?Q?LQQ0QHSjj5D2mlGiaqlu73kFSba4PcML4LqnPSPTiRH4/3OAH5mixg5ZnENm?= =?us-ascii?Q?JC9j/xTasRWSZcgrWbgAP9aYStGs+gHhRyHz/5rFhMSRzO1pYnmXiZtbpHki?= =?us-ascii?Q?9hoXPpzvsgqnxsAnJPQddxk64+2R7WlSYdECPZwMJwCuo0UMTTs1NeVFRmcd?= =?us-ascii?Q?Jq2SjXd81wV6cjWbjMsZpkL2lSZLTqypJH9zPsdHCVNvnpI0N7TKD8Jf4JJi?= =?us-ascii?Q?cI/tUk0wm+d57zhLnuGJjwnk1T1qy8eka6zgXryWuJ+hwatnZ9jMNSCa0aKe?= =?us-ascii?Q?sgYhZnfGeDWr9nEXe1GInVj+MjN8Fk4m6BaJ8+84ZKh7xfUCJzKJ/XbmeUBw?= =?us-ascii?Q?71P8K89q5cKmTWuNQaeGZVkeq8x0VAm4agfqHDH7GnjsNpNs/QEBkWTSNsap?= =?us-ascii?Q?5gs7YbyhNz4BBB/AzqISQfBqgC0FiNW1Ohd2Hk2kXLGu7cfGSSTWdCekVyS8?= =?us-ascii?Q?U9tpd7Fl/ueWrUUTa/cqbYSWLF+MorhU8RivkT5hTUj+YtE7LGTeOJuLfcCE?= =?us-ascii?Q?KGlnzRMEPzHyjoyDE/xh8JtJ9kO+g4TADvDXDGv3ocDxBaYwnZnPKfFV51Y9?= =?us-ascii?Q?qkZCDGBYGbuUCiuQYwEQGp8DZ+OpKPbfYi4b9IsKW/rP4tfxKQ+lu15voFEa?= =?us-ascii?Q?QyTepw4a2PrQ/fb9SQw0/v2gzXgOsUbAkN9Tdc+Agf0pwBtyswNdQerT8x/u?= =?us-ascii?Q?gbsL3FMvjFJzikInMgh1wskMJlvM78ymkluYcPWDkQnmfpJoimokBPWbZEMI?= =?us-ascii?Q?0mQw+5jK39l2MagVWErD9OIgQPArd/23E+AAoI1GTZhrSicPHEGtrZ9/N8Uu?= =?us-ascii?Q?1Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GAvV+yPkhXUohsHytv/jOi6rmldi7kgY4F8U4J7WeoFGuSrVGtlaWI6qDrILTOwIG9xU2ozVLVe7ZbynD77Gm3baxyadAd9r/xqMcMdDPdZ4q/cWyFg1lK6SZ3nlpOSJGWLDHu9cgly+npgO+NiXB+9g0DxbhpHZMRagPzz7Pv6lC7zMX6vgkva983X7Co7se3AaskLoQ8PYvFeTcpB5HwF6SerhRz2kLsqh3GSCdy1dNx6zCE2BA85zETFd6/SKV1t8AvIqWCaAEj7HecDmZEZ0TVwOaJSfpch39xiFn6RiH7V+3Zl76PbzFkSN/angVBrn5Eo8ByhtBKMFW76+EACcmXuW8wqa7w0VxPrCt1P1+cwu4/cVFX4O0vqWGUPtJg+nrpJkydVMcyMAsQ0HFfdYjBxVwFz1u1uBihjlcZUAASx9TcqBkdaT8533ou+pJX1eyCtsB2pIY6rIMBhdeB3IPMY5MkimzAlj7LSLQIaGxfixfT4ijUGvWyostXoeJWOuLIejP0cXeGXwMuemSZ+HMw3mEO8Dc+MzGqTWBMFCktoJ3m7LWsjIJzqIKb0PMW0VO3rhkg/66hTzR0Twt3lU38ytiT8KAY8nWM4i+6M= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80ca9734-7161-480d-c056-08de3c1b6ed8 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:25.5865 (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: JvwALTOcoPpvUwUzqDIHSeOFX6MFwISW0ypsrNhUeJ2ysdhlaH90F/IUMVxywEvuI8Pfrc7RGUPyr6+hGKKWqwAbRrFJyYuHi4my+3IvCho= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR10MB7992 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX5Pp3Z+gpCtko 6BeUZZ/H9vlX1tMPN1tbyQAo8UGUD7p5yoqlXMQSasR7vCRLmF98kILRgFQtDICYM73I05fqQBs g0ZdocUTQk8tbqYvP6L+W2B7pqMhMvGHkHF7p2DTbKfySvn8yODiIjs5GD5ceFnMcKWCRdBnO5W jX6fT1lH8T/jaCrf3tun0NGGOJn2r/iYiIPXI+qOem6MmBVHnnM6xRtPF/8AVapSiPcXXyFGHXJ offlTYsnDaSrSF5L0rUdI3HTn7AbcCaJK2XN0Htbb5Sl9+1e8yGS8rWPCq+cwx/IEdWnnnqU5gW K0cPm2p//kGnwwdBAbC4c9lSoQpOAFk64OU4SOk9DSJ4I7byS/EMVF3qpH15uoVdFaP7HudXc1v t6XXtU+9w0PNfoA3Vf4YKvd2F1nWlIrljXd8xe6gvUSgbKk5yVM= X-Proofpoint-GUID: py-sUDFe9a2evjIhZdyo-H7N5pA_qa6j X-Proofpoint-ORIG-GUID: py-sUDFe9a2evjIhZdyo-H7N5pA_qa6j X-Authority-Analysis: v=2.4 cv=dParWeZb c=1 sm=1 tr=0 ts=6940745c 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=a41sh9qVG0UgEE7tqUwA:9 cc=ntf awl=host:13654 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. Maybe at some point these should be CONFIG_ options. Also, clear_user_page() is only called from the generic variant of clear_user_highpage(), so define it only if the architecture does not provide a clear_user_highpage(). And, for simplicity define it in linux/highmem.h. 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: - incorporates Christophe Leroy's suggestion of moving clear_user_page() into linux/highmem.h. The linkage between clear_user_highpage() and clear_user_page() isn't completely obvious but I hope the comment above clear_user_page() clarifies it. Though I guess if HIGHMEM goes away, we might have to revisit it. 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/highmem.h | 23 +++++++++++++++++++++-- 22 files changed, 28 insertions(+), 28 deletions(-) diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h index d2c6667d73e9..59d01f9b77f6 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 00f117ff4f7a..b39cc1127e1f 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 256d1ff7a1e3..327bf0bc92bf 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 c1d63b613bf9..9c8c5283258e 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 2d363460d896..e348ff489b89 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/highmem.h b/include/linux/highmem.h index abc20f9810fd..9a38512b8000 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -197,15 +197,34 @@ static inline void invalidate_kernel_vmap_range(void = *vaddr, int size) } #endif =20 -/* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ #ifndef clear_user_highpage +#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 + * + * We condition the definition of clear_user_page() on the architecture not + * having a custom clear_user_highpage(). That's because if there is some + * special flushing needed for clear_user_highpage() then it is likely that + * clear_user_page() also needs some magic. And, since our only caller + * is the generic clear_user_highpage(), not defining is not much of a los= s. + */ +static inline void clear_user_page(void *addr, unsigned long vaddr, struct= page *page) +{ + clear_page(addr); +} +#endif + +/* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ static inline void clear_user_highpage(struct page *page, unsigned long va= ddr) { void *addr =3D kmap_local_page(page); clear_user_page(addr, vaddr, page); kunmap_local(addr); } -#endif +#endif /* clear_user_highpage */ =20 #ifndef vma_alloc_zeroed_movable_folio /** --=20 2.31.1 From nobody Fri Dec 19 20:36:13 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 57A33F513 for ; Mon, 15 Dec 2025 20:50:01 +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=1765831802; cv=fail; b=JpCYfcw86b9CMLReopnV9D4NpZEXs4kuSyYJNxSGdOexxqJ68gw5lMH+tsa6lXTzALUc9fIq13whizKkDv4lt326Bb+YPT33s5DPW9eNffERRjWjWa7CqXSWwTyWfzX2cvlhLsWgV84liy2nabHakaBIh2mSoPD7aoYFaoeRpXA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831802; c=relaxed/simple; bh=f10WJ/JXOUA30wLxPqfLFHVrgJnJDvT66uJqa3VDu0k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=foNZOevSV0DwpXIvwXxlXsxiDl8JChJbulKarvE/PIckZGd2gb1Fnumq7jMhG9k7fMHzFE2Tw8cHLKTnaSDH/xFELs/Hc77d+v+A1SrmGo9sGTphBn7EWMJVJWag1XOhGrXQEPnmGm3XQpB+SD98hgNUuoQvp8B5hZphhIFjj54= 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=ICkOFUKi; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=v7oFwlBH; 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="ICkOFUKi"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="v7oFwlBH" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJC5L63058801; Mon, 15 Dec 2025 20:49:33 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=c7D5FNsNvBq2BMKa+9GCtw5TF2pAnNd0XPDVpBCnHsA=; b= ICkOFUKitN7eUpLLKGvC2laVq26iatvH+7LH7WUKrwifojDEjWR5X5DY7G+bKcga e3yNghPxUqA+iyRhwJkUybhK5yIgRLZc17v9aYnGb8ikLzRwj0IA7zwhzJs8D6Nz tvQc7GuVUVu7pavRYCGARAw/pWcH1cdl26YDHO6x3zbiDiz+TREjtz+rcZ4Dk2hi R7Ve+tIM61OCj8BNHUzpKT6I1xQGtK+UF8gBq9BHjwIX3l6oomxrw+t1dV7eIr2p Fs7K58fGfgFkt0nzjS5oS76pOPYOOXlTU8J6Vvx/i2oc4XGw+6GW+ukt7/0DpkWa DAk4J4Px1ukTkTjSPd1QSA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b106casbu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:32 +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 5BFJJR1j022444; Mon, 15 Dec 2025 20:49:32 GMT Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11011056.outbound.protection.outlook.com [52.101.52.56]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xkjej2n-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FRJmYcI+VTHPMlnoaKZFFEggjHvfs9XW2DdjzqF6J5PP45JTtkD2gA8/i19o3itxfmVutJyn1LBa4Lt1JxhePqG01z5GpJigCGcoVjMuqJ+5c6sNreKMNioGrG6zE7cQNm5gsyAtOfznFm4uQVjnha2gDQYiNsYYC1g8YEkOiHnzcpkBIRZPHZsd1XHUkDjXDQlsuQeBvOKbLdVcy5YcomY3oL8CXNZdcKxBjBHvepiz9Aki8HbVtZo7Tbta5zoZWD2GxbUp2D6Fv/xMtERUNmg7BoTlW92+wxcQWk/B7v6RjWtJy6IOML24kQ6I5TUv4ZL1TuwrJkbK/uy7uHPmeQ== 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=c7D5FNsNvBq2BMKa+9GCtw5TF2pAnNd0XPDVpBCnHsA=; b=tSufcssnywZojyytcJz7cALWiWifXCQtjZzBoP9oSXPRkU7vxTFna+ZHHCt69Y6WF5otvzrsmcaK+syjb8r8oYxpcw3gD8Eu0CuImzE2SWmII/Dd/HeHCFOgJtwEI0sye7FqVANr4aM7jNheB08W21svONXUOlwSeiphaY4urhLMIGBA3LkRMalAFh+b3cCDkzZHppMOtPcoO+Tm9hhG1vDob8+0587a5mZ6cJHwWsvFjx0cpSTn+1m+E5obMVZE4EGebTVFXRoAIjKqhyp6+5v641SXtlMlkL0Ho9zJIKD++4UDBy1geHVIuU2yYbw1chzMe5kSqvi0+pVKFrutSA== 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=c7D5FNsNvBq2BMKa+9GCtw5TF2pAnNd0XPDVpBCnHsA=; b=v7oFwlBHDjBPOmBopSFoFm0RbuHBKGBdHIPoyUh+YRTZ0O0Zb8PIqJrV5QuzsBZZPIIv3EhwZ9mIaUdpOp1+FglmfdoujQr/wPl1szyloH1Xydhhi6hdONuI9DMwenLd+jBFjrtEqvgaoF0x7GKe8UFVg86JMeXY64ETMgWzSuw= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by LV8PR10MB7992.namprd10.prod.outlook.com (2603:10b6:408:1fd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:26 +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.9412.011; Mon, 15 Dec 2025 20:49:26 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 2/8] highmem: introduce clear_user_highpages() Date: Mon, 15 Dec 2025 12:49:16 -0800 Message-Id: <20251215204922.475324-3-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0242.namprd04.prod.outlook.com (2603:10b6:303:88::7) 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_|LV8PR10MB7992:EE_ X-MS-Office365-Filtering-Correlation-Id: 38a72f1f-0d3c-4798-b5a1-08de3c1b6f96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3cwwITLFST2W9FItF6eQ27zIZeMq/MDOIgpFHGdDJLgy2RDtagZvfq3m5KcU?= =?us-ascii?Q?kl6xoLn3hX2M63T8FVmVhMY4DsJWJ9NUpGLL/PR5DOryxIoKY+L11VyGl8o+?= =?us-ascii?Q?qiDFHbcgLvrmTg8d3+t0+Z0CH/vG9IGoZop8jT/JYlLegtSKBrpp6ySWtTe2?= =?us-ascii?Q?pm6SHe0F8lkhVYqFQeMFK3W6a6Z5OrIfsVahqKkovuCWUlSG/1ZpAA1suDWZ?= =?us-ascii?Q?1AFHwrrNKWpaBok25+T9pAO8rRioSBMaDpF83H1ywliEV5aKlyxjLI8Uxi8L?= =?us-ascii?Q?B2uFw6NKffPmRVqk6TgGvEUhzjoNYJRw8vnXHJ22dT4Vlf+7esXILNq3nXFf?= =?us-ascii?Q?C3Jwih5qBV9xk7uNU1PIfPChhRqOtJ71Lev8rD1uuo8mERfFnJ00u+CcutJp?= =?us-ascii?Q?Lfwp3H6bYLbSEgjsvu1lRHqL9cdXjrFHlmhjTGNXGSAUvkq7xCWY05KxQ02F?= =?us-ascii?Q?ij8m7j1+StXSiSSe4svxp/Xlmy4WrJuhRfaLf/i8SDQ9K3iJRcOf1JYgwCHB?= =?us-ascii?Q?0oEEgNQQZ+23ys94CmxxCx52OI5YeH1s+El6NUFW5LFSOolBar8iVA4u26zc?= =?us-ascii?Q?FqSOFSDHZHLHrful5rlujKbCSgr0aWG+zCXhXS4xjk1EVy8TNs1VesdzbZ5g?= =?us-ascii?Q?gwBybbliS9NM1Migqvq5STCRN7azcdDCvAeakPCVwGe5XoNOXGS/C28BTE98?= =?us-ascii?Q?DSa60flWu6r7aQFIab5RhoymDxsBcr4LK4DtbFk1DGHZ2tItiXMskRufc+3K?= =?us-ascii?Q?WA+2NJQ6qHcHQRbbrPDJ5dou3JIkq0hPSRS0JVv+3hJjmqeUMZMIflgAyPUh?= =?us-ascii?Q?Rlli8+129tSu+TWgzgwgE5KnFT4gqdki58ssPEwUPCDSDRxjJhBXtQrGHH4I?= =?us-ascii?Q?b6kmaNEPRpnjlaZaLVGk841ZVdE+cmMm5gWh3buKEsIvtNW158Snfuyg+0c0?= =?us-ascii?Q?WplGqtk/dJ6kSo0G3kh0IpcwTSIDmcnwuxCECxTgAgjFhdfva7NIgQSxjrOi?= =?us-ascii?Q?Xh7Xrd2FKzUd1M/YtrG2XQenDRPmfrNoDMzMWjnmjr0wgCnwMSTfDM97fehj?= =?us-ascii?Q?iOeqgzVZaSW2pxoD6+706danl4KJulbaxbJoAy64V2KKcBgmGEKwr82UuR5B?= =?us-ascii?Q?hUthp4GtyxuMgQBAPgSzELkkkVeXfXfl+JhbnxOmiImTG2+Y80LBcm2csMBS?= =?us-ascii?Q?bFPhvcu9mvm0ynD/2W3lYgOhEeKBLAz+qJ6zhDo9HcyS7lOCxxNJ0cnzQI8p?= =?us-ascii?Q?jZVzQ8XwD0zMGOtNp7ruyqFBLrgtxPssLTFTal3a6RPxznNSz8N/zBmCTzDa?= =?us-ascii?Q?csJ5+bgXj2OI2C4nf7rAgXkccisvFjijfVA/DMwLjQs7oT3FF2+ofwItMTJZ?= =?us-ascii?Q?HSPNYzkLECyv1IYp9FJGCdFHgbamYk+zFj3sx8sTnLMsL6X4iff26dxkD4XM?= =?us-ascii?Q?8lC/K5ZLdNK+78kjK2Jbd4TUqqxtSSS2?= 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)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ImjfeXKyyFpy0G5rlVN0/gYLBv4AC++S4oJ+nhwrY688Sfjc3cCF7p8+ky8z?= =?us-ascii?Q?zQkT/5lBRdsgfUUJTKBcv2jVZ1DHgnoEz19Nz4tE82YJJCGL6yv8ynl4o+9n?= =?us-ascii?Q?2VpFBT0dZNpduNDzwKnf7yW2wtrqNZOkilvgdlxMTCZZzKBWMAkwDxC+F/D9?= =?us-ascii?Q?qRL43LoSlvZsONhkXjW6TsSpBPdMrpzGfQl07ZNf2CuyzMk+0FpMHe94h5vC?= =?us-ascii?Q?qiTRoAeMGvlDEHaFN5siaj8nYCfl67vF8e5k0Epa4W1jYO0G2YtqK2y3nxtO?= =?us-ascii?Q?upyHWYkR5aKAcZ41JraeZS83r/7ImYV1//geu79UMf3jWmkKtld2g7O54uxZ?= =?us-ascii?Q?Dnjtr/BJJfUyBWauxYEsCmhnW7m6pSZJhJvEqpzRFvi5c4GettHP0z5jhAZN?= =?us-ascii?Q?4fJNus3MJGmtKxF4BJdZ+ixwWLPaLPkSfULIyg7XKSVNeAXgawgiCz5qfPiq?= =?us-ascii?Q?ecI+aQaNjsGjYj2C5wsUXeMpb8aLQb0WSbHUdT9MLSJuc5cpEekWaTRsTrSE?= =?us-ascii?Q?0rwYzmhKUi6Bn2CqtRLd2pDWj2w4Q5MQ4sjmloL1pWLmQIggGwFOn51pxYs6?= =?us-ascii?Q?tj1QgZAc7i/Da3Zrtfwg/cyXqdNo5/JEtTNRKOwZ7sYVUFfq3iMcbwT3Y+2D?= =?us-ascii?Q?oNSAYP96fkgqNLp4/lvwyJ1Vy+VWFpH6BV+B99UQS4bxyWI09osWm1964p6E?= =?us-ascii?Q?Aywd+8AK8WLTk5yIosLOMVU2jXlIQmdzw3sCfMHB4QuWRFjHioV8qveFSAAW?= =?us-ascii?Q?l8KWXYcch3TmwAGTFZn0NNcDUP4YJI2zdjoeqjjEbcxZG263+Z3LqYg984PK?= =?us-ascii?Q?IkiJyDeWF9hlbJMH4TCBnA9xOqfYca99WKgoYg5nMbslZjw2lwFfSXzev+eM?= =?us-ascii?Q?mu/64g9E7mdhgOfzUaJ2vjhGItlc3vPJ9nVMjZC+dMvI2U0APhvUt1tYZmce?= =?us-ascii?Q?9lkj7XWwJNPzaEVQ/joIZpLdg2dSxiVHxd43u+/dQebsj2l83rW8iTV398Du?= =?us-ascii?Q?G9msb8S0/BNRnme2eXXOvJOmdjj2KZPclFB8VRC0mc42Kh8jR3NMQh1tGqKg?= =?us-ascii?Q?WgYZlbPZg6POotUX67W4+xh7NlwSX8C7dkk9pfB2P39EzCGeU1RARRofmCit?= =?us-ascii?Q?bKyBH5WIcnLcHTUNOm9WDhc6XCDL+J4Cf3NRTBJfQ7P25j8/to4zfM4km7CM?= =?us-ascii?Q?Wex4kzfwI+8/tO9g0rbySHAvLG4iQ3i5AIe4EBVQI0iOtW4Hul/PCuiaVLXX?= =?us-ascii?Q?qb/29lXlpg7zMvff5M4esqOp0xLgzLFRGqEoatA2LlubWkXPzeK7LlQeo+Aq?= =?us-ascii?Q?l5LEgKHN3LbUZ8nk4/UgTHZrS8PrfKfKvxV30ZfO05sviPskgiiHSnLHsxX+?= =?us-ascii?Q?pjljwWYdHWFdfFVkj0wTfvBhHIkcDU76ttnlB7TCFh3zBlAG5zftm3YX+Gen?= =?us-ascii?Q?m2d21YnQ+I4CgfqpJthnVSlx1KCY2vNRvvrT8acFz5icgCUfhdb/rJlUYt7Y?= =?us-ascii?Q?5vXVHBxve0q4cRowIZ1z5FZNj/mJvcD3iWN/oeWatDbVY+vwCHvrQOR+fDlL?= =?us-ascii?Q?ITp1MLvM7Koh3q+yue32l62ZZY/OtN/9YX29UNEXx9XErFhSIsuzI9v7igt1?= =?us-ascii?Q?WQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: vIx3JQ6nFWRHmPZiwyPlV89eHGtpay5RSbfRT2DO1FOR6tSdc+u5deDiY0xm/LBHowQ13um/BuqmvRO/Qcr9+KDOZGfsQNqakPn4KQdx77dXF6/hl9PdzUzTAeVjycxVuK6/qaacWjPu+LUffoiviETHGG6sN9saO+JgLksuGgcMz5pZ+CsDDvL3/lyFArzNbeL9m6h8qkGnfYw1A2bvFVJNMh1erIdOBXxGbIjTk9lE5mn4vz+KK0aRvzRvMVTGvuJRmO64GH/ZyhH1gaf9f8TShPa66UJI4JmUGjQ13F5FwjWA98KomjV7b3wW9aJBsne4xMD25RIijCxvIK5Xwh9GhcOHwCBF4t6dHC9RzzRMZVyKeMtKeNchMFintqYkyv1EXLK6+8tkD9D4SCF0ivhLGzEd+MBKO5EKGAnuCCch4/vEcADN0MmGCWrlK4vNw4mFgGR92o/7Izassk3KgKztuBk2yLEjkpkDt8+Pw/jyuU9j/gSYDcIzu1+J79F2OLBwerycvi+06GB6dLPK5XWfzTSdJP3poDssGgvR29JPreEWzO6TrLm4SvUgeOug3y3OXvT4Qiu7pBJU/tR8tDzhkSZqohnQ4B7d2s2tyI8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38a72f1f-0d3c-4798-b5a1-08de3c1b6f96 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:26.8107 (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: PY812Atszdr5qSy6odosXNCsxmCFiMBNA7tUgU8IUkBJj8Xxs5Wwc6uk1WGooW+IZncdUYfAlZnvekibjt+2Xgq9eRse0cscsNuYaicDCGc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR10MB7992 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=996 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-ORIG-GUID: qPkMW6u8czv8Mv_4F0YKgw80GJlaOT_- X-Proofpoint-GUID: qPkMW6u8czv8Mv_4F0YKgw80GJlaOT_- X-Authority-Analysis: v=2.4 cv=et/SD4pX c=1 sm=1 tr=0 ts=6940745c 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=BSFK5l32PGEs6HIvsOsA:9 cc=ntf awl=host:13654 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX6FrPK5GOX6H6 qBz55WmGg+m6rFkjUXFbDo9UAMDtid7N2Jn7pCuQVDUOex4sOF+GxiljP8C+vGmdxFM3uNp5tab qwzP4xMEGdXF0uYJDsJ92nJLqJTH24wxyqdW1TVHLXm6oCmT2T2tmAXGAjHL4D3erTTWS4lB+ml 5A9OyMgulqmOG7+1Iab4T3IPWbCWrFTJkrlxxwQSA5BOzcaQWGq3pA83BBcnjOPZDSyEuTnIVrH LY/YzSEOi1vpRZ2o7b8vhb1XVHP/saTJWJBc6kH00bQbtQCWjdBZGxPO9qnaIGw38Z3M4RtA/5J R+cPYlTgzt8Dux3DH032eFOWWU/SAai2IG9aW3BwbNjYPCKvX0+52DncHTjRq1Wl+SoV5Mldjuc IjhooqMGUDSUI9BCWK1Y1RFSVYGeu1OvCh9qmk57PVpGuIj0VgI= Content-Type: text/plain; charset="utf-8" Define clear_user_highpages() which clears pages sequentially using clear_user_highpage(). Also add a comment describing clear_user_highpage(). Signed-off-by: Ankur Arora --- include/linux/highmem.h | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 9a38512b8000..9187bfaa709d 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -217,7 +217,14 @@ static inline void clear_user_page(void *addr, unsigne= d long vaddr, struct page } #endif =20 -/* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ +/** + * clear_user_highpage() - clear a page to be mapped to user space + * @page: start page + * @vaddr: start address of the user mapping + * + * With !CONFIG_HIGHMEM this (and the copy_user_highpage() below) will + * be plain clear_user_page() (and copy_user_page()). + */ static inline void clear_user_highpage(struct page *page, unsigned long va= ddr) { void *addr =3D kmap_local_page(page); @@ -226,6 +233,25 @@ static inline void clear_user_highpage(struct page *pa= ge, unsigned long vaddr) } #endif /* clear_user_highpage */ =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) +{ + 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 Fri Dec 19 20:36:13 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 F37FD2C0287 for ; Mon, 15 Dec 2025 20:49:59 +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=1765831801; cv=fail; b=LjMW7ApdHFeOanzkdkwKIsWcydXdolMmSUiz/ipvrZ0pbmYi3+qyRKalCTK8dSovLhMDxH9lkaBKDosE5Y2AAhTxbT0AqSKi2BUYxjiesG+CuKebfUcSEo4akx6awkX/szysRrGewMN+2AnstOkMT4iS7WC+xZRbWheaxxEK+BE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831801; c=relaxed/simple; bh=RvDyJLzIyvVWaIuFbyoZso7w0F68lo4PiLF8pWzmilo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=EDbt9AtlnFDi00KDeT1knyFH1JPpcr3Jm4upwhnKVYfdKNWqL5eyh593G77Oi5vCY1MPOoh2WxJiRJqx2ixQRO+UTzxsO/7I3Lq6Og0V9lAj6Bg0+nXd2CaWHYjYlopZIui9+B18DObFRwbSmytlHVSjXRi1a3FnT+/buS5HfXg= 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=MBJwIhAf; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=t6kBRP3S; 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="MBJwIhAf"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="t6kBRP3S" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCMnb2789064; Mon, 15 Dec 2025 20:49:35 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=w4XJtbi3GWKQqVsBF7tIWnV231xFv4xLpXrn8tZp1Qs=; b= MBJwIhAfyVKKTyWDveuc5GkFhl41S3Vtjs3WK9o5lKE+ImzOXyxrkoLlfroYNS0x NG4JNshsJQi/QuJgGA4dGiuZzQikkc1HJkkUtz1YSqNW2ciC7YaQgC4w5mE7VMkC qIiWEvlhTSjrIcPyZRNMkCd+4lm9oWu93ZjbWSRF7kkDN6qT2hCfzzqHef3mDKch dMa/sBb3o/5WgG8DIuh3FNgm9SBkecwKNDHvLFOUZxM3943YBk7mm0idqoWZ61Xn yp8k+dJfTuUp636PxMmkBscbngX3VNDL67vytAGyIylZo68XcHPhkfuOVYtN7sOW EYoiopNKh7cN7DCQVx3UBg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b10prjst2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:35 +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 5BFKAmZY024769; Mon, 15 Dec 2025 20:49:34 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010065.outbound.protection.outlook.com [40.93.198.65]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xk9nkv7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kwCq3wWS0FZ+xeCJfb9NBV9SRstielVqRJsDuiWcffayOneWnyjp2tMq2KTQnuwDvyCwtta4YbKTVsyU/rFBOSN4axrhSys8G/Eva+ws7KBtcCtNroVYZBevZ8atShVl/SjgUNRV8bMu/rYYN0/Dph58zzLSrkEeOvyswmvSds9JxIsNDdwvEPtnpyq5UVUsnrbV0CfWs0TJhBTj8i9eFrpBZVHxKlX90UFtITa562/nnZ5YXqeoUolF8/Zgjo5bxNku5BL9FRaNurntLfw+ObDt+1otRyctrPuriPC9JyujCOdqpM8HTFsShc2KTGydxrvilUzoG5i5BFfsTuKcjA== 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=w4XJtbi3GWKQqVsBF7tIWnV231xFv4xLpXrn8tZp1Qs=; b=hnFz49TbaP5QSD8Di4sd/gbbbIeSvGrPsMmGmmKKT15J2/sIuhxh1gkAjGMOfiRv2BMIilD/IZ4iFYOgtCGi764X1uYGYMvTIWqERSvLfVzdUmPZqfgyzA0AWi4LEou+7Or4do3zXTeOpk2COirYJ/gGaQhtcQmALM/sQOmacYWZg/s8yozlo1lBgn0vQpFyllRYK+6IeCFDPV5h0lurnSb539suCExBWPqQn1huXgfAX+OVln8B+rmS9CE0/8jjavyAfI1RkCelq/rwdqpCGRwoVDenXWhtPcC6A2MpI1fEoaFTotl4mXFphZuSsU6OYndrkcpYz6er/KoXOBFTaA== 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=w4XJtbi3GWKQqVsBF7tIWnV231xFv4xLpXrn8tZp1Qs=; b=t6kBRP3S+hanWv6QUwsvUjGeP4CdvmvTLDqbqG8lNjx7MqC24owdOYBxhOAgEbvfs5COTysDtV6hx6SlGlG/C88EyK0nX+ycCJ6gtkrT4FCmoRLEgPnT5ijn1+vCjoAvu10KlBQ/lXUIqmScl1IR3rpl/4XJmztJQjXf7a2vrUg= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:31 +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.9412.011; Mon, 15 Dec 2025 20:49:30 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 3/8] mm: introduce clear_pages() and clear_user_pages() Date: Mon, 15 Dec 2025 12:49:17 -0800 Message-Id: <20251215204922.475324-4-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0134.namprd04.prod.outlook.com (2603:10b6:303:84::19) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f1d435d-a006-4ce7-3acb-08de3c1b7205 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?xvvesLdVI2BhpMGnmM9U8c1tIWFalcQhfIBIKOvgOE43we/G86xliKRumHD3?= =?us-ascii?Q?FQk3iORgmhPqkWek1py+l0riIXq5vgjteyij9VAg0rGYji1joMw3eWgvz+Dj?= =?us-ascii?Q?SKnCwf0hRvbeYKpxvNDh07wP1A9VGVDAac8JDppmTm3+UL9mWtv3f71Dll/J?= =?us-ascii?Q?aMx1HqR4YcEyTlstjOFgyNeVPhv2cotRx4zCRAwV9wuLuPEbk8qBnYnfqVyc?= =?us-ascii?Q?02HxryU79AnJ+RC3avjmlsBCjyr/U/Arl9qNTVFzKEBAjziZ42u84w52mne5?= =?us-ascii?Q?w+n5Vwt+YMnYlt+BdiAz6g/6FpF/jzYVA1jXcrpYObT/WlnrT0LVqVV99Y3g?= =?us-ascii?Q?Q5Ae+/FWI5uUQIY7Lt0liNhfo+pKH1zi/UdfYbqefoHVIen9h1/izvViafJP?= =?us-ascii?Q?zY5JRPmdL4qLDADoKM/5wZs9GEh1zV0fPDLfNmxY6xylZ+2Q0omnkRGrqMe7?= =?us-ascii?Q?/OQcZePxUQmu3MzamSg+682E3FsvXbWMEVkC0W8Tl/RuVYpCPtwrW1qXXLER?= =?us-ascii?Q?JoLuU+sJXpQONEil5598dgW+nEt9VL8PHS9YhksyJ8pZ/gIL2IifUQcf2Hh5?= =?us-ascii?Q?01WSRabEymmqiSpcA6SmaptXB7wZD1Z+TzRCwqf2tTOzz5Cc7po/AsrOo3bI?= =?us-ascii?Q?suEDGuf0ss3w4VYMcmhRwZpyMtMCsZ6we44iM7Cv3HL+BgueyOCo5AFvIEPU?= =?us-ascii?Q?DjH1TDVIfP/39nru4nNCbACB6Jc4elhYgEfH+zAV+rQanwbNAy1Sp2GlNuMg?= =?us-ascii?Q?BmYiUGwgEsUi5BiIlBZ+lT2LxxxajO/Lc4hUwCNun+4hxChnYJtekWOPRvQC?= =?us-ascii?Q?6QbTjRk84et50WS1X2xjQVcMPgaZYwG4pfxbKysxr8G4vC7Oy3LFnLabPvfA?= =?us-ascii?Q?Keoy/x0OC4GD8N8XHcLWuTNMpuNUxHeDWvuS/xQbvSWehkIrCb1co6DLLMRE?= =?us-ascii?Q?u4yfUcrG1OI515gHgacLEsLEQsRuAgwIz0LhSdj0zIreydPyDRcssVTAhYxO?= =?us-ascii?Q?+7EkNwTPaFTCTrZTOoUlivYYEWtu/R37oosI+VFiok1BpYzK8EUXl9NwEkBz?= =?us-ascii?Q?k8iVdnnjLvvZU61mReJAmLcL7/QXy4LaLwa3AuhB/f6VB3LSmLA+nQjqTHTZ?= =?us-ascii?Q?JM6jxUdthGf9eUYKqO3iQ2Xu0R3xTqhDXCvZzNiQfRVM630nVTsbW/xtrDTy?= =?us-ascii?Q?hRLOAhDbsJWFgmC2jE6gR8cC1rdMM+6bfAzqV+cDY4URE9+T03ylhbAFrScx?= =?us-ascii?Q?U0Y8Tw7obnwhmAicp7E1FA4y5eYnEqETUGTEdDAKQak5zuRh4fayETBe8DUD?= =?us-ascii?Q?wjhTngnPeWRMcptTYLFgA8fFzyUvcZyHFOrhTjQHZikJgOMnmLKuncJzpsue?= =?us-ascii?Q?GB2eHrx0wiXtO7IvuynftSK6DdxQo+acJNUMSi3bs6zxJRsiBDDjvEeU67Ai?= =?us-ascii?Q?aaUGLUkbB/n5IRuBl4law60tDgom5KMx?= 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?dqsUHg5dvjff0SvWMlMjwiO5lbDEBdTjzZHeKvAzo67JR8/TeFK4qzP3fQgy?= =?us-ascii?Q?3auYN8A0UIkvFjhoPSChzFS7YmkMkzGMLB83uyC72H/y3HmfJBmXw6S0E8F/?= =?us-ascii?Q?OswI9kBgkZjtKWpQzPNzMwf/Z2nMCrLfWuaAIWZBwajY+vl+2eW346FVuvXn?= =?us-ascii?Q?T4Tvao+HJyd8U0frz1ISoHlomoGujDjSXsLnPACgNDyftIZ18a9CJE92sID6?= =?us-ascii?Q?goVobQfrNgPklRd1AERvsh+TZYDFRnke7XBoXoaxABDJ8y2IWdPUfdN+MCgL?= =?us-ascii?Q?+R0m+fQmMH0ur8PE1keAEw/ympawDx4IiXc4CeT02eWLRE0EjaEry7yBmAHy?= =?us-ascii?Q?oIqvhaqwe4qDqqSvRQG1VYa1glMAiI+C3oI17YQuew8Mvov6Vka7tcY63n5h?= =?us-ascii?Q?FcM+/Tc/lApswVAua1c03C85KClS1mLyGOVXU6F188IG+wUJldnVUorjHgNk?= =?us-ascii?Q?qCzsqXm2lxknisnmVW5I7Wyowqv3K0WMRn6zoJmXysS7EAkRYK0B+f52wPtD?= =?us-ascii?Q?FfR0m6tmu2jKoOkxlCXH4K2N8yY8mkRKlQRns+CSv2TS7OBTnV+glmFjRLMW?= =?us-ascii?Q?Zu2dv5MZ3M767FknYBrGrTTTm2JSC/yn8g/N0Tdzo2AWrWHtaZ6jJsjY52c1?= =?us-ascii?Q?cVmh86FZZAT6Vj8LgHFIlOYurOcRIxS/ezDZPFPtK3X1wutFVxlgtAbcwa3D?= =?us-ascii?Q?nW8kHNVNnQz5eNPnmI4gp6a9Wl5Q/pbkz3pPxaZQ4OLMdUpfiWrnwZPnhskE?= =?us-ascii?Q?67DMZR5eyhll8ZhpfeE22641cRUERHJTZE0mG+m83rDJhO6T48f2vKcJCMG6?= =?us-ascii?Q?htgtW1ZRPDfmr9qvwTM3Y7ZS+CTk+jRPCUjlEFHS3gLZZQhWfKS1a5sMltoK?= =?us-ascii?Q?+uWegb20RY89izTcTAkZERqksM68Iuma+SNkUaaEa8ShRaql90Jmelw5OdOO?= =?us-ascii?Q?4E1+xe6qC4jb8g8J+fSd9dyKXJZ3ZNEBMa0XUIHkZnVtrD7EbBQDWZvDatwv?= =?us-ascii?Q?STxLHpC8iKbJNo+c6+XwLAGW0DY/BXU+iPD5bcAJ1KphfPPAeJ8J2Y7AQnOm?= =?us-ascii?Q?+JbwDizcgoi0LfL6ajysS9GILe8Y65iy6XUFJPaNa9Y5LzewHfn8ikAHdB2B?= =?us-ascii?Q?BqoSJLXdWEh7YV5PlPCIR29VU96BHYdt4ilFKMM4B0xjwRf9pEly6wVg4ZDS?= =?us-ascii?Q?Ms7skSJr0o00vFQymyCjVgWYPdQVIoPCjkUucDVwQOOlvm6DyYPJbJc7mP8d?= =?us-ascii?Q?GHB5Jf47Vcjli+9mETcg2ms+adHghTKkDUP9voXr8h6tQmHA0TSzUcBEzWxC?= =?us-ascii?Q?zk3LsiH5knfEZur063HGKfGYaRnm8BkWLD1Fq98tQq/RTervwAGX2uscWXS8?= =?us-ascii?Q?djCe1WB/xob7x7dqiQhwTUDRPvbhcrbUHOGcJ0DSZU8uXUXFvYzic+dAn2Ju?= =?us-ascii?Q?cwke9/sPo1LBxl1dBI10Ri/vUbDCY+Oq/rLv+e/0yfvnfCjLlfiSABFWp2Cr?= =?us-ascii?Q?Ifoh0DEVngKP3XtRvqkV2V3N5rbLKttTkuv3CUB2daYZuWrH0LeDZh0cXMdx?= =?us-ascii?Q?E+n6in75oKGe+gkr5l/PrYQ05jJ6zvqJR/UWPbN0/aNgoJKIYZRywqYkevcp?= =?us-ascii?Q?6A=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rSVWxV8BnzFoOUZu3ebOd+HZaCFR/jWzkfAL6tLbteTC2b+5uTHlFp7UZgkWYGmv+F3Bx3wt5h6xPQ9veA8gIN2aSHTkH3bC8OctPRbcwD6FOTmNS88TDMBvKdkyzASKmOLplm3EHhbO1RjiLpUj8pWY71FjDf+iNuXOA+olX2bWgvWYtK1x58aZXoOgT0YNrfFaEcXkQhIkbhiQAgCsmCkTmjdjr74EXzFvFdVQxI/nz72YOLY6lZ/o0qeTyIxpX0ROvYp4/AFZKOPkLeguFkI21Zsm4NjHQFLjsL2qTT+Kux5zjSIo/QDKmEq502q+39itCDQx76DrL7nW48W6d81l1xT1WKVVphEwI2+JdHIjPvCetGXyVWnDx2i/RucOhXChCkWBBynD3FWtbDUhqbFB4l/zDa/WE5HC5+200kRehj1hJY1qBTdD6tJkdSmLUywUL9JY9C5K/ITLwSZaXQYOEcutKcC56lhE6Upeie9kUZZUPx7gB76qWs1Wr4h+IsrFJ03DMQVnRycYpxPTkvs+YbYgzKXlk74DvTSt0XkIIMNFrKunwz/eo3cgEyObsiUowEFf/0r4qb8dXGFGkzwrrw5Skk9q9F9WonTkDpQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f1d435d-a006-4ce7-3acb-08de3c1b7205 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:30.9499 (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: OPvXdycD/bfibInbGUSaHM2h9gt3Dl266tkqHGmBbw2MzFRbkGZSlPqFfaQGiXtFeeMrExV0JfsWVR3wPa8QstD1ZG5PI4VFIDBDGaLq1wU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 bulkscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX0qLHSGxxWcBB 0Mz+O2u11kWmUrVX++ygP++D2BC+d0G8HMQQ1n5VyhDWSFAlix0z4VlRy/BxkP5+pwu6AiJtqxN tL1CP37Y0rxx66B+rq502241lnac+un4IFeWw92nt7nQZ/h9Ho+UjM/IsyVLGMl73kBmJu/L3Dd IGd3izZKBfaFLwKH/ibmihkDYXMJgs/l4SopdDViIf3CELocT7Ts3AE7doM+ADLQk9VK11+ORUn 4d9SwbZPMZHs5jJi0qbfMu0Bdt7RGHs6Y4aNZmxD80RCqtT3qfJVcofpNEPpsjLS5Bs9drz3oYV aqLbEfee69dQy+9y1kpen0XiOGvO34T5Mi+XquvUs6ab3Q1GBotr/Av3nBg/bL2oM/vDmp1ePKj LEmSSl3/7iOjSmShSALiuXAGDU747g== X-Proofpoint-GUID: iz2CW4g5OP_lyC54zSyQxBdOPQNr0y2U X-Proofpoint-ORIG-GUID: iz2CW4g5OP_lyC54zSyQxBdOPQNr0y2U X-Authority-Analysis: v=2.4 cv=dParWeZb c=1 sm=1 tr=0 ts=6940745f 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=gTE4AWREPhgkrBsjIOwA:9 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.=20 As we do for clear_user_page(). define clear_user_pages() only if the architecture does not define clear_user_highpage(). That is because if the architecture does define clear_user_highpage(), then it likely needs some flushing magic when clearing user pages or highpages. This means we can get away without defining clear_user_pages(), since, much like its single page sibling, its only potential user is the generic clear_user_highpages() which should instead be using clear_user_highpage(). Signed-off-by: Ankur Arora --- Note: - reorganize based on Christophe Leroy's suggestion. - Dropped David's ack. include/linux/highmem.h | 33 +++++++++++++++++++++++++++++++++ include/linux/mm.h | 20 ++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 9187bfaa709d..92aa1053c9c1 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -217,6 +217,39 @@ static inline void clear_user_page(void *addr, unsigne= d 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. + * + * If the architecture provides a clear_user_page(), use that; + * otherwise, we can safely use clear_pages(). + */ +static inline void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages) +{ + +#ifdef clear_user_page + do { + clear_user_page(addr, vaddr, page); + addr +=3D PAGE_SIZE; + vaddr +=3D PAGE_SIZE; + page++; + } while (--npages); +#else + /* + * Prefer clear_pages() to allow for architectural optimizations + * when operating on contiguous page ranges. + */ + clear_pages(addr, npages); +#endif +} + /** * clear_user_highpage() - clear a page to be mapped to user space * @page: start page diff --git a/include/linux/mm.h b/include/linux/mm.h index 15076261d0c2..12106ebf1a50 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4194,6 +4194,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 + #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 Fri Dec 19 20:36:13 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 228F9328608 for ; Mon, 15 Dec 2025 20:50:05 +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=1765831808; cv=fail; b=b4DSOGoAOv5NHlF2dgqfBtR5Ny7+Lz3MG6k2UisQs5WJoovrrGaxXiHzUN5oewNs8mSPtGXvj4bzPcfnM2xwut3XAbJYLjAFCbMu/FcnFbs3Ae1ubjMhLAo7H+2+Zdx3zgSc6b58HDOALpB/r4r7v8HUYys+NXy3Po41moRSFzY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831808; c=relaxed/simple; bh=9o7DemimpZ3JCnl3MiCkvKW8qNZ4gC1pYznL1Geopw8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=R9epDp2FxN4I4ZPZaWL2A+G/+cyiDKXdUuEjDCBRQuc+l9fPpPNZNgyFk7aK0WoHey9EVP+mRLMO5eFsva8sNf4PGjJAtNSORvA3mCTqWCLSBd+Wgyjhya2D8olVGknwwbn1z700vaFXqb+XHHT/QXJ/oblrpWWU7lwPPEae0WM= 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=hDtrdL4e; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=gjc+8Vuk; 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="hDtrdL4e"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="gjc+8Vuk" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCNU52886214; Mon, 15 Dec 2025 20:49:35 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=c3tcWKLVvubDbCrDVR1D6EBziYCU7lTp10q3bB9VGrw=; b= hDtrdL4eSdTKV2VBIRwba1l79OM9CopGTTpTvNKPDPe9kBNFkPF8EDh7PoPVl4s1 DHbJK+NB1HZfbFCwf7nkNzM4NQaHMtYxB67HGikw+F2Lf+rW+sjbqwfzWlSoQ9KE UFL6fas/n5qGBm9dwvMRaly43q7w44guLPqTePQas8fBUyiX4LjUKM0eQihNPB/K BPYM1bFqULxIFCCiOWQejrktOTxgEFFxTf8V86uRp4+Gmm/WPkD22vlrTdGJlb27 04X9ijuPu4nrSi0/nLgf9vX3yqF+qcJ6GJ2YIHYrlq/CyYDq0r8M7d82hxrQrf3X ucp+OuYnZgXahBUf/mtqIA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b1015tsu7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:35 +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 5BFKAmZZ024769; Mon, 15 Dec 2025 20:49:34 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010065.outbound.protection.outlook.com [40.93.198.65]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xk9nkv7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H26equEuWTHQBS9P5eay1UXadCN/AV48lRSwTr9e1/UuNZZ+ENxZbslFvhj5XV7yU7gRCnhxefkNyJuD6iPzX5iYMH6LkVKidO3L2EQ32ryVQh4qOvq97qgaGpwI4BPEQcObh+7nZx6wGDIVlryggcMSSao1VlcX//oKaDDzYKHwsq0cdANmHyJ0vFqQKvJqp1xfss2SxpMoFAu9RzVjmafmeQ8WnPgtdkSvydAZCQL6Y5WpYC0eylGheNG3arOSfEION/K7gCyyU3LQWqPrqwZeW6G1iteRtCXAB2pwG0vcOHcrW4e6IolsNCcmhhhv1S7VEyvZOglNTEpgFUpHWw== 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=c3tcWKLVvubDbCrDVR1D6EBziYCU7lTp10q3bB9VGrw=; b=N6A79lPNoRldz4cufCMT6/dZKjZP0Bv1fwPwALg9e5L3PGDM1iBPnhUFaDW6lb/VleQg1ZOIXQEIrdrGNaKK3oqd7zlz3fUNU0SjEJzqR/ryLymV6AEsedKCF93q0EhuqGGXjTODgfADbTAY7xEi+owrvtGZg2K5zyixeee50gcae3DDw5AuUtENkjFM+Q63bQitONJFXEwyviI9eV4U6Pad4HgRzVGx36Hm6YV+aqHarsBt7xw8xZIs727e3L6ilTJxEkAYjKyTQKUlnW9mrjMCDv/l2jVv2i5IVi8w2XRn+IAMSlm9Pd506a8qXQeS/QbF58mIO2RLRpBh7X5VBg== 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=c3tcWKLVvubDbCrDVR1D6EBziYCU7lTp10q3bB9VGrw=; b=gjc+8VukJ1q02e15YtfRnG0KhiQXL6WIbvdvXywgfEjijB8KpQGSvn6lAPkMeFCK12pyYOnD9/5gUFVPqDFg0U1gmMsmgv+wxH/wUIzHndC387l6HEpo8ofzojAAuKgtWfy3IqplXQ/TzSoAWfchuzwOifPyNtM+v7AwMygiuw0= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:32 +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.9412.011; Mon, 15 Dec 2025 20:49:32 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 4/8] highmem: do range clearing in clear_user_highpages() Date: Mon, 15 Dec 2025 12:49:18 -0800 Message-Id: <20251215204922.475324-5-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0077.namprd04.prod.outlook.com (2603:10b6:303:6b::22) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: b8c35105-c85d-4a91-bef3-08de3c1b72d2 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?jmh1nmh13CA72eYAgfUr12dBrGIXcawWRiugsBz8EN+GFbiOyW/pyNrdweIQ?= =?us-ascii?Q?jm/lp0WVEJyB3wr6o7ii0CukO+uPahILIFzIvnZ+Pwx1HNOHY6/nK3TegO70?= =?us-ascii?Q?KWUR/XDKk6bOnx6Woa8Vsx38kyzyVJtVNXbbps8jDkTEj8IPYjU07ksSNvPv?= =?us-ascii?Q?iDRABUByiujAngXsPnC1rK0vrLWwgs4N3FiOSljHMsERyHJ/TJjzYxt6hc4W?= =?us-ascii?Q?ohJGo9SnbTdbeOa5yJSu1FmI2HOP/inqOSw7h+wYbPz3MAelVny6D8hNA48y?= =?us-ascii?Q?4xrgCRV/dTpVlbIjFN3d8uo5/3F68HbPmsekHiVP79yyKFXGtn68zup5J00d?= =?us-ascii?Q?NowMcHQzL35yDkC+8rABq37v7ZM+ei1L8VXKAXAjeEgcPRVZ5Gz2kTRoVrSd?= =?us-ascii?Q?AlrTa7i8PW0JVcPij6ciAJ0iFX1l+20lQw1PuGnVijHVXT3ET2ROp/OFJt6x?= =?us-ascii?Q?UI2RgPBm7kJrlvldZ2koqjUtCpF338iRjYz0spocg9LEZZAOgYy8+Q/4k2Ul?= =?us-ascii?Q?oxnrK07dPLfXiQ34VpA+nyrh8J9qEU+4UG6zfUlUTeGNvE0ykKGRKRmdVbNt?= =?us-ascii?Q?Vilz/OCOdpjf5tYieL4UBYaDEyufy4yzuc5LVQWrcVz1LrNbfkSAY5YPUpcr?= =?us-ascii?Q?KrcJCUZOrwC0qaQlnrtfkDXtigEo1mdXBF1XpBsIO48bJt/Ryolru8mGUSjE?= =?us-ascii?Q?B+wrTKRt/32rJh8tIRfAoINlkvrlIS2vDMOXczj650apceRRp23Kh4qoC3Dk?= =?us-ascii?Q?+SusXBF52xH7gUcIJXTfvbf6ovKjOCKGNjqoNccLrGux2GZ9sgRcppCqqxIg?= =?us-ascii?Q?Rikmg3+VuBqn1x7H5wmUy7WM4Vp6TiXbIfHu+5EmELFzF0zGOcrpcVdu/Z8V?= =?us-ascii?Q?XOh8WpSGqgtRYceKF/GGcmeyc9Efg3dyYpgJp4mLJjZSRlAGySOpBQecVewD?= =?us-ascii?Q?xc7QQp5MZ1VBStgktDQyYWOOru7BmfyGStkw824VhmdX9+DNxU0As3dn4QjT?= =?us-ascii?Q?wqQ9M9dkyKfgzGuPZ4z5tYOV4zuCh6ugiiVJUf5k/j6fJc6eJgkbF1mLCOSk?= =?us-ascii?Q?PO1Oq8OLZtC3OsbWJLTekyPl4vNK1DJUUb5T0lD+cmTcC8CftWvvDe18PTea?= =?us-ascii?Q?UDFs6MQ8x1F9h9DnQACwRulUexCtbJWsaKL848QYOlhWTNdZdyvQW2ztwfBF?= =?us-ascii?Q?q5rkTktcsmi7lkcdPtR4brFb+zoidXicqFqY7aPKll6VTabigz9NPiIDNmwJ?= =?us-ascii?Q?I2l05BAwhnSxSVNep6zm/581YyKQ3TQx8g9rcBl40s6z251VTSWZrZjfKZRA?= =?us-ascii?Q?WhIkxU8WGjlPU2K0o/RGjP4pG7XqeAxITmItrraO+eyj3YKI8d4CwR/AITUM?= =?us-ascii?Q?tFzb7B+OFuDimQyofkL2ULTCiEDD8BD3tEnLUuLFrZm9XdUIetbpbRSIFkL9?= =?us-ascii?Q?h0zXGp5XZsFbgDR/FgH1Sc9bcFS++hcA?= 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?ULCZC/d8HzlMrNurBsq8UEvzSes6IQ/+z/wDgJWUnMwE9CXKmw4+BuAjECkV?= =?us-ascii?Q?XJfPaCEURxz7MHBWp472KAf8o1G3bkI5jg6W2rKlbqY76mz2hBMgI1QWbQ4b?= =?us-ascii?Q?x+ZZT121AlWL0qZGmBvNHnfbx5RXIHyVoSBXRWnYNbzupoRtovM3C6Ka12cT?= =?us-ascii?Q?np2K3uTNQURsgzrWGU3m94ptAeps8V2/hAnSqsJqnpL7r4JW/xUsLZOgHr+o?= =?us-ascii?Q?1F4ny0rxaQvSNjDMwsN9coL+M1t3UIWswcVvjH40K0DsBP6V9r8HIzCwpEPR?= =?us-ascii?Q?kaa5qlabglN4Uilw3WiOWy5hHbY2fJvb8IJdXJeycujili0awVNJdHEYYt0W?= =?us-ascii?Q?nu5/45/+M+lTMUe/qou6WJ5Au2abeQ+Eu974tsJBGLmOe/sx2kNqB4oFmp81?= =?us-ascii?Q?OnXi/PSKBfDxNGiiKtD6MFIh4ujTxCqFJICzkup7YIv0zD5KpkFni2ssFHnM?= =?us-ascii?Q?rExoy0ln1PkxH+ySxnkvR0uTvmfDnKeOkbyA2lUJf0AwiDab8bjD5s13ZBSA?= =?us-ascii?Q?LGLM11/VvzTzDrOLZub1Vbp3lSwlftNRms2f3MxjQdnpeWpzOIeiPQ+5K0bX?= =?us-ascii?Q?gfwYDK/oU1Gy9jlbrS62ex9dFP4vCvnHKGIWkAfnE163os0fr96Z2i3AVAWD?= =?us-ascii?Q?2flPRoFPytm9p5+/n/W+iIOvlwOa8ENlqhfuPiYKv/K10kFTvOUpUeRpeGWD?= =?us-ascii?Q?mJ4zFE7ZA9v/yU4UXLLKfhRz97090LFAChiwY8QPExLtSXFgzoOOr89/ETxo?= =?us-ascii?Q?2opHeYU53G3h5KAKPLbdrWzzeUjA2mvhIhoHZApaOSdu0L7SQjvnNXgBIp7/?= =?us-ascii?Q?cALOPVCKAZp/Nn8n765mjGZxExZMe1Y8MboEZRNkNKisfnbpUir3muurt/o4?= =?us-ascii?Q?fwrDe4zSS7hpVu7U5yuHyoXcnxcerzyMizBXE06YaXR8S8sLQJs5eKygsCIG?= =?us-ascii?Q?wLst5mTzPvJZHWQmrQCU3nyZogCxRjZXHsJloxLjm9hjvnVbr+s5xMfifv05?= =?us-ascii?Q?+Ll9Hh7XYH2K6cNL57O8pbU+BgPIV0gGTO8qe15P65qSuE7fnFEqcrOCOc3e?= =?us-ascii?Q?Cf0sS0LL5HI6l0ArFz+pKcsmrcVHTbra+E/Xg909sJRkhN/SDSeGXogCVDVL?= =?us-ascii?Q?OMDVF3wxqlq1hz2IESGRsLG2bVq3cBjEZz8rmTddHNmphPW5DEYcq2QHw+gS?= =?us-ascii?Q?wybegepvBwB7Yd5MOQSXWXLhSzMsWHNcLTr8EPvoJybx22qcvVOxmSVzUQMN?= =?us-ascii?Q?GutD8jyqxGmytimAK+/grIQcBE3tAQBdaMnMWmfLbUZQcG9ee+b4XxsQoEo/?= =?us-ascii?Q?/H1XZWOIEGr2nO0YLGRhJX5EziobqXALvryLuqr5x6C18IbcxnmfJCrEh8UA?= =?us-ascii?Q?yNBft1H9Wc7y3GaCzzO6aHgpOJ9Y5xzfpCC5hfFIFKmPCqp/exZiO3aaHfSp?= =?us-ascii?Q?HK7F12AVJmfq/GiS3v/fhGcBT9dJ/yHRqnDiAdtXFkU/J2TRj+PcBbkum9Um?= =?us-ascii?Q?6HyQWHmcOc3fVm7ITkAfQ2z9heWmRzca0ui/zK8q/Zff8EpETc5kVsvC5W0H?= =?us-ascii?Q?p382gPsRmQnJd45CxcDfRU9yjkm+MW6CCE4A9ZR7mgYrz+1MxfmMSe8c0OdK?= =?us-ascii?Q?Fw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9pGFXM+qx4i6uo3otEDMUo4h5ApHCNIYkSB8tNtCe0t1TCRFEMaycyzRclCgfYfPg4M/iAQY1otiKTEXclUmqjt5DuWk7M7TEUUoFAijtilY+7tNYKxgAtpYv6UAiZaOAfOeb0iQqlp4jfsIQUlxA1sGQ+Mwn/rQmUqES9ZRfjSdaQxRpVMItO43AMNgXZznkUnp7ZwB4SxB1kdIcOtgPfnke6jS7iTwj2Bd29fyf0PlsppmJYJ6hM8xOy1MH+7utK8GTBizC9W8hs01oEoRV4jDvV28qBW/bKBTs2zxF+/iLPi92eiDYTh3zbrP16V+FYteDohbOYuFn3NSepJ/AWpMp+3VyQLee1Dpj5qMxeZp16APUT+WGPEzzjQ3rfDFa5xBVNwc3zKos6AP5sr/VA+FbBF9hW3xsjOwfbYODpCt2LsmG0c5Ln/xbKZiQaPTeUr62TnFlZJEji11n4ntAAN0v0aXKokSHmkcwODUG6JJTtqq1f+SncUszn2sSfvFwfTPbSpjJpHqXSE4romRMo8imaEydXUI/0k0ddWNsUBtI2a4TEhcmScpVOyEJ0sxyjxp4rTAjjBgen2D4kXLaXyiCmgYSeYNC7oIDoOdxqo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8c35105-c85d-4a91-bef3-08de3c1b72d2 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:32.2609 (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: j9kI/xF8lq5hVSxqM9TtwPzLxR0putdZJDftVLYqzgAmlGVpzwAIlBwfYJCC5yzvbn5lT/08uPXsq8ITqgkmCOcFHR5UIKJT6zPYRV/QRjc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 bulkscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-GUID: PDBTjynQKgegGfFnNcAGZP99MsGQcOND X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX3EkHtjs/2j+O klzOvb1t2jWlRVjEhAD0sPjLDaYXrXMXMTj8xZrbzrtcxhMLpQ+a/w2V+lRCXC0bFWUSe4DRv4v TiFfgHbtceqC3URiwIRhdFblBjaJvBuAKgEnK0wdNSFFypAtmJENILalQO+LFy3pyAcd9Y3WUwD WlPuar5vUigBsXoQiofRCj4gwolMjVXfT37+DaZHD+nWwoNJu4eaI5yRjNVkSj+VIml5UBHtZah CZxs9LBHChgkSi9gf7gYAz/RVwYLKnhO6WBeYm9tRJ5z3HgA+tKc5gd5DD8IrYeK/KuZSCRtpPp aE4hwX1rm7zZ5ivjAt8ibdY/s3b8aGdOfREZJMcvmjh892wcirk87FLkBd1ZD+BTOVwfwN1t8qE MHbVxCV7fAjgfpM9LqIt7hcm25cIOw== X-Authority-Analysis: v=2.4 cv=GbUaXAXL c=1 sm=1 tr=0 ts=6940745f 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=Qx4JLxr_JFo8y2O6NIEA:9 X-Proofpoint-ORIG-GUID: PDBTjynQKgegGfFnNcAGZP99MsGQcOND Content-Type: text/plain; charset="utf-8" Use the range clearing primitive clear_user_pages() when clearing contiguous pages in clear_user_highpages(). We can safely do that when we have !CONFIG_HIGHMEM and when the architecture does not have clear_user_highpage. The first is necessary because not doing intermediate maps for pages lets contiguous page ranges stay contiguous. The second, because if the architecture has clear_user_highpage(), it likely needs flushing magic when clearing the page, magic that we aren't privy to. Signed-off-by: Ankur Arora --- Note: - reorganized based on the previous two patches.=20 - Removed David's acked-by. include/linux/highmem.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 92aa1053c9c1..c6219700569f 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -278,11 +278,28 @@ static inline void clear_user_highpage(struct page *p= age, unsigned long vaddr) static inline void clear_user_highpages(struct page *page, unsigned long v= addr, unsigned int npages) { + +#if defined(clear_user_highpage) || defined(CONFIG_HIGHMEM) + /* + * An architecture defined clear_user_highpage() implies special + * handling is needed. + * + * So we use that or, the generic variant if CONFIG_HIGHMEM is + * enabled. + */ do { clear_user_highpage(page, vaddr); vaddr +=3D PAGE_SIZE; page++; } while (--npages); +#else + + /* + * Prefer clear_user_pages() to allow for architectural optimizations + * when operating on contiguous page ranges. + */ + clear_user_pages(page_address(page), vaddr, page, npages); +#endif } =20 #ifndef vma_alloc_zeroed_movable_folio --=20 2.31.1 From nobody Fri Dec 19 20:36:13 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 CFE4932142D for ; Mon, 15 Dec 2025 20:50:01 +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=1765831803; cv=fail; b=Ni9zpWEEJoWWNh0BhcLbp+bkv9lzhueRkwQQH6D8ISBmEe3c2Zoc8ioRC/q/a3zgzamlv+ACg2GyiHmnqIY+UzE0nspU/F/K8nKKOa+vW7j8YlZLve30Wm2KvT0dg4JMr6OUDo8/26jHuYSbSrAQ+/bq2zB1oY/xWkG1BP9SMQs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831803; c=relaxed/simple; bh=wBvEH/C4SMBi0KFBBw+N2Aq5LI5Ii1/yp5kfm1UxffA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=U/upm9dST0daP+dK47Uuylh54UKM0t0eQUFIsDbPvuYkUWNui5i5vdelkE9Z2wBJl4B1+Nh0t7y9+cQlBvnt7BHujDZRfCe8oZ6/LgnIwV4M8g+AG+Kws8rOn2yCEewV5DM/D7IlWIaUyvFTbi/Bw0lXGetjacU8SnImHHFvQ/Q= 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=E1jGPAI3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wpCt4DcG; 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="E1jGPAI3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wpCt4DcG" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCJl72788721; Mon, 15 Dec 2025 20:49:36 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=o266QWawPXuMgw57nfDe7uEF5kENsvQadZc8AxangC0=; b= E1jGPAI3W89d48i/c4yKgPrjjlOCjhcuXZlxylKyqhKsYoBI+Dd1H0SenlxGSZb5 CypiNEPRz2A+vbjti9mAp3FHDBvK7kOvSFNXKi5kJzClKmM0RQXablijfR+O/6TT /XU8fX/g//878KXidmMunzIyvMYAvv8PGTyFsYVIJAtW24P7zJdlLyBWVKum8Tmj dBq2moOq3jxE1314ubvhXnu+dJV9By7nha4kbQAPWteC18q1WJ2hYx5BJkMfSW32 IkMvg0t0VRyH18FSPvHXFVIgqHk+dhptqu+Mbd+WMWLsClJQsLk/W03Tj2MAoKVu FTiFffEaClxCp1eZMGSwHg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b10prjst4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:36 +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 5BFKAmZa024769; Mon, 15 Dec 2025 20:49:35 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010065.outbound.protection.outlook.com [40.93.198.65]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xk9nkv7-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eo/+iuPF7azqVCcgIaa03S4zZp/V7DOVpjk/dlkQaGB6WCEw9kK2kg0hFcKxwWqt0G08bsn/G+xYpxO9ctTWwAITd2Xsf8NN/zF6LhSsnH0ZMw5CH+ce1ba29MZ1fZsEqZr7BRYU+cPr42Tc5wdvtC0//U94MYorbR4fHPHdWceKSLtbVMbRDoLMkvS5y1Oe5X2CTd2DIc9mSfGSw/iut43IXmom+5lCjgJIy7c0zAQIulZIKH+Q59Jjph1/ky2duzW+hpVd6ASJZOLz29gQn9mhwuXwazMByifalME7+b+RP9AI8mMlB+TG6aX24rQqfafZa+toQXZchtr1GrAQlQ== 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=o266QWawPXuMgw57nfDe7uEF5kENsvQadZc8AxangC0=; b=eaMAuEga6R7hBdyTiF0NKqJsOCIBx0XDPL8+ESnKPWbV+3cWUDc/8N+x/SyT18a7z7LVnW5wrTKCLLV84/BFrDc6oketQXLa9MP6GXk4cldPg5khny5Racgvv49xSGFN0ilB5uUuBTQh6zKP59Zepipyb/Chb8NA7fZxWUgd2P4q4peDr9Nj5yW5CD9fWu2Pp3jr1/W85PIC8qNHKM9FmFFNFcyUgjYD62aOoGrWhS1aqNc8BMLzXdt/KNeJ76DtrBEfD4zR7rZ8ab42vNxgkxs8CRERO4usU9Few2TsKcyh1LTkxHQccGSfyBbuR6V9maN9cbbek1tP3dvV5mRrtg== 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=o266QWawPXuMgw57nfDe7uEF5kENsvQadZc8AxangC0=; b=wpCt4DcGxmTGk6/mDUp9l2HN6iIi7ZWqJ9HqrGXVTfv8yFEaP/Hm/3y4vwi5QZNqhonaqobQL+21wjQJZibriwVS4CHpiSBdL4NLQpYqUFKUH3w4L1xUPMeo+gmwkXtBBCj2NJwe0P65Pf5wmMRJcyaumGNP7xWYKXTdZaCs8Xs= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:33 +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.9412.011; Mon, 15 Dec 2025 20:49:33 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 5/8] x86/mm: Simplify clear_page_* Date: Mon, 15 Dec 2025 12:49:19 -0800 Message-Id: <20251215204922.475324-6-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0077.namprd04.prod.outlook.com (2603:10b6:303:6b::22) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: dccbb604-4980-418f-8db4-08de3c1b735d 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?WcUCmnZSQxkRvvFFmlHQcmwSTFbL1/OFHzKekqp+Xuu19zr25y+11OT1aHaY?= =?us-ascii?Q?zaGc9HbbmJujx5dJNuTCPVaJznhK/mCebKw/gX7ty7Ep3E+oChOtzxmAg6S2?= =?us-ascii?Q?n5KiPgENl5jMU6sXXUiZ5vGDslTrQ1hKAvF44oQaWrRKr/EYPkqW8oBxchXF?= =?us-ascii?Q?sl+VhJ3zdQSP/fM/+cTy8g85txu3ui+YfJHNeI57xpKN/Qhj9TdY77uXzLYY?= =?us-ascii?Q?a0vpwJ2hm3quiFeR50iz5Ivt5rPWYWYr8sw2Tbv+FN+T3OS/UL/FniuwBoyH?= =?us-ascii?Q?PdJT+PVCFZk8KgwcID2ilWi2Njl2PbnccRB8RlgZimief9nqs6iSqRIdBfmX?= =?us-ascii?Q?F2bb6ufluRULMrsv0wAuVgndvAemdKLhur8SZ6stT1E3GKC3cPVHJq2hiJt3?= =?us-ascii?Q?41KdmFO1ggmRL4pEQ7eL1bl8HaHkrkpb50DLJSejjeodcWuvr4sZ4cRR3kdG?= =?us-ascii?Q?7N0MAWLB1kS01tY4HRjz/dI3myc5gm6X7PTChC9NgP6htiwBr6Pk6DtBATtZ?= =?us-ascii?Q?zzHaT/Utn9qRufKlMdqWTRI5gTiHQdZdk/rXEcM5oZ38fu1CNk2pkaF2ZSTJ?= =?us-ascii?Q?AuqzbQrNcktaLAdtxsrN+9YiJd48rJNnKZ7rsCKTL+eJOh9EgjS6XIyobFNB?= =?us-ascii?Q?ldYve9qILXZ8pdGOWKL8GngwvxApJZ9wa9hnBldw8/MtNd8amCHKL+riwGyS?= =?us-ascii?Q?UXr14NBrfT04yg6Cg90xqyuHH1eN8cD+4KxGMIUPOgOj/OCCUPdk8LZKft+7?= =?us-ascii?Q?PEjQmUKak2Ny6V/U2AaMJxUVTwgHuZPOwvQElixbGFz3eFOJuRq6BakYhiGn?= =?us-ascii?Q?ruFgJIriU0AoWDvwkdJlv9z//Ll+guXbZACUb8RT+vVzLCBw9EU/aOkMguZo?= =?us-ascii?Q?elh0dI9hlprt5Vwb10QfQGk4ndyQCwi7VuzZCPlyuDWRBhh+qYPxC61I/X9N?= =?us-ascii?Q?CZn1CEmsTJq2gEN3BCpAnrhz7+QjVegTDb2atlp+ibdI4Q2ig9TQUKG9SyfM?= =?us-ascii?Q?cLo5XPlEjd83tc0WCjM5s57Dr/KlMZQW+l9O0JBVMjK0Qi1C8OumO9IZ9MiZ?= =?us-ascii?Q?EHVqF9fJYdhXN2Im44f+P9yrm6iskBHRaErYhe1R/kXzT2dxDqVoIrqV1kWn?= =?us-ascii?Q?sWdbqkJfq18LYR9RgNGSIRoZy2fr1dwgg+R8jlQsBs2FsOzQc74JLjraKo16?= =?us-ascii?Q?u9RwYH2SOpPSrojcPdisWnnlQEq7FA+0vrs4hqUZ51rYQOxqRhxpXLbkc89n?= =?us-ascii?Q?Xgx/Fe7QWbfYxKAJ7DPFyEMSK9ZUADgp+QppNTuKfoDEJYbZOcEFe2P8k7Ef?= =?us-ascii?Q?j9CZZ/kH1KBDc/aUmJ1w8IOHLp5viUMVeXQzV35MTXC81044sN5CxI2tK+xc?= =?us-ascii?Q?3tfs42+li5nOx6hNewRvXdx6/SP8qTU/7AEyM04UPK6zCEO3YuU6t66hwxQJ?= =?us-ascii?Q?fB5RNG9bdY5B6R7+AS2WavoGhXzeJvZx?= 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?QMuFxebm3XyRcEg9yfPM45Bd9iZ1cQEnsCfvTPFFL8/tcDL17NmpqJ8LGGXe?= =?us-ascii?Q?BSVqPVCDRjnHzJQHWgtaD7ISTGSM7RzNa1Z41E3u3gn6fNOeAInHK23jb2RR?= =?us-ascii?Q?0z5ByADiYneEgiUfS7nqbhjR/bntRq21VCiN1vLnfoMlVnPh7rj1Sxj61H2R?= =?us-ascii?Q?y6uWaS3Ew7QkDIUia7NWx4jmVJAEloXPXa23DgGbKlULNWt6GbTZ0oXuXq4g?= =?us-ascii?Q?h2xC2I0piBs9VXR1M2x8geVfsk7gXoWW4DuEsZRs9ymFJC4dEk4Who3Rmc75?= =?us-ascii?Q?y4JO9AsyAJGqm3YB43YBLN57RRSWTJUqZgtmbVVE1m/lwz94g4jRTspFpQo5?= =?us-ascii?Q?x38iwYKIJd5mmo/nDKRsiaKU5m9MDb7k6rSaSkpNmB7pQ38kPMrqLS9ZGybh?= =?us-ascii?Q?QfivYOeAN4Sg/b8FIsug53ZXh6uXzDCDRSHA1inlG3sCYWb+uneORDtB0xkC?= =?us-ascii?Q?7eKx3l5q1ImzL/memdOIrbsKXVnuITuFp2QuJmquxNFjb+V5yQzmySOt/5Pu?= =?us-ascii?Q?urG41PU9PXxSk5Yj+qjje/QgHO5hdVPtvkDd0EfV8hEQjOjcX+prqRCLmtdJ?= =?us-ascii?Q?fJojZxj3oQ0nofjGMOi4V38oxCUhoACOeOZ2EBcqVDvWzDTbSm9gLy5dsOqe?= =?us-ascii?Q?04Fuuad5NzuUnenyXVd5+Ty/dNfRtg/ZzhLO7y/q1JrW7jUPE9Ei0x4Vb1+C?= =?us-ascii?Q?kTDzfqdtcgHtaVXVLOyNNwSVpV1s4G/teadZMVIvxyqh+wBvZsksXx3QtDQz?= =?us-ascii?Q?J53e/dQY5VJm1vDh7WdI63AvVuLgOUJl4Et54zt7BxDIh+KHeb/kd9IfmXGT?= =?us-ascii?Q?g4qaD8co8Ui9IgMaiFrkjK0lwjNTdtLVRsoGFjIexMNeHlG87gzinJsaHzYW?= =?us-ascii?Q?81nHPiMbROLIa2AY7XHbANXOyxwIq4D3lmfqPg/nYUTLWGyEIcx7VGr3beVf?= =?us-ascii?Q?JwT7TlHncm2kjfOkl1xmZC9cEdhC1BTtfUdx4MookTNVfhk2x60mweo+M/hn?= =?us-ascii?Q?1/HFadGRxVTOD/E4PYDLkM58IXYebc2Y43qtgKnKBiGkuDhq7JUGSHJUtAdY?= =?us-ascii?Q?XEskPeNh4AU3FIG2hXr404rgi4s638OMpg/9yNL7CuZ9JgQIfzIld8YCgEVs?= =?us-ascii?Q?X4Htpm+8lcgsWLpg0pApWYgG75UR3AbkJdc+UsuVKElNRz0qLdv+MCa0Svi6?= =?us-ascii?Q?lVXjYA+2kTHdy1mEdDszf78yLQzV4dHSLoPcFRVhzvuLnn2e6cnuxCS4cNpD?= =?us-ascii?Q?uMha51WYhXCAYnoDn1r84iUJwgDWfLH+eg4v7P1Cq0IB/BS1KKt3F8IB5nI2?= =?us-ascii?Q?XPu8hs1+BiO5I4rLminpS9X4hwPGIcSHA3ySmoboPxyRXF6oOk4oO12RBKb4?= =?us-ascii?Q?TG4773SDsf+4czr7Iz6pjiv9ulAFaXnrGssINjToNXS/YH/8ayCqMa4CGx+L?= =?us-ascii?Q?vGa6Z/gQA2iGoCPAKnjUdoJcFP7k6Fq8plZZNRuTEJOEWxOBsMOsL901sz2I?= =?us-ascii?Q?nCGO6f9rZkVHmUQVFfkagzsIymxDFoU3uOT5VAISINK48J33FuNe5Z32f6Ak?= =?us-ascii?Q?N4Ecbn6gl20gmJVBCxMKc34PNze2wQCzNL254Tne43EzpPIz0K2FMmGAmaDn?= =?us-ascii?Q?UQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KetgQViei/iNG4d3aufhzqLzUKWNcPafdESjPkaJUJdf8LzAD+XRs4coJes1cSl6TtNUOrYZnsMSkHDNDJkXVh+o+4Maemqh6xGFFnvK5BIvj4a+GlrIBALLmi2IgkqMuw91J1GsvTobG+OcbHRhVGr8pmLHAl9ngvgjzuUf1KdayQyD8dm0EUeGEleIVMzKGP2AJGda5cqxHuC70PFNCBQXc3VeIKlfVJ0KGjQK/jHcJoLvSfDcPmBaewvXhqhKOW42ruU4MjsctPThznIA2y6hKmDK9mR8RR/c0hypI4GXLMG5NOBU68JJ/36Yinbe+TuFOZLPLYfLyV+otSPyJ3QpXURg5QkyOrUEs1dZgRCRCFmXZBUxcP99YS7xRZzn1i6Fe51at75UyUA20wUXH+VEMn08qdt8j0UiSNPlhLzMGD4upeTcpxuXEmzc165BFledlfPuC0wf0srzOKCD19SdG0f3bzb4dJCghNKe1BcrARE09pRH3Q9CXyZAIO3O2kycTKX8srHNHAaY6kKo6yAS4+UvvJQ6XbDiuwy/GH32PYRHrAx/frjzRum/VN66dMnm+VVzOEYvKYB3PfeK2V8azWIMOBmkAZDMxOQM2dA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dccbb604-4980-418f-8db4-08de3c1b735d X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:33.1806 (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: ki+YWee4skkJfrR9qtyQdtjShJZLKifE3y3CdBain5XMtwapj6pL+lA7CrG1BavWQACywXb0xNkz5MxVZN7uaz2memGgrr9DzPDdPArl8ao= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 bulkscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfXzMFc3UyGDs9B 3H0lhwZlQW8gVLdNZTD00kkiLfj0pcYOjTu0N86cl78GSHw5Vi01FUq9ngQYtYPSMZjwlm2trEy hDgDyf1dsP6jwlvGfbQ1P3SZg8Z6jdvJItFe0JwsTZPaXcBlzR4A4oHX4wM3jLvD/exg4atf+C0 2+ODqJHeomHTZK6aH+6tsjvZYSfudm/QJupjVHCoPc4GbXQ52mtugFSYYYNgNjEw+F1J+7fRzQo D2423zl9QNqtzqBMXMDizk1/jsYFRllcfSP46MnAwLe+cUZ6+68KxZjbOxtslwXuJ9NumLOPyUl grjBWLvZXh0FyVPMwwv0rwQ38slH9Sygwhisok8MCwZ3Xrs0nDCG6tKGYMYgOnoNkQKBfKyho1q Ji188Si4K7hLXs6LrJkIfwMKj43PSg== X-Proofpoint-GUID: vk25RwwQDNGn19VcRrh_gC35ngazV5Ep X-Proofpoint-ORIG-GUID: vk25RwwQDNGn19VcRrh_gC35ngazV5Ep X-Authority-Analysis: v=2.4 cv=dParWeZb c=1 sm=1 tr=0 ts=69407460 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=EufNLKQd2-G431giCzkA: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: - addresses comments from Borislav Petkov and Mateusz Guzik, threshing out some of the details in the comments. arch/x86/include/asm/page_32.h | 6 +++ arch/x86/include/asm/page_64.h | 67 ++++++++++++++++++++++++++-------- arch/x86/lib/clear_page_64.S | 39 ++++---------------- 3 files changed, 66 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 2f0e47be79a4..ec3307234a17 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -48,26 +48,63 @@ static inline unsigned long __phys_addr_symbol(unsigned= long x) =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": used on CPUs with "enhanced REP MOVSB/STOSB", + * which enumerate 'ERMS' and provide an implementation which + * unlike "REP; STOSQ" above wasn't overly picky about alignment. + * The instruction writes 1-byte per REP iteration with CPUs + * internally batching these together into larger writes and is + * generally fastest of the three. + * + * Note that when running as a guest, features exposed by the CPU + * might be mediated by the hypervisor. So, the STOSQ variant might + * be in active use on some systems even when the hardware enumerates + * ERMS. + * + * 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 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); + + /* + * The inline asm embeds a CALL instruction and usually that is a no-no + * due to the compiler not knowing that and thus being unable to track + * callee-clobbered registers. + * + * In this case that is fine because the registers clobbered by + * __clear_pages_unrolled() are part of the inline asm register + * specification. + */ + 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..f7f356e7218b 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 Fri Dec 19 20:36:13 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 7F6DD32860E for ; Mon, 15 Dec 2025 20:50:06 +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=1765831808; cv=fail; b=mOyBXiw3VEkElrecljU2DHlJUH5rDffrbr8exkyyKRe+GhYd6mtWrj2IstGHjmCurb2ZnlvvOy82USxyDprsNvVYDuYh6lsZB2X1w9FzRtQnxmi22cEIBf9ZjphpSHbDg0ouVoINmN4sdu8/sUys6Y86bL9Vb26YZHnm2pEtd9c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831808; c=relaxed/simple; bh=iZaDG2rPLonDzEDbnywTuxrdwskGQ5BWpGAsFvgBM/8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=kadXXx+W7Npb9ZbG/gPXWp08ligzBXANvhRByW5t9NGQIXdW/gZ9TKecX/Js/iaYfh1Q28IiLtTL8Jsh2bB4R6PUczVstBUTTf5MreTN1/1pfH4CgWDKThNhn/0XonILD7u+U/X3zha7YUJE6Lb2+8AgGay3Yup8yKKvy57L0xU= 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=sIfQnaEj; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=qUclpkop; 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="sIfQnaEj"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="qUclpkop" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJC7Ti2885738; Mon, 15 Dec 2025 20:49:41 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=slyyvH+4/5vvjVpAVAhVTLCs8HFHmx7ZSJZPGG8/pMc=; b= sIfQnaEjn7jv8EOFe7NJoXqOy4pPw56GEJ9cRQYOuJMiaJBwY2MpGURkWT9NuazE Ja28yHCAIJl9884YvVxdeZE1PV4Js++5WVDyLOS8UyS1GOGCa/eyhHBKEu5Ygllh nn1tTi7c0SDMQwFLcjn9xKVix3NtNaQ3yP5lClROcaDagRnG1TPeO3PIZYBAJqfm +D+ymSerjzKwJmnKSFWaopqsj1hnlpf6ySUFmH2s6wB4FMGwNEzXQGxVOlXs9l7Z HiWWDBw2tJ2cW/Ap2qE6U/F1jdX1Nmbo3yMT9yLfYW/zFTqKaIChxK4mfbBH6KH+ N7MGM5XIR8yqNGCqC2OCAg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b1015tsue-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:40 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BFJ1N2j025193; Mon, 15 Dec 2025 20:49:40 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012050.outbound.protection.outlook.com [40.107.200.50]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xk9p1ab-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nX4vP0U6eJ8Yfr8DWlxvbfqILecOPbf11bDbr+bfzTYOVaJnZwanqcCjGyaoFYsGn2T8DsBaRqgXXab3KQ16naJCvs16Mlo8eYBsoevXbS6JTlBEokR9IfAvvJBFuSiaG9tlC85M4l1zV5sIf8ZH3r4SKspKNjXLSPc/B2UjVTYFjhEW44pXOCKyrF1JIKuDunMYuFcqNkPYVKgLR1qrvq+QilhBcBXvOh3kKNE78cTZbhQO1IW6LbxBzLRmmNjt3NaEs/WMoH8zeK49+LlYxgRMv1TjdZzkX3ZsjRR0UFaq7/jEUd/1SbSkbc6ZC7H3cJn1srqyRIimWTHM6S2nUw== 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=slyyvH+4/5vvjVpAVAhVTLCs8HFHmx7ZSJZPGG8/pMc=; b=t3as7O0Ps6bXvLdnwQRual0gjL3MjBTY9+srTCROQQI93M92R++Rnt7a4FalNBIJwKBahLpl/4eWcW7/xHV31WCqgA/v73/PsT7H/+YBi0oSEtRJsdXP4nWQQq4hxM7JMTSttK+OtlKWNN1wBQ3SETP6ze/8/Qw1Ly+rv9pOemwkOCZoYGl6s+wvuFPnGUjZZt9txoTvekan9X2uAGryieEBzYE793aUjwGBGfRFly2CLs++VJlFdHQp+iGWyipot67MiNJk3QeYd55SL5hryOnYpOVmESOTFedsY9KZ/+6TqKlm3Q4vijBgMGHO6U68Taz+U2HY9lYIXU7PMkdRkg== 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=slyyvH+4/5vvjVpAVAhVTLCs8HFHmx7ZSJZPGG8/pMc=; b=qUclpkopC1emcAH9J70C0M5HsPYHm5YFIEmK1X/LsKENadLTX/KSp/p4X5+QiiX43NGzO+mKzpHWolFHT30L0BRRPjpEmUBtsGCJdBV22faWjnUtsWYgHxhs62bkegSjnVyYB5l/Vv8YWijDgW0VeHUk/R8pW0F0sDa7etZeDDQ= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:37 +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.9412.011; Mon, 15 Dec 2025 20:49:37 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 6/8] x86/clear_page: Introduce clear_pages() Date: Mon, 15 Dec 2025 12:49:20 -0800 Message-Id: <20251215204922.475324-7-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR02CA0004.namprd02.prod.outlook.com (2603:10b6:303:16d::19) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: 56456102-63ce-459f-7f57-08de3c1b75fc 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?M96EZESzD+6o8egNgwmuoE7PMzYuelbz+Z8TrCDre7dFhQzi3qtLd2ktOAyg?= =?us-ascii?Q?zAxvjLkJLOUkkNElbu6IhlWrpF8XugTPEnR71LOhQNy16nTdDVSyqWPBf+5O?= =?us-ascii?Q?fv0naraWUH70ktgyIrbNK4nc4IuqyRx8fN+m7sEXphDvhFkuiumPpAUy6qa/?= =?us-ascii?Q?cWVgixwbmJkg95eslQzsU4ZXZjg4DFK6yJMgzRqBmY7PTgNbCQcJ0uHgQmH9?= =?us-ascii?Q?fi0dV+8YJvXShCMsqaln7G79wafHqU3FlpGFj0v7baW/Hg4W3PKcY2MEWBvU?= =?us-ascii?Q?5+AYB5/ZxmMZ8+WtqJsmZuL/XK+gKrDfJPcacwa88+pUa/3Tt0ckU+/kJRdN?= =?us-ascii?Q?Ao13QPZl91okhbw1NY8OAreynrelNQlyPDqxfB1AP/NHlT8B08dXkg4Zg6yU?= =?us-ascii?Q?f89FLIG4XJqcdyLHpsqL0rB48j8YGhEOxEzya1xTADEjbWZLX1fOYrLOxJ0H?= =?us-ascii?Q?UR+x021vwi2SZmlEKG3Uy0CQTXS9NnDHgMs2RCs0F6mfvE5r6CHhKuVTuhGc?= =?us-ascii?Q?DFIhkpYGmGoUdxIBSp99YDxCU+AOWZhpiN9/guCYdiUd1ocerFeqoTcXVBEY?= =?us-ascii?Q?GK/UNrcNPxA6yBgb7CzneAL5bJi4XVBzwkJcIJ+Q994T6B2RIDGMUbtTK/K6?= =?us-ascii?Q?UaaLWOlUboj9T+7bNdztwr2DL0c+SyeZWwREkIkoeb7FT+X+9sODb7SeXC70?= =?us-ascii?Q?VRKj9moDPS1jUUaLVcN832riNF2FXbygt3bR7Vh2JzBo36rEnGj8YUhulUBC?= =?us-ascii?Q?29gHzf+n+Kn8BvdAocp5cwLVaS36eBtE+WrAt+W/okVzYb7jr5j1XLXmOoGU?= =?us-ascii?Q?1tijUh3Se2TVeVrBaxt9d5JkaVkBH6AfTesQ1dnsFxHokKvxyv19+GmRmLh3?= =?us-ascii?Q?hi2IuagV/Nz0JRZfamdo51MjuQhUHns+Hccxj1K/kTTgPXr4JzTT3iIGACXY?= =?us-ascii?Q?VvPKGP/V3H1ZFB/VS37Sh6dCyCMZ/ztO9WfTyungep8lFJE2dGXPbarrxggF?= =?us-ascii?Q?/ohb19Vt4bm3XoQU+fHAK0dvH9aLc9ZVZpT1A1HXH43L7XGmZrF2IKZS7CdH?= =?us-ascii?Q?edasEUpg9e5l36R+eOaNfD/lTsQ21ZVo2jXQWRHu3PHI/j6rf/M6kUmrh9TY?= =?us-ascii?Q?YsGE7Pz/mCTACcwAGsrdeZdCW/ZeKlb4cMEfFo+A5mdetVX8s2/rROKotPEa?= =?us-ascii?Q?2idrM5hSSNR4ny8Drp6K7nomg5yxiPmnU92aTMVHk1UMuUqHP19ISfbQ5W0V?= =?us-ascii?Q?FMqwKuRDzOJ9MTroZVBta+Hli+90c+5YQTEx5lh68ZvMUhU2N0PU/JCYkl1z?= =?us-ascii?Q?tufxFxWNpcu2iJeCRMQKnSefCdXD45Kylu/HCwMUEIni+hleHQOu/6vnvslX?= =?us-ascii?Q?tQ3rZXMIK3CRAPr6iQDdGeLVjSEa8v6WIow9Ijh4283lVumjzY++gJ3P7WOp?= =?us-ascii?Q?5tcZgfKK5lG+Tgnt+1OOpsmh3QogTCBA?= 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?bkTIYVovJ8rYzJLbXiEcVS6axA0Gk6Fw4a4LIfi7o8jzFYfGMrS8e/6nl8VT?= =?us-ascii?Q?BUvB9KzFvc90r68M01oM9ZwepL0EkHGFnG5J/uV5zQWXyWjpHR0W9XYRm8Ns?= =?us-ascii?Q?J+eLxm2r/Uug6Yp5Gv27Bms2xKer5UvIA6ratPZhi6yfY4qZaVLGgWxtu6Ef?= =?us-ascii?Q?vcRKFt4LyobFM/WTwGTO1OjYza9r7tCcIJ3jTg2O2MPIEbTl3vSjCEPhHjlk?= =?us-ascii?Q?pQZhnyvSEuFCNS6fe6M7YqEBvOQA5Te7bA047ppyXnn5HcEkDVNpSfjdq/ER?= =?us-ascii?Q?NwArkXpfGjVyxCxCiJSp51pxODzRtQalnXO2DrXlQigWj5teHitKWK0Z8c4h?= =?us-ascii?Q?zvqcK87lPG0099fi6ypGXPNCXAIbMW2ktuiUaA1sGSVIxTDyFGNzHXh4yDFT?= =?us-ascii?Q?/qct0lBqYcYE3V/YV4bVTtsD8rXAllql8lmo9IOgnsFDlgIIy4iMQ7AI0vTQ?= =?us-ascii?Q?p5W5z++tgqZN0V9kKkiqFUWAZf5or+44OgEOJ5n/P31wnLoijVxuEpg491qS?= =?us-ascii?Q?ywy3vGhfa95SSVUQ2DeARPN9ncnQ8men+79oyvVt5e2VPhxRxSR+4BsOEI52?= =?us-ascii?Q?v1dJ+FjPTjUT3AknXsZHzTDLCB9PJ2Q2KzdYmtXxoi5YUoO2tJfvhuUIXdUD?= =?us-ascii?Q?TTSvSrPgXCp+zCB6n4HIiwtO9fHZluAKP/R14V+8Xf4yxhSQoK8QUAFMqzd3?= =?us-ascii?Q?t2cOQZWz5DSZNwiEoxmBHGYAc4BSiqpr7kFoJPzImFbkGnmYXK+DZTnXvszw?= =?us-ascii?Q?SDswuxaIgXxdxTuVwGVF1rL3ZmQwHFw7vZKxIpLfc60oWPg4wC9BniZFyA5f?= =?us-ascii?Q?B5YMJa4OVYpROPcth4Vdq9uoZNb1AzC3b0c96/X1dI9POTAB5W4lRfLAr0qD?= =?us-ascii?Q?ltO6QnllkFaFMu/OdgkrL/XbNMq2RPpwrhJ7qolz5L/pbz1gdtNxqqmG1DsG?= =?us-ascii?Q?FH4eTHtsmG2S7z0mw0rssG/E820oM9GWWzFbgpJgTBqdg61W+VyxXOIxmCWz?= =?us-ascii?Q?m7KqBr1Jtmdw2z1aPDGf1oSOZ/aqqHRdC3GEv6vHOWTeP/AuJqq9/Gr/Sfim?= =?us-ascii?Q?iT52CjkoErkzTncNs8Q+NJUS64NIdeee/34yzaK85Nbmq7rlaFrfZDd1mpz3?= =?us-ascii?Q?oMRZvjpW8Nt379LMb4f1g2NEAHqoGWtCxkCowHLEPrqYbjPGAor+QTU544eI?= =?us-ascii?Q?Pfcu06IErMW70n76SFbLqGbxdgInC7IWXjWdT/WOEnTw2mtKVZo0gXHYskgm?= =?us-ascii?Q?3+YKTrCSdCMXjIMx8AxZjfTyPD+00wDK3DUaN+3Ek5bv7Hn4h5apoQcDIBGc?= =?us-ascii?Q?LU11TsQ4JGLRj7e2ZgO+RvreaONI582JtYxmfdPmR7OA1AI2YfnqOJhAAy8K?= =?us-ascii?Q?XjXsv62d+LijPcTC/fNnMhV/bNbFZC+ccRFE93Jec9EessSfZHXpgXpSqjaa?= =?us-ascii?Q?Mj6X6g3mcHDQkU6AO8o1gTk8B33ImE57wRuoOVyySNy5XQ0CPPQNUmfa1VTZ?= =?us-ascii?Q?7rkMFOQdyv4bsocmxUtdgFu2OmAKBhuNRXxk3A67r0e9BPAKz06wm8uB7B/l?= =?us-ascii?Q?EaSLCAdv/9aMrFpMAFObphQi8Z8d7W6RpkajNwHEOIk6gBlzGR+cuJqYe+q5?= =?us-ascii?Q?0A=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ayFSB/MWRKA8yeTfyqr25k0yYZEcG73CEXhnkSyPfy1E10sfDtggMQadg5Pviy73Riwkl2tHInpf129prQ2iSw5/uTPlFy2WkbuZuDBoLDtEUFiO1eLrIg6N8mACfoGh3g1YHqeYFgjOTaQ3VzUIgUVJACy2wmvVNnFpcOBKLoLxRwPrKANSp3Xh+t9XYiRyomEiM+wy7fEViNS5sYeZ/nD6Mg3aTfMEvCqj/MRnsJwXWRDP/sCmF/2zyHk67G8zQLIYkOLboPJsw1Hem6g8Fh61rnrGLbkT7HBfD8dmFOviv44n9BeJWYZuSTXZK6QofcjsX7SGhfThoVuteINV8lnabihuY6L+MKx5rJrSP9R+7fX7XQSl4T/0eQ8cuMZXDoe4BE+LV3J3m3ExaGP63qVOrtom5TtHA2MBDf+/wxRCA1jhZbdAmZud9n/+55dJBDuuPbHMAX9vSYuq0MUW3XRHBW8rjQwDr98fsdVXUV0gY4x6VZB+ED1rRUw0aR9fELVbvIdDNAu/UPPljv6M6JEPCuGs6/90xghhX5XeX1YnP9CrSSlwlpN/IbN48YPgqgKEgGgUvG1CNlMNMAwqOzkVzXzpRyBhXeDmP1oEEGs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56456102-63ce-459f-7f57-08de3c1b75fc X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:37.5545 (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: umW+fNuiLlpq0GIG1OE0hl9E5oCpZrfUzrb5mwsl6ZPgwg2GqD5t8SqS50wsx1qserVrRQCLb4nTvADg4CHpJoOA3VFm1YUXpOXZxGBcunY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-GUID: Wuu1elDw9vW5M3BHXOHFj9TksxsvSp4q X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfXzKN2CFyXniFy MCv8RpPRSrG15fMxz6IFI0RAj0tVlYqpxKsbMwLW2/IRQ54w6A90QlEvmoLMVpzimIeICWCcCCg Wr2oMmOCwqU3YkIJD6vPo28LHohRQpEJj9Wx43NpStf9P0oBtXKvvmphYc2XuftRfc2xQWrh5AE 2QTJX+jPPgW+C1rGNWdUe+8xQ3DBQmisU/Euv0yJx3Wz3C3qtu2r4aX7cRn8AYIlrTP2/8LrXyg NIK3uHawsmQJVtdIFaPBpRCbMXmtCbLxtKWAJDgeOSWGPF4R/4NsWNuGEATrLgUEzJ1XtrIX0wZ tgaJKZdit+S1FaOnTs4bCr3XQ9oCWxuhYveW1BwMVu6jW08M6ny0Uz7rMl57M+xMVMgrMXCswg4 3we6Yx++rC/vctPWjU9BrQFwwjoA+w== X-Authority-Analysis: v=2.4 cv=GbUaXAXL c=1 sm=1 tr=0 ts=69407465 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=Sq42x_x8DAdjSyyaoPcA:9 X-Proofpoint-ORIG-GUID: Wuu1elDw9vW5M3BHXOHFj9TksxsvSp4q 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 Reviewed-by: David Hildenbrand (Red Hat) --- 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 ec3307234a17..1895c207f629 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -52,8 +52,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: @@ -81,11 +82,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 perform unpoisoning before it. */ kmsan_unpoison_memory(addr, len); @@ -106,6 +107,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 Fri Dec 19 20:36:13 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 8153E32860F for ; Mon, 15 Dec 2025 20:50:06 +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=1765831809; cv=fail; b=r9Wfsd8xBxAtllRmK0LCJF1cpUqG80rpFD4vZL/9HuRq2nYuy3xlroIGj8d7JnFAQMLcaMYZsd5r8AVszqRUbM+0R8cbBbdeAl2gu4Tr9kSuafAYWB+fiRkWlukMhTey9kUA/YoBfIOdXdv7KhfNNENMfM5ryAQrVodZgcVKFk0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831809; c=relaxed/simple; bh=HK6tExxTY2AEufxhX0Q5HUJ9IFFpS/HvjRKCkqLFq+8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=YZrr8Xj2J7MhI+abahS/vzRopLWg31TMuk/ukPpiUcXMLg8boT4Dldc8qkiFoZFn9Ocw617WUx2wfSytxKUsZ4KJTxHr5oBEMhBGe8C8wzQPxXnELMqmh/WeFmt+gmKnY6JbZUbrhiWI0lYD96ie5U4zFcLhjUaMmWdGaMsMiSo= 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=RoKmkN/l; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=AqoK3bfl; 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="RoKmkN/l"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="AqoK3bfl" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCCHH2885807; Mon, 15 Dec 2025 20:49:41 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=O/rQXT7qceVAudkXDvxlbtA9CoQZCHf9ReaZH6B+hLo=; b= RoKmkN/liFgJNgGN9maw8whEsHuuqnTmPpcCobp5dEcFg4r9PSit9byqeRyix09w oaZba+/u4crnia1UKORgyDJ3ECQR32ESD1Kyvy6yH4G1MbpnVmvYwl0TZD9T4j7L W5Aixhus/2XxY03+WcoNj1OynfKn5MpT47+4BxeJpRDEeutLGfmBz/e26bq1fUvS DjL5Gad5WIhHgfOQ763APcmyHMq1IZOAlLQbD/zDlFpi/3/REUieXVdZ5oK49Hjp rYn8r2JuyK0s3UKEVRAv53dBcQfvuU1vkCP8geMuWg2hfwhwaZQg1TTqvWUU9uKn vgTslDGPj/ZnL+8BQQKaNw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b1015tsuh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:41 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BFJ1N2k025193; Mon, 15 Dec 2025 20:49:41 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012050.outbound.protection.outlook.com [40.107.200.50]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xk9p1ab-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SM61j3xUjA99Rq1Oz4Idsesa4iarrD59Z66AstsIVpFbDCDP9SjZ2Bs9HQPm7y/xR9okct0fzXvkeK3IjuoxlaS4bYcMdnL1ArFdKyK/NlvdYMyw5S8gPt7Q6rqzWWGCj8euAytx5WlPkQoGVGWJvwqawvigclVCv+6CaLleqC5yjHXxXmiSDOfrt+iXgRTf7V/QM+NYYjvdBCmOOSJenInT+WDQcduW9Y3xO7Z5bihm8mVBIcnnezaHG/bP8kYWSRVCbfI+RoWb0VxBVJ8Ga1Oeu4gPSE+vVWm01xPOJiJNj7iMr97PbL5Tcz4FP2sKUIg9/+UhNuYGHprySe5ayw== 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=O/rQXT7qceVAudkXDvxlbtA9CoQZCHf9ReaZH6B+hLo=; b=RFlFUCt5f5rVOmKO0cBfixUdDBhAtlo2gZdpvQ7gplDCQicl/A8EyC9osX9EP9I49hnW1UOSN13J6RHNswkWjAZUXAOvgKq99TGKWOoQAfAWMHshq2OH81M1m4leFElNXBhmJR05f/2WbR1PCmysM/fxCjsNNIdsvoCTQLEn4M+YSwwRhL3LHg442/4aior5e77ROwo144WLlpuim6bNlMMLIdMUOcy9qXT/FoTM9n8AxjO9zGnbK/9sAAfM2k8wo5qzRGEs6FhZLXi4ari5pgZhxZzPWeWc70cr4eljJOxBQuOjVIHeY6SZDtNtLLJwvZZYBho6Vjxxd1iMJyfyKQ== 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=O/rQXT7qceVAudkXDvxlbtA9CoQZCHf9ReaZH6B+hLo=; b=AqoK3bfli3eAwYnRD9Ni14kXHzMI2ecl7fIZ6ywkbDu0ZpwxzOeo41UouJz0uwclw7r9G0qa0RtipOJ9oNxX589Io8zwsYBk3Hj224DLBRKPI/iboaYoatgIlZIsxiOBsKk3YlzdozzjAif3DMQDz1HIfFTBykIPMmtNGNTeoRc= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:38 +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.9412.011; Mon, 15 Dec 2025 20:49:38 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 7/8] mm, folio_zero_user: support clearing page ranges Date: Mon, 15 Dec 2025 12:49:21 -0800 Message-Id: <20251215204922.475324-8-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW3PR06CA0019.namprd06.prod.outlook.com (2603:10b6:303:2a::24) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: dd1bb61c-63a8-4169-f163-08de3c1b76a8 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?Q49tabC/yFQwebIRprMI8ZfdoZ/dsAqKzr4ggS0jlB3s0YNrejmd0taaEalM?= =?us-ascii?Q?15jwV0H0UAeCBRmRC9CDwWVSp5YMFF1CSJVYWbGcn78U6z7gMUsdjS7y4fzK?= =?us-ascii?Q?HNm0b38P2ovCwqDIw9xzgLti2fUH+3lNvugU3vmfSIC04qe4zu5cHtoCoo4N?= =?us-ascii?Q?6643efLEesptGEsZZibR7T/ogVWc1BxM6OBua4B2ikr39p75rPepTgQwFTOp?= =?us-ascii?Q?nrdGwpIrZP2krCXGkVT+y9zsp7tv2tKwwQse4Q+SzAK6KB/f5hN8juujGA0R?= =?us-ascii?Q?Yyol2MTgpldndbGNBl3D7ZUU5r7ZGw0j49eAN4hr4U1HQmC/EI59StKEBvFB?= =?us-ascii?Q?2s3ygb/gVvknDIz+jED4lbDF3W8ix2maRQCPR9Lyk3RYHtvauyh6efX3jwBE?= =?us-ascii?Q?XevPupfuHaX3AKx2gsuFkTnrE3tu0Gc3SCNdraCS45g1q5/kJpW2gvtnHDJN?= =?us-ascii?Q?1rCYbryjSEjzqJprKROBn3vqVPVcOq5B1Iy6hh49KlpFYVmICgpGQ+mYRpu6?= =?us-ascii?Q?WDiPzC3RR5GWfFLYMAxf9a5yn8nPzFtCt02FNwB4vQnQfwHx086CJ8SNDhmf?= =?us-ascii?Q?zd09iJVetIBLNJvagSj/DQJqNgmMsf9d7A2/LcqkuZXjZD0H22Q15Um0xJWT?= =?us-ascii?Q?633o7zddH+FqHqCuVjxcIhu8cQ7JIjDK2EboHoO+uSFR9EIw7P2/fs0GaMs+?= =?us-ascii?Q?qY6PSncupwP3vU7sv7OMxv1KWQrDmOtxBYvgQGIGlpAzEsjJtExMBB2qMzvO?= =?us-ascii?Q?7/IqTVOBzrCSM0eXHSIqHauwAhZ6wGYWIB5xLn1wEcPVscRIL++Wh4JTu71U?= =?us-ascii?Q?KfkGQ+senbcrrdHCvNLWJmWWMn9jigXQCLRNVTtfT2Zi/zSsB3UfSITZ4s/r?= =?us-ascii?Q?RoMrAsFE4k6jOMDH1k0g2NjBtPkGIT2K+p0E7sqY3xaxTloJ7kcvgmnYe4ug?= =?us-ascii?Q?S6FLKvgHqusY9+xSNVAVeweSj/6IZHvD2sXBQZWxxpEOzasZE4IMYTnjtV+1?= =?us-ascii?Q?SpeTlEw6+HYgksVjvoVIQQUmMof1PegwDW/CidxYePmrDqH8pfb3Rq8Nf0cP?= =?us-ascii?Q?mrmL5RqiGHU9K4TnnaiC1mPHnSvVgOSqOop47oN6LHqnl9WYXGEssxlevgNc?= =?us-ascii?Q?Qg9QWo+o8MsMZb1S5fQtY1QGSAMHPLXkAGYOHStl57YCM/zuA9qTiUpIrW31?= =?us-ascii?Q?LYlSXafNf0SxvFJiZMDTTh6510r628V1vWsdyjYjD96iKmJwTxaEtB4hQame?= =?us-ascii?Q?P5HV0iMqnCy9F3Xka6WrdNxxMJHHwxlH7mBwiL8rI3i+xflDjbvV75JsPz4I?= =?us-ascii?Q?KUm7Z3sF9UqdJwQzvxI+rWurISj0pkGFKzk/vUMv4ETy1fOXobSvgGjgs5ro?= =?us-ascii?Q?1lI+kgW4mVbyU4ePi0fUk1+1ZKSgKbAfr2KrNrLGd9TlD3odh8xd/Qdc/2us?= =?us-ascii?Q?bvvq7atSbeUsvR/K5PeqUz5c1DrbiCLA?= 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?stzHyPs2q28o06+EoYZvqcDS/JRvaO6Ms23ZKaExyJpSp7VeT5aMRcVJWz0l?= =?us-ascii?Q?Wv96R1LLJZ+j/+BrtqLHtB81AQmCg5RYEPsbd6moTAojYQVZ5GF5YqWO0sXt?= =?us-ascii?Q?PhPcqlruEkRL3Sf4Qo6O1qzvXOlvYpzHeUaPHnk/KEJVXblDPnJnaLPJEMVz?= =?us-ascii?Q?DRSQztTZUyrUGeRV4+LlfX0mMt66RkLz6ahqr3gkGUm5WWNLAlSiGrBIBq+q?= =?us-ascii?Q?JYbqVbBmsZ2IxH7PCFMpjITkqbC2cE4+aJ9Qsz6LjSJz5z0XJny1UxVr/BMU?= =?us-ascii?Q?M7PW7WmCQWGKymDLz7KyQxN8thCFNNfPEWhdp6hfnne1E+JOQQPKLoPLvaRm?= =?us-ascii?Q?KtyUqTvhFXiP7r5gLbtOlFRPEHcjptwRhETQDN5uCtdpFQElEqXYEM9gIW0P?= =?us-ascii?Q?EH6NJejGCYEX0Wm8HfEsHjkrddOkuj2W+uOP27VFH8gv87a2CU+9YQTX/EJI?= =?us-ascii?Q?GaCzPaKxgrM2xGFKSvzHHFvrLcWcog9TqmnWviBmJGQSnEYnjwe9MTwhKd6i?= =?us-ascii?Q?X7BWwXUagx1f/I0B8CtZErVj6NPWUQ6KPT2kgZUW3747oqWm99ctL7kg/u/U?= =?us-ascii?Q?0nTxdWejY/musHiAp7OZzoKtYbOmGHztiEsnrO9e4tNyeBmDXYO44P9nBbc8?= =?us-ascii?Q?sW2D7AKIdvydG1N35sx32J0FmkvAiieS8yODWsNjvu4sy9hwAd3flP5fD0pM?= =?us-ascii?Q?wm0Sen1fpbawttHZ5wFtXZSbldsLIomH0WfcjF2vaf2oVcjz8IyB5wXwM26f?= =?us-ascii?Q?x6yF7/h52Syh5mu8iYVTqqVfOQ1UBV6SQC9nJpkriPPjdAu/50fYvT1acw3P?= =?us-ascii?Q?O5j1b0faULN0zsQTl++OwE9UUQPQ58VTjlECrs7WqZzPFVeFkCV0Rci2vopw?= =?us-ascii?Q?+g1rOuERWCKME7XgqTBGEQBIIjnUlA6PDHEGaPSA0SmZrbNrdQS+2RYlkLp1?= =?us-ascii?Q?0qnNvTnVdOClLNsZzbh5luVLBcL01q7zW4JuZJn2F8kQX/teoSUDZ87RsSEM?= =?us-ascii?Q?XEDDJXeC/4dzPBUGNBmeZSrFfCuTpJqfKD8uWwXv8fBDMmk2w8nI83b02v0z?= =?us-ascii?Q?hsc3+68aovjEaPcdV4oH1QgpL2eBZJGU4dg/X4uXM+2oFI281/JeVEoc4Q5P?= =?us-ascii?Q?kJtCkStAumMrFs847PWJHLW5t5ISQvw2ggLSDtslYYNmc3Ap2v1VFl0Ee00E?= =?us-ascii?Q?OduJmjNFRsFFVgO2kusbhpcPMfs30lxejkszi9MZZJbsMSj96HzfsxX5lekR?= =?us-ascii?Q?9wIHXXsSa8mXI8LaezaWrT0dri6KbdDIYsiLQ0JQWVLFKcjTCQT4PQeBempl?= =?us-ascii?Q?9Iz1nBbs5ghWZIOaLnpfadLgy+SAX+If5PWb87XDT7KpWC7s1AFiQH4uDf+z?= =?us-ascii?Q?+CR32vVmI7h9qa5kE24rDo3MYDNlNg97WSKbQrh8PYPmK2ojoWE0aqgtVG2p?= =?us-ascii?Q?ZZy7kqTC6TZ1sbsWzhASdeS8HtLlOoIWdGE81fXVN+Z286dfAfvo6yx48SPd?= =?us-ascii?Q?g6fE97DuCzu5wRA6vZkGsUEVEvW6I3tdFPE2th6RAIp16DQoQ7C2frB8PdsE?= =?us-ascii?Q?bOfUtohri3F7UJ1JPaui8JkBYqImWutQvll1bfLzKQszi0t1i6mdANipLYEp?= =?us-ascii?Q?mQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JQwGZrH+WxK7ekCLi2YjjZw4iYDjMC0d5gBuHxw75yRLuPubFKP+dgKF4mQZUxdDAUaWdXdtKv1xf8MfMJdhRwAe0ANpE9/OMFO6ONTsp4yfXmT8Ue0bLQxndcVSUZTj2WWuIsO11NJuzSstG7msNq4fANXnrOWz+L3gjD4icM6UXhKWMfOSbjM0X2QN7oBpwr7CewQylDO0i9C3XDBYKsz4VfkT9aZ5GwQ2/r5LUUGJ6avPUBxDgWHVjO8sdZCpa2UgUqDfSaqandqNbPuIh/cMaz6EaANZAtZnHsIXWpwu6oJTKyn8SbWGfkOZ0CAQ6OfNUnGiZ6AOH02u5cHSiMUjZuzn4WxMQSGCXf24GBrkWenU4CELpqjSh8PUoqkvuaejZR8G9PgDuHxbuHbdz9NEfHvgCBxoc94iNGnXBY0rr8KLL8UsQg8GL/s6W/LpGqKLJjrXWozf+yAzMbGhRCn/156rVd6fyBzi4oC6R+BTsPpEgSFaqbRiMTanvYAb+0DUq1+5LSl9IG4ik1yvrbxsYUJ+rPx0VL1j6ETVCDrO/6RAaMFyhSw1eQQsgvPjqDTNsjC/RubRc2mO+6DplfmGdcgnQWdGmWSdOex+YoM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd1bb61c-63a8-4169-f163-08de3c1b76a8 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:38.6816 (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: JuriofCyJ3jw/DrKh8pxrhA2a6fu7ocHmjZ62YQtFy68OHTYOPpv2429J4+2obIUKr1rMILK3rleNDQU+WP5S1pOIVgGjmuScIhnPvPnJWo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-GUID: A15wzS-fDSlLYiLclI6oIeO_tzaP4sLU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX7KjmDqZqCVsx +CmSWi0do3PEHrxHmMLShQ3uListIFok0arKbs0arI7hZCNK64zNj1Jgxb9jXw3WpoJezX3O2Yf Uv7sDi3Emf8X+ErY4reAa80TSqzIcW3d2whQc9XLkvb38aRyTWOpe7BhkLwZjw5S+yAq3vPhSJC xpj8P3hMKPkUoekEjXZY0g5BlokGn1AciF/Q3QAzR5r9lYEwc5QyhPGkr1Gso8nz03NaHcuTVkR 5mQ+2mTS2PmS6GYJ7rGoStY9BbCZCntpWm3Y8MqHRMu7hmitxx8bgMyYiYY7SE8x24s605YwYVj 9QUdQZr/Qf+HgsbGkfPBMwpl0hCSKYX1XhLbMoHqF3LyvJmBAF6ULd0UJtYLWuqzHiylVSA4SMR IoL+tIaodNbdoQ8ujbjqDGAqR0QEDw== X-Authority-Analysis: v=2.4 cv=GbUaXAXL c=1 sm=1 tr=0 ts=69407465 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=yF6BjjoBLw8LOi3scPwA:9 X-Proofpoint-ORIG-GUID: A15wzS-fDSlLYiLclI6oIeO_tzaP4sLU 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() allow clearing of the full extent (1GB) as 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.) 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 --- include/linux/mm.h | 38 +++++++++++++++++++++++++++++++++++++- mm/memory.c | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 62 insertions(+), 22 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 12106ebf1a50..45e5e0ef620c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4194,7 +4194,6 @@ static inline void clear_page_guard(struct zone *zone= , 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 @@ -4204,7 +4203,18 @@ 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 + * instructions, might not be able to) call cond_resched() to check if + * rescheduling is required. + * + * When running under preemptible models this is fine, since clear_pages(), + * even when reduced to long-running instructions, is preemptible. + * Under cooperatively scheduled models, however, the caller is expected to + * limit @npages to no more than PROCESS_PAGES_NON_PREEMPT_BATCH. */ +#ifndef clear_pages static inline void clear_pages(void *addr, unsigned int npages) { do { @@ -4214,6 +4224,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 + #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/memory.c b/mm/memory.c index 2a55edc48a65..974c48db6089 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7237,40 +7237,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 Fri Dec 19 20:36:13 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 7A0EF2C0287 for ; Mon, 15 Dec 2025 20:50:22 +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=1765831824; cv=fail; b=EEZSQF03gfYWUcoJ1mLMoCBRnKaoUkB6SAd5nTdWn+vBR5Ue7uonc3200sb2jbYUHSg4T/3X8Llt4J9ZM/OhSWa4Ad5LjIFcd2t4udnPhQHwZ5RoQcqJGE858U0AoLlvXsCkqYuL2C9jhTZvK6hVG7KHrMORJUPDWJO4tDgIL0o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765831824; c=relaxed/simple; bh=I4ivPWO6CNeHckAVc9tO/4kclQPR7it/BnxFu8ROqMo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=iUE2OBH0m6xa1ZTxvoVJ5prVUYiEJ0n4J7k/einqOnfdhdQeroudQcnuoLT8xNW4DdxZWzaSxGUAaj0SzHGxHYYW5Zd2x0FLQT+14yFhSfHmY1lxTibmPzrknWPjS4G3+FhCPAimE/dPkuLvMkRgvj/63kFl9HkIxJgQguS3/Yk= 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=V7gMG3ts; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=H2r0P5yR; 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="V7gMG3ts"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="H2r0P5yR" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BFJCBxG2854608; Mon, 15 Dec 2025 20:49:56 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=lO8eVg2iAlm0dYKuAh/vF3NqQMoeZZEphyYKpwFwkNk=; b= V7gMG3tslejU6jyHhZi073Pyfnc4BekiOaQBljUYf7gpl1434YQvwVvDZsSUjYdq mG4WMAx4JEye51FrFRVc4Dg38vyFEcyOWsKtE5Kgc/O7tnSBwRKilmZ0L38ZKH8V VinxHKBEKQrxX7jGGlm7N+Zp8HF40HQ5dCMsN7MeA+x/8JKP8Cs+0bFfUIYGA/D9 ITDT5ki2MbBEwEvTbyWY/3fCke3NreferlvCfWYynaMXQI6E+g0hfyVNw36VcEq7 024jZ+KvIZfjgzmXwSSWla4dL2JJBXeOF8B157v5+fI6g/ZbKAvgV4GDk8QDULjS VGMaHp9Zh4OHy4kDoLf9Xw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b0y28aunr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:55 +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 5BFIpCxe006243; Mon, 15 Dec 2025 20:49:54 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012019.outbound.protection.outlook.com [40.107.200.19]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4b0xkcehbj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Dec 2025 20:49:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qp5giSBSXYkOtlCMDfHsCH+vpUct4Zx1Nx9l2Jygj1TltJX5CibJODEe5iGiqXybI9Q39PtuTFIIWXvJHqkKwu/RrjFHxAJlqPLWHc+b7ZwpK+NYCFBAr7HIujy6LLuGP9R3O5GL43ECSdVswo2XxuHOp4QXBhgxAJS9xs1mxGXZctwc0A5oO01ixiyebQjtqCwrMbJqLqUmnrom2s9MKM4s9CN8djq8BLBw8eTWWN37kV/YbATVQYODI+ctkDSUMSpw448gDx1Ri9Ey8HROt2nyQoXMyMUdabKe730lxc6bpS1sGAl3jGTDBTEOhag9Ew75tN1w/h10hImLOUErTQ== 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=lO8eVg2iAlm0dYKuAh/vF3NqQMoeZZEphyYKpwFwkNk=; b=BGcIX/CK7uE2/3C2aEK/cdvxsrIpDzk8OXcBV+cm+coNpHX6j9I04C6t7GmKOja6xqzyatGYLITCDBDvfT1MPDpKg01gyyrEuF0H8mKRXIWWRmFzqLb8EpICGzV6TgGwveYvRRtx5WblxYjlueGipMmi2IPu5UkcwfZNamvnDPohhCrES2iT7+skR9g07OPrNq+nDFSEvt3KFondecdDKKIItly8eooRyAARQh5WXzxphy5ZRp0etH2NuIpRx9feCm44+Of+JvVHiqr/tKMCd0bPpvGczTV2sO8fXOo/ml4JztLHBh1L9o6Cz6AtY0oSqvoWkTI4z2dzUWg1w51+tw== 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=lO8eVg2iAlm0dYKuAh/vF3NqQMoeZZEphyYKpwFwkNk=; b=H2r0P5yRu9jlj4NutB+Gaub1eYHZc8zyZsGMczTgEMczxP2tgyjJZrEIgU+ndEZvjHmA1o64AxaWVLYrI1rUxcL6PUgcK9DKvUKGzXgkVQMI+mieTpdEhFnASl4MtdDvUM7sAJ1PYuplWfX6pP1i650QEPtaxr5YvCOoXjTthZc= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH4PR10MB8049.namprd10.prod.outlook.com (2603:10b6:610:240::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 20:49:40 +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.9412.011; Mon, 15 Dec 2025 20:49:40 +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, chleroy@kernel.org, ioworker0@gmail.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v10 8/8] mm: folio_zero_user: cache neighbouring pages Date: Mon, 15 Dec 2025 12:49:22 -0800 Message-Id: <20251215204922.475324-9-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251215204922.475324-1-ankur.a.arora@oracle.com> References: <20251215204922.475324-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW3PR06CA0008.namprd06.prod.outlook.com (2603:10b6:303:2a::13) 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_|CH4PR10MB8049:EE_ X-MS-Office365-Filtering-Correlation-Id: 35998d07-fe53-41c9-a8b4-08de3c1b7776 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?+f2ZNJCJOgrK9Nc2U75mru+GoihqNO2ANytQMqipXEG7Sr4mGQoH9ge5Ttis?= =?us-ascii?Q?hFGc8KX4xcNLZpUjDGX0INT29p67vZT9PGaslM58qb8yEMdApfpPHO/7pnBs?= =?us-ascii?Q?96EydAYZcpeT5j8BqdIzNQm4GrBzldCW5v3wlDQ8Udaq6Y/LvoW4fMx+7gUQ?= =?us-ascii?Q?PS9OUIawiBBLEJaBBR94MglkLuG9OqwpblOfaLFufAuu4gGUCs0Y9AhfRkaG?= =?us-ascii?Q?mGcDePGwCFhe9wJiUAEPOlUOpTqU/cJzf3ze+rSlqSKT7jM0DhyqXxNb0/Ub?= =?us-ascii?Q?aMvqI31F3LWJ/L5WT3k16XC7gYt+mkuUbMhQ6Y067MrBL4TEBAyShhJBZezY?= =?us-ascii?Q?HOP9DP19FHIMLrc0MGsBgtTlvnAUD4Wik+u5ZQj0eirGz1DSGlNVbE6cUn2y?= =?us-ascii?Q?v1p/AsW5/ky3T9kKv3uVsyBd4EsdL/zPQwC3iRBb6GUEl/55o2BvhFNlFLCD?= =?us-ascii?Q?hBqW9KSjNiftHhuES1UHYzBUC8t1JKMuVYRjTDLY7wU5XuCuKxleIR/ABTed?= =?us-ascii?Q?gMMVXhD+VAy5RghPAZy6ckq9CY2M1XSbI7n6w+24+3qzP5p4fE66mvfI5n3u?= =?us-ascii?Q?Ks2xDjHDGm46jUec1/e5MYyE6fR3DGx6VX3rUp6BByTonTWNNul/GV5dlgDJ?= =?us-ascii?Q?1Bqa/CeC9oT/c3Q8fjiNFsxRouR3uHFhO5j5DDDpmBmJfcwi1Mh37BxCsZ7D?= =?us-ascii?Q?vpOrZq5Z951zH7diX0s1ja/LTQryNuwltV1NCc2qGyyuhldgle68nnoZhSP8?= =?us-ascii?Q?6ypE5tW+i7a6O0BqF28DgxEJMckHGcSsMwbhvshHII7LGVgO+xQ0GpLTNwoQ?= =?us-ascii?Q?JBPG2O6/zHHK+Y5AnPQEsEiO468PeTR6j7uS/QREdkqfwJ5s5MSqTqCdHlid?= =?us-ascii?Q?YCRcH37Xp4RwzBpxmZjMbJzhun4QJXu7YfdlVz7EwbBNkguU2995mNQKO2cK?= =?us-ascii?Q?iE6pLyCo5U8MhCEV+iYg+LtCEIOV2FTlvOL5szSNnCYvnewyflGXYjOtaQec?= =?us-ascii?Q?pnYlkd192yCd18xcEa27LjQusH0OT7C8wVIpc4cG8yaOOH8V/WTph036wkIK?= =?us-ascii?Q?apOhs6Sr0xCoriu/ydRC3nX4zc56A8gqbyW5t6JrDcSrd/oaexsZ8qEC2jfG?= =?us-ascii?Q?E5v7M4sP8HAYpV0wf+7sKhITYIiZVl6c2kNZ7xDc8HyYqh8H4j/g4QQl2Wlx?= =?us-ascii?Q?lhPX8R9T4Z/7uWYg3Z66pEZkjCSCQerhIO82MEklTXujVpkgffivvr8vgzDy?= =?us-ascii?Q?3BvjSXnpXW7GkY66k3un13peNblqEhGfvspyiW7JoMkaSiU0ExAcmQ5+VrMQ?= =?us-ascii?Q?2SEUkSbGJBife5xqm/zbr7k39uAoOFIRSjPrUbhmCL0jik2mWuequxYpBwkP?= =?us-ascii?Q?NOrlWjL+ewCDdWQHjVyini36JEdUvOyUJzD/GW+BoaNXJNbqEVrT3W2fKbMH?= =?us-ascii?Q?xkNYusJCVnX6QDZJUU7ZPvVvEb/4h8rd?= 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?OEUwKlnfHTDMIV3drK9cIgXi0g7nQA1EnoW+H35YpqYMw0T8og54rTT2Y8oE?= =?us-ascii?Q?tJ6HN450e46GnqZ31WnyWclP3Wjttcz5waQKq0uDju5L5wGGEGZqod4D82Tb?= =?us-ascii?Q?Dr7VFKlzASTBaVBBNMueFqsjoWTUPDYJBjXnVg4UQPJ+7F8PIXRddYUrvmlL?= =?us-ascii?Q?MCPP36V009d4iWd0lXBUdoHknxQccFGrKNyvZ1/2keThk44pa6ecKvEXIZrz?= =?us-ascii?Q?GObF1E7lYeDo1fw882nhHqohCWVaxhKija9yT6tAP42oITCf3c3MQFLVpyR1?= =?us-ascii?Q?xi2KrhamFFdT9FpfDgdgs7cBoIyjlewvKJMfXFnY1jyj2suqBqlHZBwxrggT?= =?us-ascii?Q?27xR9h0LVNCWhKQuw/wfI8zd1a6li6+eqkhoJJM3BCSHovDPvUC6Kx6s9FY0?= =?us-ascii?Q?feJI3IW8PS6UmTmOY8M7OECsA8+m+rSShdp7d1NXuLMwp7Y4h9o3czGq0395?= =?us-ascii?Q?Ih1GRdBQjc1p0fEGE9odMXbr9abZyzfBVNfbUJqV+rnH2EKV+XrAFrXq1I+K?= =?us-ascii?Q?DvgEDmIXxoMtvowKhMKt9OEARfA4YMRT2u5WkqpYHvJG5PSfivaYclc8pmO5?= =?us-ascii?Q?1qvO3omNBduo8ZISkaNi1MU++efRnc8fvxlFfzh32VBBdrS3ZwPwMfOOJd5C?= =?us-ascii?Q?0rCCbz+qSyadVkxDuJ2e919ONIH2FFsHs8lEdGjjqdrekA5jtJgVxoaq6N/0?= =?us-ascii?Q?lAhIoOOgx+vILlaDnmcgPg6tzYx/AI9LKPnvrXBPvQx5Y2PNR5eK37SJjA53?= =?us-ascii?Q?kiXSl5SWhVWsTKpLD24UZvhC8J/cHYzok4EvnUOOa1aL87DYM7C/rxo+Ix7y?= =?us-ascii?Q?aguU0yFLAzVbAMQPG5Fl9G/icsNyOjlZ0FYaq52dCPCI5oaUV81RA2lunkda?= =?us-ascii?Q?ROryLko4/Oqlll5xCNbJswZo2dteIjFjD98FYLB710j0/YOJRHH6u80YxepU?= =?us-ascii?Q?PtA1ciVVzNz02h4IS1BLBWhNNSQkY8X1k3dAhjvrOVTWGprArQroVgQeN4A3?= =?us-ascii?Q?NUCaZz9njo1AB+S6sUc6KmQrIO702NauN7J+f7JYTTPIvvqfjl9Ik+4+Kl/G?= =?us-ascii?Q?/kqYoN1UP9y12frvBgxRK38YLngIEMTpxtgrCaKOhny54I4ko1KoPRsrZZ2i?= =?us-ascii?Q?9BLELOSUWwjN6D1UKi+BPbx9oWFO3h7IQhC79GSecVEOkjlH+SHgE/rL7Jy2?= =?us-ascii?Q?OiLvNqGwErmO/uz9g+szP94aDpTlxRBp3VbM4e8aHDY3y2zPOy4UEwVRBpo5?= =?us-ascii?Q?Ug7z1ZRDnJDlNawKPJvjLUXjxApGdD5NVW8bZSLuoB1Ch6dzakvpWjgN3r+R?= =?us-ascii?Q?7SYgyGjIb/Dr1LgEdw6E/0IMJS89soq+egl5GB+B4Jtpi+ZUuNgFMSgdL54D?= =?us-ascii?Q?uM+yiGHIeIKA/pDZQMj4r9HbxianTcLPcRQX8rxlLkvGoEmGlohTI39rkOLn?= =?us-ascii?Q?LPGFRbfPc6LOsC82EDBV0dg4c0GZiwkSFx5x8ZyezZ8+GVq4oPWxaeh9Y3m6?= =?us-ascii?Q?bVpdZK5VfosWSE3DVQh/+yKSzq7oGO6u053PelPWZwlNzjKuaShMIeRb121G?= =?us-ascii?Q?zZ0nDDWptnNkNcWwqcD/2/t4nVx3QAQ84j23n+DtF/YyvqWD/l09w1xO6Uj/?= =?us-ascii?Q?fw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0WHvDd7l9aQaZiP/Lo9KVc7NfTkiO0dl4L/FCcx0GepTCVQ88NQ3Ggjr5Xb/X81Fe/GnixfYQ9K/96YCSY5b7aRMfW0FIzbfQj7rKy4r3BF/M3AnES31d5fpf/hDlBb4bnjiJpQKF1nMLbIg+ZjYCYOadQMkUCt1fUvskwOylYhcp59TRpL9ZRBCtkQM/DyupxurStrpNTIxQrs+O0jxqVnFeveyfQGV53GGYImitw9Fzpc/m0RD303iYfHzol3wHQV3MAnbxpTrbgxx0AP3JziWprRfQj9vtSfs2vsWbeSIPxLnhnLCphSfHI0isLN5vpRXQfblRTVENxTgIAEjj5TQ+ax5WtTf/K/EcGEhrmwSTZj/1ehqKdTEM1tJiUPP68yhudM4PsavuGFnPE3xQQ8UAFYP5SsIjjQkk+DlCRlYcHpYTmdlYGg8/nNELmA2JtqUbZRbw9q5ZJugYct/e8cMygID7CmHsmYSO/eOSS+o1g2zEAah9fduZGfo8b7prDM8QhdpuzZqHW733TW+ZnmtWwdWG2R8lO8O/ZOnwekybJy/U3fH5PuZoFigOaqRg1ASmnoSIw61F7GK5a4UCtkGGdMtfJSWQVlTm57VfEg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35998d07-fe53-41c9-a8b4-08de3c1b7776 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 20:49:40.0084 (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: bQXJbOnHt8LQ6AxUomMrTsbpGKi/87ogYUmbjsqXWUZjSgOuKUAnPOoNunyVuS7oV0R2YleT16vhYpY9OduzL4nSG5bXrozQU0sAWnE7JCM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR10MB8049 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-12-15_05,2025-12-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 malwarescore=0 adultscore=0 mlxlogscore=999 mlxscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512150179 X-Proofpoint-GUID: YnzRJrJ1OuzV42fh2k24Zi1XlOtd7Pf6 X-Proofpoint-ORIG-GUID: YnzRJrJ1OuzV42fh2k24Zi1XlOtd7Pf6 X-Authority-Analysis: v=2.4 cv=fOQ0HJae c=1 sm=1 tr=0 ts=69407473 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=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=EaYD0BI2-7KjZKhOlH0A:9 cc=ntf awl=host:12109 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE1MDE3OSBTYWx0ZWRfX2Y+vnDpfOyz6 A4nLcuo70MhnZBbUq4cMbdYTh5PgaQ8MTcVSMCsInvhpxusL+C/LCXIlWxcGLaRyDIYEsM4DAWe AuhswB5rbz0zlDDj/znxPt4LciTxn114Vy4q9BHzhFfkZL+eK16kExP3EaBYHbLAzJk4/quD14x gyQAJEVsWckwfDC37ydLMsSxiGHP+7sszom9F0Z4OITK5bYOPOh2iTjxmP4SMpyyxCliu4pffQZ C5ZLaPuHcS0QF/TRxDe12wDvju77h9Lxzlw6MoDHqx/bouWIZPUfHofqsJDFceFfA5eUIrRiaUP 1PYKEwk+sgXAzFZ+SxX8TCtXSsz4Hli5wpxwDFw22QD8aLtLdyDEsJIltJH0xCRtNfglDCZD7YI bHc7M1UeyuG7dAWB0lRHoktbOStif6G+rUqEyX7r4wi0jOzwPk0= 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 974c48db6089..d22348b95227 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7268,13 +7268,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