]> git.hungrycats.org Git - linux/commitdiff
powerpc/rfi-flush: Differentiate enabled and patched flush types
authorMauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Sat, 2 Jun 2018 11:08:52 +0000 (21:08 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Jun 2018 14:44:35 +0000 (16:44 +0200)
commit 0063d61ccfc011f379a31acaeba6de7c926fed2c upstream.

Currently the rfi-flush messages print 'Using <type> flush' for all
enabled_flush_types, but that is not necessarily true -- as now the
fallback flush is always enabled on pseries, but the fixup function
overwrites its nop/branch slot with other flush types, if available.

So, replace the 'Using <type> flush' messages with '<type> flush is
available'.

Also, print the patched flush types in the fixup function, so users
can know what is (not) being used (e.g., the slower, fallback flush,
or no flush type at all if flush is disabled via the debugfs switch).

Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/kernel/setup_64.c
arch/powerpc/lib/feature-fixups.c

index 568793009daa7d4dee0b25da4864e64db3b014ae..eaa6039edddc79ba9f4372ce75ad6e5b21360131 100644 (file)
@@ -755,15 +755,15 @@ static void init_fallback_flush(void)
 void setup_rfi_flush(enum l1d_flush_type types, bool enable)
 {
        if (types & L1D_FLUSH_FALLBACK) {
-               pr_info("rfi-flush: Using fallback displacement flush\n");
+               pr_info("rfi-flush: fallback displacement flush available\n");
                init_fallback_flush();
        }
 
        if (types & L1D_FLUSH_ORI)
-               pr_info("rfi-flush: Using ori type flush\n");
+               pr_info("rfi-flush: ori type flush available\n");
 
        if (types & L1D_FLUSH_MTTRIG)
-               pr_info("rfi-flush: Using mttrig type flush\n");
+               pr_info("rfi-flush: mttrig type flush available\n");
 
        enabled_flush_types = types;
 
index 46c8338a61bc81187f33307a7ef6ef5b805ecdfb..d89d54fa6acc618100b9de304d25e39aaaa233b9 100644 (file)
@@ -153,7 +153,14 @@ void do_rfi_flush_fixups(enum l1d_flush_type types)
                patch_instruction(dest + 2, instrs[2]);
        }
 
-       printk(KERN_DEBUG "rfi-flush: patched %d locations\n", i);
+       printk(KERN_DEBUG "rfi-flush: patched %d locations (%s flush)\n", i,
+               (types == L1D_FLUSH_NONE)       ? "no" :
+               (types == L1D_FLUSH_FALLBACK)   ? "fallback displacement" :
+               (types &  L1D_FLUSH_ORI)        ? (types & L1D_FLUSH_MTTRIG)
+                                                       ? "ori+mttrig type"
+                                                       : "ori type" :
+               (types &  L1D_FLUSH_MTTRIG)     ? "mttrig type"
+                                               : "unknown");
 }
 #endif /* CONFIG_PPC_BOOK3S_64 */