Thread (32 messages) 32 messages, 8 authors, 2018-01-31
STALE3046d

[PATCH v3 4/6] arm: Add icache invalidation on switch_mm for Cortex-A15

From: f.fainelli@gmail.com (Florian Fainelli)
Date: 2018-01-29 18:05:38

On 01/28/2018 03:55 AM, Marc Zyngier wrote:
On Sat, 27 Jan 2018 14:23:57 -0800
Florian Fainelli [off-list ref] wrote:
quoted
On 01/25/2018 07:21 AM, Marc Zyngier wrote:
quoted
In order to avoid aliasing attacks against the branch predictor,
Cortex-A15 require to invalidate the BTB when switching
from one user context to another. The only way to do so on this
CPU is to perform an ICIALLU, having set ACTLR[0] to 1 from secure
mode.  
Even though this is a platform design mistake, let's say your Linux
kernel boots in secure supervisor mode, we could have code
that tries to set ACTLR[0] as early as possible, since the writes are
ignored if executing from non-secure mode. If Linux is booted normally
either PL1 or PL2 non-secure we could still check ACTLR[0].

My concern is that without doing this, we may have a hard time catching
improper firmware as well as having bogus bug reports. This is
completely RFC though since:

- I could not quite figure out yet why update ca15_actlr_status from
assembly is not reflected in the C code despite using PC relative loads
One potential problem is that you're writing this with the MMU off, and
reading it with the MMU on. Unless you've added CMOs to make this
visible, it will not be reliable.
I did not, let's change that.
Also, I'm not sure how this works with MCPM.
I just started looking at MCPM, do you know roughly at what point do
non-MCPM and MCPM entry points converge? If we moved the check for
ACTLR[0] there, would that be too late.
quoted
- this is done in __ca15mp_setup and __b15mp_setup because we know by
then that we have either of these two CPUs but we could presumably move
this check under a Kconfig option and earlier where all erratas are checked
Thanks,

	M.

-- 
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help