From nobody Mon Jun 15 10:48:18 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94688C433EF for ; Thu, 9 Jun 2022 02:41:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236975AbiFIClx (ORCPT ); Wed, 8 Jun 2022 22:41:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231722AbiFIClv (ORCPT ); Wed, 8 Jun 2022 22:41:51 -0400 Received: from m12-12.163.com (m12-12.163.com [220.181.12.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2B9D91093 for ; Wed, 8 Jun 2022 19:41:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=JoUAa 1pHcGayDeuqRSDJfulxbExWpOWMmPd/B5mMrWs=; b=Oc/ZqRxjliqaBWDPfF5bE /wazxTKs562aT5A1KMP9mXPcn//O40VNwsS60mnLHByw+HJOJoSSmcHYrdmX06NV ICXSzxXBxRMVtzrtVAqM+l16eLHaJhnimjpBXwMPYM+NjGyguqXT7vlsiMBkY19B iqdrtZhMhCP5X6kNest05I= Received: from whomami-G7-7588.. (unknown [223.104.41.214]) by smtp8 (Coremail) with SMTP id DMCowAAnLKXWXaFi4v6CGw--.11496S2; Thu, 09 Jun 2022 10:41:27 +0800 (CST) From: tjytimi To: rppt@kernel.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, tjytimi Subject: [PATCH] memblock: avoid some repeat when add new range Date: Thu, 9 Jun 2022 10:41:22 +0800 Message-Id: <20220609024122.6679-1-tjytimi@163.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: DMCowAAnLKXWXaFi4v6CGw--.11496S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrtr1Duw48tFy3JF1fKr1ftFb_yoWfuwc_tr 40gFs7GFWrAa1Fka1jy34rJFy7KFZYvr1kJrn3Jws3u3ykXF1qk3y8K3WDWr1kGF1UG3s8 Gw4UuF17K3WSqjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7sRt38nUUUUUU== X-Originating-IP: [223.104.41.214] X-CM-SenderInfo: xwm13xlpl6il2tof0z/1tbiTRcbeFc7YZhUfgAAsG Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The worst case is that the new memory range overlaps all existing regions,which need type->cnt + 1 free area of struct memblock_region. So if type->cnt + 1 + type->cnt is less than type->max,we can insert regions directly.And becase of merge operation in the end of function, tpye->cnt increase slowly for many cases.So this patch can avoid unnecessary repeat for many cases when add new memory range. Signed-off-by: tjytimi --- mm/memblock.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/memblock.c b/mm/memblock.c index e4f03a6e8..243cd7de5 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -602,6 +602,9 @@ static int __init_memblock memblock_add_range(struct me= mblock_type *type, base =3D obase; nr_new =3D 0; =20 + if (type->cnt<<1 < type->max - 1) + insert =3D true; + for_each_memblock_type(idx, type, rgn) { phys_addr_t rbase =3D rgn->base; phys_addr_t rend =3D rbase + rgn->size; --=20 2.32.0