Regression found on arm gcc-11 builds with tinyconfig and allnoconfig. Following build warnings / errors reported on stable-rc 4.9. metadata: git_describe: v4.9.290-208-gb2ae18f41670 git_repo: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc git_short_log: b2ae18f41670 (\"Linux 4.9.291-rc1\") target_arch: arm toolchain: gcc-11 / gcc-10 / gcc-9 / gcc-8 build error : -------------- make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/current ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 'CC=sccache arm-linux-gnueabihf-gcc' 'HOSTCC=sccache gcc' In file included from arch/arm/include/asm/tlb.h:28, from arch/arm/mm/init.c:34: include/asm-generic/tlb.h: In function 'tlb_flush_pmd_range': include/asm-generic/tlb.h:208:54: error: 'PMD_SIZE' undeclared (first use in this function); did you mean 'PUD_SIZE'? 208 | if (tlb->page_size != 0 && tlb->page_size != PMD_SIZE) | ^~~~~~~~ | PUD_SIZE include/asm-generic/tlb.h:208:54: note: each undeclared identifier is reported only once for each function it appears in make[2]: *** [scripts/Makefile.build:307: arch/arm/mm/init.o] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [Makefile:1036: arch/arm/mm] Error 2 Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx> Patch pointing to, hugetlbfs: flush TLBs correctly after huge_pmd_unshare commit a4a118f2eead1d6c49e00765de89878288d4b890 upstream. When __unmap_hugepage_range() calls to huge_pmd_unshare() succeed, a TLB flush is missing. This TLB flush must be performed before releasing the i_mmap_rwsem, in order to prevent an unshared PMDs page from being released and reused before the TLB flush took place. Arguably, a comprehensive solution would use mmu_gather interface to batch the TLB flushes and the PMDs page release, however it is not an easy solution: (1) try_to_unmap_one() and try_to_migrate_one() also call huge_pmd_unshare() and they cannot use the mmu_gather interface; and (2) deferring the release of the page reference for the PMDs page until after i_mmap_rwsem is dropeed can confuse huge_pmd_unshare() into thinking PMDs are shared when they are not. Fix __unmap_hugepage_range() by adding the missing TLB flush, and forcing a flush when unshare is successful. Fixes: 24669e58477e ("hugetlb: use mmu_gather instead of a temporary linked list for accumulating pages)" # 3.6 Signed-off-by: Nadav Amit <namit@xxxxxxxxxx> Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> Cc: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> build link: ----------- https://builds.tuxbuild.com//21Mf9eMMjq4oO5ZflMwRCPssSc0/build.log build config: ------------- https://builds.tuxbuild.com//21Mf9eMMjq4oO5ZflMwRCPssSc0/config # To install tuxmake on your system globally # sudo pip3 install -U tuxmake tuxmake --runtime podman --target-arch arm --toolchain gcc-11 --kconfig tinyconfig -- Linaro LKFT https://lkft.linaro.org