OSDN Git Service

Merge tag 'v4.9.95' into android-4.9.95
[android-x86/kernel.git] / arch / arm64 / kernel / cpufeature.c
index 08344c9..c8f686b 100644 (file)
@@ -96,7 +96,8 @@ static const struct arm64_ftr_bits ftr_id_aa64isar0[] = {
 
 static const struct arm64_ftr_bits ftr_id_aa64pfr0[] = {
        ARM64_FTR_BITS(FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_CSV3_SHIFT, 4, 0),
-       ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 32, 28, 0),
+       ARM64_FTR_BITS(FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR0_CSV2_SHIFT, 4, 0),
+       ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 32, 24, 0),
        ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 28, 4, 0),
        ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, ID_AA64PFR0_GIC_SHIFT, 4, 0),
        S_ARM64_FTR_BITS(FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR0_ASIMD_SHIFT, 4, ID_AA64PFR0_ASIMD_NI),
@@ -1026,9 +1027,8 @@ static bool __this_cpu_has_cap(const struct arm64_cpu_capabilities *cap_array,
        if (WARN_ON(preemptible()))
                return false;
 
-       for (caps = cap_array; caps->desc; caps++)
+       for (caps = cap_array; caps->matches; caps++)
                if (caps->capability == cap &&
-                   caps->matches &&
                    caps->matches(caps, SCOPE_LOCAL_CPU))
                        return true;
        return false;
@@ -1061,7 +1061,7 @@ void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps)
                         * uses an IPI, giving us a PSTATE that disappears when
                         * we return.
                         */
-                       stop_machine(caps->enable, NULL, cpu_online_mask);
+                       stop_machine(caps->enable, (void *)caps, cpu_online_mask);
 }
 
 /*
@@ -1118,7 +1118,7 @@ verify_local_cpu_features(const struct arm64_cpu_capabilities *caps_list)
                        cpu_die_early();
                }
                if (caps->enable)
-                       caps->enable(NULL);
+                       caps->enable((void *)caps);
        }
 }