OSDN Git Service

powerpc/pseries: Use the security flags in pseries_setup_rfi_flush()
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 27 Mar 2018 12:01:51 +0000 (23:01 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 27 Mar 2018 12:44:54 +0000 (23:44 +1100)
Now that we have the security flags we can simplify the code in
pseries_setup_rfi_flush() because the security flags have pessimistic
defaults.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/pseries/setup.c

index fb84c1d..1f12235 100644 (file)
@@ -501,30 +501,27 @@ void pseries_setup_rfi_flush(void)
        bool enable;
        long rc;
 
-       /* Enable by default */
-       enable = true;
-       types = L1D_FLUSH_FALLBACK;
-
        rc = plpar_get_cpu_characteristics(&result);
-       if (rc == H_SUCCESS) {
+       if (rc == H_SUCCESS)
                init_cpu_char_feature_flags(&result);
 
-               if (result.character & H_CPU_CHAR_L1D_FLUSH_TRIG2)
-                       types |= L1D_FLUSH_MTTRIG;
-               if (result.character & H_CPU_CHAR_L1D_FLUSH_ORI30)
-                       types |= L1D_FLUSH_ORI;
-
-               if ((!(result.behaviour & H_CPU_BEHAV_L1D_FLUSH_PR)) ||
-                   (!(result.behaviour & H_CPU_BEHAV_FAVOUR_SECURITY)))
-                       enable = false;
-       }
-
        /*
         * We're the guest so this doesn't apply to us, clear it to simplify
         * handling of it elsewhere.
         */
        security_ftr_clear(SEC_FTR_L1D_FLUSH_HV);
 
+       types = L1D_FLUSH_FALLBACK;
+
+       if (security_ftr_enabled(SEC_FTR_L1D_FLUSH_TRIG2))
+               types |= L1D_FLUSH_MTTRIG;
+
+       if (security_ftr_enabled(SEC_FTR_L1D_FLUSH_ORI30))
+               types |= L1D_FLUSH_ORI;
+
+       enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && \
+                security_ftr_enabled(SEC_FTR_L1D_FLUSH_PR);
+
        setup_rfi_flush(types, enable);
 }