aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/Kconfig2
-rw-r--r--arch/alpha/kernel/pci.c2
-rw-r--r--arch/alpha/kernel/smp.c6
-rw-r--r--arch/alpha/kernel/traps.c4
-rw-r--r--arch/ia64/include/asm/ptrace.h2
-rw-r--r--arch/ia64/sn/kernel/io_init.c2
-rw-r--r--arch/m32r/kernel/head.S4
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S1
-rw-r--r--arch/mips/include/asm/bug.h29
-rw-r--r--arch/mips/include/asm/ptrace.h4
-rw-r--r--arch/mn10300/kernel/gdb-stub.c24
-rw-r--r--arch/parisc/include/asm/parisc-device.h4
-rw-r--r--arch/parisc/include/asm/posix_types.h3
-rw-r--r--arch/parisc/include/asm/ptrace.h2
-rw-r--r--arch/parisc/kernel/drivers.c6
-rw-r--r--arch/parisc/kernel/traps.c43
-rw-r--r--arch/powerpc/include/asm/mmu-hash64.h1
-rw-r--r--arch/powerpc/include/asm/ptrace.h2
-rw-r--r--arch/powerpc/mm/hugetlbpage.c2
-rw-r--r--arch/s390/defconfig74
-rw-r--r--arch/s390/include/asm/pgtable.h2
-rw-r--r--arch/s390/include/asm/ptrace.h4
-rw-r--r--arch/s390/include/asm/syscall.h28
-rw-r--r--arch/s390/kernel/asm-offsets.c2
-rw-r--r--arch/s390/kernel/compat_signal.c2
-rw-r--r--arch/s390/kernel/entry.S21
-rw-r--r--arch/s390/kernel/entry64.S23
-rw-r--r--arch/s390/kernel/init_task.c2
-rw-r--r--arch/s390/kernel/ptrace.c2
-rw-r--r--arch/s390/kernel/signal.c6
-rw-r--r--arch/s390/kernel/time.c13
-rw-r--r--arch/s390/kernel/vmlinux.lds.S3
-rw-r--r--arch/sparc/include/asm/ptrace_64.h2
-rw-r--r--arch/sparc/kernel/cpu.c2
-rw-r--r--arch/sparc/kernel/head.S2
-rw-r--r--arch/sparc/kernel/smp.c4
-rw-r--r--arch/sparc/kernel/sun4d_smp.c4
-rw-r--r--arch/sparc/kernel/sun4m_smp.c2
-rw-r--r--arch/sparc/kernel/trampoline.S4
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S1
-rw-r--r--arch/sparc/mm/srmmu.c14
-rw-r--r--arch/sparc64/kernel/pci_fire.c2
-rw-r--r--arch/sparc64/kernel/pci_psycho.c4
-rw-r--r--arch/sparc64/kernel/pci_sun4v.c2
-rw-r--r--arch/sparc64/kernel/smp.c4
-rw-r--r--arch/sparc64/mm/init.c2
-rw-r--r--arch/x86/boot/tty.c2
-rw-r--r--arch/x86/include/asm/ds.h6
-rw-r--r--arch/x86/include/asm/pci_64.h14
-rw-r--r--arch/x86/include/asm/ptrace.h2
-rw-r--r--arch/x86/kernel/Makefile2
-rw-r--r--arch/x86/kernel/apic.c2
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k8.c18
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k8.h17
-rw-r--r--arch/x86/kernel/ds.c88
-rw-r--r--arch/x86/kernel/i387.c2
-rw-r--r--arch/x86/kernel/io_apic.c48
-rw-r--r--arch/x86/kernel/kvmclock.c2
-rw-r--r--arch/x86/kernel/pci-calgary_64.c2
-rw-r--r--arch/x86/kernel/xsave.c2
-rw-r--r--arch/x86/oprofile/op_model_ppro.c2
-rw-r--r--arch/x86/pci/fixup.c25
-rw-r--r--arch/x86/xen/mmu.c21
-rw-r--r--arch/x86/xen/smp.c2
-rw-r--r--arch/x86/xen/xen-ops.h2
65 files changed, 331 insertions, 302 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index 8977d99987cb..471e72dbaf8b 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -79,8 +79,6 @@ config HAVE_KRETPROBES
79# task_pt_regs() in asm/processor.h or asm/ptrace.h 79# task_pt_regs() in asm/processor.h or asm/ptrace.h
80# arch_has_single_step() if there is hardware single-step support 80# arch_has_single_step() if there is hardware single-step support
81# arch_has_block_step() if there is hardware block-step support 81# arch_has_block_step() if there is hardware block-step support
82# arch_ptrace() and not #define __ARCH_SYS_PTRACE
83# compat_arch_ptrace() and #define __ARCH_WANT_COMPAT_SYS_PTRACE
84# asm/syscall.h supplying asm-generic/syscall.h interface 82# asm/syscall.h supplying asm-generic/syscall.h interface
85# linux/regset.h user_regset interfaces 83# linux/regset.h user_regset interfaces
86# CORE_DUMP_USE_REGSET #define'd in linux/elf.h 84# CORE_DUMP_USE_REGSET #define'd in linux/elf.h
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index 5cf45fc51343..ff8cb638472e 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -338,7 +338,7 @@ common_swizzle(struct pci_dev *dev, u8 *pinp)
338 return PCI_SLOT(dev->devfn); 338 return PCI_SLOT(dev->devfn);
339} 339}
340 340
341void __devinit 341void
342pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, 342pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
343 struct resource *res) 343 struct resource *res)
344{ 344{
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index e657c45d91d2..cf7da10097bb 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -121,7 +121,7 @@ wait_boot_cpu_to_stop(int cpuid)
121/* 121/*
122 * Where secondaries begin a life of C. 122 * Where secondaries begin a life of C.
123 */ 123 */
124void __init 124void __cpuinit
125smp_callin(void) 125smp_callin(void)
126{ 126{
127 int cpuid = hard_smp_processor_id(); 127 int cpuid = hard_smp_processor_id();
@@ -198,7 +198,7 @@ wait_for_txrdy (unsigned long cpumask)
198 * Send a message to a secondary's console. "START" is one such 198 * Send a message to a secondary's console. "START" is one such
199 * interesting message. ;-) 199 * interesting message. ;-)
200 */ 200 */
201static void __init 201static void __cpuinit
202send_secondary_console_msg(char *str, int cpuid) 202send_secondary_console_msg(char *str, int cpuid)
203{ 203{
204 struct percpu_struct *cpu; 204 struct percpu_struct *cpu;
@@ -289,7 +289,7 @@ recv_secondary_console_msg(void)
289/* 289/*
290 * Convince the console to have a secondary cpu begin execution. 290 * Convince the console to have a secondary cpu begin execution.
291 */ 291 */
292static int __init 292static int __cpuinit
293secondary_cpu_start(int cpuid, struct task_struct *idle) 293secondary_cpu_start(int cpuid, struct task_struct *idle)
294{ 294{
295 struct percpu_struct *cpu; 295 struct percpu_struct *cpu;
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
index c778779007fc..cefc5a355ef9 100644
--- a/arch/alpha/kernel/traps.c
+++ b/arch/alpha/kernel/traps.c
@@ -31,7 +31,7 @@
31 31
32static int opDEC_fix; 32static int opDEC_fix;
33 33
34static void __init 34static void __cpuinit
35opDEC_check(void) 35opDEC_check(void)
36{ 36{
37 __asm__ __volatile__ ( 37 __asm__ __volatile__ (
@@ -1072,7 +1072,7 @@ give_sigbus:
1072 return; 1072 return;
1073} 1073}
1074 1074
1075void __init 1075void __cpuinit
1076trap_init(void) 1076trap_init(void)
1077{ 1077{
1078 /* Tell PAL-code what global pointer we want in the kernel. */ 1078 /* Tell PAL-code what global pointer we want in the kernel. */
diff --git a/arch/ia64/include/asm/ptrace.h b/arch/ia64/include/asm/ptrace.h
index 6417c1ecb44e..14055c636adf 100644
--- a/arch/ia64/include/asm/ptrace.h
+++ b/arch/ia64/include/asm/ptrace.h
@@ -325,8 +325,6 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs)
325 #define arch_has_block_step() (1) 325 #define arch_has_block_step() (1)
326 extern void user_enable_block_step(struct task_struct *); 326 extern void user_enable_block_step(struct task_struct *);
327 327
328#define __ARCH_WANT_COMPAT_SYS_PTRACE
329
330#endif /* !__KERNEL__ */ 328#endif /* !__KERNEL__ */
331 329
332/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */ 330/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index c3aa851d1ca6..4e1801bad83a 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -292,7 +292,7 @@ EXPORT_SYMBOL(sn_io_slot_fixup);
292 * sn_pci_controller_fixup() - This routine sets up a bus's resources 292 * sn_pci_controller_fixup() - This routine sets up a bus's resources
293 * consistent with the Linux PCI abstraction layer. 293 * consistent with the Linux PCI abstraction layer.
294 */ 294 */
295static void 295static void __init
296sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) 296sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
297{ 297{
298 s64 status = 0; 298 s64 status = 0;
diff --git a/arch/m32r/kernel/head.S b/arch/m32r/kernel/head.S
index 40180778a5c7..90916067b9c1 100644
--- a/arch/m32r/kernel/head.S
+++ b/arch/m32r/kernel/head.S
@@ -23,7 +23,7 @@ __INITDATA
23/* 23/*
24 * References to members of the boot_cpu_data structure. 24 * References to members of the boot_cpu_data structure.
25 */ 25 */
26 .text 26.section .text.head, "ax"
27 .global start_kernel 27 .global start_kernel
28 .global __bss_start 28 .global __bss_start
29 .global _end 29 .global _end
@@ -133,7 +133,6 @@ loop1:
133/* 133/*
134 * AP startup routine 134 * AP startup routine
135 */ 135 */
136 .text
137 .global eit_vector 136 .global eit_vector
138ENTRY(startup_AP) 137ENTRY(startup_AP)
139;; setup EVB 138;; setup EVB
@@ -230,6 +229,7 @@ ENTRY(startup_AP)
230 nop 229 nop
231#endif /* CONFIG_SMP */ 230#endif /* CONFIG_SMP */
232 231
232 .text
233ENTRY(stack_start) 233ENTRY(stack_start)
234 .long init_thread_union+8192 234 .long init_thread_union+8192
235 .long __KERNEL_DS 235 .long __KERNEL_DS
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
index 15a6f36c06db..9db05df20c0e 100644
--- a/arch/m32r/kernel/vmlinux.lds.S
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -27,6 +27,7 @@ SECTIONS
27 _text = .; /* Text and read-only data */ 27 _text = .; /* Text and read-only data */
28 .boot : { *(.boot) } = 0 28 .boot : { *(.boot) } = 0
29 .text : { 29 .text : {
30 *(.text.head)
30 TEXT_TEXT 31 TEXT_TEXT
31 SCHED_TEXT 32 SCHED_TEXT
32 LOCK_TEXT 33 LOCK_TEXT
diff --git a/arch/mips/include/asm/bug.h b/arch/mips/include/asm/bug.h
index 7eb63de808bc..08ea46863fe5 100644
--- a/arch/mips/include/asm/bug.h
+++ b/arch/mips/include/asm/bug.h
@@ -7,20 +7,31 @@
7 7
8#include <asm/break.h> 8#include <asm/break.h>
9 9
10#define BUG() \ 10static inline void __noreturn BUG(void)
11do { \ 11{
12 __asm__ __volatile__("break %0" : : "i" (BRK_BUG)); \ 12 __asm__ __volatile__("break %0" : : "i" (BRK_BUG));
13} while (0) 13 /* Fool GCC into thinking the function doesn't return. */
14 while (1)
15 ;
16}
14 17
15#define HAVE_ARCH_BUG 18#define HAVE_ARCH_BUG
16 19
17#if (_MIPS_ISA > _MIPS_ISA_MIPS1) 20#if (_MIPS_ISA > _MIPS_ISA_MIPS1)
18 21
19#define BUG_ON(condition) \ 22static inline void __BUG_ON(unsigned long condition)
20do { \ 23{
21 __asm__ __volatile__("tne $0, %0, %1" \ 24 if (__builtin_constant_p(condition)) {
22 : : "r" (condition), "i" (BRK_BUG)); \ 25 if (condition)
23} while (0) 26 BUG();
27 else
28 return;
29 }
30 __asm__ __volatile__("tne $0, %0, %1"
31 : : "r" (condition), "i" (BRK_BUG));
32}
33
34#define BUG_ON(C) __BUG_ON((unsigned long)(C))
24 35
25#define HAVE_ARCH_BUG_ON 36#define HAVE_ARCH_BUG_ON
26 37
diff --git a/arch/mips/include/asm/ptrace.h b/arch/mips/include/asm/ptrace.h
index 813abd16255d..c2c8bac43307 100644
--- a/arch/mips/include/asm/ptrace.h
+++ b/arch/mips/include/asm/ptrace.h
@@ -9,10 +9,6 @@
9#ifndef _ASM_PTRACE_H 9#ifndef _ASM_PTRACE_H
10#define _ASM_PTRACE_H 10#define _ASM_PTRACE_H
11 11
12#ifdef CONFIG_64BIT
13#define __ARCH_WANT_COMPAT_SYS_PTRACE
14#endif
15
16/* 0 - 31 are integer registers, 32 - 63 are fp registers. */ 12/* 0 - 31 are integer registers, 32 - 63 are fp registers. */
17#define FPR_BASE 32 13#define FPR_BASE 32
18#define PC 64 14#define PC 64
diff --git a/arch/mn10300/kernel/gdb-stub.c b/arch/mn10300/kernel/gdb-stub.c
index 54be6afb5555..0ea7482c1522 100644
--- a/arch/mn10300/kernel/gdb-stub.c
+++ b/arch/mn10300/kernel/gdb-stub.c
@@ -522,17 +522,7 @@ static int gdbstub_single_step(struct pt_regs *regs)
522 } else { 522 } else {
523 switch (cur) { 523 switch (cur) {
524 /* Bxx (d8,PC) */ 524 /* Bxx (d8,PC) */
525 case 0xc0: 525 case 0xc0 ... 0xca:
526 case 0xc1:
527 case 0xc2:
528 case 0xc3:
529 case 0xc4:
530 case 0xc5:
531 case 0xc6:
532 case 0xc7:
533 case 0xc8:
534 case 0xc9:
535 case 0xca:
536 if (gdbstub_read_byte(pc + 1, (u8 *) &x) < 0) 526 if (gdbstub_read_byte(pc + 1, (u8 *) &x) < 0)
537 goto fault; 527 goto fault;
538 if (!__gdbstub_mark_bp(pc + 2, 0)) 528 if (!__gdbstub_mark_bp(pc + 2, 0))
@@ -543,17 +533,7 @@ static int gdbstub_single_step(struct pt_regs *regs)
543 break; 533 break;
544 534
545 /* LXX (d8,PC) */ 535 /* LXX (d8,PC) */
546 case 0xd0: 536 case 0xd0 ... 0xda:
547 case 0xd1:
548 case 0xd2:
549 case 0xd3:
550 case 0xd4:
551 case 0xd5:
552 case 0xd6:
553 case 0xd7:
554 case 0xd8:
555 case 0xd9:
556 case 0xda:
557 if (!__gdbstub_mark_bp(pc + 1, 0)) 537 if (!__gdbstub_mark_bp(pc + 1, 0))
558 goto fault; 538 goto fault;
559 if (regs->pc != regs->lar && 539 if (regs->pc != regs->lar &&
diff --git a/arch/parisc/include/asm/parisc-device.h b/arch/parisc/include/asm/parisc-device.h
index 7aa13f2add7a..9afdad6c2ffb 100644
--- a/arch/parisc/include/asm/parisc-device.h
+++ b/arch/parisc/include/asm/parisc-device.h
@@ -42,9 +42,9 @@ struct parisc_driver {
42#define to_parisc_driver(d) container_of(d, struct parisc_driver, drv) 42#define to_parisc_driver(d) container_of(d, struct parisc_driver, drv)
43#define parisc_parent(d) to_parisc_device(d->dev.parent) 43#define parisc_parent(d) to_parisc_device(d->dev.parent)
44 44
45static inline char *parisc_pathname(struct parisc_device *d) 45static inline const char *parisc_pathname(struct parisc_device *d)
46{ 46{
47 return d->dev.bus_id; 47 return dev_name(&d->dev);
48} 48}
49 49
50static inline void 50static inline void
diff --git a/arch/parisc/include/asm/posix_types.h b/arch/parisc/include/asm/posix_types.h
index bb725a6630bb..00da29a340ba 100644
--- a/arch/parisc/include/asm/posix_types.h
+++ b/arch/parisc/include/asm/posix_types.h
@@ -24,13 +24,12 @@ typedef int __kernel_daddr_t;
24typedef unsigned long __kernel_size_t; 24typedef unsigned long __kernel_size_t;
25typedef long __kernel_ssize_t; 25typedef long __kernel_ssize_t;
26typedef long __kernel_ptrdiff_t; 26typedef long __kernel_ptrdiff_t;
27typedef long __kernel_time_t;
28#else 27#else
29typedef unsigned int __kernel_size_t; 28typedef unsigned int __kernel_size_t;
30typedef int __kernel_ssize_t; 29typedef int __kernel_ssize_t;
31typedef int __kernel_ptrdiff_t; 30typedef int __kernel_ptrdiff_t;
32typedef long __kernel_time_t;
33#endif 31#endif
32typedef long __kernel_time_t;
34typedef char * __kernel_caddr_t; 33typedef char * __kernel_caddr_t;
35 34
36typedef unsigned short __kernel_uid16_t; 35typedef unsigned short __kernel_uid16_t;
diff --git a/arch/parisc/include/asm/ptrace.h b/arch/parisc/include/asm/ptrace.h
index afa5333187b4..302f68dc889c 100644
--- a/arch/parisc/include/asm/ptrace.h
+++ b/arch/parisc/include/asm/ptrace.h
@@ -47,8 +47,6 @@ struct pt_regs {
47 47
48#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS)) 48#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
49 49
50#define __ARCH_WANT_COMPAT_SYS_PTRACE
51
52struct task_struct; 50struct task_struct;
53#define arch_has_single_step() 1 51#define arch_has_single_step() 1
54void user_disable_single_step(struct task_struct *task); 52void user_disable_single_step(struct task_struct *task);
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c
index 2ca654bd6322..884b7ce16a3b 100644
--- a/arch/parisc/kernel/drivers.c
+++ b/arch/parisc/kernel/drivers.c
@@ -43,7 +43,7 @@ struct hppa_dma_ops *hppa_dma_ops __read_mostly;
43EXPORT_SYMBOL(hppa_dma_ops); 43EXPORT_SYMBOL(hppa_dma_ops);
44 44
45static struct device root = { 45static struct device root = {
46 .bus_id = "parisc", 46 .init_name = "parisc",
47}; 47};
48 48
49static inline int check_dev(struct device *dev) 49static inline int check_dev(struct device *dev)
@@ -393,7 +393,8 @@ EXPORT_SYMBOL(print_pci_hwpath);
393static void setup_bus_id(struct parisc_device *padev) 393static void setup_bus_id(struct parisc_device *padev)
394{ 394{
395 struct hardware_path path; 395 struct hardware_path path;
396 char *output = padev->dev.bus_id; 396 char name[20];
397 char *output = name;
397 int i; 398 int i;
398 399
399 get_node_path(padev->dev.parent, &path); 400 get_node_path(padev->dev.parent, &path);
@@ -404,6 +405,7 @@ static void setup_bus_id(struct parisc_device *padev)
404 output += sprintf(output, "%u:", (unsigned char) path.bc[i]); 405 output += sprintf(output, "%u:", (unsigned char) path.bc[i]);
405 } 406 }
406 sprintf(output, "%u", (unsigned char) padev->hw_path); 407 sprintf(output, "%u", (unsigned char) padev->hw_path);
408 dev_set_name(&padev->dev, name);
407} 409}
408 410
409struct parisc_device * create_tree_node(char id, struct device *parent) 411struct parisc_device * create_tree_node(char id, struct device *parent)
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 675f1d098f05..4c771cd580ec 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -24,7 +24,6 @@
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/console.h> 26#include <linux/console.h>
27#include <linux/kallsyms.h>
28#include <linux/bug.h> 27#include <linux/bug.h>
29 28
30#include <asm/assembly.h> 29#include <asm/assembly.h>
@@ -51,7 +50,7 @@
51DEFINE_SPINLOCK(pa_dbit_lock); 50DEFINE_SPINLOCK(pa_dbit_lock);
52#endif 51#endif
53 52
54void parisc_show_stack(struct task_struct *t, unsigned long *sp, 53static void parisc_show_stack(struct task_struct *task, unsigned long *sp,
55 struct pt_regs *regs); 54 struct pt_regs *regs);
56 55
57static int printbinary(char *buf, unsigned long x, int nbits) 56static int printbinary(char *buf, unsigned long x, int nbits)
@@ -121,18 +120,19 @@ static void print_fr(char *level, struct pt_regs *regs)
121 120
122void show_regs(struct pt_regs *regs) 121void show_regs(struct pt_regs *regs)
123{ 122{
124 int i; 123 int i, user;
125 char *level; 124 char *level;
126 unsigned long cr30, cr31; 125 unsigned long cr30, cr31;
127 126
128 level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT; 127 user = user_mode(regs);
128 level = user ? KERN_DEBUG : KERN_CRIT;
129 129
130 print_gr(level, regs); 130 print_gr(level, regs);
131 131
132 for (i = 0; i < 8; i += 4) 132 for (i = 0; i < 8; i += 4)
133 PRINTREGS(level, regs->sr, "sr", RFMT, i); 133 PRINTREGS(level, regs->sr, "sr", RFMT, i);
134 134
135 if (user_mode(regs)) 135 if (user)
136 print_fr(level, regs); 136 print_fr(level, regs);
137 137
138 cr30 = mfctl(30); 138 cr30 = mfctl(30);
@@ -145,14 +145,18 @@ void show_regs(struct pt_regs *regs)
145 printk("%s CPU: %8d CR30: " RFMT " CR31: " RFMT "\n", 145 printk("%s CPU: %8d CR30: " RFMT " CR31: " RFMT "\n",
146 level, current_thread_info()->cpu, cr30, cr31); 146 level, current_thread_info()->cpu, cr30, cr31);
147 printk("%s ORIG_R28: " RFMT "\n", level, regs->orig_r28); 147 printk("%s ORIG_R28: " RFMT "\n", level, regs->orig_r28);
148 printk(level); 148
149 print_symbol(" IAOQ[0]: %s\n", regs->iaoq[0]); 149 if (user) {
150 printk(level); 150 printk("%s IAOQ[0]: " RFMT "\n", level, regs->iaoq[0]);
151 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); 151 printk("%s IAOQ[1]: " RFMT "\n", level, regs->iaoq[1]);
152 printk(level); 152 printk("%s RP(r2): " RFMT "\n", level, regs->gr[2]);
153 print_symbol(" RP(r2): %s\n", regs->gr[2]); 153 } else {
154 154 printk("%s IAOQ[0]: %pS\n", level, (void *) regs->iaoq[0]);
155 parisc_show_stack(current, NULL, regs); 155 printk("%s IAOQ[1]: %pS\n", level, (void *) regs->iaoq[1]);
156 printk("%s RP(r2): %pS\n", level, (void *) regs->gr[2]);
157
158 parisc_show_stack(current, NULL, regs);
159 }
156} 160}
157 161
158 162
@@ -173,20 +177,15 @@ static void do_show_stack(struct unwind_frame_info *info)
173 break; 177 break;
174 178
175 if (__kernel_text_address(info->ip)) { 179 if (__kernel_text_address(info->ip)) {
176 printk("%s [<" RFMT ">] ", (i&0x3)==1 ? KERN_CRIT : "", info->ip); 180 printk(KERN_CRIT " [<" RFMT ">] %pS\n",
177#ifdef CONFIG_KALLSYMS 181 info->ip, (void *) info->ip);
178 print_symbol("%s\n", info->ip);
179#else
180 if ((i & 0x03) == 0)
181 printk("\n");
182#endif
183 i++; 182 i++;
184 } 183 }
185 } 184 }
186 printk("\n"); 185 printk(KERN_CRIT "\n");
187} 186}
188 187
189void parisc_show_stack(struct task_struct *task, unsigned long *sp, 188static void parisc_show_stack(struct task_struct *task, unsigned long *sp,
190 struct pt_regs *regs) 189 struct pt_regs *regs)
191{ 190{
192 struct unwind_frame_info info; 191 struct unwind_frame_info info;
diff --git a/arch/powerpc/include/asm/mmu-hash64.h b/arch/powerpc/include/asm/mmu-hash64.h
index 5a441742ffba..68b752626808 100644
--- a/arch/powerpc/include/asm/mmu-hash64.h
+++ b/arch/powerpc/include/asm/mmu-hash64.h
@@ -280,7 +280,6 @@ extern int hash_huge_page(struct mm_struct *mm, unsigned long access,
280extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend, 280extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
281 unsigned long pstart, unsigned long prot, 281 unsigned long pstart, unsigned long prot,
282 int psize, int ssize); 282 int psize, int ssize);
283extern void set_huge_psize(int psize);
284extern void add_gpage(unsigned long addr, unsigned long page_size, 283extern void add_gpage(unsigned long addr, unsigned long page_size,
285 unsigned long number_of_pages); 284 unsigned long number_of_pages);
286extern void demote_segment_4k(struct mm_struct *mm, unsigned long addr); 285extern void demote_segment_4k(struct mm_struct *mm, unsigned long addr);
diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h
index 280a90cc9894..c9c678fb2538 100644
--- a/arch/powerpc/include/asm/ptrace.h
+++ b/arch/powerpc/include/asm/ptrace.h
@@ -55,8 +55,6 @@ struct pt_regs {
55 55
56#ifdef __powerpc64__ 56#ifdef __powerpc64__
57 57
58#define __ARCH_WANT_COMPAT_SYS_PTRACE
59
60#define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ 58#define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */
61#define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ 59#define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */
62#define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) 60#define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265)
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index a117024ab8cd..7bbf4e4ed430 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -677,7 +677,7 @@ repeat:
677 return err; 677 return err;
678} 678}
679 679
680void set_huge_psize(int psize) 680static void __init set_huge_psize(int psize)
681{ 681{
682 /* Check that it is a page size supported by the hardware and 682 /* Check that it is a page size supported by the hardware and
683 * that it fits within pagetable limits. */ 683 * that it fits within pagetable limits. */
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 9b0bc2c9fba0..a0e748da9909 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.27-rc4 3# Linux kernel version: 2.6.28-rc6
4# Thu Aug 21 19:43:29 2008 4# Thu Nov 27 11:00:49 2008
5# 5#
6CONFIG_SCHED_MC=y 6CONFIG_SCHED_MC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -45,6 +45,7 @@ CONFIG_LOG_BUF_SHIFT=17
45CONFIG_CGROUPS=y 45CONFIG_CGROUPS=y
46# CONFIG_CGROUP_DEBUG is not set 46# CONFIG_CGROUP_DEBUG is not set
47CONFIG_CGROUP_NS=y 47CONFIG_CGROUP_NS=y
48# CONFIG_CGROUP_FREEZER is not set
48# CONFIG_CGROUP_DEVICE is not set 49# CONFIG_CGROUP_DEVICE is not set
49# CONFIG_CPUSETS is not set 50# CONFIG_CPUSETS is not set
50CONFIG_GROUP_SCHED=y 51CONFIG_GROUP_SCHED=y
@@ -84,6 +85,7 @@ CONFIG_SIGNALFD=y
84CONFIG_TIMERFD=y 85CONFIG_TIMERFD=y
85CONFIG_EVENTFD=y 86CONFIG_EVENTFD=y
86CONFIG_SHMEM=y 87CONFIG_SHMEM=y
88CONFIG_AIO=y
87CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
88CONFIG_SLAB=y 90CONFIG_SLAB=y
89# CONFIG_SLUB is not set 91# CONFIG_SLUB is not set
@@ -92,16 +94,10 @@ CONFIG_SLAB=y
92# CONFIG_MARKERS is not set 94# CONFIG_MARKERS is not set
93CONFIG_HAVE_OPROFILE=y 95CONFIG_HAVE_OPROFILE=y
94CONFIG_KPROBES=y 96CONFIG_KPROBES=y
95# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
96CONFIG_KRETPROBES=y 97CONFIG_KRETPROBES=y
97# CONFIG_HAVE_IOREMAP_PROT is not set
98CONFIG_HAVE_KPROBES=y 98CONFIG_HAVE_KPROBES=y
99CONFIG_HAVE_KRETPROBES=y 99CONFIG_HAVE_KRETPROBES=y
100# CONFIG_HAVE_ARCH_TRACEHOOK is not set 100CONFIG_HAVE_ARCH_TRACEHOOK=y
101# CONFIG_HAVE_DMA_ATTRS is not set
102# CONFIG_USE_GENERIC_SMP_HELPERS is not set
103# CONFIG_HAVE_CLK is not set
104CONFIG_PROC_PAGE_MONITOR=y
105# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 101# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
106CONFIG_SLABINFO=y 102CONFIG_SLABINFO=y
107CONFIG_RT_MUTEXES=y 103CONFIG_RT_MUTEXES=y
@@ -135,6 +131,7 @@ CONFIG_DEFAULT_DEADLINE=y
135CONFIG_DEFAULT_IOSCHED="deadline" 131CONFIG_DEFAULT_IOSCHED="deadline"
136CONFIG_PREEMPT_NOTIFIERS=y 132CONFIG_PREEMPT_NOTIFIERS=y
137CONFIG_CLASSIC_RCU=y 133CONFIG_CLASSIC_RCU=y
134# CONFIG_FREEZER is not set
138 135
139# 136#
140# Base setup 137# Base setup
@@ -189,7 +186,6 @@ CONFIG_SELECT_MEMORY_MODEL=y
189CONFIG_SPARSEMEM_MANUAL=y 186CONFIG_SPARSEMEM_MANUAL=y
190CONFIG_SPARSEMEM=y 187CONFIG_SPARSEMEM=y
191CONFIG_HAVE_MEMORY_PRESENT=y 188CONFIG_HAVE_MEMORY_PRESENT=y
192# CONFIG_SPARSEMEM_STATIC is not set
193CONFIG_SPARSEMEM_EXTREME=y 189CONFIG_SPARSEMEM_EXTREME=y
194CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 190CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
195CONFIG_SPARSEMEM_VMEMMAP=y 191CONFIG_SPARSEMEM_VMEMMAP=y
@@ -200,9 +196,11 @@ CONFIG_PAGEFLAGS_EXTENDED=y
200CONFIG_SPLIT_PTLOCK_CPUS=4 196CONFIG_SPLIT_PTLOCK_CPUS=4
201CONFIG_MIGRATION=y 197CONFIG_MIGRATION=y
202CONFIG_RESOURCES_64BIT=y 198CONFIG_RESOURCES_64BIT=y
199CONFIG_PHYS_ADDR_T_64BIT=y
203CONFIG_ZONE_DMA_FLAG=1 200CONFIG_ZONE_DMA_FLAG=1
204CONFIG_BOUNCE=y 201CONFIG_BOUNCE=y
205CONFIG_VIRT_TO_BUS=y 202CONFIG_VIRT_TO_BUS=y
203CONFIG_UNEVICTABLE_LRU=y
206 204
207# 205#
208# I/O subsystem configuration 206# I/O subsystem configuration
@@ -220,6 +218,8 @@ CONFIG_IPL=y
220CONFIG_IPL_VM=y 218CONFIG_IPL_VM=y
221CONFIG_BINFMT_ELF=y 219CONFIG_BINFMT_ELF=y
222CONFIG_COMPAT_BINFMT_ELF=y 220CONFIG_COMPAT_BINFMT_ELF=y
221# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
222# CONFIG_HAVE_AOUT is not set
223CONFIG_BINFMT_MISC=m 223CONFIG_BINFMT_MISC=m
224CONFIG_FORCE_MAX_ZONEORDER=9 224CONFIG_FORCE_MAX_ZONEORDER=9
225# CONFIG_PROCESS_DEBUG is not set 225# CONFIG_PROCESS_DEBUG is not set
@@ -255,7 +255,7 @@ CONFIG_XFRM=y
255# CONFIG_XFRM_STATISTICS is not set 255# CONFIG_XFRM_STATISTICS is not set
256CONFIG_NET_KEY=y 256CONFIG_NET_KEY=y
257# CONFIG_NET_KEY_MIGRATE is not set 257# CONFIG_NET_KEY_MIGRATE is not set
258CONFIG_IUCV=m 258CONFIG_IUCV=y
259CONFIG_AFIUCV=m 259CONFIG_AFIUCV=m
260CONFIG_INET=y 260CONFIG_INET=y
261CONFIG_IP_MULTICAST=y 261CONFIG_IP_MULTICAST=y
@@ -282,7 +282,6 @@ CONFIG_INET_TCP_DIAG=y
282CONFIG_TCP_CONG_CUBIC=y 282CONFIG_TCP_CONG_CUBIC=y
283CONFIG_DEFAULT_TCP_CONG="cubic" 283CONFIG_DEFAULT_TCP_CONG="cubic"
284# CONFIG_TCP_MD5SIG is not set 284# CONFIG_TCP_MD5SIG is not set
285# CONFIG_IP_VS is not set
286CONFIG_IPV6=y 285CONFIG_IPV6=y
287# CONFIG_IPV6_PRIVACY is not set 286# CONFIG_IPV6_PRIVACY is not set
288# CONFIG_IPV6_ROUTER_PREF is not set 287# CONFIG_IPV6_ROUTER_PREF is not set
@@ -331,10 +330,12 @@ CONFIG_NF_CONNTRACK=m
331# CONFIG_NF_CONNTRACK_TFTP is not set 330# CONFIG_NF_CONNTRACK_TFTP is not set
332# CONFIG_NF_CT_NETLINK is not set 331# CONFIG_NF_CT_NETLINK is not set
333# CONFIG_NETFILTER_XTABLES is not set 332# CONFIG_NETFILTER_XTABLES is not set
333# CONFIG_IP_VS is not set
334 334
335# 335#
336# IP: Netfilter Configuration 336# IP: Netfilter Configuration
337# 337#
338# CONFIG_NF_DEFRAG_IPV4 is not set
338# CONFIG_NF_CONNTRACK_IPV4 is not set 339# CONFIG_NF_CONNTRACK_IPV4 is not set
339# CONFIG_IP_NF_QUEUE is not set 340# CONFIG_IP_NF_QUEUE is not set
340# CONFIG_IP_NF_IPTABLES is not set 341# CONFIG_IP_NF_IPTABLES is not set
@@ -374,6 +375,7 @@ CONFIG_NET_SCH_CBQ=m
374# CONFIG_NET_SCH_HTB is not set 375# CONFIG_NET_SCH_HTB is not set
375# CONFIG_NET_SCH_HFSC is not set 376# CONFIG_NET_SCH_HFSC is not set
376CONFIG_NET_SCH_PRIO=m 377CONFIG_NET_SCH_PRIO=m
378CONFIG_NET_SCH_MULTIQ=y
377CONFIG_NET_SCH_RED=m 379CONFIG_NET_SCH_RED=m
378CONFIG_NET_SCH_SFQ=m 380CONFIG_NET_SCH_SFQ=m
379CONFIG_NET_SCH_TEQL=m 381CONFIG_NET_SCH_TEQL=m
@@ -406,6 +408,7 @@ CONFIG_NET_ACT_POLICE=y
406CONFIG_NET_ACT_NAT=m 408CONFIG_NET_ACT_NAT=m
407# CONFIG_NET_ACT_PEDIT is not set 409# CONFIG_NET_ACT_PEDIT is not set
408# CONFIG_NET_ACT_SIMP is not set 410# CONFIG_NET_ACT_SIMP is not set
411# CONFIG_NET_ACT_SKBEDIT is not set
409# CONFIG_NET_CLS_IND is not set 412# CONFIG_NET_CLS_IND is not set
410CONFIG_NET_SCH_FIFO=y 413CONFIG_NET_SCH_FIFO=y
411 414
@@ -424,6 +427,7 @@ CONFIG_CAN_BCM=m
424CONFIG_CAN_VCAN=m 427CONFIG_CAN_VCAN=m
425# CONFIG_CAN_DEBUG_DEVICES is not set 428# CONFIG_CAN_DEBUG_DEVICES is not set
426# CONFIG_AF_RXRPC is not set 429# CONFIG_AF_RXRPC is not set
430# CONFIG_PHONET is not set
427# CONFIG_RFKILL is not set 431# CONFIG_RFKILL is not set
428# CONFIG_NET_9P is not set 432# CONFIG_NET_9P is not set
429# CONFIG_PCMCIA is not set 433# CONFIG_PCMCIA is not set
@@ -473,7 +477,7 @@ CONFIG_VIRTIO_BLK=m
473CONFIG_MISC_DEVICES=y 477CONFIG_MISC_DEVICES=y
474# CONFIG_EEPROM_93CX6 is not set 478# CONFIG_EEPROM_93CX6 is not set
475# CONFIG_ENCLOSURE_SERVICES is not set 479# CONFIG_ENCLOSURE_SERVICES is not set
476# CONFIG_HAVE_IDE is not set 480# CONFIG_C2PORT is not set
477 481
478# 482#
479# SCSI device support 483# SCSI device support
@@ -525,6 +529,7 @@ CONFIG_SCSI_DH_EMC=m
525CONFIG_SCSI_DH_ALUA=m 529CONFIG_SCSI_DH_ALUA=m
526CONFIG_MD=y 530CONFIG_MD=y
527CONFIG_BLK_DEV_MD=y 531CONFIG_BLK_DEV_MD=y
532CONFIG_MD_AUTODETECT=y
528CONFIG_MD_LINEAR=m 533CONFIG_MD_LINEAR=m
529CONFIG_MD_RAID0=m 534CONFIG_MD_RAID0=m
530CONFIG_MD_RAID1=m 535CONFIG_MD_RAID1=m
@@ -555,6 +560,9 @@ CONFIG_NET_ETHERNET=y
555# CONFIG_IBM_NEW_EMAC_RGMII is not set 560# CONFIG_IBM_NEW_EMAC_RGMII is not set
556# CONFIG_IBM_NEW_EMAC_TAH is not set 561# CONFIG_IBM_NEW_EMAC_TAH is not set
557# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 562# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
563# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
564# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
565# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
558CONFIG_NETDEV_1000=y 566CONFIG_NETDEV_1000=y
559CONFIG_NETDEV_10000=y 567CONFIG_NETDEV_10000=y
560# CONFIG_TR is not set 568# CONFIG_TR is not set
@@ -632,13 +640,12 @@ CONFIG_S390_VMUR=m
632# CONFIG_THERMAL is not set 640# CONFIG_THERMAL is not set
633# CONFIG_THERMAL_HWMON is not set 641# CONFIG_THERMAL_HWMON is not set
634# CONFIG_WATCHDOG is not set 642# CONFIG_WATCHDOG is not set
635 643# CONFIG_REGULATOR is not set
636#
637# Sonics Silicon Backplane
638#
639# CONFIG_MEMSTICK is not set 644# CONFIG_MEMSTICK is not set
640# CONFIG_NEW_LEDS is not set 645# CONFIG_NEW_LEDS is not set
641CONFIG_ACCESSIBILITY=y 646CONFIG_ACCESSIBILITY=y
647# CONFIG_STAGING is not set
648CONFIG_STAGING_EXCLUDE_BUILD=y
642 649
643# 650#
644# File systems 651# File systems
@@ -650,13 +657,14 @@ CONFIG_EXT3_FS=y
650CONFIG_EXT3_FS_XATTR=y 657CONFIG_EXT3_FS_XATTR=y
651# CONFIG_EXT3_FS_POSIX_ACL is not set 658# CONFIG_EXT3_FS_POSIX_ACL is not set
652# CONFIG_EXT3_FS_SECURITY is not set 659# CONFIG_EXT3_FS_SECURITY is not set
653# CONFIG_EXT4DEV_FS is not set 660# CONFIG_EXT4_FS is not set
654CONFIG_JBD=y 661CONFIG_JBD=y
655# CONFIG_JBD_DEBUG is not set 662# CONFIG_JBD_DEBUG is not set
656CONFIG_FS_MBCACHE=y 663CONFIG_FS_MBCACHE=y
657# CONFIG_REISERFS_FS is not set 664# CONFIG_REISERFS_FS is not set
658# CONFIG_JFS_FS is not set 665# CONFIG_JFS_FS is not set
659CONFIG_FS_POSIX_ACL=y 666CONFIG_FS_POSIX_ACL=y
667CONFIG_FILE_LOCKING=y
660# CONFIG_XFS_FS is not set 668# CONFIG_XFS_FS is not set
661# CONFIG_GFS2_FS is not set 669# CONFIG_GFS2_FS is not set
662# CONFIG_OCFS2_FS is not set 670# CONFIG_OCFS2_FS is not set
@@ -688,6 +696,7 @@ CONFIG_GENERIC_ACL=y
688CONFIG_PROC_FS=y 696CONFIG_PROC_FS=y
689CONFIG_PROC_KCORE=y 697CONFIG_PROC_KCORE=y
690CONFIG_PROC_SYSCTL=y 698CONFIG_PROC_SYSCTL=y
699CONFIG_PROC_PAGE_MONITOR=y
691CONFIG_SYSFS=y 700CONFIG_SYSFS=y
692CONFIG_TMPFS=y 701CONFIG_TMPFS=y
693CONFIG_TMPFS_POSIX_ACL=y 702CONFIG_TMPFS_POSIX_ACL=y
@@ -728,6 +737,7 @@ CONFIG_LOCKD_V4=y
728CONFIG_EXPORTFS=y 737CONFIG_EXPORTFS=y
729CONFIG_NFS_COMMON=y 738CONFIG_NFS_COMMON=y
730CONFIG_SUNRPC=y 739CONFIG_SUNRPC=y
740# CONFIG_SUNRPC_REGISTER_V4 is not set
731# CONFIG_RPCSEC_GSS_KRB5 is not set 741# CONFIG_RPCSEC_GSS_KRB5 is not set
732# CONFIG_RPCSEC_GSS_SPKM3 is not set 742# CONFIG_RPCSEC_GSS_SPKM3 is not set
733# CONFIG_SMB_FS is not set 743# CONFIG_SMB_FS is not set
@@ -800,12 +810,24 @@ CONFIG_DEBUG_MEMORY_INIT=y
800# CONFIG_DEBUG_SG is not set 810# CONFIG_DEBUG_SG is not set
801# CONFIG_FRAME_POINTER is not set 811# CONFIG_FRAME_POINTER is not set
802# CONFIG_RCU_TORTURE_TEST is not set 812# CONFIG_RCU_TORTURE_TEST is not set
813# CONFIG_RCU_CPU_STALL_DETECTOR is not set
803# CONFIG_KPROBES_SANITY_TEST is not set 814# CONFIG_KPROBES_SANITY_TEST is not set
804# CONFIG_BACKTRACE_SELF_TEST is not set 815# CONFIG_BACKTRACE_SELF_TEST is not set
816# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
805# CONFIG_LKDTM is not set 817# CONFIG_LKDTM is not set
806# CONFIG_FAULT_INJECTION is not set 818# CONFIG_FAULT_INJECTION is not set
807# CONFIG_LATENCYTOP is not set 819# CONFIG_LATENCYTOP is not set
808CONFIG_SYSCTL_SYSCALL_CHECK=y 820CONFIG_SYSCTL_SYSCALL_CHECK=y
821
822#
823# Tracers
824#
825# CONFIG_IRQSOFF_TRACER is not set
826# CONFIG_PREEMPT_TRACER is not set
827# CONFIG_SCHED_TRACER is not set
828# CONFIG_CONTEXT_SWITCH_TRACER is not set
829# CONFIG_BOOT_TRACER is not set
830# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
809CONFIG_SAMPLES=y 831CONFIG_SAMPLES=y
810# CONFIG_SAMPLE_KOBJECT is not set 832# CONFIG_SAMPLE_KOBJECT is not set
811# CONFIG_SAMPLE_KPROBES is not set 833# CONFIG_SAMPLE_KPROBES is not set
@@ -816,16 +838,19 @@ CONFIG_SAMPLES=y
816# 838#
817# CONFIG_KEYS is not set 839# CONFIG_KEYS is not set
818# CONFIG_SECURITY is not set 840# CONFIG_SECURITY is not set
841# CONFIG_SECURITYFS is not set
819# CONFIG_SECURITY_FILE_CAPABILITIES is not set 842# CONFIG_SECURITY_FILE_CAPABILITIES is not set
820CONFIG_CRYPTO=y 843CONFIG_CRYPTO=y
821 844
822# 845#
823# Crypto core or helper 846# Crypto core or helper
824# 847#
848CONFIG_CRYPTO_FIPS=y
825CONFIG_CRYPTO_ALGAPI=y 849CONFIG_CRYPTO_ALGAPI=y
826CONFIG_CRYPTO_AEAD=m 850CONFIG_CRYPTO_AEAD=y
827CONFIG_CRYPTO_BLKCIPHER=y 851CONFIG_CRYPTO_BLKCIPHER=y
828CONFIG_CRYPTO_HASH=m 852CONFIG_CRYPTO_HASH=y
853CONFIG_CRYPTO_RNG=y
829CONFIG_CRYPTO_MANAGER=y 854CONFIG_CRYPTO_MANAGER=y
830CONFIG_CRYPTO_GF128MUL=m 855CONFIG_CRYPTO_GF128MUL=m
831# CONFIG_CRYPTO_NULL is not set 856# CONFIG_CRYPTO_NULL is not set
@@ -877,7 +902,7 @@ CONFIG_CRYPTO_SHA1=m
877# 902#
878# Ciphers 903# Ciphers
879# 904#
880# CONFIG_CRYPTO_AES is not set 905CONFIG_CRYPTO_AES=m
881# CONFIG_CRYPTO_ANUBIS is not set 906# CONFIG_CRYPTO_ANUBIS is not set
882# CONFIG_CRYPTO_ARC4 is not set 907# CONFIG_CRYPTO_ARC4 is not set
883# CONFIG_CRYPTO_BLOWFISH is not set 908# CONFIG_CRYPTO_BLOWFISH is not set
@@ -898,6 +923,11 @@ CONFIG_CRYPTO_SEED=m
898# 923#
899# CONFIG_CRYPTO_DEFLATE is not set 924# CONFIG_CRYPTO_DEFLATE is not set
900CONFIG_CRYPTO_LZO=m 925CONFIG_CRYPTO_LZO=m
926
927#
928# Random Number Generation
929#
930CONFIG_CRYPTO_ANSI_CPRNG=m
901CONFIG_CRYPTO_HW=y 931CONFIG_CRYPTO_HW=y
902CONFIG_ZCRYPT=m 932CONFIG_ZCRYPT=m
903# CONFIG_ZCRYPT_MONOLITHIC is not set 933# CONFIG_ZCRYPT_MONOLITHIC is not set
@@ -912,8 +942,6 @@ CONFIG_S390_PRNG=m
912# Library routines 942# Library routines
913# 943#
914CONFIG_BITREVERSE=m 944CONFIG_BITREVERSE=m
915# CONFIG_GENERIC_FIND_FIRST_BIT is not set
916# CONFIG_GENERIC_FIND_NEXT_BIT is not set
917# CONFIG_CRC_CCITT is not set 945# CONFIG_CRC_CCITT is not set
918# CONFIG_CRC16 is not set 946# CONFIG_CRC16 is not set
919CONFIG_CRC_T10DIF=y 947CONFIG_CRC_T10DIF=y
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 7fc76133b3e4..5caddd4f7bed 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -679,8 +679,6 @@ static inline void pmd_clear(pmd_t *pmd)
679 679
680static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 680static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
681{ 681{
682 if (mm->context.has_pgste)
683 ptep_rcp_copy(ptep);
684 pte_val(*ptep) = _PAGE_TYPE_EMPTY; 682 pte_val(*ptep) = _PAGE_TYPE_EMPTY;
685 if (mm->context.noexec) 683 if (mm->context.noexec)
686 pte_val(ptep[PTRS_PER_PTE]) = _PAGE_TYPE_EMPTY; 684 pte_val(ptep[PTRS_PER_PTE]) = _PAGE_TYPE_EMPTY;
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
index a7226f8143fb..5396f9f12263 100644
--- a/arch/s390/include/asm/ptrace.h
+++ b/arch/s390/include/asm/ptrace.h
@@ -321,8 +321,8 @@ struct pt_regs
321 psw_t psw; 321 psw_t psw;
322 unsigned long gprs[NUM_GPRS]; 322 unsigned long gprs[NUM_GPRS];
323 unsigned long orig_gpr2; 323 unsigned long orig_gpr2;
324 unsigned short svcnr;
324 unsigned short ilc; 325 unsigned short ilc;
325 unsigned short trap;
326}; 326};
327#endif 327#endif
328 328
@@ -486,8 +486,6 @@ struct task_struct;
486extern void user_enable_single_step(struct task_struct *); 486extern void user_enable_single_step(struct task_struct *);
487extern void user_disable_single_step(struct task_struct *); 487extern void user_disable_single_step(struct task_struct *);
488 488
489#define __ARCH_WANT_COMPAT_SYS_PTRACE
490
491#define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) 489#define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0)
492#define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) 490#define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN)
493#define user_stack_pointer(regs)((regs)->gprs[15]) 491#define user_stack_pointer(regs)((regs)->gprs[15])
diff --git a/arch/s390/include/asm/syscall.h b/arch/s390/include/asm/syscall.h
index 6e623971fbb9..2429b87eb28d 100644
--- a/arch/s390/include/asm/syscall.h
+++ b/arch/s390/include/asm/syscall.h
@@ -17,9 +17,7 @@
17static inline long syscall_get_nr(struct task_struct *task, 17static inline long syscall_get_nr(struct task_struct *task,
18 struct pt_regs *regs) 18 struct pt_regs *regs)
19{ 19{
20 if (regs->trap != __LC_SVC_OLD_PSW) 20 return regs->svcnr ? regs->svcnr : -1;
21 return -1;
22 return regs->gprs[2];
23} 21}
24 22
25static inline void syscall_rollback(struct task_struct *task, 23static inline void syscall_rollback(struct task_struct *task,
@@ -52,18 +50,20 @@ static inline void syscall_get_arguments(struct task_struct *task,
52 unsigned int i, unsigned int n, 50 unsigned int i, unsigned int n,
53 unsigned long *args) 51 unsigned long *args)
54{ 52{
53 unsigned long mask = -1UL;
54
55 BUG_ON(i + n > 6); 55 BUG_ON(i + n > 6);
56#ifdef CONFIG_COMPAT 56#ifdef CONFIG_COMPAT
57 if (test_tsk_thread_flag(task, TIF_31BIT)) { 57 if (test_tsk_thread_flag(task, TIF_31BIT))
58 if (i + n == 6) 58 mask = 0xffffffff;
59 args[--n] = (u32) regs->args[0];
60 while (n-- > 0)
61 args[n] = (u32) regs->gprs[2 + i + n];
62 }
63#endif 59#endif
64 if (i + n == 6) 60 if (i + n == 6)
65 args[--n] = regs->args[0]; 61 args[--n] = regs->args[0] & mask;
66 memcpy(args, &regs->gprs[2 + i], n * sizeof(args[0])); 62 while (n-- > 0)
63 if (i + n > 0)
64 args[n] = regs->gprs[2 + i + n] & mask;
65 if (i == 0)
66 args[0] = regs->orig_gpr2 & mask;
67} 67}
68 68
69static inline void syscall_set_arguments(struct task_struct *task, 69static inline void syscall_set_arguments(struct task_struct *task,
@@ -74,7 +74,11 @@ static inline void syscall_set_arguments(struct task_struct *task,
74 BUG_ON(i + n > 6); 74 BUG_ON(i + n > 6);
75 if (i + n == 6) 75 if (i + n == 6)
76 regs->args[0] = args[--n]; 76 regs->args[0] = args[--n];
77 memcpy(&regs->gprs[2 + i], args, n * sizeof(args[0])); 77 while (n-- > 0)
78 if (i + n > 0)
79 regs->gprs[2 + i + n] = args[n];
80 if (i == 0)
81 regs->orig_gpr2 = args[0];
78} 82}
79 83
80#endif /* _ASM_SYSCALL_H */ 84#endif /* _ASM_SYSCALL_H */
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index fa28ecae636b..3d144e6020c6 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -32,7 +32,7 @@ int main(void)
32 DEFINE(__PT_GPRS, offsetof(struct pt_regs, gprs)); 32 DEFINE(__PT_GPRS, offsetof(struct pt_regs, gprs));
33 DEFINE(__PT_ORIG_GPR2, offsetof(struct pt_regs, orig_gpr2)); 33 DEFINE(__PT_ORIG_GPR2, offsetof(struct pt_regs, orig_gpr2));
34 DEFINE(__PT_ILC, offsetof(struct pt_regs, ilc)); 34 DEFINE(__PT_ILC, offsetof(struct pt_regs, ilc));
35 DEFINE(__PT_TRAP, offsetof(struct pt_regs, trap)); 35 DEFINE(__PT_SVCNR, offsetof(struct pt_regs, svcnr));
36 DEFINE(__PT_SIZE, sizeof(struct pt_regs)); 36 DEFINE(__PT_SIZE, sizeof(struct pt_regs));
37 BLANK(); 37 BLANK();
38 DEFINE(__SF_BACKCHAIN, offsetof(struct stack_frame, back_chain)); 38 DEFINE(__SF_BACKCHAIN, offsetof(struct stack_frame, back_chain));
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index c7f02e777af2..b537cb0e9b55 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -340,7 +340,7 @@ static int restore_sigregs32(struct pt_regs *regs,_sigregs32 __user *sregs)
340 return err; 340 return err;
341 341
342 restore_fp_regs(&current->thread.fp_regs); 342 restore_fp_regs(&current->thread.fp_regs);
343 regs->trap = -1; /* disable syscall checks */ 343 regs->svcnr = 0; /* disable syscall checks */
344 return 0; 344 return 0;
345} 345}
346 346
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 08844fc24a2e..198ea18a534d 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -46,7 +46,7 @@ SP_R14 = STACK_FRAME_OVERHEAD + __PT_GPRS + 56
46SP_R15 = STACK_FRAME_OVERHEAD + __PT_GPRS + 60 46SP_R15 = STACK_FRAME_OVERHEAD + __PT_GPRS + 60
47SP_ORIG_R2 = STACK_FRAME_OVERHEAD + __PT_ORIG_GPR2 47SP_ORIG_R2 = STACK_FRAME_OVERHEAD + __PT_ORIG_GPR2
48SP_ILC = STACK_FRAME_OVERHEAD + __PT_ILC 48SP_ILC = STACK_FRAME_OVERHEAD + __PT_ILC
49SP_TRAP = STACK_FRAME_OVERHEAD + __PT_TRAP 49SP_SVCNR = STACK_FRAME_OVERHEAD + __PT_SVCNR
50SP_SIZE = STACK_FRAME_OVERHEAD + __PT_SIZE 50SP_SIZE = STACK_FRAME_OVERHEAD + __PT_SIZE
51 51
52_TIF_WORK_SVC = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \ 52_TIF_WORK_SVC = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
@@ -183,11 +183,10 @@ STACK_SIZE = 1 << STACK_SHIFT
183 .macro CREATE_STACK_FRAME psworg,savearea 183 .macro CREATE_STACK_FRAME psworg,savearea
184 s %r15,BASED(.Lc_spsize) # make room for registers & psw 184 s %r15,BASED(.Lc_spsize) # make room for registers & psw
185 mvc SP_PSW(8,%r15),0(%r12) # move user PSW to stack 185 mvc SP_PSW(8,%r15),0(%r12) # move user PSW to stack
186 la %r12,\psworg
187 st %r2,SP_ORIG_R2(%r15) # store original content of gpr 2 186 st %r2,SP_ORIG_R2(%r15) # store original content of gpr 2
188 icm %r12,12,__LC_SVC_ILC 187 icm %r12,3,__LC_SVC_ILC
189 stm %r0,%r11,SP_R0(%r15) # store gprs %r0-%r11 to kernel stack 188 stm %r0,%r11,SP_R0(%r15) # store gprs %r0-%r11 to kernel stack
190 st %r12,SP_ILC(%r15) 189 st %r12,SP_SVCNR(%r15)
191 mvc SP_R12(16,%r15),\savearea # move %r12-%r15 to stack 190 mvc SP_R12(16,%r15),\savearea # move %r12-%r15 to stack
192 la %r12,0 191 la %r12,0
193 st %r12,__SF_BACKCHAIN(%r15) # clear back chain 192 st %r12,__SF_BACKCHAIN(%r15) # clear back chain
@@ -264,16 +263,17 @@ sysc_update:
264#endif 263#endif
265sysc_do_svc: 264sysc_do_svc:
266 l %r9,__LC_THREAD_INFO # load pointer to thread_info struct 265 l %r9,__LC_THREAD_INFO # load pointer to thread_info struct
267 sla %r7,2 # *4 and test for svc 0 266 ltr %r7,%r7 # test for svc 0
268 bnz BASED(sysc_nr_ok) # svc number > 0 267 bnz BASED(sysc_nr_ok) # svc number > 0
269 # svc 0: system call number in %r1 268 # svc 0: system call number in %r1
270 cl %r1,BASED(.Lnr_syscalls) 269 cl %r1,BASED(.Lnr_syscalls)
271 bnl BASED(sysc_nr_ok) 270 bnl BASED(sysc_nr_ok)
272 lr %r7,%r1 # copy svc number to %r7 271 lr %r7,%r1 # copy svc number to %r7
273 sla %r7,2 # *4
274sysc_nr_ok: 272sysc_nr_ok:
275 mvc SP_ARGS(4,%r15),SP_R7(%r15) 273 mvc SP_ARGS(4,%r15),SP_R7(%r15)
276sysc_do_restart: 274sysc_do_restart:
275 sth %r7,SP_SVCNR(%r15)
276 sll %r7,2 # svc number *4
277 l %r8,BASED(.Lsysc_table) 277 l %r8,BASED(.Lsysc_table)
278 tm __TI_flags+3(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) 278 tm __TI_flags+3(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)
279 l %r8,0(%r7,%r8) # get system call addr. 279 l %r8,0(%r7,%r8) # get system call addr.
@@ -376,7 +376,6 @@ sysc_notify_resume:
376sysc_restart: 376sysc_restart:
377 ni __TI_flags+3(%r9),255-_TIF_RESTART_SVC # clear TIF_RESTART_SVC 377 ni __TI_flags+3(%r9),255-_TIF_RESTART_SVC # clear TIF_RESTART_SVC
378 l %r7,SP_R2(%r15) # load new svc number 378 l %r7,SP_R2(%r15) # load new svc number
379 sla %r7,2
380 mvc SP_R2(4,%r15),SP_ORIG_R2(%r15) # restore first argument 379 mvc SP_R2(4,%r15),SP_ORIG_R2(%r15) # restore first argument
381 lm %r2,%r6,SP_R2(%r15) # load svc arguments 380 lm %r2,%r6,SP_R2(%r15) # load svc arguments
382 b BASED(sysc_do_restart) # restart svc 381 b BASED(sysc_do_restart) # restart svc
@@ -386,7 +385,8 @@ sysc_restart:
386# 385#
387sysc_singlestep: 386sysc_singlestep:
388 ni __TI_flags+3(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP 387 ni __TI_flags+3(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP
389 mvi SP_TRAP+1(%r15),0x28 # set trap indication to pgm check 388 mvi SP_SVCNR(%r15),0xff # set trap indication to pgm check
389 mvi SP_SVCNR+1(%r15),0xff
390 la %r2,SP_PTREGS(%r15) # address of register-save area 390 la %r2,SP_PTREGS(%r15) # address of register-save area
391 l %r1,BASED(.Lhandle_per) # load adr. of per handler 391 l %r1,BASED(.Lhandle_per) # load adr. of per handler
392 la %r14,BASED(sysc_return) # load adr. of system return 392 la %r14,BASED(sysc_return) # load adr. of system return
@@ -407,7 +407,7 @@ sysc_tracesys:
407 bnl BASED(sysc_tracenogo) 407 bnl BASED(sysc_tracenogo)
408 l %r8,BASED(.Lsysc_table) 408 l %r8,BASED(.Lsysc_table)
409 lr %r7,%r2 409 lr %r7,%r2
410 sll %r7,2 # *4 410 sll %r7,2 # svc number *4
411 l %r8,0(%r7,%r8) 411 l %r8,0(%r7,%r8)
412sysc_tracego: 412sysc_tracego:
413 lm %r3,%r6,SP_R3(%r15) 413 lm %r3,%r6,SP_R3(%r15)
@@ -586,7 +586,8 @@ pgm_svcper:
586# per was called from kernel, must be kprobes 586# per was called from kernel, must be kprobes
587# 587#
588kernel_per: 588kernel_per:
589 mvi SP_TRAP+1(%r15),0x28 # set trap indication to pgm check 589 mvi SP_SVCNR(%r15),0xff # set trap indication to pgm check
590 mvi SP_SVCNR+1(%r15),0xff
590 la %r2,SP_PTREGS(%r15) # address of register-save area 591 la %r2,SP_PTREGS(%r15) # address of register-save area
591 l %r1,BASED(.Lhandle_per) # load adr. of per handler 592 l %r1,BASED(.Lhandle_per) # load adr. of per handler
592 la %r14,BASED(sysc_restore)# load adr. of system return 593 la %r14,BASED(sysc_restore)# load adr. of system return
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 41aca06682aa..89c121ae6339 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -46,7 +46,7 @@ SP_R14 = STACK_FRAME_OVERHEAD + __PT_GPRS + 112
46SP_R15 = STACK_FRAME_OVERHEAD + __PT_GPRS + 120 46SP_R15 = STACK_FRAME_OVERHEAD + __PT_GPRS + 120
47SP_ORIG_R2 = STACK_FRAME_OVERHEAD + __PT_ORIG_GPR2 47SP_ORIG_R2 = STACK_FRAME_OVERHEAD + __PT_ORIG_GPR2
48SP_ILC = STACK_FRAME_OVERHEAD + __PT_ILC 48SP_ILC = STACK_FRAME_OVERHEAD + __PT_ILC
49SP_TRAP = STACK_FRAME_OVERHEAD + __PT_TRAP 49SP_SVCNR = STACK_FRAME_OVERHEAD + __PT_SVCNR
50SP_SIZE = STACK_FRAME_OVERHEAD + __PT_SIZE 50SP_SIZE = STACK_FRAME_OVERHEAD + __PT_SIZE
51 51
52STACK_SHIFT = PAGE_SHIFT + THREAD_ORDER 52STACK_SHIFT = PAGE_SHIFT + THREAD_ORDER
@@ -171,11 +171,10 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
171 .macro CREATE_STACK_FRAME psworg,savearea 171 .macro CREATE_STACK_FRAME psworg,savearea
172 aghi %r15,-SP_SIZE # make room for registers & psw 172 aghi %r15,-SP_SIZE # make room for registers & psw
173 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack 173 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack
174 la %r12,\psworg
175 stg %r2,SP_ORIG_R2(%r15) # store original content of gpr 2 174 stg %r2,SP_ORIG_R2(%r15) # store original content of gpr 2
176 icm %r12,12,__LC_SVC_ILC 175 icm %r12,3,__LC_SVC_ILC
177 stmg %r0,%r11,SP_R0(%r15) # store gprs %r0-%r11 to kernel stack 176 stmg %r0,%r11,SP_R0(%r15) # store gprs %r0-%r11 to kernel stack
178 st %r12,SP_ILC(%r15) 177 st %r12,SP_SVCNR(%r15)
179 mvc SP_R12(32,%r15),\savearea # move %r12-%r15 to stack 178 mvc SP_R12(32,%r15),\savearea # move %r12-%r15 to stack
180 la %r12,0 179 la %r12,0
181 stg %r12,__SF_BACKCHAIN(%r15) 180 stg %r12,__SF_BACKCHAIN(%r15)
@@ -250,16 +249,17 @@ sysc_update:
250#endif 249#endif
251sysc_do_svc: 250sysc_do_svc:
252 lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct 251 lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct
253 slag %r7,%r7,2 # *4 and test for svc 0 252 ltgr %r7,%r7 # test for svc 0
254 jnz sysc_nr_ok 253 jnz sysc_nr_ok
255 # svc 0: system call number in %r1 254 # svc 0: system call number in %r1
256 cl %r1,BASED(.Lnr_syscalls) 255 cl %r1,BASED(.Lnr_syscalls)
257 jnl sysc_nr_ok 256 jnl sysc_nr_ok
258 lgfr %r7,%r1 # clear high word in r1 257 lgfr %r7,%r1 # clear high word in r1
259 slag %r7,%r7,2 # svc 0: system call number in %r1
260sysc_nr_ok: 258sysc_nr_ok:
261 mvc SP_ARGS(8,%r15),SP_R7(%r15) 259 mvc SP_ARGS(8,%r15),SP_R7(%r15)
262sysc_do_restart: 260sysc_do_restart:
261 sth %r7,SP_SVCNR(%r15)
262 sllg %r7,%r7,2 # svc number * 4
263 larl %r10,sys_call_table 263 larl %r10,sys_call_table
264#ifdef CONFIG_COMPAT 264#ifdef CONFIG_COMPAT
265 tm __TI_flags+5(%r9),(_TIF_31BIT>>16) # running in 31 bit mode ? 265 tm __TI_flags+5(%r9),(_TIF_31BIT>>16) # running in 31 bit mode ?
@@ -363,7 +363,6 @@ sysc_notify_resume:
363sysc_restart: 363sysc_restart:
364 ni __TI_flags+7(%r9),255-_TIF_RESTART_SVC # clear TIF_RESTART_SVC 364 ni __TI_flags+7(%r9),255-_TIF_RESTART_SVC # clear TIF_RESTART_SVC
365 lg %r7,SP_R2(%r15) # load new svc number 365 lg %r7,SP_R2(%r15) # load new svc number
366 slag %r7,%r7,2 # *4
367 mvc SP_R2(8,%r15),SP_ORIG_R2(%r15) # restore first argument 366 mvc SP_R2(8,%r15),SP_ORIG_R2(%r15) # restore first argument
368 lmg %r2,%r6,SP_R2(%r15) # load svc arguments 367 lmg %r2,%r6,SP_R2(%r15) # load svc arguments
369 j sysc_do_restart # restart svc 368 j sysc_do_restart # restart svc
@@ -372,9 +371,8 @@ sysc_restart:
372# _TIF_SINGLE_STEP is set, call do_single_step 371# _TIF_SINGLE_STEP is set, call do_single_step
373# 372#
374sysc_singlestep: 373sysc_singlestep:
375 ni __TI_flags+7(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP 374 ni __TI_flags+7(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP
376 lhi %r0,__LC_PGM_OLD_PSW 375 xc SP_SVCNR(2,%r15),SP_SVCNR(%r15) # clear svc number
377 sth %r0,SP_TRAP(%r15) # set trap indication to pgm check
378 la %r2,SP_PTREGS(%r15) # address of register-save area 376 la %r2,SP_PTREGS(%r15) # address of register-save area
379 larl %r14,sysc_return # load adr. of system return 377 larl %r14,sysc_return # load adr. of system return
380 jg do_single_step # branch to do_sigtrap 378 jg do_single_step # branch to do_sigtrap
@@ -392,7 +390,7 @@ sysc_tracesys:
392 lghi %r0,NR_syscalls 390 lghi %r0,NR_syscalls
393 clgr %r0,%r2 391 clgr %r0,%r2
394 jnh sysc_tracenogo 392 jnh sysc_tracenogo
395 slag %r7,%r2,2 # *4 393 sllg %r7,%r2,2 # svc number *4
396 lgf %r8,0(%r7,%r10) 394 lgf %r8,0(%r7,%r10)
397sysc_tracego: 395sysc_tracego:
398 lmg %r3,%r6,SP_R3(%r15) 396 lmg %r3,%r6,SP_R3(%r15)
@@ -567,8 +565,7 @@ pgm_svcper:
567# per was called from kernel, must be kprobes 565# per was called from kernel, must be kprobes
568# 566#
569kernel_per: 567kernel_per:
570 lhi %r0,__LC_PGM_OLD_PSW 568 xc SP_SVCNR(2,%r15),SP_SVCNR(%r15) # clear svc number
571 sth %r0,SP_TRAP(%r15) # set trap indication to pgm check
572 la %r2,SP_PTREGS(%r15) # address of register-save area 569 la %r2,SP_PTREGS(%r15) # address of register-save area
573 larl %r14,sysc_restore # load adr. of system ret, no work 570 larl %r14,sysc_restore # load adr. of system ret, no work
574 jg do_single_step # branch to do_single_step 571 jg do_single_step # branch to do_single_step
diff --git a/arch/s390/kernel/init_task.c b/arch/s390/kernel/init_task.c
index 7ad003969251..e80716843619 100644
--- a/arch/s390/kernel/init_task.c
+++ b/arch/s390/kernel/init_task.c
@@ -26,7 +26,7 @@ EXPORT_SYMBOL(init_mm);
26/* 26/*
27 * Initial thread structure. 27 * Initial thread structure.
28 * 28 *
29 * We need to make sure that this is 8192-byte aligned due to the 29 * We need to make sure that this is THREAD_SIZE aligned due to the
30 * way process stacks are handled. This is done by having a special 30 * way process stacks are handled. This is done by having a special
31 * "init_task" linker map entry.. 31 * "init_task" linker map entry..
32 */ 32 */
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 1f31be1ecc4b..38ff2bce1203 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -657,7 +657,7 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
657 * debugger stored an invalid system call number. Skip 657 * debugger stored an invalid system call number. Skip
658 * the system call and the system call restart handling. 658 * the system call and the system call restart handling.
659 */ 659 */
660 regs->trap = -1; 660 regs->svcnr = 0;
661 ret = -1; 661 ret = -1;
662 } 662 }
663 663
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 4f7fc3059a8e..8e6812a22670 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -160,7 +160,7 @@ static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
160 current->thread.fp_regs.fpc &= FPC_VALID_MASK; 160 current->thread.fp_regs.fpc &= FPC_VALID_MASK;
161 161
162 restore_fp_regs(&current->thread.fp_regs); 162 restore_fp_regs(&current->thread.fp_regs);
163 regs->trap = -1; /* disable syscall checks */ 163 regs->svcnr = 0; /* disable syscall checks */
164 return 0; 164 return 0;
165} 165}
166 166
@@ -445,7 +445,7 @@ void do_signal(struct pt_regs *regs)
445 oldset = &current->blocked; 445 oldset = &current->blocked;
446 446
447 /* Are we from a system call? */ 447 /* Are we from a system call? */
448 if (regs->trap == __LC_SVC_OLD_PSW) { 448 if (regs->svcnr) {
449 continue_addr = regs->psw.addr; 449 continue_addr = regs->psw.addr;
450 restart_addr = continue_addr - regs->ilc; 450 restart_addr = continue_addr - regs->ilc;
451 retval = regs->gprs[2]; 451 retval = regs->gprs[2];
@@ -462,7 +462,7 @@ void do_signal(struct pt_regs *regs)
462 case -ERESTART_RESTARTBLOCK: 462 case -ERESTART_RESTARTBLOCK:
463 regs->gprs[2] = -EINTR; 463 regs->gprs[2] = -EINTR;
464 } 464 }
465 regs->trap = -1; /* Don't deal with this again. */ 465 regs->svcnr = 0; /* Don't deal with this again. */
466 } 466 }
467 467
468 /* Get signal to deliver. When running under ptrace, at this point 468 /* Get signal to deliver. When running under ptrace, at this point
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index b94e9e3b694a..eccefbbff887 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -59,7 +59,7 @@
59 59
60static ext_int_info_t ext_int_info_cc; 60static ext_int_info_t ext_int_info_cc;
61static ext_int_info_t ext_int_etr_cc; 61static ext_int_info_t ext_int_etr_cc;
62static u64 jiffies_timer_cc; 62static u64 sched_clock_base_cc;
63 63
64static DEFINE_PER_CPU(struct clock_event_device, comparators); 64static DEFINE_PER_CPU(struct clock_event_device, comparators);
65 65
@@ -68,7 +68,7 @@ static DEFINE_PER_CPU(struct clock_event_device, comparators);
68 */ 68 */
69unsigned long long sched_clock(void) 69unsigned long long sched_clock(void)
70{ 70{
71 return ((get_clock_xt() - jiffies_timer_cc) * 125) >> 9; 71 return ((get_clock_xt() - sched_clock_base_cc) * 125) >> 9;
72} 72}
73 73
74/* 74/*
@@ -229,13 +229,10 @@ static struct clocksource clocksource_tod = {
229 */ 229 */
230void __init time_init(void) 230void __init time_init(void)
231{ 231{
232 u64 init_timer_cc; 232 sched_clock_base_cc = reset_tod_clock();
233
234 init_timer_cc = reset_tod_clock();
235 jiffies_timer_cc = init_timer_cc - jiffies_64 * CLK_TICKS_PER_JIFFY;
236 233
237 /* set xtime */ 234 /* set xtime */
238 tod_to_timeval(init_timer_cc - TOD_UNIX_EPOCH, &xtime); 235 tod_to_timeval(sched_clock_base_cc - TOD_UNIX_EPOCH, &xtime);
239 set_normalized_timespec(&wall_to_monotonic, 236 set_normalized_timespec(&wall_to_monotonic,
240 -xtime.tv_sec, -xtime.tv_nsec); 237 -xtime.tv_sec, -xtime.tv_nsec);
241 238
@@ -289,7 +286,7 @@ static unsigned long long adjust_time(unsigned long long old,
289 delta = -delta; 286 delta = -delta;
290 adjust.offset = -ticks * (1000000 / HZ); 287 adjust.offset = -ticks * (1000000 / HZ);
291 } 288 }
292 jiffies_timer_cc += delta; 289 sched_clock_base_cc += delta;
293 if (adjust.offset != 0) { 290 if (adjust.offset != 0) {
294 printk(KERN_NOTICE "etr: time adjusted by %li micro-seconds\n", 291 printk(KERN_NOTICE "etr: time adjusted by %li micro-seconds\n",
295 adjust.offset); 292 adjust.offset);
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 607bd67a18ce..d796d05c9c01 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -2,6 +2,7 @@
2 * Written by Martin Schwidefsky (schwidefsky@de.ibm.com) 2 * Written by Martin Schwidefsky (schwidefsky@de.ibm.com)
3 */ 3 */
4 4
5#include <asm/thread_info.h>
5#include <asm/page.h> 6#include <asm/page.h>
6#include <asm-generic/vmlinux.lds.h> 7#include <asm-generic/vmlinux.lds.h>
7 8
@@ -86,7 +87,7 @@ SECTIONS
86 } 87 }
87 _edata = .; /* End of data section */ 88 _edata = .; /* End of data section */
88 89
89 . = ALIGN(2 * PAGE_SIZE); /* init_task */ 90 . = ALIGN(THREAD_SIZE); /* init_task */
90 .data.init_task : { 91 .data.init_task : {
91 *(.data.init_task) 92 *(.data.init_task)
92 } 93 }
diff --git a/arch/sparc/include/asm/ptrace_64.h b/arch/sparc/include/asm/ptrace_64.h
index 3d3e9c161d8b..84e969f06afe 100644
--- a/arch/sparc/include/asm/ptrace_64.h
+++ b/arch/sparc/include/asm/ptrace_64.h
@@ -142,8 +142,6 @@ struct global_reg_snapshot {
142}; 142};
143extern struct global_reg_snapshot global_reg_snapshot[NR_CPUS]; 143extern struct global_reg_snapshot global_reg_snapshot[NR_CPUS];
144 144
145#define __ARCH_WANT_COMPAT_SYS_PTRACE
146
147#define force_successful_syscall_return() \ 145#define force_successful_syscall_return() \
148do { current_thread_info()->syscall_noerror = 1; \ 146do { current_thread_info()->syscall_noerror = 1; \
149} while (0) 147} while (0)
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index e7a0edfc1a32..1fc17f59c6bf 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -126,7 +126,7 @@ char *sparc_fpu_type;
126 126
127unsigned int fsr_storage; 127unsigned int fsr_storage;
128 128
129void __init cpu_probe(void) 129void __cpuinit cpu_probe(void)
130{ 130{
131 int psr_impl, psr_vers, fpu_vers; 131 int psr_impl, psr_vers, fpu_vers;
132 int i, psr; 132 int i, psr;
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S
index 2d325fd84579..51b40426f9c6 100644
--- a/arch/sparc/kernel/head.S
+++ b/arch/sparc/kernel/head.S
@@ -72,7 +72,7 @@ sun4e_notsup:
72 .align 4 72 .align 4
73 73
74 /* The Sparc trap table, bootloader gives us control at _start. */ 74 /* The Sparc trap table, bootloader gives us control at _start. */
75 .text 75 .section .text.head,"ax"
76 .globl start, _stext, _start, __stext 76 .globl start, _stext, _start, __stext
77 .globl trapbase 77 .globl trapbase
78_start: /* danger danger */ 78_start: /* danger danger */
diff --git a/arch/sparc/kernel/smp.c b/arch/sparc/kernel/smp.c
index 1619ec15c099..e396c1f17a92 100644
--- a/arch/sparc/kernel/smp.c
+++ b/arch/sparc/kernel/smp.c
@@ -35,7 +35,7 @@
35 35
36#include "irq.h" 36#include "irq.h"
37 37
38volatile unsigned long cpu_callin_map[NR_CPUS] __initdata = {0,}; 38volatile unsigned long cpu_callin_map[NR_CPUS] __cpuinitdata = {0,};
39unsigned char boot_cpu_id = 0; 39unsigned char boot_cpu_id = 0;
40unsigned char boot_cpu_id4 = 0; /* boot_cpu_id << 2 */ 40unsigned char boot_cpu_id4 = 0; /* boot_cpu_id << 2 */
41 41
@@ -120,7 +120,7 @@ void cpu_panic(void)
120 panic("SMP bolixed\n"); 120 panic("SMP bolixed\n");
121} 121}
122 122
123struct linux_prom_registers smp_penguin_ctable __initdata = { 0 }; 123struct linux_prom_registers smp_penguin_ctable __cpuinitdata = { 0 };
124 124
125void smp_send_reschedule(int cpu) 125void smp_send_reschedule(int cpu)
126{ 126{
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index 7a6a5e795928..16ab0cb731c5 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -83,7 +83,7 @@ static inline void show_leds(int cpuid)
83 "i" (ASI_M_CTL)); 83 "i" (ASI_M_CTL));
84} 84}
85 85
86void __init smp4d_callin(void) 86void __cpuinit smp4d_callin(void)
87{ 87{
88 int cpuid = hard_smp4d_processor_id(); 88 int cpuid = hard_smp4d_processor_id();
89 extern spinlock_t sun4d_imsk_lock; 89 extern spinlock_t sun4d_imsk_lock;
@@ -386,7 +386,7 @@ void smp4d_percpu_timer_interrupt(struct pt_regs *regs)
386 386
387extern unsigned int lvl14_resolution; 387extern unsigned int lvl14_resolution;
388 388
389static void __init smp_setup_percpu_timer(void) 389static void __cpuinit smp_setup_percpu_timer(void)
390{ 390{
391 int cpu = hard_smp4d_processor_id(); 391 int cpu = hard_smp4d_processor_id();
392 392
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 5fc386d08c47..4f8d60586b07 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -343,7 +343,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs)
343 343
344extern unsigned int lvl14_resolution; 344extern unsigned int lvl14_resolution;
345 345
346static void __init smp_setup_percpu_timer(void) 346static void __cpuinit smp_setup_percpu_timer(void)
347{ 347{
348 int cpu = smp_processor_id(); 348 int cpu = smp_processor_id();
349 349
diff --git a/arch/sparc/kernel/trampoline.S b/arch/sparc/kernel/trampoline.S
index 356c56aebc62..5e235c52d667 100644
--- a/arch/sparc/kernel/trampoline.S
+++ b/arch/sparc/kernel/trampoline.S
@@ -18,7 +18,7 @@
18 .globl sun4m_cpu_startup, __smp4m_processor_id 18 .globl sun4m_cpu_startup, __smp4m_processor_id
19 .globl sun4d_cpu_startup, __smp4d_processor_id 19 .globl sun4d_cpu_startup, __smp4d_processor_id
20 20
21 __INIT 21 __CPUINIT
22 .align 4 22 .align 4
23 23
24/* When we start up a cpu for the first time it enters this routine. 24/* When we start up a cpu for the first time it enters this routine.
@@ -109,7 +109,7 @@ __smp4d_processor_id:
109/* CPUID in bootbus can be found at PA 0xff0140000 */ 109/* CPUID in bootbus can be found at PA 0xff0140000 */
110#define SUN4D_BOOTBUS_CPUID 0xf0140000 110#define SUN4D_BOOTBUS_CPUID 0xf0140000
111 111
112 __INIT 112 __CPUINIT
113 .align 4 113 .align 4
114 114
115sun4d_cpu_startup: 115sun4d_cpu_startup:
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index b1002c607196..5b7e69a8c32f 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -13,6 +13,7 @@ SECTIONS
13 .text 0xf0004000 : 13 .text 0xf0004000 :
14 { 14 {
15 _text = .; 15 _text = .;
16 *(.text.head)
16 TEXT_TEXT 17 TEXT_TEXT
17 SCHED_TEXT 18 SCHED_TEXT
18 LOCK_TEXT 19 LOCK_TEXT
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index 6a5d7cabc044..dd8aa36f366c 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -1251,7 +1251,7 @@ static inline void map_kernel(void)
1251/* Paging initialization on the Sparc Reference MMU. */ 1251/* Paging initialization on the Sparc Reference MMU. */
1252extern void sparc_context_init(int); 1252extern void sparc_context_init(int);
1253 1253
1254void (*poke_srmmu)(void) __initdata = NULL; 1254void (*poke_srmmu)(void) __cpuinitdata = NULL;
1255 1255
1256extern unsigned long bootmem_init(unsigned long *pages_avail); 1256extern unsigned long bootmem_init(unsigned long *pages_avail);
1257 1257
@@ -1446,7 +1446,7 @@ static void __init init_vac_layout(void)
1446 (int)vac_cache_size, (int)vac_line_size); 1446 (int)vac_cache_size, (int)vac_line_size);
1447} 1447}
1448 1448
1449static void __init poke_hypersparc(void) 1449static void __cpuinit poke_hypersparc(void)
1450{ 1450{
1451 volatile unsigned long clear; 1451 volatile unsigned long clear;
1452 unsigned long mreg = srmmu_get_mmureg(); 1452 unsigned long mreg = srmmu_get_mmureg();
@@ -1501,7 +1501,7 @@ static void __init init_hypersparc(void)
1501 hypersparc_setup_blockops(); 1501 hypersparc_setup_blockops();
1502} 1502}
1503 1503
1504static void __init poke_cypress(void) 1504static void __cpuinit poke_cypress(void)
1505{ 1505{
1506 unsigned long mreg = srmmu_get_mmureg(); 1506 unsigned long mreg = srmmu_get_mmureg();
1507 unsigned long faddr, tagval; 1507 unsigned long faddr, tagval;
@@ -1589,7 +1589,7 @@ static void __init init_cypress_605(unsigned long mrev)
1589 init_cypress_common(); 1589 init_cypress_common();
1590} 1590}
1591 1591
1592static void __init poke_swift(void) 1592static void __cpuinit poke_swift(void)
1593{ 1593{
1594 unsigned long mreg; 1594 unsigned long mreg;
1595 1595
@@ -1771,7 +1771,7 @@ static void turbosparc_flush_tlb_page(struct vm_area_struct *vma, unsigned long
1771} 1771}
1772 1772
1773 1773
1774static void __init poke_turbosparc(void) 1774static void __cpuinit poke_turbosparc(void)
1775{ 1775{
1776 unsigned long mreg = srmmu_get_mmureg(); 1776 unsigned long mreg = srmmu_get_mmureg();
1777 unsigned long ccreg; 1777 unsigned long ccreg;
@@ -1834,7 +1834,7 @@ static void __init init_turbosparc(void)
1834 poke_srmmu = poke_turbosparc; 1834 poke_srmmu = poke_turbosparc;
1835} 1835}
1836 1836
1837static void __init poke_tsunami(void) 1837static void __cpuinit poke_tsunami(void)
1838{ 1838{
1839 unsigned long mreg = srmmu_get_mmureg(); 1839 unsigned long mreg = srmmu_get_mmureg();
1840 1840
@@ -1876,7 +1876,7 @@ static void __init init_tsunami(void)
1876 tsunami_setup_blockops(); 1876 tsunami_setup_blockops();
1877} 1877}
1878 1878
1879static void __init poke_viking(void) 1879static void __cpuinit poke_viking(void)
1880{ 1880{
1881 unsigned long mreg = srmmu_get_mmureg(); 1881 unsigned long mreg = srmmu_get_mmureg();
1882 static int smp_catch; 1882 static int smp_catch;
diff --git a/arch/sparc64/kernel/pci_fire.c b/arch/sparc64/kernel/pci_fire.c
index 9462b68f4894..fcbbac66e141 100644
--- a/arch/sparc64/kernel/pci_fire.c
+++ b/arch/sparc64/kernel/pci_fire.c
@@ -455,7 +455,7 @@ static int __init pci_fire_pbm_init(struct pci_pbm_info *pbm,
455 return 0; 455 return 0;
456} 456}
457 457
458static int __devinit fire_probe(struct of_device *op, 458static int __init fire_probe(struct of_device *op,
459 const struct of_device_id *match) 459 const struct of_device_id *match)
460{ 460{
461 struct device_node *dp = op->node; 461 struct device_node *dp = op->node;
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index dfb3ec892987..56605adbb5b3 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -493,7 +493,7 @@ static void __init psycho_pbm_init(struct pci_pbm_info *pbm,
493 psycho_scan_bus(pbm, &op->dev); 493 psycho_scan_bus(pbm, &op->dev);
494} 494}
495 495
496static struct pci_pbm_info * __devinit psycho_find_sibling(u32 upa_portid) 496static struct pci_pbm_info * __init psycho_find_sibling(u32 upa_portid)
497{ 497{
498 struct pci_pbm_info *pbm; 498 struct pci_pbm_info *pbm;
499 499
@@ -506,7 +506,7 @@ static struct pci_pbm_info * __devinit psycho_find_sibling(u32 upa_portid)
506 506
507#define PSYCHO_CONFIGSPACE 0x001000000UL 507#define PSYCHO_CONFIGSPACE 0x001000000UL
508 508
509static int __devinit psycho_probe(struct of_device *op, 509static int __init psycho_probe(struct of_device *op,
510 const struct of_device_id *match) 510 const struct of_device_id *match)
511{ 511{
512 const struct linux_prom64_registers *pr_regs; 512 const struct linux_prom64_registers *pr_regs;
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index 34a1fded3941..4b27b0e10ce7 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -929,7 +929,7 @@ static int __init pci_sun4v_pbm_init(struct pci_pbm_info *pbm,
929 return 0; 929 return 0;
930} 930}
931 931
932static int __devinit pci_sun4v_probe(struct of_device *op, 932static int __init pci_sun4v_probe(struct of_device *op,
933 const struct of_device_id *match) 933 const struct of_device_id *match)
934{ 934{
935 const struct linux_prom64_registers *regs; 935 const struct linux_prom64_registers *regs;
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index e5627118e613..f500b0618bb0 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -282,7 +282,7 @@ static unsigned long kimage_addr_to_ra(void *p)
282 return kern_base + (val - KERNBASE); 282 return kern_base + (val - KERNBASE);
283} 283}
284 284
285static void ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg) 285static void __cpuinit ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg)
286{ 286{
287 extern unsigned long sparc64_ttable_tl0; 287 extern unsigned long sparc64_ttable_tl0;
288 extern unsigned long kern_locked_tte_data; 288 extern unsigned long kern_locked_tte_data;
@@ -343,7 +343,7 @@ extern unsigned long sparc64_cpu_startup;
343 */ 343 */
344static struct thread_info *cpu_new_thread = NULL; 344static struct thread_info *cpu_new_thread = NULL;
345 345
346static int __devinit smp_boot_one_cpu(unsigned int cpu) 346static int __cpuinit smp_boot_one_cpu(unsigned int cpu)
347{ 347{
348 struct trap_per_cpu *tb = &trap_block[cpu]; 348 struct trap_per_cpu *tb = &trap_block[cpu];
349 unsigned long entry = 349 unsigned long entry =
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 3c10daf8fc01..185f34679110 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -956,7 +956,7 @@ int of_node_to_nid(struct device_node *dp)
956 return nid; 956 return nid;
957} 957}
958 958
959static void add_node_ranges(void) 959static void __init add_node_ranges(void)
960{ 960{
961 int i; 961 int i;
962 962
diff --git a/arch/x86/boot/tty.c b/arch/x86/boot/tty.c
index 0be77b39328a..7e8e8b25f5f6 100644
--- a/arch/x86/boot/tty.c
+++ b/arch/x86/boot/tty.c
@@ -74,7 +74,7 @@ static int kbd_pending(void)
74{ 74{
75 u8 pending; 75 u8 pending;
76 asm volatile("int $0x16; setnz %0" 76 asm volatile("int $0x16; setnz %0"
77 : "=rm" (pending) 77 : "=qm" (pending)
78 : "a" (0x0100)); 78 : "a" (0x0100));
79 return pending; 79 return pending;
80} 80}
diff --git a/arch/x86/include/asm/ds.h b/arch/x86/include/asm/ds.h
index 72c5a190bf48..a95008457ea4 100644
--- a/arch/x86/include/asm/ds.h
+++ b/arch/x86/include/asm/ds.h
@@ -23,12 +23,13 @@
23#ifndef _ASM_X86_DS_H 23#ifndef _ASM_X86_DS_H
24#define _ASM_X86_DS_H 24#define _ASM_X86_DS_H
25 25
26#ifdef CONFIG_X86_DS
27 26
28#include <linux/types.h> 27#include <linux/types.h>
29#include <linux/init.h> 28#include <linux/init.h>
30 29
31 30
31#ifdef CONFIG_X86_DS
32
32struct task_struct; 33struct task_struct;
33 34
34/* 35/*
@@ -232,7 +233,8 @@ extern void ds_free(struct ds_context *context);
232 233
233#else /* CONFIG_X86_DS */ 234#else /* CONFIG_X86_DS */
234 235
235#define ds_init_intel(config) do {} while (0) 236struct cpuinfo_x86;
237static inline void __cpuinit ds_init_intel(struct cpuinfo_x86 *ignored) {}
236 238
237#endif /* CONFIG_X86_DS */ 239#endif /* CONFIG_X86_DS */
238#endif /* _ASM_X86_DS_H */ 240#endif /* _ASM_X86_DS_H */
diff --git a/arch/x86/include/asm/pci_64.h b/arch/x86/include/asm/pci_64.h
index 5b28995d664e..d02d936840a3 100644
--- a/arch/x86/include/asm/pci_64.h
+++ b/arch/x86/include/asm/pci_64.h
@@ -34,8 +34,6 @@ extern void pci_iommu_alloc(void);
34 */ 34 */
35#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) 35#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
36 36
37#if defined(CONFIG_GART_IOMMU) || defined(CONFIG_CALGARY_IOMMU)
38
39#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \ 37#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \
40 dma_addr_t ADDR_NAME; 38 dma_addr_t ADDR_NAME;
41#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \ 39#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \
@@ -49,18 +47,6 @@ extern void pci_iommu_alloc(void);
49#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ 47#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
50 (((PTR)->LEN_NAME) = (VAL)) 48 (((PTR)->LEN_NAME) = (VAL))
51 49
52#else
53/* No IOMMU */
54
55#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
56#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
57#define pci_unmap_addr(PTR, ADDR_NAME) (0)
58#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0)
59#define pci_unmap_len(PTR, LEN_NAME) (0)
60#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
61
62#endif
63
64#endif /* __KERNEL__ */ 50#endif /* __KERNEL__ */
65 51
66#endif /* _ASM_X86_PCI_64_H */ 52#endif /* _ASM_X86_PCI_64_H */
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
index d1531c8480b7..eefb0594b058 100644
--- a/arch/x86/include/asm/ptrace.h
+++ b/arch/x86/include/asm/ptrace.h
@@ -271,8 +271,6 @@ extern int do_get_thread_area(struct task_struct *p, int idx,
271extern int do_set_thread_area(struct task_struct *p, int idx, 271extern int do_set_thread_area(struct task_struct *p, int idx,
272 struct user_desc __user *info, int can_allocate); 272 struct user_desc __user *info, int can_allocate);
273 273
274#define __ARCH_WANT_COMPAT_SYS_PTRACE
275
276#endif /* __KERNEL__ */ 274#endif /* __KERNEL__ */
277 275
278#endif /* !__ASSEMBLY__ */ 276#endif /* !__ASSEMBLY__ */
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index e489ff9cb3e2..b62a7667828e 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -41,7 +41,7 @@ obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o
41obj-y += process.o 41obj-y += process.o
42obj-y += i387.o xsave.o 42obj-y += i387.o xsave.o
43obj-y += ptrace.o 43obj-y += ptrace.o
44obj-y += ds.o 44obj-$(CONFIG_X86_DS) += ds.o
45obj-$(CONFIG_X86_32) += tls.o 45obj-$(CONFIG_X86_32) += tls.o
46obj-$(CONFIG_IA32_EMULATION) += tls.o 46obj-$(CONFIG_IA32_EMULATION) += tls.o
47obj-y += step.o 47obj-y += step.o
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c
index 04a7f960bbc0..16f94879b525 100644
--- a/arch/x86/kernel/apic.c
+++ b/arch/x86/kernel/apic.c
@@ -1315,7 +1315,7 @@ void enable_x2apic(void)
1315 } 1315 }
1316} 1316}
1317 1317
1318void enable_IR_x2apic(void) 1318void __init enable_IR_x2apic(void)
1319{ 1319{
1320#ifdef CONFIG_INTR_REMAP 1320#ifdef CONFIG_INTR_REMAP
1321 int ret; 1321 int ret;
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
index d3dcd58b87cd..7f05f44b97e9 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
@@ -115,9 +115,20 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data)
115 u32 i = 0; 115 u32 i = 0;
116 116
117 if (cpu_family == CPU_HW_PSTATE) { 117 if (cpu_family == CPU_HW_PSTATE) {
118 rdmsr(MSR_PSTATE_STATUS, lo, hi); 118 if (data->currpstate == HW_PSTATE_INVALID) {
119 i = lo & HW_PSTATE_MASK; 119 /* read (initial) hw pstate if not yet set */
120 data->currpstate = i; 120 rdmsr(MSR_PSTATE_STATUS, lo, hi);
121 i = lo & HW_PSTATE_MASK;
122
123 /*
124 * a workaround for family 11h erratum 311 might cause
125 * an "out-of-range Pstate if the core is in Pstate-0
126 */
127 if (i >= data->numps)
128 data->currpstate = HW_PSTATE_0;
129 else
130 data->currpstate = i;
131 }
121 return 0; 132 return 0;
122 } 133 }
123 do { 134 do {
@@ -1121,6 +1132,7 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol)
1121 } 1132 }
1122 1133
1123 data->cpu = pol->cpu; 1134 data->cpu = pol->cpu;
1135 data->currpstate = HW_PSTATE_INVALID;
1124 1136
1125 if (powernow_k8_cpu_init_acpi(data)) { 1137 if (powernow_k8_cpu_init_acpi(data)) {
1126 /* 1138 /*
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
index ab48cfed4d96..65cfb5d7f77f 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.h
@@ -5,6 +5,19 @@
5 * http://www.gnu.org/licenses/gpl.html 5 * http://www.gnu.org/licenses/gpl.html
6 */ 6 */
7 7
8
9enum pstate {
10 HW_PSTATE_INVALID = 0xff,
11 HW_PSTATE_0 = 0,
12 HW_PSTATE_1 = 1,
13 HW_PSTATE_2 = 2,
14 HW_PSTATE_3 = 3,
15 HW_PSTATE_4 = 4,
16 HW_PSTATE_5 = 5,
17 HW_PSTATE_6 = 6,
18 HW_PSTATE_7 = 7,
19};
20
8struct powernow_k8_data { 21struct powernow_k8_data {
9 unsigned int cpu; 22 unsigned int cpu;
10 23
@@ -23,7 +36,9 @@ struct powernow_k8_data {
23 u32 exttype; /* extended interface = 1 */ 36 u32 exttype; /* extended interface = 1 */
24 37
25 /* keep track of the current fid / vid or pstate */ 38 /* keep track of the current fid / vid or pstate */
26 u32 currvid, currfid, currpstate; 39 u32 currvid;
40 u32 currfid;
41 enum pstate currpstate;
27 42
28 /* the powernow_table includes all frequency and vid/fid pairings: 43 /* the powernow_table includes all frequency and vid/fid pairings:
29 * fid are the lower 8 bits of the index, vid are the upper 8 bits. 44 * fid are the lower 8 bits of the index, vid are the upper 8 bits.
diff --git a/arch/x86/kernel/ds.c b/arch/x86/kernel/ds.c
index d1a121443bde..a2d1176c38ee 100644
--- a/arch/x86/kernel/ds.c
+++ b/arch/x86/kernel/ds.c
@@ -21,8 +21,6 @@
21 */ 21 */
22 22
23 23
24#ifdef CONFIG_X86_DS
25
26#include <asm/ds.h> 24#include <asm/ds.h>
27 25
28#include <linux/errno.h> 26#include <linux/errno.h>
@@ -211,14 +209,15 @@ static DEFINE_PER_CPU(struct ds_context *, system_context);
211static inline struct ds_context *ds_get_context(struct task_struct *task) 209static inline struct ds_context *ds_get_context(struct task_struct *task)
212{ 210{
213 struct ds_context *context; 211 struct ds_context *context;
212 unsigned long irq;
214 213
215 spin_lock(&ds_lock); 214 spin_lock_irqsave(&ds_lock, irq);
216 215
217 context = (task ? task->thread.ds_ctx : this_system_context); 216 context = (task ? task->thread.ds_ctx : this_system_context);
218 if (context) 217 if (context)
219 context->count++; 218 context->count++;
220 219
221 spin_unlock(&ds_lock); 220 spin_unlock_irqrestore(&ds_lock, irq);
222 221
223 return context; 222 return context;
224} 223}
@@ -226,55 +225,46 @@ static inline struct ds_context *ds_get_context(struct task_struct *task)
226/* 225/*
227 * Same as ds_get_context, but allocates the context and it's DS 226 * Same as ds_get_context, but allocates the context and it's DS
228 * structure, if necessary; returns NULL; if out of memory. 227 * structure, if necessary; returns NULL; if out of memory.
229 *
230 * pre: requires ds_lock to be held
231 */ 228 */
232static inline struct ds_context *ds_alloc_context(struct task_struct *task) 229static inline struct ds_context *ds_alloc_context(struct task_struct *task)
233{ 230{
234 struct ds_context **p_context = 231 struct ds_context **p_context =
235 (task ? &task->thread.ds_ctx : &this_system_context); 232 (task ? &task->thread.ds_ctx : &this_system_context);
236 struct ds_context *context = *p_context; 233 struct ds_context *context = *p_context;
234 unsigned long irq;
237 235
238 if (!context) { 236 if (!context) {
239 spin_unlock(&ds_lock);
240
241 context = kzalloc(sizeof(*context), GFP_KERNEL); 237 context = kzalloc(sizeof(*context), GFP_KERNEL);
242 238 if (!context)
243 if (!context) {
244 spin_lock(&ds_lock);
245 return NULL; 239 return NULL;
246 }
247 240
248 context->ds = kzalloc(ds_cfg.sizeof_ds, GFP_KERNEL); 241 context->ds = kzalloc(ds_cfg.sizeof_ds, GFP_KERNEL);
249 if (!context->ds) { 242 if (!context->ds) {
250 kfree(context); 243 kfree(context);
251 spin_lock(&ds_lock);
252 return NULL; 244 return NULL;
253 } 245 }
254 246
255 spin_lock(&ds_lock); 247 spin_lock_irqsave(&ds_lock, irq);
256 /* 248
257 * Check for race - another CPU could have allocated
258 * it meanwhile:
259 */
260 if (*p_context) { 249 if (*p_context) {
261 kfree(context->ds); 250 kfree(context->ds);
262 kfree(context); 251 kfree(context);
263 return *p_context;
264 }
265 252
266 *p_context = context; 253 context = *p_context;
254 } else {
255 *p_context = context;
267 256
268 context->this = p_context; 257 context->this = p_context;
269 context->task = task; 258 context->task = task;
270 259
271 if (task) 260 if (task)
272 set_tsk_thread_flag(task, TIF_DS_AREA_MSR); 261 set_tsk_thread_flag(task, TIF_DS_AREA_MSR);
273 262
274 if (!task || (task == current)) 263 if (!task || (task == current))
275 wrmsr(MSR_IA32_DS_AREA, (unsigned long)context->ds, 0); 264 wrmsrl(MSR_IA32_DS_AREA,
276 265 (unsigned long)context->ds);
277 get_tracer(task); 266 }
267 spin_unlock_irqrestore(&ds_lock, irq);
278 } 268 }
279 269
280 context->count++; 270 context->count++;
@@ -288,10 +278,12 @@ static inline struct ds_context *ds_alloc_context(struct task_struct *task)
288 */ 278 */
289static inline void ds_put_context(struct ds_context *context) 279static inline void ds_put_context(struct ds_context *context)
290{ 280{
281 unsigned long irq;
282
291 if (!context) 283 if (!context)
292 return; 284 return;
293 285
294 spin_lock(&ds_lock); 286 spin_lock_irqsave(&ds_lock, irq);
295 287
296 if (--context->count) 288 if (--context->count)
297 goto out; 289 goto out;
@@ -313,7 +305,7 @@ static inline void ds_put_context(struct ds_context *context)
313 kfree(context->ds); 305 kfree(context->ds);
314 kfree(context); 306 kfree(context);
315 out: 307 out:
316 spin_unlock(&ds_lock); 308 spin_unlock_irqrestore(&ds_lock, irq);
317} 309}
318 310
319 311
@@ -384,6 +376,7 @@ static int ds_request(struct task_struct *task, void *base, size_t size,
384 struct ds_context *context; 376 struct ds_context *context;
385 unsigned long buffer, adj; 377 unsigned long buffer, adj;
386 const unsigned long alignment = (1 << 3); 378 const unsigned long alignment = (1 << 3);
379 unsigned long irq;
387 int error = 0; 380 int error = 0;
388 381
389 if (!ds_cfg.sizeof_ds) 382 if (!ds_cfg.sizeof_ds)
@@ -398,26 +391,27 @@ static int ds_request(struct task_struct *task, void *base, size_t size,
398 return -EOPNOTSUPP; 391 return -EOPNOTSUPP;
399 392
400 393
401 spin_lock(&ds_lock);
402
403 error = -ENOMEM;
404 context = ds_alloc_context(task); 394 context = ds_alloc_context(task);
405 if (!context) 395 if (!context)
406 goto out_unlock; 396 return -ENOMEM;
397
398 spin_lock_irqsave(&ds_lock, irq);
407 399
408 error = -EPERM; 400 error = -EPERM;
409 if (!check_tracer(task)) 401 if (!check_tracer(task))
410 goto out_unlock; 402 goto out_unlock;
411 403
404 get_tracer(task);
405
412 error = -EALREADY; 406 error = -EALREADY;
413 if (context->owner[qual] == current) 407 if (context->owner[qual] == current)
414 goto out_unlock; 408 goto out_put_tracer;
415 error = -EPERM; 409 error = -EPERM;
416 if (context->owner[qual] != NULL) 410 if (context->owner[qual] != NULL)
417 goto out_unlock; 411 goto out_put_tracer;
418 context->owner[qual] = current; 412 context->owner[qual] = current;
419 413
420 spin_unlock(&ds_lock); 414 spin_unlock_irqrestore(&ds_lock, irq);
421 415
422 416
423 error = -ENOMEM; 417 error = -ENOMEM;
@@ -465,10 +459,17 @@ static int ds_request(struct task_struct *task, void *base, size_t size,
465 out_release: 459 out_release:
466 context->owner[qual] = NULL; 460 context->owner[qual] = NULL;
467 ds_put_context(context); 461 ds_put_context(context);
462 put_tracer(task);
463 return error;
464
465 out_put_tracer:
466 spin_unlock_irqrestore(&ds_lock, irq);
467 ds_put_context(context);
468 put_tracer(task);
468 return error; 469 return error;
469 470
470 out_unlock: 471 out_unlock:
471 spin_unlock(&ds_lock); 472 spin_unlock_irqrestore(&ds_lock, irq);
472 ds_put_context(context); 473 ds_put_context(context);
473 return error; 474 return error;
474} 475}
@@ -818,13 +819,21 @@ static const struct ds_configuration ds_cfg_var = {
818 .sizeof_ds = sizeof(long) * 12, 819 .sizeof_ds = sizeof(long) * 12,
819 .sizeof_field = sizeof(long), 820 .sizeof_field = sizeof(long),
820 .sizeof_rec[ds_bts] = sizeof(long) * 3, 821 .sizeof_rec[ds_bts] = sizeof(long) * 3,
822#ifdef __i386__
821 .sizeof_rec[ds_pebs] = sizeof(long) * 10 823 .sizeof_rec[ds_pebs] = sizeof(long) * 10
824#else
825 .sizeof_rec[ds_pebs] = sizeof(long) * 18
826#endif
822}; 827};
823static const struct ds_configuration ds_cfg_64 = { 828static const struct ds_configuration ds_cfg_64 = {
824 .sizeof_ds = 8 * 12, 829 .sizeof_ds = 8 * 12,
825 .sizeof_field = 8, 830 .sizeof_field = 8,
826 .sizeof_rec[ds_bts] = 8 * 3, 831 .sizeof_rec[ds_bts] = 8 * 3,
832#ifdef __i386__
827 .sizeof_rec[ds_pebs] = 8 * 10 833 .sizeof_rec[ds_pebs] = 8 * 10
834#else
835 .sizeof_rec[ds_pebs] = 8 * 18
836#endif
828}; 837};
829 838
830static inline void 839static inline void
@@ -878,4 +887,3 @@ void ds_free(struct ds_context *context)
878 while (leftovers--) 887 while (leftovers--)
879 ds_put_context(context); 888 ds_put_context(context);
880} 889}
881#endif /* CONFIG_X86_DS */
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index 1f20608d4ca8..b0f61f0dcd0a 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -58,7 +58,7 @@ void __cpuinit mxcsr_feature_mask_init(void)
58 stts(); 58 stts();
59} 59}
60 60
61void __init init_thread_xstate(void) 61void __cpuinit init_thread_xstate(void)
62{ 62{
63 if (!HAVE_HWFP) { 63 if (!HAVE_HWFP) {
64 xstate_size = sizeof(struct i387_soft_struct); 64 xstate_size = sizeof(struct i387_soft_struct);
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index c9513e1ff28d..9043251210fb 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -3608,27 +3608,7 @@ int __init io_apic_get_redir_entries (int ioapic)
3608 3608
3609int __init probe_nr_irqs(void) 3609int __init probe_nr_irqs(void)
3610{ 3610{
3611 int idx; 3611 return NR_IRQS;
3612 int nr = 0;
3613#ifndef CONFIG_XEN
3614 int nr_min = 32;
3615#else
3616 int nr_min = NR_IRQS;
3617#endif
3618
3619 for (idx = 0; idx < nr_ioapics; idx++)
3620 nr += io_apic_get_redir_entries(idx) + 1;
3621
3622 /* double it for hotplug and msi and nmi */
3623 nr <<= 1;
3624
3625 /* something wrong ? */
3626 if (nr < nr_min)
3627 nr = nr_min;
3628 if (WARN_ON(nr > NR_IRQS))
3629 nr = NR_IRQS;
3630
3631 return nr;
3632} 3612}
3633 3613
3634/* -------------------------------------------------------------------------- 3614/* --------------------------------------------------------------------------
@@ -3775,7 +3755,9 @@ int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity)
3775void __init setup_ioapic_dest(void) 3755void __init setup_ioapic_dest(void)
3776{ 3756{
3777 int pin, ioapic, irq, irq_entry; 3757 int pin, ioapic, irq, irq_entry;
3758 struct irq_desc *desc;
3778 struct irq_cfg *cfg; 3759 struct irq_cfg *cfg;
3760 cpumask_t mask;
3779 3761
3780 if (skip_ioapic_setup == 1) 3762 if (skip_ioapic_setup == 1)
3781 return; 3763 return;
@@ -3792,16 +3774,30 @@ void __init setup_ioapic_dest(void)
3792 * cpu is online. 3774 * cpu is online.
3793 */ 3775 */
3794 cfg = irq_cfg(irq); 3776 cfg = irq_cfg(irq);
3795 if (!cfg->vector) 3777 if (!cfg->vector) {
3796 setup_IO_APIC_irq(ioapic, pin, irq, 3778 setup_IO_APIC_irq(ioapic, pin, irq,
3797 irq_trigger(irq_entry), 3779 irq_trigger(irq_entry),
3798 irq_polarity(irq_entry)); 3780 irq_polarity(irq_entry));
3781 continue;
3782
3783 }
3784
3785 /*
3786 * Honour affinities which have been set in early boot
3787 */
3788 desc = irq_to_desc(irq);
3789 if (desc->status &
3790 (IRQ_NO_BALANCING | IRQ_AFFINITY_SET))
3791 mask = desc->affinity;
3792 else
3793 mask = TARGET_CPUS;
3794
3799#ifdef CONFIG_INTR_REMAP 3795#ifdef CONFIG_INTR_REMAP
3800 else if (intr_remapping_enabled) 3796 if (intr_remapping_enabled)
3801 set_ir_ioapic_affinity_irq(irq, TARGET_CPUS); 3797 set_ir_ioapic_affinity_irq(irq, mask);
3802#endif
3803 else 3798 else
3804 set_ioapic_affinity_irq(irq, TARGET_CPUS); 3799#endif
3800 set_ioapic_affinity_irq(irq, mask);
3805 } 3801 }
3806 3802
3807 } 3803 }
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index 1c9cc431ea4f..e169ae9b6a62 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -128,7 +128,7 @@ static int kvm_register_clock(char *txt)
128} 128}
129 129
130#ifdef CONFIG_X86_LOCAL_APIC 130#ifdef CONFIG_X86_LOCAL_APIC
131static void __devinit kvm_setup_secondary_clock(void) 131static void __cpuinit kvm_setup_secondary_clock(void)
132{ 132{
133 /* 133 /*
134 * Now that the first cpu already had this clocksource initialized, 134 * Now that the first cpu already had this clocksource initialized,
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
index e1e731d78f38..d28bbdc35e4e 100644
--- a/arch/x86/kernel/pci-calgary_64.c
+++ b/arch/x86/kernel/pci-calgary_64.c
@@ -1567,7 +1567,7 @@ static int __init calgary_parse_options(char *p)
1567 ++p; 1567 ++p;
1568 if (*p == '\0') 1568 if (*p == '\0')
1569 break; 1569 break;
1570 bridge = simple_strtol(p, &endp, 0); 1570 bridge = simple_strtoul(p, &endp, 0);
1571 if (p == endp) 1571 if (p == endp)
1572 break; 1572 break;
1573 1573
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
index b13acb75e822..15c3e6999182 100644
--- a/arch/x86/kernel/xsave.c
+++ b/arch/x86/kernel/xsave.c
@@ -310,7 +310,7 @@ static void __init setup_xstate_init(void)
310/* 310/*
311 * Enable and initialize the xsave feature. 311 * Enable and initialize the xsave feature.
312 */ 312 */
313void __init xsave_cntxt_init(void) 313void __ref xsave_cntxt_init(void)
314{ 314{
315 unsigned int eax, ebx, ecx, edx; 315 unsigned int eax, ebx, ecx, edx;
316 316
diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
index 3f1b81a83e2e..716d26f0e5d4 100644
--- a/arch/x86/oprofile/op_model_ppro.c
+++ b/arch/x86/oprofile/op_model_ppro.c
@@ -69,7 +69,7 @@ static void ppro_setup_ctrs(struct op_msrs const * const msrs)
69 int i; 69 int i;
70 70
71 if (!reset_value) { 71 if (!reset_value) {
72 reset_value = kmalloc(sizeof(unsigned) * num_counters, 72 reset_value = kmalloc(sizeof(reset_value[0]) * num_counters,
73 GFP_ATOMIC); 73 GFP_ATOMIC);
74 if (!reset_value) 74 if (!reset_value)
75 return; 75 return;
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
index 3c27a809393b..2051dc96b8e9 100644
--- a/arch/x86/pci/fixup.c
+++ b/arch/x86/pci/fixup.c
@@ -496,21 +496,24 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SIEMENS, 0x0015,
496 pci_siemens_interrupt_controller); 496 pci_siemens_interrupt_controller);
497 497
498/* 498/*
499 * Regular PCI devices have 256 bytes, but AMD Family 10h Opteron ext config 499 * Regular PCI devices have 256 bytes, but AMD Family 10h/11h CPUs have
500 * have 4096 bytes. Even if the device is capable, that doesn't mean we can 500 * 4096 bytes configuration space for each function of their processor
501 * access it. Maybe we don't have a way to generate extended config space 501 * configuration space.
502 * accesses. So check it
503 */ 502 */
504static void fam10h_pci_cfg_space_size(struct pci_dev *dev) 503static void amd_cpu_pci_cfg_space_size(struct pci_dev *dev)
505{ 504{
506 dev->cfg_size = pci_cfg_space_size_ext(dev); 505 dev->cfg_size = pci_cfg_space_size_ext(dev);
507} 506}
508 507DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1200, amd_cpu_pci_cfg_space_size);
509DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1200, fam10h_pci_cfg_space_size); 508DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1201, amd_cpu_pci_cfg_space_size);
510DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1201, fam10h_pci_cfg_space_size); 509DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1202, amd_cpu_pci_cfg_space_size);
511DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1202, fam10h_pci_cfg_space_size); 510DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1203, amd_cpu_pci_cfg_space_size);
512DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1203, fam10h_pci_cfg_space_size); 511DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1204, amd_cpu_pci_cfg_space_size);
513DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1204, fam10h_pci_cfg_space_size); 512DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1300, amd_cpu_pci_cfg_space_size);
513DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1301, amd_cpu_pci_cfg_space_size);
514DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1302, amd_cpu_pci_cfg_space_size);
515DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1303, amd_cpu_pci_cfg_space_size);
516DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1304, amd_cpu_pci_cfg_space_size);
514 517
515/* 518/*
516 * SB600: Disable BAR1 on device 14.0 to avoid HPET resources from 519 * SB600: Disable BAR1 on device 14.0 to avoid HPET resources from
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 688936044dc9..636ef4caa52d 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -661,12 +661,11 @@ void xen_set_pgd(pgd_t *ptr, pgd_t val)
661 * For 64-bit, we must skip the Xen hole in the middle of the address 661 * For 64-bit, we must skip the Xen hole in the middle of the address
662 * space, just after the big x86-64 virtual hole. 662 * space, just after the big x86-64 virtual hole.
663 */ 663 */
664static int xen_pgd_walk(struct mm_struct *mm, 664static int __xen_pgd_walk(struct mm_struct *mm, pgd_t *pgd,
665 int (*func)(struct mm_struct *mm, struct page *, 665 int (*func)(struct mm_struct *mm, struct page *,
666 enum pt_level), 666 enum pt_level),
667 unsigned long limit) 667 unsigned long limit)
668{ 668{
669 pgd_t *pgd = mm->pgd;
670 int flush = 0; 669 int flush = 0;
671 unsigned hole_low, hole_high; 670 unsigned hole_low, hole_high;
672 unsigned pgdidx_limit, pudidx_limit, pmdidx_limit; 671 unsigned pgdidx_limit, pudidx_limit, pmdidx_limit;
@@ -753,6 +752,14 @@ out:
753 return flush; 752 return flush;
754} 753}
755 754
755static int xen_pgd_walk(struct mm_struct *mm,
756 int (*func)(struct mm_struct *mm, struct page *,
757 enum pt_level),
758 unsigned long limit)
759{
760 return __xen_pgd_walk(mm, mm->pgd, func, limit);
761}
762
756/* If we're using split pte locks, then take the page's lock and 763/* If we're using split pte locks, then take the page's lock and
757 return a pointer to it. Otherwise return NULL. */ 764 return a pointer to it. Otherwise return NULL. */
758static spinlock_t *xen_pte_lock(struct page *page, struct mm_struct *mm) 765static spinlock_t *xen_pte_lock(struct page *page, struct mm_struct *mm)
@@ -854,7 +861,7 @@ static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd)
854 861
855 xen_mc_batch(); 862 xen_mc_batch();
856 863
857 if (xen_pgd_walk(mm, xen_pin_page, USER_LIMIT)) { 864 if (__xen_pgd_walk(mm, pgd, xen_pin_page, USER_LIMIT)) {
858 /* re-enable interrupts for flushing */ 865 /* re-enable interrupts for flushing */
859 xen_mc_issue(0); 866 xen_mc_issue(0);
860 867
@@ -998,7 +1005,7 @@ static void __xen_pgd_unpin(struct mm_struct *mm, pgd_t *pgd)
998 PT_PMD); 1005 PT_PMD);
999#endif 1006#endif
1000 1007
1001 xen_pgd_walk(mm, xen_unpin_page, USER_LIMIT); 1008 __xen_pgd_walk(mm, pgd, xen_unpin_page, USER_LIMIT);
1002 1009
1003 xen_mc_issue(0); 1010 xen_mc_issue(0);
1004} 1011}
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index d77da613b1d2..acd9b6705e02 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -362,7 +362,7 @@ static void xen_cpu_die(unsigned int cpu)
362 alternatives_smp_switch(0); 362 alternatives_smp_switch(0);
363} 363}
364 364
365static void xen_play_dead(void) 365static void __cpuinit xen_play_dead(void) /* used only with CPU_HOTPLUG */
366{ 366{
367 play_dead_common(); 367 play_dead_common();
368 HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); 368 HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index d7422dc2a55c..9e1afae8461f 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -49,7 +49,7 @@ bool xen_vcpu_stolen(int vcpu);
49 49
50void xen_mark_init_mm_pinned(void); 50void xen_mark_init_mm_pinned(void);
51 51
52void __init xen_setup_vcpu_info_placement(void); 52void xen_setup_vcpu_info_placement(void);
53 53
54#ifdef CONFIG_SMP 54#ifdef CONFIG_SMP
55void xen_smp_init(void); 55void xen_smp_init(void);