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 26E4AC7EE23 for ; Tue, 23 May 2023 16:06:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC9AA900006; Tue, 23 May 2023 12:06:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B52D1900002; Tue, 23 May 2023 12:06:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A1BE8900006; Tue, 23 May 2023 12:06:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8F184900002 for ; Tue, 23 May 2023 12:06:46 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 9994BAE08D for ; Tue, 23 May 2023 16:06:45 +0000 (UTC) X-FDA: 80821997970.09.D104C20 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf13.hostedemail.com (Postfix) with ESMTP id 107F620158 for ; Tue, 23 May 2023 16:06:00 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lCJJaF7a; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684857961; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=s9ePCyfTqa7AnqoCODdSu0Z1HVOGKyEC35jwESqIWaQ=; b=dlaGjrUzrKaU88Xz0qu2CDf08YuaUu4gOczmbNHyTT4lla5XSDN1ZyzRSJCtFKX8lFgwCW sLd4SwQql7367AIpUXBg8f2UBp804JrTcOTrNzyJagqwWWV2YybMdFDmaGnrJzx2MATLb4 alj7Dj3dhKsgUy+lhdwUr4KMQH6rOSk= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lCJJaF7a; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684857961; a=rsa-sha256; cv=none; b=EPncCCKPSlAitF9Zk1cOBCygQGsLKrSILp9lV3Yp/1aMhOQPiBwLQnhqnDbYNQdFgCoI47 i/pkcc4urEdk91IFF5WWYObi44rUOX4iewFN4jXeiMfs56jJVH0DnROeUo2tMZt/sVLIoV zBIbRSv0TSIc0RjycBZUlQy4aEjsT/A= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B74EC6290E; Tue, 23 May 2023 16:05:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB43DC433D2; Tue, 23 May 2023 16:05:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684857959; bh=aoCGAJBuc47rmhEj8xI8sEnAebIGSDBqQei1HMH5TvM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lCJJaF7alNEMMlMhMTEKRMBQiSdteIhe4F+KCASfN5s308fI46elFDq+BmRaPR7+w BlBqLMF6QvaGg7NP+ndmsxBPXVE578RaMxqRI8JAyMwikvgywQt3YmHOJ13aSyYY9J I7ZTwJ9wPu9dz5Mhwu3cP+GIxDH1hMuHL/A9PN5TBU0e/eizyloEnYAgLUJ2OtKdcE 1Z6qFlNO7n7RihuxP7/MPqwN/r7SThAmhF6gh0WS8flQBo8HIdV6U8s0OmZFNPPbVx 5///pBfCddZusosF3abw7Rdo8viHvV+KloAjPtAbG4tPY+kdWrM/w+YxEJuaiER5Cm s8Y85BM5I9fOw== Date: Tue, 23 May 2023 19:05:39 +0300 From: Mike Rapoport To: Yuwei Guan Cc: akpm@linux-foundation.org, tsahu@linux.ibm.com, anshuman.khandual@arm.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4] memblock: Add flags and nid info in memblock debugfs Message-ID: <20230523160539.GH4967@kernel.org> References: <20230519105321.333-1-ssawgyw@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230519105321.333-1-ssawgyw@gmail.com> X-Rspamd-Queue-Id: 107F620158 X-Rspam-User: X-Stat-Signature: h68nhypndwgiw1tsbe7rbhrpkfjxfowk X-Rspamd-Server: rspam01 X-HE-Tag: 1684857960-291982 X-HE-Meta: U2FsdGVkX197AifFwD7qi6tlrBX37FNtjeFWt0kKzh9ZJXCWuCKxb28XcXWh48ghPI1HPVZGbig9bKkMvEnqsVnmsHTHZcvlD4MgLJ2TzDNa7iJRiYidD7LRJYB2z9c6nj0nVV1IaPkQQQzw5AEfXzg43I+EskPNKp6X6+7LRHAJr/Ve+fo2XSjJT0onKtBdl8u2B1dt+6EDA8d8g03/BTVeToMMqZc42fhm4TF1f75fuGoaHDTFuvECGBDxlhgBMcHGpgNjuCK5+nGn1rbzdc3weLsmx9mldo6MyPWC4hsEUm4370h7D5WB79i52DdvnIRLmG0KJt4vGlcQExdRH5FxffCphaUGqDO6FAfANAafaecGufm7j5qXhXKmUOLMmfTkhSJwJGBOzGkF1f3O2KvdgFVE7H582q3oAUxieVXmHg7QnBw92OpWDxfKoDdssSncrzIvYzbOHqHRCRBLUJN8gp1gixyzK9reK5KBrVAjc4IRXcuMAgo4waWuG2bLmcWD9BZ1wFVA5gyddMouXxDFpqHB6d4w2o6PhclKSIrCkj4VKe9UIU+FNpQnsLvEQgp4lGpLUOuXbZmDCihLUCcnxOjBSNcuC/BK5gxA7SwvF/MFLdjM2LPS7aX3C7IStokwpAQFzRNsZ6HjIltuy/ND/OfY6EasvwwlHJqL3T2B4/ucveZX89HvRFFXQpD8sEvQ3Re0uFQxi7g38OADwrfxrVqu0Qo8wfftbeaKHsyYBBX28KkCAUsUwyuYCIWtRbgmS/GBC9WCD0I57gER+QA9efs3JZ+zOoUPLLMhw+QBUExlXM7E0VFVoJdut1B5Q5hEV05c1LKUvWIiGsLHeQPcqVQcuVy2J8mM6Wz1LBknMOZZsFUkezpkHscSFA8johS6BYqY/lvMU9MNb274g9Z4kTqU/p8Q3WAtd/SHt43nZ8VBeBlNaavbrpTXvEtAhEjBkrAXPvaxolqBqpi p+xMdLt9 RJqgtPBpAEY/Q/YfoIzm9NN1QJ2tra0IvmKsAA621mylRbS9x7ENpBEThxGiwgUjU7CkmsBQjM4rg/DVyQaWauUgMLx2O2bOD6TQg8nJ8ym4vD4qjukwxmD12CR45Re+givn9QG8EluVh/6+jYG2lh6Ht10pEnuRsvNgkaa+NvwLwkhHLtdJyrCGfcI9UyOo77TJ17C9zcDJ7p4/Cjm8HT8X/M9kb+kxsR0mjABdmaoSp0wUdhCEIy6YhXRVtFebKXiOYp/Xkkj3BsGQAyP3/yZioc8pUh/GmZjUvZRcoOToHSMFwiYlbwqC3EQ== 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: Hi, 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 consecutive. > > 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[] = { > + [ilog2(MEMBLOCK_HOTPLUG)] = "HOTPLUG", > + [ilog2(MEMBLOCK_MIRROR)] = "MIRROR", > + [ilog2(MEMBLOCK_NOMAP)] = "NOMAP", > + [ilog2(MEMBLOCK_DRIVER_MANAGED)] = "DRV_MNG", > +}; > > static int memblock_debug_show(struct seq_file *m, void *private) > { > struct memblock_type *type = m->private; > struct memblock_region *reg; > - int i; > + int i, j; > + unsigned int count = ARRAY_SIZE(flagname); > phys_addr_t end; > > for (i = 0; i < type->cnt; i++) { > @@ -2149,7 +2156,20 @@ static int memblock_debug_show(struct seq_file *m, void *private) > end = 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)); > + if (reg->flags) { > + for (j = 0; j < count; j++) { > + if (reg->flags & (1U << j)) { > + seq_printf(m, "%s\n", flagname[j]); > + break; The flags are mostly mutually exclusive because it's unlikely they are used together, but not because there are some restrictions on possible flags combinations. So generally it's possible to have multiple flags set on the same region. Sorry, I missed that in v3. > + } > + } > + if (j == count) > + seq_printf(m, "%s\n", "UNKNOWN"); > + } else { > + seq_printf(m, "%s\n", "NONE"); > + } > } > return 0; > } > -- > 2.34.1 > -- Sincerely yours, Mike.