aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/am3517.dtsi5
-rw-r--r--arch/arm/mach-omap2/omap-smp.c41
2 files changed, 46 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/am3517.dtsi b/arch/arm/boot/dts/am3517.dtsi
index 4b6062b631b1..23ea381d363f 100644
--- a/arch/arm/boot/dts/am3517.dtsi
+++ b/arch/arm/boot/dts/am3517.dtsi
@@ -91,6 +91,11 @@
91 }; 91 };
92}; 92};
93 93
94/* Table Table 5-79 of the TRM shows 480ab000 is reserved */
95&usb_otg_hs {
96 status = "disabled";
97};
98
94&iva { 99&iva {
95 status = "disabled"; 100 status = "disabled";
96}; 101};
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
index 69df3620eca5..1c73694c871a 100644
--- a/arch/arm/mach-omap2/omap-smp.c
+++ b/arch/arm/mach-omap2/omap-smp.c
@@ -109,6 +109,45 @@ void omap5_erratum_workaround_801819(void)
109static inline void omap5_erratum_workaround_801819(void) { } 109static inline void omap5_erratum_workaround_801819(void) { }
110#endif 110#endif
111 111
112#ifdef CONFIG_HARDEN_BRANCH_PREDICTOR
113/*
114 * Configure ACR and enable ACTLR[0] (Enable invalidates of BTB with
115 * ICIALLU) to activate the workaround for secondary Core.
116 * NOTE: it is assumed that the primary core's configuration is done
117 * by the boot loader (kernel will detect a misconfiguration and complain
118 * if this is not done).
119 *
120 * In General Purpose(GP) devices, ACR bit settings can only be done
121 * by ROM code in "secure world" using the smc call and there is no
122 * option to update the "firmware" on such devices. This also works for
123 * High security(HS) devices, as a backup option in case the
124 * "update" is not done in the "security firmware".
125 */
126static void omap5_secondary_harden_predictor(void)
127{
128 u32 acr, acr_mask;
129
130 asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr));
131
132 /*
133 * ACTLR[0] (Enable invalidates of BTB with ICIALLU)
134 */
135 acr_mask = BIT(0);
136
137 /* Do we already have it done.. if yes, skip expensive smc */
138 if ((acr & acr_mask) == acr_mask)
139 return;
140
141 acr |= acr_mask;
142 omap_smc1(OMAP5_DRA7_MON_SET_ACR_INDEX, acr);
143
144 pr_debug("%s: ARM ACR setup for CVE_2017_5715 applied on CPU%d\n",
145 __func__, smp_processor_id());
146}
147#else
148static inline void omap5_secondary_harden_predictor(void) { }
149#endif
150
112static void omap4_secondary_init(unsigned int cpu) 151static void omap4_secondary_init(unsigned int cpu)
113{ 152{
114 /* 153 /*
@@ -131,6 +170,8 @@ static void omap4_secondary_init(unsigned int cpu)
131 set_cntfreq(); 170 set_cntfreq();
132 /* Configure ACR to disable streaming WA for 801819 */ 171 /* Configure ACR to disable streaming WA for 801819 */
133 omap5_erratum_workaround_801819(); 172 omap5_erratum_workaround_801819();
173 /* Enable ACR to allow for ICUALLU workaround */
174 omap5_secondary_harden_predictor();
134 } 175 }
135 176
136 /* 177 /*