|
@@ -28,9 +28,7 @@ is_affected_midr_range(const struct arm64_cpu_capabilities *entry, int scope)
|
|
|
u32 midr = read_cpuid_id(), revidr;
|
|
|
|
|
|
WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible());
|
|
|
- if (!MIDR_IS_CPU_MODEL_RANGE(midr, entry->midr_model,
|
|
|
- entry->midr_range_min,
|
|
|
- entry->midr_range_max))
|
|
|
+ if (!is_midr_in_range(midr, &entry->midr_range))
|
|
|
return false;
|
|
|
|
|
|
midr &= MIDR_REVISION_MASK | MIDR_VARIANT_MASK;
|
|
@@ -53,7 +51,7 @@ is_kryo_midr(const struct arm64_cpu_capabilities *entry, int scope)
|
|
|
model &= MIDR_IMPLEMENTOR_MASK | (0xf00 << MIDR_PARTNUM_SHIFT) |
|
|
|
MIDR_ARCHITECTURE_MASK;
|
|
|
|
|
|
- return model == entry->midr_model;
|
|
|
+ return model == entry->midr_range.model;
|
|
|
}
|
|
|
|
|
|
static bool
|
|
@@ -239,15 +237,11 @@ qcom_enable_link_stack_sanitization(const struct arm64_cpu_capabilities *entry)
|
|
|
|
|
|
#define CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max) \
|
|
|
.matches = is_affected_midr_range, \
|
|
|
- .midr_model = model, \
|
|
|
- .midr_range_min = MIDR_CPU_VAR_REV(v_min, r_min), \
|
|
|
- .midr_range_max = MIDR_CPU_VAR_REV(v_max, r_max)
|
|
|
+ .midr_range = MIDR_RANGE(model, v_min, r_min, v_max, r_max)
|
|
|
|
|
|
#define CAP_MIDR_ALL_VERSIONS(model) \
|
|
|
.matches = is_affected_midr_range, \
|
|
|
- .midr_model = model, \
|
|
|
- .midr_range_min = MIDR_CPU_VAR_REV(0, 0), \
|
|
|
- .midr_range_max = (MIDR_VARIANT_MASK | MIDR_REVISION_MASK)
|
|
|
+ .midr_range = MIDR_ALL_VERSIONS(model)
|
|
|
|
|
|
#define MIDR_FIXED(rev, revidr_mask) \
|
|
|
.fixed_revs = (struct arm64_midr_revidr[]){{ (rev), (revidr_mask) }, {}}
|
|
@@ -390,7 +384,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
|
|
|
.desc = "Qualcomm Technologies Kryo erratum 1003",
|
|
|
.capability = ARM64_WORKAROUND_QCOM_FALKOR_E1003,
|
|
|
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
|
|
|
- .midr_model = MIDR_QCOM_KRYO,
|
|
|
+ .midr_range.model = MIDR_QCOM_KRYO,
|
|
|
.matches = is_kryo_midr,
|
|
|
},
|
|
|
#endif
|