diff options
Diffstat (limited to 'arch/arm/mm/proc-v7-bugs.c')
-rw-r--r-- | arch/arm/mm/proc-v7-bugs.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/arch/arm/mm/proc-v7-bugs.c b/arch/arm/mm/proc-v7-bugs.c index 5544b82a2e7a..9a07916af8dd 100644 --- a/arch/arm/mm/proc-v7-bugs.c +++ b/arch/arm/mm/proc-v7-bugs.c | |||
@@ -52,8 +52,6 @@ static void cpu_v7_spectre_init(void) | |||
52 | case ARM_CPU_PART_CORTEX_A17: | 52 | case ARM_CPU_PART_CORTEX_A17: |
53 | case ARM_CPU_PART_CORTEX_A73: | 53 | case ARM_CPU_PART_CORTEX_A73: |
54 | case ARM_CPU_PART_CORTEX_A75: | 54 | case ARM_CPU_PART_CORTEX_A75: |
55 | if (processor.switch_mm != cpu_v7_bpiall_switch_mm) | ||
56 | goto bl_error; | ||
57 | per_cpu(harden_branch_predictor_fn, cpu) = | 55 | per_cpu(harden_branch_predictor_fn, cpu) = |
58 | harden_branch_predictor_bpiall; | 56 | harden_branch_predictor_bpiall; |
59 | spectre_v2_method = "BPIALL"; | 57 | spectre_v2_method = "BPIALL"; |
@@ -61,8 +59,6 @@ static void cpu_v7_spectre_init(void) | |||
61 | 59 | ||
62 | case ARM_CPU_PART_CORTEX_A15: | 60 | case ARM_CPU_PART_CORTEX_A15: |
63 | case ARM_CPU_PART_BRAHMA_B15: | 61 | case ARM_CPU_PART_BRAHMA_B15: |
64 | if (processor.switch_mm != cpu_v7_iciallu_switch_mm) | ||
65 | goto bl_error; | ||
66 | per_cpu(harden_branch_predictor_fn, cpu) = | 62 | per_cpu(harden_branch_predictor_fn, cpu) = |
67 | harden_branch_predictor_iciallu; | 63 | harden_branch_predictor_iciallu; |
68 | spectre_v2_method = "ICIALLU"; | 64 | spectre_v2_method = "ICIALLU"; |
@@ -88,11 +84,9 @@ static void cpu_v7_spectre_init(void) | |||
88 | ARM_SMCCC_ARCH_WORKAROUND_1, &res); | 84 | ARM_SMCCC_ARCH_WORKAROUND_1, &res); |
89 | if ((int)res.a0 != 0) | 85 | if ((int)res.a0 != 0) |
90 | break; | 86 | break; |
91 | if (processor.switch_mm != cpu_v7_hvc_switch_mm && cpu) | ||
92 | goto bl_error; | ||
93 | per_cpu(harden_branch_predictor_fn, cpu) = | 87 | per_cpu(harden_branch_predictor_fn, cpu) = |
94 | call_hvc_arch_workaround_1; | 88 | call_hvc_arch_workaround_1; |
95 | processor.switch_mm = cpu_v7_hvc_switch_mm; | 89 | cpu_do_switch_mm = cpu_v7_hvc_switch_mm; |
96 | spectre_v2_method = "hypervisor"; | 90 | spectre_v2_method = "hypervisor"; |
97 | break; | 91 | break; |
98 | 92 | ||
@@ -101,11 +95,9 @@ static void cpu_v7_spectre_init(void) | |||
101 | ARM_SMCCC_ARCH_WORKAROUND_1, &res); | 95 | ARM_SMCCC_ARCH_WORKAROUND_1, &res); |
102 | if ((int)res.a0 != 0) | 96 | if ((int)res.a0 != 0) |
103 | break; | 97 | break; |
104 | if (processor.switch_mm != cpu_v7_smc_switch_mm && cpu) | ||
105 | goto bl_error; | ||
106 | per_cpu(harden_branch_predictor_fn, cpu) = | 98 | per_cpu(harden_branch_predictor_fn, cpu) = |
107 | call_smc_arch_workaround_1; | 99 | call_smc_arch_workaround_1; |
108 | processor.switch_mm = cpu_v7_smc_switch_mm; | 100 | cpu_do_switch_mm = cpu_v7_smc_switch_mm; |
109 | spectre_v2_method = "firmware"; | 101 | spectre_v2_method = "firmware"; |
110 | break; | 102 | break; |
111 | 103 | ||
@@ -119,11 +111,6 @@ static void cpu_v7_spectre_init(void) | |||
119 | if (spectre_v2_method) | 111 | if (spectre_v2_method) |
120 | pr_info("CPU%u: Spectre v2: using %s workaround\n", | 112 | pr_info("CPU%u: Spectre v2: using %s workaround\n", |
121 | smp_processor_id(), spectre_v2_method); | 113 | smp_processor_id(), spectre_v2_method); |
122 | return; | ||
123 | |||
124 | bl_error: | ||
125 | pr_err("CPU%u: Spectre v2: incorrect context switching function, system vulnerable\n", | ||
126 | cpu); | ||
127 | } | 114 | } |
128 | #else | 115 | #else |
129 | static void cpu_v7_spectre_init(void) | 116 | static void cpu_v7_spectre_init(void) |