# git rev-parse -q --verify 8e0d0ad206f08506c893326ca7c9c3d9cc042cef^{commit} 8e0d0ad206f08506c893326ca7c9c3d9cc042cef already have revision, skipping fetch # git checkout -q -f -B kisskb 8e0d0ad206f08506c893326ca7c9c3d9cc042cef # git clean -qxdf # < git log -1 # commit 8e0d0ad206f08506c893326ca7c9c3d9cc042cef # Author: Linus Torvalds # Date: Tue Oct 15 09:56:36 2019 -0700 # # sparc64: disable fast-GUP due to unexplained oopses # # HAVE_FAST_GUP enables the lockless quick page table walker for simple # cases, and is a nice optimization for some random loads that can then # use get_user_pages_fast() rather than the more careful page walker. # # However, for some unexplained reason, it seems to be subtly broken on # sparc64. The breakage is only with some compiler versions and some # hardware, and nobody seems to have figured out what triggers it, # although there's a simple reprodicer for the problem when it does # trigger. # # The problem was introduced with the conversion to the generic GUP code # in commit 7b9afb86b632 ("sparc64: use the generic get_user_pages_fast # code"), but nothing looks obviously wrong in that conversion. It may be # a compiler bug that just hits us with the code reorganization. Or it # may be something very specific to sparc64. # # This disables HAVE_FAST_GUP entirely. That makes things like futexes a # bit slower, but at least they work. If we can figure out the trigger, # that would be lovely, but it's been three months already.. # # Link: https://lore.kernel.org/lkml/20190717215956.GA30369@altlinux.org/ # Fixes: 7b9afb86b632 ("sparc64: use the generic get_user_pages_fast code") # Reported-by: Dmitry V Levin # Reported-by: Anatoly Pugachev # Requested-by: Meelis Roos # Suggested-by: Christoph Hellwig # Cc: David Miller # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 8e0d0ad206f08506c893326ca7c9c3d9cc042cef # < make -s -j 80 ARCH=powerpc O=/kisskb/build/linus_powernv_defconfig+THIN_ppc64le-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- powernv_defconfig # Added to kconfig CONFIG_USE_THIN_ARCHIVES=y # yes \n | make -s -j 80 ARCH=powerpc O=/kisskb/build/linus_powernv_defconfig+THIN_ppc64le-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- oldconfig yes: standard output: Broken pipe # make -s -j 80 ARCH=powerpc O=/kisskb/build/linus_powernv_defconfig+THIN_ppc64le-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- WARNING: vmlinux.o(.text+0x2fc8): Section mismatch in reference from the variable start_here_common to the function .init.text:start_kernel() The function start_here_common() references the function __init start_kernel(). This is often because start_here_common lacks a __init annotation or the annotation of start_kernel is wrong. Completed OK # rm -rf /kisskb/build/linus_powernv_defconfig+THIN_ppc64le-gcc5 # Build took: 0:02:53.919185