powerpc/nvdimm: Update vmemmap_populated to check sub-section range
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Tue, 17 Sep 2019 12:38:51 +0000 (18:08 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 28 Oct 2019 10:54:15 +0000 (21:54 +1100)
commit5f5d6e40a01e70b731df843d8b5a61b4b28b19d9
tree17ebb2c4799deb61478eaa085a21662a907096ce
parent69393cb03ccdf29f3b452d3482ef918469d1c098
powerpc/nvdimm: Update vmemmap_populated to check sub-section range

With commit: 7cc7867fb061 ("mm/devm_memremap_pages: enable sub-section remap")
pmem namespaces are remapped in 2M chunks. On architectures like ppc64 we
can map the memmap area using 16MB hugepage size and that can cover
a memory range of 16G.

While enabling new pmem namespaces, since memory is added in sub-section chunks,
before creating a new memmap mapping, kernel should check whether there is an
existing memmap mapping covering the new pmem namespace. Currently, this is
validated by checking whether the section covering the range is already
initialized or not. Considering there can be multiple namespaces in the same
section this can result in wrong validation. Update this to check for
sub-sections in the range. This is done by checking for all pfns in the range we
are mapping.

We could optimize this by checking only just one pfn in each sub-section. But
since this is not fast-path we keep this simple.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190917123851.22553-1-aneesh.kumar@linux.ibm.com
arch/powerpc/mm/init_64.c