[TCWG CI] Regression caused by linux: page_alloc: use vmalloc_huge for large system hash: commit f2edd118d02dd11449b126f786f09749ca152ba5 Author: Song Liu song@kernel.org
page_alloc: use vmalloc_huge for large system hash
Results regressed to # reset_artifacts: -10 # build_abe binutils: -9 # build_abe stage1: -5 # build_abe qemu: -2 # linux_n_obj: 546 # First few build errors in logs: # 00:00:40 page_alloc.c:(.init.text+0xef2): undefined reference to `vmalloc_huge' # 00:00:40 make: *** [Makefile:1158: vmlinux] Error 1
from # reset_artifacts: -10 # build_abe binutils: -9 # build_abe stage1: -5 # build_abe qemu: -2 # linux_n_obj: 561 # linux build successful: all
THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT.
This commit has regressed these CI configurations: - tcwg_kernel/gnu-master-arm-mainline-allnoconfig
First_bad build: https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... Last_good build: https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... Baseline build: https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... Even more details: https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all...
Reproduce builds: <cut> mkdir investigate-linux-f2edd118d02dd11449b126f786f09749ca152ba5 cd investigate-linux-f2edd118d02dd11449b126f786f09749ca152ba5
# Fetch scripts git clone https://git.linaro.org/toolchain/jenkins-scripts
# Fetch manifests and test.sh script mkdir -p artifacts/manifests curl -o artifacts/manifests/build-baseline.sh https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... --fail curl -o artifacts/manifests/build-parameters.sh https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... --fail curl -o artifacts/test.sh https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-all... --fail chmod +x artifacts/test.sh
# Reproduce the baseline build (build all pre-requisites) ./jenkins-scripts/tcwg_kernel-build.sh @@ artifacts/manifests/build-baseline.sh
# Save baseline build state (which is then restored in artifacts/test.sh) mkdir -p ./bisect rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ --exclude /linux/ ./ ./bisect/baseline/
cd linux
# Reproduce first_bad build git checkout --detach f2edd118d02dd11449b126f786f09749ca152ba5 ../artifacts/test.sh
# Reproduce last_good build git checkout --detach 22da5264abf497a10a4ed629f07f4ba28a7ed5eb ../artifacts/test.sh
cd .. </cut>
Full commit (up to 1000 lines): <cut> commit f2edd118d02dd11449b126f786f09749ca152ba5 Author: Song Liu song@kernel.org Date: Fri Apr 15 09:44:11 2022 -0700
page_alloc: use vmalloc_huge for large system hash
Use vmalloc_huge() in alloc_large_system_hash() so that large system hash (>= PMD_SIZE) could benefit from huge pages.
Note that vmalloc_huge only allocates huge pages for systems with HAVE_ARCH_HUGE_VMALLOC.
Signed-off-by: Song Liu song@kernel.org Reviewed-by: Christoph Hellwig hch@lst.de Reviewed-by: Rik van Riel riel@surriel.com Signed-off-by: Linus Torvalds torvalds@linux-foundation.org --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 33ca8cab21e6..0e42038382c1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8919,7 +8919,7 @@ void *__init alloc_large_system_hash(const char *tablename, table = memblock_alloc_raw(size, SMP_CACHE_BYTES); } else if (get_order(size) >= MAX_ORDER || hashdist) { - table = __vmalloc(size, gfp_flags); + table = vmalloc_huge(size, gfp_flags); virt = true; if (table) huge = is_vm_area_hugepages(table); </cut>
linaro-kernel@lists.linaro.org