Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp887731pxu; Thu, 3 Dec 2020 15:31:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJz+U0vGa0T0WzOhg08m//92yoDT+TBfnFCVUQ+o79rlshiN8FwIv+cQnxBXYR8RbWritINj X-Received: by 2002:a50:d1d3:: with SMTP id i19mr5035292edg.72.1607038276969; Thu, 03 Dec 2020 15:31:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607038276; cv=none; d=google.com; s=arc-20160816; b=bfFQOR/gw6YmDgvADlbh0MLeD9Y7dRWFbt5E8nLjGWzf6/6qbejv4yD3VM/ROOB9eS UZn8B+MyftuIx8WE8YqcMeC17Nr9RbaM9sSIl50SrkOa7lUB7eH+x2S3221AbRbKN2cP zIPLQUTfBt/qVJEKYuDQxBfZjtv5FPsplP5M57PwuPENjaX8ZFC118COzfzsHoETmTI2 nrDVu+27bSsFXHvCJWbqOnak147DgDmS6Tb1hy0xXG/UYZb0qcaeo8qW0zJbVrNS8Yso H4qBuiixahPnapUtwblO334qtZVkGPmaEUdQsCGUwvku7OEbTPb/UawmIaDmCGmU0mWV SMSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=fY+azOiKFWCkO15i5Kn8miYs1r6N7Ic8uWA89DDKIuM=; b=krA6nv4AKiWmjsJ2DFzAYh77qX2uJqnFzMp9dBdYz9atAejS7nD7P5vLZByUCcyES3 fXgFWWUXcz/R9vyKqLWLK3mldvZyJsF7kjD8WQWkguNM14jLjXc5AHrnn84IAwgxcJVQ E//l8higoSAGDHIyEPDuFY59N087MTO6YQkFaaoFUV4Sj5BmK4nNbTFmzVGI0MrHu+az n1fuSus23aTylt3lp2r3Dg9PrqMJRkyv+tWTrWgSeYkAHzt+Z4tHUNy8Xy1o0ugA0G32 oaGUxLMNEuj7+PWhisKjOQk9lt300CIPlaAC2hlB9TmWFamBfkL1HD4QfrJeV4U5IoxR wRgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=TEsJiKiz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o30si1803679edi.32.2020.12.03.15.30.54; Thu, 03 Dec 2020 15:31:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=TEsJiKiz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=163.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387493AbgLCX1P (ORCPT + 99 others); Thu, 3 Dec 2020 18:27:15 -0500 Received: from m12-13.163.com ([220.181.12.13]:41791 "EHLO m12-13.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726721AbgLCX1O (ORCPT ); Thu, 3 Dec 2020 18:27:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=fY+azOiKFWCkO15i5K n8miYs1r6N7Ic8uWA89DDKIuM=; b=TEsJiKiz7XbYZjoMvNCk4J5pEpXEegDiSw 1efyY+DfLSKpRebZy30UE040sBzEwYrRqYjSUleoViIK2kTIvvZDthex31y8JYjH f5bJYL3OogcwaC69HNjbeUOO6IyLugKNGCF5KfrRMGF9baeSeEfm33yElQbC940N eynB+A6LE= Received: from localhost.localdomain (unknown [36.170.33.20]) by smtp9 (Coremail) with SMTP id DcCowADX1IDuAslfnImRUA--.12606S2; Thu, 03 Dec 2020 23:23:27 +0800 (CST) From: carver4lio@163.com To: rppt@kernel.org Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hailong Liu Subject: [PATCH] mm/memblock:use a more appropriate order calculation when free memblock pages Date: Thu, 3 Dec 2020 23:23:10 +0800 Message-Id: <20201203152311.5272-1-carver4lio@163.com> X-Mailer: git-send-email 2.17.1 X-CM-TRANSID: DcCowADX1IDuAslfnImRUA--.12606S2 X-Coremail-Antispam: 1Uf129KBjvdXoWruw1UXr4xuF15WryrCry5CFg_yoWDGwb_Ar 4rtFZ7uFWFyrZ0ga12vFySqr4UK3yDZr1qvr1fGF1DKFyUJasxWr95GFsxXr1jgFWUtrZa vF1DWryFk3W2gjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IU8iID7UUUUU== X-Originating-IP: [36.170.33.20] X-CM-SenderInfo: xfdu4v3uuox0i6rwjhhfrp/1tbiKBjvnV7WDQeUIQABs0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hailong Liu When system in the booting stage, pages span from [start, end] of a memblock are freed to buddy in a order as large as possible (less than MAX_ORDER) at first, then decrease gradually to a proper order(less than end) in a loop. However, *min(MAX_ORDER - 1UL, __ffs(start))* can not get the largest order in some cases. Instead, *__ffs(end - start)* may be more appropriate and meaningful. Signed-off-by: Hailong Liu --- mm/memblock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memblock.c b/mm/memblock.c index b68ee8678..7c6d0dde7 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1931,7 +1931,7 @@ static void __init __free_pages_memory(unsigned long start, unsigned long end) int order; while (start < end) { - order = min(MAX_ORDER - 1UL, __ffs(start)); + order = min(MAX_ORDER - 1UL, __ffs(end - start)); while (start + (1UL << order) > end) order--; -- 2.17.1