2019-08-09 01:05:02

by Wei Yang

[permalink] [raw]
Subject: [PATCH] mm/sparse: use __nr_to_section(section_nr) to get mem_section

__pfn_to_section is defined as __nr_to_section(pfn_to_section_nr(pfn)).

Since we already get section_nr, it is not necessary to get mem_section
from start_pfn. By doing so, we reduce one redundant operation.

Signed-off-by: Wei Yang <[email protected]>
---
mm/sparse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index 72f010d9bff5..95158a148cd1 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -867,7 +867,7 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn,
*/
page_init_poison(pfn_to_page(start_pfn), sizeof(struct page) * nr_pages);

- ms = __pfn_to_section(start_pfn);
+ ms = __nr_to_section(section_nr);
set_section_nid(section_nr, nid);
section_mark_present(ms);

--
2.17.1


2019-08-09 09:19:01

by Anshuman Khandual

[permalink] [raw]
Subject: Re: [PATCH] mm/sparse: use __nr_to_section(section_nr) to get mem_section



On 08/09/2019 06:32 AM, Wei Yang wrote:
> __pfn_to_section is defined as __nr_to_section(pfn_to_section_nr(pfn)).

Right.

>
> Since we already get section_nr, it is not necessary to get mem_section
> from start_pfn. By doing so, we reduce one redundant operation.
>
> Signed-off-by: Wei Yang <[email protected]>

Looks right.

With this applied, memory hot add still works on arm64.

Reviewed-by: Anshuman Khandual <[email protected]>

> ---
> mm/sparse.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/sparse.c b/mm/sparse.c
> index 72f010d9bff5..95158a148cd1 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -867,7 +867,7 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn,
> */
> page_init_poison(pfn_to_page(start_pfn), sizeof(struct page) * nr_pages);
>
> - ms = __pfn_to_section(start_pfn);
> + ms = __nr_to_section(section_nr);
> set_section_nid(section_nr, nid);
> section_mark_present(ms);
>
>

2019-08-09 13:50:47

by Wei Yang

[permalink] [raw]
Subject: Re: [PATCH] mm/sparse: use __nr_to_section(section_nr) to get mem_section

On Fri, Aug 09, 2019 at 02:39:59PM +0530, Anshuman Khandual wrote:
>
>
>On 08/09/2019 06:32 AM, Wei Yang wrote:
>> __pfn_to_section is defined as __nr_to_section(pfn_to_section_nr(pfn)).
>
>Right.
>
>>
>> Since we already get section_nr, it is not necessary to get mem_section
>> from start_pfn. By doing so, we reduce one redundant operation.
>>
>> Signed-off-by: Wei Yang <[email protected]>
>
>Looks right.
>
>With this applied, memory hot add still works on arm64.

Thanks for your test.

>
>Reviewed-by: Anshuman Khandual <[email protected]>
>
>> ---
>> mm/sparse.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/sparse.c b/mm/sparse.c
>> index 72f010d9bff5..95158a148cd1 100644
>> --- a/mm/sparse.c
>> +++ b/mm/sparse.c
>> @@ -867,7 +867,7 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn,
>> */
>> page_init_poison(pfn_to_page(start_pfn), sizeof(struct page) * nr_pages);
>>
>> - ms = __pfn_to_section(start_pfn);
>> + ms = __nr_to_section(section_nr);
>> set_section_nid(section_nr, nid);
>> section_mark_present(ms);
>>
>>

--
Wei Yang
Help you, Help me