--- /dev/null
+From bac7e6ecf60933b68af910eb4c83a775a8b20b19 Mon Sep 17 00:00:00 2001
+From: Linus Walleij <linus.walleij@linaro.org>
+Date: Tue, 6 Sep 2011 07:45:46 +0100
+Subject: ARM: 7080/1: l2x0: make sure I&D are not locked down on init
+
+From: Linus Walleij <linus.walleij@linaro.org>
+
+commit bac7e6ecf60933b68af910eb4c83a775a8b20b19 upstream.
+
+Fighting unfixed U-Boots and other beasts that may the cache in
+a locked-down state when starting the kernel, we make sure to
+disable all cache lock-down when initializing the l2x0 so we
+are in a known state.
+
+Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
+Reported-by: Jan Rinze <janrinze@gmail.com>
+Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
+Cc: Rabin Vincent <rabin.vincent@stericsson.com>
+Cc: Adrian Bunk <adrian.bunk@movial.com>
+Cc: Rob Herring <robherring2@gmail.com>
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Tested-by: Robert Marklund <robert.marklund@stericsson.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/include/asm/hardware/cache-l2x0.h | 9 +++++++--
+ arch/arm/mm/cache-l2x0.c | 21 +++++++++++++++++++++
+ 2 files changed, 28 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/include/asm/hardware/cache-l2x0.h
++++ b/arch/arm/include/asm/hardware/cache-l2x0.h
+@@ -45,8 +45,13 @@
+ #define L2X0_CLEAN_INV_LINE_PA 0x7F0
+ #define L2X0_CLEAN_INV_LINE_IDX 0x7F8
+ #define L2X0_CLEAN_INV_WAY 0x7FC
+-#define L2X0_LOCKDOWN_WAY_D 0x900
+-#define L2X0_LOCKDOWN_WAY_I 0x904
++/*
++ * The lockdown registers repeat 8 times for L310, the L210 has only one
++ * D and one I lockdown register at 0x0900 and 0x0904.
++ */
++#define L2X0_LOCKDOWN_WAY_D_BASE 0x900
++#define L2X0_LOCKDOWN_WAY_I_BASE 0x904
++#define L2X0_LOCKDOWN_STRIDE 0x08
+ #define L2X0_TEST_OPERATION 0xF00
+ #define L2X0_LINE_DATA 0xF10
+ #define L2X0_LINE_TAG 0xF30
+--- a/arch/arm/mm/cache-l2x0.c
++++ b/arch/arm/mm/cache-l2x0.c
+@@ -277,6 +277,25 @@ static void l2x0_disable(void)
+ spin_unlock_irqrestore(&l2x0_lock, flags);
+ }
+
++static void __init l2x0_unlock(__u32 cache_id)
++{
++ int lockregs;
++ int i;
++
++ if (cache_id == L2X0_CACHE_ID_PART_L310)
++ lockregs = 8;
++ else
++ /* L210 and unknown types */
++ lockregs = 1;
++
++ for (i = 0; i < lockregs; i++) {
++ writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_D_BASE +
++ i * L2X0_LOCKDOWN_STRIDE);
++ writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_I_BASE +
++ i * L2X0_LOCKDOWN_STRIDE);
++ }
++}
++
+ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
+ {
+ __u32 aux;
+@@ -328,6 +347,8 @@ void __init l2x0_init(void __iomem *base
+ * accessing the below registers will fault.
+ */
+ if (!(readl_relaxed(l2x0_base + L2X0_CTRL) & 1)) {
++ /* Make sure that I&D is not locked down when starting */
++ l2x0_unlock(cache_id);
+
+ /* l2x0 controller is disabled */
+ writel_relaxed(aux, l2x0_base + L2X0_AUX_CTRL);
--- /dev/null
+From 3c0b9de6d37a481673e81001c57ca0e410c72346 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Sat, 27 Apr 2013 13:25:38 -0700
+Subject: vm: add no-mmu vm_iomap_memory() stub
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 3c0b9de6d37a481673e81001c57ca0e410c72346 upstream.
+
+I think we could just move the full vm_iomap_memory() function into
+util.h or similar, but I didn't get any reply from anybody actually
+using nommu even to this trivial patch, so I'm not going to touch it any
+more than required.
+
+Here's the fairly minimal stub to make the nommu case at least
+potentially work. It doesn't seem like anybody cares, though.
+
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/nommu.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/mm/nommu.c
++++ b/mm/nommu.c
+@@ -1826,6 +1826,16 @@ int remap_pfn_range(struct vm_area_struc
+ }
+ EXPORT_SYMBOL(remap_pfn_range);
+
++int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len)
++{
++ unsigned long pfn = start >> PAGE_SHIFT;
++ unsigned long vm_len = vma->vm_end - vma->vm_start;
++
++ pfn += vma->vm_pgoff;
++ return io_remap_pfn_range(vma, vma->vm_start, pfn, vm_len, vma->vm_page_prot);
++}
++EXPORT_SYMBOL(vm_iomap_memory);
++
+ int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
+ unsigned long pgoff)
+ {