Merge tag '9p-for-4.20' of git://github.com/martinetd/linux
[sfrench/cifs-2.6.git] / arch / powerpc / kernel / setup_64.c
index 6a501b25dd85f9290c86c30fcdda409be1f2002d..faf00222b324c3183f651bb4cbd47c8de8afd42e 100644 (file)
@@ -243,13 +243,19 @@ static void cpu_ready_for_interrupts(void)
        }
 
        /*
-        * Fixup HFSCR:TM based on CPU features. The bit is set by our
-        * early asm init because at that point we haven't updated our
-        * CPU features from firmware and device-tree. Here we have,
-        * so let's do it.
+        * Set HFSCR:TM based on CPU features:
+        * In the special case of TM no suspend (P9N DD2.1), Linux is
+        * told TM is off via the dt-ftrs but told to (partially) use
+        * it via OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED. So HFSCR[TM]
+        * will be off from dt-ftrs but we need to turn it on for the
+        * no suspend case.
         */
-       if (cpu_has_feature(CPU_FTR_HVMODE) && !cpu_has_feature(CPU_FTR_TM_COMP))
-               mtspr(SPRN_HFSCR, mfspr(SPRN_HFSCR) & ~HFSCR_TM);
+       if (cpu_has_feature(CPU_FTR_HVMODE)) {
+               if (cpu_has_feature(CPU_FTR_TM_COMP))
+                       mtspr(SPRN_HFSCR, mfspr(SPRN_HFSCR) | HFSCR_TM);
+               else
+                       mtspr(SPRN_HFSCR, mfspr(SPRN_HFSCR) & ~HFSCR_TM);
+       }
 
        /* Set IR and DR in PACA MSR */
        get_paca()->kernel_msr = MSR_KERNEL;