kaiser: disabled on Xen PV
authorJiri Kosina <jkosina@suse.cz>
Tue, 2 Jan 2018 13:19:49 +0000 (14:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jan 2018 14:44:26 +0000 (15:44 +0100)
Kaiser cannot be used on paravirtualized MMUs (namely reading and writing CR3).
This does not work with KAISER as the CR3 switch from and to user space PGD
would require to map the whole XEN_PV machinery into both.

More importantly, enabling KAISER on Xen PV doesn't make too much sense, as PV
guests use distinct %cr3 values for kernel and user already.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/mm/kaiser.c

index 9d6b7517fca527c00c62542e1b2e098c44ea6ca3..6a2e00a80105ad709dc9749a3067f5e425226ef5 100644 (file)
@@ -264,6 +264,9 @@ void __init kaiser_check_boottime_disable(void)
        char arg[5];
        int ret;
 
+       if (boot_cpu_has(X86_FEATURE_XENPV))
+               goto silent_disable;
+
        ret = cmdline_find_option(boot_command_line, "pti", arg, sizeof(arg));
        if (ret > 0) {
                if (!strncmp(arg, "on", 2))
@@ -291,6 +294,8 @@ enable:
 
 disable:
        pr_info("Kernel/User page tables isolation: disabled\n");
+
+silent_disable:
        kaiser_enabled = 0;
        setup_clear_cpu_cap(X86_FEATURE_KAISER);
 }