From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 22246C369D1 for ; Fri, 25 Apr 2025 11:05:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B61F46B009C; Fri, 25 Apr 2025 07:05:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AEC006B009E; Fri, 25 Apr 2025 07:05:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 919346B009F; Fri, 25 Apr 2025 07:05:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 68F7D6B009C for ; Fri, 25 Apr 2025 07:05:02 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 180A680419 for ; Fri, 25 Apr 2025 11:05:03 +0000 (UTC) X-FDA: 83372284086.30.60376E5 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2049.outbound.protection.outlook.com [40.107.102.49]) by imf06.hostedemail.com (Postfix) with ESMTP id 70D88180008 for ; Fri, 25 Apr 2025 11:05:00 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="IPWCGYg/"; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf06.hostedemail.com: domain of ziy@nvidia.com designates 40.107.102.49 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1745579100; a=rsa-sha256; cv=pass; b=3HVuENtBZARVxQGjyIBhdAOtWW03gMwoZ9RnuJZ4CkMKX2PhQXcluP3HDuLpA7lsOXYiER MCpPTNjZmwCiAo13s5RMfJA4QG49rPGkO/+RD0HOg/GHAjTpIYNffa8wm2cfipgZtdJRf8 2mU3Dcwlqja3VcHLzc6OsME8LvtN4FY= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="IPWCGYg/"; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf06.hostedemail.com: domain of ziy@nvidia.com designates 40.107.102.49 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745579100; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FfioJDrYydBZTwAk4l31buoiSVHcAPETOCAXs3z0D1k=; b=8CN4czh9/G8uZfUjZPH3q0XAkzpGcEFG3DqOLpriwRuT1L6evYxBIIE8NEUOIr+uhxH0TX wnpwgCsBGpcb2nASdEO2+Iy7a0UDGDFrwpNo4Q0dPX+eSKIi/f0PaPoZP3tcp5VOHsq66b snW8907ayIDbbajW1kN4H+jXpMIfO4E= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SNznrkJANRfrP9hu0X0kA/91PusCMube4HR/D74iJW02jBYwYl5LZ8Qm5eCIYSihRL5AHrCo6W8oGmogn/GTpnulZPZFqnoWSrZzi4BSIlGPX06U+BBID+CqJVP3uRmhVym3LIwzcvqJ7iFBcTz3bcejs32laA4pfB7EqFFieTJQDPV1k98P3LU08NJVF4IwjvxShyuEtMrRk5QURs+wo3ke81kczSnMn+3ITQlO0P7MTWf0JflCzr4fgule5NNeVE4IiHWf1EEzai/3G6PiKsAv4Y4bbGOg5AnCEuoR/qEAj82TDJIhb+VczQzl7vaosFB6gQYvpmbsmwf93dU/Mg== 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=FfioJDrYydBZTwAk4l31buoiSVHcAPETOCAXs3z0D1k=; b=zMUv1zw1lSz04GNlxl9+Eddt8lPyu4Rrp0vp4xhzYmGyt358G8LQ1h/8sKDgKw1r0zIwzplvF1txIfDTVIPghcoafrgSJrD9j8cRaGBrnW3jDodrFeugj/6bpeNA+/fEpVHmUKA3PVfjXnMZVNP8BRPzrjU4VVlTviVMzOwIhRLk6QxCF8XFi1yLZZU2XTwCn+f3R7anSeIWyEv0UA6Im8Nu1LlbD8FRICAdnpdwkT0+ARFVjbkzP7HwGx/RB4K21chQ+UA2DU9NNhII7lhLE6IlFYa6RKUe3fgzTue5tEdr+kcRL6eJI6L+z1jH+onrmAtqBQdzfrfZizT1/04LOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FfioJDrYydBZTwAk4l31buoiSVHcAPETOCAXs3z0D1k=; b=IPWCGYg/PjiLx9BIxd1pBd6rh30IKejiv3pOwW4ymiN3C8Zme8vdY3Fz5aDC9CBcnIENgbk7YWyOoub+cI5cDFdhfwS4gGBuqvn+bZo3eRGECnKExsARHN9GUY5Ui69UEFSJ9stttxYVz+RZ6ooh1O3HMBsH57Q+eNBOuoqZDgDgw9Mu5UaQofqTnsEPSbOUSbnw1oMqyOTj8aNvfpTN3hehjyNvP8fvJd50pSsMx42/o0D4CDJzhYC2Qhuam4wibOq+nIlBp5OOJ8QmmsvzNVSddzDa3gVDaR811lk7QiNvY953cQ2LzTeJDRyZ744pn8sR7smf0dgh7qJd7Leueg== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by MW4PR12MB7118.namprd12.prod.outlook.com (2603:10b6:303:213::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.23; Fri, 25 Apr 2025 11:04:57 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8678.025; Fri, 25 Apr 2025 11:04:57 +0000 From: Zi Yan To: David Hildenbrand Cc: Jinjiang Tu , akpm@linux-foundation.org, yuzhao@google.com, linux-mm@kvack.org, wangkefeng.wang@huawei.com Subject: Re: [PATCH v2] mm/contig_alloc: fix alloc_contig_range when __GFP_COMP and order < MAX_ORDER Date: Fri, 25 Apr 2025 07:04:55 -0400 X-Mailer: MailMate (2.0r6238) Message-ID: <5CD028AA-64B7-4A93-8679-AAC5869B8C15@nvidia.com> In-Reply-To: <0a6fa00f-0e48-4101-b2ad-23c9a964b740@redhat.com> References: <20250421013620.459740-1-tujinjiang@huawei.com> <0a6fa00f-0e48-4101-b2ad-23c9a964b740@redhat.com> Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0260.namprd13.prod.outlook.com (2603:10b6:208:2ba::25) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|MW4PR12MB7118:EE_ X-MS-Office365-Filtering-Correlation-Id: 430a299d-7a35-4430-26ba-08dd83e903ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WKy5uU7XOP69+dH+D2xAmu+75pSrsbZoLjcQpSErcws4kJlPJ8hVJVelYWXF?= =?us-ascii?Q?7fhdH8ZBJrgh/D3BsG9lmu2gwvU1wu9JJN1NBPqvNN37ckHBXymjjaKAE05y?= =?us-ascii?Q?609J1YGQUTOyNE21MBxgW6+NE8LSvEbSLqMrxl8uni3Bi/kcj35b4r4aZUTI?= =?us-ascii?Q?Wmoi0oBsHiZ9MHtPRRCqb3rPiQJd+kUzvDWPzU8jzEh0veLUrm1tqN4GHS3t?= =?us-ascii?Q?9IZIfXY6aJOA0vBc9uSvxDfKhv6mqvYUnKgNZ10jKVo9PJqcvyewOv7slmUS?= =?us-ascii?Q?VP2w/5yGWLjefc8S+mN6Zbrsqyel90EZokyzfs1DZ8w7TIry85aX5jL3cD2L?= =?us-ascii?Q?kD1Kc0Ujyrpa58pf//47B9uI1uKbhO28aWkg5Loyudr71MfJRKoInHuqlyZG?= =?us-ascii?Q?o5Qt8BLGzHG2mArvuEr4x3M9rNZWXCAJKB/Or4EbF7UcOKA+S7cbEzB/TIgy?= =?us-ascii?Q?T9DqIAw57O0oWQzBjWQrWKVbNI+YTmH7hWHZoXH7MaQwsxed/UvTpYZhN72r?= =?us-ascii?Q?xs4GC1Vu4P5f0OtOGQ/HrpuNOGTTs75VsOYXZEgmHYoqukf6cTKAxI7B3Ksm?= =?us-ascii?Q?5kf9YXw804KdYaqR4Pd6/IrqroUXM16owswHu5BHdWuXDvlf9uMwBkbz/bvQ?= =?us-ascii?Q?/nROaJvDeaeM1YZVWP/CBdGdK1KCAZcOM9TNqp2PLCVmDR5plhrvCJW1ZM/0?= =?us-ascii?Q?X1UbpZ9q0P2fiiY8nJL1BCnHHqiQxwMvFN/6Ah4yU9kzYlTL+FQEL8TmgMyg?= =?us-ascii?Q?4oeOa+JFbI0Q3cl/L4AG7LupXAKuPZs6IAbuheIlPr0Z0yIqCHgIU20jU1qA?= =?us-ascii?Q?FC4ABhsAo4m+PTEhZlWUKeoDqtgAG8DzvvQLLkwQJtDmAXsXrxSHSXTwfUYt?= =?us-ascii?Q?ar5qvt8QXbC1JMXpZe1TIv8Sj84EUctJ5U5iLlwiaroEG2676B52kUDN0wsN?= =?us-ascii?Q?Mu/YJxqVHN/aWkwjsTSJJX65d6F4VDKjXCu4j5zRMYDL9eltRFSvvXVKBHPv?= =?us-ascii?Q?a+p2ZuL2+cmw85NgjCqyWmQm5p6lN0f03QorRuLxq1Xwf1bdHh7dy3L8ljwr?= =?us-ascii?Q?jO6Zxcbl93ivqbn0r/6QRZ/P92Payzg17pLCb0Au9BroROPE+fM4Jx/Y1AyP?= =?us-ascii?Q?e3mooF6yAk6af6NE67vMPq5coIQIF4aNTnGprvJ0VwjrGUCFMq8cUQy5apUT?= =?us-ascii?Q?67YnkrTNoknfxHcsISiz/2HBOVo6Vu+jP150R5Osi2ftgrBx4xXCAtK8ZKky?= =?us-ascii?Q?I+CXElNQ+cafnC3ceYKGF7UrLOdG71Zxn/qrXg8OJ5/WmWWQ5uPLuuykrt/Y?= =?us-ascii?Q?mJNvZN/rpLa/AbupxnRR0dbzkcgJop7kzFgsEdb1BknGUauhNseuOpkmAunX?= =?us-ascii?Q?GFLQnCix9PvFZrN/y+w8v75rG5Bp6pVk9o6m/BICjAWx0rLA7LD1ytUtK5Ps?= =?us-ascii?Q?QnessYzHs9w=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QPQXbmwXJ9VYLcB+Oe+NY4y/HBckVzE4tBMjuOcIiwypIT+lWf34KmaqQ6O4?= =?us-ascii?Q?gp1qU8xNubRXNSr353FnxeLdvATG6/hNfCsZbSV6WcEZZ10szmtY3sk/QZ/H?= =?us-ascii?Q?mn8yrT2yFh39DfIP4TusoMthtUAr4e75LhonxGasm5BROiSWKKTeEPFlgHoA?= =?us-ascii?Q?YEn8Gzuqkx4UAqsWEuL0aTy5gfTWnHCNgib2Jo+wiW8wUZZLBYk8Le5+Zf0G?= =?us-ascii?Q?whVjERRm8kYkLq1uh5XH8fuWZFfFx2Ru5m5R8fciuOJZb0IkfEoHhqjcEq4w?= =?us-ascii?Q?/rs+sFiJNlOdpRf5rk7su97+CEWSmCNXIpAohKwpP9B+Grnrwwliegu3cK+h?= =?us-ascii?Q?g7GtOJAdBlVsuJxji08DTmKUUzmm1P1GSxpKJLDtHKJIlfr/PaFy1fZ1+r2n?= =?us-ascii?Q?KSIWaFhfVLPuYPNzPQaiZnpku38IkBGvG3nvy2h6jbSe9/ndfIlhPXK1Nv8v?= =?us-ascii?Q?0HhLtIi2whwvQ3YiDNybSPVZXe6J8xgVdkILExwiSQCnxSGd4/AzFO0/A1Xj?= =?us-ascii?Q?5pgyoLVADWhdCzExWBilp0b5r97ooAPWxI+C4bU5MQXw/g6hmM0PhJMeQbpF?= =?us-ascii?Q?HXblBEkOKQpJPLqW4OiQi+R3cdWP6qWqTsU00Ms26ei8A7QFAMdpNMsr4b1T?= =?us-ascii?Q?/f+wrK8H/uiEy8zRuS5UemkoOQJF3U8pkE800N8iGSDitoqUiGgtsBLoMtRp?= =?us-ascii?Q?peJYU+t1eb/NjLb9iLSTGxKoEyOaEsfE38HvH4CRlNz/aAMigsWq+Rp9OToY?= =?us-ascii?Q?6h/FlLAX3QNVWP4flACUy0KV5z4yKoThgsYwEQCoGRcTK+uMxrqrbak6TY1w?= =?us-ascii?Q?hGN35hxdcXBjZGN2yUCY0Fu0yC3zA41BpPegNpVTzUiLzTMEOqU769H96Nrg?= =?us-ascii?Q?6Hv7KPZMd0ehPkNcziHV/ELb/+7awt2NZmnnbdzWIabyCYAl2psgte4DLZRl?= =?us-ascii?Q?AhJ3xfU+j73nDXWMXVDeRo4oqYfRofsJYvd5WoQBMF6bxVlUdgjkpAJBAozk?= =?us-ascii?Q?f/jQvTFzKizQLmdFg6r9tkfhwk1aS+npminJA+FoyayYO2tByWxqMtR+juRA?= =?us-ascii?Q?TBf3SlHm0PI25RBiEBXG26l9JZY0Vx3ymvEu/Pq+smIA0JEvBmO1jDOfwxKk?= =?us-ascii?Q?CCShXbcz3cJEtHPFWfjLohgUTYLRIhuwRRYUXZJcgkUmlhCu/y++n5X7V1Ut?= =?us-ascii?Q?ByD0dJwCeC7DQaNxrJW1n+xx8aZHGmxqaUZT0uf6Tt6mCuPhU8mLZNG14A9t?= =?us-ascii?Q?tTjic34EAspXCLFnoZvYmVSQwX4o2B7dJrD1xPr8Jo/n4NhzLiz2CKUrg9Dh?= =?us-ascii?Q?/ZhMKHRIeklEaHpZsQ/6lyFDki4XMolINYKNGWfAg6RLuD8OXzGuqOl7a9yX?= =?us-ascii?Q?1UXuOIh91GsMsPgqEloaIELgwvh0pq0BtqF8xfTX/VkD6/ZIcCmS6hkjUktJ?= =?us-ascii?Q?RKAaNq0naNpZ889KWWb+7Dmr8aNSsSjRzGRoYegTQ4ZTUVzgF+t/LFb3FWuH?= =?us-ascii?Q?qWBf8HZIuffRllR5RXShXPnMs6Fg+PmFEQUBbikilcS4yY5/UqPwcbvANbDj?= =?us-ascii?Q?V03I0AdGvQ6gz2BaBmD8VOirZ+O3ni5Pd3rTgO/d?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 430a299d-7a35-4430-26ba-08dd83e903ba X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2025 11:04:57.0953 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: s0wb34plMlfqAooQNeMpM2ylY4XezXOPDxsY/ygofwN797LhKJHlmzsVzE6mqjWv X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7118 X-Rspamd-Queue-Id: 70D88180008 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: 4msrnfi473ejuwm69h36ttp6gketmeho X-HE-Tag: 1745579100-233205 X-HE-Meta: U2FsdGVkX1+jT/21NADnSvVm5CUVPDNwYs2y2CYcrREQADcG9CFQW2SqlLGuVOVp1x0COvbK+f5VeainWxOxiLln2Gi4rsGwCZUee6ddsbj6r3q1hnybvUAsNQF+Xx+MOTA7hjPk+VxoiIUPu7VsHfUxhF2QrNyg75RhcHmb2slfd6Eat041jzW3VpW5fOLwoB1R0oCAEHmfRHQn6WrUH2YV2niMCFduo9A3bEqTlsQ8SiGPA1Q4xyOQ4QxjchKnqwYzTMSD8B+erUNk5GPDrAi03wzj0Av1A5rBPcwUAfCB4RRIj+KnXczxVYR5xDn+tDV7yZ5IjcP+yl5wnHD1x5B9R+PvTesidg61BtSKS8mIqnNpgp9MqHowdENr+HPp2ltLnSwmo3jFOBx3d+/EvkmT9WXuIzpVTFLJ5UeCAEStCweqhm3AYevlBYlK46rXgp0xxUQA6ewAkiD1ILg+Wc/DRfewDLbUH+GorbSN0AB8R+28h8onp+xDxcCkworb2G5C9Tj7GaWJ5emplCO4C9uoZ8TCiIhj4b3AN0NB58eIKlI10aeblMCQbPZzuaZjIY8uBXK/dsryo1HEVBohogwZbju3D1sSjEMiqsQjWwQ5LQlMF8zddTHstPwQYuSlweNUCMfLakXB5Bm8WHmmztgZB5615ShnKSoSvLPiWFuQoxBYbTMzpj8VSs17DJ5oEkMqZMItIbuBuyzLDQAgAq6gUkE0+M6cJr6J9iMm0uI9tbb5OUBzpeokfAah1wZVO9MYAlufA01dSGL0pRMOu85XhR7hylP0HMEWUL+xszj/LC1z533URmOtASd3X67FPPsnhgB20pmt+w4o+4oAO8J6f0W+qjQIxbooejxhhpFGQFOW9UvMFB/yoBZndKluTNDfuR55QMeopntuNNuQqN0G1T//JtKbALDgOQeGyQVUgydFU5rypj8nV195SLM1iPUPvwRzji2M9yngUze YOwR5FcV p13WFa4dtMdJH+VM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 25 Apr 2025, at 6:33, David Hildenbrand wrote: > On 21.04.25 03:36, Jinjiang Tu wrote: >> When calling alloc_contig_range() with __GFP_COMP and the order of >> requested pfn range is pageblock_order, less than MAX_ORDER, I trigger= ed >> WARNING as follows: >> >> PFN range: requested [2150105088, 2150105600), allocated [2150105088= , 2150106112) >> WARNING: CPU: 3 PID: 580 at mm/page_alloc.c:6877 alloc_contig_range+= 0x280/0x340 >> > > Just to verify: there is no such in-tree user, right? > >> alloc_contig_range() marks pageblocks of the requested pfn range to be= >> isolated, migrate these pages if they are in use and will be freed to >> MIGRATE_ISOLATED freelist. >> >> Suppose two alloc_contig_range() calls at the same time and the reques= ted >> pfn range are [0x80280000, 0x80280200) and [0x80280200, 0x80280400) >> respectively. Suppose the two memory range are in use, then >> alloc_contig_range() will migrate and free these pages to MIGRATE_ISOL= ATED >> freelist. __free_one_page() will merge MIGRATE_ISOLATE buddy to larger= >> buddy, resulting in a MAX_ORDER buddy. Finally, find_large_buddy() in >> alloc_contig_range() returns a MAX_ORDER buddy and results in WARNING.= >> >> To fix it, call free_contig_range() to free the excess pfn range. >> >> Fixes: e98337d11bbd ("mm/contig_alloc: support __GFP_COMP") >> Signed-off-by: Jinjiang Tu >> --- >> Changelog since v1: >> * Add comment and remove redundant code, suggested by Zi Yan >> >> mm/page_alloc.c | 20 ++++++++++++++++++-- >> 1 file changed, 18 insertions(+), 2 deletions(-) >> >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >> index 579789600a3c..f0162ab991ad 100644 >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -6440,6 +6440,7 @@ int alloc_contig_range_noprof(unsigned long star= t, unsigned long end, >> .alloc_contig =3D true, >> }; >> INIT_LIST_HEAD(&cc.migratepages); >> + bool is_range_aligned; > > is "aligned" the right word? Aligned to what? > > I do wonder if we could do the following on top, checking that the rang= e is suitable for __GFP_COMP earlier. > The change below makes the code cleaner. Acked-by: Zi Yan > > From 6c414d786db74b1494f7cf66ebf911c01995d20a Mon Sep 17 00:00:00 2001 > From: David Hildenbrand > Date: Fri, 25 Apr 2025 12:32:15 +0200 > Subject: [PATCH] tmp > > Signed-off-by: David Hildenbrand > --- > mm/page_alloc.c | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 57aa64dc74a05..85312903dcd8c 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -6682,6 +6682,7 @@ static int __alloc_contig_verify_gfp_mask(gfp_t g= fp_mask, gfp_t *gfp_cc_mask) > int alloc_contig_range_noprof(unsigned long start, unsigned long end, > unsigned migratetype, gfp_t gfp_mask) > { > + const int range_order =3D ilog2(end - start); > unsigned long outer_start, outer_end; > int ret =3D 0; > @@ -6695,12 +6696,19 @@ int alloc_contig_range_noprof(unsigned long st= art, unsigned long end, > .alloc_contig =3D true, > }; > INIT_LIST_HEAD(&cc.migratepages); > - bool is_range_aligned; > gfp_mask =3D current_gfp_context(gfp_mask); > if (__alloc_contig_verify_gfp_mask(gfp_mask, (gfp_t *)&cc.gfp_mask)) > return -EINVAL; > + /* __GFP_COMP may only be used for certain aligned+sized ranges. */ > + if ((gfp_mask & __GFP_COMP) && > + (!is_power_of_2(end - start) || !IS_ALIGNED(start, 1 << range_ord= er))) { > + WARN_ONCE(true, "PFN range: requested [%lu, %lu) is not suitable for= __GFP_COMP\n", > + start, end); > + return -EINVAL; > + } > + > /* > * What we do here is we mark all pageblocks in range as > * MIGRATE_ISOLATE. Because pageblock and max order pages may > @@ -6789,9 +6797,7 @@ int alloc_contig_range_noprof(unsigned long start= , unsigned long end, > * isolated free pages can have higher order than the requested > * one. Use split_free_pages() to free out of range pages. > */ > - is_range_aligned =3D is_power_of_2(end - start); > - if (!(gfp_mask & __GFP_COMP) || > - (is_range_aligned && ilog2(end - start) < MAX_PAGE_ORDER)) { > + if (!(gfp_mask & __GFP_COMP) || range_order < MAX_PAGE_ORDER) { > split_free_pages(cc.freepages, gfp_mask); > /* Free head and tail (if any) */ > @@ -6802,22 +6808,16 @@ int alloc_contig_range_noprof(unsigned long sta= rt, unsigned long end, > outer_start =3D start; > outer_end =3D end; > - > - if (!(gfp_mask & __GFP_COMP)) > - goto done; > } > - if (start =3D=3D outer_start && end =3D=3D outer_end && is_range_ali= gned) { > + if (gfp_mask & __GFP_COMP) { > struct page *head =3D pfn_to_page(start); > int order =3D ilog2(end - start); > + VM_WARN_ON_ONCE(outer_start !=3D start || outer_end !=3D end); > check_new_pages(head, order); > prep_new_page(head, order, gfp_mask, 0); > set_page_refcounted(head); > - } else { > - ret =3D -EINVAL; > - WARN(true, "PFN range: requested [%lu, %lu), allocated [%lu, %lu)\n"= , > - start, end, outer_start, outer_end); > } > done: > undo_isolate_page_range(start, end, migratetype); > -- = > 2.49.0 > > > -- = > Cheers, > > David / dhildenb -- Best Regards, Yan, Zi