]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
powerpc/mm: Fallback to RAM if the altmap is unusable
authorOliver O'Halloran <oohall@gmail.com>
Thu, 6 Dec 2018 15:17:14 +0000 (02:17 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 9 Dec 2018 10:33:21 +0000 (21:33 +1100)
commit9ef34630a4614ee1cd478f9859ebea55d55f10ec
tree7cdf1c09682669c992a572b5705a71e6603dffb2
parent43001c52b603cac041783cc392094ea560bd9444
powerpc/mm: Fallback to RAM if the altmap is unusable

The "altmap" is used to provide a pool of memory that is reserved for
the vmemmap backing of hot-plugged memory. This is useful when adding
large amount of ZONE_DEVICE memory to a system with a limited amount of
normal memory.

On ppc64 we use huge pages to map the vmemmap which requires the backing
storage to be contigious and aligned to the hugepage size. The altmap
implementation allows for the altmap provider to reserve a few PFNs at
the start of the range for it's own uses and when this occurs the
first chunk of the altmap is not usable for hugepage mappings. On hash
there is no sane way to fall back to a normal sized page mapping so we
fail the allocation. This results in memory hotplug failing with
ENOMEM when the new range doesn't fall into an existing vmemmap block.

This patch handles this case by falling back to using system memory
rather than failing if we cannot allocate from the altmap. This
fallback should only ever be used for the first vmemmap block so it
should not cause excess memory consumption.

Fixes: 7b73d978a5d0 ("mm: pass the vmem_altmap to vmemmap_populate")
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/init_64.c