diff options
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/alignment.c | 6 | ||||
-rw-r--r-- | arch/arm/mm/cache-l2x0.c | 8 | ||||
-rw-r--r-- | arch/arm/mm/cache-v7.S | 3 | ||||
-rw-r--r-- | arch/arm/mm/dma-mapping.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/init.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/ioremap.c | 1 |
6 files changed, 16 insertions, 6 deletions
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 9107231aacc5..b9f60ebe3bc4 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -699,7 +699,6 @@ do_alignment_t32_to_handler(unsigned long *pinstr, struct pt_regs *regs, | |||
699 | unsigned long instr = *pinstr; | 699 | unsigned long instr = *pinstr; |
700 | u16 tinst1 = (instr >> 16) & 0xffff; | 700 | u16 tinst1 = (instr >> 16) & 0xffff; |
701 | u16 tinst2 = instr & 0xffff; | 701 | u16 tinst2 = instr & 0xffff; |
702 | poffset->un = 0; | ||
703 | 702 | ||
704 | switch (tinst1 & 0xffe0) { | 703 | switch (tinst1 & 0xffe0) { |
705 | /* A6.3.5 Load/Store multiple */ | 704 | /* A6.3.5 Load/Store multiple */ |
@@ -854,9 +853,10 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
854 | break; | 853 | break; |
855 | 854 | ||
856 | case 0x08000000: /* ldm or stm, or thumb-2 32bit instruction */ | 855 | case 0x08000000: /* ldm or stm, or thumb-2 32bit instruction */ |
857 | if (thumb2_32b) | 856 | if (thumb2_32b) { |
857 | offset.un = 0; | ||
858 | handler = do_alignment_t32_to_handler(&instr, regs, &offset); | 858 | handler = do_alignment_t32_to_handler(&instr, regs, &offset); |
859 | else | 859 | } else |
860 | handler = do_alignment_ldmstm; | 860 | handler = do_alignment_ldmstm; |
861 | break; | 861 | break; |
862 | 862 | ||
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 2a8e380501e8..97ec2565805a 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c | |||
@@ -368,14 +368,18 @@ void __init l2x0_init(void __iomem *base, u32 aux_val, u32 aux_mask) | |||
368 | /* l2x0 controller is disabled */ | 368 | /* l2x0 controller is disabled */ |
369 | writel_relaxed(aux, l2x0_base + L2X0_AUX_CTRL); | 369 | writel_relaxed(aux, l2x0_base + L2X0_AUX_CTRL); |
370 | 370 | ||
371 | l2x0_saved_regs.aux_ctrl = aux; | ||
372 | |||
373 | l2x0_inv_all(); | 371 | l2x0_inv_all(); |
374 | 372 | ||
375 | /* enable L2X0 */ | 373 | /* enable L2X0 */ |
376 | writel_relaxed(1, l2x0_base + L2X0_CTRL); | 374 | writel_relaxed(1, l2x0_base + L2X0_CTRL); |
377 | } | 375 | } |
378 | 376 | ||
377 | /* Re-read it in case some bits are reserved. */ | ||
378 | aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL); | ||
379 | |||
380 | /* Save the value for resuming. */ | ||
381 | l2x0_saved_regs.aux_ctrl = aux; | ||
382 | |||
379 | outer_cache.inv_range = l2x0_inv_range; | 383 | outer_cache.inv_range = l2x0_inv_range; |
380 | outer_cache.clean_range = l2x0_clean_range; | 384 | outer_cache.clean_range = l2x0_clean_range; |
381 | outer_cache.flush_range = l2x0_flush_range; | 385 | outer_cache.flush_range = l2x0_flush_range; |
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index 39e3fb3db801..3b172275262e 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
@@ -211,6 +211,9 @@ ENTRY(v7_coherent_user_range) | |||
211 | * isn't mapped, fail with -EFAULT. | 211 | * isn't mapped, fail with -EFAULT. |
212 | */ | 212 | */ |
213 | 9001: | 213 | 9001: |
214 | #ifdef CONFIG_ARM_ERRATA_775420 | ||
215 | dsb | ||
216 | #endif | ||
214 | mov r0, #-EFAULT | 217 | mov r0, #-EFAULT |
215 | mov pc, lr | 218 | mov pc, lr |
216 | UNWIND(.fnend ) | 219 | UNWIND(.fnend ) |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index e59c4ab71bcb..13f555d62491 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -346,6 +346,8 @@ static int __init atomic_pool_init(void) | |||
346 | (unsigned)pool->size / 1024); | 346 | (unsigned)pool->size / 1024); |
347 | return 0; | 347 | return 0; |
348 | } | 348 | } |
349 | |||
350 | kfree(pages); | ||
349 | no_pages: | 351 | no_pages: |
350 | kfree(bitmap); | 352 | kfree(bitmap); |
351 | no_bitmap: | 353 | no_bitmap: |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 9aec41fa80ae..ad722f1208a5 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -324,7 +324,7 @@ phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align) | |||
324 | 324 | ||
325 | BUG_ON(!arm_memblock_steal_permitted); | 325 | BUG_ON(!arm_memblock_steal_permitted); |
326 | 326 | ||
327 | phys = memblock_alloc(size, align); | 327 | phys = memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ANYWHERE); |
328 | memblock_free(phys, size); | 328 | memblock_free(phys, size); |
329 | memblock_remove(phys, size); | 329 | memblock_remove(phys, size); |
330 | 330 | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 566750fa57d4..491f6b3336f5 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -247,6 +247,7 @@ void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn, | |||
247 | if (!area) | 247 | if (!area) |
248 | return NULL; | 248 | return NULL; |
249 | addr = (unsigned long)area->addr; | 249 | addr = (unsigned long)area->addr; |
250 | area->phys_addr = __pfn_to_phys(pfn); | ||
250 | 251 | ||
251 | #if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE) | 252 | #if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE) |
252 | if (DOMAIN_IO == 0 && | 253 | if (DOMAIN_IO == 0 && |