# 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/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux-gcc --version # < /opt/cross/kisskb/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux-ld --version # < git log --format=%s --max-count=1 8e0d0ad206f08506c893326ca7c9c3d9cc042cef # < make -s -j 120 ARCH=sparc64 O=/kisskb/build/linus_sparc64-allmodconfig_sparc64 CROSS_COMPILE=/opt/cross/kisskb/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_HAVE_FTRACE_MCOUNT_RECORD=n # Added to kconfig CONFIG_SAMPLES=n # Added to kconfig CONFIG_MODULE_SIG=n # yes \n | make -s -j 120 ARCH=sparc64 O=/kisskb/build/linus_sparc64-allmodconfig_sparc64 CROSS_COMPILE=/opt/cross/kisskb/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux- oldconfig yes: standard output: Broken pipe # make -s -j 120 ARCH=sparc64 O=/kisskb/build/linus_sparc64-allmodconfig_sparc64 CROSS_COMPILE=/opt/cross/kisskb/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux- :1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] unrecognized e_machine 18 arch/sparc/vdso/vdso32/vclock_gettime.o arch/sparc/vdso/vdso32/vclock_gettime.o: failed make[3]: *** [/kisskb/src/scripts/Makefile.build:266: arch/sparc/vdso/vdso32/vclock_gettime.o] Error 1 make[3]: *** Deleting file 'arch/sparc/vdso/vdso32/vclock_gettime.o' make[2]: *** [/kisskb/src/scripts/Makefile.build:509: arch/sparc/vdso] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/kisskb/src/Makefile:1649: arch/sparc] Error 2 make[1]: *** Waiting for unfinished jobs.... /kisskb/src/fs/cifs/smb2pdu.c: In function 'SMB2_ioctl_init': /kisskb/src/fs/cifs/smb2pdu.c:2700:19: warning: 'in_data_buf' may be used uninitialized in this function [-Wmaybe-uninitialized] iov[1].iov_base = in_data_buf; ^ /kisskb/src/drivers/input/joystick/analog.c:160:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp] #warning Precise timer not defined for this architecture. ^ /kisskb/src/drivers/i2c/busses/i2c-sh_mobile.c: In function 'sh_mobile_i2c_isr': /kisskb/src/drivers/i2c/busses/i2c-sh_mobile.c:399:26: warning: 'data' may be used uninitialized in this function [-Wmaybe-uninitialized] pd->msg->buf[real_pos] = data; ^ /kisskb/src/drivers/i2c/busses/i2c-sh_mobile.c:372:16: note: 'data' was declared here unsigned char data; ^ In file included from /kisskb/src/include/linux/wait.h:9:0, from /kisskb/src/include/linux/net.h:19, from /kisskb/src/drivers/infiniband/sw/siw/siw_qp_rx.c:8: /kisskb/src/drivers/infiniband/sw/siw/siw_qp_rx.c: In function 'siw_proc_send': /kisskb/src/include/linux/spinlock.h:288:3: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized] _raw_spin_unlock_irqrestore(lock, flags); \ ^ /kisskb/src/drivers/infiniband/sw/siw/siw_qp_rx.c:335:16: note: 'flags' was declared here unsigned long flags; ^ /kisskb/src/drivers/watchdog/cpwd.c:500:19: error: 'compat_ptr_ioctl' undeclared here (not in a function) .compat_ioctl = compat_ptr_ioctl, ^ make[3]: *** [/kisskb/src/scripts/Makefile.build:265: drivers/watchdog/cpwd.o] Error 1 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/scripts/Makefile.build:509: drivers/watchdog] Error 2 make[2]: *** Waiting for unfinished jobs.... In file included from /kisskb/src/include/linux/rwsem.h:16:0, from /kisskb/src/include/linux/notifier.h:15, from /kisskb/src/include/linux/clk.h:14, from /kisskb/src/drivers/tty/serial/sh-sci.c:24: /kisskb/src/drivers/tty/serial/sh-sci.c: In function 'sci_dma_rx_submit': /kisskb/src/include/linux/spinlock.h:288:3: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized] _raw_spin_unlock_irqrestore(lock, flags); \ ^ /kisskb/src/drivers/tty/serial/sh-sci.c:1351:16: note: 'flags' was declared here unsigned long flags; ^ make[1]: *** [/kisskb/src/Makefile:1649: drivers] Error 2 make: *** [Makefile:179: sub-make] Error 2 Command 'make -s -j 120 ARCH=sparc64 O=/kisskb/build/linus_sparc64-allmodconfig_sparc64 CROSS_COMPILE=/opt/cross/kisskb/br-sparc64-full-2016.08-613-ge98b4dd/bin/sparc64-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/linus_sparc64-allmodconfig_sparc64 # Build took: 0:06:22.852863