# git rev-parse -q --verify 9ef34630a4614ee1cd478f9859ebea55d55f10ec^{commit} 9ef34630a4614ee1cd478f9859ebea55d55f10ec already have revision, skipping fetch # git checkout -q -f -B kisskb 9ef34630a4614ee1cd478f9859ebea55d55f10ec # git clean -qxdf # < git log -1 # commit 9ef34630a4614ee1cd478f9859ebea55d55f10ec # Author: Oliver O'Halloran # Date: Fri Dec 7 02:17:14 2018 +1100 # # 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 # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 9ef34630a4614ee1cd478f9859ebea55d55f10ec # < make -s -j 120 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc885_ads_defconfig+HUGETLB_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- mpc885_ads_defconfig # Added to kconfig CONFIG_HUGETLBFS=y # yes \n | make -s -j 120 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc885_ads_defconfig+HUGETLB_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- oldconfig yes: standard output: Broken pipe # make -s -j 120 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc885_ads_defconfig+HUGETLB_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:186:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:65:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:341:21: note: 'pdeo' was declared here /kisskb/src/mm/hugetlb.c: In function 'alloc_pool_huge_page': /kisskb/src/mm/hugetlb.c:1433:5: warning: 'page' may be used uninitialized in this function [-Wuninitialized] Image Name: Linux-4.20.0-rc1-g9ef34630a461 Created: Sun Dec 9 22:59:13 2018 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1826874 Bytes = 1784.06 KiB = 1.74 MiB Load Address: 00400000 Entry Point: 004001dc Completed OK # rm -rf /kisskb/build/powerpc-fixes_mpc885_ads_defconfig+HUGETLB_powerpc # Build took: 0:00:26.410026