All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shiju Jose <shiju.jose@huawei.com>
To: Mike Rapoport <rppt@kernel.org>
Cc: "rafael@kernel.org" <rafael@kernel.org>,
	"bp@alien8.de" <bp@alien8.de>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"dferguson@amperecomputing.com" <dferguson@amperecomputing.com>,
	"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"lenb@kernel.org" <lenb@kernel.org>,
	"leo.duran@amd.com" <leo.duran@amd.com>,
	"Yazen.Ghannam@amd.com" <Yazen.Ghannam@amd.com>,
	"mchehab@kernel.org" <mchehab@kernel.org>,
	Jonathan Cameron <jonathan.cameron@huawei.com>,
	Linuxarm <linuxarm@huawei.com>,
	"rientjes@google.com" <rientjes@google.com>,
	"jiaqiyan@google.com" <jiaqiyan@google.com>,
	"Jon.Grimm@amd.com" <Jon.Grimm@amd.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"naoya.horiguchi@nec.com" <naoya.horiguchi@nec.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"jthoughton@google.com" <jthoughton@google.com>,
	"somasundaram.a@hpe.com" <somasundaram.a@hpe.com>,
	"erdemaktas@google.com" <erdemaktas@google.com>,
	"pgonda@google.com" <pgonda@google.com>,
	"duenwen@google.com" <duenwen@google.com>,
	"gthelen@google.com" <gthelen@google.com>,
	"wschwartz@amperecomputing.com" <wschwartz@amperecomputing.com>,
	"wbs@os.amperecomputing.com" <wbs@os.amperecomputing.com>,
	"nifan.cxl@gmail.com" <nifan.cxl@gmail.com>,
	tanxiaofei <tanxiaofei@huawei.com>,
	"Zengtao (B)" <prime.zeng@hisilicon.com>,
	"Roberto Sassu" <roberto.sassu@huawei.com>,
	"kangkang.shen@futurewei.com" <kangkang.shen@futurewei.com>,
	wanghuiqiang <wanghuiqiang@huawei.com>
Subject: RE: [PATCH v10 1/3] mm: Add node_to_range lookup facility to numa_memblks
Date: Tue, 5 Aug 2025 16:36:55 +0000	[thread overview]
Message-ID: <bdbb50d7309741b8b282c2e8a1fc72ae@huawei.com> (raw)
In-Reply-To: <aJHawm1zE62x1YH9@kernel.org>

>-----Original Message-----
>From: Mike Rapoport <rppt@kernel.org>
>Sent: 05 August 2025 11:20
>To: Shiju Jose <shiju.jose@huawei.com>
>Cc: rafael@kernel.org; bp@alien8.de; akpm@linux-foundation.org;
>dferguson@amperecomputing.com; linux-edac@vger.kernel.org; linux-
>acpi@vger.kernel.org; linux-mm@kvack.org; linux-doc@vger.kernel.org;
>tony.luck@intel.com; lenb@kernel.org; leo.duran@amd.com;
>Yazen.Ghannam@amd.com; mchehab@kernel.org; Jonathan Cameron
><jonathan.cameron@huawei.com>; Linuxarm <linuxarm@huawei.com>;
>rientjes@google.com; jiaqiyan@google.com; Jon.Grimm@amd.com;
>dave.hansen@linux.intel.com; naoya.horiguchi@nec.com;
>james.morse@arm.com; jthoughton@google.com; somasundaram.a@hpe.com;
>erdemaktas@google.com; pgonda@google.com; duenwen@google.com;
>gthelen@google.com; wschwartz@amperecomputing.com;
>wbs@os.amperecomputing.com; nifan.cxl@gmail.com; tanxiaofei
><tanxiaofei@huawei.com>; Zengtao (B) <prime.zeng@hisilicon.com>; Roberto
>Sassu <roberto.sassu@huawei.com>; kangkang.shen@futurewei.com;
>wanghuiqiang <wanghuiqiang@huawei.com>
>Subject: Re: [PATCH v10 1/3] mm: Add node_to_range lookup facility to
>numa_memblks
>
>On Fri, Aug 01, 2025 at 06:20:27PM +0100, shiju.jose@huawei.com wrote:
>> From: Shiju Jose <shiju.jose@huawei.com>
>>
>> Lookup facility to retrieve memory phys lowest continuous range for a
>> NUMA node is required in the numa_memblks for the ACPI RAS2 memory
>> scrub use case.
>
>If the code that needs to find the lowest contiguous range in a node runs before
>we discard .init you can just use
>
>	unsigned long pfn = node_start_pfn(nid);
>	unsigned long start_pfn, end_pfn;
>
>	memblock_search_pfn_nid(pfn, &start_pfn, &end_pfn);

