ARM: decompressor: avoid speculative prefetch from non-RAM areas
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 10 May 2012 08:48:34 +0000 (09:48 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 10 May 2012 08:48:34 +0000 (09:48 +0100)
commit1fdc08abfa26f30fcef0ce1333e9ac6f80350f30
treed54c5778e0a74dbea37904ac9106604a22985c36
parentbd0493eaaf5c7a1ea00786d46cc2f4af44e76f28
ARM: decompressor: avoid speculative prefetch from non-RAM areas

We setup identity MMU mappings across the entire 4GB of space, which
are permissionless because the domain is set to manager.

This unfortunately allows ARMv6 and later CPUs to speculatively
prefetch from the entire address space, which can cause undesirable
side effects if those regions contain devices.

As we setup the mappings with read/write permission, we can switch
the domain to client mode, and then use the XN bit for ARMv6 and
above to control speculative prefetch to non-RAM areas.

Reported-by: R Sricharan <r.sricharan@ti.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/boot/compressed/head.S