OpenCloudOS-Kernel/arch/arm/mm
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
..
Kconfig Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2011-01-14 13:13:07 -08:00
Makefile ARM: pgtable: collect up identity mapping functions 2010-12-22 11:05:33 +00:00
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S Add core support for ARMv6/v7 big-endian 2009-05-30 14:00:18 +01:00
abort-ev7.S arm: mm: qsd8x50: Fix incorrect permission faults 2010-05-03 11:15:05 -07:00
abort-lv4t.S
abort-macro.S
abort-nommu.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00
alignment.c ARM: 6401/1: plug a race in the alignment trap handler 2010-09-23 15:17:04 +01:00
cache-fa.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
cache-feroceon-l2.c ARM: fix cache-feroceon-l2 after stack based kmap_atomic() 2010-12-19 12:57:16 -05:00
cache-l2x0.c ARM: l2x0: Optimise the range based operations 2010-10-26 11:40:05 +05:30
cache-tauros2.c ARM: Add Tauros2 L2 cache controller support 2009-11-27 15:43:21 -05:00
cache-v3.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
cache-v4.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
cache-v4wb.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
cache-v4wt.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
cache-v6.S ARM: 6535/1: V6 MPCore v6_dma_inv_range and v6_dma_flush_range RWFO fix 2010-12-14 22:23:34 +00:00
cache-v7.S ARM: 6528/1: Use CTR for the I-cache line size on ARMv7 2010-12-12 23:25:58 +00:00
cache-xsc3l2.c ARM: fix cache-xsc3l2 after stack based kmap_atomic() 2010-12-19 12:57:08 -05:00
context.c ARM: 5905/1: ARM: Global ASID allocation on SMP 2010-02-15 21:39:51 +00:00
copypage-fa.c ARM: Gemini: fix compiler error in copypage-fa.c 2010-04-27 12:45:10 +02:00
copypage-feroceon.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v3.c ARM: Pass VMA to copy_user_highpage() implementations 2009-10-05 15:17:45 +01:00
copypage-v4mc.c ARM: 6379/1: Assume new page cache pages have dirty D-cache 2010-09-19 12:17:43 +01:00
copypage-v4wb.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v4wt.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v6.c ARM: 6379/1: Assume new page cache pages have dirty D-cache 2010-09-19 12:17:43 +01:00
copypage-xsc3.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-xscale.c ARM: 6379/1: Assume new page cache pages have dirty D-cache 2010-09-19 12:17:43 +01:00
dma-mapping.c ARM: 6622/1: fix dma_unmap_sg() documentation 2011-01-12 19:42:13 +00:00
extable.c [ARM] Convert asm/uaccess.h to linux/uaccess.h 2008-09-06 11:35:55 +01:00
fault-armv.c ARM: pgtable: introduce pteval_t to represent a pte value 2010-11-26 20:45:47 +00:00
fault.c ARM: pgtable: switch order of Linux vs hardware page tables 2010-12-22 11:05:32 +00:00
fault.h
flush.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
highmem.c ARM: get rid of kmap_high_l1_vipt() 2010-12-19 12:56:46 -05:00
idmap.c ARM: pgtable: use conventional page table code for identity mappings 2010-12-22 11:05:34 +00:00
init.c ARM: initrd: disable initrd if passed address overlaps reserved region 2011-01-31 10:53:41 +00:00
iomap.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
ioremap.c Revert "ARM: relax ioremap prohibition (309caa9) for -final and -stable" 2010-12-24 09:49:52 +00:00
mm.h ARM: pgtable: introduce pteval_t to represent a pte value 2010-11-26 20:45:47 +00:00
mmap.c ARM: implement CONFIG_STRICT_DEVMEM by disabling access to RAM via /dev/mem 2010-10-01 22:31:34 -04:00
mmu.c ARM: 6639/1: allow highmem on SMP platforms without h/w TLB ops broadcast 2011-02-23 17:24:17 +00:00
nommu.c ARM: Convert platform reservations to use LMB rather than bootmem 2010-07-27 08:48:23 +01:00
pabort-legacy.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pabort-v6.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pabort-v7.S ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() 2009-10-02 22:34:32 +01:00
pgd.c thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
proc-arm6_7.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-arm7tdmi.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-arm9tdmi.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-arm720.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-arm740.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-arm920.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm922.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm925.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm926.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm940.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm946.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm1020.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm1020e.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm1022.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-arm1026.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-fa526.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-feroceon.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-macros.S Merge branch 'pgt' (early part) into devel 2011-01-06 22:33:19 +00:00
proc-mohawk.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-sa110.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-sa1100.S ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type 2010-10-08 10:07:32 +01:00
proc-syms.c ARM: add size argument to __cpuc_flush_dcache_page 2009-12-14 14:53:22 +00:00
proc-v6.S Merge branch 'hotplug' into devel 2010-10-18 22:34:47 +01:00
proc-v7.S ARM: 6623/1: Thumb-2: Fix out-of-range offset for Thumb-2 in proc-v7.S 2011-01-14 09:00:30 +00:00
proc-xsc3.S ARM: 6466/1: implement flush_icache_all for the rest of the CPUs 2010-10-28 13:54:28 +01:00
proc-xscale.S ARM: pgtable: provide RDONLY page table bit rather than WRITE bit 2010-12-22 11:05:35 +00:00
tlb-fa.S ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
tlb-v3.S
tlb-v4.S
tlb-v4wb.S
tlb-v4wbi.S
tlb-v6.S arm: Use __INIT macro instead of .text.init. 2009-04-27 19:51:58 -07:00
tlb-v7.S ARM: Allow SMP kernels to boot on UP systems 2010-10-04 20:23:36 +01:00
vmregion.c ARM: DMA: top-down allocation in DMA coherent region 2011-02-23 17:24:11 +00:00
vmregion.h ARM: DMA coherent allocator: align remapped addresses 2010-07-27 10:43:48 +01:00