diff options
author | David S. Miller <davem@davemloft.net> | 2013-04-01 13:36:50 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-04-01 13:36:50 -0400 |
commit | a210576cf891e9e6d2c238eabcf5c1286b1e7526 (patch) | |
tree | 0fa81a901cf628b25e6ee79057700cf39e59818a /arch | |
parent | 7d4c04fc170087119727119074e72445f2bb192b (diff) | |
parent | 3658f3604066d5500ebd73a04084f127dc779441 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
net/mac80211/sta_info.c
net/wireless/core.h
Two minor conflicts in wireless. Overlapping additions of extern
declarations in net/wireless/core.h and a bug fix overlapping with
the addition of a boolean parameter to __ieee80211_key_free().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arc/include/asm/dma-mapping.h | 2 | ||||
-rw-r--r-- | arch/arc/include/asm/elf.h | 3 | ||||
-rw-r--r-- | arch/arc/include/asm/entry.h | 2 | ||||
-rw-r--r-- | arch/arc/include/asm/kgdb.h | 6 | ||||
-rw-r--r-- | arch/arc/include/asm/ptrace.h | 2 | ||||
-rw-r--r-- | arch/arc/include/asm/syscalls.h | 2 | ||||
-rw-r--r-- | arch/arc/include/uapi/asm/ptrace.h | 4 | ||||
-rw-r--r-- | arch/arc/kernel/entry.S | 27 | ||||
-rw-r--r-- | arch/arc/kernel/kgdb.c | 1 | ||||
-rw-r--r-- | arch/arc/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/arc/kernel/sys.c | 2 | ||||
-rw-r--r-- | arch/arm64/mm/mmu.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/process.c | 5 | ||||
-rw-r--r-- | arch/powerpc/kernel/epapr_paravirt.c | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 144 | ||||
-rw-r--r-- | arch/tile/kernel/setup.c | 25 | ||||
-rw-r--r-- | arch/x86/include/asm/xen/hypercall.h | 4 | ||||
-rw-r--r-- | arch/x86/include/uapi/asm/msr-index.h | 1 | ||||
-rw-r--r-- | arch/x86/xen/mmu.c | 3 |
19 files changed, 106 insertions, 139 deletions
diff --git a/arch/arc/include/asm/dma-mapping.h b/arch/arc/include/asm/dma-mapping.h index 31f77aec0823..45b8e0cea176 100644 --- a/arch/arc/include/asm/dma-mapping.h +++ b/arch/arc/include/asm/dma-mapping.h | |||
@@ -126,7 +126,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, | |||
126 | int i; | 126 | int i; |
127 | 127 | ||
128 | for_each_sg(sg, s, nents, i) | 128 | for_each_sg(sg, s, nents, i) |
129 | sg->dma_address = dma_map_page(dev, sg_page(s), s->offset, | 129 | s->dma_address = dma_map_page(dev, sg_page(s), s->offset, |
130 | s->length, dir); | 130 | s->length, dir); |
131 | 131 | ||
132 | return nents; | 132 | return nents; |
diff --git a/arch/arc/include/asm/elf.h b/arch/arc/include/asm/elf.h index f4c8d36ebecb..a26282857683 100644 --- a/arch/arc/include/asm/elf.h +++ b/arch/arc/include/asm/elf.h | |||
@@ -72,7 +72,4 @@ extern int elf_check_arch(const struct elf32_hdr *); | |||
72 | */ | 72 | */ |
73 | #define ELF_PLATFORM (NULL) | 73 | #define ELF_PLATFORM (NULL) |
74 | 74 | ||
75 | #define SET_PERSONALITY(ex) \ | ||
76 | set_personality(PER_LINUX | (current->personality & (~PER_MASK))) | ||
77 | |||
78 | #endif | 75 | #endif |
diff --git a/arch/arc/include/asm/entry.h b/arch/arc/include/asm/entry.h index 23daa326fc9b..eb2ae53187d9 100644 --- a/arch/arc/include/asm/entry.h +++ b/arch/arc/include/asm/entry.h | |||
@@ -415,7 +415,7 @@ | |||
415 | *-------------------------------------------------------------*/ | 415 | *-------------------------------------------------------------*/ |
416 | .macro SAVE_ALL_EXCEPTION marker | 416 | .macro SAVE_ALL_EXCEPTION marker |
417 | 417 | ||
418 | st \marker, [sp, 8] | 418 | st \marker, [sp, 8] /* orig_r8 */ |
419 | st r0, [sp, 4] /* orig_r0, needed only for sys calls */ | 419 | st r0, [sp, 4] /* orig_r0, needed only for sys calls */ |
420 | 420 | ||
421 | /* Restore r9 used to code the early prologue */ | 421 | /* Restore r9 used to code the early prologue */ |
diff --git a/arch/arc/include/asm/kgdb.h b/arch/arc/include/asm/kgdb.h index f3c4934f0ca9..4930957ca3d3 100644 --- a/arch/arc/include/asm/kgdb.h +++ b/arch/arc/include/asm/kgdb.h | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #ifdef CONFIG_KGDB | 14 | #ifdef CONFIG_KGDB |
15 | 15 | ||
16 | #include <asm/user.h> | 16 | #include <asm/ptrace.h> |
17 | 17 | ||
18 | /* to ensure compatibility with Linux 2.6.35, we don't implement the get/set | 18 | /* to ensure compatibility with Linux 2.6.35, we don't implement the get/set |
19 | * register API yet */ | 19 | * register API yet */ |
@@ -53,9 +53,7 @@ enum arc700_linux_regnums { | |||
53 | }; | 53 | }; |
54 | 54 | ||
55 | #else | 55 | #else |
56 | static inline void kgdb_trap(struct pt_regs *regs, int param) | 56 | #define kgdb_trap(regs, param) |
57 | { | ||
58 | } | ||
59 | #endif | 57 | #endif |
60 | 58 | ||
61 | #endif /* __ARC_KGDB_H__ */ | 59 | #endif /* __ARC_KGDB_H__ */ |
diff --git a/arch/arc/include/asm/ptrace.h b/arch/arc/include/asm/ptrace.h index 8ae783d20a81..6179de7e07c2 100644 --- a/arch/arc/include/asm/ptrace.h +++ b/arch/arc/include/asm/ptrace.h | |||
@@ -123,7 +123,7 @@ static inline long regs_return_value(struct pt_regs *regs) | |||
123 | #define orig_r8_IS_SCALL 0x0001 | 123 | #define orig_r8_IS_SCALL 0x0001 |
124 | #define orig_r8_IS_SCALL_RESTARTED 0x0002 | 124 | #define orig_r8_IS_SCALL_RESTARTED 0x0002 |
125 | #define orig_r8_IS_BRKPT 0x0004 | 125 | #define orig_r8_IS_BRKPT 0x0004 |
126 | #define orig_r8_IS_EXCPN 0x0004 | 126 | #define orig_r8_IS_EXCPN 0x0008 |
127 | #define orig_r8_IS_IRQ1 0x0010 | 127 | #define orig_r8_IS_IRQ1 0x0010 |
128 | #define orig_r8_IS_IRQ2 0x0020 | 128 | #define orig_r8_IS_IRQ2 0x0020 |
129 | 129 | ||
diff --git a/arch/arc/include/asm/syscalls.h b/arch/arc/include/asm/syscalls.h index e53a5340ba4f..dd785befe7fd 100644 --- a/arch/arc/include/asm/syscalls.h +++ b/arch/arc/include/asm/syscalls.h | |||
@@ -16,8 +16,6 @@ | |||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | 17 | ||
18 | int sys_clone_wrapper(int, int, int, int, int); | 18 | int sys_clone_wrapper(int, int, int, int, int); |
19 | int sys_fork_wrapper(void); | ||
20 | int sys_vfork_wrapper(void); | ||
21 | int sys_cacheflush(uint32_t, uint32_t uint32_t); | 19 | int sys_cacheflush(uint32_t, uint32_t uint32_t); |
22 | int sys_arc_settls(void *); | 20 | int sys_arc_settls(void *); |
23 | int sys_arc_gettls(void); | 21 | int sys_arc_gettls(void); |
diff --git a/arch/arc/include/uapi/asm/ptrace.h b/arch/arc/include/uapi/asm/ptrace.h index 6afa4f702075..30333cec0fef 100644 --- a/arch/arc/include/uapi/asm/ptrace.h +++ b/arch/arc/include/uapi/asm/ptrace.h | |||
@@ -28,14 +28,14 @@ | |||
28 | */ | 28 | */ |
29 | struct user_regs_struct { | 29 | struct user_regs_struct { |
30 | 30 | ||
31 | struct scratch { | 31 | struct { |
32 | long pad; | 32 | long pad; |
33 | long bta, lp_start, lp_end, lp_count; | 33 | long bta, lp_start, lp_end, lp_count; |
34 | long status32, ret, blink, fp, gp; | 34 | long status32, ret, blink, fp, gp; |
35 | long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0; | 35 | long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0; |
36 | long sp; | 36 | long sp; |
37 | } scratch; | 37 | } scratch; |
38 | struct callee { | 38 | struct { |
39 | long pad; | 39 | long pad; |
40 | long r25, r24, r23, r22, r21, r20; | 40 | long r25, r24, r23, r22, r21, r20; |
41 | long r19, r18, r17, r16, r15, r14, r13; | 41 | long r19, r18, r17, r16, r15, r14, r13; |
diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S index ef6800ba2f03..91eeab81f52d 100644 --- a/arch/arc/kernel/entry.S +++ b/arch/arc/kernel/entry.S | |||
@@ -452,7 +452,7 @@ tracesys: | |||
452 | ; using ERET won't work since next-PC has already committed | 452 | ; using ERET won't work since next-PC has already committed |
453 | lr r12, [efa] | 453 | lr r12, [efa] |
454 | GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11 | 454 | GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11 |
455 | st r12, [r11, THREAD_FAULT_ADDR] | 455 | st r12, [r11, THREAD_FAULT_ADDR] ; thread.fault_address |
456 | 456 | ||
457 | ; PRE Sys Call Ptrace hook | 457 | ; PRE Sys Call Ptrace hook |
458 | mov r0, sp ; pt_regs needed | 458 | mov r0, sp ; pt_regs needed |
@@ -792,31 +792,6 @@ ARC_EXIT ret_from_fork | |||
792 | 792 | ||
793 | ;################### Special Sys Call Wrappers ########################## | 793 | ;################### Special Sys Call Wrappers ########################## |
794 | 794 | ||
795 | ; TBD: call do_fork directly from here | ||
796 | ARC_ENTRY sys_fork_wrapper | ||
797 | SAVE_CALLEE_SAVED_USER | ||
798 | bl @sys_fork | ||
799 | DISCARD_CALLEE_SAVED_USER | ||
800 | |||
801 | GET_CURR_THR_INFO_FLAGS r10 | ||
802 | btst r10, TIF_SYSCALL_TRACE | ||
803 | bnz tracesys_exit | ||
804 | |||
805 | b ret_from_system_call | ||
806 | ARC_EXIT sys_fork_wrapper | ||
807 | |||
808 | ARC_ENTRY sys_vfork_wrapper | ||
809 | SAVE_CALLEE_SAVED_USER | ||
810 | bl @sys_vfork | ||
811 | DISCARD_CALLEE_SAVED_USER | ||
812 | |||
813 | GET_CURR_THR_INFO_FLAGS r10 | ||
814 | btst r10, TIF_SYSCALL_TRACE | ||
815 | bnz tracesys_exit | ||
816 | |||
817 | b ret_from_system_call | ||
818 | ARC_EXIT sys_vfork_wrapper | ||
819 | |||
820 | ARC_ENTRY sys_clone_wrapper | 795 | ARC_ENTRY sys_clone_wrapper |
821 | SAVE_CALLEE_SAVED_USER | 796 | SAVE_CALLEE_SAVED_USER |
822 | bl @sys_clone | 797 | bl @sys_clone |
diff --git a/arch/arc/kernel/kgdb.c b/arch/arc/kernel/kgdb.c index 2888ba5be47e..52bdc83c1495 100644 --- a/arch/arc/kernel/kgdb.c +++ b/arch/arc/kernel/kgdb.c | |||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/kgdb.h> | 11 | #include <linux/kgdb.h> |
12 | #include <linux/sched.h> | ||
12 | #include <asm/disasm.h> | 13 | #include <asm/disasm.h> |
13 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
14 | 15 | ||
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c index dc0f968dae0a..2d95ac07df7b 100644 --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c | |||
@@ -232,10 +232,8 @@ char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len) | |||
232 | 232 | ||
233 | n += scnprintf(buf + n, len - n, "\n"); | 233 | n += scnprintf(buf + n, len - n, "\n"); |
234 | 234 | ||
235 | #ifdef _ASM_GENERIC_UNISTD_H | ||
236 | n += scnprintf(buf + n, len - n, | 235 | n += scnprintf(buf + n, len - n, |
237 | "OS ABI [v2]\t: asm-generic/{unistd,stat,fcntl}\n"); | 236 | "OS ABI [v3]\t: no-legacy-syscalls\n"); |
238 | #endif | ||
239 | 237 | ||
240 | return buf; | 238 | return buf; |
241 | } | 239 | } |
diff --git a/arch/arc/kernel/sys.c b/arch/arc/kernel/sys.c index f6bdd07583f3..9d6c1ca26af6 100644 --- a/arch/arc/kernel/sys.c +++ b/arch/arc/kernel/sys.c | |||
@@ -6,8 +6,6 @@ | |||
6 | #include <asm/syscalls.h> | 6 | #include <asm/syscalls.h> |
7 | 7 | ||
8 | #define sys_clone sys_clone_wrapper | 8 | #define sys_clone sys_clone_wrapper |
9 | #define sys_fork sys_fork_wrapper | ||
10 | #define sys_vfork sys_vfork_wrapper | ||
11 | 9 | ||
12 | #undef __SYSCALL | 10 | #undef __SYSCALL |
13 | #define __SYSCALL(nr, call) [nr] = (call), | 11 | #define __SYSCALL(nr, call) [nr] = (call), |
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 224b44ab534e..70b8cd4021c4 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c | |||
@@ -261,7 +261,7 @@ static void __init create_mapping(phys_addr_t phys, unsigned long virt, | |||
261 | void __iomem * __init early_io_map(phys_addr_t phys, unsigned long virt) | 261 | void __iomem * __init early_io_map(phys_addr_t phys, unsigned long virt) |
262 | { | 262 | { |
263 | unsigned long size, mask; | 263 | unsigned long size, mask; |
264 | bool page64k = IS_ENABLED(ARM64_64K_PAGES); | 264 | bool page64k = IS_ENABLED(CONFIG_ARM64_64K_PAGES); |
265 | pgd_t *pgd; | 265 | pgd_t *pgd; |
266 | pud_t *pud; | 266 | pud_t *pud; |
267 | pmd_t *pmd; | 267 | pmd_t *pmd; |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index e34f565f595a..6f7dc8b7b35c 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -291,7 +291,6 @@ cpu_idle (void) | |||
291 | } | 291 | } |
292 | 292 | ||
293 | if (!need_resched()) { | 293 | if (!need_resched()) { |
294 | void (*idle)(void); | ||
295 | #ifdef CONFIG_SMP | 294 | #ifdef CONFIG_SMP |
296 | min_xtp(); | 295 | min_xtp(); |
297 | #endif | 296 | #endif |
@@ -299,9 +298,7 @@ cpu_idle (void) | |||
299 | if (mark_idle) | 298 | if (mark_idle) |
300 | (*mark_idle)(1); | 299 | (*mark_idle)(1); |
301 | 300 | ||
302 | if (!idle) | 301 | default_idle(); |
303 | idle = default_idle; | ||
304 | (*idle)(); | ||
305 | if (mark_idle) | 302 | if (mark_idle) |
306 | (*mark_idle)(0); | 303 | (*mark_idle)(0); |
307 | #ifdef CONFIG_SMP | 304 | #ifdef CONFIG_SMP |
diff --git a/arch/powerpc/kernel/epapr_paravirt.c b/arch/powerpc/kernel/epapr_paravirt.c index f3eab8594d9f..d44a571e45a7 100644 --- a/arch/powerpc/kernel/epapr_paravirt.c +++ b/arch/powerpc/kernel/epapr_paravirt.c | |||
@@ -23,8 +23,10 @@ | |||
23 | #include <asm/code-patching.h> | 23 | #include <asm/code-patching.h> |
24 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
25 | 25 | ||
26 | #if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64) | ||
26 | extern void epapr_ev_idle(void); | 27 | extern void epapr_ev_idle(void); |
27 | extern u32 epapr_ev_idle_start[]; | 28 | extern u32 epapr_ev_idle_start[]; |
29 | #endif | ||
28 | 30 | ||
29 | bool epapr_paravirt_enabled; | 31 | bool epapr_paravirt_enabled; |
30 | 32 | ||
@@ -47,11 +49,15 @@ static int __init epapr_paravirt_init(void) | |||
47 | 49 | ||
48 | for (i = 0; i < (len / 4); i++) { | 50 | for (i = 0; i < (len / 4); i++) { |
49 | patch_instruction(epapr_hypercall_start + i, insts[i]); | 51 | patch_instruction(epapr_hypercall_start + i, insts[i]); |
52 | #if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64) | ||
50 | patch_instruction(epapr_ev_idle_start + i, insts[i]); | 53 | patch_instruction(epapr_ev_idle_start + i, insts[i]); |
54 | #endif | ||
51 | } | 55 | } |
52 | 56 | ||
57 | #if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64) | ||
53 | if (of_get_property(hyper_node, "has-idle", NULL)) | 58 | if (of_get_property(hyper_node, "has-idle", NULL)) |
54 | ppc_md.power_save = epapr_ev_idle; | 59 | ppc_md.power_save = epapr_ev_idle; |
60 | #endif | ||
55 | 61 | ||
56 | epapr_paravirt_enabled = true; | 62 | epapr_paravirt_enabled = true; |
57 | 63 | ||
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 200afa5bcfb7..56bd92362ce1 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S | |||
@@ -1066,78 +1066,6 @@ unrecov_user_slb: | |||
1066 | #endif /* __DISABLED__ */ | 1066 | #endif /* __DISABLED__ */ |
1067 | 1067 | ||
1068 | 1068 | ||
1069 | /* | ||
1070 | * r13 points to the PACA, r9 contains the saved CR, | ||
1071 | * r12 contain the saved SRR1, SRR0 is still ready for return | ||
1072 | * r3 has the faulting address | ||
1073 | * r9 - r13 are saved in paca->exslb. | ||
1074 | * r3 is saved in paca->slb_r3 | ||
1075 | * We assume we aren't going to take any exceptions during this procedure. | ||
1076 | */ | ||
1077 | _GLOBAL(slb_miss_realmode) | ||
1078 | mflr r10 | ||
1079 | #ifdef CONFIG_RELOCATABLE | ||
1080 | mtctr r11 | ||
1081 | #endif | ||
1082 | |||
1083 | stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */ | ||
1084 | std r10,PACA_EXSLB+EX_LR(r13) /* save LR */ | ||
1085 | |||
1086 | bl .slb_allocate_realmode | ||
1087 | |||
1088 | /* All done -- return from exception. */ | ||
1089 | |||
1090 | ld r10,PACA_EXSLB+EX_LR(r13) | ||
1091 | ld r3,PACA_EXSLB+EX_R3(r13) | ||
1092 | lwz r9,PACA_EXSLB+EX_CCR(r13) /* get saved CR */ | ||
1093 | |||
1094 | mtlr r10 | ||
1095 | |||
1096 | andi. r10,r12,MSR_RI /* check for unrecoverable exception */ | ||
1097 | beq- 2f | ||
1098 | |||
1099 | .machine push | ||
1100 | .machine "power4" | ||
1101 | mtcrf 0x80,r9 | ||
1102 | mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */ | ||
1103 | .machine pop | ||
1104 | |||
1105 | RESTORE_PPR_PACA(PACA_EXSLB, r9) | ||
1106 | ld r9,PACA_EXSLB+EX_R9(r13) | ||
1107 | ld r10,PACA_EXSLB+EX_R10(r13) | ||
1108 | ld r11,PACA_EXSLB+EX_R11(r13) | ||
1109 | ld r12,PACA_EXSLB+EX_R12(r13) | ||
1110 | ld r13,PACA_EXSLB+EX_R13(r13) | ||
1111 | rfid | ||
1112 | b . /* prevent speculative execution */ | ||
1113 | |||
1114 | 2: mfspr r11,SPRN_SRR0 | ||
1115 | ld r10,PACAKBASE(r13) | ||
1116 | LOAD_HANDLER(r10,unrecov_slb) | ||
1117 | mtspr SPRN_SRR0,r10 | ||
1118 | ld r10,PACAKMSR(r13) | ||
1119 | mtspr SPRN_SRR1,r10 | ||
1120 | rfid | ||
1121 | b . | ||
1122 | |||
1123 | unrecov_slb: | ||
1124 | EXCEPTION_PROLOG_COMMON(0x4100, PACA_EXSLB) | ||
1125 | DISABLE_INTS | ||
1126 | bl .save_nvgprs | ||
1127 | 1: addi r3,r1,STACK_FRAME_OVERHEAD | ||
1128 | bl .unrecoverable_exception | ||
1129 | b 1b | ||
1130 | |||
1131 | |||
1132 | #ifdef CONFIG_PPC_970_NAP | ||
1133 | power4_fixup_nap: | ||
1134 | andc r9,r9,r10 | ||
1135 | std r9,TI_LOCAL_FLAGS(r11) | ||
1136 | ld r10,_LINK(r1) /* make idle task do the */ | ||
1137 | std r10,_NIP(r1) /* equivalent of a blr */ | ||
1138 | blr | ||
1139 | #endif | ||
1140 | |||
1141 | .align 7 | 1069 | .align 7 |
1142 | .globl alignment_common | 1070 | .globl alignment_common |
1143 | alignment_common: | 1071 | alignment_common: |
@@ -1336,6 +1264,78 @@ _GLOBAL(opal_mc_secondary_handler) | |||
1336 | 1264 | ||
1337 | 1265 | ||
1338 | /* | 1266 | /* |
1267 | * r13 points to the PACA, r9 contains the saved CR, | ||
1268 | * r12 contain the saved SRR1, SRR0 is still ready for return | ||
1269 | * r3 has the faulting address | ||
1270 | * r9 - r13 are saved in paca->exslb. | ||
1271 | * r3 is saved in paca->slb_r3 | ||
1272 | * We assume we aren't going to take any exceptions during this procedure. | ||
1273 | */ | ||
1274 | _GLOBAL(slb_miss_realmode) | ||
1275 | mflr r10 | ||
1276 | #ifdef CONFIG_RELOCATABLE | ||
1277 | mtctr r11 | ||
1278 | #endif | ||
1279 | |||
1280 | stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */ | ||
1281 | std r10,PACA_EXSLB+EX_LR(r13) /* save LR */ | ||
1282 | |||
1283 | bl .slb_allocate_realmode | ||
1284 | |||
1285 | /* All done -- return from exception. */ | ||
1286 | |||
1287 | ld r10,PACA_EXSLB+EX_LR(r13) | ||
1288 | ld r3,PACA_EXSLB+EX_R3(r13) | ||
1289 | lwz r9,PACA_EXSLB+EX_CCR(r13) /* get saved CR */ | ||
1290 | |||
1291 | mtlr r10 | ||
1292 | |||
1293 | andi. r10,r12,MSR_RI /* check for unrecoverable exception */ | ||
1294 | beq- 2f | ||
1295 | |||
1296 | .machine push | ||
1297 | .machine "power4" | ||
1298 | mtcrf 0x80,r9 | ||
1299 | mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */ | ||
1300 | .machine pop | ||
1301 | |||
1302 | RESTORE_PPR_PACA(PACA_EXSLB, r9) | ||
1303 | ld r9,PACA_EXSLB+EX_R9(r13) | ||
1304 | ld r10,PACA_EXSLB+EX_R10(r13) | ||
1305 | ld r11,PACA_EXSLB+EX_R11(r13) | ||
1306 | ld r12,PACA_EXSLB+EX_R12(r13) | ||
1307 | ld r13,PACA_EXSLB+EX_R13(r13) | ||
1308 | rfid | ||
1309 | b . /* prevent speculative execution */ | ||
1310 | |||
1311 | 2: mfspr r11,SPRN_SRR0 | ||
1312 | ld r10,PACAKBASE(r13) | ||
1313 | LOAD_HANDLER(r10,unrecov_slb) | ||
1314 | mtspr SPRN_SRR0,r10 | ||
1315 | ld r10,PACAKMSR(r13) | ||
1316 | mtspr SPRN_SRR1,r10 | ||
1317 | rfid | ||
1318 | b . | ||
1319 | |||
1320 | unrecov_slb: | ||
1321 | EXCEPTION_PROLOG_COMMON(0x4100, PACA_EXSLB) | ||
1322 | DISABLE_INTS | ||
1323 | bl .save_nvgprs | ||
1324 | 1: addi r3,r1,STACK_FRAME_OVERHEAD | ||
1325 | bl .unrecoverable_exception | ||
1326 | b 1b | ||
1327 | |||
1328 | |||
1329 | #ifdef CONFIG_PPC_970_NAP | ||
1330 | power4_fixup_nap: | ||
1331 | andc r9,r9,r10 | ||
1332 | std r9,TI_LOCAL_FLAGS(r11) | ||
1333 | ld r10,_LINK(r1) /* make idle task do the */ | ||
1334 | std r10,_NIP(r1) /* equivalent of a blr */ | ||
1335 | blr | ||
1336 | #endif | ||
1337 | |||
1338 | /* | ||
1339 | * Hash table stuff | 1339 | * Hash table stuff |
1340 | */ | 1340 | */ |
1341 | .align 7 | 1341 | .align 7 |
diff --git a/arch/tile/kernel/setup.c b/arch/tile/kernel/setup.c index d1e15f7b59c6..7a5aa1a7864e 100644 --- a/arch/tile/kernel/setup.c +++ b/arch/tile/kernel/setup.c | |||
@@ -1004,15 +1004,8 @@ void __cpuinit setup_cpu(int boot) | |||
1004 | 1004 | ||
1005 | #ifdef CONFIG_BLK_DEV_INITRD | 1005 | #ifdef CONFIG_BLK_DEV_INITRD |
1006 | 1006 | ||
1007 | /* | ||
1008 | * Note that the kernel can potentially support other compression | ||
1009 | * techniques than gz, though we don't do so by default. If we ever | ||
1010 | * decide to do so we can either look for other filename extensions, | ||
1011 | * or just allow a file with this name to be compressed with an | ||
1012 | * arbitrary compressor (somewhat counterintuitively). | ||
1013 | */ | ||
1014 | static int __initdata set_initramfs_file; | 1007 | static int __initdata set_initramfs_file; |
1015 | static char __initdata initramfs_file[128] = "initramfs.cpio.gz"; | 1008 | static char __initdata initramfs_file[128] = "initramfs"; |
1016 | 1009 | ||
1017 | static int __init setup_initramfs_file(char *str) | 1010 | static int __init setup_initramfs_file(char *str) |
1018 | { | 1011 | { |
@@ -1026,9 +1019,9 @@ static int __init setup_initramfs_file(char *str) | |||
1026 | early_param("initramfs_file", setup_initramfs_file); | 1019 | early_param("initramfs_file", setup_initramfs_file); |
1027 | 1020 | ||
1028 | /* | 1021 | /* |
1029 | * We look for an "initramfs.cpio.gz" file in the hvfs. | 1022 | * We look for a file called "initramfs" in the hvfs. If there is one, we |
1030 | * If there is one, we allocate some memory for it and it will be | 1023 | * allocate some memory for it and it will be unpacked to the initramfs. |
1031 | * unpacked to the initramfs. | 1024 | * If it's compressed, the initd code will uncompress it first. |
1032 | */ | 1025 | */ |
1033 | static void __init load_hv_initrd(void) | 1026 | static void __init load_hv_initrd(void) |
1034 | { | 1027 | { |
@@ -1038,10 +1031,16 @@ static void __init load_hv_initrd(void) | |||
1038 | 1031 | ||
1039 | fd = hv_fs_findfile((HV_VirtAddr) initramfs_file); | 1032 | fd = hv_fs_findfile((HV_VirtAddr) initramfs_file); |
1040 | if (fd == HV_ENOENT) { | 1033 | if (fd == HV_ENOENT) { |
1041 | if (set_initramfs_file) | 1034 | if (set_initramfs_file) { |
1042 | pr_warning("No such hvfs initramfs file '%s'\n", | 1035 | pr_warning("No such hvfs initramfs file '%s'\n", |
1043 | initramfs_file); | 1036 | initramfs_file); |
1044 | return; | 1037 | return; |
1038 | } else { | ||
1039 | /* Try old backwards-compatible name. */ | ||
1040 | fd = hv_fs_findfile((HV_VirtAddr)"initramfs.cpio.gz"); | ||
1041 | if (fd == HV_ENOENT) | ||
1042 | return; | ||
1043 | } | ||
1045 | } | 1044 | } |
1046 | BUG_ON(fd < 0); | 1045 | BUG_ON(fd < 0); |
1047 | stat = hv_fs_fstat(fd); | 1046 | stat = hv_fs_fstat(fd); |
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index c20d1ce62dc6..e709884d0ef9 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h | |||
@@ -382,14 +382,14 @@ HYPERVISOR_console_io(int cmd, int count, char *str) | |||
382 | return _hypercall3(int, console_io, cmd, count, str); | 382 | return _hypercall3(int, console_io, cmd, count, str); |
383 | } | 383 | } |
384 | 384 | ||
385 | extern int __must_check HYPERVISOR_physdev_op_compat(int, void *); | 385 | extern int __must_check xen_physdev_op_compat(int, void *); |
386 | 386 | ||
387 | static inline int | 387 | static inline int |
388 | HYPERVISOR_physdev_op(int cmd, void *arg) | 388 | HYPERVISOR_physdev_op(int cmd, void *arg) |
389 | { | 389 | { |
390 | int rc = _hypercall2(int, physdev_op, cmd, arg); | 390 | int rc = _hypercall2(int, physdev_op, cmd, arg); |
391 | if (unlikely(rc == -ENOSYS)) | 391 | if (unlikely(rc == -ENOSYS)) |
392 | rc = HYPERVISOR_physdev_op_compat(cmd, arg); | 392 | rc = xen_physdev_op_compat(cmd, arg); |
393 | return rc; | 393 | return rc; |
394 | } | 394 | } |
395 | 395 | ||
diff --git a/arch/x86/include/uapi/asm/msr-index.h b/arch/x86/include/uapi/asm/msr-index.h index 892ce40a7470..7a060f4b411f 100644 --- a/arch/x86/include/uapi/asm/msr-index.h +++ b/arch/x86/include/uapi/asm/msr-index.h | |||
@@ -44,6 +44,7 @@ | |||
44 | #define SNB_C1_AUTO_UNDEMOTE (1UL << 27) | 44 | #define SNB_C1_AUTO_UNDEMOTE (1UL << 27) |
45 | #define SNB_C3_AUTO_UNDEMOTE (1UL << 28) | 45 | #define SNB_C3_AUTO_UNDEMOTE (1UL << 28) |
46 | 46 | ||
47 | #define MSR_PLATFORM_INFO 0x000000ce | ||
47 | #define MSR_MTRRcap 0x000000fe | 48 | #define MSR_MTRRcap 0x000000fe |
48 | #define MSR_IA32_BBL_CR_CTL 0x00000119 | 49 | #define MSR_IA32_BBL_CR_CTL 0x00000119 |
49 | #define MSR_IA32_BBL_CR_CTL3 0x0000011e | 50 | #define MSR_IA32_BBL_CR_CTL3 0x0000011e |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index e8e34938c57d..6afbb2ca9a0a 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -1467,8 +1467,6 @@ static void __init xen_write_cr3_init(unsigned long cr3) | |||
1467 | __xen_write_cr3(true, cr3); | 1467 | __xen_write_cr3(true, cr3); |
1468 | 1468 | ||
1469 | xen_mc_issue(PARAVIRT_LAZY_CPU); /* interrupts restored */ | 1469 | xen_mc_issue(PARAVIRT_LAZY_CPU); /* interrupts restored */ |
1470 | |||
1471 | pv_mmu_ops.write_cr3 = &xen_write_cr3; | ||
1472 | } | 1470 | } |
1473 | #endif | 1471 | #endif |
1474 | 1472 | ||
@@ -2122,6 +2120,7 @@ static void __init xen_post_allocator_init(void) | |||
2122 | #endif | 2120 | #endif |
2123 | 2121 | ||
2124 | #ifdef CONFIG_X86_64 | 2122 | #ifdef CONFIG_X86_64 |
2123 | pv_mmu_ops.write_cr3 = &xen_write_cr3; | ||
2125 | SetPagePinned(virt_to_page(level3_user_vsyscall)); | 2124 | SetPagePinned(virt_to_page(level3_user_vsyscall)); |
2126 | #endif | 2125 | #endif |
2127 | xen_mark_init_mm_pinned(); | 2126 | xen_mark_init_mm_pinned(); |