Thanks Mike for your suggestion and help.
 
With node_start_pfn(nid) and memblock_search_pfn_nid(), the 'end_pfn' return 
different value than the actual.

Found similar function get_pfn_range_for_nid(nid, &start_pfn, &end_pfn), seems more
suitable as it takes 'nid' directly and both 'start_pfn' and 'end_pfn 'return correct values. 

Thanks,
Shiju

>
>> Suggested-by: Jonathan Cameron <jonathan.cameron@huawei.com>
>> Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
>> ---
>>  include/linux/numa.h         | 10 ++++++++++
>>  include/linux/numa_memblks.h |  2 ++
>>  mm/numa.c                    | 10 ++++++++++
>>  mm/numa_memblks.c            | 23 +++++++++++++++++++++++
>>  4 files changed, 45 insertions(+)
>>
>> diff --git a/include/linux/numa.h b/include/linux/numa.h index
>> e6baaf6051bc..d41e583a902d 100644
>> --- a/include/linux/numa.h
>> +++ b/include/linux/numa.h
>> @@ -41,6 +41,10 @@ int memory_add_physaddr_to_nid(u64 start);  int
>> phys_to_target_node(u64 start);  #endif
>>
>> +#ifndef node_to_phys_lowest_continuous_range
>> +int node_to_phys_lowest_continuous_range(int nid, u64 *start, u64
>> +*end); #endif
>> +
>>  int numa_fill_memblks(u64 start, u64 end);
>>
>>  #else /* !CONFIG_NUMA */
>> @@ -63,6 +67,12 @@ static inline int phys_to_target_node(u64 start)
>>  	return 0;
>>  }
>>
>> +static inline int node_to_phys_lowest_continuous_range(int nid, u64 *start,
>> +						       u64 *end)
>> +{
>> +	return 0;
>> +}
>> +
>>  static inline void alloc_offline_node_data(int nid) {}  #endif
>>
>> diff --git a/include/linux/numa_memblks.h
>> b/include/linux/numa_memblks.h index 991076cba7c5..ccc53029de8b 100644
>> --- a/include/linux/numa_memblks.h
>> +++ b/include/linux/numa_memblks.h
>> @@ -55,6 +55,8 @@ extern int phys_to_target_node(u64 start);  #define
>> phys_to_target_node phys_to_target_node  extern int
>> memory_add_physaddr_to_nid(u64 start);  #define
>> memory_add_physaddr_to_nid memory_add_physaddr_to_nid
>> +extern int node_to_phys_lowest_continuous_range(int nid, u64 *start,
>> +u64 *end); #define node_to_phys_lowest_continuous_range
>> +node_to_phys_lowest_continuous_range
>>  #endif /* CONFIG_NUMA_KEEP_MEMINFO */
>>
>>  #endif /* CONFIG_NUMA_MEMBLKS */
>> diff --git a/mm/numa.c b/mm/numa.c
>> index 7d5e06fe5bd4..0affb56ef4f2 100644
>> --- a/mm/numa.c
>> +++ b/mm/numa.c
>> @@ -59,3 +59,13 @@ int phys_to_target_node(u64 start)  }
>> EXPORT_SYMBOL_GPL(phys_to_target_node);
>>  #endif
>> +
>> +#ifndef node_to_phys_lowest_continuous_range
>> +int node_to_phys_lowest_continuous_range(int nid, u64 *start, u64
>> +*end) {
>> +	pr_info_once("Unknown target phys addr range for node=%d\n", nid);
>> +
>> +	return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(node_to_phys_lowest_continuous_range);
>> +#endif
>> diff --git a/mm/numa_memblks.c b/mm/numa_memblks.c index
>> 541a99c4071a..9cbaa38cb92d 100644
>> --- a/mm/numa_memblks.c
>> +++ b/mm/numa_memblks.c
>> @@ -590,4 +590,27 @@ int memory_add_physaddr_to_nid(u64 start)  }
>> EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
>>
>> +static int nid_to_meminfo(struct numa_meminfo *mi, int nid, u64
>> +*start, u64 *end) {
>> +	int i;
>> +
>> +	if (!numa_valid_node(nid))
>> +		return -EINVAL;
>> +
>> +	for (i = 0; i < mi->nr_blks; i++) {
>> +		if (mi->blk[i].nid == nid) {
>> +			*start = mi->blk[i].start;
>> +			*end = mi->blk[i].end;
>> +			return 0;
>> +		}
>> +	}
>> +
>> +	return -ENODEV;
>> +}
>> +
>> +int node_to_phys_lowest_continuous_range(int nid, u64 *start, u64
>> +*end) {
>> +	return nid_to_meminfo(&numa_meminfo, nid, start, end); }
>> +EXPORT_SYMBOL_GPL(node_to_phys_lowest_continuous_range);
>>  #endif /* CONFIG_NUMA_KEEP_MEMINFO */
>> --
>> 2.43.0
>>
>
>--
>Sincerely yours,
>Mike.


  reply	other threads:[~2025-08-05 16:37 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-01 17:20 [PATCH v10 0/3] ACPI: Add support for ACPI RAS2 feature table shiju.jose
2025-08-01 17:20 ` [PATCH v10 1/3] mm: Add node_to_range lookup facility to numa_memblks shiju.jose
2025-08-05 10:19   ` Mike Rapoport
2025-08-05 16:36     ` Shiju Jose [this message]
2025-08-11 15:28   ` Borislav Petkov
2025-08-01 17:20 ` [PATCH v10 2/3] ACPI:RAS2: Add ACPI RAS2 driver shiju.jose
2025-08-01 17:20 ` [PATCH v10 3/3] ras: mem: Add memory " shiju.jose
2025-08-08 16:39 ` [PATCH v10 0/3] ACPI: Add support for ACPI RAS2 feature table Daniel Ferguson
2025-08-11 12:07   ` Shiju Jose

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bdbb50d7309741b8b282c2e8a1fc72ae@huawei.com \
    --to=shiju.jose@huawei.com \
    --cc=Jon.Grimm@amd.com \
    --cc=Yazen.Ghannam@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dferguson@amperecomputing.com \
    --cc=duenwen@google.com \
    --cc=erdemaktas@google.com \
    --cc=gthelen@google.com \
    --cc=james.morse@arm.com \
    --cc=jiaqiyan@google.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=jthoughton@google.com \
    --cc=kangkang.shen@futurewei.com \
    --cc=lenb@kernel.org \
    --cc=leo.duran@amd.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxarm@huawei.com \
    --cc=mchehab@kernel.org \
    --cc=naoya.horiguchi@nec.com \
    --cc=nifan.cxl@gmail.com \
    --cc=pgonda@google.com \
    --cc=prime.zeng@hisilicon.com \
    --cc=rafael@kernel.org \
    --cc=rientjes@google.com \
    --cc=roberto.sassu@huawei.com \
    --cc=rppt@kernel.org \
    --cc=somasundaram.a@hpe.com \
    --cc=tanxiaofei@huawei.com \
    --cc=tony.luck@intel.com \
    --cc=wanghuiqiang@huawei.com \
    --cc=wbs@os.amperecomputing.com \
    --cc=wschwartz@amperecomputing.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.