linux/arch/arm
Will Deacon b6ccb9803e ARM: 7954/1: mm: remove remaining domain support from ARMv6
CPU_32v6 currently selects CPU_USE_DOMAINS if CPU_V6 and MMU. This is
because ARM 1136 r0pX CPUs lack the v6k extensions, and therefore do
not have hardware thread registers. The lack of these registers requires
the kernel to update the vectors page at each context switch in order to
write a new TLS pointer. This write must be done via the userspace
mapping, since aliasing caches can lead to expensive flushing when using
kmap. Finally, this requires the vectors page to be mapped r/w for
kernel and r/o for user, which has implications for things like put_user
which must trigger CoW appropriately when targetting user pages.

The upshot of all this is that a v6/v7 kernel makes use of domains to
segregate kernel and user memory accesses. This has the nasty
side-effect of making device mappings executable, which has been
observed to cause subtle bugs on recent cores (e.g. Cortex-A15
performing a speculative instruction fetch from the GIC and acking an
interrupt in the process).

This patch solves this problem by removing the remaining domain support
from ARMv6. A new memory type is added specifically for the vectors page
which allows that page (and only that page) to be mapped as user r/o,
kernel r/w. All other user r/o pages are mapped also as kernel r/o.
Patch co-developed with Russell King.

Cc: <stable@vger.kernel.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-02-10 11:48:13 +00:00
..
boot ARM: dts: bcm28155-ap: Fix Card Detection GPIO 2014-01-31 15:11:22 -08:00
common ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
configs ARM: multi_v7_defconfig: remove redundant entries and re-enable TI_EDMA 2014-01-31 21:04:33 -08:00
crypto CRYPTO: Fix more AES build errors 2014-01-05 13:59:56 +00:00
firmware ARM: add basic support for Trusted Foundations 2013-12-13 12:50:30 -07:00
include ARM: 7954/1: mm: remove remaining domain support from ARMv6 2014-02-10 11:48:13 +00:00
kernel ARM: 7948/1: hw_breakpoint: Add ARMv8 support 2014-02-10 11:48:05 +00:00
kvm First round of KVM updates for 3.14; PPC parts will come next week. 2014-01-22 21:40:43 -08:00
lib ARM: 7877/1: use built-in byte swap function 2013-12-29 12:32:45 +00:00
mach-at91 ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-bcm ARM: pinctrl: Add Broadcom Capri pinctrl driver 2014-01-16 14:25:38 +01:00
mach-bcm2835 ARM: bcm2835: Fix grammar in help message 2014-01-02 12:07:52 -08:00
mach-berlin ARM: add initial support for Marvell Berlin SoCs 2013-12-13 16:31:07 +01:00
mach-clps711x ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-cns3xxx
mach-davinci ARM: driver updates for 3.14 2014-01-23 18:49:36 -08:00
mach-dove
mach-ebsa110
mach-efm32 ARM: new platform for Energy Micro's EFM32 Cortex-M3 SoCs 2013-12-16 17:51:33 +01:00
mach-ep93xx
mach-exynos ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
mach-footbridge ARM: 7945/1: footbridge: Switch to sched_clock_register() 2014-02-10 11:48:03 +00:00
mach-gemini
mach-highbank Merge branches 'amba', 'fixes', 'kees', 'misc' and 'unstable/sa11x0' into for-next 2014-01-21 21:26:33 +00:00
mach-hisi ARM: hisi: don't select SMP 2014-01-31 14:58:55 -08:00
mach-imx Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-01-29 18:20:41 -08:00
mach-integrator ARM: integrator: restore static map on the CP 2014-01-31 14:58:52 -08:00
mach-iop13xx
mach-iop32x ARM: iop32x: fix power off handling for the EM7210 board 2014-01-31 14:58:53 -08:00
mach-iop33x
mach-ixp4xx ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-keystone ARM: keystone: config: fix build warning when CONFIG_DMADEVICES is not set 2014-01-31 15:03:53 -08:00
mach-kirkwood mvebu fixes for v3.13 (incremental #2) 2014-01-31 14:59:28 -08:00
mach-ks8695
mach-lpc32xx
mach-mmp ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-moxart ARM: moxart: add MOXA ART SoC platform files 2013-12-22 11:57:38 -08:00
mach-msm ARM: driver updates for 3.14 2014-01-23 18:49:36 -08:00
mach-mv78xx0
mach-mvebu mvebu fixes for v3.13 (incremental #2) 2014-01-31 14:59:28 -08:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1 ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-omap2 ARM: SoC fixes for 3.14-rc1 2014-02-02 11:11:06 -08:00
mach-orion5x
mach-picoxcell
mach-prima2 ARM: clean up cache handling in platform code 2013-12-11 16:24:34 -08:00
mach-pxa ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-realview
mach-rockchip
mach-rpc
mach-s3c24xx ARM: SoC cleanups for 3.14 2014-01-23 18:36:55 -08:00
mach-s3c64xx ARM: SoC cleanups for 3.14 2014-01-23 18:36:55 -08:00
mach-s5p64x0
mach-s5pc100
mach-s5pv210
mach-sa1100 ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
mach-shmobile ARM: SoC board updates for 3.14 2014-01-23 18:48:28 -08:00
mach-socfpga
mach-spear
mach-sti ARM: clean up cache handling in platform code 2013-12-11 16:24:34 -08:00
mach-sunxi ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-tegra ARM: driver updates for 3.14 2014-01-23 18:49:36 -08:00
mach-u300 ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
mach-ux500 ARM: SoC DT updates for 3.14 2014-01-23 18:45:38 -08:00
mach-versatile ARM: versatile: move GPIO2 and GPIO3 to core 2013-12-20 18:22:47 +01:00
mach-vexpress
mach-virt
mach-vt8500
mach-w90x900
mach-zynq
mm ARM: 7954/1: mm: remove remaining domain support from ARMv6 2014-02-10 11:48:13 +00:00
net bpf: do not use reciprocal divide 2014-01-15 17:02:08 -08:00
nwfpe
oprofile
plat-iop
plat-omap Merge branch 'efm32/soc' into next/soc 2013-12-20 08:59:30 -08:00
plat-orion mvebu fixes for v3.13 (incremental #2) 2014-01-31 14:59:28 -08:00
plat-pxa ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
plat-samsung MTD updates for 3.14: 2014-01-28 18:56:37 -08:00
plat-versatile ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
tools
vfp
xen xen/gnttab: Use phys_addr_t to describe the grant frame base address 2014-01-30 12:56:34 +00:00
Kconfig Bug-fixes: 2014-01-31 08:38:18 -08:00
Kconfig-nommu
Kconfig.debug ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
Makefile Merge branches 'fixes' and 'misc' into for-linus 2014-01-28 21:38:48 +00:00