linux/arch/arm/mm
Lennert Buytenhek 99c6dc117d [ARM] Feroceon: L2 cache support
This patch adds support for the unified Feroceon L2 cache controller
as found in e.g. the Marvell Kirkwood and Marvell Discovery Duo
families of ARM SoCs.

Note that:

- Page table walks are outer uncacheable on Kirkwood and Discovery
  Duo, since the ARMv5 spec provides no way to indicate outer
  cacheability of page table walks (specifying it in TTBR[4:3] is
  an ARMv6+ feature).

  This requires adding L2 cache clean instructions to
  proc-feroceon.S (dcache_clean_area(), set_pte()) as well as to
  tlbflush.h ({flush,clean}_pmd_entry()).  The latter case is handled
  by defining a new TLB type (TLB_FEROCEON) which is almost identical
  to the v4wbi one but provides a TLB_L2CLEAN_FR flag.

- The Feroceon L2 cache controller supports L2 range (i.e. 'clean L2
  range by MVA' and 'invalidate L2 range by MVA') operations, and this
  patch uses those range operations for all Linux outer cache
  operations, as they are faster than the regular per-line operations.

  L2 range operations are not interruptible on this hardware, which
  avoids potential livelock issues, but can be bad for interrupt
  latency, so there is a compile-time tunable (MAX_RANGE_SIZE) which
  allows you to select the maximum range size to operate on at once.
  (Valid range is between one cache line and one 4KiB page, and must
  be a multiple of the line size.)

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-22 22:45:04 +02:00
..
abort-ev4.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev4t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5tj.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev6.S [ARM] CONFIG_CPU_MPCORE -> CONFIG_CPU_32v6K 2006-02-22 21:13:28 +00:00
abort-ev7.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
abort-lv4t.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
abort-macro.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-nommu.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
alignment.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
cache-feroceon-l2.c [ARM] Feroceon: L2 cache support 2008-06-22 22:45:04 +02:00
cache-l2x0.c [ARM] 4568/1: fix l2x0 cache invalidate handling of unaligned addresses 2007-09-17 14:56:39 +01:00
cache-v3.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cache-v4.S [ARM] nommu: manage the CP15 things 2006-09-27 17:34:30 +01:00
cache-v4wb.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cache-v4wt.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cache-v6.S [ARM] 3356/1: Workaround for the ARM1136 I-cache invalidation problem 2006-03-10 22:26:47 +00:00
cache-v7.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
consistent.c [ARM] remove useless setting of VM_RESERVED 2007-11-11 10:55:25 +00:00
context.c Merge branches 'armv7', 'at91', 'misc' and 'omap' into devel 2007-05-09 10:41:28 +01:00
copypage-feroceon.S [ARM] Feroceon: Feroceon-specific WA-cache compatible {copy,clear}_user_page() 2008-04-28 16:06:51 -04:00
copypage-v3.S [ARM] Remove LOADREGS macro 2006-06-25 11:23:45 +01:00
copypage-v4mc.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
copypage-v4wb.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
copypage-v4wt.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
copypage-v6.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
copypage-xsc3.S [ARM] 3377/2: add support for intel xsc3 core 2006-03-28 21:00:40 +01:00
copypage-xscale.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
discontig.c [ARM] Cleanup ARM includes 2006-01-03 17:39:34 +00:00
extable.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fault-armv.c [ARM] 4191/1: Remove redundant __flush_dcache_page() function prototype 2007-02-16 12:57:55 +00:00
fault.c ARM kprobes: prevent some functions involved with kprobes from being probed 2008-01-26 15:25:17 +00:00
fault.h [ARM] do_bad_area() always takes current and current->active_mm 2006-09-27 16:13:48 +01:00
flush.c [ARM] Resolve fuse and direct-IO failures due to missing cache flushes 2007-01-08 19:49:58 +00:00
init.c [ARM] remove redundant display of free swap space in show_mem() 2008-04-19 11:28:10 +01:00
iomap.c iomap: fix 64 bits resources on 32 bits 2008-04-29 08:06:02 -07:00
ioremap.c add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
Kconfig [ARM] Feroceon: L2 cache support 2008-06-22 22:45:04 +02:00
Makefile [ARM] Feroceon: L2 cache support 2008-06-22 22:45:04 +02:00
mm.h [ARM] mm 6: allow mem_types table to specify extended pte attributes 2007-04-21 20:36:02 +01:00
mmap.c [ARM] 4839/1: fixes kernel Oops in /dev/mem device driver for memory map with PHYS_OFF 2008-02-29 22:47:20 +00:00
mmu.c arm: Export empty_zero_page for ZERO_PAGE usage in modules. 2008-04-29 08:11:12 -04:00
nommu.c Introduce flags for reserve_bootmem() 2008-02-07 08:42:25 -08:00
pgd.c [ARM] Fix freeing of page tables for ARM in free_pgd_slow 2008-03-01 20:23:57 +00:00
proc-arm6_7.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm7tdmi.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm9tdmi.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm720.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm740.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm920.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm922.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm925.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm926.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm940.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm946.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm1020.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1020e.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1022.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1026.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-feroceon.S [ARM] Feroceon: L2 cache support 2008-06-22 22:45:04 +02:00
proc-macros.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
proc-sa110.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-sa1100.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-syms.c [ARM] 4502/1: nommu: Do not export the copy/clear user page functions 2007-07-20 21:29:51 +01:00
proc-v6.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-v7.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-xsc3.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-xscale.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
tlb-v3.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wb.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wbi.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v6.S [ARM] 4129/1: Add barriers after the TLB operations 2007-02-08 14:49:27 +00:00
tlb-v7.S [ARM] 4394/1: ARMv7: Add the TLB range operations 2007-05-30 14:32:07 +01:00