Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1726009 > unrolled thread

[PATCH] mm, sparse: fix typo in online_mem_sections

Started byMichal Hocko <mhocko@kernel.org>
First post2017-09-04 13:30 +0200
Last post2017-09-06 10:20 +0200
Articles 6 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] mm, sparse: fix typo in online_mem_sections Michal Hocko <mhocko@kernel.org> - 2017-09-04 13:30 +0200
    Re: [PATCH] mm, sparse: fix typo in online_mem_sections Anshuman Khandual <khandual@linux.vnet.ibm.com> - 2017-09-05 09:10 +0200
      Re: [PATCH] mm, sparse: fix typo in online_mem_sections Michal Hocko <mhocko@kernel.org> - 2017-09-05 09:30 +0200
        Re: [PATCH] mm, sparse: fix typo in online_mem_sections Michal Hocko <mhocko@kernel.org> - 2017-09-05 09:40 +0200
          Re: [PATCH] mm, sparse: fix typo in online_mem_sections Anshuman Khandual <khandual@linux.vnet.ibm.com> - 2017-09-05 10:50 +0200
    Re: [PATCH] mm, sparse: fix typo in online_mem_sections Vlastimil Babka <vbabka@suse.cz> - 2017-09-06 10:20 +0200

#1726009 — [PATCH] mm, sparse: fix typo in online_mem_sections

FromMichal Hocko <mhocko@kernel.org>
Date2017-09-04 13:30 +0200
Subject[PATCH] mm, sparse: fix typo in online_mem_sections
Message-ID<ulXJN-4RW-37@gated-at.bofh.it>
From: Michal Hocko <mhocko@suse.com>

online_mem_sections accidentally marks online only the first section in
the given range. This is a typo which hasn't been noticed because I
haven't tested large 2GB blocks previously. All users of
pfn_to_online_page would get confused on the the rest of the pfn range
in the block.

All we need to fix this is to use iterator (pfn) rather than start_pfn.

Fixes: 2d070eab2e82 ("mm: consider zone which is not fully populated to have holes")
Cc: stable
Signed-off-by: Michal Hocko <mhocko@suse.com>
---
 mm/sparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index a9783acf2bb9..83b3bf6461af 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -626,7 +626,7 @@ void online_mem_sections(unsigned long start_pfn, unsigned long end_pfn)
 	unsigned long pfn;
 
 	for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
-		unsigned long section_nr = pfn_to_section_nr(start_pfn);
+		unsigned long section_nr = pfn_to_section_nr(pfn);
 		struct mem_section *ms;
 
 		/* onlining code should never touch invalid ranges */
-- 
2.14.1

[toc] | [next] | [standalone]


#1726387

FromAnshuman Khandual <khandual@linux.vnet.ibm.com>
Date2017-09-05 09:10 +0200
Message-ID<umg9I-82b-15@gated-at.bofh.it>
In reply to#1726009
On 09/04/2017 04:52 PM, Michal Hocko wrote:
> From: Michal Hocko <mhocko@suse.com>
> 
> online_mem_sections accidentally marks online only the first section in
> the given range. This is a typo which hasn't been noticed because I
> haven't tested large 2GB blocks previously. All users of

Section sizes are normally less than 2GB. Could you please elaborate
why this never got noticed before ?

[toc] | [prev] | [next] | [standalone]


#1726474

FromMichal Hocko <mhocko@kernel.org>
Date2017-09-05 09:30 +0200
Message-ID<umgt5-8b3-45@gated-at.bofh.it>
In reply to#1726387
On Tue 05-09-17 12:32:28, Anshuman Khandual wrote:
> On 09/04/2017 04:52 PM, Michal Hocko wrote:
> > From: Michal Hocko <mhocko@suse.com>
> > 
> > online_mem_sections accidentally marks online only the first section in
> > the given range. This is a typo which hasn't been noticed because I
> > haven't tested large 2GB blocks previously. All users of
> 
> Section sizes are normally less than 2GB. Could you please elaborate
> why this never got noticed before ?

Section size is 128MB which is the default block size as well. So we
have one section per block. But if the amount of memory is very large
(64GB - see probe_memory_block_size) then we have a 2GB memory blocks
so multiple sections per block.
-- 
Michal Hocko
SUSE Labs

