diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-18 13:20:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-18 13:20:46 -0400 |
commit | f71df63380cc9367c4a866d4cf9a2b0cfe352ad6 (patch) | |
tree | 1c564b246906a08ec8bf1f848d6035ceda0d5eef | |
parent | 8f710dd34a46500e135203816c71c3ec567c46fd (diff) | |
parent | 3126976be64bfb4c87297cb022ca815212079aec (diff) |
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64
Pull arm64 fixes from Catalin Marinas:
"Fixes for duplicate definition of early_console, kernel/time/Kconfig
include, __flush_dcache_all() set/way computing, debug (locking, bit
testing). The of_platform_populate() was moved to an arch_init_call()
to allow subsys_init_call() drivers to probe the DT."
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
arm64: debug: fix mdscr.ss check when enabling debug exceptions
arm64: Do not source kernel/time/Kconfig explicitly
arm64: mm: Fix operands of clz in __flush_dcache_all
arm64: Invoke the of_platform_populate() at arch_initcall() level
arm64: debug: clear mdscr_el1 instead of taking the OS lock
arm64: Fix duplicate definition of early_console
-rw-r--r-- | arch/arm64/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm64/include/asm/assembler.h | 2 | ||||
-rw-r--r-- | arch/arm64/kernel/debug-monitors.c | 2 | ||||
-rw-r--r-- | arch/arm64/kernel/early_printk.c | 5 | ||||
-rw-r--r-- | arch/arm64/kernel/setup.c | 12 | ||||
-rw-r--r-- | arch/arm64/mm/cache.S | 2 | ||||
-rw-r--r-- | arch/arm64/mm/proc.S | 3 |
7 files changed, 9 insertions, 19 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 48347dcf0566..56b3f6d447ae 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
@@ -122,8 +122,6 @@ endmenu | |||
122 | 122 | ||
123 | menu "Kernel Features" | 123 | menu "Kernel Features" |
124 | 124 | ||
125 | source "kernel/time/Kconfig" | ||
126 | |||
127 | config ARM64_64K_PAGES | 125 | config ARM64_64K_PAGES |
128 | bool "Enable 64KB pages support" | 126 | bool "Enable 64KB pages support" |
129 | help | 127 | help |
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index c8eedc604984..5aceb83b3f5c 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h | |||
@@ -82,7 +82,7 @@ | |||
82 | 82 | ||
83 | .macro enable_dbg_if_not_stepping, tmp | 83 | .macro enable_dbg_if_not_stepping, tmp |
84 | mrs \tmp, mdscr_el1 | 84 | mrs \tmp, mdscr_el1 |
85 | tbnz \tmp, #1, 9990f | 85 | tbnz \tmp, #0, 9990f |
86 | enable_dbg | 86 | enable_dbg |
87 | 9990: | 87 | 9990: |
88 | .endm | 88 | .endm |
diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c index 0c3ba9f51376..f4726dc054b3 100644 --- a/arch/arm64/kernel/debug-monitors.c +++ b/arch/arm64/kernel/debug-monitors.c | |||
@@ -136,8 +136,6 @@ void disable_debug_monitors(enum debug_el el) | |||
136 | */ | 136 | */ |
137 | static void clear_os_lock(void *unused) | 137 | static void clear_os_lock(void *unused) |
138 | { | 138 | { |
139 | asm volatile("msr mdscr_el1, %0" : : "r" (0)); | ||
140 | isb(); | ||
141 | asm volatile("msr oslar_el1, %0" : : "r" (0)); | 139 | asm volatile("msr oslar_el1, %0" : : "r" (0)); |
142 | isb(); | 140 | isb(); |
143 | } | 141 | } |
diff --git a/arch/arm64/kernel/early_printk.c b/arch/arm64/kernel/early_printk.c index ac974f48a7a2..fbb6e1843659 100644 --- a/arch/arm64/kernel/early_printk.c +++ b/arch/arm64/kernel/early_printk.c | |||
@@ -95,7 +95,7 @@ static void early_write(struct console *con, const char *s, unsigned n) | |||
95 | } | 95 | } |
96 | } | 96 | } |
97 | 97 | ||
98 | static struct console early_console = { | 98 | static struct console early_console_dev = { |
99 | .name = "earlycon", | 99 | .name = "earlycon", |
100 | .write = early_write, | 100 | .write = early_write, |
101 | .flags = CON_PRINTBUFFER | CON_BOOT, | 101 | .flags = CON_PRINTBUFFER | CON_BOOT, |
@@ -145,7 +145,8 @@ static int __init setup_early_printk(char *buf) | |||
145 | early_base = early_io_map(paddr, EARLYCON_IOBASE); | 145 | early_base = early_io_map(paddr, EARLYCON_IOBASE); |
146 | 146 | ||
147 | printch = match->printch; | 147 | printch = match->printch; |
148 | register_console(&early_console); | 148 | early_console = &early_console_dev; |
149 | register_console(&early_console_dev); | ||
149 | 150 | ||
150 | return 0; | 151 | return 0; |
151 | } | 152 | } |
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 6a9a53292590..add6ea616843 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c | |||
@@ -282,12 +282,13 @@ void __init setup_arch(char **cmdline_p) | |||
282 | #endif | 282 | #endif |
283 | } | 283 | } |
284 | 284 | ||
285 | static int __init arm64_of_clk_init(void) | 285 | static int __init arm64_device_init(void) |
286 | { | 286 | { |
287 | of_clk_init(NULL); | 287 | of_clk_init(NULL); |
288 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
288 | return 0; | 289 | return 0; |
289 | } | 290 | } |
290 | arch_initcall(arm64_of_clk_init); | 291 | arch_initcall(arm64_device_init); |
291 | 292 | ||
292 | static DEFINE_PER_CPU(struct cpu, cpu_data); | 293 | static DEFINE_PER_CPU(struct cpu, cpu_data); |
293 | 294 | ||
@@ -305,13 +306,6 @@ static int __init topology_init(void) | |||
305 | } | 306 | } |
306 | subsys_initcall(topology_init); | 307 | subsys_initcall(topology_init); |
307 | 308 | ||
308 | static int __init arm64_device_probe(void) | ||
309 | { | ||
310 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
311 | return 0; | ||
312 | } | ||
313 | device_initcall(arm64_device_probe); | ||
314 | |||
315 | static const char *hwcap_str[] = { | 309 | static const char *hwcap_str[] = { |
316 | "fp", | 310 | "fp", |
317 | "asimd", | 311 | "asimd", |
diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S index abe69b80cf7f..48a386094fa3 100644 --- a/arch/arm64/mm/cache.S +++ b/arch/arm64/mm/cache.S | |||
@@ -52,7 +52,7 @@ loop1: | |||
52 | add x2, x2, #4 // add 4 (line length offset) | 52 | add x2, x2, #4 // add 4 (line length offset) |
53 | mov x4, #0x3ff | 53 | mov x4, #0x3ff |
54 | and x4, x4, x1, lsr #3 // find maximum number on the way size | 54 | and x4, x4, x1, lsr #3 // find maximum number on the way size |
55 | clz x5, x4 // find bit position of way size increment | 55 | clz w5, w4 // find bit position of way size increment |
56 | mov x7, #0x7fff | 56 | mov x7, #0x7fff |
57 | and x7, x7, x1, lsr #13 // extract max number of the index size | 57 | and x7, x7, x1, lsr #13 // extract max number of the index size |
58 | loop2: | 58 | loop2: |
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index f1d8b9bbfdad..a82ae8868077 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S | |||
@@ -119,8 +119,7 @@ ENTRY(__cpu_setup) | |||
119 | 119 | ||
120 | mov x0, #3 << 20 | 120 | mov x0, #3 << 20 |
121 | msr cpacr_el1, x0 // Enable FP/ASIMD | 121 | msr cpacr_el1, x0 // Enable FP/ASIMD |
122 | mov x0, #1 | 122 | msr mdscr_el1, xzr // Reset mdscr_el1 |
123 | msr oslar_el1, x0 // Set the debug OS lock | ||
124 | tlbi vmalle1is // invalidate I + D TLBs | 123 | tlbi vmalle1is // invalidate I + D TLBs |
125 | /* | 124 | /* |
126 | * Memory region attributes for LPAE: | 125 | * Memory region attributes for LPAE: |