diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-18 14:17:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-18 14:17:13 -0400 |
commit | f28535c100e3c3066ed3506d90948cf023dad21a (patch) | |
tree | ae8656ed8772de974219a65b46fa04e8ef7655fd | |
parent | 114e3bae37a2976563fb7a678efe3cf3aff80ed2 (diff) | |
parent | a93a4d62324123dcda383bdb4ab89151bbc0e499 (diff) |
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 fixes from Catalin Marinas:
- Avoid a literal load with the MMU off on the CPU resume path
(potential inconsistency between cache and RAM)
- Build error with CONFIG_ACPI=n fixed
- Compiler warning in the arch/arm64/mm/dump.c code fixed
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
arm64: Fix shift warning in arch/arm64/mm/dump.c
arm64: kernel: avoid literal load of virtual address with MMU off
arm64: Fix NUMA build error when !CONFIG_ACPI
-rw-r--r-- | arch/arm64/kernel/sleep.S | 10 | ||||
-rw-r--r-- | arch/arm64/mm/dump.c | 6 | ||||
-rw-r--r-- | arch/arm64/mm/numa.c | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S index 9a3aec97ac09..ccf79d849e0a 100644 --- a/arch/arm64/kernel/sleep.S +++ b/arch/arm64/kernel/sleep.S | |||
@@ -101,12 +101,20 @@ ENTRY(cpu_resume) | |||
101 | bl el2_setup // if in EL2 drop to EL1 cleanly | 101 | bl el2_setup // if in EL2 drop to EL1 cleanly |
102 | /* enable the MMU early - so we can access sleep_save_stash by va */ | 102 | /* enable the MMU early - so we can access sleep_save_stash by va */ |
103 | adr_l lr, __enable_mmu /* __cpu_setup will return here */ | 103 | adr_l lr, __enable_mmu /* __cpu_setup will return here */ |
104 | ldr x27, =_cpu_resume /* __enable_mmu will branch here */ | 104 | adr_l x27, _resume_switched /* __enable_mmu will branch here */ |
105 | adrp x25, idmap_pg_dir | 105 | adrp x25, idmap_pg_dir |
106 | adrp x26, swapper_pg_dir | 106 | adrp x26, swapper_pg_dir |
107 | b __cpu_setup | 107 | b __cpu_setup |
108 | ENDPROC(cpu_resume) | 108 | ENDPROC(cpu_resume) |
109 | 109 | ||
110 | .pushsection ".idmap.text", "ax" | ||
111 | _resume_switched: | ||
112 | ldr x8, =_cpu_resume | ||
113 | br x8 | ||
114 | ENDPROC(_resume_switched) | ||
115 | .ltorg | ||
116 | .popsection | ||
117 | |||
110 | ENTRY(_cpu_resume) | 118 | ENTRY(_cpu_resume) |
111 | mrs x1, mpidr_el1 | 119 | mrs x1, mpidr_el1 |
112 | adrp x8, mpidr_hash | 120 | adrp x8, mpidr_hash |
diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c index f94b80eb295d..9c3e75df2180 100644 --- a/arch/arm64/mm/dump.c +++ b/arch/arm64/mm/dump.c | |||
@@ -242,7 +242,7 @@ static void note_page(struct pg_state *st, unsigned long addr, unsigned level, | |||
242 | 242 | ||
243 | static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start) | 243 | static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start) |
244 | { | 244 | { |
245 | pte_t *pte = pte_offset_kernel(pmd, 0); | 245 | pte_t *pte = pte_offset_kernel(pmd, 0UL); |
246 | unsigned long addr; | 246 | unsigned long addr; |
247 | unsigned i; | 247 | unsigned i; |
248 | 248 | ||
@@ -254,7 +254,7 @@ static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start) | |||
254 | 254 | ||
255 | static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start) | 255 | static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start) |
256 | { | 256 | { |
257 | pmd_t *pmd = pmd_offset(pud, 0); | 257 | pmd_t *pmd = pmd_offset(pud, 0UL); |
258 | unsigned long addr; | 258 | unsigned long addr; |
259 | unsigned i; | 259 | unsigned i; |
260 | 260 | ||
@@ -271,7 +271,7 @@ static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start) | |||
271 | 271 | ||
272 | static void walk_pud(struct pg_state *st, pgd_t *pgd, unsigned long start) | 272 | static void walk_pud(struct pg_state *st, pgd_t *pgd, unsigned long start) |
273 | { | 273 | { |
274 | pud_t *pud = pud_offset(pgd, 0); | 274 | pud_t *pud = pud_offset(pgd, 0UL); |
275 | unsigned long addr; | 275 | unsigned long addr; |
276 | unsigned i; | 276 | unsigned i; |
277 | 277 | ||
diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index c7fe3ec70774..5bb15eab6f00 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c | |||
@@ -23,6 +23,8 @@ | |||
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/of.h> | 24 | #include <linux/of.h> |
25 | 25 | ||
26 | #include <asm/acpi.h> | ||
27 | |||
26 | struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; | 28 | struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; |
27 | EXPORT_SYMBOL(node_data); | 29 | EXPORT_SYMBOL(node_data); |
28 | nodemask_t numa_nodes_parsed __initdata; | 30 | nodemask_t numa_nodes_parsed __initdata; |