On Thu, Jul 12, 2018 at 04:37:25PM -0400, Pavel Tatashin wrote:
> Changelog:
> v5 - v4
>       - Fixed the issue that was reported on ppc64 when
>         CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER is removed
>       - Consolidated the new buffer allocation between vmemmap
>         and non-vmemmap variants of sparse layout.
>       - Removed all review-by comments, because I had to do
>         significant amount of changes compared to previous version
>         and need another round of review.
>       - I also would appreciate if those who reported problems with
>         PPC64 could test this change.

About PPC64, your patchset fixes the issue as the population gets followed by a
sparse_init_one_section().

It can be seen here:

Before:

kernel: vmemmap_populate f000000000000000..f000000000004000, node 0
kernel:       * f000000000000000..f000000000010000 allocated at (____ptrval____)
kernel: vmemmap_populate f000000000000000..f000000000008000, node 0
kernel:       * f000000000000000..f000000000010000 allocated at (____ptrval____)
kernel: vmemmap_populate f000000000000000..f00000000000c000, node 0
kernel:       * f000000000000000..f000000000010000 allocated at (____ptrval____)


After:

kernel: vmemmap_populate f000000000000000..f000000000004000, node 0
kernel:       * f000000000000000..f000000000010000 allocated at (____ptrval____)
kernel: vmemmap_populate f000000000000000..f000000000008000, node 0
kernel: vmemmap_populate f000000000000000..f00000000000c000, node 0
kernel: vmemmap_populate f000000000000000..f000000000010000, node 0
kernel: vmemmap_populate f000000000010000..f000000000014000, node 0
kernel:       * f000000000010000..f000000000020000 allocated at (____ptrval____)


As can be seen, before the patchset, we keep calling vmemmap_create_mapping() 
even if we
populated that section already, because of vmemmap_populated() checking for 
SECTION_HAS_MEM_MAP.

After the patchset, since each population is being followed by a call to 
sparse_init_one_section(),
when vmemmap_populated() gets called, we have SECTION_HAS_MEM_MAP already in 
case the section
was populated.
-- 
Oscar Salvador
SUSE L3

Reply via email to