]> git.baikalelectronics.ru Git - kernel.git/commit
sparc64: disable fast-GUP due to unexplained oopses
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 15 Oct 2019 16:56:36 +0000 (09:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 15 Oct 2019 16:56:36 +0000 (09:56 -0700)
commite3825b0b442e62df34071f189c016bc64672a977
treef60a7b84591b0e6f861c5c8789f7c0bd3e86a6be
parentd3d237b0f6f126a4867d3503e75e980133c75f52
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 b6fb4a832b9c ("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: b6fb4a832b9c ("sparc64: use the generic get_user_pages_fast code")
Reported-by: Dmitry V Levin <ldv@altlinux.org>
Reported-by: Anatoly Pugachev <matorola@gmail.com>
Requested-by: Meelis Roos <mroos@linux.ee>
Suggested-by: Christoph Hellwig <hch@infradead.org>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/sparc/Kconfig