From patchwork Sun Jan 29 09:00:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13120050 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 D379BC61D97 for ; Sun, 29 Jan 2023 09:00:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34D646B0073; Sun, 29 Jan 2023 04:00:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D56C6B0074; Sun, 29 Jan 2023 04:00:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 101226B0075; Sun, 29 Jan 2023 04:00:50 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 01A256B0073 for ; Sun, 29 Jan 2023 04:00:49 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 99767AAA88 for ; Sun, 29 Jan 2023 09:00:49 +0000 (UTC) X-FDA: 80407241418.30.FEDAC35 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf26.hostedemail.com (Postfix) with ESMTP id C19E3140017 for ; Sun, 29 Jan 2023 09:00:47 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=UFQl5hEC; spf=pass (imf26.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674982847; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IYTls0sLItJ13BlNlV0fsMcWHYqjuL06p2oUDvfLpbs=; b=2Ex2clmzhdsqpGkRo2n7tEmg3UkJGuQFtjTw3xb1TzhBLDAERZpnKOE/f4m5waRe4hOVGw XOVQzQDQjLE/lBB2aTA471Xe0HF9FFMlU8Te+vBA56RC6+pgWkzfYRLUfPWQ1vxPgs4o+y Yw55Dg3oqD2izNqY+GF/ibKYEQANhXA= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=UFQl5hEC; spf=pass (imf26.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674982847; a=rsa-sha256; cv=none; b=HNYU4I35I9uWHXd8C/QpQQXWQ2gK6SDTGd7gvgSUbpAMjMJPSZy/eS221doa2Tgu7zri3n cHbypG3AiT1Hch1GhgDixkmJB7suaV2mUCMw8di7p61ZVXAu/OpGUR0yG+CVfUOhm0R4dM SNr9gqY9NFKquOUD7rwUCoe2jXC+qYg= Received: by mail-pl1-f175.google.com with SMTP id h9so205702plf.9 for ; Sun, 29 Jan 2023 01:00:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IYTls0sLItJ13BlNlV0fsMcWHYqjuL06p2oUDvfLpbs=; b=UFQl5hEC0tJ60XZnw0j93sFZpoUKuGUXfyhozpIZq3GnRl464fgjOON43UUnFIYpdJ 8mScMX7qr/Hnfj4oPxgmw/sqDNW1hYrzSXy1GzGLt7WkMQ/X0FJP6qjOO1wMUeZY0G48 U0QjLYuB0dqlXrEmo0uE1qAFaUohDFxJIqYf/1C998UfNdzNlOAUlpNt95Ye/cUoL0BI cgqe8kynjmkFUI2CurYeemPqHGxmskY+/ctViSZivmBj5L6KdThHpEScBJYmj7S+ean3 rPNIMWxzCHUcoiR1y/8fhbLOjGQweESSE1RJulSUnXSkwNs38AuTXZ5sTDAkqa5fZ3IR pTow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IYTls0sLItJ13BlNlV0fsMcWHYqjuL06p2oUDvfLpbs=; b=dfZs2/1J6AR2KLk54+JUL3gcWZDAscmlcpZhG7MOpY7ThGro76AgPBYm9e5HaWrMYC XIHPkuo/vgSqZj4/M21P6TU9BnPH7+GHvce8SL3zgFm88TLphPhC7OUm+QduJXlXPni6 YwnoUCLdZKLbHo6en5/sknIeTSDCf+8BelJcgJ7XjZdx7xGgWXwH5zpG6E50MP6jfdgI qwZaRJ0VLAvF0npTnw5DEV9vCEEBpsd4fqXnXIQU4AyPTPP2v7JUnXXHgbIe/+d1G9eC ETgvCf/xvaJjBdTve89LDHBZdd2EhpDLDsF+/P84KgU7Iy7L9qNvC37KgBjjTXRo5gqe C2ig== X-Gm-Message-State: AFqh2kqzq4B4+ZRTvTIoTbXeUA8ZWyh8iB9uSia0cjNgD9U+QzlixSlf 1a4Ziw23l1pH96I8iRJuKvOSBA== X-Google-Smtp-Source: AMrXdXvtZ6K3ezMB4q3Sdf5+3dLUAIUc/en72O7s8vYwY1nAA3TJGhJrK6jvRhHG+wFds1NfEhjJpQ== X-Received: by 2002:a17:902:b60e:b0:192:8b0e:98e1 with SMTP id b14-20020a170902b60e00b001928b0e98e1mr39675938pls.54.1674982846728; Sun, 29 Jan 2023 01:00:46 -0800 (PST) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.239]) by smtp.gmail.com with ESMTPSA id h13-20020a170902f54d00b0019607984a5esm2142689plf.95.2023.01.29.01.00.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 29 Jan 2023 01:00:46 -0800 (PST) From: Peng Zhang To: rppt@kernel.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Peng Zhang Subject: [PATCH v2 1/2] memblock: Make a boundary tighter in memblock_add_range(). Date: Sun, 29 Jan 2023 17:00:33 +0800 Message-Id: <20230129090034.12310-2-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230129090034.12310-1-zhangpeng.00@bytedance.com> References: <20230129090034.12310-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: C19E3140017 X-Stat-Signature: 4j55huhgd4uybsinrhwrpezaf4pq3gzf X-Rspam-User: X-HE-Tag: 1674982847-609295 X-HE-Meta: U2FsdGVkX1/n3Ph2KSsVrKml5nOD+jnauXf2zF/krDMVrNgh7C2q9S+cQ2+yV7/k8R0Rc6Wyws1OcQiv0KqkoqG7lnDe++oIbT+XjcNELh4J530f1wT0Kii36czmDkhR0hk3APkIRiIqmL+RWaC0Kl5zzSePIsLK/OJ0xeWqT3h6PNwbM4snbetcFF1pYW6+avSv8whoxp6zavFTlXNZNoFatLDSok8qCHijWe4b8/Br14xsOMfAL7uaijYzxa2Kv/6QYEefp1ZWSBp2EJ1mCS8vpQo/+gJK2cMI9XxQy2rQuIyorosTpcD9bHadTfaRYxWJqEU1Zi1qXldWmuyn95WNMUQ6X3Xi56reizssi9syexN0kcS66eJxzWqqYZ0BU99sU0JG49txgAoqgrRS9w97zKm1jE4NYoA1Gat1cKmBJRhbX0YTjIepyxKrHSb6QCaYjpvisfpUHK98L/TBer/FCF+5mewQTnm8v08XFjhfL6x2A+xu4cpwyBQOTf0iSrQP/BeF7zet4ZbeFkpg1PKqWSq0LYzehrT/GxMGiRaY4wGge406kL1UG/3e9c5xSa5u8I+Z0HSCA1eSZuxvtpbluedxfAJvQDAY9CIOHYpwJRM52b5UITUsRrIq32Lqp7ERpeCl/PNLFKCREky2u2Mbid4dB76sf0RycrXZrSWJ3nCtTP/1y81hyy+7/3hiXxE2quqFgkLj0XZvrEJ2aj7t/LfT8Fq5NCW+v3VwaLDYyH9TXm2e59iZD+/Eqg8fhAtOdhnsRblbUg9fFJ6Z634kUKMIrUVoQd3QMOOexyNDjwoLIwo1Q9dqm/nEWjy7ynN/BUwVJ7R4ziu/SjFilU+bq6ST8n+tG64S6WOQzJXi6JNw5VbrUqYHoC68xnzueWL4KRC1Z5fIknE86OF68YobEuYx9KusSf2c4+MzKtouVhKB4yzG7FULTC96MO51oh/UbWv7+dd6n+LfOeU 1VOAfS/s ieTwkGxQqBe36OB5S+Z3HPcf2/Qy+XmR1LnyLsLnHme2IvD2JHy76uritE5/yAEcUf/QQ/sEVjtoHAI5FzJD9JjhmAJUFKTyqSTdgRuRmdUZRsy7d6UmzC5/19TFKvmLrS1aHYk1+4D4rVmzS4XqoudH4oNGy33E129UprlUjQm5GQykwTzrl7qlYeHlZqGC/AecVJBfYD0pNqT1hBZutuVdtScI95Rn95Xa/MYgunAyN+blocwbdu/RQr9CFjkx7hnx3CT81jfaNfXytF7iI5W5shnvbCosUTkeBsmhdAYYMsb0GoBRE5m5VftvgFekjN3SvO9gWZowg9Ps1PFmKC+2VkkqIkA3SMzZT2O6V2oJReWYCLSvUMNB/A6NqucbCxbsZG8WyFunJPJdhbp8I2BgBeLKv4vP04wbS7rur7Lb45TS7r3SAuaeCXh9FMSOsti7Ec+j8yHxFkuk6SjsEb6ZPKJR2Q7u3fm8FA49glyZCJQW4fU+eeJEwP7AOqVq8K2tpZPZDItnVrc4aNp+XTdo0QQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000327, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: When type->cnt * 2 + 1 is less than or equal to type->max, there is enough empty regions to insert. Signed-off-by: Peng Zhang --- mm/memblock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index 685e30e6d27c..836eb71ea3ea 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -601,11 +601,11 @@ static int __init_memblock memblock_add_range(struct memblock_type *type, /* * The worst case is when new range overlaps all existing regions, * then we'll need type->cnt + 1 empty regions in @type. So if - * type->cnt * 2 + 1 is less than type->max, we know + * type->cnt * 2 + 1 is less than or equal to type->max, we know * that there is enough empty regions in @type, and we can insert * regions directly. */ - if (type->cnt * 2 + 1 < type->max) + if (type->cnt * 2 + 1 <= type->max) insert = true; repeat: From patchwork Sun Jan 29 09:00:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13120051 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 7C37AC05027 for ; Sun, 29 Jan 2023 09:00:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0DB6B6B0074; Sun, 29 Jan 2023 04:00:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0650A6B0075; Sun, 29 Jan 2023 04:00:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E20786B0078; Sun, 29 Jan 2023 04:00:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id CF32D6B0074 for ; Sun, 29 Jan 2023 04:00:52 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id A0785C04F6 for ; Sun, 29 Jan 2023 09:00:52 +0000 (UTC) X-FDA: 80407241544.11.DD6B648 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by imf17.hostedemail.com (Postfix) with ESMTP id DCC7640014 for ; Sun, 29 Jan 2023 09:00:50 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=2FpCFAYP; spf=pass (imf17.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.216.53 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674982850; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ScnZcZbb5V5pAaOvJOkYQXxCHW6a6an6BscyyrmyHtQ=; b=2ErswRxaNm9zou07CiqNqJHFbSwiHFHRlUtIyYfGOb4QCHVQuoBx8x/GDnPqHyIh8HfH3d kdjLDOA6x1INC5PLn2vLuEkw01aJ3WNhu+SGnvsi8MGIiSIobXZTjHiBBYGT+t/wPSQjbK JrvqSVJsoUUdQMoUhZbhPMnLoz4JJ4A= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=2FpCFAYP; spf=pass (imf17.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.216.53 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674982850; a=rsa-sha256; cv=none; b=hHxPMwHNyUeIN0CU8FIteuKQeuP+NHywqtyXLZWG47GZwE0kfAn8TvzrIRmsSwVDMaQ0S+ iYee4KhGbfSK5CCQ3qeoa7EIA83lc98h5WROMUa/ebmPI2crGH1rbx2Ej5CSjZRYfIxh3W I1tUFuwMUECxA1CfTll1dETC/VYKC78= Received: by mail-pj1-f53.google.com with SMTP id e8-20020a17090a9a8800b0022c387f0f93so7608390pjp.3 for ; Sun, 29 Jan 2023 01:00:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ScnZcZbb5V5pAaOvJOkYQXxCHW6a6an6BscyyrmyHtQ=; b=2FpCFAYP0cmHckXG5sKIz6y4qCTRDcEXKoIhAKX34FvslF0ncTuPRaKOUtNpy1EmCh WgpZKATrUNUFKck1nV4UAqGwDcMKDlscS+Sc06+XqQU7LkSDhaWXYb/6aVZHESY77Jrb F+GFfpTsZeK4uUZ0Ayc5gZMUhYzAamJM5ggJ9iXoDkaqvL5VcISdIWYxaxW43ugmZqqO bjEum0V4dtVtwFgFOHSXHKACt+J8Snoe203X83lEusmHyJJY9atfvNzzp9d9OnEzBVXR nj5+mEplqKwzYG6kmZyMx1qdR3Q4BwL4cJfN5XwmhW2TV4fuu0bQawymKtonAcdBf4Fi RvvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ScnZcZbb5V5pAaOvJOkYQXxCHW6a6an6BscyyrmyHtQ=; b=YXDZXRrAA8EiF2kZZJXSpOGd44glq09JVndEIHCMsSN3m1v8t4op3EI6FNmMe6hFA3 NlXC+L3OIQn0Lgjp3PFg4vdjhHqIGeUyB+jLetkbTPNYPeBa7RPV9c3+nuzoOHgyfWAT zgiLE0SQfPdePic/r1jDMdUozmU9y/95yRLhpD2qPpv5ISwHfSWqzPk3potEsPj0TJNI e6NzBBP9V718E+CEHuSXteYJLSM6Fi4Vs7sEi5f6YFDuNpwDtxTQvgHyw0V620zjvPhV 4XzX2oZ6VyzMFiMeIsMgez8qdv+630K8l8RAo+UohD6KAig2E0BWuVOJEue/5tCSprku DmEQ== X-Gm-Message-State: AO0yUKW9te8x5FS67G7fclqszlqf6j/ZJYS9R07ls9aJHUAYpzM88Xhu gwSqljngEW6ccXd5s/PUlndhKg== X-Google-Smtp-Source: AK7set8OItuuxzVtM6QBoIV/KsdOqx0sis6DAF6WZwbVrgroVjmqVqyv63tM6G0OHm9J0+gld1SQOA== X-Received: by 2002:a17:903:2309:b0:196:11ad:8197 with SMTP id d9-20020a170903230900b0019611ad8197mr4558850plh.66.1674982849733; Sun, 29 Jan 2023 01:00:49 -0800 (PST) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.239]) by smtp.gmail.com with ESMTPSA id h13-20020a170902f54d00b0019607984a5esm2142689plf.95.2023.01.29.01.00.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 29 Jan 2023 01:00:49 -0800 (PST) From: Peng Zhang To: rppt@kernel.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Peng Zhang Subject: [PATCH v2 2/2] memblock: Avoid useless checks in memblock_merge_regions(). Date: Sun, 29 Jan 2023 17:00:34 +0800 Message-Id: <20230129090034.12310-3-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230129090034.12310-1-zhangpeng.00@bytedance.com> References: <20230129090034.12310-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: tf6d1e145rfk7mpt6bw98t6min5t8653 X-Rspamd-Queue-Id: DCC7640014 X-HE-Tag: 1674982850-228076 X-HE-Meta: U2FsdGVkX19K41/cnmHiNrVZYujyncmmGCsQDJLe9gqaX2S8O8Hp0HVJyq+vf8g9mbmVpCFVWOGQbVNUqq6rPy7AnaURqjy0/zMzGbl5BA1dk5dn9lcOdJV03M98ftDcv6Ust8InSloLTlYYmlx0p4/Yilple+CyPZOGj5E4peix4RlBW9z5hluw09eNc5Xg8py98FA0HPA7mAyqFNaF6S5wht9edEMIKXLH/zX3pwXCPNERqCBBJwtrb+uoib+Ue9gpC8Lz27pBYMkavb3z0KqMJu9Mv+3abk0WFkWP3+ImjAwsg1cnRZ4RpKWJVOQYSrsZVwBWZhyY/B7kHwsc3kMg7YYC+gP2Ngj368mbi/lRSkajhqVRRmuDuI7wCzR/aO1ULq6GMO+9A10efEcy3Fm1EKs68kUSfZjGvN4bzLBj8xfDzc/p6pJCb0mSJ/JaYOeXPoMgZmHvzn/hpViKvUqIgmq5VQu6m1zfDHYhLTnreMXK1uT3EeGBPJP6YlekANSd4Hy5xGAsU6ECn6+PXTeVyD7/KEyIeRgQIWiYwzw1CVIIYnhy0HWNbHjfQAxjK14wGbarN+twlL7ddyy9pu1UcMoYJkuNEVXN0hby8XHNKA5CEzvtQqJvnEDLr6Zx/zSQTYRq9tfEsQVxu17gWqgSfPTk1W9jsE9W4rX1G8xpGxaQauub0EsQ6SUjnYTlmhS3ru65NvL3v9gcNhJluvGSzC4ZJqxtXajcqzQwOuhHysHdInn/WnFxqTLi3LDMpYQs5+KIvKjUR165Ag+KcW/wtEANYgy2VyQ5VxZ0VcI/9/ZmyFB02Y13w2rH/V0zVK8A9oOE08MHbIuWvKJs0OOxvXwPDBEFzjSAJ1a3NkOiFvAINTvaSQphtocGWaKllKHSY8OvIuvGfe1BYfQAw/8PDMx+a1iSOX7mDoUOFdL+tF0XT0vWt3NrVJpQX7EeIuNiaTv259B8RnBVfSu TFV/OUz5 o2SUImrpZYfS5A32rVUjPAj4OgbPK++R3v6zKxc0dpXO8jYaCOnC2V0oEfi4jRbCvtsmUxUJrWoao+ldWbPjs4DLg7rFLGjewtMXHxb+tgG2yVrmdD/bNOBg83jhpk9DAt0/VDybBbw0VuA479R5sBSk7VLNE5U+niIjSFMMBpxKBfkvg0UPOzyyUVNRR3ec4lwSStKVtPGChUpTykaTfy7ObFBfqghb3BA8u2RfTAo9G6rxBSCZdVXp07WRhjIwd0Bmo3IZm1xMqdq6PZ332Dnw9yYIpRXPbqtc52yVeuv8VtSmRKHfJGU/e3EtxSjpkuhfCsGGRrLMO3vSyua2/tcgzmoT4tttyYpGV/0EGJTLDn6rtBlSWjIkV8qeUZdwzcI72f1D7GE5egWDVaZMXrnPMcu8egplk4QI32tzOLuIuwTs7OuRUc/jQjroMijiIRXon3eULgzl1xH1Ss4MpzWSXVeVoN6sRUkp41WOhpimb9c8LYMNoESbWOTZYSCz0rRdqxbacXMydc5/XaoYc0uDm/A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000007, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: memblock_merge_regions() is called after regions have been modified to merge the neighboring compatible regions. That will check all regions but most checks is useless. Most of the time we only insert one or a few new regions, or modify one or a few regions. At this time, we don't need to check all regions. We only need to check the changed regions, because other not related regions cannot be merged. So this patch add two parameters to memblock_merge_regions() to indicate the lower and upper boundary to scan. Test this patch and get numbers like this: void memblock_merge_regions(struct memblock_type *type) { static int iteration_count = 0; static int max_nr_regions = 0; max_nr_regions = max(max_nr_regions, (int)type->cnt); ... while () { iteration_count++; ... } pr_info("iteration_count: %d max_nr_regions %d", iteration_count, max_nr_regions); } The folowing numbers is the last output tested on a physical machine with 1T memory. Mainline: [2.472243] iteration_count: 45410 max_nr_regions 178 Patched: [2.470869] iteration_count: 923 max_nr_regions 176 The actual startup speed seems to change little, but it does reduce the scan overhead. Signed-off-by: Peng Zhang --- mm/memblock.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index 836eb71ea3ea..22e48b0f57ad 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -500,15 +500,19 @@ static int __init_memblock memblock_double_array(struct memblock_type *type, /** * memblock_merge_regions - merge neighboring compatible regions * @type: memblock type to scan - * - * Scan @type and merge neighboring compatible regions. + * @start_rgn: start scanning from (@start_rgn - 1) + * @end_rgn: end scanning at (@end_rgn - 1) + * Scan @type and merge neighboring compatible regions in [@start_rgn - 1, @end_rgn) */ -static void __init_memblock memblock_merge_regions(struct memblock_type *type) +static void __init_memblock memblock_merge_regions(struct memblock_type *type, + unsigned long start_rgn, + unsigned long end_rgn) { int i = 0; - - /* cnt never goes below 1 */ - while (i < type->cnt - 1) { + if (start_rgn) + i = start_rgn - 1; + end_rgn = min(end_rgn, type->cnt - 1); + while (i < end_rgn) { struct memblock_region *this = &type->regions[i]; struct memblock_region *next = &type->regions[i + 1]; @@ -525,6 +529,7 @@ static void __init_memblock memblock_merge_regions(struct memblock_type *type) /* move forward from next + 1, index of which is i + 2 */ memmove(next, next + 1, (type->cnt - (i + 2)) * sizeof(*next)); type->cnt--; + end_rgn--; } } @@ -581,7 +586,7 @@ static int __init_memblock memblock_add_range(struct memblock_type *type, bool insert = false; phys_addr_t obase = base; phys_addr_t end = base + memblock_cap_size(base, &size); - int idx, nr_new; + int idx, nr_new, start_rgn = -1, end_rgn; struct memblock_region *rgn; if (!size) @@ -635,10 +640,14 @@ static int __init_memblock memblock_add_range(struct memblock_type *type, #endif WARN_ON(flags != rgn->flags); nr_new++; - if (insert) + if (insert) { + if (start_rgn == -1) + start_rgn = idx; + end_rgn = idx + 1; memblock_insert_region(type, idx++, base, rbase - base, nid, flags); + } } /* area below @rend is dealt with, forget about it */ base = min(rend, end); @@ -647,9 +656,13 @@ static int __init_memblock memblock_add_range(struct memblock_type *type, /* insert the remaining portion */ if (base < end) { nr_new++; - if (insert) + if (insert) { + if (start_rgn == -1) + start_rgn = idx; + end_rgn = idx + 1; memblock_insert_region(type, idx, base, end - base, nid, flags); + } } if (!nr_new) @@ -666,7 +679,7 @@ static int __init_memblock memblock_add_range(struct memblock_type *type, insert = true; goto repeat; } else { - memblock_merge_regions(type); + memblock_merge_regions(type, start_rgn, end_rgn); return 0; } } @@ -902,7 +915,7 @@ static int __init_memblock memblock_setclr_flag(phys_addr_t base, r->flags &= ~flag; } - memblock_merge_regions(type); + memblock_merge_regions(type, start_rgn, end_rgn); return 0; } @@ -1275,7 +1288,7 @@ int __init_memblock memblock_set_node(phys_addr_t base, phys_addr_t size, for (i = start_rgn; i < end_rgn; i++) memblock_set_region_node(&type->regions[i], nid); - memblock_merge_regions(type); + memblock_merge_regions(type, start_rgn, end_rgn); #endif return 0; }