powerpc/book3s64/memhotplug: enable memmap on memory for radix
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Tue, 8 Aug 2023 09:15:00 +0000 (14:45 +0530)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 21 Aug 2023 20:37:49 +0000 (13:37 -0700)
commit603fd64dfa45d1e9df996911e4010f2b00731387
tree453e4620aadc89dfa2466e76163696f1d1bbc369
parent2d1f649c7c0855751c7ff43f4e34784061bc72f7
powerpc/book3s64/memhotplug: enable memmap on memory for radix

Radix vmemmap mapping can map things correctly at the PMD level or PTE
level based on different device boundary checks.  Hence we skip the
restrictions w.r.t vmemmap size to be multiple of PMD_SIZE.  This also
makes the feature widely useful because to use PMD_SIZE vmemmap area we
require a memory block size of 2GiB

We can also use MHP_RESERVE_PAGES_MEMMAP_ON_MEMORY to that the feature can
work with a memory block size of 256MB.  Using altmap.reserve feature to
align things correctly at pageblock granularity.  We can end up losing
some pages in memory with this.  For ex: with a 256MiB memory block size,
we require 4 pages to map vmemmap pages, In order to align things
correctly we end up adding a reserve of 28 pages.  ie, for every 4096
pages 28 pages get reserved.

Link: https://lkml.kernel.org/r/20230808091501.287660-6-aneesh.kumar@linux.ibm.com
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/powerpc/Kconfig
arch/powerpc/include/asm/pgtable.h
arch/powerpc/platforms/pseries/hotplug-memory.c