[toc] | [prev] | [next] | [standalone]


#1726486

FromMichal Hocko <mhocko@kernel.org>
Date2017-09-05 09:40 +0200
Message-ID<umgCL-8ei-27@gated-at.bofh.it>
In reply to#1726474
On Tue 05-09-17 09:28:36, Michal Hocko wrote:
> On Tue 05-09-17 12:32:28, Anshuman Khandual wrote:
> > On 09/04/2017 04:52 PM, Michal Hocko wrote:
> > > From: Michal Hocko <mhocko@suse.com>
> > > 
> > > online_mem_sections accidentally marks online only the first section in
> > > the given range. This is a typo which hasn't been noticed because I
> > > haven't tested large 2GB blocks previously. All users of
> > 
> > Section sizes are normally less than 2GB. Could you please elaborate
> > why this never got noticed before ?
> 
> Section size is 128MB which is the default block size as well. So we
> have one section per block. But if the amount of memory is very large
> (64GB - see probe_memory_block_size) then we have a 2GB memory blocks
> so multiple sections per block.

And just to clarify. Not that 64G would be too large but the original
patch has been merged in 4.13 so nobody probably managed to hit that
_yet_.
-- 
Michal Hocko
SUSE Labs

[toc] | [prev] | [next] | [standalone]


#1726554

FromAnshuman Khandual <khandual@linux.vnet.ibm.com>
Date2017-09-05 10:50 +0200
Message-ID<umhIu-pS-21@gated-at.bofh.it>
In reply to#1726486
On 09/05/2017 01:07 PM, Michal Hocko wrote:
> On Tue 05-09-17 09:28:36, Michal Hocko wrote:
>> On Tue 05-09-17 12:32:28, Anshuman Khandual wrote:
>>> On 09/04/2017 04:52 PM, Michal Hocko wrote:
>>>> From: Michal Hocko <mhocko@suse.com>
>>>>
>>>> online_mem_sections accidentally marks online only the first section in
>>>> the given range. This is a typo which hasn't been noticed because I
>>>> haven't tested large 2GB blocks previously. All users of
>>>
>>> Section sizes are normally less than 2GB. Could you please elaborate
>>> why this never got noticed before ?
>>
>> Section size is 128MB which is the default block size as well. So we
>> have one section per block. But if the amount of memory is very large
>> (64GB - see probe_memory_block_size) then we have a 2GB memory blocks
>> so multiple sections per block.
> 
> And just to clarify. Not that 64G would be too large but the original
> patch has been merged in 4.13 so nobody probably managed to hit that
> _yet_.

Got it. Section size is 16MB and block size is 256MB on most of the
POWER platforms. Hence this could have affected them as well.

[toc] | [prev] | [next] | [standalone]


#1727208

FromVlastimil Babka <vbabka@suse.cz>
Date2017-09-06 10:20 +0200
Message-ID<umDJ0-7kw-19@gated-at.bofh.it>
In reply to#1726009
On 09/04/2017 01:22 PM, Michal Hocko wrote:
> From: Michal Hocko <mhocko@suse.com>
> 
> online_mem_sections accidentally marks online only the first section in
> the given range. This is a typo which hasn't been noticed because I
> haven't tested large 2GB blocks previously. All users of
> pfn_to_online_page would get confused on the the rest of the pfn range
> in the block.
> 
> All we need to fix this is to use iterator (pfn) rather than start_pfn.
> 
> Fixes: 2d070eab2e82 ("mm: consider zone which is not fully populated to have holes")
> Cc: stable
> Signed-off-by: Michal Hocko <mhocko@suse.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/sparse.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/sparse.c b/mm/sparse.c
> index a9783acf2bb9..83b3bf6461af 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -626,7 +626,7 @@ void online_mem_sections(unsigned long start_pfn, unsigned long end_pfn)
>  	unsigned long pfn;
>  
>  	for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
> -		unsigned long section_nr = pfn_to_section_nr(start_pfn);
> +		unsigned long section_nr = pfn_to_section_nr(pfn);
>  		struct mem_section *ms;
>  
>  		/* onlining code should never touch invalid ranges */
> 

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web