|
|
@@ -26,6 +26,10 @@ static enum count_cache_flush_type count_cache_flush_type = COUNT_CACHE_FLUSH_NO
|
|
|
|
|
|
bool barrier_nospec_enabled;
|
|
|
static bool no_nospec;
|
|
|
+static bool btb_flush_enabled;
|
|
|
+#ifdef CONFIG_PPC_FSL_BOOK3E
|
|
|
+static bool no_spectrev2;
|
|
|
+#endif
|
|
|
|
|
|
static void enable_barrier_nospec(bool enable)
|
|
|
{
|
|
|
@@ -101,6 +105,23 @@ static __init int barrier_nospec_debugfs_init(void)
|
|
|
device_initcall(barrier_nospec_debugfs_init);
|
|
|
#endif /* CONFIG_DEBUG_FS */
|
|
|
|
|
|
+#ifdef CONFIG_PPC_FSL_BOOK3E
|
|
|
+static int __init handle_nospectre_v2(char *p)
|
|
|
+{
|
|
|
+ no_spectrev2 = true;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+early_param("nospectre_v2", handle_nospectre_v2);
|
|
|
+void setup_spectre_v2(void)
|
|
|
+{
|
|
|
+ if (no_spectrev2)
|
|
|
+ do_btb_flush_fixups();
|
|
|
+ else
|
|
|
+ btb_flush_enabled = true;
|
|
|
+}
|
|
|
+#endif /* CONFIG_PPC_FSL_BOOK3E */
|
|
|
+
|
|
|
#ifdef CONFIG_PPC_BOOK3S_64
|
|
|
ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, char *buf)
|
|
|
{
|