On 12/02/2015 03:04 PM, Michael S. Tsirkin wrote: > Since commit 8561c9244ddf1122d "exec: allocate PROT_NONE pages on top of > RAM", it is no longer possible to back guest RAM with hugepages on ppc64 > hosts: > > mmap(NULL, 285212672, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x3fff57000000 > mmap(0x3fff57000000, 268435456, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED, 19, 0) = -1 EBUSY (Device or resource busy) > > This is because on ppc64, Linux fixes a page size for a virtual address > at mmap time, so we can't switch a range of memory from anonymous > small pages to hugetlbs with MAP_FIXED. > > See commit d0f13e3c20b6fb73ccb467bdca97fa7cf5a574cd > ("[POWERPC] Introduce address space "slices"") in Linux > history for the details. > > Detect this and create the PROT_NONE mapping using the same fd. > > Naturally, this makes the guard page bigger with hugetlbfs. > > Based on patch by Greg Kurz. > > Cc: Rik van Riel <r...@redhat.com> > CC: Greg Kurz <gk...@linux.vnet.ibm.com> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
Acked-by: Rik van Riel <r...@redhat.com> -- All rights reversed