aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/Kconfig.debug8
-rw-r--r--arch/alpha/kernel/osf_sys.c14
-rw-r--r--arch/alpha/kernel/process.c1
-rw-r--r--arch/alpha/kernel/setup.c9
-rw-r--r--arch/alpha/kernel/signal.c1
-rw-r--r--arch/alpha/kernel/smp.c1
-rw-r--r--arch/alpha/kernel/srmcons.c2
-rw-r--r--arch/alpha/mm/fault.c1
-rw-r--r--arch/arm/kernel/ptrace.c1
-rw-r--r--arch/arm/kernel/traps.c14
-rw-r--r--arch/arm/mach-aaec2000/core.c2
-rw-r--r--arch/arm/mach-at91/at91rm9200_time.c2
-rw-r--r--arch/arm/mach-at91/at91sam926x_time.c2
-rw-r--r--arch/arm/mach-clps711x/time.c2
-rw-r--r--arch/arm/mach-clps7500/core.c2
-rw-r--r--arch/arm/mach-ebsa110/core.c2
-rw-r--r--arch/arm/mach-ep93xx/core.c2
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c2
-rw-r--r--arch/arm/mach-footbridge/isa-timer.c2
-rw-r--r--arch/arm/mach-h720x/cpu-h7201.c2
-rw-r--r--arch/arm/mach-h720x/cpu-h7202.c2
-rw-r--r--arch/arm/mach-imx/time.c2
-rw-r--r--arch/arm/mach-integrator/core.c2
-rw-r--r--arch/arm/mach-ixp2000/core.c2
-rw-r--r--arch/arm/mach-ixp23xx/core.c2
-rw-r--r--arch/arm/mach-ixp4xx/common.c2
-rw-r--r--arch/arm/mach-lh7a40x/time.c2
-rw-r--r--arch/arm/mach-netx/time.c2
-rw-r--r--arch/arm/mach-ns9xxx/time.c2
-rw-r--r--arch/arm/mach-omap1/time.c2
-rw-r--r--arch/arm/mach-omap2/timer-gp.c2
-rw-r--r--arch/arm/mach-pnx4008/time.c2
-rw-r--r--arch/arm/mach-pxa/time.c2
-rw-r--r--arch/arm/mach-realview/core.c2
-rw-r--r--arch/arm/mach-sa1100/h3600.c2
-rw-r--r--arch/arm/mach-sa1100/time.c2
-rw-r--r--arch/arm/mach-shark/core.c2
-rw-r--r--arch/arm/mach-versatile/core.c2
-rw-r--r--arch/arm/mm/fault.c2
-rw-r--r--arch/arm/plat-iop/time.c2
-rw-r--r--arch/arm/plat-omap/timer32k.c2
-rw-r--r--arch/arm/plat-s3c24xx/time.c2
-rw-r--r--arch/arm26/kernel/armksyms.c1
-rw-r--r--arch/arm26/kernel/ptrace.c1
-rw-r--r--arch/arm26/kernel/signal.c1
-rw-r--r--arch/arm26/mm/memc.c8
-rw-r--r--arch/avr32/kernel/kprobes.c2
-rw-r--r--arch/avr32/kernel/ptrace.c5
-rw-r--r--arch/avr32/kernel/traps.c14
-rw-r--r--arch/avr32/mm/fault.c2
-rw-r--r--arch/cris/arch-v10/kernel/ptrace.c1
-rw-r--r--arch/cris/arch-v10/kernel/signal.c1
-rw-r--r--arch/cris/arch-v32/drivers/pci/dma.c2
-rw-r--r--arch/cris/arch-v32/kernel/ptrace.c1
-rw-r--r--arch/cris/kernel/crisksyms.c1
-rw-r--r--arch/cris/kernel/ptrace.c1
-rw-r--r--arch/frv/kernel/irq.c1
-rw-r--r--arch/frv/kernel/ptrace.c1
-rw-r--r--arch/frv/kernel/semaphore.c2
-rw-r--r--arch/frv/kernel/signal.c1
-rw-r--r--arch/frv/kernel/sys_frv.c1
-rw-r--r--arch/frv/mm/pgalloc.c4
-rw-r--r--arch/h8300/kernel/ptrace.c1
-rw-r--r--arch/h8300/kernel/sys_h8300.c1
-rw-r--r--arch/i386/boot/video.S4
-rw-r--r--arch/i386/kernel/Makefile1
-rw-r--r--arch/i386/kernel/apic.c1
-rw-r--r--arch/i386/kernel/apm.c3
-rw-r--r--arch/i386/kernel/crash.c2
-rw-r--r--arch/i386/kernel/efi.c12
-rw-r--r--arch/i386/kernel/i8259.c1
-rw-r--r--arch/i386/kernel/io_apic.c1
-rw-r--r--arch/i386/kernel/ioport.c1
-rw-r--r--arch/i386/kernel/kprobes.c27
-rw-r--r--arch/i386/kernel/ldt.c1
-rw-r--r--arch/i386/kernel/legacy_serial.c67
-rw-r--r--arch/i386/kernel/mpparse.c1
-rw-r--r--arch/i386/kernel/nmi.c2
-rw-r--r--arch/i386/kernel/pci-dma.c2
-rw-r--r--arch/i386/kernel/process.c1
-rw-r--r--arch/i386/kernel/ptrace.c1
-rw-r--r--arch/i386/kernel/signal.c1
-rw-r--r--arch/i386/kernel/smp.c1
-rw-r--r--arch/i386/kernel/smpboot.c1
-rw-r--r--arch/i386/kernel/sys_i386.c1
-rw-r--r--arch/i386/kernel/syscall_table.S1
-rw-r--r--arch/i386/kernel/traps.c21
-rw-r--r--arch/i386/kernel/vm86.c1
-rw-r--r--arch/i386/mach-default/setup.c2
-rw-r--r--arch/i386/mach-visws/setup.c2
-rw-r--r--arch/i386/mach-visws/visws_apic.c1
-rw-r--r--arch/i386/mach-voyager/setup.c2
-rw-r--r--arch/i386/mach-voyager/voyager_smp.c1
-rw-r--r--arch/i386/mach-voyager/voyager_thread.c1
-rw-r--r--arch/i386/mm/fault.c4
-rw-r--r--arch/i386/mm/hugetlbpage.c1
-rw-r--r--arch/i386/mm/init.c9
-rw-r--r--arch/i386/oprofile/nmi_int.c2
-rw-r--r--arch/i386/oprofile/nmi_timer_int.c3
-rw-r--r--arch/ia64/hp/sim/boot/fw-emu.c2
-rw-r--r--arch/ia64/ia32/ia32_ldt.c1
-rw-r--r--arch/ia64/ia32/ia32_signal.c1
-rw-r--r--arch/ia64/ia32/ia32_support.c6
-rw-r--r--arch/ia64/kernel/crash.c4
-rw-r--r--arch/ia64/kernel/efi.c10
-rw-r--r--arch/ia64/kernel/iosapic.c1
-rw-r--r--arch/ia64/kernel/irq_ia64.c1
-rw-r--r--arch/ia64/kernel/kprobes.c32
-rw-r--r--arch/ia64/kernel/mca.c3
-rw-r--r--arch/ia64/kernel/mca_drv.c1
-rw-r--r--arch/ia64/kernel/perfmon.c1
-rw-r--r--arch/ia64/kernel/process.c3
-rw-r--r--arch/ia64/kernel/salinfo.c1
-rw-r--r--arch/ia64/kernel/signal.c1
-rw-r--r--arch/ia64/kernel/smpboot.c1
-rw-r--r--arch/ia64/kernel/sys_ia64.c1
-rw-r--r--arch/ia64/kernel/time.c2
-rw-r--r--arch/ia64/kernel/traps.c18
-rw-r--r--arch/ia64/kernel/unaligned.c1
-rw-r--r--arch/ia64/mm/discontig.c2
-rw-r--r--arch/ia64/mm/fault.c3
-rw-r--r--arch/ia64/mm/hugetlbpage.c1
-rw-r--r--arch/ia64/pci/pci.c1
-rw-r--r--arch/ia64/sn/kernel/xpc_main.c4
-rw-r--r--arch/m32r/kernel/m32r_ksyms.c1
-rw-r--r--arch/m32r/kernel/signal.c1
-rw-r--r--arch/m32r/kernel/smpboot.c1
-rw-r--r--arch/m32r/kernel/sys_m32r.c1
-rw-r--r--arch/m32r/mm/fault-nommu.c1
-rw-r--r--arch/m32r/mm/fault.c1
-rw-r--r--arch/m68k/kernel/ptrace.c1
-rw-r--r--arch/m68k/mvme16x/rtc.c1
-rw-r--r--arch/m68knommu/kernel/ptrace.c1
-rw-r--r--arch/m68knommu/kernel/sys_m68k.c1
-rw-r--r--arch/mips/kernel/early_printk.c5
-rw-r--r--arch/mips/kernel/irixelf.c1
-rw-r--r--arch/mips/kernel/irixioctl.c1
-rw-r--r--arch/mips/kernel/irixsig.c1
-rw-r--r--arch/mips/kernel/ptrace.c1
-rw-r--r--arch/mips/kernel/signal.c1
-rw-r--r--arch/mips/kernel/signal32.c1
-rw-r--r--arch/mips/kernel/signal_n32.c1
-rw-r--r--arch/mips/kernel/stacktrace.c22
-rw-r--r--arch/mips/kernel/syscall.c1
-rw-r--r--arch/mips/kernel/traps.c1
-rw-r--r--arch/mips/kernel/unaligned.c1
-rw-r--r--arch/mips/math-emu/dsemul.c1
-rw-r--r--arch/mips/mm/fault.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c1
-rw-r--r--arch/mips/sni/irq.c2
-rw-r--r--arch/parisc/hpux/fs.c1
-rw-r--r--arch/parisc/hpux/ioctl.c1
-rw-r--r--arch/parisc/kernel/irq.c2
-rw-r--r--arch/parisc/kernel/ptrace.c1
-rw-r--r--arch/parisc/kernel/signal.c1
-rw-r--r--arch/parisc/kernel/signal32.c1
-rw-r--r--arch/parisc/kernel/sys_parisc.c1
-rw-r--r--arch/parisc/kernel/traps.c1
-rw-r--r--arch/parisc/kernel/unwind.c5
-rw-r--r--arch/powerpc/kernel/kprobes.c31
-rw-r--r--arch/powerpc/kernel/process.c1
-rw-r--r--arch/powerpc/kernel/ptrace.c1
-rw-r--r--arch/powerpc/kernel/signal_32.c1
-rw-r--r--arch/powerpc/kernel/signal_64.c1
-rw-r--r--arch/powerpc/kernel/syscalls.c1
-rw-r--r--arch/powerpc/kernel/traps.c16
-rw-r--r--arch/powerpc/kernel/udbg.c19
-rw-r--r--arch/powerpc/kernel/vdso.c1
-rw-r--r--arch/powerpc/mm/fault.c2
-rw-r--r--arch/powerpc/mm/hugetlbpage.c1
-rw-r--r--arch/powerpc/mm/init_64.c5
-rw-r--r--arch/powerpc/platforms/cell/spufs/backing_ops.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/hw_ops.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/switch.c1
-rw-r--r--arch/powerpc/platforms/chrp/smp.c1
-rw-r--r--arch/powerpc/platforms/iseries/smp.c1
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c1
-rw-r--r--arch/powerpc/platforms/powermac/smp.c1
-rw-r--r--arch/powerpc/xmon/xmon.c3
-rw-r--r--arch/ppc/kernel/ppc_htab.c1
-rw-r--r--arch/ppc/kernel/smp.c1
-rw-r--r--arch/ppc/syslib/virtex_devices.h7
-rw-r--r--arch/s390/kernel/compat_signal.c1
-rw-r--r--arch/s390/kernel/dis.c2
-rw-r--r--arch/s390/kernel/kprobes.c27
-rw-r--r--arch/s390/kernel/process.c1
-rw-r--r--arch/s390/kernel/signal.c1
-rw-r--r--arch/s390/kernel/smp.c1
-rw-r--r--arch/s390/kernel/stacktrace.c18
-rw-r--r--arch/s390/kernel/sys_s390.c1
-rw-r--r--arch/s390/kernel/time.c1
-rw-r--r--arch/s390/kernel/traps.c17
-rw-r--r--arch/s390/mm/fault.c2
-rw-r--r--arch/sh/drivers/pci/pci-st40.c1
-rw-r--r--arch/sh/kernel/early_printk.c18
-rw-r--r--arch/sh/kernel/ptrace.c1
-rw-r--r--arch/sh/kernel/sh_ksyms.c1
-rw-r--r--arch/sh/kernel/signal.c1
-rw-r--r--arch/sh/kernel/stacktrace.c9
-rw-r--r--arch/sh/kernel/sys_sh.c1
-rw-r--r--arch/sh/kernel/timers/timer-cmt.c2
-rw-r--r--arch/sh/kernel/timers/timer-mtu2.c2
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c2
-rw-r--r--arch/sh/mm/fault-nommu.c1
-rw-r--r--arch/sh/mm/hugetlbpage.c1
-rw-r--r--arch/sh/mm/pmb.c6
-rw-r--r--arch/sh64/kernel/early_printk.c8
-rw-r--r--arch/sh64/kernel/irq.c1
-rw-r--r--arch/sh64/kernel/pci_sh5.c1
-rw-r--r--arch/sh64/kernel/sh_ksyms.c1
-rw-r--r--arch/sh64/kernel/signal.c1
-rw-r--r--arch/sh64/kernel/sys_sh64.c1
-rw-r--r--arch/sh64/kernel/traps.c1
-rw-r--r--arch/sh64/kernel/unwind.c6
-rw-r--r--arch/sh64/mm/fault.c1
-rw-r--r--arch/sh64/mm/hugetlbpage.c1
-rw-r--r--arch/sh64/mm/tlbmiss.c1
-rw-r--r--arch/sparc/kernel/head.S2
-rw-r--r--arch/sparc/kernel/irq.c1
-rw-r--r--arch/sparc/kernel/process.c1
-rw-r--r--arch/sparc/kernel/setup.c2
-rw-r--r--arch/sparc/kernel/signal.c1
-rw-r--r--arch/sparc/kernel/smp.c1
-rw-r--r--arch/sparc/kernel/sun4d_irq.c1
-rw-r--r--arch/sparc/kernel/sun4d_smp.c1
-rw-r--r--arch/sparc/kernel/sun4m_smp.c1
-rw-r--r--arch/sparc/kernel/sunos_ioctl.c1
-rw-r--r--arch/sparc/kernel/sys_solaris.c1
-rw-r--r--arch/sparc/kernel/traps.c2
-rw-r--r--arch/sparc/lib/bitext.c1
-rw-r--r--arch/sparc/mm/fault.c3
-rw-r--r--arch/sparc/mm/srmmu.c2
-rw-r--r--arch/sparc64/kernel/kprobes.c2
-rw-r--r--arch/sparc64/kernel/pci.c1
-rw-r--r--arch/sparc64/kernel/process.c1
-rw-r--r--arch/sparc64/kernel/signal.c1
-rw-r--r--arch/sparc64/kernel/signal32.c1
-rw-r--r--arch/sparc64/kernel/smp.c1
-rw-r--r--arch/sparc64/kernel/stacktrace.c20
-rw-r--r--arch/sparc64/kernel/sunos_ioctl32.c1
-rw-r--r--arch/sparc64/kernel/sys_sparc.c1
-rw-r--r--arch/sparc64/kernel/sys_sparc32.c14
-rw-r--r--arch/sparc64/kernel/traps.c16
-rw-r--r--arch/sparc64/kernel/unaligned.c1
-rw-r--r--arch/sparc64/mm/fault.c3
-rw-r--r--arch/sparc64/mm/hugetlbpage.c1
-rw-r--r--arch/sparc64/solaris/ipc.c1
-rw-r--r--arch/sparc64/solaris/misc.c1
-rw-r--r--arch/sparc64/solaris/signal.c1
-rw-r--r--arch/sparc64/solaris/socket.c1
-rw-r--r--arch/sparc64/solaris/socksys.c1
-rw-r--r--arch/um/drivers/net_kern.c15
-rw-r--r--arch/um/drivers/pcap_kern.c27
-rw-r--r--arch/um/drivers/pcap_user.c23
-rw-r--r--arch/um/kernel/time.c4
-rw-r--r--arch/v850/kernel/process.c1
-rw-r--r--arch/v850/kernel/ptrace.c1
-rw-r--r--arch/v850/kernel/signal.c1
-rw-r--r--arch/v850/kernel/syscalls.c1
-rw-r--r--arch/x86_64/ia32/ia32_signal.c1
-rw-r--r--arch/x86_64/ia32/ia32entry.S3
-rw-r--r--arch/x86_64/kernel/Makefile2
-rw-r--r--arch/x86_64/kernel/apic.c1
-rw-r--r--arch/x86_64/kernel/crash.c2
-rw-r--r--arch/x86_64/kernel/early_printk.c20
-rw-r--r--arch/x86_64/kernel/i8259.c1
-rw-r--r--arch/x86_64/kernel/io_apic.c1
-rw-r--r--arch/x86_64/kernel/ioport.c1
-rw-r--r--arch/x86_64/kernel/kprobes.c29
-rw-r--r--arch/x86_64/kernel/ldt.c1
-rw-r--r--arch/x86_64/kernel/mce.c2
-rw-r--r--arch/x86_64/kernel/mpparse.c1
-rw-r--r--arch/x86_64/kernel/nmi.c2
-rw-r--r--arch/x86_64/kernel/pci-gart.c2
-rw-r--r--arch/x86_64/kernel/process.c2
-rw-r--r--arch/x86_64/kernel/ptrace.c1
-rw-r--r--arch/x86_64/kernel/reboot.c2
-rw-r--r--arch/x86_64/kernel/signal.c1
-rw-r--r--arch/x86_64/kernel/smp.c1
-rw-r--r--arch/x86_64/kernel/smpboot.c3
-rw-r--r--arch/x86_64/kernel/stacktrace.c8
-rw-r--r--arch/x86_64/kernel/sys_x86_64.c1
-rw-r--r--arch/x86_64/kernel/time.c5
-rw-r--r--arch/x86_64/kernel/traps.c20
-rw-r--r--arch/x86_64/mm/fault.c4
-rw-r--r--arch/x86_64/mm/init.c6
-rw-r--r--arch/xtensa/kernel/process.c1
-rw-r--r--arch/xtensa/kernel/ptrace.c1
-rw-r--r--arch/xtensa/kernel/signal.c1
290 files changed, 397 insertions, 653 deletions
diff --git a/arch/alpha/Kconfig.debug b/arch/alpha/Kconfig.debug
index 36d0106c32eb..f45f28cc10da 100644
--- a/arch/alpha/Kconfig.debug
+++ b/arch/alpha/Kconfig.debug
@@ -16,14 +16,6 @@ config DEBUG_RWLOCK
16 too many attempts. If you suspect a rwlock problem or a kernel 16 too many attempts. If you suspect a rwlock problem or a kernel
17 hacker asks for this option then say Y. Otherwise say N. 17 hacker asks for this option then say Y. Otherwise say N.
18 18
19config DEBUG_SEMAPHORE
20 bool "Semaphore debugging"
21 depends on DEBUG_KERNEL
22 help
23 If you say Y here then semaphore processing will issue lots of
24 verbose debugging messages. If you suspect a semaphore problem or a
25 kernel hacker asks for this option then say Y. Otherwise say N.
26
27config ALPHA_LEGACY_START_ADDRESS 19config ALPHA_LEGACY_START_ADDRESS
28 bool "Legacy kernel start address" 20 bool "Legacy kernel start address"
29 depends on ALPHA_GENERIC 21 depends on ALPHA_GENERIC
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index ea405f5713ce..ce857158c1ea 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -953,15 +953,25 @@ osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __use
953asmlinkage int 953asmlinkage int
954osf_utimes(char __user *filename, struct timeval32 __user *tvs) 954osf_utimes(char __user *filename, struct timeval32 __user *tvs)
955{ 955{
956 struct timeval ktvs[2]; 956 struct timespec tv[2];
957 957
958 if (tvs) { 958 if (tvs) {
959 struct timeval ktvs[2];
959 if (get_tv32(&ktvs[0], &tvs[0]) || 960 if (get_tv32(&ktvs[0], &tvs[0]) ||
960 get_tv32(&ktvs[1], &tvs[1])) 961 get_tv32(&ktvs[1], &tvs[1]))
961 return -EFAULT; 962 return -EFAULT;
963
964 if (ktvs[0].tv_usec < 0 || ktvs[0].tv_usec >= 1000000 ||
965 ktvs[1].tv_usec < 0 || ktvs[1].tv_usec >= 1000000)
966 return -EINVAL;
967
968 tv[0].tv_sec = ktvs[0].tv_sec;
969 tv[0].tv_nsec = 1000 * ktvs[0].tv_usec;
970 tv[1].tv_sec = ktvs[1].tv_sec;
971 tv[1].tv_nsec = 1000 * ktvs[1].tv_usec;
962 } 972 }
963 973
964 return do_utimes(AT_FDCWD, filename, tvs ? ktvs : NULL); 974 return do_utimes(AT_FDCWD, filename, tvs ? tv : NULL, 0);
965} 975}
966 976
967#define MAX_SELECT_SECONDS \ 977#define MAX_SELECT_SECONDS \
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index c15186390693..92b61629fe3f 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -14,7 +14,6 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/stddef.h> 17#include <linux/stddef.h>
19#include <linux/unistd.h> 18#include <linux/unistd.h>
20#include <linux/ptrace.h> 19#include <linux/ptrace.h>
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c
index d352c2b05f1a..915f26345c45 100644
--- a/arch/alpha/kernel/setup.c
+++ b/arch/alpha/kernel/setup.c
@@ -744,15 +744,6 @@ setup_arch(char **cmdline_p)
744 paging_init(); 744 paging_init();
745} 745}
746 746
747void __init
748disable_early_printk(void)
749{
750 if (alpha_using_srm && srmcons_output) {
751 unregister_srm_console();
752 srmcons_output = 0;
753 }
754}
755
756static char sys_unknown[] = "Unknown"; 747static char sys_unknown[] = "Unknown";
757static char systype_names[][16] = { 748static char systype_names[][16] = {
758 "0", 749 "0",
diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c
index 741da0945dc4..7f64aa767d5a 100644
--- a/arch/alpha/kernel/signal.c
+++ b/arch/alpha/kernel/signal.c
@@ -15,7 +15,6 @@
15#include <linux/unistd.h> 15#include <linux/unistd.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/smp.h> 17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/stddef.h> 18#include <linux/stddef.h>
20#include <linux/tty.h> 19#include <linux/tty.h>
21#include <linux/binfmts.h> 20#include <linux/binfmts.h>
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index d1ec4f51df1a..80cfb758ee2b 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -18,7 +18,6 @@
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/threads.h> 19#include <linux/threads.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/interrupt.h> 21#include <linux/interrupt.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/delay.h> 23#include <linux/delay.h>
diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c
index 85a821aaceb4..930cedc8be24 100644
--- a/arch/alpha/kernel/srmcons.c
+++ b/arch/alpha/kernel/srmcons.c
@@ -300,7 +300,7 @@ static struct console srmcons = {
300 .write = srm_console_write, 300 .write = srm_console_write,
301 .device = srm_console_device, 301 .device = srm_console_device,
302 .setup = srm_console_setup, 302 .setup = srm_console_setup,
303 .flags = CON_PRINTBUFFER, 303 .flags = CON_PRINTBUFFER | CON_BOOT,
304 .index = -1, 304 .index = -1,
305}; 305};
306 306
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index 8aa9db834c11..f5862792a167 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -21,7 +21,6 @@
21#include <linux/ptrace.h> 21#include <linux/ptrace.h>
22#include <linux/mman.h> 22#include <linux/mman.h>
23#include <linux/smp.h> 23#include <linux/smp.h>
24#include <linux/smp_lock.h>
25#include <linux/interrupt.h> 24#include <linux/interrupt.h>
26#include <linux/module.h> 25#include <linux/module.h>
27 26
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index 13af4006a40f..6f2f46c2e406 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -13,7 +13,6 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/ptrace.h> 16#include <linux/ptrace.h>
18#include <linux/user.h> 17#include <linux/user.h>
19#include <linux/security.h> 18#include <linux/security.h>
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index f05e66b0f868..10ff36e4e414 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -245,8 +245,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
245 do_exit(SIGSEGV); 245 do_exit(SIGSEGV);
246} 246}
247 247
248void notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, 248void arm_notify_die(const char *str, struct pt_regs *regs,
249 unsigned long err, unsigned long trap) 249 struct siginfo *info, unsigned long err, unsigned long trap)
250{ 250{
251 if (user_mode(regs)) { 251 if (user_mode(regs)) {
252 current->thread.error_code = err; 252 current->thread.error_code = err;
@@ -330,7 +330,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
330 info.si_code = ILL_ILLOPC; 330 info.si_code = ILL_ILLOPC;
331 info.si_addr = pc; 331 info.si_addr = pc;
332 332
333 notify_die("Oops - undefined instruction", regs, &info, 0, 6); 333 arm_notify_die("Oops - undefined instruction", regs, &info, 0, 6);
334} 334}
335 335
336asmlinkage void do_unexp_fiq (struct pt_regs *regs) 336asmlinkage void do_unexp_fiq (struct pt_regs *regs)
@@ -384,7 +384,7 @@ static int bad_syscall(int n, struct pt_regs *regs)
384 info.si_addr = (void __user *)instruction_pointer(regs) - 384 info.si_addr = (void __user *)instruction_pointer(regs) -
385 (thumb_mode(regs) ? 2 : 4); 385 (thumb_mode(regs) ? 2 : 4);
386 386
387 notify_die("Oops - bad syscall", regs, &info, n, 0); 387 arm_notify_die("Oops - bad syscall", regs, &info, n, 0);
388 388
389 return regs->ARM_r0; 389 return regs->ARM_r0;
390} 390}
@@ -428,7 +428,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
428 info.si_code = SEGV_MAPERR; 428 info.si_code = SEGV_MAPERR;
429 info.si_addr = NULL; 429 info.si_addr = NULL;
430 430
431 notify_die("branch through zero", regs, &info, 0, 0); 431 arm_notify_die("branch through zero", regs, &info, 0, 0);
432 return 0; 432 return 0;
433 433
434 case NR(breakpoint): /* SWI BREAK_POINT */ 434 case NR(breakpoint): /* SWI BREAK_POINT */
@@ -564,7 +564,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
564 info.si_addr = (void __user *)instruction_pointer(regs) - 564 info.si_addr = (void __user *)instruction_pointer(regs) -
565 (thumb_mode(regs) ? 2 : 4); 565 (thumb_mode(regs) ? 2 : 4);
566 566
567 notify_die("Oops - bad syscall(2)", regs, &info, no, 0); 567 arm_notify_die("Oops - bad syscall(2)", regs, &info, no, 0);
568 return 0; 568 return 0;
569} 569}
570 570
@@ -638,7 +638,7 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
638 info.si_code = ILL_ILLOPC; 638 info.si_code = ILL_ILLOPC;
639 info.si_addr = (void __user *)addr; 639 info.si_addr = (void __user *)addr;
640 640
641 notify_die("unknown data abort code", regs, &info, instr, 0); 641 arm_notify_die("unknown data abort code", regs, &info, instr, 0);
642} 642}
643 643
644void __attribute__((noreturn)) __bug(const char *file, int line) 644void __attribute__((noreturn)) __bug(const char *file, int line)
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c
index a950160fcfb6..0446ef2f5bd6 100644
--- a/arch/arm/mach-aaec2000/core.c
+++ b/arch/arm/mach-aaec2000/core.c
@@ -142,7 +142,7 @@ aaec2000_timer_interrupt(int irq, void *dev_id)
142 142
143static struct irqaction aaec2000_timer_irq = { 143static struct irqaction aaec2000_timer_irq = {
144 .name = "AAEC-2000 Timer Tick", 144 .name = "AAEC-2000 Timer Tick",
145 .flags = IRQF_DISABLED | IRQF_TIMER, 145 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
146 .handler = aaec2000_timer_interrupt, 146 .handler = aaec2000_timer_interrupt,
147}; 147};
148 148
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
index 949199a244c7..a6340357585d 100644
--- a/arch/arm/mach-at91/at91rm9200_time.c
+++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -87,7 +87,7 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
87 87
88static struct irqaction at91rm9200_timer_irq = { 88static struct irqaction at91rm9200_timer_irq = {
89 .name = "at91_tick", 89 .name = "at91_tick",
90 .flags = IRQF_SHARED | IRQF_DISABLED | IRQF_TIMER, 90 .flags = IRQF_SHARED | IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
91 .handler = at91rm9200_timer_interrupt 91 .handler = at91rm9200_timer_interrupt
92}; 92};
93 93
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index a4dded27fa16..5c090c9442f5 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -66,7 +66,7 @@ static irqreturn_t at91sam926x_timer_interrupt(int irq, void *dev_id)
66 66
67static struct irqaction at91sam926x_timer_irq = { 67static struct irqaction at91sam926x_timer_irq = {
68 .name = "at91_tick", 68 .name = "at91_tick",
69 .flags = IRQF_SHARED | IRQF_DISABLED | IRQF_TIMER, 69 .flags = IRQF_SHARED | IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
70 .handler = at91sam926x_timer_interrupt 70 .handler = at91sam926x_timer_interrupt
71}; 71};
72 72
diff --git a/arch/arm/mach-clps711x/time.c b/arch/arm/mach-clps711x/time.c
index 428493dd4687..f428af7545b4 100644
--- a/arch/arm/mach-clps711x/time.c
+++ b/arch/arm/mach-clps711x/time.c
@@ -58,7 +58,7 @@ p720t_timer_interrupt(int irq, void *dev_id)
58 58
59static struct irqaction clps711x_timer_irq = { 59static struct irqaction clps711x_timer_irq = {
60 .name = "CLPS711x Timer Tick", 60 .name = "CLPS711x Timer Tick",
61 .flags = IRQF_DISABLED | IRQF_TIMER, 61 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
62 .handler = p720t_timer_interrupt, 62 .handler = p720t_timer_interrupt,
63}; 63};
64 64
diff --git a/arch/arm/mach-clps7500/core.c b/arch/arm/mach-clps7500/core.c
index 231b90004736..4dde34f25e63 100644
--- a/arch/arm/mach-clps7500/core.c
+++ b/arch/arm/mach-clps7500/core.c
@@ -316,7 +316,7 @@ clps7500_timer_interrupt(int irq, void *dev_id)
316 316
317static struct irqaction clps7500_timer_irq = { 317static struct irqaction clps7500_timer_irq = {
318 .name = "CLPS7500 Timer Tick", 318 .name = "CLPS7500 Timer Tick",
319 .flags = IRQF_DISABLED | IRQF_TIMER, 319 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
320 .handler = clps7500_timer_interrupt, 320 .handler = clps7500_timer_interrupt,
321}; 321};
322 322
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c
index 8459431cfd71..8c1b5690dfe8 100644
--- a/arch/arm/mach-ebsa110/core.c
+++ b/arch/arm/mach-ebsa110/core.c
@@ -199,7 +199,7 @@ ebsa110_timer_interrupt(int irq, void *dev_id)
199 199
200static struct irqaction ebsa110_timer_irq = { 200static struct irqaction ebsa110_timer_irq = {
201 .name = "EBSA110 Timer Tick", 201 .name = "EBSA110 Timer Tick",
202 .flags = IRQF_DISABLED | IRQF_TIMER, 202 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
203 .handler = ebsa110_timer_interrupt, 203 .handler = ebsa110_timer_interrupt,
204}; 204};
205 205
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 829aed696d98..851cc7158ca3 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -116,7 +116,7 @@ static int ep93xx_timer_interrupt(int irq, void *dev_id)
116 116
117static struct irqaction ep93xx_timer_irq = { 117static struct irqaction ep93xx_timer_irq = {
118 .name = "ep93xx timer", 118 .name = "ep93xx timer",
119 .flags = IRQF_DISABLED | IRQF_TIMER, 119 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
120 .handler = ep93xx_timer_interrupt, 120 .handler = ep93xx_timer_interrupt,
121}; 121};
122 122
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index fa6be870c6c2..3a63941d43be 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -44,7 +44,7 @@ timer1_interrupt(int irq, void *dev_id)
44static struct irqaction footbridge_timer_irq = { 44static struct irqaction footbridge_timer_irq = {
45 .name = "Timer1 timer tick", 45 .name = "Timer1 timer tick",
46 .handler = timer1_interrupt, 46 .handler = timer1_interrupt,
47 .flags = IRQF_DISABLED | IRQF_TIMER, 47 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
48}; 48};
49 49
50/* 50/*
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
index d884a3954fb4..d08d64139d00 100644
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ b/arch/arm/mach-footbridge/isa-timer.c
@@ -73,7 +73,7 @@ isa_timer_interrupt(int irq, void *dev_id)
73static struct irqaction isa_timer_irq = { 73static struct irqaction isa_timer_irq = {
74 .name = "ISA timer tick", 74 .name = "ISA timer tick",
75 .handler = isa_timer_interrupt, 75 .handler = isa_timer_interrupt,
76 .flags = IRQF_DISABLED | IRQF_TIMER, 76 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
77}; 77};
78 78
79static void __init isa_timer_init(void) 79static void __init isa_timer_init(void)
diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c
index 13f76bdb3d9d..9107b8e2ad6e 100644
--- a/arch/arm/mach-h720x/cpu-h7201.c
+++ b/arch/arm/mach-h720x/cpu-h7201.c
@@ -41,7 +41,7 @@ h7201_timer_interrupt(int irq, void *dev_id)
41 41
42static struct irqaction h7201_timer_irq = { 42static struct irqaction h7201_timer_irq = {
43 .name = "h7201 Timer Tick", 43 .name = "h7201 Timer Tick",
44 .flags = IRQF_DISABLED | IRQF_TIMER, 44 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
45 .handler = h7201_timer_interrupt, 45 .handler = h7201_timer_interrupt,
46}; 46};
47 47
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c
index 703870f30adf..82e420d6fd19 100644
--- a/arch/arm/mach-h720x/cpu-h7202.c
+++ b/arch/arm/mach-h720x/cpu-h7202.c
@@ -170,7 +170,7 @@ static struct irq_chip h7202_timerx_chip = {
170 170
171static struct irqaction h7202_timer_irq = { 171static struct irqaction h7202_timer_irq = {
172 .name = "h7202 Timer Tick", 172 .name = "h7202 Timer Tick",
173 .flags = IRQF_DISABLED | IRQF_TIMER, 173 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
174 .handler = h7202_timer_interrupt, 174 .handler = h7202_timer_interrupt,
175}; 175};
176 176
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index 2703a730baf7..6960a9d04217 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -56,7 +56,7 @@ imx_timer_interrupt(int irq, void *dev_id)
56 56
57static struct irqaction imx_timer_irq = { 57static struct irqaction imx_timer_irq = {
58 .name = "i.MX Timer Tick", 58 .name = "i.MX Timer Tick",
59 .flags = IRQF_DISABLED | IRQF_TIMER, 59 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
60 .handler = imx_timer_interrupt, 60 .handler = imx_timer_interrupt,
61}; 61};
62 62
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c
index 8d880cb9ba39..897c21c2fb5b 100644
--- a/arch/arm/mach-integrator/core.c
+++ b/arch/arm/mach-integrator/core.c
@@ -282,7 +282,7 @@ integrator_timer_interrupt(int irq, void *dev_id)
282 282
283static struct irqaction integrator_timer_irq = { 283static struct irqaction integrator_timer_irq = {
284 .name = "Integrator Timer Tick", 284 .name = "Integrator Timer Tick",
285 .flags = IRQF_DISABLED | IRQF_TIMER, 285 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
286 .handler = integrator_timer_interrupt, 286 .handler = integrator_timer_interrupt,
287}; 287};
288 288
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
index 9cf2498dc99e..cb6ad211887a 100644
--- a/arch/arm/mach-ixp2000/core.c
+++ b/arch/arm/mach-ixp2000/core.c
@@ -224,7 +224,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id)
224 224
225static struct irqaction ixp2000_timer_irq = { 225static struct irqaction ixp2000_timer_irq = {
226 .name = "IXP2000 Timer Tick", 226 .name = "IXP2000 Timer Tick",
227 .flags = IRQF_DISABLED | IRQF_TIMER, 227 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
228 .handler = ixp2000_timer_interrupt, 228 .handler = ixp2000_timer_interrupt,
229}; 229};
230 230
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c
index ce6ad635a00c..b644bbab7d0a 100644
--- a/arch/arm/mach-ixp23xx/core.c
+++ b/arch/arm/mach-ixp23xx/core.c
@@ -363,7 +363,7 @@ ixp23xx_timer_interrupt(int irq, void *dev_id)
363static struct irqaction ixp23xx_timer_irq = { 363static struct irqaction ixp23xx_timer_irq = {
364 .name = "IXP23xx Timer Tick", 364 .name = "IXP23xx Timer Tick",
365 .handler = ixp23xx_timer_interrupt, 365 .handler = ixp23xx_timer_interrupt,
366 .flags = IRQF_DISABLED | IRQF_TIMER, 366 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
367}; 367};
368 368
369void __init ixp23xx_init_timer(void) 369void __init ixp23xx_init_timer(void)
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index f5cae1e46b7e..64685da1462d 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -279,7 +279,7 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
279 279
280static struct irqaction ixp4xx_timer_irq = { 280static struct irqaction ixp4xx_timer_irq = {
281 .name = "timer1", 281 .name = "timer1",
282 .flags = IRQF_DISABLED | IRQF_TIMER, 282 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
283 .handler = ixp4xx_timer_interrupt, 283 .handler = ixp4xx_timer_interrupt,
284}; 284};
285 285
diff --git a/arch/arm/mach-lh7a40x/time.c b/arch/arm/mach-lh7a40x/time.c
index bef3c4b68d3b..c25316d02537 100644
--- a/arch/arm/mach-lh7a40x/time.c
+++ b/arch/arm/mach-lh7a40x/time.c
@@ -53,7 +53,7 @@ lh7a40x_timer_interrupt(int irq, void *dev_id)
53 53
54static struct irqaction lh7a40x_timer_irq = { 54static struct irqaction lh7a40x_timer_irq = {
55 .name = "LHA740x Timer Tick", 55 .name = "LHA740x Timer Tick",
56 .flags = IRQF_DISABLED | IRQF_TIMER, 56 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
57 .handler = lh7a40x_timer_interrupt, 57 .handler = lh7a40x_timer_interrupt,
58}; 58};
59 59
diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c
index 7e132fcccd47..4762e207b0bf 100644
--- a/arch/arm/mach-netx/time.c
+++ b/arch/arm/mach-netx/time.c
@@ -47,7 +47,7 @@ netx_timer_interrupt(int irq, void *dev_id)
47 47
48static struct irqaction netx_timer_irq = { 48static struct irqaction netx_timer_irq = {
49 .name = "NetX Timer Tick", 49 .name = "NetX Timer Tick",
50 .flags = IRQF_DISABLED | IRQF_TIMER, 50 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
51 .handler = netx_timer_interrupt, 51 .handler = netx_timer_interrupt,
52}; 52};
53 53
diff --git a/arch/arm/mach-ns9xxx/time.c b/arch/arm/mach-ns9xxx/time.c
index eec05f18714a..dd257084441c 100644
--- a/arch/arm/mach-ns9xxx/time.c
+++ b/arch/arm/mach-ns9xxx/time.c
@@ -53,7 +53,7 @@ static unsigned long ns9xxx_timer_gettimeoffset(void)
53 53
54static struct irqaction ns9xxx_timer_irq = { 54static struct irqaction ns9xxx_timer_irq = {
55 .name = "NS9xxx Timer Tick", 55 .name = "NS9xxx Timer Tick",
56 .flags = IRQF_DISABLED | IRQF_TIMER, 56 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
57 .handler = ns9xxx_timer_interrupt, 57 .handler = ns9xxx_timer_interrupt,
58}; 58};
59 59
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 85e048b259f5..3705d20c4e5c 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -179,7 +179,7 @@ static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id)
179 179
180static struct irqaction omap_mpu_timer1_irq = { 180static struct irqaction omap_mpu_timer1_irq = {
181 .name = "mpu_timer1", 181 .name = "mpu_timer1",
182 .flags = IRQF_DISABLED | IRQF_TIMER, 182 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
183 .handler = omap_mpu_timer1_interrupt, 183 .handler = omap_mpu_timer1_interrupt,
184}; 184};
185 185
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index 45d1aaa51b57..62e801ef9ad9 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -52,7 +52,7 @@ static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
52 52
53static struct irqaction omap2_gp_timer_irq = { 53static struct irqaction omap2_gp_timer_irq = {
54 .name = "gp timer", 54 .name = "gp timer",
55 .flags = IRQF_DISABLED | IRQF_TIMER, 55 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
56 .handler = omap2_gp_timer_interrupt, 56 .handler = omap2_gp_timer_interrupt,
57}; 57};
58 58
diff --git a/arch/arm/mach-pnx4008/time.c b/arch/arm/mach-pnx4008/time.c
index 8621c206ac84..67e05f005a6b 100644
--- a/arch/arm/mach-pnx4008/time.c
+++ b/arch/arm/mach-pnx4008/time.c
@@ -82,7 +82,7 @@ static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
82 82
83static struct irqaction pnx4008_timer_irq = { 83static struct irqaction pnx4008_timer_irq = {
84 .name = "PNX4008 Tick Timer", 84 .name = "PNX4008 Tick Timer",
85 .flags = IRQF_DISABLED | IRQF_TIMER, 85 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
86 .handler = pnx4008_timer_interrupt 86 .handler = pnx4008_timer_interrupt
87}; 87};
88 88
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index fc3b82a740a0..5248abe334d2 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -97,7 +97,7 @@ pxa_timer_interrupt(int irq, void *dev_id)
97 97
98static struct irqaction pxa_timer_irq = { 98static struct irqaction pxa_timer_irq = {
99 .name = "PXA Timer Tick", 99 .name = "PXA Timer Tick",
100 .flags = IRQF_DISABLED | IRQF_TIMER, 100 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
101 .handler = pxa_timer_interrupt, 101 .handler = pxa_timer_interrupt,
102}; 102};
103 103
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index 84d3fe76e94e..c7f1b44da40d 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -549,7 +549,7 @@ static irqreturn_t realview_timer_interrupt(int irq, void *dev_id)
549 549
550static struct irqaction realview_timer_irq = { 550static struct irqaction realview_timer_irq = {
551 .name = "RealView Timer Tick", 551 .name = "RealView Timer Tick",
552 .flags = IRQF_DISABLED | IRQF_TIMER, 552 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
553 .handler = realview_timer_interrupt, 553 .handler = realview_timer_interrupt,
554}; 554};
555 555
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index b034ad69a324..b72fee0f2538 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -740,7 +740,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
740static struct irqaction h3800_irq = { 740static struct irqaction h3800_irq = {
741 .name = "h3800_asic", 741 .name = "h3800_asic",
742 .handler = h3800_IRQ_demux, 742 .handler = h3800_IRQ_demux,
743 .flags = IRQF_DISABLED | IRQF_TIMER, 743 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
744}; 744};
745 745
746u32 kpio_int_shadow = 0; 746u32 kpio_int_shadow = 0;
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 29c89f9eb2ce..416e277054c2 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -111,7 +111,7 @@ sa1100_timer_interrupt(int irq, void *dev_id)
111 111
112static struct irqaction sa1100_timer_irq = { 112static struct irqaction sa1100_timer_irq = {
113 .name = "SA11xx Timer Tick", 113 .name = "SA11xx Timer Tick",
114 .flags = IRQF_DISABLED | IRQF_TIMER, 114 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
115 .handler = sa1100_timer_interrupt, 115 .handler = sa1100_timer_interrupt,
116}; 116};
117 117
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c
index 0e480fae8ec5..a0545db2a34f 100644
--- a/arch/arm/mach-shark/core.c
+++ b/arch/arm/mach-shark/core.c
@@ -90,7 +90,7 @@ shark_timer_interrupt(int irq, void *dev_id)
90 90
91static struct irqaction shark_timer_irq = { 91static struct irqaction shark_timer_irq = {
92 .name = "Shark Timer Tick", 92 .name = "Shark Timer Tick",
93 .flags = IRQF_DISABLED | IRQF_TIMER, 93 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
94 .handler = shark_timer_interrupt, 94 .handler = shark_timer_interrupt,
95}; 95};
96 96
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 1275aa7d2eb1..a7dd09436cbc 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -891,7 +891,7 @@ static irqreturn_t versatile_timer_interrupt(int irq, void *dev_id)
891 891
892static struct irqaction versatile_timer_irq = { 892static struct irqaction versatile_timer_irq = {
893 .name = "Versatile Timer Tick", 893 .name = "Versatile Timer Tick",
894 .flags = IRQF_DISABLED | IRQF_TIMER, 894 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
895 .handler = versatile_timer_interrupt, 895 .handler = versatile_timer_interrupt,
896}; 896};
897 897
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 5d9ce7deb4a7..75d491448e45 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -453,7 +453,7 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
453 info.si_errno = 0; 453 info.si_errno = 0;
454 info.si_code = inf->code; 454 info.si_code = inf->code;
455 info.si_addr = (void __user *)addr; 455 info.si_addr = (void __user *)addr;
456 notify_die("", regs, &info, fsr, 0); 456 arm_notify_die("", regs, &info, fsr, 0);
457} 457}
458 458
459asmlinkage void __exception 459asmlinkage void __exception
diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c
index 0cc26da034a1..100d57ad98ed 100644
--- a/arch/arm/plat-iop/time.c
+++ b/arch/arm/plat-iop/time.c
@@ -75,7 +75,7 @@ iop_timer_interrupt(int irq, void *dev_id)
75static struct irqaction iop_timer_irq = { 75static struct irqaction iop_timer_irq = {
76 .name = "IOP Timer Tick", 76 .name = "IOP Timer Tick",
77 .handler = iop_timer_interrupt, 77 .handler = iop_timer_interrupt,
78 .flags = IRQF_DISABLED | IRQF_TIMER, 78 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
79}; 79};
80 80
81void __init iop_init_time(unsigned long tick_rate) 81void __init iop_init_time(unsigned long tick_rate)
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/plat-omap/timer32k.c
index 114f87151d60..2feceec8eccd 100644
--- a/arch/arm/plat-omap/timer32k.c
+++ b/arch/arm/plat-omap/timer32k.c
@@ -215,7 +215,7 @@ static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)
215 215
216static struct irqaction omap_32k_timer_irq = { 216static struct irqaction omap_32k_timer_irq = {
217 .name = "32KHz timer", 217 .name = "32KHz timer",
218 .flags = IRQF_DISABLED | IRQF_TIMER, 218 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
219 .handler = omap_32k_timer_interrupt, 219 .handler = omap_32k_timer_interrupt,
220}; 220};
221 221
diff --git a/arch/arm/plat-s3c24xx/time.c b/arch/arm/plat-s3c24xx/time.c
index c523d1c9cce5..b7667375bcec 100644
--- a/arch/arm/plat-s3c24xx/time.c
+++ b/arch/arm/plat-s3c24xx/time.c
@@ -138,7 +138,7 @@ s3c2410_timer_interrupt(int irq, void *dev_id)
138 138
139static struct irqaction s3c2410_timer_irq = { 139static struct irqaction s3c2410_timer_irq = {
140 .name = "S3C2410 Timer Tick", 140 .name = "S3C2410 Timer Tick",
141 .flags = IRQF_DISABLED | IRQF_TIMER, 141 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
142 .handler = s3c2410_timer_interrupt, 142 .handler = s3c2410_timer_interrupt,
143}; 143};
144 144
diff --git a/arch/arm26/kernel/armksyms.c b/arch/arm26/kernel/armksyms.c
index 93293d04b303..f735d7e018e4 100644
--- a/arch/arm26/kernel/armksyms.c
+++ b/arch/arm26/kernel/armksyms.c
@@ -20,7 +20,6 @@
20#include <linux/pm.h> 20#include <linux/pm.h>
21#include <linux/tty.h> 21#include <linux/tty.h>
22#include <linux/vt_kern.h> 22#include <linux/vt_kern.h>
23#include <linux/smp_lock.h>
24#include <linux/syscalls.h> 23#include <linux/syscalls.h>
25 24
26#include <asm/byteorder.h> 25#include <asm/byteorder.h>
diff --git a/arch/arm26/kernel/ptrace.c b/arch/arm26/kernel/ptrace.c
index 9343889b27fe..416927956721 100644
--- a/arch/arm26/kernel/ptrace.c
+++ b/arch/arm26/kernel/ptrace.c
@@ -13,7 +13,6 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/ptrace.h> 16#include <linux/ptrace.h>
18#include <linux/user.h> 17#include <linux/user.h>
19#include <linux/security.h> 18#include <linux/security.h>
diff --git a/arch/arm26/kernel/signal.c b/arch/arm26/kernel/signal.c
index 6a8ef8da6dab..379b82dc645f 100644
--- a/arch/arm26/kernel/signal.c
+++ b/arch/arm26/kernel/signal.c
@@ -13,7 +13,6 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/kernel.h> 16#include <linux/kernel.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
19#include <linux/signal.h> 18#include <linux/signal.h>
diff --git a/arch/arm26/mm/memc.c b/arch/arm26/mm/memc.c
index f2901581d4da..42505541a9b1 100644
--- a/arch/arm26/mm/memc.c
+++ b/arch/arm26/mm/memc.c
@@ -176,13 +176,9 @@ void __init pgtable_cache_init(void)
176{ 176{
177 pte_cache = kmem_cache_create("pte-cache", 177 pte_cache = kmem_cache_create("pte-cache",
178 sizeof(pte_t) * PTRS_PER_PTE, 178 sizeof(pte_t) * PTRS_PER_PTE,
179 0, 0, pte_cache_ctor, NULL); 179 0, SLAB_PANIC, pte_cache_ctor, NULL);
180 if (!pte_cache)
181 BUG();
182 180
183 pgd_cache = kmem_cache_create("pgd-cache", MEMC_TABLE_SIZE + 181 pgd_cache = kmem_cache_create("pgd-cache", MEMC_TABLE_SIZE +
184 sizeof(pgd_t) * PTRS_PER_PGD, 182 sizeof(pgd_t) * PTRS_PER_PGD,
185 0, 0, pgd_cache_ctor, NULL); 183 0, SLAB_PANIC, pgd_cache_ctor, NULL);
186 if (!pgd_cache)
187 BUG();
188} 184}
diff --git a/arch/avr32/kernel/kprobes.c b/arch/avr32/kernel/kprobes.c
index d0abbcaf1c1e..004c94b6fc1d 100644
--- a/arch/avr32/kernel/kprobes.c
+++ b/arch/avr32/kernel/kprobes.c
@@ -15,7 +15,7 @@
15#include <linux/ptrace.h> 15#include <linux/ptrace.h>
16 16
17#include <asm/cacheflush.h> 17#include <asm/cacheflush.h>
18#include <asm/kdebug.h> 18#include <linux/kdebug.h>
19#include <asm/ocd.h> 19#include <asm/ocd.h>
20 20
21DEFINE_PER_CPU(struct kprobe *, current_kprobe); 21DEFINE_PER_CPU(struct kprobe *, current_kprobe);
diff --git a/arch/avr32/kernel/ptrace.c b/arch/avr32/kernel/ptrace.c
index 6f4388f7c20b..8ac74dddbbde 100644
--- a/arch/avr32/kernel/ptrace.c
+++ b/arch/avr32/kernel/ptrace.c
@@ -9,7 +9,6 @@
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp_lock.h>
13#include <linux/ptrace.h> 12#include <linux/ptrace.h>
14#include <linux/errno.h> 13#include <linux/errno.h>
15#include <linux/user.h> 14#include <linux/user.h>
@@ -21,7 +20,7 @@
21#include <asm/uaccess.h> 20#include <asm/uaccess.h>
22#include <asm/ocd.h> 21#include <asm/ocd.h>
23#include <asm/mmu_context.h> 22#include <asm/mmu_context.h>
24#include <asm/kdebug.h> 23#include <linux/kdebug.h>
25 24
26static struct pt_regs *get_user_regs(struct task_struct *tsk) 25static struct pt_regs *get_user_regs(struct task_struct *tsk)
27{ 26{
@@ -300,7 +299,7 @@ asmlinkage void do_debug_priv(struct pt_regs *regs)
300 else 299 else
301 die_val = DIE_BREAKPOINT; 300 die_val = DIE_BREAKPOINT;
302 301
303 if (notify_die(die_val, regs, 0, SIGTRAP) == NOTIFY_STOP) 302 if (notify_die(die_val, "ptrace", regs, 0, 0, SIGTRAP) == NOTIFY_STOP)
304 return; 303 return;
305 304
306 if (likely(ds & DS_SSS)) { 305 if (likely(ds & DS_SSS)) {
diff --git a/arch/avr32/kernel/traps.c b/arch/avr32/kernel/traps.c
index 4f0382d8483f..4de9edf96ed2 100644
--- a/arch/avr32/kernel/traps.c
+++ b/arch/avr32/kernel/traps.c
@@ -20,20 +20,6 @@
20#include <asm/sysreg.h> 20#include <asm/sysreg.h>
21#include <asm/traps.h> 21#include <asm/traps.h>
22 22
23ATOMIC_NOTIFIER_HEAD(avr32_die_chain);
24
25int register_die_notifier(struct notifier_block *nb)
26{
27 return atomic_notifier_chain_register(&avr32_die_chain, nb);
28}
29EXPORT_SYMBOL(register_die_notifier);
30
31int unregister_die_notifier(struct notifier_block *nb)
32{
33 return atomic_notifier_chain_unregister(&avr32_die_chain, nb);
34}
35EXPORT_SYMBOL(unregister_die_notifier);
36
37static DEFINE_SPINLOCK(die_lock); 23static DEFINE_SPINLOCK(die_lock);
38 24
39void NORET_TYPE die(const char *str, struct pt_regs *regs, long err) 25void NORET_TYPE die(const char *str, struct pt_regs *regs, long err)
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index 146ebdbdc302..88b00b15970f 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -13,7 +13,7 @@
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/pagemap.h> 14#include <linux/pagemap.h>
15 15
16#include <asm/kdebug.h> 16#include <linux/kdebug.h>
17#include <asm/mmu_context.h> 17#include <asm/mmu_context.h>
18#include <asm/sysreg.h> 18#include <asm/sysreg.h>
19#include <asm/tlb.h> 19#include <asm/tlb.h>
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c
index 961c0d58ded4..fd2129a04586 100644
--- a/arch/cris/arch-v10/kernel/ptrace.c
+++ b/arch/cris/arch-v10/kernel/ptrace.c
@@ -6,7 +6,6 @@
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/mm.h> 7#include <linux/mm.h>
8#include <linux/smp.h> 8#include <linux/smp.h>
9#include <linux/smp_lock.h>
10#include <linux/errno.h> 9#include <linux/errno.h>
11#include <linux/ptrace.h> 10#include <linux/ptrace.h>
12#include <linux/user.h> 11#include <linux/user.h>
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c
index 19bcad05716f..41d4a5f93284 100644
--- a/arch/cris/arch-v10/kernel/signal.c
+++ b/arch/cris/arch-v10/kernel/signal.c
@@ -16,7 +16,6 @@
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/kernel.h> 19#include <linux/kernel.h>
21#include <linux/signal.h> 20#include <linux/signal.h>
22#include <linux/errno.h> 21#include <linux/errno.h>
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c b/arch/cris/arch-v32/drivers/pci/dma.c
index 70d3bf0c92e8..832fc63504d4 100644
--- a/arch/cris/arch-v32/drivers/pci/dma.c
+++ b/arch/cris/arch-v32/drivers/pci/dma.c
@@ -76,7 +76,7 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
76{ 76{
77 void __iomem *mem_base; 77 void __iomem *mem_base;
78 int pages = size >> PAGE_SHIFT; 78 int pages = size >> PAGE_SHIFT;
79 int bitmap_size = (pages + 31)/32; 79 int bitmap_size = BITS_TO_LONGS(pages) * sizeof(long);
80 80
81 if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0) 81 if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0)
82 goto out; 82 goto out;
diff --git a/arch/cris/arch-v32/kernel/ptrace.c b/arch/cris/arch-v32/kernel/ptrace.c
index 82cf2e3624a4..d4d57b741334 100644
--- a/arch/cris/arch-v32/kernel/ptrace.c
+++ b/arch/cris/arch-v32/kernel/ptrace.c
@@ -6,7 +6,6 @@
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/mm.h> 7#include <linux/mm.h>
8#include <linux/smp.h> 8#include <linux/smp.h>
9#include <linux/smp_lock.h>
10#include <linux/errno.h> 9#include <linux/errno.h>
11#include <linux/ptrace.h> 10#include <linux/ptrace.h>
12#include <linux/user.h> 11#include <linux/user.h>
diff --git a/arch/cris/kernel/crisksyms.c b/arch/cris/kernel/crisksyms.c
index 1f20c16ac2a4..105bb5ed48f7 100644
--- a/arch/cris/kernel/crisksyms.c
+++ b/arch/cris/kernel/crisksyms.c
@@ -4,7 +4,6 @@
4#include <linux/sched.h> 4#include <linux/sched.h>
5#include <linux/in6.h> 5#include <linux/in6.h>
6#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/smp_lock.h>
8#include <linux/pm.h> 7#include <linux/pm.h>
9#include <linux/kernel.h> 8#include <linux/kernel.h>
10#include <linux/string.h> 9#include <linux/string.h>
diff --git a/arch/cris/kernel/ptrace.c b/arch/cris/kernel/ptrace.c
index 2b6363cbe985..1085d037027b 100644
--- a/arch/cris/kernel/ptrace.c
+++ b/arch/cris/kernel/ptrace.c
@@ -67,7 +67,6 @@
67#include <linux/sched.h> 67#include <linux/sched.h>
68#include <linux/mm.h> 68#include <linux/mm.h>
69#include <linux/smp.h> 69#include <linux/smp.h>
70#include <linux/smp_lock.h>
71#include <linux/errno.h> 70#include <linux/errno.h>
72#include <linux/ptrace.h> 71#include <linux/ptrace.h>
73#include <linux/user.h> 72#include <linux/user.h>
diff --git a/arch/frv/kernel/irq.c b/arch/frv/kernel/irq.c
index 87f360a4ea27..c7e59dcadee4 100644
--- a/arch/frv/kernel/irq.c
+++ b/arch/frv/kernel/irq.c
@@ -18,7 +18,6 @@
18#include <linux/timex.h> 18#include <linux/timex.h>
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include <linux/random.h> 20#include <linux/random.h>
21#include <linux/smp_lock.h>
22#include <linux/init.h> 21#include <linux/init.h>
23#include <linux/kernel_stat.h> 22#include <linux/kernel_stat.h>
24#include <linux/irq.h> 23#include <linux/irq.h>
diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c
index fcff819b4340..ce88fb95ee59 100644
--- a/arch/frv/kernel/ptrace.c
+++ b/arch/frv/kernel/ptrace.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
19#include <linux/ptrace.h> 18#include <linux/ptrace.h>
20#include <linux/user.h> 19#include <linux/user.h>
diff --git a/arch/frv/kernel/semaphore.c b/arch/frv/kernel/semaphore.c
index f278cdf3a72f..8e182ced1a0f 100644
--- a/arch/frv/kernel/semaphore.c
+++ b/arch/frv/kernel/semaphore.c
@@ -19,7 +19,7 @@ struct sem_waiter {
19 struct task_struct *task; 19 struct task_struct *task;
20}; 20};
21 21
22#if SEMAPHORE_DEBUG 22#ifdef CONFIG_DEBUG_SEMAPHORE
23void semtrace(struct semaphore *sem, const char *str) 23void semtrace(struct semaphore *sem, const char *str)
24{ 24{
25 if (sem->debug) 25 if (sem->debug)
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index 85baeae9666a..d64bcaff54cd 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -13,7 +13,6 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/kernel.h> 16#include <linux/kernel.h>
18#include <linux/signal.h> 17#include <linux/signal.h>
19#include <linux/errno.h> 18#include <linux/errno.h>
diff --git a/arch/frv/kernel/sys_frv.c b/arch/frv/kernel/sys_frv.c
index c4d4348c9e8e..26b3df32b9a7 100644
--- a/arch/frv/kernel/sys_frv.c
+++ b/arch/frv/kernel/sys_frv.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/sem.h> 17#include <linux/sem.h>
19#include <linux/msg.h> 18#include <linux/msg.h>
20#include <linux/shm.h> 19#include <linux/shm.h>
diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c
index 19b13be114a2..598a26ab8ad8 100644
--- a/arch/frv/mm/pgalloc.c
+++ b/arch/frv/mm/pgalloc.c
@@ -151,9 +151,7 @@ void __init pgtable_cache_init(void)
151 pgd_cache = kmem_cache_create("pgd", 151 pgd_cache = kmem_cache_create("pgd",
152 PTRS_PER_PGD * sizeof(pgd_t), 152 PTRS_PER_PGD * sizeof(pgd_t),
153 PTRS_PER_PGD * sizeof(pgd_t), 153 PTRS_PER_PGD * sizeof(pgd_t),
154 0, 154 SLAB_PANIC,
155 pgd_ctor, 155 pgd_ctor,
156 pgd_dtor); 156 pgd_dtor);
157 if (!pgd_cache)
158 panic("pgtable_cache_init(): Cannot create pgd cache");
159} 157}
diff --git a/arch/h8300/kernel/ptrace.c b/arch/h8300/kernel/ptrace.c
index f6031373dc21..8f2411db7eaf 100644
--- a/arch/h8300/kernel/ptrace.c
+++ b/arch/h8300/kernel/ptrace.c
@@ -19,7 +19,6 @@
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/errno.h> 22#include <linux/errno.h>
24#include <linux/ptrace.h> 23#include <linux/ptrace.h>
25#include <linux/user.h> 24#include <linux/user.h>
diff --git a/arch/h8300/kernel/sys_h8300.c b/arch/h8300/kernel/sys_h8300.c
index 302a2dfe634a..11ba75a05220 100644
--- a/arch/h8300/kernel/sys_h8300.c
+++ b/arch/h8300/kernel/sys_h8300.c
@@ -10,7 +10,6 @@
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/sem.h> 13#include <linux/sem.h>
15#include <linux/msg.h> 14#include <linux/msg.h>
16#include <linux/shm.h> 15#include <linux/shm.h>
diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
index 8143c9516cb4..5e2280cf4456 100644
--- a/arch/i386/boot/video.S
+++ b/arch/i386/boot/video.S
@@ -496,9 +496,11 @@ mode_set:
496 cmpb $VIDEO_FIRST_V7>>8, %ah 496 cmpb $VIDEO_FIRST_V7>>8, %ah
497 jz setv7 497 jz setv7
498 498
499#ifdef CONFIG_FB
499 cmpb $VIDEO_FIRST_VESA>>8, %ah 500 cmpb $VIDEO_FIRST_VESA>>8, %ah
500 jnc check_vesa 501 jnc check_vesa
501 502#endif
503
502 orb %ah, %ah 504 orb %ah, %ah
503 jz setmenu 505 jz setmenu
504 506
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile
index 4f98516b9f94..91cff8dc9e1a 100644
--- a/arch/i386/kernel/Makefile
+++ b/arch/i386/kernel/Makefile
@@ -34,6 +34,7 @@ obj-y += sysenter.o vsyscall.o
34obj-$(CONFIG_ACPI_SRAT) += srat.o 34obj-$(CONFIG_ACPI_SRAT) += srat.o
35obj-$(CONFIG_EFI) += efi.o efi_stub.o 35obj-$(CONFIG_EFI) += efi.o efi_stub.o
36obj-$(CONFIG_DOUBLEFAULT) += doublefault.o 36obj-$(CONFIG_DOUBLEFAULT) += doublefault.o
37obj-$(CONFIG_SERIAL_8250) += legacy_serial.o
37obj-$(CONFIG_VM86) += vm86.o 38obj-$(CONFIG_VM86) += vm86.o
38obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 39obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
39obj-$(CONFIG_HPET_TIMER) += hpet.o 40obj-$(CONFIG_HPET_TIMER) += hpet.o
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index aca054cc0552..67824f3bb974 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -19,7 +19,6 @@
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/bootmem.h> 21#include <linux/bootmem.h>
22#include <linux/smp_lock.h>
23#include <linux/interrupt.h> 22#include <linux/interrupt.h>
24#include <linux/mc146818rtc.h> 23#include <linux/mc146818rtc.h>
25#include <linux/kernel_stat.h> 24#include <linux/kernel_stat.h>
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c
index 367ff1d930cb..4112afe712b9 100644
--- a/arch/i386/kernel/apm.c
+++ b/arch/i386/kernel/apm.c
@@ -223,7 +223,6 @@
223#include <linux/device.h> 223#include <linux/device.h>
224#include <linux/kernel.h> 224#include <linux/kernel.h>
225#include <linux/smp.h> 225#include <linux/smp.h>
226#include <linux/smp_lock.h>
227#include <linux/dmi.h> 226#include <linux/dmi.h>
228#include <linux/suspend.h> 227#include <linux/suspend.h>
229#include <linux/kthread.h> 228#include <linux/kthread.h>
@@ -1173,7 +1172,7 @@ static void reinit_timer(void)
1173 unsigned long flags; 1172 unsigned long flags;
1174 1173
1175 spin_lock_irqsave(&i8253_lock, flags); 1174 spin_lock_irqsave(&i8253_lock, flags);
1176 /* set the clock to 100 Hz */ 1175 /* set the clock to HZ */
1177 outb_p(0x34, PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */ 1176 outb_p(0x34, PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */
1178 udelay(10); 1177 udelay(10);
1179 outb_p(LATCH & 0xff, PIT_CH0); /* LSB */ 1178 outb_p(LATCH & 0xff, PIT_CH0); /* LSB */
diff --git a/arch/i386/kernel/crash.c b/arch/i386/kernel/crash.c
index a5e0e990ea95..53589d1b1a05 100644
--- a/arch/i386/kernel/crash.c
+++ b/arch/i386/kernel/crash.c
@@ -22,7 +22,7 @@
22#include <asm/nmi.h> 22#include <asm/nmi.h>
23#include <asm/hw_irq.h> 23#include <asm/hw_irq.h>
24#include <asm/apic.h> 24#include <asm/apic.h>
25#include <asm/kdebug.h> 25#include <linux/kdebug.h>
26#include <asm/smp.h> 26#include <asm/smp.h>
27 27
28#include <mach_ipi.h> 28#include <mach_ipi.h>
diff --git a/arch/i386/kernel/efi.c b/arch/i386/kernel/efi.c
index dd9e7faafa7c..a1808022ea19 100644
--- a/arch/i386/kernel/efi.c
+++ b/arch/i386/kernel/efi.c
@@ -347,14 +347,12 @@ void __init efi_init(void)
347 printk(KERN_ERR PFX "Woah! Couldn't map the EFI system table.\n"); 347 printk(KERN_ERR PFX "Woah! Couldn't map the EFI system table.\n");
348 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) 348 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
349 printk(KERN_ERR PFX "Woah! EFI system table signature incorrect\n"); 349 printk(KERN_ERR PFX "Woah! EFI system table signature incorrect\n");
350 if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0) 350 if ((efi.systab->hdr.revision >> 16) == 0)
351 printk(KERN_ERR PFX 351 printk(KERN_ERR PFX "Warning: EFI system table version "
352 "Warning: EFI system table major version mismatch: " 352 "%d.%02d, expected 1.00 or greater\n",
353 "got %d.%02d, expected %d.%02d\n",
354 efi.systab->hdr.revision >> 16, 353 efi.systab->hdr.revision >> 16,
355 efi.systab->hdr.revision & 0xffff, 354 efi.systab->hdr.revision & 0xffff);
356 EFI_SYSTEM_TABLE_REVISION >> 16, 355
357 EFI_SYSTEM_TABLE_REVISION & 0xffff);
358 /* 356 /*
359 * Grab some details from the system table 357 * Grab some details from the system table
360 */ 358 */
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c
index 03abfdb1a6e4..0499cbe9871a 100644
--- a/arch/i386/kernel/i8259.c
+++ b/arch/i386/kernel/i8259.c
@@ -5,7 +5,6 @@
5#include <linux/interrupt.h> 5#include <linux/interrupt.h>
6#include <linux/slab.h> 6#include <linux/slab.h>
7#include <linux/random.h> 7#include <linux/random.h>
8#include <linux/smp_lock.h>
9#include <linux/init.h> 8#include <linux/init.h>
10#include <linux/kernel_stat.h> 9#include <linux/kernel_stat.h>
11#include <linux/sysdev.h> 10#include <linux/sysdev.h>
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index 1b623cda3a64..7f8b7af2b95f 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -25,7 +25,6 @@
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/delay.h> 26#include <linux/delay.h>
27#include <linux/sched.h> 27#include <linux/sched.h>
28#include <linux/smp_lock.h>
29#include <linux/mc146818rtc.h> 28#include <linux/mc146818rtc.h>
30#include <linux/compiler.h> 29#include <linux/compiler.h>
31#include <linux/acpi.h> 30#include <linux/acpi.h>
diff --git a/arch/i386/kernel/ioport.c b/arch/i386/kernel/ioport.c
index d1e42e0dbe67..3d310a946d76 100644
--- a/arch/i386/kernel/ioport.c
+++ b/arch/i386/kernel/ioport.c
@@ -12,7 +12,6 @@
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/ioport.h> 13#include <linux/ioport.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/stddef.h> 15#include <linux/stddef.h>
17#include <linux/slab.h> 16#include <linux/slab.h>
18#include <linux/thread_info.h> 17#include <linux/thread_info.h>
diff --git a/arch/i386/kernel/kprobes.c b/arch/i386/kernel/kprobes.c
index b545bc746fce..dde828a333c3 100644
--- a/arch/i386/kernel/kprobes.c
+++ b/arch/i386/kernel/kprobes.c
@@ -31,8 +31,8 @@
31#include <linux/kprobes.h> 31#include <linux/kprobes.h>
32#include <linux/ptrace.h> 32#include <linux/ptrace.h>
33#include <linux/preempt.h> 33#include <linux/preempt.h>
34#include <linux/kdebug.h>
34#include <asm/cacheflush.h> 35#include <asm/cacheflush.h>
35#include <asm/kdebug.h>
36#include <asm/desc.h> 36#include <asm/desc.h>
37#include <asm/uaccess.h> 37#include <asm/uaccess.h>
38 38
@@ -226,24 +226,15 @@ static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
226} 226}
227 227
228/* Called with kretprobe_lock held */ 228/* Called with kretprobe_lock held */
229void __kprobes arch_prepare_kretprobe(struct kretprobe *rp, 229void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
230 struct pt_regs *regs) 230 struct pt_regs *regs)
231{ 231{
232 unsigned long *sara = (unsigned long *)&regs->esp; 232 unsigned long *sara = (unsigned long *)&regs->esp;
233 233
234 struct kretprobe_instance *ri; 234 ri->ret_addr = (kprobe_opcode_t *) *sara;
235 235
236 if ((ri = get_free_rp_inst(rp)) != NULL) { 236 /* Replace the return addr with trampoline addr */
237 ri->rp = rp; 237 *sara = (unsigned long) &kretprobe_trampoline;
238 ri->task = current;
239 ri->ret_addr = (kprobe_opcode_t *) *sara;
240
241 /* Replace the return addr with trampoline addr */
242 *sara = (unsigned long) &kretprobe_trampoline;
243 add_rp_inst(ri);
244 } else {
245 rp->nmissed++;
246 }
247} 238}
248 239
249/* 240/*
@@ -449,8 +440,7 @@ fastcall void *__kprobes trampoline_handler(struct pt_regs *regs)
449 break; 440 break;
450 } 441 }
451 442
452 BUG_ON(!orig_ret_address || (orig_ret_address == trampoline_address)); 443 kretprobe_assert(ri, orig_ret_address, trampoline_address);
453
454 spin_unlock_irqrestore(&kretprobe_lock, flags); 444 spin_unlock_irqrestore(&kretprobe_lock, flags);
455 445
456 hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) { 446 hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) {
@@ -753,6 +743,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
753 return 0; 743 return 0;
754} 744}
755 745
746int __kprobes arch_trampoline_kprobe(struct kprobe *p)
747{
748 return 0;
749}
750
756int __init arch_init_kprobes(void) 751int __init arch_init_kprobes(void)
757{ 752{
758 return 0; 753 return 0;
diff --git a/arch/i386/kernel/ldt.c b/arch/i386/kernel/ldt.c
index b410e5fb034f..e0b2d17f4f10 100644
--- a/arch/i386/kernel/ldt.c
+++ b/arch/i386/kernel/ldt.c
@@ -10,7 +10,6 @@
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/vmalloc.h> 13#include <linux/vmalloc.h>
15#include <linux/slab.h> 14#include <linux/slab.h>
16 15
diff --git a/arch/i386/kernel/legacy_serial.c b/arch/i386/kernel/legacy_serial.c
new file mode 100644
index 000000000000..21510118544e
--- /dev/null
+++ b/arch/i386/kernel/legacy_serial.c
@@ -0,0 +1,67 @@
1/*
2 * Legacy COM port devices for x86 platforms without PNPBIOS or ACPI.
3 * Data taken from include/asm-i386/serial.h.
4 *
5 * (c) Copyright 2007 Hewlett-Packard Development Company, L.P.
6 * Bjorn Helgaas <bjorn.helgaas@hp.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12#include <linux/module.h>
13#include <linux/init.h>
14#include <linux/pnp.h>
15#include <linux/serial_8250.h>
16
17/* Standard COM flags (except for COM4, because of the 8514 problem) */
18#ifdef CONFIG_SERIAL_DETECT_IRQ
19#define COM_FLAGS (UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ)
20#define COM4_FLAGS (UPF_BOOT_AUTOCONF | UPF_AUTO_IRQ)
21#else
22#define COM_FLAGS (UPF_BOOT_AUTOCONF | UPF_SKIP_TEST)
23#define COM4_FLAGS UPF_BOOT_AUTOCONF
24#endif
25
26#define PORT(_base,_irq,_flags) \
27 { \
28 .iobase = _base, \
29 .irq = _irq, \
30 .uartclk = 1843200, \
31 .iotype = UPIO_PORT, \
32 .flags = _flags, \
33 }
34
35static struct plat_serial8250_port x86_com_data[] = {
36 PORT(0x3F8, 4, COM_FLAGS),
37 PORT(0x2F8, 3, COM_FLAGS),
38 PORT(0x3E8, 4, COM_FLAGS),
39 PORT(0x2E8, 3, COM4_FLAGS),
40 { },
41};
42
43static struct platform_device x86_com_device = {
44 .name = "serial8250",
45 .id = PLAT8250_DEV_PLATFORM,
46 .dev = {
47 .platform_data = x86_com_data,
48 },
49};
50
51static int force_legacy_probe;
52module_param_named(force, force_legacy_probe, bool, 0);
53MODULE_PARM_DESC(force, "Force legacy serial port probe");
54
55static int __init serial8250_x86_com_init(void)
56{
57 if (pnp_platform_devices && !force_legacy_probe)
58 return -ENODEV;
59
60 return platform_device_register(&x86_com_device);
61}
62
63module_init(serial8250_x86_com_init);
64
65MODULE_AUTHOR("Bjorn Helgaas");
66MODULE_LICENSE("GPL");
67MODULE_DESCRIPTION("Generic 8250/16x50 legacy probe module");
diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
index 0952eccd8f28..13abb4ebfb79 100644
--- a/arch/i386/kernel/mpparse.c
+++ b/arch/i386/kernel/mpparse.c
@@ -18,7 +18,6 @@
18#include <linux/acpi.h> 18#include <linux/acpi.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/bootmem.h> 20#include <linux/bootmem.h>
21#include <linux/smp_lock.h>
22#include <linux/kernel_stat.h> 21#include <linux/kernel_stat.h>
23#include <linux/mc146818rtc.h> 22#include <linux/mc146818rtc.h>
24#include <linux/bitops.h> 23#include <linux/bitops.h>
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index 33cf2f3c444f..fba121f7973f 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -23,10 +23,10 @@
23#include <linux/kprobes.h> 23#include <linux/kprobes.h>
24#include <linux/cpumask.h> 24#include <linux/cpumask.h>
25#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
26#include <linux/kdebug.h>
26 27
27#include <asm/smp.h> 28#include <asm/smp.h>
28#include <asm/nmi.h> 29#include <asm/nmi.h>
29#include <asm/kdebug.h>
30 30
31#include "mach_traps.h" 31#include "mach_traps.h"
32 32
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c
index 3ebcea033623..30b754f7cbec 100644
--- a/arch/i386/kernel/pci-dma.c
+++ b/arch/i386/kernel/pci-dma.c
@@ -77,7 +77,7 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
77{ 77{
78 void __iomem *mem_base = NULL; 78 void __iomem *mem_base = NULL;
79 int pages = size >> PAGE_SHIFT; 79 int pages = size >> PAGE_SHIFT;
80 int bitmap_size = (pages + 31)/32; 80 int bitmap_size = BITS_TO_LONGS(pages) * sizeof(long);
81 81
82 if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0) 82 if ((flags & (DMA_MEMORY_MAP | DMA_MEMORY_IO)) == 0)
83 goto out; 83 goto out;
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c
index 61999479b7a4..d76d9bc33b30 100644
--- a/arch/i386/kernel/process.c
+++ b/arch/i386/kernel/process.c
@@ -21,7 +21,6 @@
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/elfcore.h> 22#include <linux/elfcore.h>
23#include <linux/smp.h> 23#include <linux/smp.h>
24#include <linux/smp_lock.h>
25#include <linux/stddef.h> 24#include <linux/stddef.h>
26#include <linux/slab.h> 25#include <linux/slab.h>
27#include <linux/vmalloc.h> 26#include <linux/vmalloc.h>
diff --git a/arch/i386/kernel/ptrace.c b/arch/i386/kernel/ptrace.c
index 4a8f8a259723..0c0ceec5de00 100644
--- a/arch/i386/kernel/ptrace.c
+++ b/arch/i386/kernel/ptrace.c
@@ -9,7 +9,6 @@
9#include <linux/sched.h> 9#include <linux/sched.h>
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/smp_lock.h>
13#include <linux/errno.h> 12#include <linux/errno.h>
14#include <linux/ptrace.h> 13#include <linux/ptrace.h>
15#include <linux/user.h> 14#include <linux/user.h>
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c
index 4f99e870c986..d574e38f0f77 100644
--- a/arch/i386/kernel/signal.c
+++ b/arch/i386/kernel/signal.c
@@ -10,7 +10,6 @@
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/kernel.h> 13#include <linux/kernel.h>
15#include <linux/signal.h> 14#include <linux/signal.h>
16#include <linux/errno.h> 15#include <linux/errno.h>
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c
index 89a45a9ddcd4..93f202a855fa 100644
--- a/arch/i386/kernel/smp.c
+++ b/arch/i386/kernel/smp.c
@@ -13,7 +13,6 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/delay.h> 14#include <linux/delay.h>
15#include <linux/spinlock.h> 15#include <linux/spinlock.h>
16#include <linux/smp_lock.h>
17#include <linux/kernel_stat.h> 16#include <linux/kernel_stat.h>
18#include <linux/mc146818rtc.h> 17#include <linux/mc146818rtc.h>
19#include <linux/cache.h> 18#include <linux/cache.h>
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index a4b7ad283f49..b92cc4e8b3bb 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -40,7 +40,6 @@
40#include <linux/mm.h> 40#include <linux/mm.h>
41#include <linux/sched.h> 41#include <linux/sched.h>
42#include <linux/kernel_stat.h> 42#include <linux/kernel_stat.h>
43#include <linux/smp_lock.h>
44#include <linux/bootmem.h> 43#include <linux/bootmem.h>
45#include <linux/notifier.h> 44#include <linux/notifier.h>
46#include <linux/cpu.h> 45#include <linux/cpu.h>
diff --git a/arch/i386/kernel/sys_i386.c b/arch/i386/kernel/sys_i386.c
index 4048397f1740..e5dcb9379018 100644
--- a/arch/i386/kernel/sys_i386.c
+++ b/arch/i386/kernel/sys_i386.c
@@ -10,7 +10,6 @@
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/sem.h> 13#include <linux/sem.h>
15#include <linux/msg.h> 14#include <linux/msg.h>
16#include <linux/shm.h> 15#include <linux/shm.h>
diff --git a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S
index 2697e9210e92..0772678ceecf 100644
--- a/arch/i386/kernel/syscall_table.S
+++ b/arch/i386/kernel/syscall_table.S
@@ -319,3 +319,4 @@ ENTRY(sys_call_table)
319 .long sys_move_pages 319 .long sys_move_pages
320 .long sys_getcpu 320 .long sys_getcpu
321 .long sys_epoll_pwait 321 .long sys_epoll_pwait
322 .long sys_utimensat /* 320 */
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index f21b41e7770c..4bec0cbf407a 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -52,7 +52,7 @@
52#include <asm/unwind.h> 52#include <asm/unwind.h>
53#include <asm/smp.h> 53#include <asm/smp.h>
54#include <asm/arch_hooks.h> 54#include <asm/arch_hooks.h>
55#include <asm/kdebug.h> 55#include <linux/kdebug.h>
56#include <asm/stacktrace.h> 56#include <asm/stacktrace.h>
57 57
58#include <linux/module.h> 58#include <linux/module.h>
@@ -95,20 +95,6 @@ asmlinkage void machine_check(void);
95 95
96int kstack_depth_to_print = 24; 96int kstack_depth_to_print = 24;
97static unsigned int code_bytes = 64; 97static unsigned int code_bytes = 64;
98ATOMIC_NOTIFIER_HEAD(i386die_chain);
99
100int register_die_notifier(struct notifier_block *nb)
101{
102 vmalloc_sync_all();
103 return atomic_notifier_chain_register(&i386die_chain, nb);
104}
105EXPORT_SYMBOL(register_die_notifier); /* used modular by kdb */
106
107int unregister_die_notifier(struct notifier_block *nb)
108{
109 return atomic_notifier_chain_unregister(&i386die_chain, nb);
110}
111EXPORT_SYMBOL(unregister_die_notifier); /* used modular by kdb */
112 98
113static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) 99static inline int valid_stack_ptr(struct thread_info *tinfo, void *p)
114{ 100{
@@ -747,6 +733,11 @@ static __kprobes void default_do_nmi(struct pt_regs * regs)
747 */ 733 */
748 if (nmi_watchdog_tick(regs, reason)) 734 if (nmi_watchdog_tick(regs, reason))
749 return; 735 return;
736#endif
737 if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0)
738 == NOTIFY_STOP)
739 return;
740#ifdef CONFIG_X86_LOCAL_APIC
750 if (!do_nmi_callback(regs, smp_processor_id())) 741 if (!do_nmi_callback(regs, smp_processor_id()))
751#endif 742#endif
752 unknown_nmi_error(reason, regs); 743 unknown_nmi_error(reason, regs);
diff --git a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c
index d1b8f2b7aea6..f2dcd1d27c0a 100644
--- a/arch/i386/kernel/vm86.c
+++ b/arch/i386/kernel/vm86.c
@@ -39,7 +39,6 @@
39#include <linux/string.h> 39#include <linux/string.h>
40#include <linux/mm.h> 40#include <linux/mm.h>
41#include <linux/smp.h> 41#include <linux/smp.h>
42#include <linux/smp_lock.h>
43#include <linux/highmem.h> 42#include <linux/highmem.h>
44#include <linux/ptrace.h> 43#include <linux/ptrace.h>
45#include <linux/audit.h> 44#include <linux/audit.h>
diff --git a/arch/i386/mach-default/setup.c b/arch/i386/mach-default/setup.c
index c78816210706..7f635c7a2381 100644
--- a/arch/i386/mach-default/setup.c
+++ b/arch/i386/mach-default/setup.c
@@ -81,7 +81,7 @@ void __init trap_init_hook(void)
81 81
82static struct irqaction irq0 = { 82static struct irqaction irq0 = {
83 .handler = timer_interrupt, 83 .handler = timer_interrupt,
84 .flags = IRQF_DISABLED | IRQF_NOBALANCING, 84 .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
85 .mask = CPU_MASK_NONE, 85 .mask = CPU_MASK_NONE,
86 .name = "timer" 86 .name = "timer"
87}; 87};
diff --git a/arch/i386/mach-visws/setup.c b/arch/i386/mach-visws/setup.c
index 233ee20907b9..1f81f10e03a0 100644
--- a/arch/i386/mach-visws/setup.c
+++ b/arch/i386/mach-visws/setup.c
@@ -116,7 +116,7 @@ void __init pre_setup_arch_hook()
116 116
117static struct irqaction irq0 = { 117static struct irqaction irq0 = {
118 .handler = timer_interrupt, 118 .handler = timer_interrupt,
119 .flags = IRQF_DISABLED, 119 .flags = IRQF_DISABLED | IRQF_IRQPOLL,
120 .name = "timer", 120 .name = "timer",
121}; 121};
122 122
diff --git a/arch/i386/mach-visws/visws_apic.c b/arch/i386/mach-visws/visws_apic.c
index 38c2b13124d9..710faf71a650 100644
--- a/arch/i386/mach-visws/visws_apic.c
+++ b/arch/i386/mach-visws/visws_apic.c
@@ -18,7 +18,6 @@
18 18
19#include <linux/kernel_stat.h> 19#include <linux/kernel_stat.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/smp_lock.h>
22#include <linux/init.h> 21#include <linux/init.h>
23 22
24#include <asm/io.h> 23#include <asm/io.h>
diff --git a/arch/i386/mach-voyager/setup.c b/arch/i386/mach-voyager/setup.c
index 447bb105cf58..2b55694e6400 100644
--- a/arch/i386/mach-voyager/setup.c
+++ b/arch/i386/mach-voyager/setup.c
@@ -42,7 +42,7 @@ void __init trap_init_hook(void)
42 42
43static struct irqaction irq0 = { 43static struct irqaction irq0 = {
44 .handler = timer_interrupt, 44 .handler = timer_interrupt,
45 .flags = IRQF_DISABLED | IRQF_NOBALANCING, 45 .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
46 .mask = CPU_MASK_NONE, 46 .mask = CPU_MASK_NONE,
47 .name = "timer" 47 .name = "timer"
48}; 48};
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c
index 1a5e448a29c7..50d9c52070b1 100644
--- a/arch/i386/mach-voyager/voyager_smp.c
+++ b/arch/i386/mach-voyager/voyager_smp.c
@@ -16,7 +16,6 @@
16#include <linux/mc146818rtc.h> 16#include <linux/mc146818rtc.h>
17#include <linux/cache.h> 17#include <linux/cache.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/smp_lock.h>
20#include <linux/init.h> 19#include <linux/init.h>
21#include <linux/kernel.h> 20#include <linux/kernel.h>
22#include <linux/bootmem.h> 21#include <linux/bootmem.h>
diff --git a/arch/i386/mach-voyager/voyager_thread.c b/arch/i386/mach-voyager/voyager_thread.c
index fdc1d926fb2a..b4b24e0e45e1 100644
--- a/arch/i386/mach-voyager/voyager_thread.c
+++ b/arch/i386/mach-voyager/voyager_thread.c
@@ -18,7 +18,6 @@
18#include <linux/kernel_stat.h> 18#include <linux/kernel_stat.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/mc146818rtc.h> 20#include <linux/mc146818rtc.h>
21#include <linux/smp_lock.h>
22#include <linux/init.h> 21#include <linux/init.h>
23#include <linux/bootmem.h> 22#include <linux/bootmem.h>
24#include <linux/kmod.h> 23#include <linux/kmod.h>
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index f534c29e80b2..29d7d61543a1 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -14,20 +14,20 @@
14#include <linux/mman.h> 14#include <linux/mman.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/interrupt.h> 17#include <linux/interrupt.h>
19#include <linux/init.h> 18#include <linux/init.h>
20#include <linux/tty.h> 19#include <linux/tty.h>
21#include <linux/vt_kern.h> /* For unblank_screen() */ 20#include <linux/vt_kern.h> /* For unblank_screen() */
22#include <linux/highmem.h> 21#include <linux/highmem.h>
23#include <linux/bootmem.h> /* for max_low_pfn */ 22#include <linux/bootmem.h> /* for max_low_pfn */
23#include <linux/vmalloc.h>
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/kprobes.h> 25#include <linux/kprobes.h>
26#include <linux/uaccess.h> 26#include <linux/uaccess.h>
27#include <linux/kdebug.h>
27 28
28#include <asm/system.h> 29#include <asm/system.h>
29#include <asm/desc.h> 30#include <asm/desc.h>
30#include <asm/kdebug.h>
31#include <asm/segment.h> 31#include <asm/segment.h>
32 32
33extern void die(const char *,struct pt_regs *,long); 33extern void die(const char *,struct pt_regs *,long);
diff --git a/arch/i386/mm/hugetlbpage.c b/arch/i386/mm/hugetlbpage.c
index 6272a4fd9e7c..efdf95ac8031 100644
--- a/arch/i386/mm/hugetlbpage.c
+++ b/arch/i386/mm/hugetlbpage.c
@@ -9,7 +9,6 @@
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/hugetlb.h> 10#include <linux/hugetlb.h>
11#include <linux/pagemap.h> 11#include <linux/pagemap.h>
12#include <linux/smp_lock.h>
13#include <linux/slab.h> 12#include <linux/slab.h>
14#include <linux/err.h> 13#include <linux/err.h>
15#include <linux/sysctl.h> 14#include <linux/sysctl.h>
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index 1a7197e89eb4..c50782efa5c3 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -751,12 +751,9 @@ void __init pgtable_cache_init(void)
751 pmd_cache = kmem_cache_create("pmd", 751 pmd_cache = kmem_cache_create("pmd",
752 PTRS_PER_PMD*sizeof(pmd_t), 752 PTRS_PER_PMD*sizeof(pmd_t),
753 PTRS_PER_PMD*sizeof(pmd_t), 753 PTRS_PER_PMD*sizeof(pmd_t),
754 0, 754 SLAB_PANIC,
755 pmd_ctor, 755 pmd_ctor,
756 NULL); 756 NULL);
757 if (!pmd_cache)
758 panic("pgtable_cache_init(): cannot create pmd cache");
759
760 if (!SHARED_KERNEL_PMD) { 757 if (!SHARED_KERNEL_PMD) {
761 /* If we're in PAE mode and have a non-shared 758 /* If we're in PAE mode and have a non-shared
762 kernel pmd, then the pgd size must be a 759 kernel pmd, then the pgd size must be a
@@ -770,11 +767,9 @@ void __init pgtable_cache_init(void)
770 pgd_cache = kmem_cache_create("pgd", 767 pgd_cache = kmem_cache_create("pgd",
771 pgd_size, 768 pgd_size,
772 pgd_size, 769 pgd_size,
773 0, 770 SLAB_PANIC,
774 pgd_ctor, 771 pgd_ctor,
775 (!SHARED_KERNEL_PMD) ? pgd_dtor : NULL); 772 (!SHARED_KERNEL_PMD) ? pgd_dtor : NULL);
776 if (!pgd_cache)
777 panic("pgtable_cache_init(): Cannot create pgd cache");
778} 773}
779 774
780/* 775/*
diff --git a/arch/i386/oprofile/nmi_int.c b/arch/i386/oprofile/nmi_int.c
index 695f737516ae..8e185208dfd4 100644
--- a/arch/i386/oprofile/nmi_int.c
+++ b/arch/i386/oprofile/nmi_int.c
@@ -14,10 +14,10 @@
14#include <linux/sysdev.h> 14#include <linux/sysdev.h>
15#include <linux/slab.h> 15#include <linux/slab.h>
16#include <linux/moduleparam.h> 16#include <linux/moduleparam.h>
17#include <linux/kdebug.h>
17#include <asm/nmi.h> 18#include <asm/nmi.h>
18#include <asm/msr.h> 19#include <asm/msr.h>
19#include <asm/apic.h> 20#include <asm/apic.h>
20#include <asm/kdebug.h>
21 21
22#include "op_counter.h" 22#include "op_counter.h"
23#include "op_x86_model.h" 23#include "op_x86_model.h"
diff --git a/arch/i386/oprofile/nmi_timer_int.c b/arch/i386/oprofile/nmi_timer_int.c
index abf0ba52a635..1418e36ae7ab 100644
--- a/arch/i386/oprofile/nmi_timer_int.c
+++ b/arch/i386/oprofile/nmi_timer_int.c
@@ -12,12 +12,11 @@
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/oprofile.h> 13#include <linux/oprofile.h>
14#include <linux/rcupdate.h> 14#include <linux/rcupdate.h>
15 15#include <linux/kdebug.h>
16 16
17#include <asm/nmi.h> 17#include <asm/nmi.h>
18#include <asm/apic.h> 18#include <asm/apic.h>
19#include <asm/ptrace.h> 19#include <asm/ptrace.h>
20#include <asm/kdebug.h>
21 20
22static int profile_timer_exceptions_notify(struct notifier_block *self, 21static int profile_timer_exceptions_notify(struct notifier_block *self,
23 unsigned long val, void *data) 22 unsigned long val, void *data)
diff --git a/arch/ia64/hp/sim/boot/fw-emu.c b/arch/ia64/hp/sim/boot/fw-emu.c
index 5a0a7afcfc3a..300acd913d9c 100644
--- a/arch/ia64/hp/sim/boot/fw-emu.c
+++ b/arch/ia64/hp/sim/boot/fw-emu.c
@@ -287,7 +287,7 @@ sys_fw_init (const char *args, int arglen)
287 287
288 memset(efi_systab, 0, sizeof(efi_systab)); 288 memset(efi_systab, 0, sizeof(efi_systab));
289 efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE; 289 efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE;
290 efi_systab->hdr.revision = EFI_SYSTEM_TABLE_REVISION; 290 efi_systab->hdr.revision = ((1 << 16) | 00);
291 efi_systab->hdr.headersize = sizeof(efi_systab->hdr); 291 efi_systab->hdr.headersize = sizeof(efi_systab->hdr);
292 efi_systab->fw_vendor = __pa("H\0e\0w\0l\0e\0t\0t\0-\0P\0a\0c\0k\0a\0r\0d\0\0"); 292 efi_systab->fw_vendor = __pa("H\0e\0w\0l\0e\0t\0t\0-\0P\0a\0c\0k\0a\0r\0d\0\0");
293 efi_systab->fw_revision = 1; 293 efi_systab->fw_revision = 1;
diff --git a/arch/ia64/ia32/ia32_ldt.c b/arch/ia64/ia32/ia32_ldt.c
index a152738c7d0d..16d51c146849 100644
--- a/arch/ia64/ia32/ia32_ldt.c
+++ b/arch/ia64/ia32/ia32_ldt.c
@@ -10,7 +10,6 @@
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/vmalloc.h> 13#include <linux/vmalloc.h>
15 14
16#include <asm/uaccess.h> 15#include <asm/uaccess.h>
diff --git a/arch/ia64/ia32/ia32_signal.c b/arch/ia64/ia32/ia32_signal.c
index b3355a9ca2c3..10510e585204 100644
--- a/arch/ia64/ia32/ia32_signal.c
+++ b/arch/ia64/ia32/ia32_signal.c
@@ -18,7 +18,6 @@
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/signal.h> 19#include <linux/signal.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/stddef.h> 21#include <linux/stddef.h>
23#include <linux/syscalls.h> 22#include <linux/syscalls.h>
24#include <linux/unistd.h> 23#include <linux/unistd.h>
diff --git a/arch/ia64/ia32/ia32_support.c b/arch/ia64/ia32/ia32_support.c
index 6af400a12ca1..beea7a0b9dc6 100644
--- a/arch/ia64/ia32/ia32_support.c
+++ b/arch/ia64/ia32/ia32_support.c
@@ -252,10 +252,8 @@ ia32_init (void)
252 extern struct kmem_cache *partial_page_cachep; 252 extern struct kmem_cache *partial_page_cachep;
253 253
254 partial_page_cachep = kmem_cache_create("partial_page_cache", 254 partial_page_cachep = kmem_cache_create("partial_page_cache",
255 sizeof(struct partial_page), 0, 0, 255 sizeof(struct partial_page),
256 NULL, NULL); 256 0, SLAB_PANIC, NULL, NULL);
257 if (!partial_page_cachep)
258 panic("Cannot create partial page SLAB cache");
259 } 257 }
260#endif 258#endif
261 return 0; 259 return 0;
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index 80a94e707827..aeb79fb28f0b 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -16,8 +16,8 @@
16#include <linux/elfcore.h> 16#include <linux/elfcore.h>
17#include <linux/sysctl.h> 17#include <linux/sysctl.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/kdebug.h>
19 20
20#include <asm/kdebug.h>
21#include <asm/mca.h> 21#include <asm/mca.h>
22 22
23int kdump_status[NR_CPUS]; 23int kdump_status[NR_CPUS];
@@ -74,7 +74,7 @@ crash_save_this_cpu(void)
74 buf = (u64 *) per_cpu_ptr(crash_notes, cpu); 74 buf = (u64 *) per_cpu_ptr(crash_notes, cpu);
75 if (!buf) 75 if (!buf)
76 return; 76 return;
77 buf = append_elf_note(buf, "CORE", NT_PRSTATUS, prstatus, 77 buf = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS, prstatus,
78 sizeof(*prstatus)); 78 sizeof(*prstatus));
79 final_note(buf); 79 final_note(buf);
80} 80}
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 78d29b79947d..75ec3478d8a2 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -445,11 +445,11 @@ efi_init (void)
445 panic("Woah! Can't find EFI system table.\n"); 445 panic("Woah! Can't find EFI system table.\n");
446 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) 446 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
447 panic("Woah! EFI system table signature incorrect\n"); 447 panic("Woah! EFI system table signature incorrect\n");
448 if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0) 448 if ((efi.systab->hdr.revision >> 16) == 0)
449 printk(KERN_WARNING "Warning: EFI system table major version mismatch: " 449 printk(KERN_WARNING "Warning: EFI system table version "
450 "got %d.%02d, expected %d.%02d\n", 450 "%d.%02d, expected 1.00 or greater\n",
451 efi.systab->hdr.revision >> 16, efi.systab->hdr.revision & 0xffff, 451 efi.systab->hdr.revision >> 16,
452 EFI_SYSTEM_TABLE_REVISION >> 16, EFI_SYSTEM_TABLE_REVISION & 0xffff); 452 efi.systab->hdr.revision & 0xffff);
453 453
454 config_tables = __va(efi.systab->tables); 454 config_tables = __va(efi.systab->tables);
455 455
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index dcfbf3e7a9ef..93d9ab14ba24 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -87,7 +87,6 @@
87#include <linux/list.h> 87#include <linux/list.h>
88#include <linux/pci.h> 88#include <linux/pci.h>
89#include <linux/smp.h> 89#include <linux/smp.h>
90#include <linux/smp_lock.h>
91#include <linux/string.h> 90#include <linux/string.h>
92#include <linux/bootmem.h> 91#include <linux/bootmem.h>
93 92
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 456f57b087ca..1c5044a80958 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -27,7 +27,6 @@
27#include <linux/random.h> /* for rand_initialize_irq() */ 27#include <linux/random.h> /* for rand_initialize_irq() */
28#include <linux/signal.h> 28#include <linux/signal.h>
29#include <linux/smp.h> 29#include <linux/smp.h>
30#include <linux/smp_lock.h>
31#include <linux/threads.h> 30#include <linux/threads.h>
32#include <linux/bitops.h> 31#include <linux/bitops.h>
33#include <linux/irq.h> 32#include <linux/irq.h>
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index 6cb56dd4056d..4f5fd0960ba7 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -29,9 +29,9 @@
29#include <linux/slab.h> 29#include <linux/slab.h>
30#include <linux/preempt.h> 30#include <linux/preempt.h>
31#include <linux/moduleloader.h> 31#include <linux/moduleloader.h>
32#include <linux/kdebug.h>
32 33
33#include <asm/pgtable.h> 34#include <asm/pgtable.h>
34#include <asm/kdebug.h>
35#include <asm/sections.h> 35#include <asm/sections.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37 37
@@ -444,7 +444,8 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
444 break; 444 break;
445 } 445 }
446 446
447 BUG_ON(!orig_ret_address || (orig_ret_address == trampoline_address)); 447 kretprobe_assert(ri, orig_ret_address, trampoline_address);
448
448 regs->cr_iip = orig_ret_address; 449 regs->cr_iip = orig_ret_address;
449 450
450 reset_current_kprobe(); 451 reset_current_kprobe();
@@ -464,23 +465,13 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
464} 465}
465 466
466/* Called with kretprobe_lock held */ 467/* Called with kretprobe_lock held */
467void __kprobes arch_prepare_kretprobe(struct kretprobe *rp, 468void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
468 struct pt_regs *regs) 469 struct pt_regs *regs)
469{ 470{
470 struct kretprobe_instance *ri; 471 ri->ret_addr = (kprobe_opcode_t *)regs->b0;
471
472 if ((ri = get_free_rp_inst(rp)) != NULL) {
473 ri->rp = rp;
474 ri->task = current;
475 ri->ret_addr = (kprobe_opcode_t *)regs->b0;
476
477 /* Replace the return addr with trampoline addr */
478 regs->b0 = ((struct fnptr *)kretprobe_trampoline)->ip;
479 472
480 add_rp_inst(ri); 473 /* Replace the return addr with trampoline addr */
481 } else { 474 regs->b0 = ((struct fnptr *)kretprobe_trampoline)->ip;
482 rp->nmissed++;
483 }
484} 475}
485 476
486int __kprobes arch_prepare_kprobe(struct kprobe *p) 477int __kprobes arch_prepare_kprobe(struct kprobe *p)
@@ -1021,3 +1012,12 @@ int __init arch_init_kprobes(void)
1021 (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip; 1012 (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip;
1022 return register_kprobe(&trampoline_p); 1013 return register_kprobe(&trampoline_p);
1023} 1014}
1015
1016int __kprobes arch_trampoline_kprobe(struct kprobe *p)
1017{
1018 if (p->addr ==
1019 (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip)
1020 return 1;
1021
1022 return 0;
1023}
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 491687f84fb5..1d7cc7e2ce32 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -63,7 +63,6 @@
63#include <linux/sched.h> 63#include <linux/sched.h>
64#include <linux/interrupt.h> 64#include <linux/interrupt.h>
65#include <linux/irq.h> 65#include <linux/irq.h>
66#include <linux/smp_lock.h>
67#include <linux/bootmem.h> 66#include <linux/bootmem.h>
68#include <linux/acpi.h> 67#include <linux/acpi.h>
69#include <linux/timer.h> 68#include <linux/timer.h>
@@ -72,9 +71,9 @@
72#include <linux/smp.h> 71#include <linux/smp.h>
73#include <linux/workqueue.h> 72#include <linux/workqueue.h>
74#include <linux/cpumask.h> 73#include <linux/cpumask.h>
74#include <linux/kdebug.h>
75 75
76#include <asm/delay.h> 76#include <asm/delay.h>
77#include <asm/kdebug.h>
78#include <asm/machvec.h> 77#include <asm/machvec.h>
79#include <asm/meminit.h> 78#include <asm/meminit.h>
80#include <asm/page.h> 79#include <asm/page.h>
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 832cf1e647e8..70b8bdbb7e6f 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -14,7 +14,6 @@
14#include <linux/interrupt.h> 14#include <linux/interrupt.h>
15#include <linux/irq.h> 15#include <linux/irq.h>
16#include <linux/kallsyms.h> 16#include <linux/kallsyms.h>
17#include <linux/smp_lock.h>
18#include <linux/bootmem.h> 17#include <linux/bootmem.h>
19#include <linux/acpi.h> 18#include <linux/acpi.h>
20#include <linux/timer.h> 19#include <linux/timer.h>
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index abc7ad035886..e7191ca30b16 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -23,7 +23,6 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/sched.h> 24#include <linux/sched.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/smp_lock.h>
27#include <linux/proc_fs.h> 26#include <linux/proc_fs.h>
28#include <linux/seq_file.h> 27#include <linux/seq_file.h>
29#include <linux/init.h> 28#include <linux/init.h>
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index ae96d4176995..8bb571a8a738 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -20,20 +20,19 @@
20#include <linux/personality.h> 20#include <linux/personality.h>
21#include <linux/sched.h> 21#include <linux/sched.h>
22#include <linux/slab.h> 22#include <linux/slab.h>
23#include <linux/smp_lock.h>
24#include <linux/stddef.h> 23#include <linux/stddef.h>
25#include <linux/thread_info.h> 24#include <linux/thread_info.h>
26#include <linux/unistd.h> 25#include <linux/unistd.h>
27#include <linux/efi.h> 26#include <linux/efi.h>
28#include <linux/interrupt.h> 27#include <linux/interrupt.h>
29#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/kdebug.h>
30 30
31#include <asm/cpu.h> 31#include <asm/cpu.h>
32#include <asm/delay.h> 32#include <asm/delay.h>
33#include <asm/elf.h> 33#include <asm/elf.h>
34#include <asm/ia32.h> 34#include <asm/ia32.h>
35#include <asm/irq.h> 35#include <asm/irq.h>
36#include <asm/kdebug.h>
37#include <asm/kexec.h> 36#include <asm/kexec.h>
38#include <asm/pgalloc.h> 37#include <asm/pgalloc.h>
39#include <asm/processor.h> 38#include <asm/processor.h>
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c
index af9f8754d847..a51f1d0bfb70 100644
--- a/arch/ia64/kernel/salinfo.c
+++ b/arch/ia64/kernel/salinfo.c
@@ -42,7 +42,6 @@
42#include <linux/proc_fs.h> 42#include <linux/proc_fs.h>
43#include <linux/module.h> 43#include <linux/module.h>
44#include <linux/smp.h> 44#include <linux/smp.h>
45#include <linux/smp_lock.h>
46#include <linux/timer.h> 45#include <linux/timer.h>
47#include <linux/vmalloc.h> 46#include <linux/vmalloc.h>
48 47
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
index 77f8b49c7882..0dcd56da6001 100644
--- a/arch/ia64/kernel/signal.c
+++ b/arch/ia64/kernel/signal.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/signal.h> 15#include <linux/signal.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/stddef.h> 17#include <linux/stddef.h>
19#include <linux/tty.h> 18#include <linux/tty.h>
20#include <linux/binfmts.h> 19#include <linux/binfmts.h>
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index ff7df439da6d..a44792d0f3a9 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -35,7 +35,6 @@
35#include <linux/mm.h> 35#include <linux/mm.h>
36#include <linux/notifier.h> 36#include <linux/notifier.h>
37#include <linux/smp.h> 37#include <linux/smp.h>
38#include <linux/smp_lock.h>
39#include <linux/spinlock.h> 38#include <linux/spinlock.h>
40#include <linux/efi.h> 39#include <linux/efi.h>
41#include <linux/percpu.h> 40#include <linux/percpu.h>
diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c
index 2fcaa2051aa3..1eda194b9559 100644
--- a/arch/ia64/kernel/sys_ia64.c
+++ b/arch/ia64/kernel/sys_ia64.c
@@ -13,7 +13,6 @@
13#include <linux/shm.h> 13#include <linux/shm.h>
14#include <linux/file.h> /* doh, must come after sched.h... */ 14#include <linux/file.h> /* doh, must come after sched.h... */
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/syscalls.h> 16#include <linux/syscalls.h>
18#include <linux/highuid.h> 17#include <linux/highuid.h>
19#include <linux/hugetlb.h> 18#include <linux/hugetlb.h>
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 39e0cd3a0884..a06667c7acc0 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -235,7 +235,7 @@ ia64_init_itm (void)
235 235
236static struct irqaction timer_irqaction = { 236static struct irqaction timer_irqaction = {
237 .handler = timer_interrupt, 237 .handler = timer_interrupt,
238 .flags = IRQF_DISABLED, 238 .flags = IRQF_DISABLED | IRQF_IRQPOLL,
239 .name = "timer" 239 .name = "timer"
240}; 240};
241 241
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index 765cbe5ba6ae..5bfb8be02b70 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -16,33 +16,17 @@
16#include <linux/hardirq.h> 16#include <linux/hardirq.h>
17#include <linux/kprobes.h> 17#include <linux/kprobes.h>
18#include <linux/delay.h> /* for ssleep() */ 18#include <linux/delay.h> /* for ssleep() */
19#include <linux/kdebug.h>
19 20
20#include <asm/fpswa.h> 21#include <asm/fpswa.h>
21#include <asm/ia32.h> 22#include <asm/ia32.h>
22#include <asm/intrinsics.h> 23#include <asm/intrinsics.h>
23#include <asm/processor.h> 24#include <asm/processor.h>
24#include <asm/uaccess.h> 25#include <asm/uaccess.h>
25#include <asm/kdebug.h>
26 26
27fpswa_interface_t *fpswa_interface; 27fpswa_interface_t *fpswa_interface;
28EXPORT_SYMBOL(fpswa_interface); 28EXPORT_SYMBOL(fpswa_interface);
29 29
30ATOMIC_NOTIFIER_HEAD(ia64die_chain);
31
32int
33register_die_notifier(struct notifier_block *nb)
34{
35 return atomic_notifier_chain_register(&ia64die_chain, nb);
36}
37EXPORT_SYMBOL_GPL(register_die_notifier);
38
39int
40unregister_die_notifier(struct notifier_block *nb)
41{
42 return atomic_notifier_chain_unregister(&ia64die_chain, nb);
43}
44EXPORT_SYMBOL_GPL(unregister_die_notifier);
45
46void __init 30void __init
47trap_init (void) 31trap_init (void)
48{ 32{
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 1e357550c776..fe6aa5a9f8fa 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -15,7 +15,6 @@
15 */ 15 */
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/smp_lock.h>
19#include <linux/tty.h> 18#include <linux/tty.h>
20 19
21#include <asm/intrinsics.h> 20#include <asm/intrinsics.h>
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 872da7a2accd..94844442812a 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -693,6 +693,7 @@ void __init paging_init(void)
693 zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page)); 693 zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page));
694} 694}
695 695
696#ifdef CONFIG_MEMORY_HOTPLUG
696pg_data_t *arch_alloc_nodedata(int nid) 697pg_data_t *arch_alloc_nodedata(int nid)
697{ 698{
698 unsigned long size = compute_pernodesize(nid); 699 unsigned long size = compute_pernodesize(nid);
@@ -710,3 +711,4 @@ void arch_refresh_nodedata(int update_node, pg_data_t *update_pgdat)
710 pgdat_list[update_node] = update_pgdat; 711 pgdat_list[update_node] = update_pgdat;
711 scatter_node_data(); 712 scatter_node_data();
712} 713}
714#endif
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 59f3ab937615..21658e02116c 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -7,15 +7,14 @@
7#include <linux/sched.h> 7#include <linux/sched.h>
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/smp_lock.h>
11#include <linux/interrupt.h> 10#include <linux/interrupt.h>
12#include <linux/kprobes.h> 11#include <linux/kprobes.h>
12#include <linux/kdebug.h>
13 13
14#include <asm/pgtable.h> 14#include <asm/pgtable.h>
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/system.h> 16#include <asm/system.h>
17#include <asm/uaccess.h> 17#include <asm/uaccess.h>
18#include <asm/kdebug.h>
19 18
20extern void die (char *, struct pt_regs *, long); 19extern void die (char *, struct pt_regs *, long);
21 20
diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c
index c7c90f4f4298..1346b7f05397 100644
--- a/arch/ia64/mm/hugetlbpage.c
+++ b/arch/ia64/mm/hugetlbpage.c
@@ -13,7 +13,6 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/hugetlb.h> 14#include <linux/hugetlb.h>
15#include <linux/pagemap.h> 15#include <linux/pagemap.h>
16#include <linux/smp_lock.h>
17#include <linux/slab.h> 16#include <linux/slab.h>
18#include <linux/sysctl.h> 17#include <linux/sysctl.h>
19#include <asm/mman.h> 18#include <asm/mman.h>
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 9f635896d252..3549f3b42592 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -18,7 +18,6 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/ioport.h> 19#include <linux/ioport.h>
20#include <linux/slab.h> 20#include <linux/slab.h>
21#include <linux/smp_lock.h>
22#include <linux/spinlock.h> 21#include <linux/spinlock.h>
23 22
24#include <asm/machvec.h> 23#include <asm/machvec.h>
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 68355ef6f841..e336e1692a73 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -55,9 +55,9 @@
55#include <linux/delay.h> 55#include <linux/delay.h>
56#include <linux/reboot.h> 56#include <linux/reboot.h>
57#include <linux/completion.h> 57#include <linux/completion.h>
58#include <linux/kdebug.h>
58#include <asm/sn/intr.h> 59#include <asm/sn/intr.h>
59#include <asm/sn/sn_sal.h> 60#include <asm/sn/sn_sal.h>
60#include <asm/kdebug.h>
61#include <asm/uaccess.h> 61#include <asm/uaccess.h>
62#include <asm/sn/xpc.h> 62#include <asm/sn/xpc.h>
63 63
@@ -1332,7 +1332,7 @@ xpc_init(void)
1332 dev_warn(xpc_part, "can't register reboot notifier\n"); 1332 dev_warn(xpc_part, "can't register reboot notifier\n");
1333 } 1333 }
1334 1334
1335 /* add ourselves to the die_notifier list (i.e., ia64die_chain) */ 1335 /* add ourselves to the die_notifier list */
1336 ret = register_die_notifier(&xpc_die_notifier); 1336 ret = register_die_notifier(&xpc_die_notifier);
1337 if (ret != 0) { 1337 if (ret != 0) {
1338 dev_warn(xpc_part, "can't register die notifier\n"); 1338 dev_warn(xpc_part, "can't register die notifier\n");
diff --git a/arch/m32r/kernel/m32r_ksyms.c b/arch/m32r/kernel/m32r_ksyms.c
index 8cbbb0b11e0c..41a4c95e06d6 100644
--- a/arch/m32r/kernel/m32r_ksyms.c
+++ b/arch/m32r/kernel/m32r_ksyms.c
@@ -5,7 +5,6 @@
5#include <linux/sched.h> 5#include <linux/sched.h>
6#include <linux/in6.h> 6#include <linux/in6.h>
7#include <linux/interrupt.h> 7#include <linux/interrupt.h>
8#include <linux/smp_lock.h>
9#include <linux/string.h> 8#include <linux/string.h>
10 9
11#include <asm/semaphore.h> 10#include <asm/semaphore.h>
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c
index 4b156054baa6..916faf6070af 100644
--- a/arch/m32r/kernel/signal.c
+++ b/arch/m32r/kernel/signal.c
@@ -13,7 +13,6 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/kernel.h> 16#include <linux/kernel.h>
18#include <linux/signal.h> 17#include <linux/signal.h>
19#include <linux/errno.h> 18#include <linux/errno.h>
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c
index 48d376f47e1a..3eb305953497 100644
--- a/arch/m32r/kernel/smpboot.c
+++ b/arch/m32r/kernel/smpboot.c
@@ -43,7 +43,6 @@
43#include <linux/init.h> 43#include <linux/init.h>
44#include <linux/kernel.h> 44#include <linux/kernel.h>
45#include <linux/mm.h> 45#include <linux/mm.h>
46#include <linux/smp_lock.h>
47#include <linux/irq.h> 46#include <linux/irq.h>
48#include <linux/bootmem.h> 47#include <linux/bootmem.h>
49#include <linux/delay.h> 48#include <linux/delay.h>
diff --git a/arch/m32r/kernel/sys_m32r.c b/arch/m32r/kernel/sys_m32r.c
index b4e7bcb43540..bda85548de6c 100644
--- a/arch/m32r/kernel/sys_m32r.c
+++ b/arch/m32r/kernel/sys_m32r.c
@@ -11,7 +11,6 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/sem.h> 14#include <linux/sem.h>
16#include <linux/msg.h> 15#include <linux/msg.h>
17#include <linux/shm.h> 16#include <linux/shm.h>
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c
index 9880abac3f54..88469178ea6b 100644
--- a/arch/m32r/mm/fault-nommu.c
+++ b/arch/m32r/mm/fault-nommu.c
@@ -17,7 +17,6 @@
17#include <linux/mman.h> 17#include <linux/mman.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/interrupt.h> 20#include <linux/interrupt.h>
22#include <linux/init.h> 21#include <linux/init.h>
23#include <linux/vt_kern.h> /* For unblank_screen() */ 22#include <linux/vt_kern.h> /* For unblank_screen() */
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index 037d58e82fb5..f3935ba24946 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -18,7 +18,6 @@
18#include <linux/mman.h> 18#include <linux/mman.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/interrupt.h> 21#include <linux/interrupt.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/tty.h> 23#include <linux/tty.h>
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c
index 7fd2720c3841..cdba9fd6d82f 100644
--- a/arch/m68k/kernel/ptrace.c
+++ b/arch/m68k/kernel/ptrace.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
19#include <linux/ptrace.h> 18#include <linux/ptrace.h>
20#include <linux/user.h> 19#include <linux/user.h>
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c
index 272d47eac58d..e341387787ab 100644
--- a/arch/m68k/mvme16x/rtc.c
+++ b/arch/m68k/mvme16x/rtc.c
@@ -16,7 +16,6 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/poll.h> 17#include <linux/poll.h>
18#include <linux/mc146818rtc.h> /* For struct rtc_time and ioctls, etc */ 18#include <linux/mc146818rtc.h> /* For struct rtc_time and ioctls, etc */
19#include <linux/smp_lock.h>
20#include <linux/bcd.h> 19#include <linux/bcd.h>
21#include <asm/mvme16xhw.h> 20#include <asm/mvme16xhw.h>
22 21
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c
index 72d349623575..f54b6a3dfecb 100644
--- a/arch/m68knommu/kernel/ptrace.c
+++ b/arch/m68knommu/kernel/ptrace.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
19#include <linux/ptrace.h> 18#include <linux/ptrace.h>
20#include <linux/user.h> 19#include <linux/user.h>
diff --git a/arch/m68knommu/kernel/sys_m68k.c b/arch/m68knommu/kernel/sys_m68k.c
index 3265b2d734db..48e6b33e8b44 100644
--- a/arch/m68knommu/kernel/sys_m68k.c
+++ b/arch/m68knommu/kernel/sys_m68k.c
@@ -10,7 +10,6 @@
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/sem.h> 13#include <linux/sem.h>
15#include <linux/msg.h> 14#include <linux/msg.h>
16#include <linux/shm.h> 15#include <linux/shm.h>
diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c
index 304efdc5682f..4fa54b230c09 100644
--- a/arch/mips/kernel/early_printk.c
+++ b/arch/mips/kernel/early_printk.c
@@ -33,8 +33,3 @@ void __init setup_early_printk(void)
33{ 33{
34 register_console(&early_console); 34 register_console(&early_console);
35} 35}
36
37void __init disable_early_printk(void)
38{
39 unregister_console(&early_console);
40}
diff --git a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c
index 3cc25c05d367..403d96f99e77 100644
--- a/arch/mips/kernel/irixelf.c
+++ b/arch/mips/kernel/irixelf.c
@@ -31,7 +31,6 @@
31#include <linux/shm.h> 31#include <linux/shm.h>
32#include <linux/personality.h> 32#include <linux/personality.h>
33#include <linux/elfcore.h> 33#include <linux/elfcore.h>
34#include <linux/smp_lock.h>
35 34
36#include <asm/mipsregs.h> 35#include <asm/mipsregs.h>
37#include <asm/namei.h> 36#include <asm/namei.h>
diff --git a/arch/mips/kernel/irixioctl.c b/arch/mips/kernel/irixioctl.c
index e2863821a3dd..30f9eb09db3f 100644
--- a/arch/mips/kernel/irixioctl.c
+++ b/arch/mips/kernel/irixioctl.c
@@ -9,7 +9,6 @@
9#include <linux/fs.h> 9#include <linux/fs.h>
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/smp_lock.h>
13#include <linux/sockios.h> 12#include <linux/sockios.h>
14#include <linux/syscalls.h> 13#include <linux/syscalls.h>
15#include <linux/tty.h> 14#include <linux/tty.h>
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c
index 2132485caa74..6980deb6dced 100644
--- a/arch/mips/kernel/irixsig.c
+++ b/arch/mips/kernel/irixsig.c
@@ -10,7 +10,6 @@
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/errno.h> 11#include <linux/errno.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/time.h> 13#include <linux/time.h>
15#include <linux/ptrace.h> 14#include <linux/ptrace.h>
16#include <linux/resource.h> 15#include <linux/resource.h>
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
index 201ae194d1b8..b5a7b46bbc49 100644
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -22,7 +22,6 @@
22#include <linux/ptrace.h> 22#include <linux/ptrace.h>
23#include <linux/audit.h> 23#include <linux/audit.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
25#include <linux/smp_lock.h>
26#include <linux/user.h> 25#include <linux/user.h>
27#include <linux/security.h> 26#include <linux/security.h>
28#include <linux/signal.h> 27#include <linux/signal.h>
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index 07d67309451a..2a08ce41bf2b 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -12,7 +12,6 @@
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/personality.h> 13#include <linux/personality.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/kernel.h> 15#include <linux/kernel.h>
17#include <linux/signal.h> 16#include <linux/signal.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index b9a014411f83..003f8152b9ed 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -12,7 +12,6 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/kernel.h> 15#include <linux/kernel.h>
17#include <linux/signal.h> 16#include <linux/signal.h>
18#include <linux/syscalls.h> 17#include <linux/syscalls.h>
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
index a9202fa95987..4cf9ff24d1f7 100644
--- a/arch/mips/kernel/signal_n32.c
+++ b/arch/mips/kernel/signal_n32.c
@@ -19,7 +19,6 @@
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/kernel.h> 22#include <linux/kernel.h>
24#include <linux/signal.h> 23#include <linux/signal.h>
25#include <linux/errno.h> 24#include <linux/errno.h>
diff --git a/arch/mips/kernel/stacktrace.c b/arch/mips/kernel/stacktrace.c
index a586aba337a7..ebd9db8d1ece 100644
--- a/arch/mips/kernel/stacktrace.c
+++ b/arch/mips/kernel/stacktrace.c
@@ -31,8 +31,7 @@ static void save_raw_context_stack(struct stack_trace *trace,
31 } 31 }
32} 32}
33 33
34static void save_context_stack(struct stack_trace *trace, 34static void save_context_stack(struct stack_trace *trace, struct pt_regs *regs)
35 struct task_struct *task, struct pt_regs *regs)
36{ 35{
37 unsigned long sp = regs->regs[29]; 36 unsigned long sp = regs->regs[29];
38#ifdef CONFIG_KALLSYMS 37#ifdef CONFIG_KALLSYMS
@@ -41,7 +40,7 @@ static void save_context_stack(struct stack_trace *trace,
41 40
42 if (raw_show_trace || !__kernel_text_address(pc)) { 41 if (raw_show_trace || !__kernel_text_address(pc)) {
43 unsigned long stack_page = 42 unsigned long stack_page =
44 (unsigned long)task_stack_page(task); 43 (unsigned long)task_stack_page(current);
45 if (stack_page && sp >= stack_page && 44 if (stack_page && sp >= stack_page &&
46 sp <= stack_page + THREAD_SIZE - 32) 45 sp <= stack_page + THREAD_SIZE - 32)
47 save_raw_context_stack(trace, sp); 46 save_raw_context_stack(trace, sp);
@@ -54,7 +53,7 @@ static void save_context_stack(struct stack_trace *trace,
54 trace->entries[trace->nr_entries++] = pc; 53 trace->entries[trace->nr_entries++] = pc;
55 if (trace->nr_entries >= trace->max_entries) 54 if (trace->nr_entries >= trace->max_entries)
56 break; 55 break;
57 pc = unwind_stack(task, &sp, pc, &ra); 56 pc = unwind_stack(current, &sp, pc, &ra);
58 } while (pc); 57 } while (pc);
59#else 58#else
60 save_raw_context_stack(trace, sp); 59 save_raw_context_stack(trace, sp);
@@ -64,22 +63,13 @@ static void save_context_stack(struct stack_trace *trace,
64/* 63/*
65 * Save stack-backtrace addresses into a stack_trace buffer. 64 * Save stack-backtrace addresses into a stack_trace buffer.
66 */ 65 */
67void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 66void save_stack_trace(struct stack_trace *trace)
68{ 67{
69 struct pt_regs dummyregs; 68 struct pt_regs dummyregs;
70 struct pt_regs *regs = &dummyregs; 69 struct pt_regs *regs = &dummyregs;
71 70
72 WARN_ON(trace->nr_entries || !trace->max_entries); 71 WARN_ON(trace->nr_entries || !trace->max_entries);
73 72
74 if (task && task != current) { 73 prepare_frametrace(regs);
75 regs->regs[29] = task->thread.reg29; 74 save_context_stack(trace, regs);
76 regs->regs[31] = 0;
77 regs->cp0_epc = task->thread.reg31;
78 } else {
79 if (!task)
80 task = current;
81 prepare_frametrace(regs);
82 }
83
84 save_context_stack(trace, task, regs);
85} 75}
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index 26e1a7e78d13..9dd5a2df8eac 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -13,7 +13,6 @@
13#include <linux/linkage.h> 13#include <linux/linkage.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/mman.h> 16#include <linux/mman.h>
18#include <linux/ptrace.h> 17#include <linux/ptrace.h>
19#include <linux/sched.h> 18#include <linux/sched.h>
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 493cb29b8a42..ff45a4b8fbaa 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -16,7 +16,6 @@
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/spinlock.h> 19#include <linux/spinlock.h>
21#include <linux/kallsyms.h> 20#include <linux/kallsyms.h>
22#include <linux/bootmem.h> 21#include <linux/bootmem.h>
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
index 24b7b053cfe9..a7d49ae805b4 100644
--- a/arch/mips/kernel/unaligned.c
+++ b/arch/mips/kernel/unaligned.c
@@ -76,7 +76,6 @@
76#include <linux/module.h> 76#include <linux/module.h>
77#include <linux/signal.h> 77#include <linux/signal.h>
78#include <linux/smp.h> 78#include <linux/smp.h>
79#include <linux/smp_lock.h>
80 79
81#include <asm/asm.h> 80#include <asm/asm.h>
82#include <asm/branch.h> 81#include <asm/branch.h>
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c
index 8079f3d1eca0..ea6ba7248489 100644
--- a/arch/mips/math-emu/dsemul.c
+++ b/arch/mips/math-emu/dsemul.c
@@ -2,7 +2,6 @@
2#include <linux/mm.h> 2#include <linux/mm.h>
3#include <linux/signal.h> 3#include <linux/signal.h>
4#include <linux/smp.h> 4#include <linux/smp.h>
5#include <linux/smp_lock.h>
6 5
7#include <asm/asm.h> 6#include <asm/asm.h>
8#include <asm/bootinfo.h> 7#include <asm/bootinfo.h>
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index f9c595dceba9..7ebea331edb8 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -16,7 +16,6 @@
16#include <linux/mman.h> 16#include <linux/mman.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/vt_kern.h> /* For unblank_screen() */ 19#include <linux/vt_kern.h> /* For unblank_screen() */
21#include <linux/module.h> 20#include <linux/module.h>
22 21
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 60ade7690e09..ba8e0794630c 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -19,7 +19,6 @@
19#include <linux/timex.h> 19#include <linux/timex.h>
20#include <linux/slab.h> 20#include <linux/slab.h>
21#include <linux/random.h> 21#include <linux/random.h>
22#include <linux/smp_lock.h>
23#include <linux/kernel.h> 22#include <linux/kernel.h>
24#include <linux/kernel_stat.h> 23#include <linux/kernel_stat.h>
25#include <linux/delay.h> 24#include <linux/delay.h>
diff --git a/arch/mips/sni/irq.c b/arch/mips/sni/irq.c
index ad5fc471a004..9ccffdfb8289 100644
--- a/arch/mips/sni/irq.c
+++ b/arch/mips/sni/irq.c
@@ -42,7 +42,7 @@ static irqreturn_t sni_isa_irq_handler(int dummy, void *p)
42struct irqaction sni_isa_irq = { 42struct irqaction sni_isa_irq = {
43 .handler = sni_isa_irq_handler, 43 .handler = sni_isa_irq_handler,
44 .name = "ISA", 44 .name = "ISA",
45 .flags = SA_SHIRQ 45 .flags = IRQF_SHARED
46}; 46};
47 47
48/* 48/*
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c
index c7a81a2c014c..d86e15776779 100644
--- a/arch/parisc/hpux/fs.c
+++ b/arch/parisc/hpux/fs.c
@@ -24,7 +24,6 @@
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/sched.h> 25#include <linux/sched.h>
26#include <linux/file.h> 26#include <linux/file.h>
27#include <linux/smp_lock.h>
28#include <linux/slab.h> 27#include <linux/slab.h>
29#include <linux/ptrace.h> 28#include <linux/ptrace.h>
30#include <asm/errno.h> 29#include <asm/errno.h>
diff --git a/arch/parisc/hpux/ioctl.c b/arch/parisc/hpux/ioctl.c
index b34b4f3c60ec..dede4765852e 100644
--- a/arch/parisc/hpux/ioctl.c
+++ b/arch/parisc/hpux/ioctl.c
@@ -34,7 +34,6 @@
34 */ 34 */
35 35
36#include <linux/sched.h> 36#include <linux/sched.h>
37#include <linux/smp_lock.h>
38#include <linux/syscalls.h> 37#include <linux/syscalls.h>
39#include <asm/errno.h> 38#include <asm/errno.h>
40#include <asm/ioctl.h> 39#include <asm/ioctl.h>
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index e9d09b020e86..c5c9125dacec 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -388,7 +388,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
388static struct irqaction timer_action = { 388static struct irqaction timer_action = {
389 .handler = timer_interrupt, 389 .handler = timer_interrupt,
390 .name = "timer", 390 .name = "timer",
391 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_PERCPU, 391 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_PERCPU | IRQF_IRQPOLL,
392}; 392};
393 393
394#ifdef CONFIG_SMP 394#ifdef CONFIG_SMP
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c
index 0d0d617b6f21..8a0db376e91e 100644
--- a/arch/parisc/kernel/ptrace.c
+++ b/arch/parisc/kernel/ptrace.c
@@ -10,7 +10,6 @@
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/errno.h> 13#include <linux/errno.h>
15#include <linux/ptrace.h> 14#include <linux/ptrace.h>
16#include <linux/user.h> 15#include <linux/user.h>
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c
index 9784e405f849..fb35ebc0c4da 100644
--- a/arch/parisc/kernel/signal.c
+++ b/arch/parisc/kernel/signal.c
@@ -16,7 +16,6 @@
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/kernel.h> 19#include <linux/kernel.h>
21#include <linux/signal.h> 20#include <linux/signal.h>
22#include <linux/errno.h> 21#include <linux/errno.h>
diff --git a/arch/parisc/kernel/signal32.c b/arch/parisc/kernel/signal32.c
index 1c1a37f73053..db94affe5c71 100644
--- a/arch/parisc/kernel/signal32.c
+++ b/arch/parisc/kernel/signal32.c
@@ -26,7 +26,6 @@
26#include <linux/slab.h> 26#include <linux/slab.h>
27#include <linux/module.h> 27#include <linux/module.h>
28#include <linux/unistd.h> 28#include <linux/unistd.h>
29#include <linux/smp_lock.h>
30#include <linux/init.h> 29#include <linux/init.h>
31#include <linux/sched.h> 30#include <linux/sched.h>
32#include <linux/syscalls.h> 31#include <linux/syscalls.h>
diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
index 6fed0803c593..4f589216b39e 100644
--- a/arch/parisc/kernel/sys_parisc.c
+++ b/arch/parisc/kernel/sys_parisc.c
@@ -29,7 +29,6 @@
29#include <linux/mm.h> 29#include <linux/mm.h>
30#include <linux/mman.h> 30#include <linux/mman.h>
31#include <linux/shm.h> 31#include <linux/shm.h>
32#include <linux/smp_lock.h>
33#include <linux/syscalls.h> 32#include <linux/syscalls.h>
34#include <linux/utsname.h> 33#include <linux/utsname.h>
35#include <linux/personality.h> 34#include <linux/personality.h>
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 55bc1471967d..745ff741490a 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -20,7 +20,6 @@
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/smp_lock.h>
24#include <linux/spinlock.h> 23#include <linux/spinlock.h>
25#include <linux/init.h> 24#include <linux/init.h>
26#include <linux/interrupt.h> 25#include <linux/interrupt.h>
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c
index 5f75b3e65986..89c03707eccc 100644
--- a/arch/parisc/kernel/unwind.c
+++ b/arch/parisc/kernel/unwind.c
@@ -216,11 +216,8 @@ static void unwind_frame_regs(struct unwind_frame_info *info)
216 /* Handle some frequent special cases.... */ 216 /* Handle some frequent special cases.... */
217 { 217 {
218 char symname[KSYM_NAME_LEN+1]; 218 char symname[KSYM_NAME_LEN+1];
219 char *modname;
220 unsigned long symsize, offset;
221 219
222 kallsyms_lookup(info->ip, &symsize, &offset, 220 kallsyms_lookup(info->ip, NULL, NULL, NULL, symname);
223 &modname, symname);
224 221
225 dbg("info->ip = 0x%lx, name = %s\n", info->ip, symname); 222 dbg("info->ip = 0x%lx, name = %s\n", info->ip, symname);
226 223
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index c27f41870c8f..0c96611f02f4 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -30,8 +30,8 @@
30#include <linux/ptrace.h> 30#include <linux/ptrace.h>
31#include <linux/preempt.h> 31#include <linux/preempt.h>
32#include <linux/module.h> 32#include <linux/module.h>
33#include <linux/kdebug.h>
33#include <asm/cacheflush.h> 34#include <asm/cacheflush.h>
34#include <asm/kdebug.h>
35#include <asm/sstep.h> 35#include <asm/sstep.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37 37
@@ -126,22 +126,13 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
126} 126}
127 127
128/* Called with kretprobe_lock held */ 128/* Called with kretprobe_lock held */
129void __kprobes arch_prepare_kretprobe(struct kretprobe *rp, 129void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
130 struct pt_regs *regs) 130 struct pt_regs *regs)
131{ 131{
132 struct kretprobe_instance *ri; 132 ri->ret_addr = (kprobe_opcode_t *)regs->link;
133 133
134 if ((ri = get_free_rp_inst(rp)) != NULL) { 134 /* Replace the return addr with trampoline addr */
135 ri->rp = rp; 135 regs->link = (unsigned long)kretprobe_trampoline;
136 ri->task = current;
137 ri->ret_addr = (kprobe_opcode_t *)regs->link;
138
139 /* Replace the return addr with trampoline addr */
140 regs->link = (unsigned long)kretprobe_trampoline;
141 add_rp_inst(ri);
142 } else {
143 rp->nmissed++;
144 }
145} 136}
146 137
147static int __kprobes kprobe_handler(struct pt_regs *regs) 138static int __kprobes kprobe_handler(struct pt_regs *regs)
@@ -336,7 +327,7 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
336 break; 327 break;
337 } 328 }
338 329
339 BUG_ON(!orig_ret_address || (orig_ret_address == trampoline_address)); 330 kretprobe_assert(ri, orig_ret_address, trampoline_address);
340 regs->nip = orig_ret_address; 331 regs->nip = orig_ret_address;
341 332
342 reset_current_kprobe(); 333 reset_current_kprobe();
@@ -551,3 +542,11 @@ int __init arch_init_kprobes(void)
551{ 542{
552 return register_kprobe(&trampoline_p); 543 return register_kprobe(&trampoline_p);
553} 544}
545
546int __kprobes arch_trampoline_kprobe(struct kprobe *p)
547{
548 if (p->addr == (kprobe_opcode_t *)&kretprobe_trampoline)
549 return 1;
550
551 return 0;
552}
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index e509aae2feb3..6e2f03566b0d 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -19,7 +19,6 @@
19#include <linux/kernel.h> 19#include <linux/kernel.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/stddef.h> 22#include <linux/stddef.h>
24#include <linux/unistd.h> 23#include <linux/unistd.h>
25#include <linux/ptrace.h> 24#include <linux/ptrace.h>
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index cc44c7b975aa..f4f391cdd8f5 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -19,7 +19,6 @@
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/errno.h> 22#include <linux/errno.h>
24#include <linux/ptrace.h> 23#include <linux/ptrace.h>
25#include <linux/user.h> 24#include <linux/user.h>
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index 6b405a3f43f9..dd1dca5bfa81 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -20,7 +20,6 @@
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/smp_lock.h>
24#include <linux/kernel.h> 23#include <linux/kernel.h>
25#include <linux/signal.h> 24#include <linux/signal.h>
26#include <linux/errno.h> 25#include <linux/errno.h>
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
index f72e8e823d78..1ce0ae3f6ffc 100644
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
@@ -15,7 +15,6 @@
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/smp.h> 17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/kernel.h> 18#include <linux/kernel.h>
20#include <linux/signal.h> 19#include <linux/signal.h>
21#include <linux/errno.h> 20#include <linux/errno.h>
diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
index d358866b880f..fc6647d332cb 100644
--- a/arch/powerpc/kernel/syscalls.c
+++ b/arch/powerpc/kernel/syscalls.c
@@ -24,7 +24,6 @@
24#include <linux/syscalls.h> 24#include <linux/syscalls.h>
25#include <linux/mm.h> 25#include <linux/mm.h>
26#include <linux/smp.h> 26#include <linux/smp.h>
27#include <linux/smp_lock.h>
28#include <linux/sem.h> 27#include <linux/sem.h>
29#include <linux/msg.h> 28#include <linux/msg.h>
30#include <linux/shm.h> 29#include <linux/shm.h>
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index f7862224fe85..bf6445ac9f1c 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -33,8 +33,8 @@
33#include <linux/kexec.h> 33#include <linux/kexec.h>
34#include <linux/backlight.h> 34#include <linux/backlight.h>
35#include <linux/bug.h> 35#include <linux/bug.h>
36#include <linux/kdebug.h>
36 37
37#include <asm/kdebug.h>
38#include <asm/pgtable.h> 38#include <asm/pgtable.h>
39#include <asm/uaccess.h> 39#include <asm/uaccess.h>
40#include <asm/system.h> 40#include <asm/system.h>
@@ -72,20 +72,6 @@ EXPORT_SYMBOL(__debugger_dabr_match);
72EXPORT_SYMBOL(__debugger_fault_handler); 72EXPORT_SYMBOL(__debugger_fault_handler);
73#endif 73#endif
74 74
75ATOMIC_NOTIFIER_HEAD(powerpc_die_chain);
76
77int register_die_notifier(struct notifier_block *nb)
78{
79 return atomic_notifier_chain_register(&powerpc_die_chain, nb);
80}
81EXPORT_SYMBOL(register_die_notifier);
82
83int unregister_die_notifier(struct notifier_block *nb)
84{
85 return atomic_notifier_chain_unregister(&powerpc_die_chain, nb);
86}
87EXPORT_SYMBOL(unregister_die_notifier);
88
89/* 75/*
90 * Trap & Exception support 76 * Trap & Exception support
91 */ 77 */
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
index 7ef97ea8b3ef..87703df87509 100644
--- a/arch/powerpc/kernel/udbg.c
+++ b/arch/powerpc/kernel/udbg.c
@@ -145,29 +145,22 @@ static void udbg_console_write(struct console *con, const char *s,
145static struct console udbg_console = { 145static struct console udbg_console = {
146 .name = "udbg", 146 .name = "udbg",
147 .write = udbg_console_write, 147 .write = udbg_console_write,
148 .flags = CON_PRINTBUFFER | CON_ENABLED, 148 .flags = CON_PRINTBUFFER | CON_ENABLED | CON_BOOT,
149 .index = -1, 149 .index = -1,
150}; 150};
151 151
152static int early_console_initialized; 152static int early_console_initialized;
153 153
154void __init disable_early_printk(void)
155{
156 if (!early_console_initialized)
157 return;
158 if (strstr(boot_command_line, "udbg-immortal")) {
159 printk(KERN_INFO "early console immortal !\n");
160 return;
161 }
162 unregister_console(&udbg_console);
163 early_console_initialized = 0;
164}
165
166/* called by setup_system */ 154/* called by setup_system */
167void register_early_udbg_console(void) 155void register_early_udbg_console(void)
168{ 156{
169 if (early_console_initialized) 157 if (early_console_initialized)
170 return; 158 return;
159
160 if (strstr(boot_command_line, "udbg-immortal")) {
161 printk(KERN_INFO "early console immortal !\n");
162 udbg_console.flags &= ~CON_BOOT;
163 }
171 early_console_initialized = 1; 164 early_console_initialized = 1;
172 register_console(&udbg_console); 165 register_console(&udbg_console);
173} 166}
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index e46c31b36641..4245579edb4e 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -14,7 +14,6 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/stddef.h> 17#include <linux/stddef.h>
19#include <linux/unistd.h> 18#include <linux/unistd.h>
20#include <linux/slab.h> 19#include <linux/slab.h>
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index a0f88026e464..bfe901353142 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -28,6 +28,7 @@
28#include <linux/highmem.h> 28#include <linux/highmem.h>
29#include <linux/module.h> 29#include <linux/module.h>
30#include <linux/kprobes.h> 30#include <linux/kprobes.h>
31#include <linux/kdebug.h>
31 32
32#include <asm/page.h> 33#include <asm/page.h>
33#include <asm/pgtable.h> 34#include <asm/pgtable.h>
@@ -36,7 +37,6 @@
36#include <asm/system.h> 37#include <asm/system.h>
37#include <asm/uaccess.h> 38#include <asm/uaccess.h>
38#include <asm/tlbflush.h> 39#include <asm/tlbflush.h>
39#include <asm/kdebug.h>
40#include <asm/siginfo.h> 40#include <asm/siginfo.h>
41 41
42 42
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 1f07f70ac89f..fb959264c104 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -12,7 +12,6 @@
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/hugetlb.h> 13#include <linux/hugetlb.h>
14#include <linux/pagemap.h> 14#include <linux/pagemap.h>
15#include <linux/smp_lock.h>
16#include <linux/slab.h> 15#include <linux/slab.h>
17#include <linux/err.h> 16#include <linux/err.h>
18#include <linux/sysctl.h> 17#include <linux/sysctl.h>
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index 4416d5140c53..fe1fe852181a 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -183,11 +183,8 @@ void pgtable_cache_init(void)
183 "for size: %08x...\n", name, i, size); 183 "for size: %08x...\n", name, i, size);
184 pgtable_cache[i] = kmem_cache_create(name, 184 pgtable_cache[i] = kmem_cache_create(name,
185 size, size, 185 size, size,
186 0, 186 SLAB_PANIC,
187 zero_ctor, 187 zero_ctor,
188 NULL); 188 NULL);
189 if (! pgtable_cache[i])
190 panic("pgtable_cache_init(): could not create %s!\n",
191 name);
192 } 189 }
193} 190}
diff --git a/arch/powerpc/platforms/cell/spufs/backing_ops.c b/arch/powerpc/platforms/cell/spufs/backing_ops.c
index 3322528fa6eb..d32db9ffc6eb 100644
--- a/arch/powerpc/platforms/cell/spufs/backing_ops.c
+++ b/arch/powerpc/platforms/cell/spufs/backing_ops.c
@@ -28,7 +28,6 @@
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/vmalloc.h> 29#include <linux/vmalloc.h>
30#include <linux/smp.h> 30#include <linux/smp.h>
31#include <linux/smp_lock.h>
32#include <linux/stddef.h> 31#include <linux/stddef.h>
33#include <linux/unistd.h> 32#include <linux/unistd.h>
34#include <linux/poll.h> 33#include <linux/poll.h>
diff --git a/arch/powerpc/platforms/cell/spufs/hw_ops.c b/arch/powerpc/platforms/cell/spufs/hw_ops.c
index 428875c5e4ec..fc4ed1ffbd4f 100644
--- a/arch/powerpc/platforms/cell/spufs/hw_ops.c
+++ b/arch/powerpc/platforms/cell/spufs/hw_ops.c
@@ -25,7 +25,6 @@
25#include <linux/mm.h> 25#include <linux/mm.h>
26#include <linux/poll.h> 26#include <linux/poll.h>
27#include <linux/smp.h> 27#include <linux/smp.h>
28#include <linux/smp_lock.h>
29#include <linux/stddef.h> 28#include <linux/stddef.h>
30#include <linux/unistd.h> 29#include <linux/unistd.h>
31 30
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 91030b8abdca..b6ecb30e7d58 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -30,7 +30,6 @@
30#include <linux/completion.h> 30#include <linux/completion.h>
31#include <linux/vmalloc.h> 31#include <linux/vmalloc.h>
32#include <linux/smp.h> 32#include <linux/smp.h>
33#include <linux/smp_lock.h>
34#include <linux/stddef.h> 33#include <linux/stddef.h>
35#include <linux/unistd.h> 34#include <linux/unistd.h>
36#include <linux/numa.h> 35#include <linux/numa.h>
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c
index 8347c4a3f894..29dc59cefc38 100644
--- a/arch/powerpc/platforms/cell/spufs/switch.c
+++ b/arch/powerpc/platforms/cell/spufs/switch.c
@@ -39,7 +39,6 @@
39#include <linux/mm.h> 39#include <linux/mm.h>
40#include <linux/vmalloc.h> 40#include <linux/vmalloc.h>
41#include <linux/smp.h> 41#include <linux/smp.h>
42#include <linux/smp_lock.h>
43#include <linux/stddef.h> 42#include <linux/stddef.h>
44#include <linux/unistd.h> 43#include <linux/unistd.h>
45 44
diff --git a/arch/powerpc/platforms/chrp/smp.c b/arch/powerpc/platforms/chrp/smp.c
index 1d2307e87c30..3ea0eb78568e 100644
--- a/arch/powerpc/platforms/chrp/smp.c
+++ b/arch/powerpc/platforms/chrp/smp.c
@@ -11,7 +11,6 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/interrupt.h> 14#include <linux/interrupt.h>
16#include <linux/kernel_stat.h> 15#include <linux/kernel_stat.h>
17#include <linux/delay.h> 16#include <linux/delay.h>
diff --git a/arch/powerpc/platforms/iseries/smp.c b/arch/powerpc/platforms/iseries/smp.c
index aee5908df700..722335e32fd4 100644
--- a/arch/powerpc/platforms/iseries/smp.c
+++ b/arch/powerpc/platforms/iseries/smp.c
@@ -18,7 +18,6 @@
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/interrupt.h> 21#include <linux/interrupt.h>
23#include <linux/kernel_stat.h> 22#include <linux/kernel_stat.h>
24#include <linux/delay.h> 23#include <linux/delay.h>
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 2ca2d8a9de97..354b8dd2a2c1 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -36,7 +36,6 @@
36#include <linux/dma-mapping.h> 36#include <linux/dma-mapping.h>
37#include <linux/wait.h> 37#include <linux/wait.h>
38#include <linux/seq_file.h> 38#include <linux/seq_file.h>
39#include <linux/smp_lock.h>
40#include <linux/interrupt.h> 39#include <linux/interrupt.h>
41 40
42#include <asm/system.h> 41#include <asm/system.h>
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 84f1860493bb..686ed82bde79 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -24,7 +24,6 @@
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/sched.h> 25#include <linux/sched.h>
26#include <linux/smp.h> 26#include <linux/smp.h>
27#include <linux/smp_lock.h>
28#include <linux/interrupt.h> 27#include <linux/interrupt.h>
29#include <linux/kernel_stat.h> 28#include <linux/kernel_stat.h>
30#include <linux/delay.h> 29#include <linux/delay.h>
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index b481db1dacb4..28fdf4f50c27 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -1217,7 +1217,6 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
1217{ 1217{
1218 unsigned long size, offset; 1218 unsigned long size, offset;
1219 const char *name; 1219 const char *name;
1220 char *modname;
1221 1220
1222 *startp = *endp = 0; 1221 *startp = *endp = 0;
1223 if (pc == 0) 1222 if (pc == 0)
@@ -1225,7 +1224,7 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
1225 if (setjmp(bus_error_jmp) == 0) { 1224 if (setjmp(bus_error_jmp) == 0) {
1226 catch_memory_errors = 1; 1225 catch_memory_errors = 1;
1227 sync(); 1226 sync();
1228 name = kallsyms_lookup(pc, &size, &offset, &modname, tmpstr); 1227 name = kallsyms_lookup(pc, &size, &offset, NULL, tmpstr);
1229 if (name != NULL) { 1228 if (name != NULL) {
1230 *startp = pc - offset; 1229 *startp = pc - offset;
1231 *endp = pc - offset + size; 1230 *endp = pc - offset + size;
diff --git a/arch/ppc/kernel/ppc_htab.c b/arch/ppc/kernel/ppc_htab.c
index 0a7e42d54eaf..aa07b63c0a6c 100644
--- a/arch/ppc/kernel/ppc_htab.c
+++ b/arch/ppc/kernel/ppc_htab.c
@@ -18,7 +18,6 @@
18#include <linux/capability.h> 18#include <linux/capability.h>
19#include <linux/ctype.h> 19#include <linux/ctype.h>
20#include <linux/threads.h> 20#include <linux/threads.h>
21#include <linux/smp_lock.h>
22#include <linux/seq_file.h> 21#include <linux/seq_file.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/bitops.h> 23#include <linux/bitops.h>
diff --git a/arch/ppc/kernel/smp.c b/arch/ppc/kernel/smp.c
index 96a55972b986..055998575cb4 100644
--- a/arch/ppc/kernel/smp.c
+++ b/arch/ppc/kernel/smp.c
@@ -12,7 +12,6 @@
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <linux/kernel_stat.h> 16#include <linux/kernel_stat.h>
18#include <linux/delay.h> 17#include <linux/delay.h>
diff --git a/arch/ppc/syslib/virtex_devices.h b/arch/ppc/syslib/virtex_devices.h
index 4a17dd3927c1..3d4be1412f60 100644
--- a/arch/ppc/syslib/virtex_devices.h
+++ b/arch/ppc/syslib/virtex_devices.h
@@ -13,6 +13,13 @@
13 13
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15 15
16/* ML300/403 reference design framebuffer driver platform data struct */
17struct xilinxfb_platform_data {
18 u32 rotate_screen;
19 u32 screen_height_mm;
20 u32 screen_width_mm;
21};
22
16void __init virtex_early_serial_map(void); 23void __init virtex_early_serial_map(void);
17 24
18/* Prototype for device fixup routine. Implement this routine in the 25/* Prototype for device fixup routine. Implement this routine in the
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 80a54a0149ab..a5692c460bad 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/kernel.h> 17#include <linux/kernel.h>
19#include <linux/signal.h> 18#include <linux/signal.h>
20#include <linux/errno.h> 19#include <linux/errno.h>
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c
index dabaf98943d0..a057ebf108a7 100644
--- a/arch/s390/kernel/dis.c
+++ b/arch/s390/kernel/dis.c
@@ -23,6 +23,7 @@
23#include <linux/kallsyms.h> 23#include <linux/kallsyms.h>
24#include <linux/reboot.h> 24#include <linux/reboot.h>
25#include <linux/kprobes.h> 25#include <linux/kprobes.h>
26#include <linux/kdebug.h>
26 27
27#include <asm/system.h> 28#include <asm/system.h>
28#include <asm/uaccess.h> 29#include <asm/uaccess.h>
@@ -33,7 +34,6 @@
33#include <asm/s390_ext.h> 34#include <asm/s390_ext.h>
34#include <asm/lowcore.h> 35#include <asm/lowcore.h>
35#include <asm/debug.h> 36#include <asm/debug.h>
36#include <asm/kdebug.h>
37 37
38#ifndef CONFIG_64BIT 38#ifndef CONFIG_64BIT
39#define ONELONG "%08lx: " 39#define ONELONG "%08lx: "
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
index 23c61f6d965b..e39333ae0fcf 100644
--- a/arch/s390/kernel/kprobes.c
+++ b/arch/s390/kernel/kprobes.c
@@ -24,8 +24,8 @@
24#include <linux/ptrace.h> 24#include <linux/ptrace.h>
25#include <linux/preempt.h> 25#include <linux/preempt.h>
26#include <linux/stop_machine.h> 26#include <linux/stop_machine.h>
27#include <linux/kdebug.h>
27#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
28#include <asm/kdebug.h>
29#include <asm/sections.h> 29#include <asm/sections.h>
30#include <asm/uaccess.h> 30#include <asm/uaccess.h>
31#include <linux/module.h> 31#include <linux/module.h>
@@ -271,23 +271,13 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
271} 271}
272 272
273/* Called with kretprobe_lock held */ 273/* Called with kretprobe_lock held */
274void __kprobes arch_prepare_kretprobe(struct kretprobe *rp, 274void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
275 struct pt_regs *regs) 275 struct pt_regs *regs)
276{ 276{
277 struct kretprobe_instance *ri; 277 ri->ret_addr = (kprobe_opcode_t *) regs->gprs[14];
278 278
279 if ((ri = get_free_rp_inst(rp)) != NULL) { 279 /* Replace the return addr with trampoline addr */
280 ri->rp = rp; 280 regs->gprs[14] = (unsigned long)&kretprobe_trampoline;
281 ri->task = current;
282 ri->ret_addr = (kprobe_opcode_t *) regs->gprs[14];
283
284 /* Replace the return addr with trampoline addr */
285 regs->gprs[14] = (unsigned long)&kretprobe_trampoline;
286
287 add_rp_inst(ri);
288 } else {
289 rp->nmissed++;
290 }
291} 281}
292 282
293static int __kprobes kprobe_handler(struct pt_regs *regs) 283static int __kprobes kprobe_handler(struct pt_regs *regs)
@@ -671,3 +661,10 @@ int __init arch_init_kprobes(void)
671{ 661{
672 return register_kprobe(&trampoline_p); 662 return register_kprobe(&trampoline_p);
673} 663}
664
665int __kprobes arch_trampoline_kprobe(struct kprobe *p)
666{
667 if (p->addr == (kprobe_opcode_t *) & kretprobe_trampoline)
668 return 1;
669 return 0;
670}
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 11d9b0197626..eb43c3b31269 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -22,7 +22,6 @@
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
25#include <linux/smp_lock.h>
26#include <linux/stddef.h> 25#include <linux/stddef.h>
27#include <linux/unistd.h> 26#include <linux/unistd.h>
28#include <linux/ptrace.h> 27#include <linux/ptrace.h>
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 3c41907799a1..d264671c1b71 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h>
18#include <linux/kernel.h> 17#include <linux/kernel.h>
19#include <linux/signal.h> 18#include <linux/signal.h>
20#include <linux/errno.h> 19#include <linux/errno.h>
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 3754e2031b39..b7977027a28f 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -25,7 +25,6 @@
25#include <linux/mm.h> 25#include <linux/mm.h>
26#include <linux/spinlock.h> 26#include <linux/spinlock.h>
27#include <linux/kernel_stat.h> 27#include <linux/kernel_stat.h>
28#include <linux/smp_lock.h>
29#include <linux/delay.h> 28#include <linux/delay.h>
30#include <linux/cache.h> 29#include <linux/cache.h>
31#include <linux/interrupt.h> 30#include <linux/interrupt.h>
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
index 2e5c65a1863e..515ff9011dd7 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -59,7 +59,7 @@ static unsigned long save_context_stack(struct stack_trace *trace,
59 } 59 }
60} 60}
61 61
62void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 62void save_stack_trace(struct stack_trace *trace)
63{ 63{
64 register unsigned long sp asm ("15"); 64 register unsigned long sp asm ("15");
65 unsigned long orig_sp, new_sp; 65 unsigned long orig_sp, new_sp;
@@ -69,20 +69,16 @@ void save_stack_trace(struct stack_trace *trace, struct task_struct *task)
69 new_sp = save_context_stack(trace, &trace->skip, orig_sp, 69 new_sp = save_context_stack(trace, &trace->skip, orig_sp,
70 S390_lowcore.panic_stack - PAGE_SIZE, 70 S390_lowcore.panic_stack - PAGE_SIZE,
71 S390_lowcore.panic_stack); 71 S390_lowcore.panic_stack);
72 if ((new_sp != orig_sp) && !trace->all_contexts) 72 if (new_sp != orig_sp)
73 return; 73 return;
74 new_sp = save_context_stack(trace, &trace->skip, new_sp, 74 new_sp = save_context_stack(trace, &trace->skip, new_sp,
75 S390_lowcore.async_stack - ASYNC_SIZE, 75 S390_lowcore.async_stack - ASYNC_SIZE,
76 S390_lowcore.async_stack); 76 S390_lowcore.async_stack);
77 if ((new_sp != orig_sp) && !trace->all_contexts) 77 if (new_sp != orig_sp)
78 return; 78 return;
79 if (task) 79
80 save_context_stack(trace, &trace->skip, new_sp, 80 save_context_stack(trace, &trace->skip, new_sp,
81 (unsigned long) task_stack_page(task), 81 S390_lowcore.thread_info,
82 (unsigned long) task_stack_page(task) + THREAD_SIZE); 82 S390_lowcore.thread_info + THREAD_SIZE);
83 else
84 save_context_stack(trace, &trace->skip, new_sp,
85 S390_lowcore.thread_info,
86 S390_lowcore.thread_info + THREAD_SIZE);
87 return; 83 return;
88} 84}
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
index 3a77c22cda78..1c90c7e99978 100644
--- a/arch/s390/kernel/sys_s390.c
+++ b/arch/s390/kernel/sys_s390.c
@@ -17,7 +17,6 @@
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/sem.h> 20#include <linux/sem.h>
22#include <linux/msg.h> 21#include <linux/msg.h>
23#include <linux/shm.h> 22#include <linux/shm.h>
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 711dae8da7ad..9c2872a7cca7 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -21,6 +21,7 @@
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/time.h> 23#include <linux/time.h>
24#include <linux/sysdev.h>
24#include <linux/delay.h> 25#include <linux/delay.h>
25#include <linux/init.h> 26#include <linux/init.h>
26#include <linux/smp.h> 27#include <linux/smp.h>
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 49dec830373a..cbfe73034c30 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -22,11 +22,11 @@
22#include <linux/timer.h> 22#include <linux/timer.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
25#include <linux/smp_lock.h>
26#include <linux/init.h> 25#include <linux/init.h>
27#include <linux/interrupt.h> 26#include <linux/interrupt.h>
28#include <linux/delay.h> 27#include <linux/delay.h>
29#include <linux/module.h> 28#include <linux/module.h>
29#include <linux/kdebug.h>
30#include <linux/kallsyms.h> 30#include <linux/kallsyms.h>
31#include <linux/reboot.h> 31#include <linux/reboot.h>
32#include <linux/kprobes.h> 32#include <linux/kprobes.h>
@@ -40,7 +40,6 @@
40#include <asm/s390_ext.h> 40#include <asm/s390_ext.h>
41#include <asm/lowcore.h> 41#include <asm/lowcore.h>
42#include <asm/debug.h> 42#include <asm/debug.h>
43#include <asm/kdebug.h>
44 43
45/* Called from entry.S only */ 44/* Called from entry.S only */
46extern void handle_per_exception(struct pt_regs *regs); 45extern void handle_per_exception(struct pt_regs *regs);
@@ -70,20 +69,6 @@ static int kstack_depth_to_print = 12;
70static int kstack_depth_to_print = 20; 69static int kstack_depth_to_print = 20;
71#endif /* CONFIG_64BIT */ 70#endif /* CONFIG_64BIT */
72 71
73ATOMIC_NOTIFIER_HEAD(s390die_chain);
74
75int register_die_notifier(struct notifier_block *nb)
76{
77 return atomic_notifier_chain_register(&s390die_chain, nb);
78}
79EXPORT_SYMBOL(register_die_notifier);
80
81int unregister_die_notifier(struct notifier_block *nb)
82{
83 return atomic_notifier_chain_unregister(&s390die_chain, nb);
84}
85EXPORT_SYMBOL(unregister_die_notifier);
86
87/* 72/*
88 * For show_trace we have tree different stack to consider: 73 * For show_trace we have tree different stack to consider:
89 * - the panic stack which is used if the kernel stack has overflown 74 * - the panic stack which is used if the kernel stack has overflown
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 91f705adc3f9..8b924b359774 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -20,6 +20,7 @@
20#include <linux/mman.h> 20#include <linux/mman.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/kdebug.h>
23#include <linux/smp_lock.h> 24#include <linux/smp_lock.h>
24#include <linux/init.h> 25#include <linux/init.h>
25#include <linux/console.h> 26#include <linux/console.h>
@@ -30,7 +31,6 @@
30 31
31#include <asm/system.h> 32#include <asm/system.h>
32#include <asm/pgtable.h> 33#include <asm/pgtable.h>
33#include <asm/kdebug.h>
34#include <asm/s390_ext.h> 34#include <asm/s390_ext.h>
35 35
36#ifndef CONFIG_64BIT 36#ifndef CONFIG_64BIT
diff --git a/arch/sh/drivers/pci/pci-st40.c b/arch/sh/drivers/pci/pci-st40.c
index efecb3d5995c..d67656a44b15 100644
--- a/arch/sh/drivers/pci/pci-st40.c
+++ b/arch/sh/drivers/pci/pci-st40.c
@@ -9,7 +9,6 @@
9 9
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/smp_lock.h>
13#include <linux/init.h> 12#include <linux/init.h>
14#include <linux/errno.h> 13#include <linux/errno.h>
15#include <linux/pci.h> 14#include <linux/pci.h>
diff --git a/arch/sh/kernel/early_printk.c b/arch/sh/kernel/early_printk.c
index 9048c0326d87..9833493d8867 100644
--- a/arch/sh/kernel/early_printk.c
+++ b/arch/sh/kernel/early_printk.c
@@ -192,20 +192,14 @@ int __init setup_early_printk(char *buf)
192 } 192 }
193#endif 193#endif
194 194
195 if (likely(early_console)) 195 if (likely(early_console)) {
196 if (keep_early)
197 early_console->flags &= ~CON_BOOT;
198 else
199 early_console->flags |= CON_BOOT;
196 register_console(early_console); 200 register_console(early_console);
201 }
197 202
198 return 0; 203 return 0;
199} 204}
200early_param("earlyprintk", setup_early_printk); 205early_param("earlyprintk", setup_early_printk);
201
202void __init disable_early_printk(void)
203{
204 if (!early_console_initialized || !early_console)
205 return;
206 if (!keep_early) {
207 printk("disabling early console\n");
208 unregister_console(early_console);
209 } else
210 printk("keeping early console\n");
211}
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c
index 855f7246cfff..3fb5fc0b550d 100644
--- a/arch/sh/kernel/ptrace.c
+++ b/arch/sh/kernel/ptrace.c
@@ -12,7 +12,6 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/errno.h> 15#include <linux/errno.h>
17#include <linux/ptrace.h> 16#include <linux/ptrace.h>
18#include <linux/user.h> 17#include <linux/user.h>
diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c
index 17f0b50c5678..fa91641c1f62 100644
--- a/arch/sh/kernel/sh_ksyms.c
+++ b/arch/sh/kernel/sh_ksyms.c
@@ -5,7 +5,6 @@
5#include <linux/sched.h> 5#include <linux/sched.h>
6#include <linux/in6.h> 6#include <linux/in6.h>
7#include <linux/interrupt.h> 7#include <linux/interrupt.h>
8#include <linux/smp_lock.h>
9#include <linux/vmalloc.h> 8#include <linux/vmalloc.h>
10#include <linux/pci.h> 9#include <linux/pci.h>
11#include <linux/irq.h> 10#include <linux/irq.h>
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c
index 9f39ef1f73da..eb0191c374b6 100644
--- a/arch/sh/kernel/signal.c
+++ b/arch/sh/kernel/signal.c
@@ -11,7 +11,6 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/kernel.h> 14#include <linux/kernel.h>
16#include <linux/signal.h> 15#include <linux/signal.h>
17#include <linux/errno.h> 16#include <linux/errno.h>
diff --git a/arch/sh/kernel/stacktrace.c b/arch/sh/kernel/stacktrace.c
index 0d5268afe80f..4bdd2f83535d 100644
--- a/arch/sh/kernel/stacktrace.c
+++ b/arch/sh/kernel/stacktrace.c
@@ -19,14 +19,7 @@
19 */ 19 */
20void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 20void save_stack_trace(struct stack_trace *trace, struct task_struct *task)
21{ 21{
22 unsigned long *sp; 22 unsigned long *sp = (unsigned long *)current_stack_pointer;
23
24 if (!task)
25 task = current;
26 if (task == current)
27 sp = (unsigned long *)current_stack_pointer;
28 else
29 sp = (unsigned long *)task->thread.sp;
30 23
31 while (!kstack_end(sp)) { 24 while (!kstack_end(sp)) {
32 unsigned long addr = *sp++; 25 unsigned long addr = *sp++;
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
index e18f183e1035..76b1bc7f7029 100644
--- a/arch/sh/kernel/sys_sh.c
+++ b/arch/sh/kernel/sys_sh.c
@@ -12,7 +12,6 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/sem.h> 15#include <linux/sem.h>
17#include <linux/msg.h> 16#include <linux/msg.h>
18#include <linux/shm.h> 17#include <linux/shm.h>
diff --git a/arch/sh/kernel/timers/timer-cmt.c b/arch/sh/kernel/timers/timer-cmt.c
index a574b93a4e7b..82de6895ade5 100644
--- a/arch/sh/kernel/timers/timer-cmt.c
+++ b/arch/sh/kernel/timers/timer-cmt.c
@@ -115,7 +115,7 @@ static irqreturn_t cmt_timer_interrupt(int irq, void *dev_id)
115static struct irqaction cmt_irq = { 115static struct irqaction cmt_irq = {
116 .name = "timer", 116 .name = "timer",
117 .handler = cmt_timer_interrupt, 117 .handler = cmt_timer_interrupt,
118 .flags = IRQF_DISABLED | IRQF_TIMER, 118 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
119 .mask = CPU_MASK_NONE, 119 .mask = CPU_MASK_NONE,
120}; 120};
121 121
diff --git a/arch/sh/kernel/timers/timer-mtu2.c b/arch/sh/kernel/timers/timer-mtu2.c
index fffcd1c09873..b7499a2a9188 100644
--- a/arch/sh/kernel/timers/timer-mtu2.c
+++ b/arch/sh/kernel/timers/timer-mtu2.c
@@ -110,7 +110,7 @@ static irqreturn_t mtu2_timer_interrupt(int irq, void *dev_id)
110static struct irqaction mtu2_irq = { 110static struct irqaction mtu2_irq = {
111 .name = "timer", 111 .name = "timer",
112 .handler = mtu2_timer_interrupt, 112 .handler = mtu2_timer_interrupt,
113 .flags = IRQF_DISABLED | IRQF_TIMER, 113 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
114 .mask = CPU_MASK_NONE, 114 .mask = CPU_MASK_NONE,
115}; 115};
116 116
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index ad1ede52fc9c..d9e3151c891e 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -99,7 +99,7 @@ static irqreturn_t tmu_timer_interrupt(int irq, void *dummy)
99static struct irqaction tmu_irq = { 99static struct irqaction tmu_irq = {
100 .name = "timer", 100 .name = "timer",
101 .handler = tmu_timer_interrupt, 101 .handler = tmu_timer_interrupt,
102 .flags = IRQF_DISABLED | IRQF_TIMER, 102 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
103 .mask = CPU_MASK_NONE, 103 .mask = CPU_MASK_NONE,
104}; 104};
105 105
diff --git a/arch/sh/mm/fault-nommu.c b/arch/sh/mm/fault-nommu.c
index 34d4e0c68fbb..923cb456819b 100644
--- a/arch/sh/mm/fault-nommu.c
+++ b/arch/sh/mm/fault-nommu.c
@@ -19,7 +19,6 @@
19#include <linux/mman.h> 19#include <linux/mman.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/interrupt.h> 22#include <linux/interrupt.h>
24 23
25#include <asm/system.h> 24#include <asm/system.h>
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c
index cf2c2ee35a37..ae8c321d6e2a 100644
--- a/arch/sh/mm/hugetlbpage.c
+++ b/arch/sh/mm/hugetlbpage.c
@@ -13,7 +13,6 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/hugetlb.h> 14#include <linux/hugetlb.h>
15#include <linux/pagemap.h> 15#include <linux/pagemap.h>
16#include <linux/smp_lock.h>
17#include <linux/slab.h> 16#include <linux/slab.h>
18#include <linux/sysctl.h> 17#include <linux/sysctl.h>
19 18
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c
index d0d45e2e0ab3..02aae06527dc 100644
--- a/arch/sh/mm/pmb.c
+++ b/arch/sh/mm/pmb.c
@@ -311,9 +311,9 @@ static int __init pmb_init(void)
311 311
312 BUG_ON(unlikely(nr_entries >= NR_PMB_ENTRIES)); 312 BUG_ON(unlikely(nr_entries >= NR_PMB_ENTRIES));
313 313
314 pmb_cache = kmem_cache_create("pmb", sizeof(struct pmb_entry), 314 pmb_cache = kmem_cache_create("pmb", sizeof(struct pmb_entry), 0,
315 0, 0, pmb_cache_ctor, pmb_cache_dtor); 315 SLAB_PANIC, pmb_cache_ctor,
316 BUG_ON(!pmb_cache); 316 pmb_cache_dtor);
317 317
318 jump_to_P2(); 318 jump_to_P2();
319 319
diff --git a/arch/sh64/kernel/early_printk.c b/arch/sh64/kernel/early_printk.c
index 8c8a76e180aa..4f9131123672 100644
--- a/arch/sh64/kernel/early_printk.c
+++ b/arch/sh64/kernel/early_printk.c
@@ -79,7 +79,7 @@ static struct console sh_console = {
79 .name = "scifcon", 79 .name = "scifcon",
80 .write = sh_console_write, 80 .write = sh_console_write,
81 .setup = sh_console_setup, 81 .setup = sh_console_setup,
82 .flags = CON_PRINTBUFFER, 82 .flags = CON_PRINTBUFFER | CON_BOOT,
83 .index = -1, 83 .index = -1,
84}; 84};
85 85
@@ -97,9 +97,3 @@ void __init enable_early_printk(void)
97 97
98 register_console(&sh_console); 98 register_console(&sh_console);
99} 99}
100
101void disable_early_printk(void)
102{
103 unregister_console(&sh_console);
104}
105
diff --git a/arch/sh64/kernel/irq.c b/arch/sh64/kernel/irq.c
index e7e07f8749c9..f68b4f6c9b31 100644
--- a/arch/sh64/kernel/irq.c
+++ b/arch/sh64/kernel/irq.c
@@ -26,7 +26,6 @@
26#include <linux/slab.h> 26#include <linux/slab.h>
27#include <linux/random.h> 27#include <linux/random.h>
28#include <linux/smp.h> 28#include <linux/smp.h>
29#include <linux/smp_lock.h>
30#include <linux/init.h> 29#include <linux/init.h>
31#include <linux/seq_file.h> 30#include <linux/seq_file.h>
32#include <linux/bitops.h> 31#include <linux/bitops.h>
diff --git a/arch/sh64/kernel/pci_sh5.c b/arch/sh64/kernel/pci_sh5.c
index 9dae689b6a9b..49862e165c06 100644
--- a/arch/sh64/kernel/pci_sh5.c
+++ b/arch/sh64/kernel/pci_sh5.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/rwsem.h> 13#include <linux/rwsem.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <linux/init.h> 16#include <linux/init.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
diff --git a/arch/sh64/kernel/sh_ksyms.c b/arch/sh64/kernel/sh_ksyms.c
index 7aa4b4f7bc5e..461ea3de316f 100644
--- a/arch/sh64/kernel/sh_ksyms.c
+++ b/arch/sh64/kernel/sh_ksyms.c
@@ -17,7 +17,6 @@
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/in6.h> 18#include <linux/in6.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/smp_lock.h>
21#include <linux/screen_info.h> 20#include <linux/screen_info.h>
22 21
23#include <asm/semaphore.h> 22#include <asm/semaphore.h>
diff --git a/arch/sh64/kernel/signal.c b/arch/sh64/kernel/signal.c
index 1666d3efb52e..b76bdfa473d6 100644
--- a/arch/sh64/kernel/signal.c
+++ b/arch/sh64/kernel/signal.c
@@ -16,7 +16,6 @@
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/kernel.h> 19#include <linux/kernel.h>
21#include <linux/signal.h> 20#include <linux/signal.h>
22#include <linux/errno.h> 21#include <linux/errno.h>
diff --git a/arch/sh64/kernel/sys_sh64.c b/arch/sh64/kernel/sys_sh64.c
index ad0fa4e003e7..19126daf9f4c 100644
--- a/arch/sh64/kernel/sys_sh64.c
+++ b/arch/sh64/kernel/sys_sh64.c
@@ -20,7 +20,6 @@
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/smp_lock.h>
24#include <linux/sem.h> 23#include <linux/sem.h>
25#include <linux/msg.h> 24#include <linux/msg.h>
26#include <linux/shm.h> 25#include <linux/shm.h>
diff --git a/arch/sh64/kernel/traps.c b/arch/sh64/kernel/traps.c
index c346d7ef9280..9d0d58fb29fa 100644
--- a/arch/sh64/kernel/traps.c
+++ b/arch/sh64/kernel/traps.c
@@ -23,7 +23,6 @@
23#include <linux/timer.h> 23#include <linux/timer.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/smp.h> 25#include <linux/smp.h>
26#include <linux/smp_lock.h>
27#include <linux/init.h> 26#include <linux/init.h>
28#include <linux/delay.h> 27#include <linux/delay.h>
29#include <linux/spinlock.h> 28#include <linux/spinlock.h>
diff --git a/arch/sh64/kernel/unwind.c b/arch/sh64/kernel/unwind.c
index f934f97f9f9c..1214c78e3584 100644
--- a/arch/sh64/kernel/unwind.c
+++ b/arch/sh64/kernel/unwind.c
@@ -46,15 +46,15 @@ static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc,
46 struct pt_regs *regs) 46 struct pt_regs *regs)
47{ 47{
48 const char *sym; 48 const char *sym;
49 char *modname, namebuf[128]; 49 char namebuf[128];
50 unsigned long offset, size; 50 unsigned long offset;
51 unsigned long prologue = 0; 51 unsigned long prologue = 0;
52 unsigned long fp_displacement = 0; 52 unsigned long fp_displacement = 0;
53 unsigned long fp_prev = 0; 53 unsigned long fp_prev = 0;
54 unsigned long offset_r14 = 0, offset_r18 = 0; 54 unsigned long offset_r14 = 0, offset_r18 = 0;
55 int i, found_prologue_end = 0; 55 int i, found_prologue_end = 0;
56 56
57 sym = kallsyms_lookup(pc, &size, &offset, &modname, namebuf); 57 sym = kallsyms_lookup(pc, NULL, &offset, NULL, namebuf);
58 if (!sym) 58 if (!sym)
59 return -EINVAL; 59 return -EINVAL;
60 60
diff --git a/arch/sh64/mm/fault.c b/arch/sh64/mm/fault.c
index 4f72ab33bb2b..4dd8ee8f01ce 100644
--- a/arch/sh64/mm/fault.c
+++ b/arch/sh64/mm/fault.c
@@ -22,7 +22,6 @@
22#include <linux/mman.h> 22#include <linux/mman.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
25#include <linux/smp_lock.h>
26#include <linux/interrupt.h> 25#include <linux/interrupt.h>
27 26
28#include <asm/system.h> 27#include <asm/system.h>
diff --git a/arch/sh64/mm/hugetlbpage.c b/arch/sh64/mm/hugetlbpage.c
index 4b455f611146..fa66daa2dfa9 100644
--- a/arch/sh64/mm/hugetlbpage.c
+++ b/arch/sh64/mm/hugetlbpage.c
@@ -13,7 +13,6 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/hugetlb.h> 14#include <linux/hugetlb.h>
15#include <linux/pagemap.h> 15#include <linux/pagemap.h>
16#include <linux/smp_lock.h>
17#include <linux/slab.h> 16#include <linux/slab.h>
18#include <linux/sysctl.h> 17#include <linux/sysctl.h>
19 18
diff --git a/arch/sh64/mm/tlbmiss.c b/arch/sh64/mm/tlbmiss.c
index c8615954aaa9..d4c5334186d0 100644
--- a/arch/sh64/mm/tlbmiss.c
+++ b/arch/sh64/mm/tlbmiss.c
@@ -32,7 +32,6 @@
32#include <linux/mman.h> 32#include <linux/mman.h>
33#include <linux/mm.h> 33#include <linux/mm.h>
34#include <linux/smp.h> 34#include <linux/smp.h>
35#include <linux/smp_lock.h>
36#include <linux/interrupt.h> 35#include <linux/interrupt.h>
37 36
38#include <asm/system.h> 37#include <asm/system.h>
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S
index 9a219e8b5ddb..97da13c52563 100644
--- a/arch/sparc/kernel/head.S
+++ b/arch/sparc/kernel/head.S
@@ -19,7 +19,7 @@
19#include <asm/ptrace.h> 19#include <asm/ptrace.h>
20#include <asm/psr.h> 20#include <asm/psr.h>
21#include <asm/page.h> 21#include <asm/page.h>
22#include <asm/kdebug.h> 22#include <linux/kdebug.h>
23#include <asm/winmacro.h> 23#include <asm/winmacro.h>
24#include <asm/thread_info.h> /* TI_UWINMASK */ 24#include <asm/thread_info.h> /* TI_UWINMASK */
25#include <asm/errno.h> 25#include <asm/errno.h>
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index 5b4841d067c1..bdbefa8a9742 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -24,7 +24,6 @@
24#include <linux/random.h> 24#include <linux/random.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/smp.h> 26#include <linux/smp.h>
27#include <linux/smp_lock.h>
28#include <linux/delay.h> 27#include <linux/delay.h>
29#include <linux/threads.h> 28#include <linux/threads.h>
30#include <linux/spinlock.h> 29#include <linux/spinlock.h>
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c
index fc874e63a499..2940d2c1a778 100644
--- a/arch/sparc/kernel/process.c
+++ b/arch/sparc/kernel/process.c
@@ -23,7 +23,6 @@
23#include <linux/user.h> 23#include <linux/user.h>
24#include <linux/a.out.h> 24#include <linux/a.out.h>
25#include <linux/smp.h> 25#include <linux/smp.h>
26#include <linux/smp_lock.h>
27#include <linux/reboot.h> 26#include <linux/reboot.h>
28#include <linux/delay.h> 27#include <linux/delay.h>
29#include <linux/pm.h> 28#include <linux/pm.h>
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c
index eccd8e87f529..64c0ed98820a 100644
--- a/arch/sparc/kernel/setup.c
+++ b/arch/sparc/kernel/setup.c
@@ -31,6 +31,7 @@
31#include <linux/spinlock.h> 31#include <linux/spinlock.h>
32#include <linux/root_dev.h> 32#include <linux/root_dev.h>
33#include <linux/cpu.h> 33#include <linux/cpu.h>
34#include <linux/kdebug.h>
34 35
35#include <asm/system.h> 36#include <asm/system.h>
36#include <asm/io.h> 37#include <asm/io.h>
@@ -40,7 +41,6 @@
40#include <asm/pgtable.h> 41#include <asm/pgtable.h>
41#include <asm/traps.h> 42#include <asm/traps.h>
42#include <asm/vaddrs.h> 43#include <asm/vaddrs.h>
43#include <asm/kdebug.h>
44#include <asm/mbus.h> 44#include <asm/mbus.h>
45#include <asm/idprom.h> 45#include <asm/idprom.h>
46#include <asm/machines.h> 46#include <asm/machines.h>
diff --git a/arch/sparc/kernel/signal.c b/arch/sparc/kernel/signal.c
index c9301b9143ca..9994cac95078 100644
--- a/arch/sparc/kernel/signal.c
+++ b/arch/sparc/kernel/signal.c
@@ -17,7 +17,6 @@
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/tty.h> 18#include <linux/tty.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/binfmts.h> /* do_coredum */ 20#include <linux/binfmts.h> /* do_coredum */
22#include <linux/bitops.h> 21#include <linux/bitops.h>
23 22
diff --git a/arch/sparc/kernel/smp.c b/arch/sparc/kernel/smp.c
index 6b5f26b0fb75..4d9ad59031bb 100644
--- a/arch/sparc/kernel/smp.c
+++ b/arch/sparc/kernel/smp.c
@@ -11,7 +11,6 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/threads.h> 12#include <linux/threads.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/interrupt.h> 14#include <linux/interrupt.h>
16#include <linux/kernel_stat.h> 15#include <linux/kernel_stat.h>
17#include <linux/init.h> 16#include <linux/init.h>
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index 0e27e226e0e2..116d6a241ca2 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -17,7 +17,6 @@
17#include <linux/random.h> 17#include <linux/random.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/spinlock.h> 20#include <linux/spinlock.h>
22#include <linux/seq_file.h> 21#include <linux/seq_file.h>
23 22
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index c69de5d4863d..098c94f1a322 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -12,7 +12,6 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/threads.h> 13#include <linux/threads.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <linux/kernel_stat.h> 16#include <linux/kernel_stat.h>
18#include <linux/init.h> 17#include <linux/init.h>
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 4e07bdbbfb5d..63ed19bfd028 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -9,7 +9,6 @@
9#include <linux/sched.h> 9#include <linux/sched.h>
10#include <linux/threads.h> 10#include <linux/threads.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/smp_lock.h>
13#include <linux/interrupt.h> 12#include <linux/interrupt.h>
14#include <linux/kernel_stat.h> 13#include <linux/kernel_stat.h>
15#include <linux/init.h> 14#include <linux/init.h>
diff --git a/arch/sparc/kernel/sunos_ioctl.c b/arch/sparc/kernel/sunos_ioctl.c
index 32e8274e4357..e613cc6a10ba 100644
--- a/arch/sparc/kernel/sunos_ioctl.c
+++ b/arch/sparc/kernel/sunos_ioctl.c
@@ -21,7 +21,6 @@
21#include <linux/fs.h> 21#include <linux/fs.h>
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/smp.h> 23#include <linux/smp.h>
24#include <linux/smp_lock.h>
25#include <linux/syscalls.h> 24#include <linux/syscalls.h>
26#include <linux/file.h> 25#include <linux/file.h>
27 26
diff --git a/arch/sparc/kernel/sys_solaris.c b/arch/sparc/kernel/sys_solaris.c
index 01b07bb440f0..2226a5992484 100644
--- a/arch/sparc/kernel/sys_solaris.c
+++ b/arch/sparc/kernel/sys_solaris.c
@@ -12,7 +12,6 @@
12#include <linux/ptrace.h> 12#include <linux/ptrace.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/module.h> 15#include <linux/module.h>
17 16
18asmlinkage int 17asmlinkage int
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c
index 527687afc1c4..dc9ffea2a4f7 100644
--- a/arch/sparc/kernel/traps.c
+++ b/arch/sparc/kernel/traps.c
@@ -15,6 +15,7 @@
15#include <linux/signal.h> 15#include <linux/signal.h>
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/smp_lock.h> 17#include <linux/smp_lock.h>
18#include <linux/kdebug.h>
18 19
19#include <asm/delay.h> 20#include <asm/delay.h>
20#include <asm/system.h> 21#include <asm/system.h>
@@ -22,7 +23,6 @@
22#include <asm/oplib.h> 23#include <asm/oplib.h>
23#include <asm/page.h> 24#include <asm/page.h>
24#include <asm/pgtable.h> 25#include <asm/pgtable.h>
25#include <asm/kdebug.h>
26#include <asm/unistd.h> 26#include <asm/unistd.h>
27#include <asm/traps.h> 27#include <asm/traps.h>
28 28
diff --git a/arch/sparc/lib/bitext.c b/arch/sparc/lib/bitext.c
index 2e168d16547f..764b3eb7b604 100644
--- a/arch/sparc/lib/bitext.c
+++ b/arch/sparc/lib/bitext.c
@@ -9,7 +9,6 @@
9 * fragmentation. 9 * fragmentation.
10 */ 10 */
11 11
12#include <linux/smp_lock.h>
13#include <linux/string.h> 12#include <linux/string.h>
14#include <linux/bitops.h> 13#include <linux/bitops.h>
15 14
diff --git a/arch/sparc/mm/fault.c b/arch/sparc/mm/fault.c
index 9eeed3347df3..c3483365db4b 100644
--- a/arch/sparc/mm/fault.c
+++ b/arch/sparc/mm/fault.c
@@ -18,9 +18,9 @@
18#include <linux/signal.h> 18#include <linux/signal.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/interrupt.h> 21#include <linux/interrupt.h>
23#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/kdebug.h>
24 24
25#include <asm/system.h> 25#include <asm/system.h>
26#include <asm/page.h> 26#include <asm/page.h>
@@ -30,7 +30,6 @@
30#include <asm/oplib.h> 30#include <asm/oplib.h>
31#include <asm/smp.h> 31#include <asm/smp.h>
32#include <asm/traps.h> 32#include <asm/traps.h>
33#include <asm/kdebug.h>
34#include <asm/uaccess.h> 33#include <asm/uaccess.h>
35 34
36extern int prom_node_root; 35extern int prom_node_root;
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index 0df7121cef07..e5eaa8072ae0 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -18,13 +18,13 @@
18#include <linux/bootmem.h> 18#include <linux/bootmem.h>
19#include <linux/fs.h> 19#include <linux/fs.h>
20#include <linux/seq_file.h> 20#include <linux/seq_file.h>
21#include <linux/kdebug.h>
21 22
22#include <asm/bitext.h> 23#include <asm/bitext.h>
23#include <asm/page.h> 24#include <asm/page.h>
24#include <asm/pgalloc.h> 25#include <asm/pgalloc.h>
25#include <asm/pgtable.h> 26#include <asm/pgtable.h>
26#include <asm/io.h> 27#include <asm/io.h>
27#include <asm/kdebug.h>
28#include <asm/vaddrs.h> 28#include <asm/vaddrs.h>
29#include <asm/traps.h> 29#include <asm/traps.h>
30#include <asm/smp.h> 30#include <asm/smp.h>
diff --git a/arch/sparc64/kernel/kprobes.c b/arch/sparc64/kernel/kprobes.c
index ae221f0d4a6f..a44fe47a3c2b 100644
--- a/arch/sparc64/kernel/kprobes.c
+++ b/arch/sparc64/kernel/kprobes.c
@@ -6,7 +6,7 @@
6#include <linux/kernel.h> 6#include <linux/kernel.h>
7#include <linux/kprobes.h> 7#include <linux/kprobes.h>
8#include <linux/module.h> 8#include <linux/module.h>
9#include <asm/kdebug.h> 9#include <linux/kdebug.h>
10#include <asm/signal.h> 10#include <asm/signal.h>
11#include <asm/cacheflush.h> 11#include <asm/cacheflush.h>
12#include <asm/uaccess.h> 12#include <asm/uaccess.h>
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index af2c7ff01eeb..966861b212be 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/capability.h> 15#include <linux/capability.h>
16#include <linux/errno.h> 16#include <linux/errno.h>
17#include <linux/smp_lock.h>
18#include <linux/msi.h> 17#include <linux/msi.h>
19#include <linux/irq.h> 18#include <linux/irq.h>
20#include <linux/init.h> 19#include <linux/init.h>
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index a114151f9fbe..8e3c6e435110 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -19,7 +19,6 @@
19#include <linux/kallsyms.h> 19#include <linux/kallsyms.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/stddef.h> 22#include <linux/stddef.h>
24#include <linux/ptrace.h> 23#include <linux/ptrace.h>
25#include <linux/slab.h> 24#include <linux/slab.h>
diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c
index 96d56a8410ad..203e87301005 100644
--- a/arch/sparc64/kernel/signal.c
+++ b/arch/sparc64/kernel/signal.c
@@ -20,7 +20,6 @@
20#include <linux/unistd.h> 20#include <linux/unistd.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/tty.h> 22#include <linux/tty.h>
23#include <linux/smp_lock.h>
24#include <linux/binfmts.h> 23#include <linux/binfmts.h>
25#include <linux/bitops.h> 24#include <linux/bitops.h>
26 25
diff --git a/arch/sparc64/kernel/signal32.c b/arch/sparc64/kernel/signal32.c
index c45f21b881d5..8c1c121330fb 100644
--- a/arch/sparc64/kernel/signal32.c
+++ b/arch/sparc64/kernel/signal32.c
@@ -17,7 +17,6 @@
17#include <linux/unistd.h> 17#include <linux/unistd.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/tty.h> 19#include <linux/tty.h>
20#include <linux/smp_lock.h>
21#include <linux/binfmts.h> 20#include <linux/binfmts.h>
22#include <linux/compat.h> 21#include <linux/compat.h>
23#include <linux/bitops.h> 22#include <linux/bitops.h>
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 1fac215252e4..8087d67a0cf8 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -10,7 +10,6 @@
10#include <linux/pagemap.h> 10#include <linux/pagemap.h>
11#include <linux/threads.h> 11#include <linux/threads.h>
12#include <linux/smp.h> 12#include <linux/smp.h>
13#include <linux/smp_lock.h>
14#include <linux/interrupt.h> 13#include <linux/interrupt.h>
15#include <linux/kernel_stat.h> 14#include <linux/kernel_stat.h>
16#include <linux/delay.h> 15#include <linux/delay.h>
diff --git a/arch/sparc64/kernel/stacktrace.c b/arch/sparc64/kernel/stacktrace.c
index c4d15f2762b9..47f92a59be18 100644
--- a/arch/sparc64/kernel/stacktrace.c
+++ b/arch/sparc64/kernel/stacktrace.c
@@ -3,22 +3,16 @@
3#include <linux/thread_info.h> 3#include <linux/thread_info.h>
4#include <asm/ptrace.h> 4#include <asm/ptrace.h>
5 5
6void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 6void save_stack_trace(struct stack_trace *trace)
7{ 7{
8 unsigned long ksp, fp, thread_base; 8 unsigned long ksp, fp, thread_base;
9 struct thread_info *tp; 9 struct thread_info *tp = task_thread_info(current);
10 10
11 if (!task) 11 flushw_all();
12 task = current; 12 __asm__ __volatile__(
13 tp = task_thread_info(task); 13 "mov %%fp, %0"
14 if (task == current) { 14 : "=r" (ksp)
15 flushw_all(); 15 );
16 __asm__ __volatile__(
17 "mov %%fp, %0"
18 : "=r" (ksp)
19 );
20 } else
21 ksp = tp->ksp;
22 16
23 fp = ksp + STACK_BIAS; 17 fp = ksp + STACK_BIAS;
24 thread_base = (unsigned long) tp; 18 thread_base = (unsigned long) tp;
diff --git a/arch/sparc64/kernel/sunos_ioctl32.c b/arch/sparc64/kernel/sunos_ioctl32.c
index a05e43d51755..75d2bad49839 100644
--- a/arch/sparc64/kernel/sunos_ioctl32.c
+++ b/arch/sparc64/kernel/sunos_ioctl32.c
@@ -22,7 +22,6 @@
22#include <linux/file.h> 22#include <linux/file.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
25#include <linux/smp_lock.h>
26#include <linux/syscalls.h> 25#include <linux/syscalls.h>
27#include <linux/compat.h> 26#include <linux/compat.h>
28 27
diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
index a53d4abb4b49..d108eeb0734f 100644
--- a/arch/sparc64/kernel/sys_sparc.c
+++ b/arch/sparc64/kernel/sys_sparc.c
@@ -19,7 +19,6 @@
19#include <linux/mman.h> 19#include <linux/mman.h>
20#include <linux/utsname.h> 20#include <linux/utsname.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/slab.h> 22#include <linux/slab.h>
24#include <linux/syscalls.h> 23#include <linux/syscalls.h>
25#include <linux/ipc.h> 24#include <linux/ipc.h>
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c
index 7876a0226285..692e46a6b8da 100644
--- a/arch/sparc64/kernel/sys_sparc32.c
+++ b/arch/sparc64/kernel/sys_sparc32.c
@@ -775,15 +775,25 @@ asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv,
775asmlinkage long sys32_utimes(char __user *filename, 775asmlinkage long sys32_utimes(char __user *filename,
776 struct compat_timeval __user *tvs) 776 struct compat_timeval __user *tvs)
777{ 777{
778 struct timeval ktvs[2]; 778 struct timespec tv[2];
779 779
780 if (tvs) { 780 if (tvs) {
781 struct timeval ktvs[2];
781 if (get_tv32(&ktvs[0], tvs) || 782 if (get_tv32(&ktvs[0], tvs) ||
782 get_tv32(&ktvs[1], 1+tvs)) 783 get_tv32(&ktvs[1], 1+tvs))
783 return -EFAULT; 784 return -EFAULT;
785
786 if (ktvs[0].tv_usec < 0 || ktvs[0].tv_usec >= 1000000 ||
787 ktvs[1].tv_usec < 0 || ktvs[1].tv_usec >= 1000000)
788 return -EINVAL;
789
790 tv[0].tv_sec = ktvs[0].tv_sec;
791 tv[0].tv_nsec = 1000 * ktvs[0].tv_usec;
792 tv[1].tv_sec = ktvs[1].tv_sec;
793 tv[1].tv_nsec = 1000 * ktvs[1].tv_usec;
784 } 794 }
785 795
786 return do_utimes(AT_FDCWD, filename, (tvs ? &ktvs[0] : NULL)); 796 return do_utimes(AT_FDCWD, filename, tvs ? tv : NULL);
787} 797}
788 798
789/* These are here just in case some old sparc32 binary calls it. */ 799/* These are here just in case some old sparc32 binary calls it. */
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c
index ad67784292db..dc652f210290 100644
--- a/arch/sparc64/kernel/traps.c
+++ b/arch/sparc64/kernel/traps.c
@@ -15,9 +15,9 @@
15#include <linux/kallsyms.h> 15#include <linux/kallsyms.h>
16#include <linux/signal.h> 16#include <linux/signal.h>
17#include <linux/smp.h> 17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/mm.h> 18#include <linux/mm.h>
20#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/kdebug.h>
21 21
22#include <asm/delay.h> 22#include <asm/delay.h>
23#include <asm/system.h> 23#include <asm/system.h>
@@ -36,26 +36,12 @@
36#include <asm/psrcompat.h> 36#include <asm/psrcompat.h>
37#include <asm/processor.h> 37#include <asm/processor.h>
38#include <asm/timer.h> 38#include <asm/timer.h>
39#include <asm/kdebug.h>
40#include <asm/head.h> 39#include <asm/head.h>
41#ifdef CONFIG_KMOD 40#ifdef CONFIG_KMOD
42#include <linux/kmod.h> 41#include <linux/kmod.h>
43#endif 42#endif
44#include <asm/prom.h> 43#include <asm/prom.h>
45 44
46ATOMIC_NOTIFIER_HEAD(sparc64die_chain);
47
48int register_die_notifier(struct notifier_block *nb)
49{
50 return atomic_notifier_chain_register(&sparc64die_chain, nb);
51}
52EXPORT_SYMBOL(register_die_notifier);
53
54int unregister_die_notifier(struct notifier_block *nb)
55{
56 return atomic_notifier_chain_unregister(&sparc64die_chain, nb);
57}
58EXPORT_SYMBOL(unregister_die_notifier);
59 45
60/* When an irrecoverable trap occurs at tl > 0, the trap entry 46/* When an irrecoverable trap occurs at tl > 0, the trap entry
61 * code logs the trap state registers at every level in the trap 47 * code logs the trap state registers at every level in the trap
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c
index bc18d480dd1c..953be816fa25 100644
--- a/arch/sparc64/kernel/unaligned.c
+++ b/arch/sparc64/kernel/unaligned.c
@@ -18,7 +18,6 @@
18#include <asm/system.h> 18#include <asm/system.h>
19#include <asm/uaccess.h> 19#include <asm/uaccess.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/bitops.h> 21#include <linux/bitops.h>
23#include <linux/kallsyms.h> 22#include <linux/kallsyms.h>
24#include <asm/fpumacro.h> 23#include <asm/fpumacro.h>
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c
index 55ae802dc0ad..c32e309f7788 100644
--- a/arch/sparc64/mm/fault.c
+++ b/arch/sparc64/mm/fault.c
@@ -15,11 +15,11 @@
15#include <linux/signal.h> 15#include <linux/signal.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/smp_lock.h>
19#include <linux/init.h> 18#include <linux/init.h>
20#include <linux/interrupt.h> 19#include <linux/interrupt.h>
21#include <linux/kprobes.h> 20#include <linux/kprobes.h>
22#include <linux/kallsyms.h> 21#include <linux/kallsyms.h>
22#include <linux/kdebug.h>
23 23
24#include <asm/page.h> 24#include <asm/page.h>
25#include <asm/pgtable.h> 25#include <asm/pgtable.h>
@@ -29,7 +29,6 @@
29#include <asm/asi.h> 29#include <asm/asi.h>
30#include <asm/lsu.h> 30#include <asm/lsu.h>
31#include <asm/sections.h> 31#include <asm/sections.h>
32#include <asm/kdebug.h>
33#include <asm/mmu_context.h> 32#include <asm/mmu_context.h>
34 33
35#ifdef CONFIG_KPROBES 34#ifdef CONFIG_KPROBES
diff --git a/arch/sparc64/mm/hugetlbpage.c b/arch/sparc64/mm/hugetlbpage.c
index e224a94e6a1b..eaba9b70b184 100644
--- a/arch/sparc64/mm/hugetlbpage.c
+++ b/arch/sparc64/mm/hugetlbpage.c
@@ -10,7 +10,6 @@
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/hugetlb.h> 11#include <linux/hugetlb.h>
12#include <linux/pagemap.h> 12#include <linux/pagemap.h>
13#include <linux/smp_lock.h>
14#include <linux/slab.h> 13#include <linux/slab.h>
15#include <linux/sysctl.h> 14#include <linux/sysctl.h>
16 15
diff --git a/arch/sparc64/solaris/ipc.c b/arch/sparc64/solaris/ipc.c
index 8cef5fd57b2e..a531a2cdb381 100644
--- a/arch/sparc64/solaris/ipc.c
+++ b/arch/sparc64/solaris/ipc.c
@@ -6,7 +6,6 @@
6 6
7#include <linux/kernel.h> 7#include <linux/kernel.h>
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/smp_lock.h>
10#include <linux/wait.h> 9#include <linux/wait.h>
11#include <linux/mm.h> 10#include <linux/mm.h>
12#include <linux/shm.h> 11#include <linux/shm.h>
diff --git a/arch/sparc64/solaris/misc.c b/arch/sparc64/solaris/misc.c
index 542c808ec2c8..3b67de7455f1 100644
--- a/arch/sparc64/solaris/misc.c
+++ b/arch/sparc64/solaris/misc.c
@@ -6,7 +6,6 @@
6 6
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/smp_lock.h>
10#include <linux/utsname.h> 9#include <linux/utsname.h>
11#include <linux/limits.h> 10#include <linux/limits.h>
12#include <linux/mm.h> 11#include <linux/mm.h>
diff --git a/arch/sparc64/solaris/signal.c b/arch/sparc64/solaris/signal.c
index 7fa2634e2085..de10c9716cfb 100644
--- a/arch/sparc64/solaris/signal.c
+++ b/arch/sparc64/solaris/signal.c
@@ -5,7 +5,6 @@
5 */ 5 */
6 6
7#include <linux/types.h> 7#include <linux/types.h>
8#include <linux/smp_lock.h>
9#include <linux/errno.h> 8#include <linux/errno.h>
10 9
11#include <asm/uaccess.h> 10#include <asm/uaccess.h>
diff --git a/arch/sparc64/solaris/socket.c b/arch/sparc64/solaris/socket.c
index d3a66ea74a7f..cc69847cf240 100644
--- a/arch/sparc64/solaris/socket.c
+++ b/arch/sparc64/solaris/socket.c
@@ -8,7 +8,6 @@
8 */ 8 */
9 9
10#include <linux/types.h> 10#include <linux/types.h>
11#include <linux/smp_lock.h>
12#include <linux/mm.h> 11#include <linux/mm.h>
13#include <linux/slab.h> 12#include <linux/slab.h>
14#include <linux/socket.h> 13#include <linux/socket.h>
diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c
index c2864447de82..e94f6e5d9455 100644
--- a/arch/sparc64/solaris/socksys.c
+++ b/arch/sparc64/solaris/socksys.c
@@ -17,7 +17,6 @@
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/ioctl.h> 20#include <linux/ioctl.h>
22#include <linux/fs.h> 21#include <linux/fs.h>
23#include <linux/file.h> 22#include <linux/file.h>
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index baac4ad5e68e..72773dd54425 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -316,12 +316,14 @@ static void setup_etheraddr(char *str, unsigned char *addr, char *name)
316 } 316 }
317 if (!is_local_ether_addr(addr)) { 317 if (!is_local_ether_addr(addr)) {
318 printk(KERN_WARNING 318 printk(KERN_WARNING
319 "Warning: attempt to assign a globally valid ethernet address to a " 319 "Warning: attempt to assign a globally valid ethernet "
320 "device\n"); 320 "address to a device\n");
321 printk(KERN_WARNING "You should better enable the 2nd rightmost bit " 321 printk(KERN_WARNING "You should better enable the 2nd "
322 "in the first byte of the MAC, i.e. " 322 "rightmost bit in the first byte of the MAC,\n");
323 "%02x:%02x:%02x:%02x:%02x:%02x\n", 323 printk(KERN_WARNING "i.e. %02x:%02x:%02x:%02x:%02x:%02x\n",
324 addr[0] | 0x02, addr[1], addr[2], addr[3], addr[4], addr[5]); 324 addr[0] | 0x02, addr[1], addr[2], addr[3], addr[4],
325 addr[5]);
326 goto random;
325 } 327 }
326 return; 328 return;
327 329
@@ -478,6 +480,7 @@ out_undo_user_init:
478 (*transport->user->remove)(&lp->user); 480 (*transport->user->remove)(&lp->user);
479out_unregister: 481out_unregister:
480 platform_device_unregister(&device->pdev); 482 platform_device_unregister(&device->pdev);
483 return; /* platform_device_unregister frees dev and device */
481out_free_netdev: 484out_free_netdev:
482 free_netdev(dev); 485 free_netdev(dev);
483out_free_device: 486out_free_device:
diff --git a/arch/um/drivers/pcap_kern.c b/arch/um/drivers/pcap_kern.c
index 948849343ca4..c329931673d6 100644
--- a/arch/um/drivers/pcap_kern.c
+++ b/arch/um/drivers/pcap_kern.c
@@ -29,21 +29,25 @@ void pcap_init(struct net_device *dev, void *data)
29 ppri->promisc = init->promisc; 29 ppri->promisc = init->promisc;
30 ppri->optimize = init->optimize; 30 ppri->optimize = init->optimize;
31 ppri->filter = init->filter; 31 ppri->filter = init->filter;
32
33 printk("pcap backend, host interface %s\n", ppri->host_if);
32} 34}
33 35
34static int pcap_read(int fd, struct sk_buff **skb, 36static int pcap_read(int fd, struct sk_buff **skb,
35 struct uml_net_private *lp) 37 struct uml_net_private *lp)
36{ 38{
37 *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); 39 *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
38 if(*skb == NULL) return(-ENOMEM); 40 if(*skb == NULL)
39 return(pcap_user_read(fd, skb_mac_header(*skb), 41 return -ENOMEM;
42
43 return pcap_user_read(fd, skb_mac_header(*skb),
40 (*skb)->dev->mtu + ETH_HEADER_OTHER, 44 (*skb)->dev->mtu + ETH_HEADER_OTHER,
41 (struct pcap_data *) &lp->user)); 45 (struct pcap_data *) &lp->user);
42} 46}
43 47
44static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp) 48static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
45{ 49{
46 return(-EPERM); 50 return -EPERM;
47} 51}
48 52
49static const struct net_kern_info pcap_kern_info = { 53static const struct net_kern_info pcap_kern_info = {
@@ -65,12 +69,12 @@ int pcap_setup(char *str, char **mac_out, void *data)
65 .optimize = 0, 69 .optimize = 0,
66 .filter = NULL }); 70 .filter = NULL });
67 71
68 remain = split_if_spec(str, &host_if, &init->filter, 72 remain = split_if_spec(str, &host_if, &init->filter,
69 &options[0], &options[1], NULL); 73 &options[0], &options[1], mac_out, NULL);
70 if(remain != NULL){ 74 if(remain != NULL){
71 printk(KERN_ERR "pcap_setup - Extra garbage on " 75 printk(KERN_ERR "pcap_setup - Extra garbage on "
72 "specification : '%s'\n", remain); 76 "specification : '%s'\n", remain);
73 return(0); 77 return 0;
74 } 78 }
75 79
76 if(host_if != NULL) 80 if(host_if != NULL)
@@ -87,10 +91,13 @@ int pcap_setup(char *str, char **mac_out, void *data)
87 init->optimize = 1; 91 init->optimize = 1;
88 else if(!strcmp(options[i], "nooptimize")) 92 else if(!strcmp(options[i], "nooptimize"))
89 init->optimize = 0; 93 init->optimize = 0;
90 else printk("pcap_setup : bad option - '%s'\n", options[i]); 94 else {
95 printk("pcap_setup : bad option - '%s'\n", options[i]);
96 return 0;
97 }
91 } 98 }
92 99
93 return(1); 100 return 1;
94} 101}
95 102
96static struct transport pcap_transport = { 103static struct transport pcap_transport = {
diff --git a/arch/um/drivers/pcap_user.c b/arch/um/drivers/pcap_user.c
index dc0a903ef9a6..483aa15222a4 100644
--- a/arch/um/drivers/pcap_user.c
+++ b/arch/um/drivers/pcap_user.c
@@ -13,6 +13,7 @@
13#include "pcap_user.h" 13#include "pcap_user.h"
14#include "user.h" 14#include "user.h"
15#include "um_malloc.h" 15#include "um_malloc.h"
16#include "kern_constants.h"
16 17
17#define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER) 18#define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER)
18 19
@@ -26,8 +27,8 @@ static int pcap_user_init(void *data, void *dev)
26 27
27 p = pcap_open_live(pri->host_if, MAX_PACKET, pri->promisc, 0, errors); 28 p = pcap_open_live(pri->host_if, MAX_PACKET, pri->promisc, 0, errors);
28 if(p == NULL){ 29 if(p == NULL){
29 printk("pcap_user_init : pcap_open_live failed - '%s'\n", 30 printk(UM_KERN_ERR "pcap_user_init : pcap_open_live failed - "
30 errors); 31 "'%s'\n", errors);
31 return -EINVAL; 32 return -EINVAL;
32 } 33 }
33 34
@@ -48,13 +49,13 @@ static int pcap_open(void *data)
48 if(pri->filter != NULL){ 49 if(pri->filter != NULL){
49 err = dev_netmask(pri->dev, &netmask); 50 err = dev_netmask(pri->dev, &netmask);
50 if(err < 0){ 51 if(err < 0){
51 printk("pcap_open : dev_netmask failed\n"); 52 printk(UM_KERN_ERR "pcap_open : dev_netmask failed\n");
52 return -EIO; 53 return -EIO;
53 } 54 }
54 55
55 pri->compiled = um_kmalloc(sizeof(struct bpf_program)); 56 pri->compiled = um_kmalloc(sizeof(struct bpf_program));
56 if(pri->compiled == NULL){ 57 if(pri->compiled == NULL){
57 printk("pcap_open : kmalloc failed\n"); 58 printk(UM_KERN_ERR "pcap_open : kmalloc failed\n");
58 return -ENOMEM; 59 return -ENOMEM;
59 } 60 }
60 61
@@ -62,15 +63,15 @@ static int pcap_open(void *data)
62 (struct bpf_program *) pri->compiled, 63 (struct bpf_program *) pri->compiled,
63 pri->filter, pri->optimize, netmask); 64 pri->filter, pri->optimize, netmask);
64 if(err < 0){ 65 if(err < 0){
65 printk("pcap_open : pcap_compile failed - '%s'\n", 66 printk(UM_KERN_ERR "pcap_open : pcap_compile failed - "
66 pcap_geterr(pri->pcap)); 67 "'%s'\n", pcap_geterr(pri->pcap));
67 return -EIO; 68 return -EIO;
68 } 69 }
69 70
70 err = pcap_setfilter(pri->pcap, pri->compiled); 71 err = pcap_setfilter(pri->pcap, pri->compiled);
71 if(err < 0){ 72 if(err < 0){
72 printk("pcap_open : pcap_setfilter failed - '%s'\n", 73 printk(UM_KERN_ERR "pcap_open : pcap_setfilter "
73 pcap_geterr(pri->pcap)); 74 "failed - '%s'\n", pcap_geterr(pri->pcap));
74 return -EIO; 75 return -EIO;
75 } 76 }
76 } 77 }
@@ -85,7 +86,8 @@ static void pcap_remove(void *data)
85 if(pri->compiled != NULL) 86 if(pri->compiled != NULL)
86 pcap_freecode(pri->compiled); 87 pcap_freecode(pri->compiled);
87 88
88 pcap_close(pri->pcap); 89 if(pri->pcap != NULL)
90 pcap_close(pri->pcap);
89} 91}
90 92
91struct pcap_handler_data { 93struct pcap_handler_data {
@@ -114,7 +116,8 @@ int pcap_user_read(int fd, void *buffer, int len, struct pcap_data *pri)
114 116
115 n = pcap_dispatch(pri->pcap, 1, handler, (u_char *) &hdata); 117 n = pcap_dispatch(pri->pcap, 1, handler, (u_char *) &hdata);
116 if(n < 0){ 118 if(n < 0){
117 printk("pcap_dispatch failed - %s\n", pcap_geterr(pri->pcap)); 119 printk(UM_KERN_ERR "pcap_dispatch failed - %s\n",
120 pcap_geterr(pri->pcap));
118 return -EIO; 121 return -EIO;
119 } 122 }
120 else if(n == 0) 123 else if(n == 0)
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index cd7349de8ca6..259c49da7ff5 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -177,6 +177,8 @@ int do_settimeofday(struct timespec *tv)
177 177
178void timer_handler(int sig, union uml_pt_regs *regs) 178void timer_handler(int sig, union uml_pt_regs *regs)
179{ 179{
180 if(current_thread->cpu == 0)
181 timer_irq(regs);
180 local_irq_disable(); 182 local_irq_disable();
181 irq_enter(); 183 irq_enter();
182 update_process_times(CHOOSE_MODE( 184 update_process_times(CHOOSE_MODE(
@@ -184,6 +186,4 @@ void timer_handler(int sig, union uml_pt_regs *regs)
184 (regs)->skas.is_user)); 186 (regs)->skas.is_user));
185 irq_exit(); 187 irq_exit();
186 local_irq_enable(); 188 local_irq_enable();
187 if(current_thread->cpu == 0)
188 timer_irq(regs);
189} 189}
diff --git a/arch/v850/kernel/process.c b/arch/v850/kernel/process.c
index c4f844c86e50..e4a4b8e7d5a3 100644
--- a/arch/v850/kernel/process.c
+++ b/arch/v850/kernel/process.c
@@ -16,7 +16,6 @@
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/smp_lock.h>
20#include <linux/stddef.h> 19#include <linux/stddef.h>
21#include <linux/unistd.h> 20#include <linux/unistd.h>
22#include <linux/ptrace.h> 21#include <linux/ptrace.h>
diff --git a/arch/v850/kernel/ptrace.c b/arch/v850/kernel/ptrace.c
index 67e057509664..a9b09343097d 100644
--- a/arch/v850/kernel/ptrace.c
+++ b/arch/v850/kernel/ptrace.c
@@ -21,7 +21,6 @@
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/sched.h> 23#include <linux/sched.h>
24#include <linux/smp_lock.h>
25#include <linux/ptrace.h> 24#include <linux/ptrace.h>
26#include <linux/signal.h> 25#include <linux/signal.h>
27 26
diff --git a/arch/v850/kernel/signal.c b/arch/v850/kernel/signal.c
index 17c2d4359b04..bf166e7e762c 100644
--- a/arch/v850/kernel/signal.c
+++ b/arch/v850/kernel/signal.c
@@ -17,7 +17,6 @@
17 17
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/kernel.h> 20#include <linux/kernel.h>
22#include <linux/signal.h> 21#include <linux/signal.h>
23#include <linux/errno.h> 22#include <linux/errno.h>
diff --git a/arch/v850/kernel/syscalls.c b/arch/v850/kernel/syscalls.c
index d2b1fb19d243..f9f00ccf5324 100644
--- a/arch/v850/kernel/syscalls.c
+++ b/arch/v850/kernel/syscalls.c
@@ -18,7 +18,6 @@
18#include <linux/errno.h> 18#include <linux/errno.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/smp_lock.h>
22#include <linux/syscalls.h> 21#include <linux/syscalls.h>
23#include <linux/sem.h> 22#include <linux/sem.h>
24#include <linux/msg.h> 23#include <linux/msg.h>
diff --git a/arch/x86_64/ia32/ia32_signal.c b/arch/x86_64/ia32/ia32_signal.c
index 359eacc38509..6ea19c25f90d 100644
--- a/arch/x86_64/ia32/ia32_signal.c
+++ b/arch/x86_64/ia32/ia32_signal.c
@@ -11,7 +11,6 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/kernel.h> 14#include <linux/kernel.h>
16#include <linux/signal.h> 15#include <linux/signal.h>
17#include <linux/errno.h> 16#include <linux/errno.h>
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
index c48087db6f75..f21068378272 100644
--- a/arch/x86_64/ia32/ia32entry.S
+++ b/arch/x86_64/ia32/ia32entry.S
@@ -710,9 +710,10 @@ ia32_sys_call_table:
710 .quad compat_sys_get_robust_list 710 .quad compat_sys_get_robust_list
711 .quad sys_splice 711 .quad sys_splice
712 .quad sys_sync_file_range 712 .quad sys_sync_file_range
713 .quad sys_tee 713 .quad sys_tee /* 315 */
714 .quad compat_sys_vmsplice 714 .quad compat_sys_vmsplice
715 .quad compat_sys_move_pages 715 .quad compat_sys_move_pages
716 .quad sys_getcpu 716 .quad sys_getcpu
717 .quad sys_epoll_pwait 717 .quad sys_epoll_pwait
718 .quad compat_sys_utimensat /* 320 */
718ia32_syscall_end: 719ia32_syscall_end:
diff --git a/arch/x86_64/kernel/Makefile b/arch/x86_64/kernel/Makefile
index 4d94c51803d8..de1de8a2fd84 100644
--- a/arch/x86_64/kernel/Makefile
+++ b/arch/x86_64/kernel/Makefile
@@ -32,6 +32,7 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
32obj-$(CONFIG_IOMMU) += pci-gart.o aperture.o 32obj-$(CONFIG_IOMMU) += pci-gart.o aperture.o
33obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary.o tce.o 33obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary.o tce.o
34obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o 34obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
35obj-$(CONFIG_SERIAL_8250) += legacy_serial.o
35obj-$(CONFIG_KPROBES) += kprobes.o 36obj-$(CONFIG_KPROBES) += kprobes.o
36obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o 37obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o
37obj-$(CONFIG_X86_VSMP) += vsmp.o 38obj-$(CONFIG_X86_VSMP) += vsmp.o
@@ -49,6 +50,7 @@ CFLAGS_vsyscall.o := $(PROFILING) -g0
49 50
50therm_throt-y += ../../i386/kernel/cpu/mcheck/therm_throt.o 51therm_throt-y += ../../i386/kernel/cpu/mcheck/therm_throt.o
51bootflag-y += ../../i386/kernel/bootflag.o 52bootflag-y += ../../i386/kernel/bootflag.o
53legacy_serial-y += ../../i386/kernel/legacy_serial.o
52cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o 54cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o
53topology-y += ../../i386/kernel/topology.o 55topology-y += ../../i386/kernel/topology.o
54microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o 56microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index d198f7d82e5a..1b0e07bb8728 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -19,7 +19,6 @@
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/bootmem.h> 21#include <linux/bootmem.h>
22#include <linux/smp_lock.h>
23#include <linux/interrupt.h> 22#include <linux/interrupt.h>
24#include <linux/mc146818rtc.h> 23#include <linux/mc146818rtc.h>
25#include <linux/kernel_stat.h> 24#include <linux/kernel_stat.h>
diff --git a/arch/x86_64/kernel/crash.c b/arch/x86_64/kernel/crash.c
index 95a7a2c13131..13432a1ae904 100644
--- a/arch/x86_64/kernel/crash.c
+++ b/arch/x86_64/kernel/crash.c
@@ -17,13 +17,13 @@
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/elf.h> 18#include <linux/elf.h>
19#include <linux/elfcore.h> 19#include <linux/elfcore.h>
20#include <linux/kdebug.h>
20 21
21#include <asm/processor.h> 22#include <asm/processor.h>
22#include <asm/hardirq.h> 23#include <asm/hardirq.h>
23#include <asm/nmi.h> 24#include <asm/nmi.h>
24#include <asm/hw_irq.h> 25#include <asm/hw_irq.h>
25#include <asm/mach_apic.h> 26#include <asm/mach_apic.h>
26#include <asm/kdebug.h>
27 27
28/* This keeps a track of which one is crashing cpu. */ 28/* This keeps a track of which one is crashing cpu. */
29static int crashing_cpu; 29static int crashing_cpu;
diff --git a/arch/x86_64/kernel/early_printk.c b/arch/x86_64/kernel/early_printk.c
index 92213d2b7c11..56eaa259782b 100644
--- a/arch/x86_64/kernel/early_printk.c
+++ b/arch/x86_64/kernel/early_printk.c
@@ -243,22 +243,12 @@ static int __init setup_early_printk(char *buf)
243 early_console = &simnow_console; 243 early_console = &simnow_console;
244 keep_early = 1; 244 keep_early = 1;
245 } 245 }
246
247 if (keep_early)
248 early_console->flags &= ~CON_BOOT;
249 else
250 early_console->flags |= CON_BOOT;
246 register_console(early_console); 251 register_console(early_console);
247 return 0; 252 return 0;
248} 253}
249
250early_param("earlyprintk", setup_early_printk); 254early_param("earlyprintk", setup_early_printk);
251
252void __init disable_early_printk(void)
253{
254 if (!early_console_initialized || !early_console)
255 return;
256 if (!keep_early) {
257 printk("disabling early console\n");
258 unregister_console(early_console);
259 early_console_initialized = 0;
260 } else {
261 printk("keeping early console\n");
262 }
263}
264
diff --git a/arch/x86_64/kernel/i8259.c b/arch/x86_64/kernel/i8259.c
index 489426682772..4b326655b208 100644
--- a/arch/x86_64/kernel/i8259.c
+++ b/arch/x86_64/kernel/i8259.c
@@ -7,7 +7,6 @@
7#include <linux/timex.h> 7#include <linux/timex.h>
8#include <linux/slab.h> 8#include <linux/slab.h>
9#include <linux/random.h> 9#include <linux/random.h>
10#include <linux/smp_lock.h>
11#include <linux/init.h> 10#include <linux/init.h>
12#include <linux/kernel_stat.h> 11#include <linux/kernel_stat.h>
13#include <linux/sysdev.h> 12#include <linux/sysdev.h>
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index 2a2df14dab7e..4d582589fa89 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -25,7 +25,6 @@
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/delay.h> 26#include <linux/delay.h>
27#include <linux/sched.h> 27#include <linux/sched.h>
28#include <linux/smp_lock.h>
29#include <linux/pci.h> 28#include <linux/pci.h>
30#include <linux/mc146818rtc.h> 29#include <linux/mc146818rtc.h>
31#include <linux/acpi.h> 30#include <linux/acpi.h>
diff --git a/arch/x86_64/kernel/ioport.c b/arch/x86_64/kernel/ioport.c
index 387d347b0e07..653efa30b0f4 100644
--- a/arch/x86_64/kernel/ioport.c
+++ b/arch/x86_64/kernel/ioport.c
@@ -12,7 +12,6 @@
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/ioport.h> 13#include <linux/ioport.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/stddef.h> 15#include <linux/stddef.h>
17#include <linux/slab.h> 16#include <linux/slab.h>
18#include <linux/thread_info.h> 17#include <linux/thread_info.h>
diff --git a/arch/x86_64/kernel/kprobes.c b/arch/x86_64/kernel/kprobes.c
index 209c8c0bec71..d4a0d0ac9935 100644
--- a/arch/x86_64/kernel/kprobes.c
+++ b/arch/x86_64/kernel/kprobes.c
@@ -37,10 +37,10 @@
37#include <linux/slab.h> 37#include <linux/slab.h>
38#include <linux/preempt.h> 38#include <linux/preempt.h>
39#include <linux/module.h> 39#include <linux/module.h>
40#include <linux/kdebug.h>
40 41
41#include <asm/cacheflush.h> 42#include <asm/cacheflush.h>
42#include <asm/pgtable.h> 43#include <asm/pgtable.h>
43#include <asm/kdebug.h>
44#include <asm/uaccess.h> 44#include <asm/uaccess.h>
45 45
46void jprobe_return_end(void); 46void jprobe_return_end(void);
@@ -266,23 +266,14 @@ static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
266} 266}
267 267
268/* Called with kretprobe_lock held */ 268/* Called with kretprobe_lock held */
269void __kprobes arch_prepare_kretprobe(struct kretprobe *rp, 269void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
270 struct pt_regs *regs) 270 struct pt_regs *regs)
271{ 271{
272 unsigned long *sara = (unsigned long *)regs->rsp; 272 unsigned long *sara = (unsigned long *)regs->rsp;
273 struct kretprobe_instance *ri;
274 273
275 if ((ri = get_free_rp_inst(rp)) != NULL) { 274 ri->ret_addr = (kprobe_opcode_t *) *sara;
276 ri->rp = rp; 275 /* Replace the return addr with trampoline addr */
277 ri->task = current; 276 *sara = (unsigned long) &kretprobe_trampoline;
278 ri->ret_addr = (kprobe_opcode_t *) *sara;
279
280 /* Replace the return addr with trampoline addr */
281 *sara = (unsigned long) &kretprobe_trampoline;
282 add_rp_inst(ri);
283 } else {
284 rp->nmissed++;
285 }
286} 277}
287 278
288int __kprobes kprobe_handler(struct pt_regs *regs) 279int __kprobes kprobe_handler(struct pt_regs *regs)
@@ -447,7 +438,7 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
447 break; 438 break;
448 } 439 }
449 440
450 BUG_ON(!orig_ret_address || (orig_ret_address == trampoline_address)); 441 kretprobe_assert(ri, orig_ret_address, trampoline_address);
451 regs->rip = orig_ret_address; 442 regs->rip = orig_ret_address;
452 443
453 reset_current_kprobe(); 444 reset_current_kprobe();
@@ -752,3 +743,11 @@ int __init arch_init_kprobes(void)
752{ 743{
753 return register_kprobe(&trampoline_p); 744 return register_kprobe(&trampoline_p);
754} 745}
746
747int __kprobes arch_trampoline_kprobe(struct kprobe *p)
748{
749 if (p->addr == (kprobe_opcode_t *)&kretprobe_trampoline)
750 return 1;
751
752 return 0;
753}
diff --git a/arch/x86_64/kernel/ldt.c b/arch/x86_64/kernel/ldt.c
index d7e5d0cf4285..bc9ffd5c19cc 100644
--- a/arch/x86_64/kernel/ldt.c
+++ b/arch/x86_64/kernel/ldt.c
@@ -13,7 +13,6 @@
13#include <linux/string.h> 13#include <linux/string.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/smp.h> 15#include <linux/smp.h>
16#include <linux/smp_lock.h>
17#include <linux/vmalloc.h> 16#include <linux/vmalloc.h>
18#include <linux/slab.h> 17#include <linux/slab.h>
19 18
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index fa2672682477..442169640e45 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -20,10 +20,10 @@
20#include <linux/percpu.h> 20#include <linux/percpu.h>
21#include <linux/ctype.h> 21#include <linux/ctype.h>
22#include <linux/kmod.h> 22#include <linux/kmod.h>
23#include <linux/kdebug.h>
23#include <asm/processor.h> 24#include <asm/processor.h>
24#include <asm/msr.h> 25#include <asm/msr.h>
25#include <asm/mce.h> 26#include <asm/mce.h>
26#include <asm/kdebug.h>
27#include <asm/uaccess.h> 27#include <asm/uaccess.h>
28#include <asm/smp.h> 28#include <asm/smp.h>
29 29
diff --git a/arch/x86_64/kernel/mpparse.c b/arch/x86_64/kernel/mpparse.c
index d0dc4891599b..61ae57eb9e4c 100644
--- a/arch/x86_64/kernel/mpparse.c
+++ b/arch/x86_64/kernel/mpparse.c
@@ -17,7 +17,6 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/bootmem.h> 19#include <linux/bootmem.h>
20#include <linux/smp_lock.h>
21#include <linux/kernel_stat.h> 20#include <linux/kernel_stat.h>
22#include <linux/mc146818rtc.h> 21#include <linux/mc146818rtc.h>
23#include <linux/acpi.h> 22#include <linux/acpi.h>
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 6cd2b30e2ffc..931c64bad5e6 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -21,11 +21,11 @@
21#include <linux/sysctl.h> 21#include <linux/sysctl.h>
22#include <linux/kprobes.h> 22#include <linux/kprobes.h>
23#include <linux/cpumask.h> 23#include <linux/cpumask.h>
24#include <linux/kdebug.h>
24 25
25#include <asm/smp.h> 26#include <asm/smp.h>
26#include <asm/nmi.h> 27#include <asm/nmi.h>
27#include <asm/proto.h> 28#include <asm/proto.h>
28#include <asm/kdebug.h>
29#include <asm/mce.h> 29#include <asm/mce.h>
30 30
31int unknown_nmi_panic; 31int unknown_nmi_panic;
diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c
index 0a762e10f2be..373ef66ca1dc 100644
--- a/arch/x86_64/kernel/pci-gart.c
+++ b/arch/x86_64/kernel/pci-gart.c
@@ -22,13 +22,13 @@
22#include <linux/topology.h> 22#include <linux/topology.h>
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24#include <linux/bitops.h> 24#include <linux/bitops.h>
25#include <linux/kdebug.h>
25#include <asm/atomic.h> 26#include <asm/atomic.h>
26#include <asm/io.h> 27#include <asm/io.h>
27#include <asm/mtrr.h> 28#include <asm/mtrr.h>
28#include <asm/pgtable.h> 29#include <asm/pgtable.h>
29#include <asm/proto.h> 30#include <asm/proto.h>
30#include <asm/cacheflush.h> 31#include <asm/cacheflush.h>
31#include <asm/kdebug.h>
32#include <asm/swiotlb.h> 32#include <asm/swiotlb.h>
33#include <asm/dma.h> 33#include <asm/dma.h>
34#include <asm/k8.h> 34#include <asm/k8.h>
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c
index 4f21765078b7..5909039f37aa 100644
--- a/arch/x86_64/kernel/process.c
+++ b/arch/x86_64/kernel/process.c
@@ -36,6 +36,7 @@
36#include <linux/random.h> 36#include <linux/random.h>
37#include <linux/notifier.h> 37#include <linux/notifier.h>
38#include <linux/kprobes.h> 38#include <linux/kprobes.h>
39#include <linux/kdebug.h>
39 40
40#include <asm/uaccess.h> 41#include <asm/uaccess.h>
41#include <asm/pgtable.h> 42#include <asm/pgtable.h>
@@ -46,7 +47,6 @@
46#include <asm/mmu_context.h> 47#include <asm/mmu_context.h>
47#include <asm/pda.h> 48#include <asm/pda.h>
48#include <asm/prctl.h> 49#include <asm/prctl.h>
49#include <asm/kdebug.h>
50#include <asm/desc.h> 50#include <asm/desc.h>
51#include <asm/proto.h> 51#include <asm/proto.h>
52#include <asm/ia32.h> 52#include <asm/ia32.h>
diff --git a/arch/x86_64/kernel/ptrace.c b/arch/x86_64/kernel/ptrace.c
index 4326a690a509..9409117b9f19 100644
--- a/arch/x86_64/kernel/ptrace.c
+++ b/arch/x86_64/kernel/ptrace.c
@@ -11,7 +11,6 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/smp_lock.h>
15#include <linux/errno.h> 14#include <linux/errno.h>
16#include <linux/ptrace.h> 15#include <linux/ptrace.h>
17#include <linux/user.h> 16#include <linux/user.h>
diff --git a/arch/x86_64/kernel/reboot.c b/arch/x86_64/kernel/reboot.c
index 2d6769847456..c116b54d422e 100644
--- a/arch/x86_64/kernel/reboot.c
+++ b/arch/x86_64/kernel/reboot.c
@@ -7,8 +7,8 @@
7#include <linux/ctype.h> 7#include <linux/ctype.h>
8#include <linux/string.h> 8#include <linux/string.h>
9#include <linux/pm.h> 9#include <linux/pm.h>
10#include <linux/kdebug.h>
10#include <asm/io.h> 11#include <asm/io.h>
11#include <asm/kdebug.h>
12#include <asm/delay.h> 12#include <asm/delay.h>
13#include <asm/hw_irq.h> 13#include <asm/hw_irq.h>
14#include <asm/system.h> 14#include <asm/system.h>
diff --git a/arch/x86_64/kernel/signal.c b/arch/x86_64/kernel/signal.c
index c819625f3316..290f5d8037cd 100644
--- a/arch/x86_64/kernel/signal.c
+++ b/arch/x86_64/kernel/signal.c
@@ -12,7 +12,6 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/smp.h> 14#include <linux/smp.h>
15#include <linux/smp_lock.h>
16#include <linux/kernel.h> 15#include <linux/kernel.h>
17#include <linux/signal.h> 16#include <linux/signal.h>
18#include <linux/errno.h> 17#include <linux/errno.h>
diff --git a/arch/x86_64/kernel/smp.c b/arch/x86_64/kernel/smp.c
index bd1d123947ce..2ff468591625 100644
--- a/arch/x86_64/kernel/smp.c
+++ b/arch/x86_64/kernel/smp.c
@@ -14,7 +14,6 @@
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/delay.h> 15#include <linux/delay.h>
16#include <linux/spinlock.h> 16#include <linux/spinlock.h>
17#include <linux/smp_lock.h>
18#include <linux/smp.h> 17#include <linux/smp.h>
19#include <linux/kernel_stat.h> 18#include <linux/kernel_stat.h>
20#include <linux/mc146818rtc.h> 19#include <linux/mc146818rtc.h>
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c
index 4d9dacfae575..32f50783edc8 100644
--- a/arch/x86_64/kernel/smpboot.c
+++ b/arch/x86_64/kernel/smpboot.c
@@ -42,18 +42,17 @@
42 42
43#include <linux/mm.h> 43#include <linux/mm.h>
44#include <linux/kernel_stat.h> 44#include <linux/kernel_stat.h>
45#include <linux/smp_lock.h>
46#include <linux/bootmem.h> 45#include <linux/bootmem.h>
47#include <linux/thread_info.h> 46#include <linux/thread_info.h>
48#include <linux/module.h> 47#include <linux/module.h>
49#include <linux/delay.h> 48#include <linux/delay.h>
50#include <linux/mc146818rtc.h> 49#include <linux/mc146818rtc.h>
51#include <linux/smp.h> 50#include <linux/smp.h>
51#include <linux/kdebug.h>
52 52
53#include <asm/mtrr.h> 53#include <asm/mtrr.h>
54#include <asm/pgalloc.h> 54#include <asm/pgalloc.h>
55#include <asm/desc.h> 55#include <asm/desc.h>
56#include <asm/kdebug.h>
57#include <asm/tlbflush.h> 56#include <asm/tlbflush.h>
58#include <asm/proto.h> 57#include <asm/proto.h>
59#include <asm/nmi.h> 58#include <asm/nmi.h>
diff --git a/arch/x86_64/kernel/stacktrace.c b/arch/x86_64/kernel/stacktrace.c
index 65ac2c6b34a6..cb9109113584 100644
--- a/arch/x86_64/kernel/stacktrace.c
+++ b/arch/x86_64/kernel/stacktrace.c
@@ -21,8 +21,7 @@ save_stack_warning_symbol(void *data, char *msg, unsigned long symbol)
21 21
22static int save_stack_stack(void *data, char *name) 22static int save_stack_stack(void *data, char *name)
23{ 23{
24 struct stack_trace *trace = (struct stack_trace *)data; 24 return -1;
25 return trace->all_contexts ? 0 : -1;
26} 25}
27 26
28static void save_stack_address(void *data, unsigned long addr) 27static void save_stack_address(void *data, unsigned long addr)
@@ -46,11 +45,10 @@ static struct stacktrace_ops save_stack_ops = {
46/* 45/*
47 * Save stack-backtrace addresses into a stack_trace buffer. 46 * Save stack-backtrace addresses into a stack_trace buffer.
48 */ 47 */
49void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 48void save_stack_trace(struct stack_trace *trace)
50{ 49{
51 dump_trace(task, NULL, NULL, &save_stack_ops, trace); 50 dump_trace(current, NULL, NULL, &save_stack_ops, trace);
52 if (trace->nr_entries < trace->max_entries) 51 if (trace->nr_entries < trace->max_entries)
53 trace->entries[trace->nr_entries++] = ULONG_MAX; 52 trace->entries[trace->nr_entries++] = ULONG_MAX;
54} 53}
55EXPORT_SYMBOL(save_stack_trace); 54EXPORT_SYMBOL(save_stack_trace);
56
diff --git a/arch/x86_64/kernel/sys_x86_64.c b/arch/x86_64/kernel/sys_x86_64.c
index f891931eb753..d067d9a2ad27 100644
--- a/arch/x86_64/kernel/sys_x86_64.c
+++ b/arch/x86_64/kernel/sys_x86_64.c
@@ -7,7 +7,6 @@
7#include <linux/syscalls.h> 7#include <linux/syscalls.h>
8#include <linux/mm.h> 8#include <linux/mm.h>
9#include <linux/smp.h> 9#include <linux/smp.h>
10#include <linux/smp_lock.h>
11#include <linux/sem.h> 10#include <linux/sem.h>
12#include <linux/msg.h> 11#include <linux/msg.h>
13#include <linux/shm.h> 12#include <linux/shm.h>
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 0652e173813b..4a0895bacf51 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -363,7 +363,10 @@ void stop_timer_interrupt(void)
363} 363}
364 364
365static struct irqaction irq0 = { 365static struct irqaction irq0 = {
366 timer_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "timer", NULL, NULL 366 .handler = timer_interrupt,
367 .flags = IRQF_DISABLED | IRQF_IRQPOLL,
368 .mask = CPU_MASK_NONE,
369 .name = "timer"
367}; 370};
368 371
369void __init time_init(void) 372void __init time_init(void)
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
index d76fc32d4599..8c2ac41187c1 100644
--- a/arch/x86_64/kernel/traps.c
+++ b/arch/x86_64/kernel/traps.c
@@ -32,6 +32,7 @@
32#include <linux/unwind.h> 32#include <linux/unwind.h>
33#include <linux/uaccess.h> 33#include <linux/uaccess.h>
34#include <linux/bug.h> 34#include <linux/bug.h>
35#include <linux/kdebug.h>
35 36
36#include <asm/system.h> 37#include <asm/system.h>
37#include <asm/io.h> 38#include <asm/io.h>
@@ -39,7 +40,6 @@
39#include <asm/debugreg.h> 40#include <asm/debugreg.h>
40#include <asm/desc.h> 41#include <asm/desc.h>
41#include <asm/i387.h> 42#include <asm/i387.h>
42#include <asm/kdebug.h>
43#include <asm/processor.h> 43#include <asm/processor.h>
44#include <asm/unwind.h> 44#include <asm/unwind.h>
45#include <asm/smp.h> 45#include <asm/smp.h>
@@ -71,22 +71,6 @@ asmlinkage void alignment_check(void);
71asmlinkage void machine_check(void); 71asmlinkage void machine_check(void);
72asmlinkage void spurious_interrupt_bug(void); 72asmlinkage void spurious_interrupt_bug(void);
73 73
74ATOMIC_NOTIFIER_HEAD(die_chain);
75EXPORT_SYMBOL(die_chain);
76
77int register_die_notifier(struct notifier_block *nb)
78{
79 vmalloc_sync_all();
80 return atomic_notifier_chain_register(&die_chain, nb);
81}
82EXPORT_SYMBOL(register_die_notifier); /* used modular by kdb */
83
84int unregister_die_notifier(struct notifier_block *nb)
85{
86 return atomic_notifier_chain_unregister(&die_chain, nb);
87}
88EXPORT_SYMBOL(unregister_die_notifier); /* used modular by kdb */
89
90static inline void conditional_sti(struct pt_regs *regs) 74static inline void conditional_sti(struct pt_regs *regs)
91{ 75{
92 if (regs->eflags & X86_EFLAGS_IF) 76 if (regs->eflags & X86_EFLAGS_IF)
@@ -792,6 +776,8 @@ asmlinkage __kprobes void default_do_nmi(struct pt_regs *regs)
792 */ 776 */
793 if (nmi_watchdog_tick(regs,reason)) 777 if (nmi_watchdog_tick(regs,reason))
794 return; 778 return;
779 if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0)
780 == NOTIFY_STOP)
795 if (!do_nmi_callback(regs,cpu)) 781 if (!do_nmi_callback(regs,cpu))
796 unknown_nmi_error(reason, regs); 782 unknown_nmi_error(reason, regs);
797 783
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c
index de99dba2c515..bfb62a13d7ee 100644
--- a/arch/x86_64/mm/fault.c
+++ b/arch/x86_64/mm/fault.c
@@ -15,22 +15,22 @@
15#include <linux/mman.h> 15#include <linux/mman.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/smp.h> 17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/interrupt.h> 18#include <linux/interrupt.h>
20#include <linux/init.h> 19#include <linux/init.h>
21#include <linux/tty.h> 20#include <linux/tty.h>
22#include <linux/vt_kern.h> /* For unblank_screen() */ 21#include <linux/vt_kern.h> /* For unblank_screen() */
23#include <linux/compiler.h> 22#include <linux/compiler.h>
23#include <linux/vmalloc.h>
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/kprobes.h> 25#include <linux/kprobes.h>
26#include <linux/uaccess.h> 26#include <linux/uaccess.h>
27#include <linux/kdebug.h>
27 28
28#include <asm/system.h> 29#include <asm/system.h>
29#include <asm/pgalloc.h> 30#include <asm/pgalloc.h>
30#include <asm/smp.h> 31#include <asm/smp.h>
31#include <asm/tlbflush.h> 32#include <asm/tlbflush.h>
32#include <asm/proto.h> 33#include <asm/proto.h>
33#include <asm/kdebug.h>
34#include <asm-generic/sections.h> 34#include <asm-generic/sections.h>
35 35
36/* Page fault error code bits */ 36/* Page fault error code bits */
diff --git a/arch/x86_64/mm/init.c b/arch/x86_64/mm/init.c
index c0822683b916..1336da8bdee1 100644
--- a/arch/x86_64/mm/init.c
+++ b/arch/x86_64/mm/init.c
@@ -172,7 +172,7 @@ __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
172 set_pte_phys(address, phys, prot); 172 set_pte_phys(address, phys, prot);
173} 173}
174 174
175unsigned long __initdata table_start, table_end; 175unsigned long __meminitdata table_start, table_end;
176 176
177static __meminit void *alloc_low_page(unsigned long *phys) 177static __meminit void *alloc_low_page(unsigned long *phys)
178{ 178{
@@ -204,7 +204,7 @@ static __meminit void unmap_low_page(void *adr)
204} 204}
205 205
206/* Must run before zap_low_mappings */ 206/* Must run before zap_low_mappings */
207__init void *early_ioremap(unsigned long addr, unsigned long size) 207__meminit void *early_ioremap(unsigned long addr, unsigned long size)
208{ 208{
209 unsigned long vaddr; 209 unsigned long vaddr;
210 pmd_t *pmd, *last_pmd; 210 pmd_t *pmd, *last_pmd;
@@ -233,7 +233,7 @@ __init void *early_ioremap(unsigned long addr, unsigned long size)
233} 233}
234 234
235/* To avoid virtual aliases later */ 235/* To avoid virtual aliases later */
236__init void early_iounmap(void *addr, unsigned long size) 236__meminit void early_iounmap(void *addr, unsigned long size)
237{ 237{
238 unsigned long vaddr; 238 unsigned long vaddr;
239 pmd_t *pmd; 239 pmd_t *pmd;
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index 795bd5ac6f4c..ce758bab95b1 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -20,7 +20,6 @@
20#include <linux/kernel.h> 20#include <linux/kernel.h>
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/smp_lock.h>
24#include <linux/stddef.h> 23#include <linux/stddef.h>
25#include <linux/unistd.h> 24#include <linux/unistd.h>
26#include <linux/ptrace.h> 25#include <linux/ptrace.h>
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c
index 8b6d3d0623b6..14104ff63093 100644
--- a/arch/xtensa/kernel/ptrace.c
+++ b/arch/xtensa/kernel/ptrace.c
@@ -19,7 +19,6 @@
19#include <linux/errno.h> 19#include <linux/errno.h>
20#include <linux/ptrace.h> 20#include <linux/ptrace.h>
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/smp_lock.h>
23#include <linux/security.h> 22#include <linux/security.h>
24#include <linux/signal.h> 23#include <linux/signal.h>
25 24
diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c
index c6d9880a4cdb..58107672a619 100644
--- a/arch/xtensa/kernel/signal.c
+++ b/arch/xtensa/kernel/signal.c
@@ -17,7 +17,6 @@
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/smp_lock.h>
21#include <linux/kernel.h> 20#include <linux/kernel.h>
22#include <linux/signal.h> 21#include <linux/signal.h>
23#include <linux/errno.h> 22#include <linux/errno.h>