aboutsummaryrefslogtreecommitdiff
path: root/arch/s390/lib
diff options
context:
space:
mode:
authorGravatar Heiko Carstens <heiko.carstens@de.ibm.com> 2014-01-27 10:25:39 +0100
committerGravatar Martin Schwidefsky <schwidefsky@de.ibm.com> 2014-02-21 08:50:17 +0100
commit56f15e518cfdc732bd4e4da90e0c9cf2fc4e7c1b (patch)
treee86068ef02db989769aedb3e495d444e3f7d62eb /arch/s390/lib
parents390/uaccess: remove dead kernel parameter 'user_mode=' (diff)
downloadlinux-56f15e518cfdc732bd4e4da90e0c9cf2fc4e7c1b.tar.gz
linux-56f15e518cfdc732bd4e4da90e0c9cf2fc4e7c1b.tar.bz2
linux-56f15e518cfdc732bd4e4da90e0c9cf2fc4e7c1b.zip
s390/uaccess: introduce 'uaccesspt' kernel parameter
The uaccesspt kernel parameter allows to enforce using the uaccess page table walk variant. This is mainly for debugging purposes, so this mode can also be enabled on machines which support the mvcos instruction. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/lib')
-rw-r--r--arch/s390/lib/uaccess_mvcos.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/s390/lib/uaccess_mvcos.c b/arch/s390/lib/uaccess_mvcos.c
index e2685ff2ec4b..ae97b8df11aa 100644
--- a/arch/s390/lib/uaccess_mvcos.c
+++ b/arch/s390/lib/uaccess_mvcos.c
@@ -241,9 +241,22 @@ long __strncpy_from_user(char *dst, const char __user *src, long count)
}
EXPORT_SYMBOL(__strncpy_from_user);
+/*
+ * The uaccess page tabe walk variant can be enforced with the "uaccesspt"
+ * kernel parameter. This is mainly for debugging purposes.
+ */
+static int force_uaccess_pt __initdata;
+
+static int __init parse_uaccess_pt(char *__unused)
+{
+ force_uaccess_pt = 1;
+ return 0;
+}
+early_param("uaccesspt", parse_uaccess_pt);
+
static int __init uaccess_init(void)
{
- if (IS_ENABLED(CONFIG_32BIT) || !test_facility(27))
+ if (IS_ENABLED(CONFIG_32BIT) || force_uaccess_pt || !test_facility(27))
static_key_slow_dec(&have_mvcos);
return 0;
}