Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
"A few more ARM fixes:

- the assembly backtrace code suffers problems with the new printk()
implementation which assumes that kernel messages without KERN_CONT
should have newlines inserted between them. Fix this.
- fix a section naming error - ".init.text" rather than ".text.init"
- preallocate DMA debug memory at core_initcall() time rather than
fs_initcall(), as we have some core drivers that need to use DMA
mapping - and that triggers a kernel warning from the DMA debug
code.
- fix XIP kernels after the ro_after_init changes made this data
permanently read-only"

* 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
ARM: Fix XIP kernels
ARM: 8628/1: dma-mapping: preallocate DMA-debug hash tables in core_initcall
ARM: 8624/1: proc-v7m.S: fix init section name
ARM: fix backtrace

Changed files
+30 -36
arch
+20
arch/arm/kernel/traps.c
··· 74 74 dump_mem("", "Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs)); 75 75 } 76 76 77 + void dump_backtrace_stm(u32 *stack, u32 instruction) 78 + { 79 + char str[80], *p; 80 + unsigned int x; 81 + int reg; 82 + 83 + for (reg = 10, x = 0, p = str; reg >= 0; reg--) { 84 + if (instruction & BIT(reg)) { 85 + p += sprintf(p, " r%d:%08x", reg, *stack--); 86 + if (++x == 6) { 87 + x = 0; 88 + p = str; 89 + printk("%s\n", str); 90 + } 91 + } 92 + } 93 + if (p != str) 94 + printk("%s\n", str); 95 + } 96 + 77 97 #ifndef CONFIG_ARM_UNWIND 78 98 /* 79 99 * Stack pointers should always be within the kernels view of
+5
arch/arm/kernel/vmlinux-xip.lds.S
··· 3 3 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> 4 4 */ 5 5 6 + /* No __ro_after_init data in the .rodata section - which will always be ro */ 7 + #define RO_AFTER_INIT_DATA 8 + 6 9 #include <asm-generic/vmlinux.lds.h> 7 10 #include <asm/cache.h> 8 11 #include <asm/thread_info.h> ··· 225 222 ARM_EXIT_KEEP(EXIT_DATA) 226 223 . = ALIGN(PAGE_SIZE); 227 224 __init_end = .; 225 + 226 + *(.data..ro_after_init) 228 227 229 228 NOSAVE_DATA 230 229 CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
+3 -34
arch/arm/lib/backtrace.S
··· 10 10 * 27/03/03 Ian Molton Clean up CONFIG_CPU 11 11 * 12 12 */ 13 + #include <linux/kern_levels.h> 13 14 #include <linux/linkage.h> 14 15 #include <asm/assembler.h> 15 16 .text ··· 84 83 teq r3, r1, lsr #11 85 84 ldreq r0, [frame, #-8] @ get sp 86 85 subeq r0, r0, #4 @ point at the last arg 87 - bleq .Ldumpstm @ dump saved registers 86 + bleq dump_backtrace_stm @ dump saved registers 88 87 89 88 1004: ldr r1, [sv_pc, #0] @ if stmfd sp!, {..., fp, ip, lr, pc} 90 89 ldr r3, .Ldsi @ instruction exists, 91 90 teq r3, r1, lsr #11 92 91 subeq r0, frame, #16 93 - bleq .Ldumpstm @ dump saved registers 92 + bleq dump_backtrace_stm @ dump saved registers 94 93 95 94 teq sv_fp, #0 @ zero saved fp means 96 95 beq no_frame @ no further frames ··· 113 112 .long 1004b, 1006b 114 113 .popsection 115 114 116 - #define instr r4 117 - #define reg r5 118 - #define stack r6 119 - 120 - .Ldumpstm: stmfd sp!, {instr, reg, stack, r7, lr} 121 - mov stack, r0 122 - mov instr, r1 123 - mov reg, #10 124 - mov r7, #0 125 - 1: mov r3, #1 126 - ARM( tst instr, r3, lsl reg ) 127 - THUMB( lsl r3, reg ) 128 - THUMB( tst instr, r3 ) 129 - beq 2f 130 - add r7, r7, #1 131 - teq r7, #6 132 - moveq r7, #0 133 - adr r3, .Lcr 134 - addne r3, r3, #1 @ skip newline 135 - ldr r2, [stack], #-4 136 - mov r1, reg 137 - adr r0, .Lfp 138 - bl printk 139 - 2: subs reg, reg, #1 140 - bpl 1b 141 - teq r7, #0 142 - adrne r0, .Lcr 143 - blne printk 144 - ldmfd sp!, {instr, reg, stack, r7, pc} 145 - 146 - .Lfp: .asciz " r%d:%08x%s" 147 - .Lcr: .asciz "\n" 148 115 .Lbad: .asciz "Backtrace aborted due to bad frame pointer <%p>\n" 149 116 .align 150 117 .Ldsi: .word 0xe92dd800 >> 11 @ stmfd sp!, {... fp, ip, lr, pc}
+1 -1
arch/arm/mm/dma-mapping.c
··· 1167 1167 dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); 1168 1168 return 0; 1169 1169 } 1170 - fs_initcall(dma_debug_do_init); 1170 + core_initcall(dma_debug_do_init); 1171 1171 1172 1172 #ifdef CONFIG_ARM_DMA_USE_IOMMU 1173 1173
+1 -1
arch/arm/mm/proc-v7m.S
··· 96 96 ret lr 97 97 ENDPROC(cpu_cm7_proc_fin) 98 98 99 - .section ".text.init", #alloc, #execinstr 99 + .section ".init.text", #alloc, #execinstr 100 100 101 101 __v7m_cm7_setup: 102 102 mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP)