Skip to contentSkip to conversation

Patch "powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti" has been added to the 4.9-stable tree

PATCH [email protected] 1 participant 1 message Feb 4, 2018

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti

to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
powerpc-64s-support-disabling-rfi-flush-with-no_rfi_flush-and-nopti.patch
and it can be found in the queue-4.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From bc9c9304a45480797e13a8e1df96ffcf44fb62fe Mon Sep 17 00:00:00 2001

From: Michael Ellerman <[email protected]>
Date: Wed, 10 Jan 2018 03:07:15 +1100
Subject: powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti

From: Michael Ellerman <[email protected]>

commit bc9c9304a45480797e13a8e1df96ffcf44fb62fe upstream.

Because there may be some performance overhead of the RFI flush, add kernel command line options to disable it.

We add a sensibly named 'no_rfi_flush' option, but we also hijack the x86 option 'nopti'. The RFI flush is not the same as KPTI, but if we see 'nopti' we can guess that the user is trying to avoid any overhead of Meltdown mitigations, and it means we don't have to educate every one about a different command line option.

---
 arch/powerpc/kernel/setup_64.c |   24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)
arch/powerpc/kernel/setup_64.c +23 -1
@@ -682,8 +682,29 @@ early_initcall(disable_hardlockup_detect
 #ifdef CONFIG_PPC_BOOK3S_64
 static enum l1d_flush_type enabled_flush_types;
 static void *l1d_flush_fallback_area;
+static bool no_rfi_flush;
 bool rfi_flush;
 
+static int __init handle_no_rfi_flush(char *p)
+{
+	pr_info("rfi-flush: disabled on command line.");
+	no_rfi_flush = true;
+	return 0;
+}
+early_param("no_rfi_flush", handle_no_rfi_flush);
+
+/*
+ * The RFI flush is not KPTI, but because users will see doco that says to use
+ * nopti we hijack that option here to also disable the RFI flush.
+ */
+static int __init handle_no_pti(char *p)
+{
+	pr_info("rfi-flush: disabling due to 'nopti' on command line.\n");
+	handle_no_rfi_flush(NULL);
+	return 0;
+}
+early_param("nopti", handle_no_pti);
+
 static void do_nothing(void *unused)
 {
 	/*
@@ -754,7 +775,8 @@ void __init setup_rfi_flush(enum l1d_flu
 
 	enabled_flush_types = types;
 
-	rfi_flush_enable(enable);
+	if (!no_rfi_flush)
+		rfi_flush_enable(enable);
 }
 #endif /* CONFIG_PPC_BOOK3S_64 */
 #endif

Patches currently in stable-queue which might be from [email protected] are

queue-4.9/powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch queue-4.9/powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch queue-4.9/powerpc-64s-allow-control-of-rfi-flush-via-debugfs.patch queue-4.9/powerpc-powernv-check-device-tree-for-rfi-flush-settings.patch queue-4.9/powerpc-64s-convert-slb_miss_common-to-use-rfi_to_user-kernel.patch queue-4.9/powerpc-64s-support-disabling-rfi-flush-with-no_rfi_flush-and-nopti.patch queue-4.9/powerpc-64-convert-the-syscall-exit-path-to-use-rfi_to_user-kernel.patch queue-4.9/powerpc-64s-add-support-for-rfi-flush-of-l1-d-cache.patch queue-4.9/powerpc-pseries-query-hypervisor-for-rfi-flush-settings.patch queue-4.9/powerpc-64-convert-fast_exception_return-to-use-rfi_to_user-kernel.patch queue-4.9/powerpc-64s-wire-up-cpu_show_meltdown.patch