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 6616BC77B7E for ; Sun, 28 May 2023 14:38:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4E2986B0071; Sun, 28 May 2023 10:38:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 493086B0074; Sun, 28 May 2023 10:38:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 35B036B0075; Sun, 28 May 2023 10:38:43 -0400 (EDT) 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 275546B0071 for ; Sun, 28 May 2023 10:38:43 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EC709ADA67 for ; Sun, 28 May 2023 14:38:42 +0000 (UTC) X-FDA: 80839920084.26.521839B Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) by imf20.hostedemail.com (Postfix) with ESMTP id 1D45A1C0014 for ; Sun, 28 May 2023 14:38:40 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=qhTML6pA; spf=pass (imf20.hostedemail.com: domain of ssawgyw@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ssawgyw@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685284721; 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=YAfNOgzmGHj2iulpU1MX94nyYnzy1xUiHwn7EpMMh1Q=; b=cftAyJpHh3Kmj1QZXgwEsH8xKUcv+06LtWwjWmzkVGvGtLYNO9OpHIsB7YT1xCoMPquysg KlOXBrqX5SlhwHJvjtK3KPQq9urjSyWhQFXKL2KsnCBAu3n6g94klEI83YDT/BWxHFquFQ V1P8IYvsVxqVqeJRBsU5odyjsq6hyO8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685284721; a=rsa-sha256; cv=none; b=JSL9PL5UwfLQ20giahINcn+Cz5rMUFwQONV4GbJDP2sZTFd++wi9/fwoCyAT/VyXzANXd2 N5yL6KkYpabsBTHWns3xw7Yxt8FCIDql6lyuD0yXBimnXtLWAuzpa8iAtclU9+z3DRj6ci qgdzA4Ii1gnYWG5mHx7UhlXwNCCnJRc= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=qhTML6pA; spf=pass (imf20.hostedemail.com: domain of ssawgyw@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ssawgyw@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-2af2b74d258so24942711fa.3 for ; Sun, 28 May 2023 07:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685284719; x=1687876719; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YAfNOgzmGHj2iulpU1MX94nyYnzy1xUiHwn7EpMMh1Q=; b=qhTML6pAtTYXfvx2x8gNdM9FJC3dIdin3pnTwScsukhs4W/nadfvLmR+B6+KE4Pmc4 AyWHpUg8U9/BggjWSg5V7hU/0ywFYmlP9I5xroqJpQwWouCxw6FFMLk3uDtgDXALKOUp zRHBNMmulFErq2dOhVxQXo+7QNXRJleJJOc1JmaBG9sbPHHRzqdgFx5t3r+g1/+ygLPV 65jrqxe6va3j+QX5Rpa47cY6qBkkeEWfUGbQdyKbEmzhoPmlTMlwEjtDVt6tbKFW4Ubh KEV19rFR4eAuKbMo//yVb77G1bpKmZpEO1W6FoFnrbn+kyhVxzzmZ+lJ7h7VIzFcFYzt 2MNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685284719; x=1687876719; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YAfNOgzmGHj2iulpU1MX94nyYnzy1xUiHwn7EpMMh1Q=; b=MW9Vvp4P87FS/c+lLHhvs4HRR5UBXITe8zr6ON+BKuQkOIYmPSuqKreWjz4xWFm721 sqFQmUQ+sLXtesCXScQeM0yOG1gpCE1KFvLny94ewHZGL083l+QMPb5HO4fKlS35Torv 95usCcrKbWbYY1F3G1YiDvOMCe+NRtbfEOJ57Cc+we30+FtOOPecqvwJnXg497fjJsvR 6BHyqoaInO0IFnt5Z4l/O8x2+JkOFRTeTZSAoSi76k/UWpdBBy75lKRstc0VFcyeOx1O bLsU5xmPPw/0f8LCkj+bzmA3NfaQyZ+HzP4y83ETQAA7bEmm/GMU3hShA4VPjJq98AzZ rYHw== X-Gm-Message-State: AC+VfDxl590cNifR/ezF8c6l3UeiI4z8egJ8o0mcWO9jML9Gpomp/XhU Vhyw4gtJs4v3SN8x2lPW+K90wYL75Vx4b9CRrTU= X-Google-Smtp-Source: ACHHUZ6L3vKwutaozdePAL2qOIEtCYNsOefvS4/Yc8v+KrPWV5S9wPNnkshnyBGN5B+kG3fTMiASrcNRzNQ5ZiZZCLc= X-Received: by 2002:a05:651c:1041:b0:2af:20d2:bb7b with SMTP id x1-20020a05651c104100b002af20d2bb7bmr3531083ljm.43.1685284718826; Sun, 28 May 2023 07:38:38 -0700 (PDT) MIME-Version: 1.0 References: <20230519105321.333-1-ssawgyw@gmail.com> <20230527103722.GG4967@kernel.org> In-Reply-To: <20230527103722.GG4967@kernel.org> From: Yuwei Guan Date: Sun, 28 May 2023 22:38:03 +0800 Message-ID: Subject: Re: [PATCH v4] memblock: Add flags and nid info in memblock debugfs To: Mike Rapoport Cc: akpm@linux-foundation.org, tsahu@linux.ibm.com, anshuman.khandual@arm.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, wangkefeng.wang@huawei.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 1D45A1C0014 X-Rspam-User: X-Stat-Signature: e5tc4q7aq9ke1s6hoeqiftmkkda33k46 X-Rspamd-Server: rspam03 X-HE-Tag: 1685284720-252679 X-HE-Meta: U2FsdGVkX19/mWIfkuoq43lYW1Kk0KjRvMbmNdOEpbDcs3+mUH88blsA0XWmvRdyyrz1ienIgjK+3RByDWmUZiWyktiAOYa2P8EIJK2knEHgB+hu7fvk5SQ6G2MCUhdsmf3H7s/4sz0xi/pKMvHXqaPcC3y66XCfdjlB+AMnvryDvxtzrD2/4Isig5wQTdvrGTF9BT9Bvy/gLzGO/rGZyvA61KkONKW0dRAX3PgbkuuE4627m+HIKOWV0+NowSOhY9BizezNSS6R/6Kvdan1SEQSgXsTmRjZ+wARqx2WJoaUbgU6yPpxVWcJJn3KIG2bbtowV6JX7o+AjqqrWFBeu6NbpcM4wQMHBJdWdXlCcKrNb4KqN2UQLfTqhkvgDxNrdn2fHtMkl0SmNxU5mJ426hzeIECZ+YtUp8dxrgvTvAgwEmqqrxgIboNFyXqXCK2ol0rcS1hAiYTQGiTGc9hbbTQO3LvdG+hJTuslxQB0o1VFQy2uGOzcaExeST59VyxXwQ1sXXJhhw4DPF/HnxRC9+MZJKzwrxT56+iluDKR0LdjJ5rqQjI6eocZQQWbDq6n+A3W3ic8V/9c1jpP1Lmypa3LoTGwuFKHFWV37i7ZlDEnQmZ93xWVvZbPmoMq2Gvt2svHCvk1GvivtaCSkHTiWOMX5zfCsHhwRz82LXQgoNpsbNuHkf1ZHu7oS+ShYmRmRw+JZLhfUHL0tH2fmW/3BykyX1x2VVKsyz/GBC3lySJ+Fyi9GRuX7MiHTbwwKGmhhvBKWjHpE67M4p3gXQqt7O9zmS/qjyvJpZfwAPsX57pC0e+x+BBf4YRB83c8zibjjUGnC/NvyXqVAmPBiVTl/zNJs3P3GaTGlUnqvloXYnr3hDrCx+q0jTf8itQPB82+jT7i2zkK1JNGOcDyi/pfrBSdsO1BbzQq6ESm+vrwB4XXwCg+ZMkKOvmxj2XK17nXJnO+9bdA5LM1w4Mu9vJ fx5RBnGw O/bfCFJIvS22lGrCeDVqc/c8Me+qSDWADfO17uRc9R4Jz3irQy9QovzuuTRHWd8mzLZLecPwwQ3ubUq+rv9+s2MyB4kLlm5bhM1gWQRjE/6fc+VmPBhRDlqFTF7Op69WNHpucDce6KJPqKi6zfqZxUA40+kCUjnFz6OOO1SpSlvaqpAdP7dtbOye3XILgBKFZPtCb6/0o3lesKu+nOFb0J8dxFkoD4scOrKkFFNY8qJc8q5Ci4/zJH5pGr5OG369tCGj4AhuNFuNgxKyUBRcQWR0jki7kM3lkIly5LvEvHet3IJx8pP4pOwL942JGm5BBwq9Wv29W+DrpioFunYQwvh0jRMZiLVQAoXF0si4sO6ZbKcn8Yab+nzEcNo8zmzN15QBOKkySxDvTNN/Tbw6drl7ncuPsPHDlIAkmi9S4WCjefKGxc/8NpwFGeoJ08saZcIFOzNKNjR9Knpw= 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: Mike Rapoport =E4=BA=8E2023=E5=B9=B45=E6=9C=8827=E6=97=A5= =E5=91=A8=E5=85=AD 18:37=E5=86=99=E9=81=93=EF=BC=9A > > Hi Yuwei, > > On Fri, May 19, 2023 at 06:53:21PM +0800, Yuwei Guan wrote: > > Currently, the memblock debugfs can display the count of memblock_type = and > > the base and end of the reg. However, when memblock_mark_*() or > > memblock_set_node() is executed on some range, the information in the > > existing debugfs cannot make it clear why the address is not consecutiv= e. > > > > For example, > > cat /sys/kernel/debug/memblock/memory > > 0: 0x0000000080000000..0x00000000901fffff > > 1: 0x0000000090200000..0x00000000905fffff > > 2: 0x0000000090600000..0x0000000092ffffff > > 3: 0x0000000093000000..0x00000000973fffff > > 4: 0x0000000097400000..0x00000000b71fffff > > 5: 0x00000000c0000000..0x00000000dfffffff > > 6: 0x00000000e2500000..0x00000000f87fffff > > 7: 0x00000000f8800000..0x00000000fa7fffff > > 8: 0x00000000fa800000..0x00000000fd3effff > > 9: 0x00000000fd3f0000..0x00000000fd3fefff > > 10: 0x00000000fd3ff000..0x00000000fd7fffff > > 11: 0x00000000fd800000..0x00000000fd901fff > > 12: 0x00000000fd902000..0x00000000fd909fff > > 13: 0x00000000fd90a000..0x00000000fd90bfff > > 14: 0x00000000fd90c000..0x00000000ffffffff > > 15: 0x0000000880000000..0x0000000affffffff > > > > So we can add flags and nid to this debugfs. > > > > For example, > > cat /sys/kernel/debug/memblock/memory > > 0: 0x0000000080000000..0x00000000901fffff 0 NONE > > 1: 0x0000000090200000..0x00000000905fffff 0 NOMAP > > 2: 0x0000000090600000..0x0000000092ffffff 0 NONE > > 3: 0x0000000093000000..0x00000000973fffff 0 NOMAP > > 4: 0x0000000097400000..0x00000000b71fffff 0 NONE > > 5: 0x00000000c0000000..0x00000000dfffffff 0 NONE > > 6: 0x00000000e2500000..0x00000000f87fffff 0 NONE > > 7: 0x00000000f8800000..0x00000000fa7fffff 0 NOMAP > > 8: 0x00000000fa800000..0x00000000fd3effff 0 NONE > > 9: 0x00000000fd3f0000..0x00000000fd3fefff 0 NOMAP > > 10: 0x00000000fd3ff000..0x00000000fd7fffff 0 NONE > > 11: 0x00000000fd800000..0x00000000fd901fff 0 NOMAP > > 12: 0x00000000fd902000..0x00000000fd909fff 0 NONE > > 13: 0x00000000fd90a000..0x00000000fd90bfff 0 NOMAP > > 14: 0x00000000fd90c000..0x00000000ffffffff 0 NONE > > 15: 0x0000000880000000..0x0000000affffffff 0 NONE > > > > Signed-off-by: Yuwei Guan > > --- > > v4: > > - show string value for each memblock flag > > --- > > mm/memblock.c | 24 ++++++++++++++++++++++-- > > 1 file changed, 22 insertions(+), 2 deletions(-) > > > > diff --git a/mm/memblock.c b/mm/memblock.c > > index 511d4783dcf1..10d0ddbeebc1 100644 > > --- a/mm/memblock.c > > +++ b/mm/memblock.c > > @@ -2136,12 +2136,19 @@ void __init memblock_free_all(void) > > } > > > > #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_ARCH_KEEP_MEMBLOCK) > > +static const char * const flagname[] =3D { > > + [ilog2(MEMBLOCK_HOTPLUG)] =3D "HOTPLUG", > > + [ilog2(MEMBLOCK_MIRROR)] =3D "MIRROR", > > + [ilog2(MEMBLOCK_NOMAP)] =3D "NOMAP", > > + [ilog2(MEMBLOCK_DRIVER_MANAGED)] =3D "DRV_MNG", > > +}; > > > > static int memblock_debug_show(struct seq_file *m, void *private) > > { > > struct memblock_type *type =3D m->private; > > struct memblock_region *reg; > > - int i; > > + int i, j; > > + unsigned int count =3D ARRAY_SIZE(flagname); > > phys_addr_t end; > > > > for (i =3D 0; i < type->cnt; i++) { > > @@ -2149,7 +2156,20 @@ static int memblock_debug_show(struct seq_file *= m, void *private) > > end =3D reg->base + reg->size - 1; > > > > seq_printf(m, "%4d: ", i); > > - seq_printf(m, "%pa..%pa\n", ®->base, &end); > > + seq_printf(m, "%pa..%pa ", ®->base, &end); > > + seq_printf(m, "%4d ", memblock_get_region_node(reg)); > > As Kefeng mentioned, the node id for reserved regions will be wrong, so > this needs to be updated so that when reg->nid =3D=3D MAX_NUMNODES we'll = print > e.g. 'x'. Hi Mike, How about print 'x' when reg->nid =3D=3D MAX_NUMNODES, base on this patch, https://lore.kernel.org/linux-mm/44ce007d-8049-1cc9-7e2e-4ccb51a2867d@huawe= i.com/T/#m6d214d4ea8912b64f5efc9c3f51ae71aa057d1f1 diff --git a/mm/memblock.c b/mm/memblock.c index c5c80d9bcea3..3d449aaba052 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -2169,17 +2169,21 @@ static int memblock_debug_show(struct seq_file *m, void *private) { struct memblock_type *type =3D m->private; struct memblock_region *reg; - int i, j; + int i, j, nid; unsigned int count =3D ARRAY_SIZE(flagname); phys_addr_t end; for (i =3D 0; i < type->cnt; i++) { reg =3D &type->regions[i]; end =3D reg->base + reg->size - 1; + nid =3D memblock_get_region_node(reg); seq_printf(m, "%4d: ", i); seq_printf(m, "%pa..%pa ", ®->base, &end); - seq_printf(m, "%4d ", memblock_get_region_node(reg)); + if (nid !=3D MAX_NUMNODES) + seq_printf(m, "%4d ", nid); + else + seq_printf(m, "%4c ", 'x'); if (reg->flags) { for (j =3D 0; j < count; j++) { if (reg->flags & (1U << j)) { > > > + if (reg->flags) { > > + for (j =3D 0; j < count; j++) { > > + if (reg->flags & (1U << j)) { > > + seq_printf(m, "%s\n", flagname[j]= ); > > + break; > > + } > > + } > > + if (j =3D=3D count) > > + seq_printf(m, "%s\n", "UNKNOWN"); > > + } else { > > + seq_printf(m, "%s\n", "NONE"); > > + } > > } > > return 0; > > } > > -- > > 2.34.1 > > > > -- > Sincerely yours, > Mike.