powerpc/64s: Make flush_and_reload_slb a no-op when radix is enabled
authorNicholas Piggin <npiggin@gmail.com>
Wed, 1 Dec 2021 14:41:43 +0000 (00:41 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 2 Dec 2021 11:57:23 +0000 (22:57 +1100)
The radix test can exclude slb_flush_all_realmode() from being called
because flush_and_reload_slb() is only expected to flush ERAT when
called by flush_erat(), which is only on pre-ISA v3.0 CPUs that do not
support radix.

This helps the later change to make hash support configurable to not
introduce runtime changes to radix mode behaviour.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211201144153.2456614-9-npiggin@gmail.com
arch/powerpc/kernel/mce_power.c

index c2f55fe7092d2b2bf4f42bf8fdb8ca2a808a4439..cf5263b648fc41462e388940067fa064184bcec5 100644 (file)
@@ -80,12 +80,12 @@ static bool mce_in_guest(void)
 #ifdef CONFIG_PPC_BOOK3S_64
 void flush_and_reload_slb(void)
 {
-       /* Invalidate all SLBs */
-       slb_flush_all_realmode();
-
        if (early_radix_enabled())
                return;
 
+       /* Invalidate all SLBs */
+       slb_flush_all_realmode();
+
        /*
         * This probably shouldn't happen, but it may be possible it's
         * called in early boot before SLB shadows are allocated.