• Aneesh Kumar K.V's avatar
    powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR configuration · baed68a9
    Aneesh Kumar K.V authored
    commit 35f2806b upstream.
    
    We added runtime allocation of 16G pages in commit 4ae279c2
    ("powerpc/mm/hugetlb: Allow runtime allocation of 16G.") That was done
    to enable 16G allocation on PowerNV and KVM config. In case of KVM
    config, we mostly would have the entire guest RAM backed by 16G
    hugetlb pages for this to work. PAPR do support partial backing of
    guest RAM with hugepages via ibm,expected#pages node of memory node in
    the device tree. This means rest of the guest RAM won't be backed by
    16G contiguous pages in the host and hence a hash page table insertion
    can fail in such case.
    
    An example error message will look like
    
      hash-mmu: mm: Hashing failure ! EA=0x7efc00000000 access=0x8000000000000006 current=readback
      hash-mmu:     trap=0x300 vsid=0x67af789 ssize=1 base psize=14 psize 14 pte=0xc000000400000386
      readback[12260]: unhandled signal 7 at 00007efc00000000 nip 00000000100012d0 lr 000000001000127c code 2
    
    This patch address that by preventing runtime allocation of 16G
    hugepages in LPAR config. To allocate 16G hugetlb one need to kernel
    command line hugepagesz=16G hugepages=<number of 16G pages>
    
    With radix translation mode we don't run into this issue.
    
    This change will prevent runtime allocation of 16G hugetlb pages on
    kvm with hash translation mode. However, with the current upstream it
    was observed that 16G hugetlbfs backed guest doesn't boot at all.
    
    We observe boot failure with the below message:
      [131354.647546] KVM: map_vrma at 0 failed, ret=-4
    
    That means this patch is not resulting in an observable regression.
    Once we fix the boot issue with 16G hugetlb backed memory, we need to
    use ibm,expected#pages memory node attribute to indicate 16G page
    reservation to the guest. This will also enable partial backing of
    guest RAM with 16G pages.
    
    Fixes: 4ae279c2 ("powerpc/mm/hugetlb: Allow runtime allocation of 16G.")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    baed68a9
hugetlb.h 1.49 KB