From nobody Sun Feb 8 02:41:05 2026 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 1309E2E11DC for ; Mon, 27 Oct 2025 20:21:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; cv=fail; b=a+ZCuw7JQGcOSC9CGEivW6FsND5jNXHECI3pxpxXQ0m+fmabHTNqGv1go0QwejQuCDVmfhPX0pERfw5y5W8qtJSmZ97OlQFn77JCqSeVzM0mb0rKMVMoc609AsfhVaXxFuuh174pKTK7mAC7xY6l5DQfuOJSkHGsqDlRqEnmCNE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; c=relaxed/simple; bh=YQ0a3E84/QLmEZtTZr407VBYdR6Lm3oYWR2aOjLvj9M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=h7JgXvdFtPTURzTI+F3rpn/stUGHonOxvn7ZM9RxbEtHKoo2qyLZ44tK4nx3MLY7CD4ir0TUuuVXMGex1Az0oug35vx9xUGC0/CP7bXaWB12DgkijYiFOAzN52w+GcuvwA5QUXpNLizM8mf7/T9dFCaNKojbLXbtZhmf4/GAxJY= 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=gtcp7i2T; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=vvA4/Hp1; 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="gtcp7i2T"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="vvA4/Hp1" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCgRo008134; Mon, 27 Oct 2025 20:21:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=bknBLPBuO3NbGUhn2FA2BsLXM32BZbsWn4nAoGLowlQ=; b= gtcp7i2T3m09u0S6yA+hmFlmaEmgoYbCmCy1ygMFRSEQ4AL6sPDRmYxXS/huBiEe G+j0v3NSPUNU7DtB3i5pL1YCOiBMJ1frLW+4YBza1CNF4BYJoiOLzleeOcrM7kX8 2lFj0zr4RaqprZnNWmoXCbjoIL4dRUKi4hDu1Zt2Qks8SqiaQFtF7/AjNZ/44/a6 d7X/i54SU3nM1QFWTIeG8+YuLEGihMKcyww8JANFETSIfLo+mkiv1fE2ZcEOnFht MAV0Udf4K9HrcD6+PeFi4rCIW1caQFpHmzvT0W9GQsI7/gOv2sEF2Z8xlz/SsgS4 EfZ2gZOjyEdr22Qyrz993Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22x6sv5d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:15 +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 59RIu8Lt009148; Mon, 27 Oct 2025 20:21:14 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010026.outbound.protection.outlook.com [52.101.193.26]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n0eh5a6-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=naCHQb9t8tQ9lVR/JOvc/1sjJR5jVyQOREuikCNTExFlxz1R4rCObwRp/KegdRfn0wOt5TJ74lHJlDMr55HWQ9M6HTBu6dYLGsXONI/HcFNoqo0bu6qc7d/5nEdc8Zig6ZINGRSv8m4aTb6A0pngZg3S/rwXTV6RMRpneX9u9gxP158SBUj/C2EGQ12l3f86deX+ysaX7cFXzTspOfdq7deoKxdriiBoPP5TwtE/Qqpk8Sdd1JyT6VU7hBI7Y6oNleAko1h/o0TBpLNMFseJh6CiZpJb087WLOyiKVysezwl7Vyc1wceKi+5WL+cm3K1aTUfVEcGXf6f1ASDzvGzxA== 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=bknBLPBuO3NbGUhn2FA2BsLXM32BZbsWn4nAoGLowlQ=; b=j/xydjzI0qVrKcdDgLtJ1RGh2oaiQR64531HCB+Mx8Ud0s9b9kFy/jUQLoeYdcIp3X0ueqia3Y9uFrOhiXK3q3oj2dlQFRWsE/neER/6uaEFdmidKJgJPznYdKDD+ZDvURB3WRYFSmV4u9mx7Cpzi9GO5uNl5AIG8Z85f+cbUiids4dIKn+8bNw9GhQ5W8DyLSrvzXgBZG0gHQJj1G1AXVUbbXU6N98/Um2osxQqmcYRqhVFGwq6akcJDSkOVUMOHhwvB208IIOOKbJPtfrFRGgG8yC/T/DX5NZkgsMDl3xlPEuiHItc16u/pRyhEyOP1ccc1+pg/iQdRrk9sxEpXg== 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=bknBLPBuO3NbGUhn2FA2BsLXM32BZbsWn4nAoGLowlQ=; b=vvA4/Hp1Gb9Fak5wybD40lflPqEBz3b0KOUQFTuDIV7hg0nRLJHv8gKkdKXMVTHlwW+ZCTIke/tMg9BWJ9K8lwPh1s0P+7XMaQqNlla2SnGbTisYx0bvKWWJ10Mw3mSG/MNrWDPVofsjz5qtf+mkK7BnmXpK00AxbNUMbv9YvOI= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:12 +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.9253.017; Mon, 27 Oct 2025 20:21:12 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 1/7] treewide: provide a generic clear_user_page() variant Date: Mon, 27 Oct 2025 13:21:03 -0700 Message-Id: <20251027202109.678022-2-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0079.namprd03.prod.outlook.com (2603:10b6:303:b6::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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ac1f2d8-6273-416d-8387-08de15965f3e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QbnZPgr1pWtzfLNDB1tsMY5jWpNzutA649vJgNCJDifMqflgdrn5cee7h8C/?= =?us-ascii?Q?lazqguaz1+HuUxiwjHt+P8Wj8tTJ0nhEfHe50orSt/4fkEsdkO3QZ956Mo7c?= =?us-ascii?Q?I2G3jAR3TdiapIovbcenBfdgI53uOjn0mZbRe385Pny0FCe/ZApHvgZbtjyq?= =?us-ascii?Q?FbKNTWRtysm7KmEz1wFDd6nsjD5tIVR/8y2jBagtIfpC6+n+e22TllYcvpcB?= =?us-ascii?Q?JyW5DmJl4XNdGViiMnxoXNMXNsM1fu9jf0aZFz1B3F8oyeXt9nI1PW4XEZud?= =?us-ascii?Q?FhS9UatrH4yd31k7PBGeo5aGOYU40FO1puRUCiO9hAcTi2z/zb6xFokZtVC5?= =?us-ascii?Q?c8GT7gatCglgX42CBCNey4fRbHz6vk+xfvbdgCPj0gx9IaETL7zNXaiNgDYG?= =?us-ascii?Q?V4kFd0BJdtQZB1+bbx9l1AbyQy1MSO/SodIFeNthppLpluWNFJ1y8XdZo+at?= =?us-ascii?Q?MaZwDxnXJyjagN72lACRp9jpC5q+u0uQ7oYpRdOsI1jgZow+jHjSEnIL3dkm?= =?us-ascii?Q?QMoaNwHxv5RsRcTOTBc904XwE0AGr+kFpJxl2Q9sZzdskQ1U2BzkYQAPS0yZ?= =?us-ascii?Q?KRkg9EMIU1Mi/b9qFLCljcafdQRjWMQpcc93BDBB1oUQF/m2o+NKbf9P6tL3?= =?us-ascii?Q?44qft3eaPY0C6Uz8zSaPZBARJOjiPCH5Sx8mhSF9X5CWdrNwI3inWds2B24h?= =?us-ascii?Q?uTz1zpUQQix19oOiPtkx2OLzNa6rM0wfZIbd3gBeCV2Ti91K/dL9Gb04lOSx?= =?us-ascii?Q?zynOYtDdFg/pIcq1X+SF6P7MkvEAvJpOEtpAuo33snw/4sMrzgqkGBNequuQ?= =?us-ascii?Q?LQAB2k1fFNUQZiTniV3Y3QDvu90nNroDrZ5M3/tMRf7E2fCQPGy+cFpPn3Uw?= =?us-ascii?Q?cTUjoLoPb/a5YLWk6EEgg1IAmg1Mvk8TwbCv+n+Cihv1oZdIE1fMZrcWyCXl?= =?us-ascii?Q?3c802LldrkeGlkenzXvniQu/FFm3JhAD83onV36cND/8U2F3+60TdcZfg3d5?= =?us-ascii?Q?lDZHi1wAFxy9pbh37KAiaAgg9ZSu3xmVyxAeOvFWPaAuoD2Lp8C1/tiG/WW4?= =?us-ascii?Q?2px8W1leuPpE7IWZ4djzKJwSMWtK03fWlIBT7aI4ChLLbSpSQeOtHRIascW8?= =?us-ascii?Q?/nNqBRptAWwqgCm0eUI1fQMvmQS2AZTombSRn5GVC44s/cvDF2CKcbAyJ0lk?= =?us-ascii?Q?K1RC/O+3telld5ZIz2quZzVJU5j219580nvYhxDmL8plcgSizz/tgYLl1Mrw?= =?us-ascii?Q?EYEyMeGYjAU+22K27LvSRm5wrIZF2XbjHMNDF2t5h44gwIkb2YtJp3sGgRq5?= =?us-ascii?Q?ndhHH2hYp5shuPPM76O4wj4PAtTr4WGi3dZR9txMJMKPudMBEH/4RkuIDqSB?= =?us-ascii?Q?q2BtJi49Q/KHfE8eA564n/aj6nG3asDDB4iOpyAiNanXbnCOCWci0IasLm6m?= =?us-ascii?Q?VGC88t6RYK0eT1IU444APmqZTieQHGwG?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ewvaYDbZqhgXQ7qiavsPyRqOa1Cf60FtjVjWoTzfGzgwFG2igYR6P82mEnPw?= =?us-ascii?Q?+JFIU9ime4HPhb7DrkT7SDdOc7qdBf7xEZ11qBvdp0yxubivlFoqxJiMXF5m?= =?us-ascii?Q?5kEQ7aNKLboL0ugSdX+LhNG1Xmuilov9tPZuuMWTO2SlKnaWHGFx+vM5J1BO?= =?us-ascii?Q?72DYte5/S0ejxZBGmJnmlIP5CBMwXb7qO5SwLVNLYGDMtECBKTQFGOr1SCnX?= =?us-ascii?Q?itkGeGURVtX+nF+DP3Jx/GwguJPZiuI2llk4kxVA5tQ0WXdehJeNVZQOLTNl?= =?us-ascii?Q?bwEGAcwZVRGEYfS9taHRu8chB4QHCY+LZcjKw7AA4QnBKxLGcGS9l9zuqIaU?= =?us-ascii?Q?Ve6A8/4OqYZi6mhw/3xCzd7wQwP29mXh56yMkOe2E76ewZIoXAEIS882SxPA?= =?us-ascii?Q?wJgx5YexTYM9fQQGG4Xq8hc6zRpWBD/X7AYL9vvdwG/K8axwTdsNIZbpP08c?= =?us-ascii?Q?S9DT0T7kRHMD/DM3TYsuO1NTO4wa2P5BqjBqE98JIYWIajBm++D4zfeD2ejw?= =?us-ascii?Q?Xx6btPT0eUpXcY3kVTPMzEiAZ1RVTScVcW9YJIZb9E64B0TNPHDmsa5fFwP7?= =?us-ascii?Q?PvhQ0BKsy34d+NSpNQ4RVuOrbRfRSRjwLM0PWBPv2Gv8ob86JF8N9SPCZzGo?= =?us-ascii?Q?uReLc/gDQhy4p/OypcLxwpiMERAh8cgCO/R9ELkoxKPi0SY42+CjHyjrjdDW?= =?us-ascii?Q?XgD1bBtMUcJgLKBB9ppix3FoRHHXbUf/JKOcqlV/zOqTwX2v45GKacs89n2n?= =?us-ascii?Q?SWxbzQUxTT835qIa73hCqvbH1bY1XuTTpKkZQyjOPEDHP5Ntd/sJT+YDEUoP?= =?us-ascii?Q?FDQ06UjUPR4BN7WVmMBkFbkFRiLAcX8KcP97qUvMZq08ZaL6uUNV7ppRaSFv?= =?us-ascii?Q?ssWXuwqoC5BfPYC6KWY4cn9e3ruzfA5u+diNzVqV/HiHcOqUc0uiHW7NrV2Z?= =?us-ascii?Q?+AkuwIVBOBysP5CMV8E4KI6qRSdvRIdzu4j47yJQK9EsMJcgMFH02kMn0Sv1?= =?us-ascii?Q?jgWqIhEUlmmpt3GfbQbnPxISozdojiSZMsRYfXu1+cbQ1DDgQQ0/Dyeya3h1?= =?us-ascii?Q?7IhAWOX9CJpoPf8LT4anCJBMbDALdqoLr0WQgo1VCC7xn3lZsSPwXHYp8dGS?= =?us-ascii?Q?aNDpVtoOR43wOXJXmXZyBOuxRONf/V9lBjS8ijS6uwbW2S1a244HDPy3gy48?= =?us-ascii?Q?ZrtHooZAC+yGw7YPVWtYMdn6DhHsKxVGnPvG5EQ2odWpa7vjP8VVD3Bn6Aet?= =?us-ascii?Q?wDk9QaBZHPP6w1UsGN/qFdN63oic4m/f9krfYVkhBYTLLrX+UsGHncNb67/3?= =?us-ascii?Q?rlvBoo29OFxNnlFxWBFRyXxoX/CII4aBQnFXC1y83fZRHtIY/fnLE/d5BN6z?= =?us-ascii?Q?9t5LzAWZASrplVpbqFFBQwXYdRGY16PNe3WCioGu6f5UOhL522WJJXg6jaa9?= =?us-ascii?Q?hoPfcv7Tgmd3qGGpnT5RftLzyIICdzEUgOChQ+zX78X+qSSOWahnC3tOMIGc?= =?us-ascii?Q?fHpN7xEOYX3Zd7bPa8svkLUd/aY3u5xCmTcQQhn+aZ2WgXcwTONM1/rSy/I5?= =?us-ascii?Q?FFQspfngO1Ys3uGDge15Dp/f7lp87hLVT2cJ5Yi5Ea4ZASh6zdB/0qrwIAtE?= =?us-ascii?Q?rg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: DKmgAfzWAt5YMNcKHXXUVxox33vncmZCTQrsxLKDXrcYK5ML/DqH35TtyEFU8je1LU5nNbkrdErwt9320RXLzAZlXrBLxHelWe2BEogPoWc1LRT+7YlCnWnwu4pX0mpep0HMXGr5lqeZlcyHDreOis9Owlx5wmiRQBC2i/3s0DuGG2jg/m4nptQkSE/EOCJwacjC/NIpnvee8TJjwLYtAZcYms7oLPAjmiPOE/8ceDpFFCQW2vzMd4sWjxBfpjvpQ28hB2NBRYwC1bP9k62Fsz5E0L+sDnr3Ldz7zmSqC1a31pr77vZ84Hmyvxg3oVwInChOlka6XcmRfEY+izFwwXARBie2R58sRQJ/r4gg6QQzT/Y68FFCVM3rIfnkmEKrtaXpq/2ltmfiOdgHVu6RoBn3hB9WSi3aJMIF7SfM7CW5V9cLNgmAaaADFUhOLoQIiRYZ5VZy6WZdDtmXys/RjLf/rSdkVQ3iX8zWgn+Yef9s/OPWT/QoO/CQ7+XKwxYwEkEafS9/WOe0Xi1EiYzZWwtMqOymvBDnZkhY5rN//7no/17g6pKTwr9aupsZVskTvrESlKPQAUkkOb29Z8RIX31iKPf8etpkgk3HWwWWEW4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ac1f2d8-6273-416d-8387-08de15965f3e X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:12.2679 (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: qWdD5Uda94wSk2rjaULVfnwRMiSHK9bgr86OT3EeaSO7rPNChxAdgp2DN1ErEI1/D981saq++wC90qLa+NgpBCyDdNOP7Ormj56JLCtFRo0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=914 adultscore=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MiBTYWx0ZWRfXx66Km7WHdgBJ kkdlRSiPhtj9RXHqViaxTj0Pe4RDMljOp5ZkTRPic2To+3zmT/aaV4LzPASvd1Wm/zDoX1sSI24 isb+OzP26r6yd3SE3yy2IckvQizXdjPAV7X5TfKGnfWB8w2YEb0xXpMcaxdibdfZSMxWMBzEJn0 nTUZN8+/QyoA9HYreOv0rXQjAeoP+gP7hSSh8J+G2ZZQ8HxHbDVZrtiDT1N1UN5TfI863KW8oY9 6Hx54Xqam2QGidWdRHiGbJKraIKtinOXbqgHNrBytSHUbL/btNKvujiHFwBKcNs3QAePMDZgxcq X8JxuI0pxSXTCfEfsu78fJ+QArFZ2Bgfr2F75LAAtI7V8FhoFDcq8egnkv92tI9uRd4LJ28E7aa sJF0tTnT/GY5ESc/szAAfG6WvH12Mc2tWlVf31DpyBPuiJZCk/w= X-Proofpoint-GUID: 2ztVNufoXELHgXCTu1cgWeMckYVWkh9k X-Proofpoint-ORIG-GUID: 2ztVNufoXELHgXCTu1cgWeMckYVWkh9k X-Authority-Analysis: v=2.4 cv=dbiNHHXe c=1 sm=1 tr=0 ts=68ffd43b 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=20KFwNOVAAAA:8 a=LYJYA6JT04DgVVByVqkA:9 cc=ntf awl=host:12123 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 __HAVE_ARCH_CLEAR_USER_PAGE, similar to __HAVE_ARCH_COPY_USER_HIGHPAGE, to indicate whether an architecture provides it's own variant. We have to be a bit careful if an architecture provides a custom clear_user_highpage(), because then it's very likely that some special flushing magic is happening behind the scenes. Maybe at some point these should be CONFIG_ options. Note that for parisc, clear_page() and clear_user_page() map to clear_page_asm(), so we can just get rid of the custom clear_user_page() implementation. There is a clear_user_page_asm() function on parisc, that seems to be unused. Not sure what's up with that. Signed-off-by: David Hildenbrand --- 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_mm.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_32.h | 2 ++ arch/sparc/include/asm/page_64.h | 1 + arch/um/include/asm/page.h | 1 - arch/x86/include/asm/page.h | 6 ------ arch/xtensa/include/asm/page.h | 1 - include/linux/mm.h | 22 ++++++++++++++++++++++ 24 files changed, 32 insertions(+), 26 deletions(-) diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h index 5ec4c77e432e..d71ef845deca 100644 --- a/arch/alpha/include/asm/page.h +++ b/arch/alpha/include/asm/page.h @@ -11,7 +11,6 @@ #define STRICT_MM_TYPECHECKS =20 extern void clear_page(void *page); -#define clear_user_page(page, vaddr, pg) clear_page(page) =20 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \ vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr) diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h index 9720fe6b2c24..cb4d69b473e6 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 __HAVE_ARCH_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 2312e6ee595f..0cb8853c0af4 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, void tag_clear_highpage(struct page *to); #define __HAVE_ARCH_TAG_CLEAR_HIGHPAGE =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..08a37f5990cc 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 __HAVE_ARCH_CLEAR_USER_PAGE static inline void clear_user_page(void *addr, unsigned long vaddr, struct page *page) { diff --git a/arch/csky/abiv2/inc/abi/page.h b/arch/csky/abiv2/inc/abi/page.h index cf005f13cd15..a5a255013308 100644 --- a/arch/csky/abiv2/inc/abi/page.h +++ b/arch/csky/abiv2/inc/abi/page.h @@ -1,11 +1,4 @@ /* SPDX-License-Identifier: GPL-2.0 */ - -static inline void clear_user_page(void *addr, unsigned long vaddr, - struct page *page) -{ - clear_page(addr); -} - static inline void copy_user_page(void *to, void *from, unsigned long vadd= r, struct page *page) { diff --git a/arch/hexagon/include/asm/page.h b/arch/hexagon/include/asm/pag= e.h index 137ba7c5de48..f0aed3ed812b 100644 --- a/arch/hexagon/include/asm/page.h +++ b/arch/hexagon/include/asm/page.h @@ -113,7 +113,6 @@ static inline void clear_page(void *page) /* * Under assumption that kernel always "sees" user map... */ -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 static inline unsigned long virt_to_pfn(const void *kaddr) diff --git a/arch/loongarch/include/asm/page.h b/arch/loongarch/include/asm= /page.h index a3aaf34fba16..b83415fe4ffb 100644 --- a/arch/loongarch/include/asm/page.h +++ b/arch/loongarch/include/asm/page.h @@ -30,7 +30,6 @@ extern void clear_page(void *page); extern void copy_page(void *to, void *from); =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 extern unsigned long shm_align_mask; diff --git a/arch/m68k/include/asm/page_mm.h b/arch/m68k/include/asm/page_m= m.h index ed782609ca41..10798156121d 100644 --- a/arch/m68k/include/asm/page_mm.h +++ b/arch/m68k/include/asm/page_mm.h @@ -52,6 +52,7 @@ static inline void clear_page(void *page) #define copy_page(to,from) memcpy((to), (from), PAGE_SIZE) #endif =20 +#define __HAVE_ARCH_CLEAR_USER_PAGE #define clear_user_page(addr, vaddr, page) \ do { clear_page(addr); \ flush_dcache_page(page); \ 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..6b41650c27ab 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 __HAVE_ARCH_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..ea9cac9e1bc1 100644 --- a/arch/nios2/include/asm/page.h +++ b/arch/nios2/include/asm/page.h @@ -45,6 +45,7 @@ =20 struct page; =20 +#define __HAVE_ARCH_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..da56e7d42e25 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 __HAVE_ARCH_CLEAR_USER_PAGE extern void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *p); extern int devmem_is_allowed(unsigned long pfn); diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index ffe213ad65a4..061b60b954ec 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -50,7 +50,6 @@ void clear_page(void *page); #endif #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) =20 -#define clear_user_page(pgaddr, vaddr, page) clear_page(pgaddr) #define copy_user_page(vto, vfrom, vaddr, topg) \ memcpy((vto), (vfrom), PAGE_SIZE) =20 diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h index 9240a363c893..6635ba56d4b2 100644 --- a/arch/s390/include/asm/page.h +++ b/arch/s390/include/asm/page.h @@ -65,7 +65,6 @@ static inline void copy_page(void *to, void *from) : : "memory", "cc"); } =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \ diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page= _32.h index c1bccbedf567..572f62619254 100644 --- a/arch/sparc/include/asm/page_32.h +++ b/arch/sparc/include/asm/page_32.h @@ -17,6 +17,8 @@ =20 #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) + +#define __HAVE_ARCH_CLEAR_USER_PAGE #define clear_user_page(addr, vaddr, page) \ do { clear_page(addr); \ sparc_flush_page_to_ram(page); \ diff --git a/arch/sparc/include/asm/page_64.h b/arch/sparc/include/asm/page= _64.h index d764d8a8586b..52213c92ee94 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 __HAVE_ARCH_CLEAR_USER_PAGE #define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE) void copy_user_page(void *to, void *from, unsigned long vaddr, struct page= *topage); #define __HAVE_ARCH_COPY_USER_HIGHPAGE diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h index 6f54254aaf44..8cea97a9c8f9 100644 --- a/arch/um/include/asm/page.h +++ b/arch/um/include/asm/page.h @@ -26,7 +26,6 @@ struct page; #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) =20 -#define clear_user_page(page, vaddr, pg) clear_page(page) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) =20 typedef struct { unsigned long pte; } pte_t; diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h index 9265f2fca99a..416dc88e35c1 100644 --- a/arch/x86/include/asm/page.h +++ b/arch/x86/include/asm/page.h @@ -22,12 +22,6 @@ struct page; extern struct range pfn_mapped[]; extern int nr_pfn_mapped; =20 -static inline void clear_user_page(void *page, unsigned long vaddr, - struct page *pg) -{ - clear_page(page); -} - static inline void copy_user_page(void *to, void *from, unsigned long vadd= r, struct page *topage) { diff --git a/arch/xtensa/include/asm/page.h b/arch/xtensa/include/asm/page.h index 20655174b111..059493256765 100644 --- a/arch/xtensa/include/asm/page.h +++ b/arch/xtensa/include/asm/page.h @@ -126,7 +126,6 @@ void clear_user_highpage(struct page *page, unsigned lo= ng vaddr); void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr, struct vm_area_struct *vma); #else -# define clear_user_page(page, vaddr, pg) clear_page(page) # define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #endif =20 diff --git a/include/linux/mm.h b/include/linux/mm.h index d16b33bacc32..683168b522b3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3872,6 +3872,28 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, unsigned int order) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ =20 +#ifndef __HAVE_ARCH_CLEAR_USER_PAGE +/** + * clear_user_page() - clear a page to be mapped to user space + * @addr: the address of the page + * @vaddr: the address of the user mapping + * @page: the page + */ +static inline void clear_user_page(void *addr, unsigned long vaddr, struct= page *page) +{ +#ifdef clear_user_highpage + /* + * If an architecture defines its own clear_user_highpage() variant, + * then we have to be a bit more careful here and cannot simply + * rely on clear_page(). + */ + clear_user_highpage(page, vaddr); +#else + clear_page(addr); +#endif +} +#endif + #ifdef __HAVE_ARCH_GATE_AREA extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); extern int in_gate_area_no_mm(unsigned long addr); --=20 2.43.5 From nobody Sun Feb 8 02:41:05 2026 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 130262E040E for ; Mon, 27 Oct 2025 20:21:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; cv=fail; b=OCg5kNtsI804O9GXz2Ezots9m4x3Z6dVLb0Dhj69ik7KUS1Qizu6s8JVEwkvh91JXTYrxyElb4bHcKV+0eNupnUDV05DBkebouHBe9Tbhre7iP930DtxroCmbr3ks8cxloFXhWgWnBGYFgo/w94eLGnEcJrQA7U1qSiHG95AUOU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; c=relaxed/simple; bh=ey6zLklXrLQw2XfumlMgwwBTPmO6AP1u2tFN0dh4DKA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZQLYRBcRo7E7kpOZL6upFiHxMx0zBUw6b9hALRCio8wAJKwrQhIEwmDzo4IblydaOGpxH2TVg0lKYWrFOmOQroRpqpgMdr3HMr6wCYMqyc9NkDSMfUTXu5F4IpcmXqy6oGfS2bzbl7A92zV3C0zEEH0nOaq6OGlR1CtuclTJE+s= 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=Kj5zLy7y; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=CrQaUepk; 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="Kj5zLy7y"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="CrQaUepk" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCRNA014710; Mon, 27 Oct 2025 20:21:17 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=MwaTfrtWKegNLWYGFbytOmtquO53i/sYm1JRyCEPomc=; b= Kj5zLy7yxfe9MHcK1C70+bHj2ejzSLIwbjrom7rPx8c2DwERDpOdoHiuNvBLNTAp WCr1Vi2/3Uwb3krGI/zw2gVdbsKiGToxN5rop4MkUbQsHPGCSUJGXUp8HHl0ZS6v RX8HGIV6Li1M/ZWCUQEkSxApbO0+sZLm8UCHFCda528ZnmbBBgRfhpRXQmGuU13M uoMHBba6UOXTQjAW8IVS4+H8a98V3rLgdJ6KKSTI8HRQEYKRl0xga0estvK31b5v DpH5WGxzhcoqX1WL0hMm5OOETw5pdJu8pH7Cd/Il4+ldRaC6kEVXkSVtJDs//u0l OqCFzbZuaxphdAp3vocHIg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a23gvhvan-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:17 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RJjLDm025120; Mon, 27 Oct 2025 20:21:16 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011035.outbound.protection.outlook.com [40.107.208.35]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n07h7eb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SEA3hfHpOo7N+v5cEDh5ZzSNB9lv0Y696PteZGooEuGbINqPL/RgIu7uo3FE9/sOCGBZe9LIOaXZ27OY5z7G9EGf2dW8pfYJ90dvy3VES3ydmyKU61SUg8HApfoWTF/sjXwzMnIY0JRb2LJ0A4g2kYlL3FMlzurnBPvZAYjmI+YJksmG8QXbyaRxzt1QvjhFgmHAmw0E2FwJiLZFAUZVcHo+vsX22rqXSf/pWFq+wWlrweAisuM2pDy2X91CGpucA2tFiL10jQa7YHG8xfdd4ALALyKCoDyG0pS+4LtQZ0xvgC/T+I6QjfR5V8roE2c/lCglksmWd+xI2LqGK9J/ZQ== 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=MwaTfrtWKegNLWYGFbytOmtquO53i/sYm1JRyCEPomc=; b=jAyJPfq3iL4xx7ukYXX6lgYm8FYvTivrL3/IICLQJVOnSkHRID8tCUvwoHuhCSNlLTtlIhY4aKOhniwSGHDu9KldIUhjI1nbgsXnCGm7uEvR7C7os+7eRnhS01aNjodK0mJC2VQM77p1jgljoYc8AuZAny20tX+IUAbHfGsQT6DvB1xnPkUsUKBIPJ3YJO/bLr1zTXYto/zeH7fi2f2io0JWdwLJU8gqeN5UuIXrWCPxkQt0fYSSLQPgJLFjNJdxpymPTdDGpV3mO963AvZlDnA+TE0I1mUzJ1Zab4BCqiJdLJHO9Lqa2T1AovfvnW8eBDPBYVcVZA/e83UNdPe3Bw== 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=MwaTfrtWKegNLWYGFbytOmtquO53i/sYm1JRyCEPomc=; b=CrQaUepko/gHuBaLvoalXXThRmlyxrtBuu0/M+D3Akmed2P+vQiTDoTSG8BFPwPP2u/uWgvhpzhEc3QV+aajsfe6omObJiXfi9vjqeVfVLShNX9DhjwNGaJQGjgBD8Yj5CpAdohZFeE6Aj5WxlHZulYEbpDRtvbRPsFISUoV+NE= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by CH2PR10MB4120.namprd10.prod.outlook.com (2603:10b6:610:7d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:13 +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.9253.017; Mon, 27 Oct 2025 20:21:13 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 2/7] mm: introduce clear_pages() and clear_user_pages() Date: Mon, 27 Oct 2025 13:21:04 -0700 Message-Id: <20251027202109.678022-3-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0082.namprd03.prod.outlook.com (2603:10b6:303:b6::27) 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_|CH2PR10MB4120:EE_ X-MS-Office365-Filtering-Correlation-Id: d055b344-8410-4b0e-c8dd-08de1596601c 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?5sUpAZRfTTJ94YttrbgHo296IH6/665AML3PySjX5Udbjoo3TGneAlqp6Wi7?= =?us-ascii?Q?aFt1XNFLIy2LSp7ZhIuwumxZ6NYvi4omh5p7k2UF0QqC0MCGtWW92j59hxRB?= =?us-ascii?Q?4g9+40Av8eEvR6zwOJ8jIlaZWpu9kOJp9UrpZSxlIInxb4M+h8CsF1gWWiUr?= =?us-ascii?Q?VG6C+JIj84RG0BcMpDOJd3wkI1YQncXTWyy5tA0VxyjwDrRuC2BEetw1uTqq?= =?us-ascii?Q?4qIXpBp1V56W7G5GdxR5hJTqnc0ILy12WEq2mHCy8qAo6Zzp5im33XvPiYpS?= =?us-ascii?Q?548I0/ULfTnHKDfhZAWAM0WjJCfDzzPyDzYSFVn76FU2Kx1pOmm+xTC9hoTV?= =?us-ascii?Q?qEfH06sJNDhCm4H78b5J5UL5F3dCzHkXX3KTQYYjrwTofopo8gCaLXhBWSG/?= =?us-ascii?Q?TLw8hXzgDdTtv5MQ6gjGP1lWNtKVwXA0UeHXaxZY1OCV8xQc8iIXUYZl97J+?= =?us-ascii?Q?+a3sS5PEln3Pi+rOvHmho4nqFu/TbipI4uabaPvmKI4MJOQhv6yxJsFCsa6U?= =?us-ascii?Q?XpdrEa3RahcgXtF1LTICmJ60KzHnZcdle3RNSExvb/COcovY9/JlupexiYeZ?= =?us-ascii?Q?w9yrBxvhZ+07P93Ax2nBKXsCGmnJkrjr5fabeOY9Hk98+Oi5NPEbvUyTs+yN?= =?us-ascii?Q?vhptjithJVTM/xclz8GeoXgPT/dYte39M7WTgPyHkhhFFr5T1WJFlxGUPjS0?= =?us-ascii?Q?uWS7ilJl5UayF08f0qXjFjjt5mYMXPpE9DvNtdaLX3rdhmwOxyUr64MtYRBO?= =?us-ascii?Q?vYqnpG8d232uqM4lcmCZlYn73ThcH7F8mq/cYbxXR3tE6BES2+whhKr+Kub1?= =?us-ascii?Q?SQBYST52+wX6G+R2wJpI1759noY7tBX7l7mMUCIiv6M1cuzoOQHOOAcvACvb?= =?us-ascii?Q?+P4JLBkTI2qwx24EthC9cTZtIu2fC/zE4HtfJBM55fg/hJKmTbSFCB5ksay9?= =?us-ascii?Q?QOYpXxcO5vAFWtyvb8+oVHqmVKcLjcRdg37qiwaPsjTMgTXuWGL/rqWtlWHG?= =?us-ascii?Q?HPE3KJQzo/kPeAzL5y9FyHouCe92WoGpFT4MM0Uiqw3kPPMq+b4EXZli0N+6?= =?us-ascii?Q?87XAX4y4hTFvh4+Z9T9mTA+HZPoPg5VFCtwMDVxQCy5YbrzXkLRUXAmMyucE?= =?us-ascii?Q?H0AEK3IQZbcIICAVJQ92pqBGsUnjK+ltEI5FZ2Dg1XwYqyvCpIKlmhENti+p?= =?us-ascii?Q?B7lk6ugFY/Og/wNJiSuk2j6ruov9GqZ+g7nG/d/qwzsdFFUjCDJdbFoeF5GW?= =?us-ascii?Q?tdSji2nTtu6I+An+KSOV/fXd08QH/zSjP3i4n2Vh+Poeqn/shtO4lJVsqnCM?= =?us-ascii?Q?1ZGx9DkJqva0iNFNaiKRV3SZxP/NVB1FOCGXPlniaBXQGH7mRK2+kvFRazTu?= =?us-ascii?Q?zCnk+RzRcDfvtLQS3nXbEwvnQxeykjppMIyNHPwLcwYF/+UcYs309JncsGbP?= =?us-ascii?Q?3pMQ618qO4/5Pi3bcmau9qo8mLV2v/ZF?= 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?ehzCHFwTQ+nNMUo161lT4fBzsUNgGP7ejNLcz9qN8syb8HSJ2/s1Krrcnjj+?= =?us-ascii?Q?h4L9D1eFh1Gtez4WqFM61ZOlVgIoWgBf6pz52X0d7kchMtaeT9p/iT6EVtbU?= =?us-ascii?Q?cGvz9bblidinokocQ9M6rVF2oZEopOeEvXkWVkvqx7jh/41NWdfsRV51QQPl?= =?us-ascii?Q?1ChloP9JP0wssNCU+P5GBmNeEkb4gJvjTqrLC/hwJ1E5gLQqZyNqpFEAiBuY?= =?us-ascii?Q?dSj4ADSnVV4qZhmnIkZJcW6O79wclF+K26D2wlFQ6klsXfSYBAQumR1SHdht?= =?us-ascii?Q?lQ17YymB4gphegyJTVRkv7bnH/8BY+gneBS37M2If8Jk4m0E5XglTM7u5lya?= =?us-ascii?Q?K3E1vO5+0O1e1JJGhodFmxh0LX27lyva7VmHs0HYTIC7Hv36UyuLvVwD6AHi?= =?us-ascii?Q?6RVu50vsEmDArFcgADJpJtT4ImrkRu+Y7JRItRzB1OiXN6RRc9RIGFZ9+nAg?= =?us-ascii?Q?4BCHq3am6i8A5rOjzEUCV9LCgtxwmQL+fgN42CvTROtCd0vdvH6/eqgQb0Tc?= =?us-ascii?Q?scz4in2RXOv3fqJdYKmqzsxHXVT6dzohopsKX7pMlpy19su0GEUm3fcf0jsB?= =?us-ascii?Q?SCAZhBtQzozE8tc4ez3jP0KXbn6G5dR5jkLvpkbS3HeHvslCywKEeBXm7Z23?= =?us-ascii?Q?CK0Tvv26UwyEka8/CapNq0sWFsI/3zDQ8v8zfKTjTw1Qtx4vjJnIaiukETvr?= =?us-ascii?Q?1ywnPMmTecXlEyEVAnJQQqcZ7BTp/1ol/N9fbeAMxfeS2n/gf1BJHzjc750m?= =?us-ascii?Q?p5dg5/tcNFG9cYyaaWF75BwBElGakBKuXBnTJHGM+PEUNMzKwmdL2ooy61lz?= =?us-ascii?Q?hWIxZeG21df48750mRXdWo1S/kwbGUwwFOpKrTE2/YzC6cM07ZRrwWeXjrLn?= =?us-ascii?Q?8Z8LfWuwoOMXKydUH9b8K+nNDEwFDtcDXs1at73FPMUNcmH8u9+Cl+hG/R0l?= =?us-ascii?Q?5kZGU68Byofpt4jnmagO4hafO2fY/LrswcDY1b3HKKClkfOzBPq19OOEqEAR?= =?us-ascii?Q?8clwWgGR689Rv6tqmPgP/TNs9RjhqAy95CgJwoHOF68QZ9AWywjh+NToBA54?= =?us-ascii?Q?+stmXxnyIH403kySVQSuWLqK8h4fI5m97gJU72KqT1jUrz8UU8FFXzkzNXaK?= =?us-ascii?Q?LQDCzLGLFkHI/Kaxn7uVJa98FqZLkbLME0G7THVGfjAoCdXfrOTdCmu/zIgP?= =?us-ascii?Q?+Pe2OiwRniLZR/BZGRJooZ0YHitWqTul1SR4K11aYmtJelPt1kMu/dnWa+fj?= =?us-ascii?Q?OP1EbA8bsqFN1SgJ/UDpDWL9yAjAn8oohUe4VBhfHVDA8OJTenUjHjzI6l/R?= =?us-ascii?Q?vcZZqMQjKCcu79uPOmlvpYWHAbNs0jnESIAun89hDnyRBUQXQz+Mh4Q1ltsh?= =?us-ascii?Q?YTzNPy0kr1fEs/zWd4+m8iI8fW+YEKwjhtPcBofPP8bA5hGWywjz2OSYZaIJ?= =?us-ascii?Q?avlhF4/bf9M8zAn+E0bN2BOE6Lr5I8SNNsVSVSPt6d0HiOQEiX87aEE7upxA?= =?us-ascii?Q?YRJbyMUm/t/GyxDvcB2zhHq6S0Za+EQQ8UKULkz1HWOvnIVF6EDHeF2KmSlT?= =?us-ascii?Q?nhH2HUqF0qNzy/yUqWocNLA6QQC/Bcz2CwLBn6lw6tawkvu44hy/BaUkcIh7?= =?us-ascii?Q?Yg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RLPTZVSyWc9zrGg6JGa6RKYVc0SHWdrSEklvWm8LsrcKp9tCR0Oih0T3HKI+jFZVwW11Ay2hUV1EmxO9M+rHx5/5oiGB8euBS050cCkprCOy4+i++om/aj3LNPGbKI5t4/FYHwZ26bFN2pVpxctU4jk67ZHJwTnpyltPRvHACjo7tJ/gNFmGSusgkLRWUwjCwlBgGKsxMX2spgueCRPLACRXBweltgkZKGEt0zS1hcXHCwK1U1hh26B1nKG7yKRDeQDrwnAqJbB2F4K5cz/V/wPoX+PxvAr6JMgFsJmOc6TmzpDz85roWwEx6+SmMyrbksIMtWlrwMfzIVT0ChJD4wDg4oKZjfOEGwXGdA5fnVaMWldalvecsQmzaVAGO9UpNUTcQIRcTu0rWTOUHPNH2/7u6g/8KJLWWm0uI9o8rPzaTVbtQXDXusLIi7VI9gXWRyzUh0Adr8o5JHG3MyEBd/EoznysGjmkAQT6muZfjiwfGt6quJBEr9n5CH3eGYXpqZjtI6lwrXXJeIMsqABDFrKhX9uLYl1vNrFw9SqznPyCyfOVzwjXawYh0skFh2c1Ma47hvBQOcjGa3tZjKOdABSvZWR6VLTnEcLHMhjcSCA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d055b344-8410-4b0e-c8dd-08de1596601c X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:13.6469 (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: deJUByN/u/Dg2fY3iBPx3IZWD4ShTw8ZbRZb867zD4HTGiCoxyMWkLyljAZ8xsDZ3chStcQ75dCCOPakppgrtKUqc0DKC94jwLcJ0/7GlXE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB4120 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-GUID: 6QqfPG2tpEjrcPketsm6eDmBMP24Bb8T X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1OCBTYWx0ZWRfX0UrA98vuzlRO XYIC3ykaYXl01/i3KuCNL5B7xDzzeVoTUv70bmi0Bh/guERUVFdXIlwHulQrCwjhszADhaSZJf4 pj+5AdSBbb5WGVxvzE5C4qJWMhvJaTZIYRTQsLLVRxhJaAQc1mKtpARr/DCq06Wt2xJVy/PW/Br yvCeerxanpDdunXAwQ4GOBTQjzv9JAMyOHEwZjqcTWfWupmXmSVlCjWX/bbs+BHJXHi8nrff9bE wWOR8mXOP5O1tz8wyr15q+JkkBT9RMy0j2Sht6dsy0ho8D7wRWN1NTFd2vXWOYP/K7eAwOMS2Ni KnwIIMtsYbFSXLhqTtb1X38Y9kF/BkyvfH4uAstUXb2odG5CzmrIahTDZiui14qc/pVc6ZssIh9 B6CqFFqY1x5qGOo9eEsYJ1osNlKe+g== X-Authority-Analysis: v=2.4 cv=HsN72kTS c=1 sm=1 tr=0 ts=68ffd43d b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=jAc279nnwvjaFhRRfOAA:9 X-Proofpoint-ORIG-GUID: 6QqfPG2tpEjrcPketsm6eDmBMP24Bb8T Content-Type: text/plain; charset="utf-8" Introduce clear_pages(), to be overridden by architectures that support more efficient clearing of consecutive pages. Also introduce clear_user_pages(), however, we will not expect this function to be overridden anytime soon. We have to place the clear_user_pages() variant that uses clear_user_page() into mm/util.c for now to work around macro magic on sparc and m68k. Signed-off-by: Ankur Arora Acked-by: David Hildenbrand (Red Hat) --- include/linux/mm.h | 41 +++++++++++++++++++++++++++++++++++++++++ mm/util.c | 13 +++++++++++++ 2 files changed, 54 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 683168b522b3..ecbcb76df9de 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3872,6 +3872,26 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, unsigned int order) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ =20 +#ifndef __HAVE_ARCH_CLEAR_PAGES +/** + * clear_pages() - clear a page range for kernel-internal use. + * @addr: start address + * @npages: number of pages + * + * Use clear_user_pages() instead when clearing a page range to be + * mapped to user space. + * + * Does absolutely no exception handling. + */ +static inline void clear_pages(void *addr, unsigned int npages) +{ + do { + clear_page(addr); + addr +=3D PAGE_SIZE; + } while (--npages); +} +#endif + #ifndef __HAVE_ARCH_CLEAR_USER_PAGE /** * clear_user_page() - clear a page to be mapped to user space @@ -3894,6 +3914,27 @@ static inline void clear_user_page(void *addr, unsig= ned long vaddr, struct page } #endif =20 +/** + * clear_user_pages() - clear a page range to be mapped to user space + * @addr: start address + * @vaddr: start address of the user mapping + * @page: start page + * @npages: number of pages + * + * Assumes that the region (@addr, +@npages) has been validated + * already so this does no exception handling. + */ +#ifdef __HAVE_ARCH_CLEAR_USER_PAGE +void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages); +#else /* !__HAVE_ARCH_CLEAR_USER_PAGE */ +static inline void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages) +{ + clear_pages(addr, npages); +} +#endif /* __HAVE_ARCH_CLEAR_USER_PAGE */ + #ifdef __HAVE_ARCH_GATE_AREA extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); extern int in_gate_area_no_mm(unsigned long addr); diff --git a/mm/util.c b/mm/util.c index 8989d5767528..d3b662b71f33 100644 --- a/mm/util.c +++ b/mm/util.c @@ -1344,3 +1344,16 @@ bool page_range_contiguous(const struct page *page, = unsigned long nr_pages) } EXPORT_SYMBOL(page_range_contiguous); #endif + +#ifdef __HAVE_ARCH_CLEAR_USER_PAGE +void clear_user_pages(void *addr, unsigned long vaddr, + struct page *page, unsigned int npages) +{ + do { + clear_user_page(addr, vaddr, page); + addr +=3D PAGE_SIZE; + vaddr +=3D PAGE_SIZE; + page++; + } while (--npages); +} +#endif /* __HAVE_ARCH_CLEAR_USER_PAGE */ --=20 2.43.5 From nobody Sun Feb 8 02:41:05 2026 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 5E5182E427F for ; Mon, 27 Oct 2025 20:21:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; cv=fail; b=FzU/nstGNH3ATkm0pCZ916kfXHDOtD9rJzbd704BzWl0ENxJVd4cTJy4xkula67wc7LAaKATLzYoyCFkuM1EHsnuvUQWG7XsjWuck9A9AXnLA+n1yQqbBH4N441I/+v7mHaGFAXvfan9BWv9bmFKJKWrPaldDTQUCBq9Onqjv90= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596510; c=relaxed/simple; bh=Fwb/RZAu4p8mfj+a9PFlJMiTgqUfvOYwwOi+aYip06A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ujsAE6QqJAO8j+FNe4VkI3n9Vne1OuMuDMnApesuYnoKXfK8IpreIJrAzOW8MveMd+cnVbPTOl+1vT3ze+5oi+8n0Eg5oT+CeO70ZvLuj/5yAmhId+uhYCUVvxLZx49KXdREddokZ38sqnGr4MXpQsPRDKrbN3HXZ1FPpB7bvIQ= 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=X8hzrSCW; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ft1ZIybz; 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="X8hzrSCW"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ft1ZIybz" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCSKA007978; Mon, 27 Oct 2025 20:21:23 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=EheJ2EBscKrw6hhaI/SM+sN1rdYzgxzEwuE6frU4uVE=; b= X8hzrSCWbB1yI+nAs/6ZTcNXct90ACJku82ofq0YQT9UY8id7haD6LknlJMyNDGm MXBga1Y6pjMsF1xvd4sMrSBlsKdMuU487FsCs0IVqHyIBE0hcQtwsAeljPTYoePG 6xwB0o4+zJC7Y0lt/SvoLzptTFd1AhPm0Q23LAj3z8Mgqwv7MbL/SRyHPrYtFZqd NMrM85AhCEpK/B9xg+uFdCBCiSfVDWRRAbXYpvmbWsSf/YFIcJzeP3NU1b8ikNyf TnAeIBmHNbJGHBqCFww9CdCRddD1IrLwqHbeHKOHsqu6zuddPmMWpws4fC1WrU6T /rsXodPIU6iJuth/cR97DA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22x6sv5h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:22 +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 59RJ0BMc030492; Mon, 27 Oct 2025 20:21:21 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010005.outbound.protection.outlook.com [52.101.61.5]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n0792r3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wH9soKkoonhZxeOYbrvmOEHD1Ecv+nBFCRodIsTnAzsiFFfy2AXd9oAjGWSBOxp28RAKnxvNUkoQHGzkIttKonTiYPtbTVNlF9J9OZo3nAgUS16tVKsOpz85Pxexij6w/uyILRsEF6UczoI2WiP9Ewu2VTK6CGrck1h79N1NIo+/8xYGB6AAKvHsd+9NKaFbQF6UsMY/MM27lTR53b2IzxY1JhW6q8H7eber3A3n+sHyFPXa4V86u2bwX+TWSh7aO4ZckeK75mozaVS7iWR4l6w+pvfdQT+TMbGt3Q4sSsVeuZD2cLe1cR0qi34fo4CpCP5IfE1/JEicEUm4ohKDEw== 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=EheJ2EBscKrw6hhaI/SM+sN1rdYzgxzEwuE6frU4uVE=; b=rTx9OVNtdYJg0Vi4hdeBDCdHB/P1kZULQ77WYKcnmGblWAXaSPFH9l+Abu+E8MOrEmWwIavQfIor53Fz/W9Es0oM/jePMGq348yD25TWytwlxIK9vQYY+FVKAJIweZ+pxDlyZm2AKppzYVQ7MBZlWbCI9uq8t6WoZ6fsmgfyZlJvICnC1fAS5/FsuMF1pQW7sQn24q+fc/rugXBGIAjhb4rzuxFQwoicB2PaTF1vfddxF6EEp6/DUnEr7EH1bKnafp+DqbRpWVMAS/aWeKbQ+V0wXEEMF3jhfHrhmo/9uVkVslEJtB/TNy4y1k1Rv//x32i5perg3OR7J3tPJtGN8g== 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=EheJ2EBscKrw6hhaI/SM+sN1rdYzgxzEwuE6frU4uVE=; b=ft1ZIybzdocnJgdJre1ULq52FTOo8w/arIJwRSEU1ozJkBOhf9rxfqGvGFVkWeRz8xsRiNtzEeeNVSU/xBJvyecQhgBp3h8SSIKA9IYsRwVFW6VkdQB1wMl7dFOV5yY/9Uo2Se0z8iLsCUn//a6DsVQvoW/XREv3hEkKVNA0gGk= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:18 +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.9253.017; Mon, 27 Oct 2025 20:21:18 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 3/7] mm/highmem: introduce clear_user_highpages() Date: Mon, 27 Oct 2025 13:21:05 -0700 Message-Id: <20251027202109.678022-4-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0068.namprd03.prod.outlook.com (2603:10b6:303:b6::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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: c63caa68-d5e3-4138-90dd-08de159662b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UJJ5SltgBktymmoiL8hK9DT6AYkwJxSQU/ixvpeqn4zBJLDknV9W8SSpkRCG?= =?us-ascii?Q?POiPQUrM/5bP5uNqae5FJII3r6yl028SQ8kFzUTwIN+ORfNXgHRnYIBUbFKJ?= =?us-ascii?Q?y5y+s/F2sysjBMo9EitOhnTA51p/hXmnVLYxB4lD88Wqco043J703Yk5rxFE?= =?us-ascii?Q?fP0Y80D33mL1q7uAeN2mjTPmkBaUVsmIHMIh+Wd6cGN2yltqnGu7jMyjiQEh?= =?us-ascii?Q?QeNL+u1cvX6TSeTUBDSdi4+ClbHDyMgO9nPu6afMv1cQo+5VgXMtDi/JxbCi?= =?us-ascii?Q?bXcvPVhbiBxCIs8PFuS8aoSqbzrgjVY/iL7OJrFRUSvgcJgCxlowpo9lnYi0?= =?us-ascii?Q?Xhirf2/6Kuo85ULHD0xUtBBxKRtKu7GRWSIoFv/Dlntcfk8Zwi3KyTNl3jZz?= =?us-ascii?Q?SBWF9gVH50HZGj6Uo9N1qhgqpUx6lIugVs9DvteVN+jwVoZtMyC8I6i6G6pl?= =?us-ascii?Q?62LqmlPaaAWDR8RAY6VTq12EriEzq4E13E8EdVK/3jbtupHnF48tTC1bchzE?= =?us-ascii?Q?HiHlwgWY5Cj2Sh+ijA52CRnN8fZICDbiteo4/IpXuDgzHOCvrb8229dmEbLX?= =?us-ascii?Q?hPO/ZeKIzNlEaUE8bjnBAYkdr0W9K2zcZKrXQK8WQt08H+SGh6v/iKBLDBjr?= =?us-ascii?Q?aOvKpwqY0MMddZxr6lFA0Irq03uB0Ejs1Ntz7DC4QcQzw7Fo5Td8iGlDhGKm?= =?us-ascii?Q?O8dzimvrqHJ35oI59TnMsRwfGpuX8g2AU65XMSI82vapMORx2FlouR5QUIQp?= =?us-ascii?Q?CRznnhs7+j/SxHKrdmpuEq6s3LPT1W1vQnyybrqWMvoCGStgQCCiCTmDW6kX?= =?us-ascii?Q?HBGVuFiarXV3mSsEicAaKmv0eY2CgiFePMAxh17uPWYCfO8EAnGq/9ub6z6J?= =?us-ascii?Q?fsGVwwzgk1F1fcgJ6tcypmfClDsGI/aN7C3NTjO/QwigjwkN4Vs2kPGcP69R?= =?us-ascii?Q?mKOTOVFmr+7FTcjnh0R59joq8vsgzXUMcMukxeVxkE21ofVKFZk+HtcGXqpy?= =?us-ascii?Q?wS3ABr+jljcIqjaa5RsrmK0qD6BIBER1qobWsHO2At26jTfC4jbxNgoc8zC9?= =?us-ascii?Q?z4UtZ164fTbQX7cVEZqkDEIMzfy4CipNZWQ25iDtmc3pbLRvGGsPVv5bdvGA?= =?us-ascii?Q?5L7z1RgUjvzqJ8b7m+Oxd9qNBEY2Ej/4uCY177wBTFOpRDq1bgeGNDGIV0x+?= =?us-ascii?Q?RV2rgQCMn7XDaDUW6FuUa6HFVlN/Pn6jqNeGMv3tzexfgmkt6xRLlhXrM1wb?= =?us-ascii?Q?NFe4ic9LPdgu9vkCneGhfg555Q86PPPZ+qS6PO2KTAKPD5DVeDQ4GhNoEXFM?= =?us-ascii?Q?xhFfns1arGe7IxawaTH2Piw0cFB6fUEeJ6fzv2wGOg5TQqxCaIt1drdB2OPi?= =?us-ascii?Q?s8F06++sR2iBg6GNOXiiJt+de4CzLnD/EfjkUcZEbtrUlGL37clNoVr0x+Nm?= =?us-ascii?Q?/U/KUKhI08iMSV7r5K4J44DyrrA0Fw4U?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8iqBh2rfOitAocysCm9nzVrKXfiL4dp1tW4X1Uij7nbNj5mgr14gKSxkXLW8?= =?us-ascii?Q?L19og2IomgIb0qUhGkBhjzDr0JfNtudjsFYc8HQ64NlakkoEsV2byKyx439H?= =?us-ascii?Q?AR1ZBoSFK23rUGLhLL6MlZLkY2lAX00t9NTr1kHToCn9zu3VPgon2OvnshOO?= =?us-ascii?Q?F79i3Bh96UR2iKbrQNikvc1eVUv50lwsmdRp21qEpRao+GvByHYQdsXZBsVj?= =?us-ascii?Q?o5741BSnINmk81HerQQoQpXXYFAFXoOBPjwOuN7gWSGSNM1wpy2xvrUx69QX?= =?us-ascii?Q?RrEo1wtVtFO/nBwkB45l5BKhIWR2pJ43RsxoZJgLSd73MPAO2GkNeaibBICv?= =?us-ascii?Q?40tflmYNuStJao9eL0Al06KAOieJOsOKs/SlIsvsP0fpMMcfaB1QoQSo3Xph?= =?us-ascii?Q?TFCaY9G7lMtBPfjilb4MafzxI7zXhrrQJXSzJK00yZSCochGyD6nnrh+l5DA?= =?us-ascii?Q?2uefRECimFTh+kkqf7KpG/dRinGt9Qn1Nzeb5DqC49jf0iyVbyGOI5X+cKNC?= =?us-ascii?Q?sp7o3noAk7Q30fOxiQnBLTxdNPf+Ds6IpMBZuYJqeghmPKV2Xi5ms+/j+dKH?= =?us-ascii?Q?1295nmGxNxJgnbWKDJ7gu279OBXHUi7hnrLmRlNDGtJ7MzrZ9lkQLv9na2xd?= =?us-ascii?Q?MlvecOGNOP0wJHlqMzipfo6jxc0B8TWbgHInqphnjaM2IO4D00VoB0AEtuhn?= =?us-ascii?Q?+lnRGn8Io+oWc1kGFXkyrUTxEiEn+SZiMFmfuwuZ7xQ4dypTviGMBJOnMjvk?= =?us-ascii?Q?yUjDiA/QQL0nxOVU1KD1c5pAo9RE88qZ5t+IuFSBGQbxHdh8vqaAwRid0xd4?= =?us-ascii?Q?ojB80csoDw8zPBcnyFpbRH+C5RWmtpq0I/P0T0fY22OHOld0WJ5UtFFxXLME?= =?us-ascii?Q?1MfV/8TuP5ak4FgBcii1iwWMxmy9n3lWBrcmVRTi9v7cpBAp6/cytz2Acym3?= =?us-ascii?Q?DuCaBBkcln/3FKtobFjVtuyl93+gAEFx+aiOmqHox8/tRU5cZY90h+t9Dye3?= =?us-ascii?Q?yBPk2JTovufgdw+CyVAhLJSICBk6ThF64XP3IY8g7qGMoumjCMoSx5ejxL7w?= =?us-ascii?Q?N28EZCVenV4JFCVFCrGASTlit7xa3E28h2gf0rDjPdz/QsQt93OS7S6cY7Yh?= =?us-ascii?Q?ZP+2sraSRiEUd4hmRZnNAFhy+Bun4PNCB+elNiyY+a4PdKQIJ4Jpq5BQX+dF?= =?us-ascii?Q?ln49j8XZS43n0h277b8Qz6AQ8ObpJIhl3neH8cv0HFxHLyWrZekGXMYVVPeb?= =?us-ascii?Q?m4JnXFFnvevvrIwrG2apdowrJalTSOP51YrJ8ySH5WENz8BMOs0udiGZlJON?= =?us-ascii?Q?7zw5kWwhvx+WeKIYToxlJohjxTwzy7us0cBW4EKgTTer46M+PjbPfvt99gDt?= =?us-ascii?Q?ETY/vGJnA3nhMQvibMYDZzVZ5VWKzpPpdU0XeSJ0chd5ie1lq3VTV3whnv+I?= =?us-ascii?Q?a+sXTUijYC1Md2UlVZnJNZaoGIizk9/VQThxLIpJXnH8E6wom3hT7Pcheh2h?= =?us-ascii?Q?LT9jB0WTccjhyQq5U7w0xf7ocBimcpv2KFRSWoJPp0ZDjc2LbiJev13v6yUT?= =?us-ascii?Q?x6PvOXVLY6c9897J6U87DfFqQjV/CX12gsONF3Xty6FEseoSE1KQrzb9nQxg?= =?us-ascii?Q?Fw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: yZsU0yMnFdW3XD7xClRquDXPJQRTbpkxP+lb0jtSoGKS0QBwXWgO/lV3OxzxiW7gDq3n94fL6ttD6Royr/gZRAg+eBuuGHCxLMU/XH+CvykvvI8dueryA3ErWvCJDov8Bn/nlfki2YUc9cqcxCLxesWKwO8gYCzBPmIeubAqhp6zEzf0ymZuoA/03LR/2QzDK1hBiIQqQPkvmHyu/x/9YCT0o9nh9kjy9kcEquWH5VNEmgyT/dOznSKBkhdbUdmY7qgLkhlefOWgVQVcQjOgPyYOZ3mq1PtsIt6Av6JgvdNbTyDwNYJ2n0QSOLNw7rIj4DXWJSlG73dOSWuNQUpWDvqHMkH6skM4CgSqewqWRMlHRydRkscjJUaMxjiJLt6VuZLoNtLfBuk+CxsPWaTb/g/D1Wv5PsOuyK6YqMpzkStHAtvNOB9dWkN24DbEkdsRPk9+8mW+hyIP1TijkxnylhG3MEX5oZj1LiAWjF+ZJ6ntHaF1T+obcQ2siDpxrzaIhbk1Ee1Wb95nXJl5kCSnpKboCeG78iMV0/OeKZTz2rtnBlQzrMHAJfbNndPljMOu35bhe/Cd0FXti542E8kRAd8K93ErzHAygARpDVKdYLo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c63caa68-d5e3-4138-90dd-08de159662b3 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:17.9936 (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: ebxALk1BL9+vL/1kdEX/jx2eNTeZQQrL9O6cjMij93FHVWgErMIHftXBPozTKGt1meCy9N7NYkJV8ZA/QaYKiqwE5PrpFPgPVmoo5FWJPVQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 adultscore=0 bulkscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MiBTYWx0ZWRfX2mukphO6GWMr N3T/kTSIxRnmxboLYWC2SRkgcYeQrMp5FhcYE1UvMQGiSx5Wl8GZXRkGl6YlhUXr05tQgJLEdeF JvUsYtR3S59nknvgRlDu4TrJACCO21UscDdrWuh+3p02AIrJe/57MNxfC2W2xCSD8ljO5HU7uZh axw9i/zDni88XT+7YWS9iYbbfNlRu3iqU4xt8bjSuzcDsZ/PetTY+rryfmsLxfNoWvn8esiouca YSgFCk5egFmpCNeul8BIFx8lAdgxXTCp4o8fQtwxx/AURckKyUX1frnlg3m+OHPBrWz6fbTv++/ 7PDEaC87KrxrG2K7di3PylKDwOWGC6BEKwCxFihfRI2KYMHRPV2I+ocdExedWQhpkh7Xq+lYjQH XGeMOYtutaZ7gP5gUhKGyyDokUwQZg== X-Proofpoint-GUID: QVkGVScFRqmJ8SNZhTPBIXw9t7sgS4Hu X-Proofpoint-ORIG-GUID: QVkGVScFRqmJ8SNZhTPBIXw9t7sgS4Hu X-Authority-Analysis: v=2.4 cv=dbiNHHXe c=1 sm=1 tr=0 ts=68ffd442 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=d0Ruhql17P3IiE_7rwkA:9 a=cPQSjfK2_nFv0Q5t_7PE:22 Content-Type: text/plain; charset="utf-8" Define clear_user_highpages() which clears pages sequentially using the single page variant. With !CONFIG_HIGHMEM, pages are contiguous so use the range clearing primitive clear_user_pages(). Signed-off-by: Ankur Arora Note: fixed Acked-by: David Hildenbrand (Red Hat) --- include/linux/highmem.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 105cc4c00cc3..c5f8b1556fd7 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -199,6 +199,11 @@ static inline void invalidate_kernel_vmap_range(void *= vaddr, int size) =20 /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ #ifndef clear_user_highpage +/** + * clear_user_highpage() - clear a page to be mapped to user space + * @page: start page + * @vaddr: start address of the user mapping + */ static inline void clear_user_highpage(struct page *page, unsigned long va= ddr) { void *addr =3D kmap_local_page(page); @@ -207,6 +212,30 @@ static inline void clear_user_highpage(struct page *pa= ge, unsigned long vaddr) } #endif =20 +/** + * clear_user_highpages() - clear a page range to be mapped to user space + * @page: start page + * @vaddr: start address of the user mapping + * @npages: number of pages + * + * Assumes that all the pages in the region (@page, +@npages) are valid + * so this does no exception handling. + */ +static inline void clear_user_highpages(struct page *page, unsigned long v= addr, + unsigned int npages) +{ + if (!IS_ENABLED(CONFIG_HIGHMEM)) { + clear_user_pages(page_address(page), vaddr, page, npages); + return; + } + + do { + clear_user_highpage(page, vaddr); + vaddr +=3D PAGE_SIZE; + page++; + } while (--npages); +} + #ifndef vma_alloc_zeroed_movable_folio /** * vma_alloc_zeroed_movable_folio - Allocate a zeroed page for a VMA. --=20 2.43.5 From nobody Sun Feb 8 02:41:05 2026 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 EF32D221DAC for ; Mon, 27 Oct 2025 20:21:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596509; cv=fail; b=NQjyKEcvmSZV94t41vQP/Qzs5x6cX5LYlFFBQXCK01Oj/Wveqd8sAjZgS19jT7EV+6aWuaFpKT/G8WbzjZbOgvcUxQgpGIkuALM3FT4TINyIgo87j75DC1+YCCR1aH++2hIiA7McDYc3rBqpBuWJ22pi728xI+tLM/ycDaBApJs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596509; c=relaxed/simple; bh=7WTC37M21R6E8ilR5Mu/Y9SxYtGF4Hli+qqblGMc0wo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=hMXHHvrWZ4YEy5JOf54pox5+8hPvfyCB+F5x4tnTRbSGoCWfGiFBzxcYY7krHcArV0MbrEXVWHAPFYQe5D/Xw6zENf88HMWX2ke6CQrgwcYaCEqmnwLye4geMZ5UmeZbSKJAEhiWZdKh3UgWrXwiw/S5r0xohRYt9i641oK5lwg= 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=M3y39xY9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=IGyCFzuB; 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="M3y39xY9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="IGyCFzuB" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCLJE012203; Mon, 27 Oct 2025 20:21:23 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=AvFUy1ntT4q7U5oPFZWIQw89I1nS6X43sBwT48nGnMI=; b= M3y39xY9K1XyUnugxGRkF8xvNwqtEo3ctQ7WUiUexpbNfOauZIuA5y8rQlRCRKmw ImsWPLVr+RQxwG0nzSkaX6fWRmD3TZxnSxVwZwYJBqGQXkbhVHfHGMVY+vKuyjOx vgHG6zIyP9FuUJGRlcPeSzE6H+qpW318+nx+9I49ZtmLaZa1T+FgrGZC4UEi9Fg/ Bgccz2yl8pDRiDMBwSlbAeBDWBfvB5mCkjzvkFLk4neVadNB0KEzWJDYWxtHjF0j +60f3EsjXKNt1WKIN3yaxPj64dP52zLbPpEzWJp4X1qxzHrcS53B8/jk7ds5Qi/W fg1UNBWng/HVUyuSWbo3+g== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22uu9wr7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:23 +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 59RJ0BMe030492; Mon, 27 Oct 2025 20:21:22 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010005.outbound.protection.outlook.com [52.101.61.5]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n0792r3-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PW4ivcOyW3I9oJs3TYNQ0FSwb66Ag9hAnwUQhRGBn6UUSTnyi2d0pPQtgqp7wMG1NQjQDN38jcZUDptK2Ios0W+kv/7Nx5roOCekZEsxIC3JzmWRlGqzwhQKJjajEtfYPM33YIypiaIaUGmd6cZuW/W11vdAXuvOPU6uGr0IBhxnUkqrxDj8fVbz7AfJLqtBUJ5fBtHpLH/qXTbOfDVd2bR4wQ6excGnd0zL2T1zInLKfbAFx2w2p/OxeXwGTodKlVleZKBrhNo0cRK4r539saMClPuCVG4Jj0uxX/hBPzJ/V3Ld5lwz+1qjL9yaT74ayiepRhKWd1QDmKMLScEJjw== 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=AvFUy1ntT4q7U5oPFZWIQw89I1nS6X43sBwT48nGnMI=; b=vBsZYb1pSi+gn3fbzYPcFU0t2/FkVbpOH3nks3WYteeHP6HpaCxBAl3+uli3dw1dLl8M5Ic9UlWOOeoHD9lmWh7p956DAIYye8RtTcFhHLWPgqDMFpPL15KM3HPPRkA5UpNSqI1t4hBdUtL962+JSl962cgafvrvuiWRMmJYFYNDpH4UfzeGGmt0EeczRjJ24GP4ReAn2xAwUtqBkiSycetwhDxZ6x83+1KFLPkr7Mg8k86G1eK+79hDOIvYT33ldDSkCFGAmcCs+LKV+NEezGSeCg7KmMdA+xCecVYvNw1FeSonPIzVw8UrlDjLV8QCvOQmwSJmTnVcerc21zlKRw== 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=AvFUy1ntT4q7U5oPFZWIQw89I1nS6X43sBwT48nGnMI=; b=IGyCFzuBqPtujhtBOC4fnHgj2BezbV7hjY8LWym+N5f716Ts1XqP/fZ1+El+Q5c3uw0DPNyu2qeUTwKKhSa/S7JHhO5qRRhQuM5WXj4oLhj8HtbYjAI2oER+Ifnyaa4sdOYQuzhooF/xtdR/xJraH8ll6yfb6ddHS7MY/hh/Cis= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:19 +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.9253.017; Mon, 27 Oct 2025 20:21:19 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 4/7] x86/mm: Simplify clear_page_* Date: Mon, 27 Oct 2025 13:21:06 -0700 Message-Id: <20251027202109.678022-5-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0079.namprd03.prod.outlook.com (2603:10b6:303:b6::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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cef91ea-87fa-46d2-b9d5-08de15966364 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SIw3lUpnbuab6zbvX+EQ+Ahw4fAR9IH4koooo06vimxPnhj4pokiATiLmstl?= =?us-ascii?Q?Lo7iIvaGIWJ1u3wfz78p5gb6TNdbwbfT3VfDMsE4xmd9/w5F6HfpRjtdgUUX?= =?us-ascii?Q?O70ehlvosihpiJ1pKYQC73/1qBxaolhu4VkBlB4ntQXrSOKAvu95dOzyiN93?= =?us-ascii?Q?U2zPT76MpYzyBjGSHvLVuFex7Kyj8zTDeKHv2fRmcdudfcOX2tFOCe/0Vfnk?= =?us-ascii?Q?xq3dWn6qYwtpQPmfIXRY7DE4SloT2YsHexj/VKK+mtloMwok5EjsrPR/dEIR?= =?us-ascii?Q?i3aY0TiYJhllmhtjYl5EzHnC+auik0F6UwU3/aaumHr8+cx5yQuh1sca1QbV?= =?us-ascii?Q?FYoCxF8/JUip71SeVv5y47RKAfJoY21I+elt8OlrUREnJAJNMxvv23t3DCPu?= =?us-ascii?Q?AGKyajS4IRi5wA9DiTa4azdchCaezhL6nvLBat62SnXna2hIkxTrKO0l5rRW?= =?us-ascii?Q?+j8ETwjdP3mmCoFwCtlNASLmSK/ZyUaZfCMGfD8D2QNTCCUg+bOgNFXVuWvJ?= =?us-ascii?Q?pKLwnnysUmdOksVTrl5lFbzAv2aX1VhD0WE5psYtKi7p7xrJfM2rIhfFdynd?= =?us-ascii?Q?I9rJIykvJUXbJ8EmXQkmqs+tx2zF/GQ7zJpcQLY8zbgW6gjcCsMZEmPx0ksp?= =?us-ascii?Q?T2FRY3HAB/oea2tp006w76LIBYOghW+Lu4G5OtNaI28cE70+OcvMtDegmOYD?= =?us-ascii?Q?ywggBlam6lIfXPrbnckZjOzUih+I7jGrSTOQc723bKtPXwWder3AupigenUX?= =?us-ascii?Q?4/HoM/quAF4aL12ky/vjWy82SbqRExm+HDiRBSlui1WYy0lqtfRv7OmrERwF?= =?us-ascii?Q?WvaLqcjuUjRXFRpBjfA41xAAwiloAnZbBE+AYmUiKer3E2y8McKnNl5YsZ4n?= =?us-ascii?Q?dM0Ulg8yLfKgMZnpw3J20aFHG60qXlQ+nfqfhLyVTDrjxf09ViBVRbUeFuOx?= =?us-ascii?Q?Zh3v5c8ZRrT9xMtDWrRPzXbi8hM34aFVtzbd8Gbgl/tR3aFynedRDWjMV5Aw?= =?us-ascii?Q?9cqQTjr9/pXwhzvUkvcnQt45iXcU3LNB2/26Ed7peRi3bDgenA/AijVlmp9u?= =?us-ascii?Q?5AR4uxzb2eKTxj8mo9ZYCnoCYu/l9rNEsMy6Mpy+8IkTJiaStTvE9f5tVjtj?= =?us-ascii?Q?g0XiWFIzociycN9YiPsNqNVdQwGZ9UTMQs0j4GYGpkeWrpjwrPfyxDDotiOr?= =?us-ascii?Q?0oVXT27uQA8sE6mGCjaBU+ftaYjr1For1J/KukR8cxPHbhvhUdWXivLc/1ZH?= =?us-ascii?Q?2TOy2dl3UpxIqblQEPc7cRwZbWCYUEpcAv5ROM2FYQBQlYmCzEp1dxD+beai?= =?us-ascii?Q?3m2fC0qd4SAdWokpdXh1L5Qo2g6YfepzBaiFBRDCM53kRva7Jwvn8vQxPxlp?= =?us-ascii?Q?3mBPjPPyCcM6s3MLLAb9rW2PWOAdCVpkwqMHwCpw6k3cGcVxby0phOBzR2Ph?= =?us-ascii?Q?Vyej++qJY5dncAXQZLivRgGVg7DluwC8?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vyCrMbkn9h7OuGB4YI47nTifFtTBo5q2/JUm47YxArTnOSbT9vst5jY/rD2l?= =?us-ascii?Q?aAeRIkQTOlltSWXJJkgGDbyz7W5R+xDxP0NISVEmFLrh0E/y7uO3jWmHjbty?= =?us-ascii?Q?76KItqUEJPH4u1GYm5picN1RNaliY0yGMCpWpInpO2nNEO8DZ7twYikgzrX3?= =?us-ascii?Q?mELHFJmaUP9VqInwKxa6zVsOQY2AEiUtuU+3PYrzDBsXyxaRQ1eIs0ZQourk?= =?us-ascii?Q?oP6komH19y7bGBCFU12D1S0y2sgAiOqfbqnKOsy7DhxUqNhD2gGu/VRC7RtL?= =?us-ascii?Q?QmYWW/TJcCjHtHf3D0BHuMaFcj0ndSGO0JyX7ZdyXdNu/Szwaxul9jbfcWUG?= =?us-ascii?Q?/ehNw/91cXdf0DgfThAvYnkUbKYrtPfigqoo+M+6dmmxhPXhZEvxqm/LQlBp?= =?us-ascii?Q?rnX5C6Y6lVcC7ZDC7BU4+szGgwptpbg902j44MdxWU3C97QpmywNy4CC65bz?= =?us-ascii?Q?5KAp0dUB2R2MgtB/adsbB/hkq267BJMJJGVbvedA4o+UDlv961tFZrak+JoU?= =?us-ascii?Q?vbPrX66PQ47gXKUrcnKkf7fYmEYUZc7wHvW81PKH4KxUWbvj7Fo9o9pqz9my?= =?us-ascii?Q?7ZHiUDRRePJZ98QqsqnSJjcUzUZ0AYStSJhtO2eKMk/HXGbgi5ghhnu86tSc?= =?us-ascii?Q?9wkh6TlAVvGMM8wNFHVsLqi3e+85MhjV7+1eBPoEIwncLvSPJXvRO5JrbF23?= =?us-ascii?Q?rmQvSFPKLIU1UxwDZ0gxdEPMbn7KBOvxxKG5Udl6HObudaxk8sw5aheBDRjY?= =?us-ascii?Q?PucxpzLMkvxkwiGLCITFwZAbaITSFBfydgOQCkMq8MuO0Z/6y6Z62ZQ93CXo?= =?us-ascii?Q?sWUL34kHaHobHUNv+FK4U9e+e7wHNmFGKIuZueHh1/nVVf8ql/TjEGfQ0S4F?= =?us-ascii?Q?F86ZcbxkzL8ax2d4c8+MZ1FavnDN4/5FVxf5gGNjkoIDAapDnxDNYZdGh01h?= =?us-ascii?Q?YbVIz0VoFbZyMuwh1LG1/M5T0vZynxrJYM3UI5bQrLK9Js5EQM/YeP6w3dlP?= =?us-ascii?Q?xAUXbLPgvHHqaKJhIFME/5vnDkNNaMmTte2L9lZtiYGGtFn3shbe4rxL9nR5?= =?us-ascii?Q?OzaKsldPWjKyLRv9RfsLk1O4qHnSe1oSahMBoc6b3XnbV4KtxfwnuosnVcOU?= =?us-ascii?Q?cv/QvYLzbUlTLvV5TGtAhF7gGQGCmH8+KYd+xHlTD013+uF37jpjMgFVbtJd?= =?us-ascii?Q?B9Aodt1m8ASAuGt80ZEq9/Anf7OC0uJhW/1gthusosFo+oHol92FydvbK1Q2?= =?us-ascii?Q?f7jx/N0ftM3N9kOQOWFOCX7Py91LIS4RYdnEZjMiSOXd6N9YiODtg3EJPb5s?= =?us-ascii?Q?6ZSOsmh8wrN0ZLJ9x3A9BGRxA9MF8XA5fMB7MI4msLK14ZMxcTktUHXCOHWN?= =?us-ascii?Q?XyyDSeHGOsblMgfJGhOkV/l4hn7ANKhwPM9iOY2lGD+gQElfz1JP1gK679P+?= =?us-ascii?Q?em9kVelbcT5CWR4ekxRKnIAnPizX8PonT8nFUD3t6L+t2wydtrEGQEOBxQMC?= =?us-ascii?Q?DBZZK3bjc+SfWVY+DnKnHzMmpS3f9RmHcS0451bMqIgelgP8R6tJWueyokm9?= =?us-ascii?Q?+wKCQGfUM/ZNKTbfXWnD0w9jl5l6KiIXAkpSJ79RIvNAC6HOdhRne+vhN0Dt?= =?us-ascii?Q?3Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lAjsm8Oir/EWOkbMFD6Mc+5cczyCXaERUWfLAzezyi5vbtWxJH+24zf/NvZaX8xFfgsfn+sTm/nSe7rwjm/t2TLBEuTOoFt72G3qOQU3mIJ3fAYBm4rbODwCBaiBFNrpPHjTERQkYS7H1rLary0mzeL0Xwrdppn/EIiGNYSmmn/OxFizsPkFsiEe0+gx8mdmLRPuZ+dsd3fpENOxpMEuiyciz7mWGQTWkhKKV4VkFKwqGmZ12i1En85pnXdt7BKyeKJb5oG/wnBCAYo0aTOZAy6CkAWAc51RMcC85m+POAcWEF9qUxmyIYHtDX3/q2HDJL4EVIteS+LlMSNWgBDxj9AaNCLaXCC1pBrBYYAyaICBgUz+SyAxEtbRCEfld6XNoZz8qOQ9HGVNNZSS+KVGtYI/HG55nHgoBA9HlVCGefRJp13IukmTffN1VKA8FE+bqeJpSCHrXiwbBH856Jd0ttkUWcp7TcTqZvU7WYXUEfVDDBRYBMp/BSR6UwKluKfzrO4NrMEM14oE0ONNkfLOMTPe1uBbPB2DRqFWWYzZ2gSOoeBLrxl09t+kOjnPhqEd8EeT0fa0qbdmOX6n+ny6bJycrXPLLSDlt3fdLP540+8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2cef91ea-87fa-46d2-b9d5-08de15966364 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:19.2082 (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: abhgGwvRqS3BGZfHaPSIEjmiQ4C4/qA4wl6eDYJCxfGvRYoj7MDOoIP4kvCENNdh9X6SBOCzu8VtLziTrZLHlf9zPmyDTL0Q+5+gcwRVQqY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 adultscore=0 bulkscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-GUID: WY4Kbe_H8p_T0_xHvuKbOZcAzKxephyY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MSBTYWx0ZWRfX4SogZaBIxS3N wBFMKjFEbEYw7vDnH738Y0EW2yb7Ufq64LnPBLC9gqrGU6NWvUc/uoLagay1EAL8wCWi81bu4si 8DL+586H44/yUrMAj7Bqk3+ueEoJdndI2+p3rWdH4kmCJ1pZ5QLj5XEq/83j87CCbkpvfJagFyg JmcAQnpiJWufYHLaO9pdBceQvsHrowz5g+jgSanq3hX9asayzlTxGcybQ9+GSugklIhwRSrIx96 ZjEuImhy8mVM/jSckgHPYBywJZlBUSEzGJMD6lRdX4jCV1Algnzi2ZwmfMBOLbIyfHNsBbUbfJ8 QYZuwLeOB993Y5PEOY97Hl9PYzSlZXInsBVUqZLAhEd2fxySK9zANEwWBC94XVTXt124xYJqbXA gf54tLOUvBVUPBLg+A2Fj6nVgtU6Jg== X-Authority-Analysis: v=2.4 cv=Xe+EDY55 c=1 sm=1 tr=0 ts=68ffd443 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=CZTfYOs-HqEX1FBfxHsA:9 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-ORIG-GUID: WY4Kbe_H8p_T0_xHvuKbOZcAzKxephyY 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 --- arch/x86/include/asm/page_32.h | 6 +++++ arch/x86/include/asm/page_64.h | 46 +++++++++++++++++++++++++--------- arch/x86/lib/clear_page_64.S | 39 ++++++---------------------- 3 files changed, 48 insertions(+), 43 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 015d23f3e01f..df528cff90ef 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -40,23 +40,45 @@ extern unsigned long __phys_addr_symbol(unsigned long); =20 #define __phys_reloc_hide(x) (x) =20 -void clear_page_orig(void *page); -void clear_page_rep(void *page); -void clear_page_erms(void *page); +void memzero_page_aligned_unrolled(void *addr, u64 len); =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: + * + * - memzero_page_aligned_unrolled(): the oldest, slowest and universally + * supported method. Zeroes via 8-byte MOV instructions unrolled 8x + * to write a 64-byte cacheline in each loop iteration.. + * + * - "rep stosq": really old CPUs had crummy REP implementations. + * Vendor CPU setup code sets 'REP_GOOD' on CPUs where REP can be + * trusted. The instruction writes 8-byte per REP iteration but + * CPUs can internally batch these together and do larger writes. + * + * - "rep stosb": CPUs that enumerate 'ERMS' have an improved STOS + * implementation that is less picky about alignment and where + * STOSB (1-byte at a time) is actually faster than STOSQ (8-bytes + * at a time.) + * + * Does absolutely no exception handling. + */ +static inline void clear_page(void *addr) { + u64 len =3D PAGE_SIZE; /* * Clean up KMSAN metadata for the page being cleared. The assembly call - * below clobbers @page, so we perform unpoisoning before it. + * below clobbers @addr, so we perform unpoisoning before it. */ - kmsan_unpoison_memory(page, PAGE_SIZE); - alternative_call_2(clear_page_orig, - clear_page_rep, X86_FEATURE_REP_GOOD, - clear_page_erms, X86_FEATURE_ERMS, - "=3DD" (page), - "D" (page), - "cc", "memory", "rax", "rcx"); + kmsan_unpoison_memory(addr, len); + asm volatile(ALTERNATIVE_2("call memzero_page_aligned_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..27debe0c018c 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(memzero_page_aligned_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(memzero_page_aligned_unrolled) +EXPORT_SYMBOL_GPL(memzero_page_aligned_unrolled) =20 /* * Default clear user-space. --=20 2.43.5 From nobody Sun Feb 8 02:41:05 2026 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 EF39D296BC5 for ; Mon, 27 Oct 2025 20:21:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596509; cv=fail; b=tgIxPUpOgFGrRzz7nF8bfGC+Ay3nS7PANoiOlOIIN/hxCw+8QwcnVEsNj1ojVD4lS+yjzwHALCyINDdi6eWkGZMySGbotKugdR3FDc0cqdHIkFItq+xlVe1OpbSydnKnWOqfYB0rCMq8AOU7c+udMnMSyaLnkLCWccLCBBLhS2w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596509; c=relaxed/simple; bh=MVvfsUgb231qZNsyikdu9/hbsIyrBy3rw4U+wr1VxlQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Rc+4I5hxc0lKycyIbZ3B4312IcAC/tNWxA0RhDH3E1Kjn007Hbt0+I1c39rR0UBsGApYMYA6YI9Xu5094CrzeFDA0p7uweeZEsnIMC7QikIoccQoQBw6j8JJ11XIw1mGDCkoXR7pakNLCq6wFc++0SoZW/mHLg6H2Es58UmAhZc= 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=Wye9JyO2; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=olL14uH6; 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="Wye9JyO2"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="olL14uH6" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCIC6012114; Mon, 27 Oct 2025 20:21:25 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=fqVP9TSjc9cCCR7+3kQdoZrtz1lIXUB4JSoOzb4YuZw=; b= Wye9JyO21ZIeVZ1fHRERWGCSljCxWy2B6G0oNVmYuzQRoz6COZEXDYCpzC63xY0S /IUEWADKJX/WBwEEgIxdPXYcCxUKcOIXaZGpMFXhW5H713sRXO2LO4oUh/M6qgnc YSJnXACIRkDXKmpX5co8sayNJnllN2Pcf9sVp8e+FZR98dYLnNll2rjCOC8tpRZ8 y9WO/eN/Dz3S6TeR57J78S6MFn8lCY0ntMJL0sL27acqpioZH/2eYhDGMu1595sU 4B8pRjnLUDKWvW2tGopmAp30XvxE+ga50rlynxECLzl4a+W/o53/M0XKCP+UWnqP ljC+FKCBniH/cUZUWhMvkA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22uu9wr9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:24 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKEB4t034835; Mon, 27 Oct 2025 20:21:24 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010038.outbound.protection.outlook.com [52.101.61.38]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4a19pep3jm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=juUE9vmpuJNvKcf5yn9EOaXabSziJlPqTJanp6FprbgE6KQskL2CzuZNDiy/pPyOLYlIuviJZX2O+KpKpenHCVvm47yNK5NzFzrDuHUJ9HbL4hPNimujXu/vZ90WsUi3+Gm+ijnr6bGUkpJDM22kx1ZAKWWBUClg6VV58Zc8823MMCCe87iyXf8I020pvUxtS5eoPFnH2eqmqX3cVjeAhn9QE6I3xBE3iGLUWXtYg1C0/hf4k1ZDYB7t+15fEVBtx2HhfqP1LlKo8pB2DB44N8u23ou6X8CILEJtY1l7NnSz57FkmZMjSCPj5ovxx8Y33JF65ZLouWVxo2I61uJ7Xg== 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=fqVP9TSjc9cCCR7+3kQdoZrtz1lIXUB4JSoOzb4YuZw=; b=qTFTVueNt+ydCzJN5brzrLEm3LxVcxuixse4ToV3ZU4/QHg2dyKttSxTf65QeSWDl96m72IzTcqGK0ZV4WAzbb8l40Z9WaS7cOVb3YAY3GS8uM2C7ayqetIfQilxLC5gfVCxJlaqZIxEX0N/DIt0hx/cWSvSWyTtOQzJwSlxh+J+RcrGO8xiDI0MkpcL3s2YfiG6hu8hwTyUeFceLotf+vQCbqg+sCyakKWmNUUh8eLg9VcEV7o3KLaIaDl1qZBfD5V2eMqq6Grg0kCFB4bjJi+fXV298UaTSXDgGA7UxC5q8i5Z+laVvADpqEKU9EbEGSkMSGfUFJiiIuprqg3Vhw== 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=fqVP9TSjc9cCCR7+3kQdoZrtz1lIXUB4JSoOzb4YuZw=; b=olL14uH6XMqZsykAIqzte4zP/ohdYX/A8aIOE8ji1rBD/av6y4rFOz2huc0JrdLJNpbI2d4eCQLJqKnpdady6+phdtelTznX+muKyXvG+UhVwcFep9OcbnXwx2iN3YmxdrOLDm2ViPPxe8GVvB9j9RwuiS2ASCYH8uJBVoKLRgg= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:20 +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.9253.017; Mon, 27 Oct 2025 20:21:20 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 5/7] x86/clear_page: Introduce clear_pages() Date: Mon, 27 Oct 2025 13:21:07 -0700 Message-Id: <20251027202109.678022-6-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0084.namprd03.prod.outlook.com (2603:10b6:303:b6::29) 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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: 433eb16f-0c6b-4e65-46ef-08de15966454 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qmDDCtS0V/eeLyJKdczr40AMcupGwUZHipQDpoh1Usc5y37OV7rTC/XepQ6G?= =?us-ascii?Q?c/Ng15VnrL8zxPSI2ECDW2tlOB29WEDb8Xnj6jrMPCIclIYzvrJUWTaROCOD?= =?us-ascii?Q?qJ10V2RUP+/6iwwwKNhDXxBUDVBO9JEK4S4WTSN0nvigeAiEUn1r7Cun+v8m?= =?us-ascii?Q?E/00oyRdk4liXzL2e53zIXm4QEGO6k2BiRXrw0v1ALD+LWVF5hrwX6FmQrI0?= =?us-ascii?Q?iuLp3ElKcMAwrM1AbeH66/tE6YxLeLMxB6x/jK0c/r4AYMnIQX7iq+5/2gk+?= =?us-ascii?Q?68ho/59Hsoa0QGbOzQ1wGwa/e8W8qpyudMBO/t1axuBecXBMD5fk6CGTAP0T?= =?us-ascii?Q?Sraq14Bk68xlp2U3ojOvOmDvExl2LacM/6ftg6eNbexsf2Yc20VTdmWLhpES?= =?us-ascii?Q?Bw6WD3lnFghVOhBI2Hh8oT1K6ItURRiptKVyTr/TeCG0c8K1Vj1XTXNLVLrQ?= =?us-ascii?Q?y+GNLpDJBMexXwL8KS2J8YMuwoFfDvAyuCoq97lFBOcvJBBs6XO2dNaS5amS?= =?us-ascii?Q?EeAGxtgmfgl0XKJJdNMF1XrDmCqtqAh0oYOlGfHRolIVluFdt7yVOrXMaWW+?= =?us-ascii?Q?hxAYVXg5eDVIuWGG/N9s5+X0TkG+Nd5L+b3a4JJ4rvv7RXQwONmKzEHWQt9K?= =?us-ascii?Q?8/tvezcaW0hbd/g3IuMBA4D8BFdypk5mNxPJyiaXIhrAeKFeGDEBU4DymWoH?= =?us-ascii?Q?4OBoxIlrot1Bm2Ni0IhKAjwvdjruvHX8+nqCbsKO47FJ1uDComAMtu+YJgsH?= =?us-ascii?Q?J/H0rFbavX7X7UqNJqtb1FOo2CQkejru8WhW8SSCJBoJW9G7QxQjQ2GCpeFQ?= =?us-ascii?Q?4xl4/rlVXjnFm9lrF8+nXN4sujW0rzdvQvaYoMrs5d104xwHMqP9JHuxYK7T?= =?us-ascii?Q?S8aXP5GLUTOV/nYnd0VEmGScCBWtrK8YCtQFKELCHUVqpbUJCt3KtgP3glYz?= =?us-ascii?Q?jKsT8w7fjpNjd80sZKBrwCkgNmU0r0qmXVsB8/I/D/lLwo/Pn8lUfoT83X0T?= =?us-ascii?Q?MYJZflfinSyJFHX5u/pZgZFEJGkxw8pgdJUED1RBgp+ND/AhLmRj8Rz5LbEz?= =?us-ascii?Q?9r6kSIl1TpOCuYzNFVqkLgAJYH6wzHrXbu9Z6292j9R6Fvzmw//9d/1HbmGq?= =?us-ascii?Q?F1gDMfZ4IcOn4lCuS/9iSrEwgFDEzRe/9hs80VWkIe0zd6/Q70T1DkfzaXk5?= =?us-ascii?Q?Afk7dAixwBS4OvY9QbDld2lu+RVKyz1NzgAVVJ7ZFmbXoqFMGPUvKTT49TRZ?= =?us-ascii?Q?7XU9mseYG0n8pcPgrGu+n9PyUHsAqfcSLbWsXafRvlKO+HDcVX+IxxG0/+Fk?= =?us-ascii?Q?PbA8wZbBI9VA2JK8nCpitdBw+zQvAR7MyrBIq82zuLBqmxqi8ZpCx6opTZuk?= =?us-ascii?Q?T89z2uibRZ9DuuyG54Rx2oS6HFoxPW2jPapYSL9i6DYNysbMN/zo8o7z8rdj?= =?us-ascii?Q?nlVejGwQ5bHLwMJAjByRFyF7N6yslKpV?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jqmiJceCapZC09dPKnmtxqE0PkhyFIB5aAEenBO484w8shbIANRHwrWQWtlP?= =?us-ascii?Q?R+HTuWpP+Py/45oca61e2nO+2QngxOwsSFTXWCHgjxqA5Z2deHE3EKCiHGL3?= =?us-ascii?Q?vu4ErdPtWqPaO08hPVtp3GK3/lL3E0ZFIx0enDpzvF0ADXOjFc9nVrnnpaPM?= =?us-ascii?Q?x6AqhUDhkj85mWKW0J/e3SIl7vJJ3aixoc+JQ/GyG2NltPuBPjI0zBD+dDEF?= =?us-ascii?Q?64CWrQHnG6VFBGbcZ+ZIpWTvpZZKkbwx0flwie2V3oPgevR5ksuaSMmOrcbW?= =?us-ascii?Q?JgHzkEia7onFFmNv9NtofcTFVshD50cqbwsfFsCz+SEVStfZeEjVgWkIe/Gb?= =?us-ascii?Q?S7TnzJpj4MPVST34mO6crusNyFmspx+EDS9HPyDSUkTFU0MMYByrJ662nPeC?= =?us-ascii?Q?ihGJfi4fF4OfcT3I+ypX1G4xBaFqxWST2kgOLJakyf6ySzHfBhCN5BZienoI?= =?us-ascii?Q?VFIes48zeOYIwayiWqXaGKRArk24K/0p4snhJWrHe2YC9UBOcynBJQS7uom2?= =?us-ascii?Q?V3JGIaMKz1LfXxCJSsPLHyO+KKgAo2ACJ/KTtfReDjTvQAYRl8hKX7nTjPDe?= =?us-ascii?Q?FM7crSgwYzeKFpgUsw43Lv53SuO+7Z/yHvqMxNWekbRT4Lixm0eCDCOs+nrm?= =?us-ascii?Q?mM/HlqJY6GZpjyWozw8FhUjU5HgS/5yBfJP5sQDDQDXa1HgiDPI8mLZwaJeT?= =?us-ascii?Q?QsCwuhiiRcsn/dREkXhNtoKQQaeJyYqob9pBRfqXfmbZaBGzqwiLTXCu9wyT?= =?us-ascii?Q?3fhJF2ccKEtvA1+dh0woQGVEJRwDLn877JdaDCqZigeMryHbVMCGSuSKzs07?= =?us-ascii?Q?ejGzxGPfxKwF+Hsewha4NSjG4Nuik5Mxq6IkOapXwfVhDx2xJxkAv2/IXEGu?= =?us-ascii?Q?iubOMjzxnVbQmA6awjGQ0xX0es/USuFIiLD/w9mhUonxPWHJK+LLF6PDrlLt?= =?us-ascii?Q?UMHl3VCkSlRI89hGjmU8ChJtodhyTF58LhTVyyJEv/Qcp4UtIKEhiD0XoQSj?= =?us-ascii?Q?d+n4MruZ2ROdiQFJ+jEIQuk1PomusuI2iCJuQ+1+06u50u54hVASnzQ+muTh?= =?us-ascii?Q?itsVKrc5FWn6Gctlf1/1UO9wX/AoF4eeGmrSI+mc7LRuUTYP9N9YobZhaQ6U?= =?us-ascii?Q?PNFHvDPxWe+htjuLoVefgw2E6itERM6ZaVvpqHHoUfM13Qly97WtX28iqHNY?= =?us-ascii?Q?gAWHBF1gEpTsaa3OKq/jxCMnPgBtS5Rf0vUetNlaG+CvBS6CDKyIWvK6veIE?= =?us-ascii?Q?UXLCBiUqh+GnJQcMhem2zOfe4icYaSOzklXnYytEf4QT+HZh6oIJWj5KKhym?= =?us-ascii?Q?n1zBZ+mlenDVhOkVw5b1nLOufOaywypFUKPw9IsgjBBTLiRZ8qQQZosYQPuD?= =?us-ascii?Q?rYL3tI5TI3LYYDtkF/G5f6VSE8whW/I+kw/tkrsIQjN5bac6SFtIvCE6jfT1?= =?us-ascii?Q?TLE/FHHjevGp0UwvkOsz5bI266/OSn1CUHyH4/e07PRNdU6j+6HvAXNlWu8a?= =?us-ascii?Q?HO1sd0N9cbcP9xshsTTKMStGh5NG0Rz2vcYaJ34D/exDwc5PECw0o8e7B+lr?= =?us-ascii?Q?ot/EdH/krBlcDMmIqxNBdGHuqunBJn9OdIRsRV3pzSoz/sFxquNNjIWMjBIp?= =?us-ascii?Q?0g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: WdGkUidvS+oKMR9iSppiB4xFAt9gICaYs0qdJE7lh4t/mXwHFJxXVyFS70ofn/12fWPztYUAR/+KN4wRNRWXFh4+dh2UhTbXr3a76hu1FrgJE6/87qKxrRKjBkPjtSLNwc0pXWg/b1p+LV28CwkVzpQ1wz81/ZPJJwirYNNvxFGPIQ/chQNu8N6/yRYfSQFe5ZvhyIZvzggMAJMTOOIONLe9J1XMyiRgth+Hk4/u6r/lWNmBZQr7TE9Qi2hn2F4Vuzr1t6i1ZIuIAsRjPd7zjQ3PvXurrUeGsioazkJokdGXn3FPajdm2XEktyPTbXgHuniAImAvxZi6s+E7rYo3qlUBw9q2fyYH4BsojieAps7Xv9bw5VMysWYUYLi7I7B/VdADkETbuygUWu5xGL8PJ+opo2MzBQgNNTYMaGGLuhNLI0AljmfdEDVtp/S3EWk5gF50vAFlT1XCGuf7KTzw52ZoEkRGx+v2AyXMO4XAiFAefgtkZbjNK/7DDUj7Zpqqz4MmMNl4kQ/3vEJSZJBvn/cLWmsCvMw//oK41xjBUC1oYjPq5WocDGNdT7B/pNGBwU5phWVWd3VdNvV3/+haYGcENFRdwyT8W3KhdBkGZGM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 433eb16f-0c6b-4e65-46ef-08de15966454 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:20.7559 (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: UkT86DKobpBCw9wCaWPld7JMCN4/QSIXBnJslyOuaV8b+8xgVRRELu0OsTrSVtSBdkwmHTkl2FBKo+30AFrkW0Gy+ejfhu0rS2lJi8ph+9Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-GUID: iirDTvVgxsRraHB_YqLOHOVsTMO9wL7f X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MSBTYWx0ZWRfX+tbSV6MJbaeY C4s1vWXvPXq1qOmlj5af20cJLOxwez0TIeU0UOkS2pYpt5x1GPsRZManBQtOoxIhT4bYzaBOf8Q bfB8VC3UMCATPoqG7Qnras9tC3V3+x3X96NDJKfRCn1pj7XTG5udWQjYfvy3mlmiPCb2GsKCsJj BQW+nhEo54yuX1X5NqKRB9Fdcya3Ue1q1z7y/YClCRFpH9JUVjnk6u+1Y1EZ7izvW2nH3tBan8m r3AzRyUFl90k8gDx4NKw9YPOYeE36c6kNb2szLIDxUkO1ty3PltLocIt4a8k8rU8nbv5HDN2KVS kPS5q3LwDL3/Y0Jj8GPctJM/qm7ziP+OngpwMUTPhZrz174Wp8j0N0E5JLrJ4jYx7YKg9jT3drr lkTkZi3euZAa/EWVxqG48Jl9FLJRQAH25ezepnpu6FptXt3YS20= X-Authority-Analysis: v=2.4 cv=Xe+EDY55 c=1 sm=1 tr=0 ts=68ffd445 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=7Bca2qynrVgGe8lQwsUA:9 cc=ntf awl=host:12124 X-Proofpoint-ORIG-GUID: iirDTvVgxsRraHB_YqLOHOVsTMO9wL7f 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 of 4KB to 1GB, we see the performance go from 13.7 GB/sec to 38.1 GB/sec. For a 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. Also define ARCH_PAGE_CONTIG_NR to specify the maximum contiguous page range that can be zeroed when running under cooperative preemption models. This limits the worst case preemption latency. Signed-off-by: Ankur Arora Tested-by: Raghavendra K T --- arch/x86/include/asm/page_64.h | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h index df528cff90ef..efab5dc26e3e 100644 --- a/arch/x86/include/asm/page_64.h +++ b/arch/x86/include/asm/page_64.h @@ -43,8 +43,9 @@ extern unsigned long __phys_addr_symbol(unsigned long); void memzero_page_aligned_unrolled(void *addr, u64 len); =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: @@ -65,11 +66,11 @@ void memzero_page_aligned_unrolled(void *addr, u64 len); * * Does absolutely no exception handling. */ -static inline void clear_page(void *addr) +static inline void clear_pages(void *addr, unsigned int npages) { - u64 len =3D PAGE_SIZE; + u64 len =3D npages * PAGE_SIZE; /* - * Clean up KMSAN metadata for the page being cleared. The assembly call + * Clean up KMSAN metadata for the pages being cleared. The assembly call * below clobbers @addr, so we perform unpoisoning before it. */ kmsan_unpoison_memory(addr, len); @@ -80,6 +81,21 @@ static inline void clear_page(void *addr) : "a" (0) : "cc", "memory"); } +#define __HAVE_ARCH_CLEAR_PAGES + +/* + * When running under cooperatively scheduled preemption models limit the + * maximum contiguous extent that can be cleared to pages worth 8MB. + * + * With a clearing BW of ~10GBps, this should result in worst case schedul= ing + * latency of ~1ms. + */ +#define ARCH_PAGE_CONTIG_NR (8 << (20 - PAGE_SHIFT)) + +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.43.5 From nobody Sun Feb 8 02:41:05 2026 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 8C756324B15 for ; Mon, 27 Oct 2025 20:21:54 +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=1761596516; cv=fail; b=mvktaUdJWpahlIjpDEx3za59j8r+dqWl22NgIZII/e5o97O+7l15uafmg1TM+ogxJEil9Rtz+u6YJ0g19jjCy5ujeD5rdOdfrDNl91RVN5/9UIaftYVTiXCa++s0aazCkVYrXx9yjiR4jZ8Rxq8A06uNr+jbBRPoJpmQR9+kEgU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596516; c=relaxed/simple; bh=FOdmTKSN+16fxxm7ciDqqhlikbnf81Q8azp79SaatVw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=j+LnSV1mmxKUOax41lMpHs4DBJxhof7fzsaZf+zJEmyDtSzVbDGG43iPj3zdu3rnwnzHe9W50Sims8yanBmaHvlyCRRsE6gHdJxlY6UUCMUfA1AdBOWizyh0DlpXpWgYmBWZMlOyCfJq+pB1KTWw1zDKoKG46wPS+HkQsNPAptk= 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=j09O6yrH; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=YeKaag2E; 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="j09O6yrH"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="YeKaag2E" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKCX5U012653; Mon, 27 Oct 2025 20:21: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=uorIVQfxp3X7RMauaT5o3xHyDCGwSeme+kQmDulxPgM=; b= j09O6yrHFmwKBIFN8Hwh9FeeNdm3H0Nr0OWtbCTiNjXN27ni09cAf94NQuZDMUrw dIIN4+LQ6cQFhuydbcUck8Yvj0qKCjvgcC8LN4H3Q6zIexlWtIsS4Fbcn/jN5VZP hnl/ylRjr8B077kmiISyvdwyycc+THw2SItT7jQk18JKsy/IpSL0fXN9rioea8b5 f+U3dSoBEDNp2TfhMuyXNmd+nzCipsFcep4u2pSkY0B9l+BWCZcf8DKr018HiBca zYXQFF9QyzmPnHKulSUIX3ZF4y764OrOraY5IYFCX50CwFX998L+VFH0zs2BAFw+ hHq4HYMWhEHhIz4/dZSTCQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a0n4ymgu3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:32 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RJuHBw025023; Mon, 27 Oct 2025 20:21:31 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010051.outbound.protection.outlook.com [52.101.61.51]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n07h7sx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H7WiCSFFeMPaepA79drrlUNsf/xU7avPVogkrigOdkwwDgRCMaAOsdgOuOVxTI+r+OtXR012t95cu0Voi0i8XZaPPPXNUnI/UpPhGkDm91jpoCU2nEQcVn3KWfATIdbO2uDWoSCbS4z+VxjcCGhWGq/kyeftYrdMyGJ86rEaYhUoBryZ9hkm6Ex3inv9f6hK49YF1QlMR6PyhwuTZvMVsqytm1tSkwMgC3r2flpzVbY4PNZ76mTBMoXw72TufL8N1aQsYhRF8mhTo/ocpYobLbhrxdd47ScMZs8skloEVWBRGkfiN5P05eZhqClgqMO1Tt7sfKNgiw4U3rwPslRKig== 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=uorIVQfxp3X7RMauaT5o3xHyDCGwSeme+kQmDulxPgM=; b=ODeNOvfy2iTpHMW0wO5Hud8OZKg8Dc1/fFGEURKFinwsHnxW2zPrf5+4fl6nGJPoLOEjVRh/OgEmJk/k48YlAF08P2pfQhLi2EM0gkFmukNKcbxeKZojkeVa72Al2iUfppRK6Pka8K5p1JPVXmlvsw0pk1qZGK+qkcFqw+VELj/Q/8izWiOs5HptDI+ArRNE+YC5s54cVaUoX+Gzp/3toHL+uuvT5jLpaCc2xC+caEZ4YY3sFnIbBkpHVFopDguFA091/lngTUK6PJMxbSH/7P1ig5DMuIhxO6ceJ8ulO38VUI1UdXoaaROP4w/Jek0I1hCF0K7KXh/h45agO+qMiQ== 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=uorIVQfxp3X7RMauaT5o3xHyDCGwSeme+kQmDulxPgM=; b=YeKaag2Ee2p++gGHxFSukaAT8YGRPl/RS1d1EvK67kDqynr2yF+2UyPwy1eNYK4vfE+LuLHvTbHPelZA8S6HSRCblWaljdWTz4Dcftr2VJMHbSK9N+2y09v0tDCe0Q49aSBYd4bv0SZ1f3NX+51RxZTGfybafIgeOl/+8mRojko= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21: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.9253.017; Mon, 27 Oct 2025 20:21:25 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 6/7] mm, folio_zero_user: support clearing page ranges Date: Mon, 27 Oct 2025 13:21:08 -0700 Message-Id: <20251027202109.678022-7-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR04CA0085.namprd04.prod.outlook.com (2603:10b6:303:6b::30) 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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: a3341514-9560-49d7-a097-08de1596671f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?W7wumAmsxuiC2QgxqiZcvRNx1J9EMkcnkf2r41re1r3G29DoFSjYM48iqjMj?= =?us-ascii?Q?gA9FxunRrlUlfrS9k4rKRwF76d8iCe9Np4e2wZGMZb+dUR5stzjfC2Si3wSu?= =?us-ascii?Q?FogQoVaFUVh6lBi9jHYGaKsEdl2+oLy8zpLhaP6RLaHNu+QPXn5zmiT8SyWX?= =?us-ascii?Q?vY7fhG3iEZ8ve9cCDjSAsNDWgaFpf/46vj+2KfXhJGc88NXjOBCvTAG9RVxv?= =?us-ascii?Q?Bo7qe/NtxLEyV8uZsV357w2KXCTedJEtdeIYvHp9qnVwBHcZ0KB+OaVD8X+d?= =?us-ascii?Q?cUay9TS1pfDvCP6budILThVNtKQGm9TmBpdkK6FSiRjb5pNvwJah1TwsevGP?= =?us-ascii?Q?c7icPVo6RgKWsc8LgeK2EjFgCkQjd58dOL9EC2JtUNJo5dNk5Q5GjX1IIAoh?= =?us-ascii?Q?P9Idfd2QMHDGwmRXo07tILnTIMr5kA5DEoMIvBB0TAZJ2glIjT7Q9BkPKhx+?= =?us-ascii?Q?cOhxuAD+oUwqHqibaCUw8X26pqBy8KrEXQalwf993PwmS3cSudqfZwlS7vEE?= =?us-ascii?Q?QrV1kxKFhcy5V7K7i5oue2Psi3F9BKq7qczoEFc4EqKKeioVEU8ONZVKFsQy?= =?us-ascii?Q?DDaw2a+SLN/f4d3lmeZFCdvwKHqeZpQCmSrGWzjpgwr94kilS8DYPwZ/wN00?= =?us-ascii?Q?RihCZzQpjyTGVZErgHFnmKDFtbfe6eRwwjbH6nIA/28A0tROIbYp+qgqXlq6?= =?us-ascii?Q?lpifkpEFHwUQB/rXYDkrraaHSdzs3of9FfFVe7wVZ014Rb4t+GzqVB2wfyDX?= =?us-ascii?Q?IxKcRZ2f7GsGKEOxdUODjDs1AGyi3kmhw9cifEC2rXwTtXwlfU1chqlu8WnE?= =?us-ascii?Q?MulBmcrfZm/gWhGFzt/t1OJ0ymaQwHpZJBbU3Cujn4NEhrC59FdL86XO2afa?= =?us-ascii?Q?6vQ4yWg1EwQob4Z2bc2GMy3/5pUtXMaT4eOKZqMwnbKXeaVGY+3FEfAcnjaP?= =?us-ascii?Q?wplBslhIq6qlRANHCYfUhGltOOn+Z5YZnU2hMfVXQgTNDd8SY713tCb1ABEv?= =?us-ascii?Q?5pT/WLUnFFHNwablwylzAjulkeskVmz7i6tYl9TkyHZV6pp1cnZU9MAMMnL7?= =?us-ascii?Q?lQhUVWAIAI4Eq6MZFyVO9rzNLuRLG4RwH8OWQMGV1Mj5xZnPsZqKDPz+6LWU?= =?us-ascii?Q?EaI+tsHv+11lrscLH5qHplgacEeFXL7z6B3YPtoF5Xgr95d1ixe90TQyl1I9?= =?us-ascii?Q?pTFgmi0gHcZLvt1OppPjmbWN2i8J01bR+bjDBHrGtMLfIll+LYUT7xS64vlq?= =?us-ascii?Q?0n+FOyLcma1HmInBIelMjEgCcteqdQFS7zee3A+80jAJvL62PDaus2m8OdEf?= =?us-ascii?Q?zGD5S4Y/vUMqkPOYBAy2aStP16xx1vLlevUMJY1mH3NeqMMDIemskChpZ8z2?= =?us-ascii?Q?5tJ+tZyBPC9TwQVaTZdUPRstFi5j+KOjtR6r6TzSQxbj0p90UIRCohML5KwA?= =?us-ascii?Q?1xtp41ishMKzzKvtc/p3E0mbHh1YKK5X?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ftUB+QUgtG8d49BDVeM6N8Qj0h2HVadOxn3U3mQfQbFulLdjK4iHQYqU6jzz?= =?us-ascii?Q?sDUPMpnaW7GnE8aE3HPrcaa8pzAg8QMwSVtI8rKsk1e4610sq3XwU/pZMIof?= =?us-ascii?Q?I58XC1jQ01HTqd5NxfmNmvXsiPu/XwatWn55c0geIONDTAPIzmBchLKClM+C?= =?us-ascii?Q?HhNDOGCZZ5TC/fBfUkvgBCWJtboZsKHPc0PLdYz9BdHSZMweJ7sF0CQgAHcI?= =?us-ascii?Q?3lLJghhcM+8jEeoatXD9eToXDN5lhzY7GDiIZsyB/G67mgq+ImvsRyaa+Zs0?= =?us-ascii?Q?lJp+oVoKRCN6KODafYFvnDhtvSK1vQDEPGtGxg5gfJ1iOJChtsRlyl5H2q/S?= =?us-ascii?Q?QNJ+9GeH2sRDwkjx6L68yXIm3sWtk4V2Yda5aJ39rLeQO2jB81LegTJCrDsK?= =?us-ascii?Q?8yNLrGbQkUEenJ68qdPzcoL1POSX+dYWvxr/wyj8TbjiBnd4/7bkf1cVshdh?= =?us-ascii?Q?TfZ/sjPpBIEUi8Kuh3nDjCCTR8oHv6NPXL2LwvZQ43XoJ30z49CRvmLP1i4i?= =?us-ascii?Q?LDmCLT+n4YIpAUWepBtbylQZNr1wPB1urKzCo6kqbwRtaxYwPup2d1Q0V7IK?= =?us-ascii?Q?YHxHX7ARxmTIdWNTKukBhkVAwRnagwEWTJfid3Th6hhKANnnzSpq7anDpUf2?= =?us-ascii?Q?VpkXk75stKvcsWIV1orsneD9fWEUVwNofxRwZsdemi1JXy8loc4zWR+z+5lF?= =?us-ascii?Q?zbpigXLPRX+K9c8s+1Nv/G0Ky6RuH5SmP5hhLw4u/q8HbSY2Itl1RG2ExqBD?= =?us-ascii?Q?aQcMxeiDozhPWWl/j9tMJOQvIbWDcd4GL2EyL18Qsy/xb3/7oypGlGdPFma5?= =?us-ascii?Q?iMrnl145PG6tpTEc8/6Nr7HDWsXR+clFRArT3zmAyj63xlUyM/ctGtbvomGQ?= =?us-ascii?Q?J1YdWS3GHgx1b1FiQ5XTyDB/m2DwbLTKjI0lFNbJz4b1fQCPvyzrY4mEIZaw?= =?us-ascii?Q?qJNNfFEO490hGtsF9phS3tUsGiMDPpD5q4z/imh/3fZ6gC28bjO95m3a7rz1?= =?us-ascii?Q?+JeALRFpTZKnB5CRB+sX8cNlVSoB8gU5jAkrM8n7TF/jgQkPM/xbG8oOFUJh?= =?us-ascii?Q?wW2k/I9xNKIHNzFS/ZHMLnUAdCgllRDbn0t6ldNf2q+n8CI81+BVYWm2gPRV?= =?us-ascii?Q?GgnuKMjoROOzeaFIb6Z6OSZrG4nWJGYB3g+8Ork9FeREBFHfvx1kUWK7fSKF?= =?us-ascii?Q?bmRWACXv4uqyKMEpe4ezLu+8vm6i44sh/Kcm4c61FeqBkb8MUgSNXca6TT+R?= =?us-ascii?Q?+Ekpr/8ZQ+JAJX2qS9uaSqL7qFsBKO3wPEdvlYjnSa6d90PrOSP7+E3fgLBF?= =?us-ascii?Q?faRCsdWvXKilWwOHTX/AhGejAtMb2qpfCAFGY569zG/2tkzh+W3ovR+0H540?= =?us-ascii?Q?f4sAeI4TTYXnx7E8RYSa+JOdEd14n6t1r1SPwcefRSBE1ArPv7na9NimcR8n?= =?us-ascii?Q?i3huaqZ/uwy/4XHG/De5j8rYdr5xPoZ6DfAq6xz8uYD/ooJS5FL1kPCTqk+f?= =?us-ascii?Q?w8DYmwdif426xpfMVr1BivhRdIDou6yO0Fa2faDCJJImElWNQ7Ht5rHolvom?= =?us-ascii?Q?Ua8nc9yoF1wM0VKR8c+/oZ3nJ14OPgXeQiKedCInWs9v8lj+1ZmlDIgG8lqH?= =?us-ascii?Q?KQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: BKEv5LaKadB6hisWFQFebUHTTmoZaQq/Xfs+CUJpNU2SlMU5TqQTY4sbC4G43PJtjdY+knzRB3l6dlCtmuBZ2an1H17MYiea8IEZkpRSrQ9H+5qJirMJo0AirhjjbYvGmWIYQ9HxmM4+Wi97VawjFkXkLOHhshhyUx2RCsq78DIuzPCrGlT+VQMIzR39s5QK0KcXClgxJkWEJG8djvplpoRt4kEwwuMenzedu6nq7SW9ThA3a4v3EFrZb095GU0opK4WPcFDVEhbEbCCnuXZjRV7fiT/jo0wPQeDOsso0YmfwUeSB9nLymgovzqlFUA+j0MiMqfEGHIvpMJHM1MLsBDw9Y55njuaa6Ph91HDTiexPIIwwMQgB/nTx4xLzg7ik4FSiwsK58RRG10JWeWhTnmHIcgyf3nXiDLLmHEMstjEwYWf0DVhNaOIj1WvfjD1zivp+lklUOW7TENBL60kcwUmx2jYpLizdugxkXx8o6S9qGxRAZOj/4UmIAcpRAncHQ+nbPlS5XdXkZg6n+9TelWORzadupBJtZ1cnU070zZ523z2JxdN9S0yoTbz7YDeXP2SHH1AIQ3vN7gSxUsRXvtBrwHDf8hEkJE1d2OwBUk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3341514-9560-49d7-a097-08de1596671f X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:25.4712 (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: xuVNZmuFSxEUkLawSaPdPJGVqcZY3kIR43qD/cvilx+P9vWFWMKZ7VMzG3HHM8b9CsdHxhEyeOE04FsmgTIzykB+QunnlSEhECmMa10CXbc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI1MDAxMyBTYWx0ZWRfX5Cv9pZqqkcpx Dm4zkH8nF3U0lCAL58o6QKKy78CkoogL+mBW3vWEXh9mImpnR6Ig5wNxhfvqX+JExJpaCh78FiQ F6JEx7lFpKesUZq2zV/uuxcKiWGzlcaI2f/LzhltAwAatImcOn1/mYrRc2Bub4Aq70RvMh6i4Je kQshj70x7rDLa4DpjeLu9C3eRE4F172RJGMqFEePt5jYlAvWGywmSQaoRSE2HuUCK2xMz7lWiEs ngVP+NqIPMC+KJbZ9ny6URzMv54jJfw5hdeJJHZWyxiogFFeOkCkEdMXa2F2CBhwxDTAGSsxcvV 7nAgtTYlhOZ0Vb9kk1fanYhfneCauKpQMAzaPHWS2w5z5Cw7Srw7D3A5JEs47wKath5OFa+VgiN 74bz5w7rY4kvuJJdPNOpRycwTifxoQ== X-Authority-Analysis: v=2.4 cv=Z9vh3XRA c=1 sm=1 tr=0 ts=68ffd44c b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=emMqWsvGGE0KfotJViQA:9 X-Proofpoint-ORIG-GUID: GJRbnyG1arblOTjHodaHhhbjqVSyOlwW X-Proofpoint-GUID: GJRbnyG1arblOTjHodaHhhbjqVSyOlwW Content-Type: text/plain; charset="utf-8" Clear contiguous page ranges in folio_zero_user() instead of clearing a page-at-a-time. This enables CPU specific optimizations based on the length of the region. Operating on arbitrarily large regions can lead to high preemption latency under cooperative preemption models. So, limit the worst case preemption latency via architecture specified PAGE_CONTIG_NR units. The resultant performance depends on the kinds of optimizations available to the CPU for the region being cleared. Two classes of of optimizations: - clearing iteration costs can be 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 map -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 [#] AMD Milan uses a threshold of LLC-size (~32MB) for eliding cacheline allocation, which is larger than ARCH_PAGE_CONTIG_NR, so preempt=3Dnone|voluntary see no improvement on the pg-sz=3D1GB. 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 | 6 ++++++ mm/memory.c | 42 +++++++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index ecbcb76df9de..02db84667f97 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3872,6 +3872,12 @@ static inline void clear_page_guard(struct zone *zon= e, struct page *page, unsigned int order) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ =20 +#ifndef ARCH_PAGE_CONTIG_NR +#define PAGE_CONTIG_NR 1 +#else +#define PAGE_CONTIG_NR ARCH_PAGE_CONTIG_NR +#endif + #ifndef __HAVE_ARCH_CLEAR_PAGES /** * clear_pages() - clear a page range for kernel-internal use. diff --git a/mm/memory.c b/mm/memory.c index 74b45e258323..7781b2aa18a8 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7144,40 +7144,40 @@ 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) +/* + * Clear contiguous pages chunking them up when running under + * non-preemptible models. + */ +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++) { + unit =3D preempt_model_preemptible() ? npages : PAGE_CONTIG_NR; + + for (i =3D 0; i < npages; ) { + count =3D min(unit, npages - i); + clear_user_highpages(page + i, + addr + i * PAGE_SIZE, count); + i +=3D count; cond_resched(); - clear_user_highpage(folio_page(folio, i), addr + i * PAGE_SIZE); } } =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 for clear_pages() to zero page extents + * instead of clearing page-at-a-time. */ 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.43.5 From nobody Sun Feb 8 02:41:05 2026 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 CB171322C78 for ; Mon, 27 Oct 2025 20:21:53 +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=1761596515; cv=fail; b=oS8kij8gROkfWgAatpNgrQttNYFABL/IsY1UV3JGIlAUq1zLqYT/iH6TganyjcUZmgFZJAFwQjMuWmH0Gpp7EpQedX5kW/rCp2kp/xFcDnbbsyHuaYA2qR1Ye4CenwBwt35kQ1MTKnbKyzpBVqJzimeKovFEcMB1GOBvMVlgnwY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761596515; c=relaxed/simple; bh=1s9/mYKPBPC3qfc/MCd7+up8eNSsIzxepCNmR4tUWdI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=gRyweF+B9W+7wTuq5pHVpHNCaxwCyH16gUle9dFmuuAeq5lP9O50VtP+y3GrjTkMDm4teOeLD8B7iM3j4t3lktEU/jvWxVOxWa6DyUl7VwwJo9LVftWZIioaUvpLfbwBcwnvueW0M8mKPGHF+SC7zHuu0jkigcGf20vOmtbej8Q= 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=ceWVyB/9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ItHOrk1j; 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="ceWVyB/9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ItHOrk1j" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RKDPMO013956; Mon, 27 Oct 2025 20:21: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=fUSQ95lSjSf0dcucysntZIceCbJA+dhwhaFtfbEIMKs=; b= ceWVyB/98l4HjQTobRZ0VeqTqSi8Y2r783PGiQktrs1wA04gSQg9qQFiRE46KbYw E6sX3wiqnKMUuPF3K/672SpXjhr4/Nlviiz8juPAaCNp9hIlcgVNrjYaGI/V9qOu IhJ13qa1GI7e8s0Ewq5zlwFDtlcyHlrNypN4F2DZaqGHw16ISfr1wf1gNAV5lKYN CYUXrOPQxOWqEB04XoyJ7EX15u89wqqq5/PpRmqLiQVTPxN4l63Mdez9eri+M0NR 8fc2DZfNKXRQxPI54EvqDtl1NJLxe1641Z2LPd5vhToW1D4YmWTfMHNGvS0pT4mz hB51uSyWiE3cFf5CoNkVwQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22uu9wrn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:34 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RIkI1R024485; Mon, 27 Oct 2025 20:21:34 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010056.outbound.protection.outlook.com [52.101.61.56]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n07h7ue-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 20:21:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WUG+oZBXcgkYqMK1Gnkpf02YKWVqLYdx/9dGji3IB48b2cOz2Ek2oLT7STxrEii5h3qGW31yT1yM1CyrckEZPjhyIV/Dywpo/9f80GsoRGSJWmFs/rx3HiMlSCudIqkXFI+teZXD70qtohN3n2DiXxmoarnOPsKEGMc6Y1Kfs9ikVG7dQvCK45/Jgn3kmhntw0bKCk67R1rrxR/qsvUY2tYQWncURMQi3lmFvwEISTYA2fmprF7uW9z0MYVCLkp5oQO+H2qa6v5nprq2zphHNdEzYPa+J61ty7uGoJ5b/tRaN2XID+f/C6CAc0FGRwv33rADjqDE9J0XAS+C6kglOw== 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=fUSQ95lSjSf0dcucysntZIceCbJA+dhwhaFtfbEIMKs=; b=Up7Gz5aZ5ZJ9i7evHH3d3+D+f3GKgUuUAvr2Rk1A806w/nCOaIrGDFHisGfyXS+QiEFXtpsglXyc5F0uNwoluH2swwV1L3fuXkg6NlVJgEKSCtBg+agXuA2Bv/H5uv1DYVai0D6oKOhc94NjqSZi5O6r7WsZ99uOwdZGRl74djlmiZRizUjYdun3A/a1cTAwR7DkSWXisy9GNnzRUvMzvX5biXdjwKYH9Nq7uDkrLPe2vJwBhUPdQ7Vp737/nH+79O6LzOr/1UaGsG7O7Y36OmFGh6ot0XCnSLJPJO2M3IoNumOzN2bTQaFBD7tVKznKaQ18QYcwTzV+cdfm/FZ0AQ== 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=fUSQ95lSjSf0dcucysntZIceCbJA+dhwhaFtfbEIMKs=; b=ItHOrk1j+an0Llc6Krj5DW64njipyjEa4zuMrCQZldHNXoT1SFoIupkoQ99hDes6+QFfDR5tQzv/AU2+gbp33IsrC4q2jh2rsoNKFi4igiDNCUrA5d5a1GYoXMy8eZ3hj9Oo9mP/FFtFFiQNYOPQxw/9l5lG8lBQhKodvnBYd4E= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by DM3PPF1A29160CF.namprd10.prod.outlook.com (2603:10b6:f:fc00::c0d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 20:21:29 +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.9253.017; Mon, 27 Oct 2025 20:21:27 +0000 From: Ankur Arora To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Cc: akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v8 7/7] mm: folio_zero_user: cache neighbouring pages Date: Mon, 27 Oct 2025 13:21:09 -0700 Message-Id: <20251027202109.678022-8-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20251027202109.678022-1-ankur.a.arora@oracle.com> References: <20251027202109.678022-1-ankur.a.arora@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MW4PR03CA0023.namprd03.prod.outlook.com (2603:10b6:303:8f::28) 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_|DM3PPF1A29160CF:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c8db2d1-c02b-438c-8b92-08de15966810 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?umv4u6wCZYD9blborrywD1Zgc7ZWJfvfYN2mH5xhT8FTX1D05pJuXmNV7gjP?= =?us-ascii?Q?RuTp6zxVS9UjgOTSXo7GykN/ZclH3xEvo59sumAMyjDWQ5hd9keukX4liJK1?= =?us-ascii?Q?LCSnn3n3WHzcdPNtWbyDXizyANZd1eCAAlwD6M3c1tOwTOF2mkFLG3wSid58?= =?us-ascii?Q?TiP7ZKGnSMDwqZoq7/DKlxheQe3vLCWuwzTQ+kMqlr0H0C3DxwFMpSJbCl9A?= =?us-ascii?Q?h/E7LjbbykacmIr3FvasaABgzL2dwGvRSbdKBalJeKnC7u8bwOnFZI+OAC0J?= =?us-ascii?Q?/TKYOpQ1HrJ14PsJCnXgJo4C2Tj5a8UmMstSqlLowfDycu6kztK6YqRmPRkS?= =?us-ascii?Q?npyad0ZevH5A1slXIj9RC5VoSu78AmNm6vkBfnK2n4ijkj9rdebeTqtJ2OFm?= =?us-ascii?Q?YUeTR2PeqxnvwjXDFsvgIORm8aOzDhpnTk6+5RCD9DZbvuPJJl9llemSVoZH?= =?us-ascii?Q?4GpbDFLz/goGsy/NEz4RcPLK7yGLP3x2K339RqwMym4Gc/XBHQWyxRlxNiZ9?= =?us-ascii?Q?u88x3ZbMjDvf9M3htfhfPVDBN+6v8CyPcu94ACk0FaurFPuFsf20BKYc+mWx?= =?us-ascii?Q?F/zCmxdSsk2KA4vnUChZOjWaefRGKBL300GBu7GYVDxC4YRGOPs/sv0g6DFD?= =?us-ascii?Q?KXRQfIWTkBRczXG0w2A/jnDe3DhsCVEyE1WTvlKLNbBBgdBTVk4WGMB0i2Qg?= =?us-ascii?Q?YPZbO7aX7lVY1C54yOgWRFmeyCk1wUumq8VUlnVogoV+iPR9ODymI9GVcLyo?= =?us-ascii?Q?e5J1AbFPVRzTpkHLojSqXXYs9BYgHwekBC0cP2mhFCMP/Xpr/AbirV0dWPAr?= =?us-ascii?Q?05rBpcZMMYNWrSQhdskrDXG6D05XSpBQOljIlIJ6CEs8+BJEcPej+ZeEC5AE?= =?us-ascii?Q?5Uj4qIR5N/WjDDIqx1iREabizrVri6JKd5CqFXyqlaaDh3lrbzLV57iacmMK?= =?us-ascii?Q?x6gzC/PQ76z8+LSBEVD9AaaaUBzeRpwo2AmkjURKumYFgRHzHmAgYBiiJHCC?= =?us-ascii?Q?PItMohmBtK2Bg+Jb/CIt73LYgZIUU4+pZ6bJB28EvEhnhdImSkEFyuawZLGY?= =?us-ascii?Q?wMcs2jeCm7thoWA/RDvSmUGxAadl+AwGMemKv1k2ip4UH4/O7SkbUE3yYQ0x?= =?us-ascii?Q?sjqPUobcXuvFxtv6i4BVcm5+dU5LHlbehLDoCRuKIczyun/7dAI5CLeilpBW?= =?us-ascii?Q?Z9pq/Yn+apHPBqpmZca1VYVvoHD47XafOOp6ItVuASyMRqq63tm0LupYRHAN?= =?us-ascii?Q?cq+zNFaKThWeRCOeq8dKR2ifjDNd6eYhlq7Rganht0z+GWMnu0thxtTTHgNJ?= =?us-ascii?Q?4SH8v7pWBArpPa4B5eHvX35cKwrnp3gHJvDxW8J7IPosphjtGnRj4qrGswmv?= =?us-ascii?Q?o6ac9pZgAfswnUXvLEgavdC2Mg6GE1N2hD+r/80G45Z6EwWqNS3yeaysZLJA?= =?us-ascii?Q?goNLRM3PbeaWJYAnrRpSxxV2L08RRJMc?= 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)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Q+mxVJ4lusvuBo7ruUExB5PAWxyhK9F9EAYWnkA27IZKBwjSdVkZD64edm+r?= =?us-ascii?Q?g1rvHmGgslKGfzL2JIw4l403sFuTLko3jt8pep4YQUcUpOd2cnkEV6NBLm8Q?= =?us-ascii?Q?t8HKSZSQGI9HE+nFM2AZiPuF8iV103WKW5UYLsLCMXNLMmIStNptMZO6ltAT?= =?us-ascii?Q?RkDsjOol+iieNfddHEs50iBFPbRIACI0d60PsMTkgZh+4B3bvfiCKSaMiQkB?= =?us-ascii?Q?Nj53aAhTrpmvbrJASgHpZi06JR80GdOlStm5E5dBBD54fhYyLEM85RUU3AU4?= =?us-ascii?Q?Gb0d/JKC6ES9+jYPMdD6gfyrU6RZhDJPkR64cxqdi9FED4B88ij02XaKDqxO?= =?us-ascii?Q?8bI4bBI7BDgdBtBJJLv11U06R+k7X2lXYIgBsgr6SzwRWQOf/prQgVzrM1Sb?= =?us-ascii?Q?smxkSS04O7GGtKbQKpyQQWakyZyB9gq32CKDvNk5RZNdwejyotgCJ8gIEOSe?= =?us-ascii?Q?3gxun5upMOrhDkEms+aWFhkSHYRtEsdS1bur4Y5O8/p4zwzZGyCXGg6DDtab?= =?us-ascii?Q?x9+fVj76BrS8ErWbBsh+GW10Lc9R93Zsmraw/WK3kGqZOpWP5eo05JYFazaC?= =?us-ascii?Q?uSCjtl4tyOWk7lPGdVBok+cmSN7r2qdQTYBnoyb9gEGEeb3cRWN3zwSe1jCr?= =?us-ascii?Q?ZNqtIf9DMkcVo3JQOSuySXwPY4NYJlInBeMQtIMxyTjCWzWky4s6aosVxZn3?= =?us-ascii?Q?MViwdssVBDB6MmvRLhUjAEfffA2kohrgU6AZMXFp6bhXynEphhFHBc90LN/p?= =?us-ascii?Q?oU7Iq7soL6zTeOBKLSiqWHvJRUZW36p4xsPeejYgLgsQLUHP2BAoqBPMgqee?= =?us-ascii?Q?efzKIluHAMBJOhNkSNrlgo9tHf1tmKkNOweQLjfPENcA+PkvwdPND+q4+cE2?= =?us-ascii?Q?anBceTHni3gyf36dG0OxMUMQgM/EPAOL13US5mczgri5C1x01O+p0ycsoyWB?= =?us-ascii?Q?ZLfVZuUY+1qv9KXn2HFFvraON4IxQIlEBLAq7tRiLFPrmQQZs4a3Rf7O0vEK?= =?us-ascii?Q?nVMYaZaR9cGTCKxWOC1M3TOjtFi8ZsRWTHXZSudMk1NwSOkt/lms8iCxitrF?= =?us-ascii?Q?F3IknP76amsLyfzFvGyiDx1SIyEkba7X3Aarc47HOjPeA5wUp29Ak96xo9v8?= =?us-ascii?Q?rMVRElB+w7vdfZGc65Gi2EmIKtqeioXJ5IOEFIVLQsvRm4d+IjRwIjE2h3DG?= =?us-ascii?Q?ycTEWIU91JKKBRph/h/gp2ZdRHhHrAXRKx6HbAxCtyT+uArUQSp4BbcqDn/N?= =?us-ascii?Q?/5GI5hD8YW4jVXQCmpocfBw2T3T+feBWZwqKCbsssWb6B+aRL1VGcgE0heb8?= =?us-ascii?Q?Mezcw0rOTOdnHli/+KRJjveicCHKkMrgC+xM2y0LioIbcPpxBH7uujASFPO6?= =?us-ascii?Q?PG2bLfNHt2F4Gf0E4vGlXYp2Kwd7TTDgHQiCQCOqX/mwTA7dv2jY97o688Xc?= =?us-ascii?Q?pZ5klCx0TQ58OEMJZvvScwz6SeAWws8IyxS80qcV9w9MTStuwzQHDTi/zjjI?= =?us-ascii?Q?ZxE+TBOLFkpF0uKZTqKL0qaRbh2xstXibBBAVfeeHY3u0mI9KSAq+RGfusO6?= =?us-ascii?Q?/DO8k1bePQ1NtYWdg1grUBYiDct5PPc/wKwJxRfH6edCYfG2gclCc6gqCMDq?= =?us-ascii?Q?bQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zGvVWHOkRPPX/ttLgNTV9WFHI5jcTHQ8Qd9jpG0NrgH7GqjdE6e5zhniEJsrFnQ3QoYM85isPV1SkViURWxuXmmLLTaH8uM9criyoYHzOvGqZN+YLd65gmN/XXPgqBe3eQbAnysKBWpzwH4EhTQTXSHH/2cM5Q1r/wJ6F4pmhvYZ6CzKXToB3rzfxH5K0tzp/bxqnbHTbRXt3vMyDo4DoTaL8ZMtzNQAVhb+IXEnvsSb1Tun5+7Taaaaoqbl3AwVF7zJEzTNW5l82lRnUSOkpMZHCm7/WsveWhQoRHRwGp4qNPK4uNN8Mjt0K6YrkBQsMWyEaEdrv9YATFwYCqzEaurgh6pp9O4JbEewaPzgresKBLPbUqmdaPleiugOsWiYm5CtrniXClgkfQFcLt31cHnqUiRSZ5mGzXOQz1YCO/CMSvUCONq5fUJYUNntQSpddbcReALUXM/CYF/ZfC4DmNZyD3RvyvtxPXgGJ7czjX9GrZs2SXMdEbCd5IY+8cBjQI5C7Zds/UQTFl/Xv6PewTSwkyKhGBecEGGfRsR0x7e0t4CAZCRzHa6sxHo0XJEO+rAc+xXqblsUCrUV+MLP9ilAdJUk18B9JAUArN2pNGY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c8db2d1-c02b-438c-8b92-08de15966810 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 20:21:27.0615 (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: edpybpoS1X1+UxuKaXXvtk6WGkxkPPGG+p3PV5RrHHBhO5CgzAyjTmG5ztmlAil0MNcTLzbizDpbhWv9rXBdvw1q8M4rB98MWHzYuD5hVdU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF1A29160CF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_08,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270187 X-Proofpoint-GUID: Ye1wZq7eT5EFM2YE8ZbKZA1pIF42Zddg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MSBTYWx0ZWRfX8iJ78R743X79 zlpjGHcCHWpKabSAygIHHFKSuTAtNsXX3G0qsEqFGeME4TYv69yNkC8MANRyYoTVk+5cUpwOA16 fS16UK3blKmJVtKO9r8cH03k3/hAt/45fJOs50rhwlTK9WhaCgAFoI3f6waaJpDzSjv+0Ibmu69 i0+VCz+bauLoimu6z3GQ8xgkjEOf5zv2EAC/0B3iX2tsQdiYaZntnP1w8ZP0849BNIa+1J55ePU 74LV1AvB76wk16i999qlSEMdlSe0XAOzaPTZUqpoBzp2Es/eMa/ZV89F8nOmAyxnbruHfhbkB7k ey1Un99Sr3cySwj4H7897MpZP3u7JTLC9VYEchcfyrSMXFHTCBrVcoBSsmWOoHzIhmfcJIzcF2M ykwMMAL36selGCHmwE+vVyFaEpvhFg== X-Authority-Analysis: v=2.4 cv=Xe+EDY55 c=1 sm=1 tr=0 ts=68ffd44f b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=zd2uoN0lAAAA:8 a=EaYD0BI2-7KjZKhOlH0A:9 X-Proofpoint-ORIG-GUID: Ye1wZq7eT5EFM2YE8ZbKZA1pIF42Zddg 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 a likely 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 7781b2aa18a8..53a10c06a26d 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -7171,13 +7171,53 @@ static void clear_contig_highpages(struct page *pag= e, unsigned long addr, * * Uses architectural support for clear_pages() to zero page extents * instead of clearing page-at-a-time. + * + * 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 cleared last in order to keep cache + * lines of the target 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.43.5