linux/arch/arm
Nicolas Pitre aaa50048f6 ARM: 6639/1: allow highmem on SMP platforms without h/w TLB ops broadcast
In commit e616c59140, highmem support was
deactivated for SMP platforms without hardware TLB ops broadcast because
usage of kmap_high_get() requires that IRQs be disabled when kmap_lock
is locked which is incompatible with the IPI mechanism used by the
software TLB ops broadcast invoked through flush_all_zero_pkmaps().

The reason for kmap_high_get() is to ensure that the currently kmap'd
page usage count does not decrease to zero while we're using its
existing virtual mapping in an atomic context.  With a VIVT cache this
is essential to do due to cache coherency issues, but with a VIPT cache
this is only an optimization so not to pay the price of establishing a
second mapping if an existing one can be used.  However, on VIPT
platforms without hardware TLB maintenance we can give up on that
optimization in order to be able to use highmem.

From ARMv7 onwards the TLB ops are broadcasted in hardware, so let's
disable ARCH_NEEDS_KMAP_HIGH_GET only when CONFIG_SMP and
CONFIG_CPU_TLB_V6 are defined.

Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Tested-by: Saeed Bishara <saeed.bishara@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2011-02-23 17:24:17 +00:00
..
boot ARM: add 'uinstall' target for installing uboot kernels 2011-02-23 17:24:13 +00:00
common ARM: irq migration: update GIC migration code 2011-02-23 17:24:16 +00:00
configs kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
include/asm ARM: 6639/1: allow highmem on SMP platforms without h/w TLB ops broadcast 2011-02-23 17:24:17 +00:00
kernel ARM: irq migration: ensure migration is handled safely 2011-02-23 17:24:16 +00:00
lib ARM: udelay: prevent math rounding resulting in short udelays 2011-01-10 23:55:59 +00:00
mach-aaec2000 ARM: aaec2000: irq_data conversion. 2011-01-13 17:18:21 +01:00
mach-at91 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-bcmring Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-clps711x ARM: clps711x: irq_data conversion. 2011-01-13 17:18:24 +01:00
mach-cns3xxx Merge branch 'devel-stable' into devel 2011-01-06 22:33:32 +00:00
mach-davinci Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-dove ARM: dove: irq_data conversion. 2011-01-13 17:18:27 +01:00
mach-ebsa110 ARM: ebsa110: irq_data conversion. 2011-01-13 17:18:28 +01:00
mach-ep93xx ARM: 6636/1: ep93xx: default multiplexed gpio ports to gpio mode 2011-01-25 21:18:04 +00:00
mach-footbridge ARM: footbridge: fix debug macros 2011-01-31 10:53:39 +00:00
mach-gemini Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-h720x Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-imx Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-integrator Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-iop13xx ARM: iop13xx: irq_data conversion. 2011-01-13 17:18:35 +01:00
mach-iop32x ARM: iop32x: irq_data conversion. 2011-01-13 17:18:36 +01:00
mach-iop33x ARM: iop33x: irq_data conversion. 2011-01-13 17:18:37 +01:00
mach-ixp4xx ARM: ixp4xx: irq_data conversion. 2011-01-13 17:18:40 +01:00
mach-ixp23xx ARM: ixp23xx: irq_data conversion. 2011-01-13 17:18:39 +01:00
mach-ixp2000 ARM: ixp2000: irq_data conversion. 2011-01-13 17:18:38 +01:00
mach-kirkwood Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2011-01-13 10:32:54 -08:00
mach-ks8695 ARM: ks8695: irq_data conversion. 2011-01-13 17:18:41 +01:00
mach-l7200/include/mach
mach-lh7a40x ARM: lh7a40x: irq_data conversion. 2011-01-13 17:18:43 +01:00
mach-loki
mach-lpc32xx Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-mmp ARM: mmp: PXA910 drive strength FAST using wrong value 2011-01-15 04:29:20 -06:00
mach-msm Merge branch 'for-38-rc2' of git://codeaurora.org/quic/kernel/davidb/linux-msm 2011-01-20 16:30:22 -08:00
mach-mv78xx0 [ARM] mv78xx: wrong cpu1 window base register address 2010-11-29 10:42:05 -05:00
mach-mx3 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-mx5 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2011-01-14 12:12:42 +00:00
mach-mxc91231 Merge branch 'devel-stable' into devel 2011-01-06 22:33:32 +00:00
mach-mxs ARM mxs: clkdev related compile fixes 2011-01-14 10:19:27 +01:00
mach-netx ARM: netx: irq_data conversion. 2011-01-13 17:18:48 +01:00
mach-nomadik ARM: 6483/1: arm & sh: factorised duplicated clkdev.c 2010-11-26 10:51:04 +00:00
mach-ns9xxx ARM: ns9xxx: irq_data conversion. 2011-01-13 17:18:49 +01:00
mach-nuc93x ARM: nuc93x: irq_data conversion. 2011-01-13 17:18:50 +01:00
mach-omap1 omap1: Simplify use of omap_irq_flags 2011-01-27 15:52:16 -08:00
mach-omap2 arch/arm/mach-omap2/dma.c: Convert IS_ERR result to PTR_ERR 2011-01-27 16:25:35 -08:00
mach-orion5x Merge branch 'devel-stable' into devel 2011-01-06 22:33:32 +00:00
mach-pnx4008 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-pxa Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-realview ARM: realview: name configuration options after actual board names 2011-01-25 15:08:01 +00:00
mach-rpc ARM: rpc: irq_data conversion. 2011-01-13 17:18:57 +01:00
mach-s3c24a0/include/mach Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s3c64xx Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-s3c2400
mach-s3c2410 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-s3c2412 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2011-01-15 13:24:02 +00:00
mach-s3c2416 Merge branch 'next-s3c24xx' into for-next 2011-01-06 18:44:09 +09:00
mach-s3c2440 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-s3c2443 Merge branch 'next-s3c24xx' into for-next 2011-01-06 18:44:09 +09:00
mach-s5p64x0 ARM: S5P6450: Add missing virtual ASoC DMA device 2011-01-18 14:44:32 +09:00
mach-s5p6442 ARM: S5P6442: Enable I2S device to work on SMDK6442 2011-01-18 14:44:32 +09:00
mach-s5pc100 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-s5pv210 ARM: S5PV210: Add missing virtual ASoC DMA device 2011-01-18 14:45:33 +09:00
mach-s5pv310 ARM: S5PV310: Add missing virtual ASoC DMA device 2011-01-18 14:47:07 +09:00
mach-sa1100 Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
mach-shark ARM: shark: irq_data conversion. 2011-01-13 17:19:00 +01:00
mach-shmobile ARM: mach-shmobile: AG5EVM LCDC / MIPI-DSI platform data 2011-01-20 21:34:32 +09:00
mach-spear3xx tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
mach-spear6xx tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
mach-stmp37xx ARM: stmp37xx: irq_data conversion. 2011-01-13 17:19:02 +01:00
mach-stmp378x ARM: stmp378x: irq_data conversion. 2011-01-13 17:19:01 +01:00
mach-tcc8k ARM: tcc8k: irq_data conversion. 2011-01-13 17:19:03 +01:00
mach-tegra Merge branch 'for-linus' of git://android.git.kernel.org/kernel/tegra 2011-01-31 12:49:26 +10:00
mach-u300 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
mach-ux500 mach-ux500: Updated and connected ab8500 regulator board configuration 2011-01-12 14:33:03 +00:00
mach-versatile ARM: versatile: name configuration options after actual board names 2011-01-25 15:08:02 +00:00
mach-vexpress ARM: 6635/2: Configure reference clock for Versatile Express timers 2011-01-25 16:18:33 +00:00
mach-w90x900 ARM: w90x900: irq_data conversion. 2011-01-13 17:19:07 +01:00
mm ARM: 6639/1: allow highmem on SMP platforms without h/w TLB ops broadcast 2011-02-23 17:24:17 +00:00
nwfpe
oprofile
plat-iop Merge branch 'clksrc' into devel 2011-01-05 18:09:03 +00:00
plat-mxc Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
plat-nomadik Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2011-01-17 10:54:41 -08:00
plat-omap omap: DMA: clear interrupt status correctly 2011-01-19 14:41:21 -08:00
plat-orion ARM: plat-orion: irq_data conversion. 2011-01-13 17:19:12 +01:00
plat-pxa ARM: PXA SoCs: irq_data conversion. 2011-01-13 17:18:56 +01:00
plat-s3c24xx Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
plat-s5p ARM: S5P: Add Support System MMU 2011-01-13 13:35:31 +09:00
plat-samsung Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
plat-spear ARM: plat-spear: irq_data conversion. 2011-01-13 17:19:13 +01:00
plat-stmp3xxx ARM: plat-stmp3xxx: irq_data conversion. 2011-01-13 17:19:14 +01:00
plat-tcc
plat-versatile Merge branch 'clksrc' into devel 2011-01-05 18:09:03 +00:00
tools ARM: Update mach-types 2010-12-12 23:31:02 +00:00
vfp ARM: fix some sparse errors in generic ARM code 2011-02-23 17:24:12 +00:00
Kconfig Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
Kconfig-nommu
Kconfig.debug Merge branch 'misc' into devel 2011-01-06 22:32:52 +00:00
Makefile ARM: add 'uinstall' target for installing uboot kernels 2011-02-23 17:24:13 +00:00