From ee56b460409bc39dbf78af591c1162224e0236d3 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Wed, 11 Jan 2006 15:22:04 +1100 Subject: [PATCH] --- yaml --- r: 18141 b: refs/heads/master c: f60d36690ce11a6a41b89e63b4201fbba3aa0bfb h: refs/heads/master i: 18139: 8c764d81d6dccce7226e1c48e6ffb82b4b0c84f5 v: v3 --- [refs] | 2 +- trunk/Documentation/cpusets.txt | 4 +- trunk/Documentation/filesystems/ext3.txt | 4 +- trunk/Documentation/kdump/gdbmacros.txt | 22 - trunk/Documentation/kernel-parameters.txt | 43 - trunk/Documentation/laptop-mode.txt | 6 +- trunk/Documentation/oops-tracing.txt | 8 +- trunk/Documentation/video4linux/CARDLIST.bttv | 1 - trunk/Documentation/video4linux/CARDLIST.cx88 | 2 +- trunk/Documentation/x86_64/boot-options.txt | 2 +- trunk/Documentation/x86_64/cpu-hotplug-spec | 21 - trunk/MAINTAINERS | 9 +- trunk/arch/alpha/kernel/pci-noop.c | 1 - trunk/arch/alpha/kernel/process.c | 29 +- trunk/arch/alpha/kernel/ptrace.c | 47 +- trunk/arch/alpha/kernel/smp.c | 2 +- trunk/arch/arm/common/rtctime.c | 1 - trunk/arch/arm/kernel/apm.c | 1 - trunk/arch/arm/kernel/process.c | 13 +- trunk/arch/arm/kernel/ptrace.c | 37 +- trunk/arch/arm/kernel/smp.c | 4 +- trunk/arch/arm/kernel/traps.c | 4 +- trunk/arch/arm26/kernel/process.c | 5 +- trunk/arch/arm26/kernel/ptrace.c | 29 +- trunk/arch/arm26/kernel/traps.c | 8 +- trunk/arch/cris/arch-v10/drivers/ds1302.c | 1 - trunk/arch/cris/arch-v10/drivers/pcf8563.c | 1 - trunk/arch/cris/arch-v10/kernel/process.c | 4 +- trunk/arch/cris/arch-v10/kernel/ptrace.c | 4 +- trunk/arch/cris/arch-v32/kernel/process.c | 6 +- trunk/arch/cris/arch-v32/kernel/ptrace.c | 6 +- trunk/arch/cris/arch-v32/kernel/smp.c | 4 +- trunk/arch/cris/arch-v32/mm/tlb.c | 4 +- trunk/arch/frv/kernel/process.c | 4 +- trunk/arch/h8300/kernel/process.c | 2 +- trunk/arch/i386/Kconfig | 13 - trunk/arch/i386/boot/Makefile | 2 +- trunk/arch/i386/kernel/acpi/boot.c | 2 +- trunk/arch/i386/kernel/apic.c | 129 +- trunk/arch/i386/kernel/apm.c | 1 - trunk/arch/i386/kernel/cpu/amd.c | 7 - trunk/arch/i386/kernel/cpu/common.c | 17 +- .../i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 5 +- .../kernel/cpu/cpufreq/speedstep-centrino.c | 5 +- .../kernel/cpu/cpufreq/speedstep-est-common.h | 25 + trunk/arch/i386/kernel/cpu/intel.c | 5 +- trunk/arch/i386/kernel/cpu/mtrr/if.c | 1 - trunk/arch/i386/kernel/cpu/proc.c | 27 +- trunk/arch/i386/kernel/dmi_scan.c | 16 +- trunk/arch/i386/kernel/io_apic.c | 2 +- trunk/arch/i386/kernel/ioport.c | 1 - trunk/arch/i386/kernel/kprobes.c | 13 - trunk/arch/i386/kernel/microcode.c | 5 +- trunk/arch/i386/kernel/process.c | 26 +- trunk/arch/i386/kernel/reboot.c | 7 +- trunk/arch/i386/kernel/setup.c | 4 +- trunk/arch/i386/kernel/smpboot.c | 4 +- trunk/arch/i386/kernel/time.c | 6 - trunk/arch/i386/kernel/vm86.c | 3 +- trunk/arch/i386/mm/pageattr.c | 2 +- trunk/arch/ia64/hp/sim/simserial.c | 1 - trunk/arch/ia64/ia32/elfcore32.h | 3 +- trunk/arch/ia64/ia32/ia32_signal.c | 4 +- trunk/arch/ia64/ia32/ia32_support.c | 4 +- trunk/arch/ia64/ia32/sys_ia32.c | 13 +- trunk/arch/ia64/kernel/kprobes.c | 7 - trunk/arch/ia64/kernel/mca.c | 4 +- trunk/arch/ia64/kernel/perfmon.c | 33 +- trunk/arch/ia64/kernel/process.c | 12 +- trunk/arch/ia64/kernel/ptrace.c | 24 +- trunk/arch/ia64/kernel/salinfo.c | 1 - trunk/arch/ia64/kernel/setup.c | 18 +- trunk/arch/ia64/kernel/signal.c | 10 +- trunk/arch/ia64/kernel/sys_ia64.c | 2 +- trunk/arch/ia64/sn/kernel/tiocx.c | 1 - trunk/arch/m32r/kernel/process.c | 5 +- trunk/arch/m32r/kernel/ptrace.c | 25 +- trunk/arch/m32r/kernel/smpboot.c | 2 +- trunk/arch/m68k/amiga/amiints.c | 46 +- trunk/arch/m68k/amiga/amisound.c | 2 - trunk/arch/m68k/amiga/cia.c | 8 +- trunk/arch/m68k/amiga/config.c | 27 +- trunk/arch/m68k/apollo/config.c | 3 + trunk/arch/m68k/atari/config.c | 9 + trunk/arch/m68k/bvme6000/rtc.c | 7 +- trunk/arch/m68k/hp300/config.c | 3 + trunk/arch/m68k/kernel/asm-offsets.c | 2 +- trunk/arch/m68k/kernel/head.S | 2 - trunk/arch/m68k/kernel/process.c | 7 +- trunk/arch/m68k/kernel/setup.c | 19 +- trunk/arch/m68k/kernel/signal.c | 62 +- trunk/arch/m68k/kernel/sys_m68k.c | 40 +- trunk/arch/m68k/kernel/traps.c | 38 +- trunk/arch/m68k/kernel/vmlinux-std.lds | 1 - trunk/arch/m68k/kernel/vmlinux-sun3.lds | 3 +- trunk/arch/m68k/lib/checksum.c | 2 +- trunk/arch/m68k/mac/config.c | 3 + trunk/arch/m68k/mac/iop.c | 4 +- trunk/arch/m68k/mac/misc.c | 326 +- trunk/arch/m68k/math-emu/multi_arith.h | 2 +- trunk/arch/m68k/mm/kmap.c | 12 +- trunk/arch/m68k/mvme16x/rtc.c | 7 +- trunk/arch/m68k/q40/config.c | 5 + trunk/arch/m68k/sun3/config.c | 3 + trunk/arch/m68k/sun3x/config.c | 4 + trunk/arch/m68knommu/kernel/process.c | 5 +- trunk/arch/mips/kernel/process.c | 10 +- trunk/arch/mips/kernel/ptrace.c | 14 +- trunk/arch/mips/kernel/ptrace32.c | 10 +- trunk/arch/mips/kernel/smp_mt.c | 7 +- trunk/arch/mips/kernel/syscall.c | 3 +- trunk/arch/mips/kernel/sysirix.c | 1 - trunk/arch/mips/kernel/traps.c | 2 +- trunk/arch/mips/pmc-sierra/yosemite/smp.c | 4 +- trunk/arch/mips/sgi-ip27/ip27-smp.c | 4 +- trunk/arch/mips/sibyte/cfe/smp.c | 2 +- trunk/arch/parisc/hpux/sys_hpux.c | 1 - trunk/arch/parisc/kernel/cache.c | 20 +- trunk/arch/parisc/kernel/drivers.c | 13 +- trunk/arch/parisc/kernel/firmware.c | 2 +- trunk/arch/parisc/kernel/hardware.c | 1 - trunk/arch/parisc/kernel/inventory.c | 6 +- trunk/arch/parisc/kernel/pci-dma.c | 6 +- trunk/arch/parisc/kernel/pdc_chassis.c | 13 +- trunk/arch/parisc/kernel/perf.c | 7 +- trunk/arch/parisc/kernel/process.c | 8 +- trunk/arch/parisc/kernel/processor.c | 8 +- trunk/arch/parisc/kernel/setup.c | 10 +- trunk/arch/parisc/kernel/smp.c | 18 +- trunk/arch/parisc/kernel/time.c | 4 +- trunk/arch/parisc/kernel/topology.c | 3 +- trunk/arch/parisc/kernel/unaligned.c | 2 +- trunk/arch/parisc/kernel/unwind.c | 2 +- trunk/arch/parisc/kernel/vmlinux.lds.S | 15 +- trunk/arch/parisc/mm/init.c | 29 +- trunk/arch/parisc/mm/ioremap.c | 100 +- trunk/arch/powerpc/Kconfig | 83 +- trunk/arch/powerpc/Kconfig.debug | 42 - trunk/arch/powerpc/boot/.gitignore | 20 - trunk/arch/powerpc/boot/Makefile | 2 +- trunk/arch/powerpc/configs/ppc64_defconfig | 2 +- trunk/arch/powerpc/kernel/Makefile | 4 +- trunk/arch/powerpc/kernel/crash.c | 2 +- trunk/arch/powerpc/kernel/crash_dump.c | 2 - trunk/arch/powerpc/kernel/kprobes.c | 12 - trunk/arch/powerpc/kernel/machine_kexec.c | 6 + trunk/arch/powerpc/kernel/pci_64.c | 3 - trunk/arch/powerpc/kernel/process.c | 14 +- trunk/arch/powerpc/kernel/ptrace-common.h | 4 +- trunk/arch/powerpc/kernel/rtas.c | 13 +- trunk/arch/powerpc/kernel/setup_64.c | 60 +- trunk/arch/powerpc/kernel/smp.c | 6 +- trunk/arch/powerpc/kernel/udbg.c | 25 - trunk/arch/powerpc/kernel/udbg_16550.c | 2 +- trunk/arch/powerpc/kernel/vdso32/.gitignore | 1 - trunk/arch/powerpc/kernel/vdso64/.gitignore | 1 - trunk/arch/powerpc/platforms/83xx/Kconfig | 26 - trunk/arch/powerpc/platforms/83xx/Makefile | 4 - trunk/arch/powerpc/platforms/Makefile | 1 - trunk/arch/powerpc/platforms/cell/smp.c | 2 +- .../powerpc/platforms/cell/spufs/switch.c | 34 +- .../powerpc/platforms/embedded6xx/Kconfig | 18 + trunk/arch/powerpc/platforms/iseries/setup.c | 37 +- .../powerpc/platforms/powermac/udbg_scc.c | 2 +- trunk/arch/powerpc/platforms/pseries/smp.c | 2 +- trunk/arch/powerpc/sysdev/Makefile | 2 +- trunk/arch/ppc/4xx_io/serial_sicc.c | 1 - trunk/arch/ppc/Kconfig | 4 - trunk/arch/ppc/amiga/amiints.c | 40 +- trunk/arch/ppc/amiga/cia.c | 8 +- trunk/arch/ppc/amiga/config.c | 24 +- trunk/arch/ppc/kernel/ppc_htab.c | 1 - trunk/arch/ppc/kernel/process.c | 10 +- trunk/arch/ppc/kernel/smp.c | 4 +- trunk/arch/ppc/platforms/apus_setup.c | 30 +- trunk/arch/ppc/xmon/xmon.c | 2 +- trunk/arch/s390/kernel/binfmt_elf32.c | 2 +- trunk/arch/s390/kernel/compat_linux.c | 1 - trunk/arch/s390/kernel/process.c | 12 +- trunk/arch/s390/kernel/ptrace.c | 26 +- trunk/arch/s390/kernel/smp.c | 2 +- trunk/arch/s390/kernel/time.c | 2 +- trunk/arch/s390/kernel/traps.c | 6 +- trunk/arch/sh/kernel/process.c | 46 +- trunk/arch/sh/kernel/ptrace.c | 14 +- trunk/arch/sh/kernel/smp.c | 2 +- trunk/arch/sh64/kernel/process.c | 4 +- trunk/arch/sh64/lib/dbg.c | 2 +- trunk/arch/sparc/kernel/process.c | 12 +- trunk/arch/sparc/kernel/ptrace.c | 4 +- trunk/arch/sparc/kernel/sun4d_smp.c | 2 +- trunk/arch/sparc/kernel/sun4m_smp.c | 2 +- trunk/arch/sparc/kernel/sys_sunos.c | 1 - trunk/arch/sparc/kernel/traps.c | 4 +- trunk/arch/sparc64/Kconfig | 2 +- trunk/arch/sparc64/kernel/kprobes.c | 8 - trunk/arch/sparc64/kernel/process.c | 10 +- trunk/arch/sparc64/kernel/ptrace.c | 46 +- trunk/arch/sparc64/kernel/setup.c | 2 +- trunk/arch/sparc64/kernel/smp.c | 2 +- trunk/arch/sparc64/kernel/sys_sparc32.c | 1 - trunk/arch/sparc64/kernel/sys_sunos32.c | 1 - trunk/arch/sparc64/kernel/traps.c | 4 +- trunk/arch/sparc64/solaris/fs.c | 1 - trunk/arch/um/Kconfig | 8 +- trunk/arch/um/Makefile | 23 +- trunk/arch/um/drivers/mconsole_kern.c | 2 +- trunk/arch/um/drivers/ubd_kern.c | 1 + trunk/arch/um/kernel/asm-offsets.c | 2 +- trunk/arch/um/kernel/process_kern.c | 2 +- trunk/arch/um/kernel/skas/process.c | 4 +- trunk/arch/um/kernel/skas/process_kern.c | 4 +- trunk/arch/um/kernel/tt/exec_kern.c | 2 +- trunk/arch/um/kernel/tt/process_kern.c | 8 +- trunk/arch/um/kernel/um_arch.c | 4 + .../kernel-offsets.c} | 5 +- .../kernel-offsets.c} | 2 +- trunk/arch/v850/kernel/process.c | 2 +- trunk/arch/v850/kernel/ptrace.c | 2 +- trunk/arch/x86_64/Kconfig | 40 +- trunk/arch/x86_64/Makefile | 7 +- trunk/arch/x86_64/defconfig | 116 +- trunk/arch/x86_64/ia32/ia32_binfmt.c | 7 +- trunk/arch/x86_64/ia32/ia32_signal.c | 26 +- trunk/arch/x86_64/ia32/ia32entry.S | 38 +- trunk/arch/x86_64/ia32/ptrace32.c | 15 +- trunk/arch/x86_64/ia32/vsyscall-sigreturn.S | 1 - trunk/arch/x86_64/ia32/vsyscall-syscall.S | 1 - trunk/arch/x86_64/ia32/vsyscall-sysenter.S | 1 - trunk/arch/x86_64/kernel/Makefile | 8 +- trunk/arch/x86_64/kernel/aperture.c | 3 +- trunk/arch/x86_64/kernel/apic.c | 193 +- trunk/arch/x86_64/kernel/asm-offsets.c | 5 - trunk/arch/x86_64/kernel/early_printk.c | 4 +- trunk/arch/x86_64/kernel/entry.S | 44 +- trunk/arch/x86_64/kernel/genapic_cluster.c | 5 +- trunk/arch/x86_64/kernel/genapic_flat.c | 10 +- trunk/arch/x86_64/kernel/head.S | 14 +- trunk/arch/x86_64/kernel/head64.c | 5 +- trunk/arch/x86_64/kernel/i387.c | 2 +- trunk/arch/x86_64/kernel/i8259.c | 5 +- trunk/arch/x86_64/kernel/io_apic.c | 167 +- trunk/arch/x86_64/kernel/ioport.c | 1 - trunk/arch/x86_64/kernel/irq.c | 6 +- trunk/arch/x86_64/kernel/kprobes.c | 9 - trunk/arch/x86_64/kernel/mce.c | 35 +- trunk/arch/x86_64/kernel/mce_amd.c | 6 +- trunk/arch/x86_64/kernel/mce_intel.c | 6 +- trunk/arch/x86_64/kernel/nmi.c | 8 +- trunk/arch/x86_64/kernel/pci-dma.c | 286 +- trunk/arch/x86_64/kernel/pci-gart.c | 413 ++- trunk/arch/x86_64/kernel/pci-nommu.c | 145 +- trunk/arch/x86_64/kernel/pci-swiotlb.c | 42 - trunk/arch/x86_64/kernel/process.c | 82 +- trunk/arch/x86_64/kernel/ptrace.c | 19 +- trunk/arch/x86_64/kernel/reboot.c | 10 +- trunk/arch/x86_64/kernel/setup.c | 74 +- trunk/arch/x86_64/kernel/setup64.c | 46 +- trunk/arch/x86_64/kernel/smp.c | 7 +- trunk/arch/x86_64/kernel/smpboot.c | 61 +- trunk/arch/x86_64/kernel/suspend.c | 2 +- trunk/arch/x86_64/kernel/time.c | 119 +- trunk/arch/x86_64/kernel/trampoline.S | 11 +- trunk/arch/x86_64/kernel/traps.c | 164 +- trunk/arch/x86_64/kernel/vmlinux.lds.S | 4 +- trunk/arch/x86_64/kernel/vsmp.c | 45 - trunk/arch/x86_64/kernel/vsyscall.c | 14 +- trunk/arch/x86_64/kernel/x8664_ksyms.c | 32 +- trunk/arch/x86_64/lib/copy_user.S | 244 +- trunk/arch/x86_64/lib/delay.c | 2 +- trunk/arch/x86_64/lib/usercopy.c | 12 +- trunk/arch/x86_64/mm/fault.c | 54 +- trunk/arch/x86_64/mm/init.c | 29 +- trunk/arch/x86_64/mm/numa.c | 75 +- trunk/arch/x86_64/mm/srat.c | 67 +- trunk/arch/x86_64/pci/Makefile-BUS | 22 + trunk/arch/xtensa/kernel/process.c | 4 +- trunk/arch/xtensa/kernel/ptrace.c | 12 +- trunk/block/elevator.c | 20 +- trunk/block/ioctl.c | 2 +- trunk/block/scsi_ioctl.c | 1 - trunk/drivers/acorn/char/i2c.c | 1 - trunk/drivers/acpi/processor_idle.c | 15 - trunk/drivers/base/firmware_class.c | 1 - trunk/drivers/base/memory.c | 2 +- trunk/drivers/block/amiflop.c | 30 +- trunk/drivers/block/ataflop.c | 27 +- trunk/drivers/char/amiserial.c | 20 +- trunk/drivers/char/dsp56k.c | 29 +- trunk/drivers/char/ipmi/ipmi_si_intf.c | 10 +- trunk/drivers/char/random.c | 2 +- trunk/drivers/char/rio/board.h | 83 +- trunk/drivers/char/rio/bootpkt.h | 11 +- trunk/drivers/char/rio/brates.h | 9 +- trunk/drivers/char/rio/chan.h | 2 +- trunk/drivers/char/rio/cirrus.h | 178 +- trunk/drivers/char/rio/cmd.h | 5 +- trunk/drivers/char/rio/cmdblk.h | 19 +- trunk/drivers/char/rio/cmdpkt.h | 213 +- trunk/drivers/char/rio/control.h | 7 +- trunk/drivers/char/rio/daemon.h | 162 +- trunk/drivers/char/rio/debug.h | 4 +- trunk/drivers/char/rio/defaults.h | 7 +- trunk/drivers/char/rio/eisa.h | 4 +- trunk/drivers/char/rio/enable.h | 4 +- trunk/drivers/char/rio/error.h | 3 + trunk/drivers/char/rio/errors.h | 2 +- trunk/drivers/char/rio/formpkt.h | 151 +- trunk/drivers/char/rio/func.h | 51 +- trunk/drivers/char/rio/host.h | 93 +- trunk/drivers/char/rio/hosthw.h | 4 +- trunk/drivers/char/rio/link.h | 152 +- trunk/drivers/char/rio/linux_compat.h | 46 +- trunk/drivers/char/rio/list.h | 6 +- trunk/drivers/char/rio/lrt.h | 5 +- trunk/drivers/char/rio/ltt.h | 7 +- trunk/drivers/char/rio/lttwake.h | 5 +- trunk/drivers/char/rio/map.h | 27 +- trunk/drivers/char/rio/mca.h | 2 +- trunk/drivers/char/rio/mesg.h | 2 +- trunk/drivers/char/rio/param.h | 27 +- trunk/drivers/char/rio/parmmap.h | 79 +- trunk/drivers/char/rio/pci.h | 2 +- trunk/drivers/char/rio/phb.h | 285 +- trunk/drivers/char/rio/pkt.h | 72 +- trunk/drivers/char/rio/poll.h | 27 +- trunk/drivers/char/rio/port.h | 294 +- trunk/drivers/char/rio/proto.h | 132 +- trunk/drivers/char/rio/protsts.h | 2 + trunk/drivers/char/rio/qbuf.h | 15 +- trunk/drivers/char/rio/rio.h | 15 +- trunk/drivers/char/rio/rio_linux.c | 1516 ++++---- trunk/drivers/char/rio/rio_linux.h | 57 +- trunk/drivers/char/rio/rioboard.h | 204 +- trunk/drivers/char/rio/riocmd.c | 896 ++--- trunk/drivers/char/rio/rioctrl.c | 3119 +++++++++-------- trunk/drivers/char/rio/riodrvr.h | 128 +- trunk/drivers/char/rio/rioinfo.h | 30 +- trunk/drivers/char/rio/riointr.c | 1505 ++++---- trunk/drivers/char/rio/rioioctl.h | 18 +- trunk/drivers/char/rio/rioparam.c | 563 +-- trunk/drivers/char/rio/riopcicopy.c | 6 +- trunk/drivers/char/rio/rioroute.c | 1572 +++++---- trunk/drivers/char/rio/riospace.h | 31 +- trunk/drivers/char/rio/riotable.c | 1019 +++--- trunk/drivers/char/rio/riotime.h | 4 +- trunk/drivers/char/rio/riotty.c | 1224 +++---- trunk/drivers/char/rio/riotypes.h | 71 +- trunk/drivers/char/rio/riowinif.h | 934 ++--- trunk/drivers/char/rio/riscos.h | 2 +- trunk/drivers/char/rio/rom.h | 22 +- trunk/drivers/char/rio/route.h | 61 +- trunk/drivers/char/rio/rtahw.h | 14 +- trunk/drivers/char/rio/rup.h | 39 +- trunk/drivers/char/rio/rupstat.h | 3 +- trunk/drivers/char/rio/sam.h | 13 +- trunk/drivers/char/rio/selftest.h | 48 +- trunk/drivers/char/rio/space.h | 2 +- trunk/drivers/char/rio/sysmap.h | 23 +- trunk/drivers/char/rio/timeouts.h | 7 +- trunk/drivers/char/rio/top.h | 9 +- trunk/drivers/char/rio/typdef.h | 36 +- trunk/drivers/char/rio/unixrup.h | 21 +- trunk/drivers/char/rtc.c | 14 +- trunk/drivers/char/scc.h | 2 +- trunk/drivers/char/synclink_gt.c | 16 +- trunk/drivers/char/tlclk.c | 15 +- trunk/drivers/char/tty_io.c | 6 +- trunk/drivers/char/viocons.c | 11 +- trunk/drivers/firmware/efivars.c | 2 +- trunk/drivers/input/evdev.c | 6 +- trunk/drivers/input/joystick/amijoy.c | 4 +- trunk/drivers/input/mouse/amimouse.c | 6 +- trunk/drivers/macintosh/adb-iop.c | 2 +- trunk/drivers/macintosh/via-macii.c | 4 +- trunk/drivers/macintosh/via-maciisi.c | 22 +- trunk/drivers/macintosh/via-pmu68k.c | 4 +- trunk/drivers/md/md.c | 3 - trunk/drivers/media/common/saa7146_core.c | 9 +- trunk/drivers/media/common/saa7146_fops.c | 6 +- trunk/drivers/media/dvb/b2c2/flexcop.c | 6 +- trunk/drivers/media/dvb/bt8xx/dvb-bt8xx.c | 3 +- .../media/dvb/dvb-core/dvb_ca_en50221.c | 8 +- .../drivers/media/dvb/dvb-core/dvb_frontend.c | 3 +- trunk/drivers/media/dvb/dvb-usb/cxusb.c | 152 +- trunk/drivers/media/dvb/dvb-usb/dtt200u-fe.c | 3 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 2 - .../drivers/media/dvb/dvb-usb/dvb-usb-init.c | 6 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb-urb.c | 9 +- trunk/drivers/media/dvb/dvb-usb/vp702x-fe.c | 3 +- trunk/drivers/media/dvb/dvb-usb/vp7045-fe.c | 3 +- trunk/drivers/media/dvb/frontends/bcm3510.c | 3 +- trunk/drivers/media/dvb/frontends/dib3000mb.c | 3 +- trunk/drivers/media/dvb/frontends/dib3000mc.c | 3 +- trunk/drivers/media/dvb/frontends/dvb-pll.c | 17 - trunk/drivers/media/dvb/frontends/dvb-pll.h | 1 - trunk/drivers/media/dvb/frontends/lgdt330x.c | 3 +- trunk/drivers/media/dvb/frontends/mt352.c | 3 +- trunk/drivers/media/dvb/frontends/nxt200x.c | 3 +- trunk/drivers/media/dvb/pluto2/pluto2.c | 3 +- trunk/drivers/media/dvb/ttpci/av7110.c | 4 +- trunk/drivers/media/dvb/ttpci/budget-av.c | 129 +- trunk/drivers/media/dvb/ttpci/budget.h | 1 - .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 4 +- trunk/drivers/media/dvb/ttusb-dec/ttusb_dec.c | 4 +- trunk/drivers/media/radio/radio-gemtek-pci.c | 3 +- trunk/drivers/media/video/Kconfig | 2 +- trunk/drivers/media/video/adv7170.c | 6 +- trunk/drivers/media/video/adv7175.c | 6 +- trunk/drivers/media/video/bt819.c | 7 +- trunk/drivers/media/video/bt832.c | 7 +- trunk/drivers/media/video/bt856.c | 6 +- trunk/drivers/media/video/bttv-cards.c | 305 +- trunk/drivers/media/video/bttv-gpio.c | 3 +- trunk/drivers/media/video/bttv-input.c | 6 - trunk/drivers/media/video/bttv.h | 1 - trunk/drivers/media/video/compat_ioctl32.c | 371 +- trunk/drivers/media/video/cpia_pp.c | 3 +- trunk/drivers/media/video/cpia_usb.c | 4 +- trunk/drivers/media/video/cs53l32a.c | 7 +- .../media/video/cx25840/cx25840-core.c | 19 +- .../drivers/media/video/cx88/cx88-blackbird.c | 6 +- trunk/drivers/media/video/cx88/cx88-cards.c | 5 - trunk/drivers/media/video/cx88/cx88-core.c | 3 +- trunk/drivers/media/video/cx88/cx88-dvb.c | 3 +- trunk/drivers/media/video/cx88/cx88-input.c | 1 - trunk/drivers/media/video/cx88/cx88-video.c | 6 +- trunk/drivers/media/video/dpc7146.c | 3 +- .../drivers/media/video/em28xx/em28xx-video.c | 3 +- trunk/drivers/media/video/hexium_gemini.c | 3 +- trunk/drivers/media/video/hexium_orion.c | 3 +- trunk/drivers/media/video/indycam.c | 7 +- trunk/drivers/media/video/msp3400-driver.c | 64 +- trunk/drivers/media/video/msp3400-kthreads.c | 124 +- trunk/drivers/media/video/msp3400.h | 12 +- trunk/drivers/media/video/mt20xx.c | 8 +- trunk/drivers/media/video/mxb.c | 3 +- trunk/drivers/media/video/ovcamchip/ov6x20.c | 3 +- trunk/drivers/media/video/ovcamchip/ov6x30.c | 3 +- trunk/drivers/media/video/ovcamchip/ov76be.c | 3 +- trunk/drivers/media/video/ovcamchip/ov7x10.c | 3 +- trunk/drivers/media/video/ovcamchip/ov7x20.c | 3 +- .../media/video/ovcamchip/ovcamchip_core.c | 3 +- trunk/drivers/media/video/saa5246a.c | 3 +- trunk/drivers/media/video/saa5249.c | 5 +- trunk/drivers/media/video/saa7110.c | 6 +- trunk/drivers/media/video/saa7111.c | 6 +- trunk/drivers/media/video/saa7114.c | 6 +- trunk/drivers/media/video/saa7115.c | 44 +- trunk/drivers/media/video/saa711x.c | 6 +- trunk/drivers/media/video/saa7127.c | 42 +- trunk/drivers/media/video/saa7134/Kconfig | 2 +- trunk/drivers/media/video/saa7134/saa6752hs.c | 3 +- .../media/video/saa7134/saa7134-cards.c | 2 +- .../media/video/saa7134/saa7134-core.c | 3 +- .../media/video/saa7134/saa7134-video.c | 3 +- trunk/drivers/media/video/saa7146.h | 1 + trunk/drivers/media/video/saa7185.c | 6 +- trunk/drivers/media/video/saa7191.c | 7 +- trunk/drivers/media/video/stradis.c | 1138 +++--- trunk/drivers/media/video/tda7432.c | 15 +- trunk/drivers/media/video/tda9875.c | 3 +- trunk/drivers/media/video/tda9887.c | 3 +- trunk/drivers/media/video/tea5767.c | 4 +- trunk/drivers/media/video/tea6420.c | 3 +- trunk/drivers/media/video/tuner-3036.c | 3 +- trunk/drivers/media/video/tuner-core.c | 19 +- trunk/drivers/media/video/tvaudio.c | 55 +- trunk/drivers/media/video/tveeprom.c | 6 +- trunk/drivers/media/video/tvp5150.c | 3 +- trunk/drivers/media/video/v4l1-compat.c | 24 +- trunk/drivers/media/video/video-buf.c | 9 +- trunk/drivers/media/video/videocodec.c | 11 +- trunk/drivers/media/video/videodev.c | 5 +- trunk/drivers/media/video/vino.c | 4 +- trunk/drivers/media/video/vpx3220.c | 7 +- trunk/drivers/media/video/wm8775.c | 3 +- trunk/drivers/media/video/zoran_card.c | 3 +- trunk/drivers/media/video/zoran_driver.c | 3 +- trunk/drivers/media/video/zr36016.c | 3 +- trunk/drivers/media/video/zr36050.c | 3 +- trunk/drivers/media/video/zr36060.c | 3 +- trunk/drivers/net/Kconfig | 2 +- trunk/drivers/net/cs89x0.c | 2 +- trunk/drivers/net/gianfar_sysfs.c | 2 +- trunk/drivers/net/hplance.c | 2 +- trunk/drivers/net/mac8390.c | 31 +- trunk/drivers/net/sun3lance.c | 2 +- trunk/drivers/oprofile/event_buffer.c | 1 - trunk/drivers/parisc/dino.c | 30 +- trunk/drivers/parisc/eisa.c | 4 +- trunk/drivers/parisc/eisa_eeprom.c | 2 +- trunk/drivers/parisc/lasi.c | 2 +- trunk/drivers/parisc/lba_pci.c | 115 +- trunk/drivers/parisc/led.c | 19 +- trunk/drivers/parisc/pdc_stable.c | 46 +- trunk/drivers/parisc/power.c | 12 +- trunk/drivers/parport/Kconfig | 1 - trunk/drivers/scsi/Makefile | 3 +- trunk/drivers/scsi/NCR53C9x.c | 5 +- trunk/drivers/scsi/blz1230.c | 4 +- trunk/drivers/scsi/blz2060.c | 4 +- trunk/drivers/scsi/cyberstorm.c | 4 +- trunk/drivers/scsi/cyberstormII.c | 4 +- trunk/drivers/scsi/fastlane.c | 4 +- trunk/drivers/scsi/oktagon_esp.c | 2 +- trunk/drivers/scsi/wd33c93.c | 4 +- trunk/drivers/video/amifb.c | 36 +- trunk/drivers/video/aty/atyfb_base.c | 2 +- trunk/drivers/video/macfb.c | 15 +- trunk/drivers/video/stifb.c | 65 +- trunk/drivers/zorro/proc.c | 2 +- trunk/fs/afs/cmservice.c | 2 +- trunk/fs/attr.c | 2 +- trunk/fs/autofs/root.c | 1 - trunk/fs/autofs4/root.c | 1 - trunk/fs/binfmt_elf.c | 8 +- trunk/fs/buffer.c | 1 - trunk/fs/compat_ioctl.c | 65 - trunk/fs/dcookies.c | 1 - trunk/fs/dquot.c | 1 - trunk/fs/ext2/acl.c | 1 - trunk/fs/ext2/balloc.c | 1 - trunk/fs/ext2/dir.c | 2 +- trunk/fs/ext2/ioctl.c | 1 - trunk/fs/ext2/xattr_trusted.c | 1 - trunk/fs/ext3/acl.c | 1 - trunk/fs/ext3/balloc.c | 1 - trunk/fs/ext3/ioctl.c | 1 - trunk/fs/ext3/xattr_trusted.c | 1 - trunk/fs/fat/file.c | 1 - trunk/fs/fcntl.c | 1 - trunk/fs/file_table.c | 1 - trunk/fs/hfsplus/ioctl.c | 1 - trunk/fs/hugetlbfs/inode.c | 1 - trunk/fs/ioctl.c | 1 - trunk/fs/ioprio.c | 1 - trunk/fs/jffs2/fs.c | 1 - trunk/fs/jfs/xattr.c | 1 - trunk/fs/namei.c | 1 - trunk/fs/namespace.c | 1 - trunk/fs/ncpfs/ioctl.c | 1 - trunk/fs/ocfs2/file.c | 1 - trunk/fs/open.c | 1 - trunk/fs/proc/base.c | 1 - trunk/fs/proc/kcore.c | 1 - trunk/fs/proc/vmcore.c | 3 +- trunk/fs/quota.c | 1 - trunk/fs/reiserfs/ioctl.c | 1 - trunk/fs/reiserfs/journal.c | 5 +- trunk/fs/reiserfs/xattr.c | 1 - trunk/fs/reiserfs/xattr_acl.c | 1 - trunk/fs/reiserfs/xattr_trusted.c | 1 - trunk/fs/smbfs/proc.c | 1 - trunk/fs/sysfs/inode.c | 1 - trunk/fs/udf/file.c | 1 - trunk/fs/ufs/balloc.c | 1 - trunk/fs/xfs/linux-2.6/xfs_cred.h | 4 +- trunk/fs/xfs/linux-2.6/xfs_ioctl.c | 1 - trunk/fs/xfs/linux-2.6/xfs_iops.c | 1 - trunk/fs/xfs/quota/xfs_qm_syscalls.c | 3 - trunk/fs/xfs/xfs_acl.c | 1 - trunk/fs/xfs/xfs_attr.c | 3 - trunk/fs/xfs/xfs_iomap.c | 1 + trunk/fs/xfs/xfs_vnodeops.c | 4 - trunk/include/asm-alpha/mmu_context.h | 6 +- trunk/include/asm-alpha/processor.h | 13 +- trunk/include/asm-alpha/ptrace.h | 6 +- trunk/include/asm-alpha/system.h | 18 +- trunk/include/asm-alpha/thread_info.h | 2 + trunk/include/asm-arm/processor.h | 8 +- trunk/include/asm-arm/system.h | 12 +- trunk/include/asm-arm/thread_info.h | 7 +- trunk/include/asm-arm26/system.h | 12 +- trunk/include/asm-arm26/thread_info.h | 9 +- trunk/include/asm-cris/arch-v10/processor.h | 2 +- trunk/include/asm-cris/arch-v32/processor.h | 2 +- trunk/include/asm-cris/processor.h | 3 +- trunk/include/asm-cris/thread_info.h | 2 + trunk/include/asm-frv/thread_info.h | 2 + trunk/include/asm-generic/mutex-dec.h | 2 +- trunk/include/asm-h8300/page.h | 6 + trunk/include/asm-h8300/thread_info.h | 2 + trunk/include/asm-i386/apic.h | 5 - trunk/include/asm-i386/bitops.h | 24 +- trunk/include/asm-i386/cpufeature.h | 1 - trunk/include/asm-i386/dma-mapping.h | 12 +- trunk/include/asm-i386/i387.h | 8 +- trunk/include/asm-i386/io.h | 5 - .../include/asm-i386/mach-default/mach_ipi.h | 4 +- trunk/include/asm-i386/mutex.h | 2 +- trunk/include/asm-i386/processor.h | 26 +- trunk/include/asm-i386/system.h | 9 - trunk/include/asm-i386/thread_info.h | 2 + trunk/include/asm-i386/topology.h | 1 + trunk/include/asm-ia64/compat.h | 2 +- trunk/include/asm-ia64/processor.h | 2 +- trunk/include/asm-ia64/ptrace.h | 4 +- trunk/include/asm-ia64/system.h | 9 +- trunk/include/asm-ia64/thread_info.h | 9 - trunk/include/asm-ia64/topology.h | 2 + trunk/include/asm-m32r/ptrace.h | 3 - trunk/include/asm-m32r/system.h | 10 - trunk/include/asm-m32r/thread_info.h | 2 + trunk/include/asm-m68k/amigahw.h | 12 +- trunk/include/asm-m68k/amigaints.h | 2 + trunk/include/asm-m68k/checksum.h | 2 +- trunk/include/asm-m68k/dsp56k.h | 2 +- trunk/include/asm-m68k/floppy.h | 2 +- trunk/include/asm-m68k/hardirq.h | 9 + trunk/include/asm-m68k/io.h | 49 +- trunk/include/asm-m68k/irq.h | 9 - trunk/include/asm-m68k/machdep.h | 1 + trunk/include/asm-m68k/raw_io.h | 40 +- trunk/include/asm-m68k/signal.h | 2 +- trunk/include/asm-m68k/sun3_pgtable.h | 2 +- trunk/include/asm-m68k/sun3ints.h | 1 + trunk/include/asm-m68k/sun3xflop.h | 4 +- trunk/include/asm-m68k/thread_info.h | 1 - trunk/include/asm-m68k/uaccess.h | 20 +- trunk/include/asm-m68k/zorro.h | 8 +- trunk/include/asm-m68knommu/machdep.h | 1 + trunk/include/asm-m68knommu/thread_info.h | 2 + trunk/include/asm-mips/mach-ip27/topology.h | 1 + trunk/include/asm-mips/processor.h | 10 +- trunk/include/asm-mips/system.h | 12 +- trunk/include/asm-mips/thread_info.h | 2 + trunk/include/asm-parisc/cache.h | 8 +- trunk/include/asm-parisc/io.h | 2 +- trunk/include/asm-parisc/page.h | 7 - trunk/include/asm-parisc/pci.h | 8 +- trunk/include/asm-parisc/processor.h | 18 +- trunk/include/asm-parisc/system.h | 9 - trunk/include/asm-parisc/thread_info.h | 3 + trunk/include/asm-parisc/tlbflush.h | 1 - trunk/include/asm-powerpc/elf.h | 1 + trunk/include/asm-powerpc/paca.h | 1 - trunk/include/asm-powerpc/page.h | 2 +- trunk/include/asm-powerpc/parport.h | 28 +- trunk/include/asm-powerpc/percpu.h | 56 - trunk/include/asm-powerpc/rtas.h | 1 + trunk/include/asm-powerpc/system.h | 10 - trunk/include/asm-powerpc/thread_info.h | 3 + trunk/include/asm-powerpc/topology.h | 1 + trunk/include/asm-powerpc/udbg.h | 9 +- trunk/include/asm-ppc/system.h | 10 - trunk/include/asm-s390/elf.h | 2 +- trunk/include/asm-s390/processor.h | 8 +- trunk/include/asm-s390/system.h | 10 - trunk/include/asm-s390/thread_info.h | 2 + trunk/include/asm-sh/ptrace.h | 10 - trunk/include/asm-sh/system.h | 10 - trunk/include/asm-sh/thread_info.h | 2 + trunk/include/asm-sh64/thread_info.h | 2 + trunk/include/asm-sparc/system.h | 12 +- trunk/include/asm-sparc/thread_info.h | 3 + trunk/include/asm-sparc64/elf.h | 2 +- trunk/include/asm-sparc64/mmu_context.h | 2 +- trunk/include/asm-sparc64/processor.h | 5 +- trunk/include/asm-sparc64/system.h | 14 +- trunk/include/asm-um/thread_info.h | 3 + trunk/include/asm-v850/processor.h | 8 +- trunk/include/asm-v850/thread_info.h | 2 + trunk/include/asm-x86_64/apic.h | 17 +- trunk/include/asm-x86_64/apicdef.h | 1 - trunk/include/asm-x86_64/atomic.h | 1 - trunk/include/asm-x86_64/bitops.h | 43 +- trunk/include/asm-x86_64/cache.h | 12 - trunk/include/asm-x86_64/compat.h | 7 +- trunk/include/asm-x86_64/cpufeature.h | 3 +- trunk/include/asm-x86_64/desc.h | 18 +- trunk/include/asm-x86_64/dma-mapping.h | 221 +- trunk/include/asm-x86_64/dwarf2.h | 4 +- trunk/include/asm-x86_64/gart-mapping.h | 16 - trunk/include/asm-x86_64/hw_irq.h | 10 +- trunk/include/asm-x86_64/i387.h | 68 +- trunk/include/asm-x86_64/idle.h | 14 - trunk/include/asm-x86_64/io.h | 5 - trunk/include/asm-x86_64/ipi.h | 4 + trunk/include/asm-x86_64/kdebug.h | 13 +- trunk/include/asm-x86_64/mmu_context.h | 9 +- trunk/include/asm-x86_64/mmzone.h | 16 +- trunk/include/asm-x86_64/mutex.h | 2 +- trunk/include/asm-x86_64/numa.h | 5 - trunk/include/asm-x86_64/page.h | 15 +- trunk/include/asm-x86_64/pci.h | 11 +- trunk/include/asm-x86_64/pda.h | 11 +- trunk/include/asm-x86_64/percpu.h | 2 +- trunk/include/asm-x86_64/pgtable.h | 32 +- trunk/include/asm-x86_64/processor.h | 12 +- trunk/include/asm-x86_64/proto.h | 15 +- trunk/include/asm-x86_64/segment.h | 4 +- trunk/include/asm-x86_64/smp.h | 1 - trunk/include/asm-x86_64/swiotlb.h | 16 +- trunk/include/asm-x86_64/system.h | 53 +- trunk/include/asm-x86_64/thread_info.h | 3 +- trunk/include/asm-x86_64/timex.h | 16 - trunk/include/asm-x86_64/topology.h | 1 + trunk/include/asm-x86_64/uaccess.h | 1 - trunk/include/asm-x86_64/vsyscall.h | 4 +- trunk/include/asm-xtensa/processor.h | 6 +- trunk/include/asm-xtensa/ptrace.h | 4 +- trunk/include/asm-xtensa/thread_info.h | 2 + trunk/include/linux/cache.h | 2 +- trunk/include/linux/capability.h | 3 - trunk/include/linux/dmi.h | 5 +- trunk/include/linux/gfp.h | 5 - trunk/include/linux/kprobes.h | 3 - trunk/include/linux/mm.h | 3 +- trunk/include/linux/mmzone.h | 2 +- trunk/include/linux/mutex-debug.h | 2 +- trunk/include/linux/mutex.h | 3 +- trunk/include/linux/pci_ids.h | 3 - trunk/include/linux/sched.h | 30 +- trunk/include/linux/topology.h | 2 + trunk/include/media/tuner.h | 4 +- trunk/include/media/v4l2-common.h | 3 +- trunk/init/Kconfig | 9 + trunk/ipc/mqueue.c | 1 - trunk/ipc/msg.c | 1 - trunk/ipc/sem.c | 1 - trunk/ipc/shm.c | 1 - trunk/ipc/util.c | 1 - trunk/kernel/acct.c | 1 - trunk/kernel/capability.c | 1 - trunk/kernel/exit.c | 1 - trunk/kernel/fork.c | 7 +- trunk/kernel/kexec.c | 1 - trunk/kernel/kprobes.c | 42 +- trunk/kernel/module.c | 1 - trunk/kernel/mutex-debug.c | 6 +- trunk/kernel/mutex.c | 5 +- trunk/kernel/ptrace.c | 1 - trunk/kernel/sched.c | 485 +-- trunk/kernel/signal.c | 1 - trunk/kernel/sys.c | 13 - trunk/kernel/sysctl.c | 1 - trunk/kernel/time.c | 1 - trunk/kernel/uid16.c | 1 - trunk/lib/swiotlb.c | 2 +- trunk/mm/filemap.c | 1 - trunk/mm/mempolicy.c | 4 +- trunk/mm/mlock.c | 1 - trunk/mm/mmap.c | 1 - trunk/mm/mremap.c | 1 - trunk/mm/page_alloc.c | 13 +- trunk/mm/slab.c | 2 +- trunk/mm/swapfile.c | 3 +- trunk/mm/tiny-shmem.c | 2 +- trunk/net/8021q/vlan.c | 1 - trunk/net/appletalk/ddp.c | 1 - trunk/net/atm/br2684.c | 1 - trunk/net/atm/clip.c | 1 - trunk/net/atm/ioctl.c | 1 - trunk/net/atm/lec.c | 4 +- trunk/net/atm/mpc.c | 1 - trunk/net/atm/pppoatm.c | 1 - trunk/net/atm/raw.c | 1 - trunk/net/atm/resources.c | 1 - trunk/net/ax25/af_ax25.c | 1 - trunk/net/ax25/ax25_route.c | 2 - trunk/net/ax25/ax25_uid.c | 2 - trunk/net/bluetooth/bnep/sock.c | 1 - trunk/net/bluetooth/cmtp/sock.c | 1 - trunk/net/bluetooth/hci_sock.c | 1 - trunk/net/bluetooth/hidp/sock.c | 1 - trunk/net/bluetooth/l2cap.c | 1 - trunk/net/bluetooth/rfcomm/tty.c | 1 - trunk/net/bridge/br_ioctl.c | 1 - trunk/net/bridge/br_sysfs_br.c | 1 - trunk/net/bridge/br_sysfs_if.c | 1 - trunk/net/bridge/netfilter/ebt_stp.c | 1 - trunk/net/bridge/netfilter/ebtables.c | 4 +- trunk/net/core/dev.c | 1 - trunk/net/core/dev_mcast.c | 2 +- trunk/net/core/dv.c | 3 +- trunk/net/core/ethtool.c | 1 - trunk/net/core/net-sysfs.c | 1 - trunk/net/core/pktgen.c | 2 +- trunk/net/core/scm.c | 1 - trunk/net/core/sock.c | 1 - trunk/net/core/wireless.c | 1 - trunk/net/decnet/af_decnet.c | 1 - trunk/net/decnet/dn_dev.c | 1 - trunk/net/decnet/netfilter/dn_rtmsg.c | 2 + trunk/net/ipv4/af_inet.c | 1 - trunk/net/ipv4/arp.c | 1 - trunk/net/ipv4/devinet.c | 1 - trunk/net/ipv4/fib_frontend.c | 1 - trunk/net/ipv4/igmp.c | 15 +- trunk/net/ipv4/ip_gre.c | 1 - trunk/net/ipv4/ip_options.c | 1 - trunk/net/ipv4/ip_sockglue.c | 6 +- trunk/net/ipv4/ipip.c | 1 - trunk/net/ipv4/ipmr.c | 1 - trunk/net/ipv4/ipvs/ip_vs_ctl.c | 1 - trunk/net/ipv4/netfilter/arp_tables.c | 1 - .../ipv4/netfilter/ip_conntrack_helper_pptp.c | 2 +- .../ipv4/netfilter/ip_conntrack_proto_gre.c | 5 +- .../ipv4/netfilter/ip_conntrack_proto_icmp.c | 1 + .../ipv4/netfilter/ip_conntrack_proto_tcp.c | 1 + .../ipv4/netfilter/ip_conntrack_proto_udp.c | 1 + trunk/net/ipv4/netfilter/ip_tables.c | 1 - trunk/net/ipv6/Makefile | 3 +- trunk/net/ipv6/addrconf.c | 1 - trunk/net/ipv6/af_inet6.c | 1 - trunk/net/ipv6/anycast.c | 1 - trunk/net/ipv6/datagram.c | 1 - trunk/net/ipv6/ip6_flowlabel.c | 1 - trunk/net/ipv6/ip6_tunnel.c | 1 - trunk/net/ipv6/ipv6_sockglue.c | 3 +- trunk/net/ipv6/mcast.c | 11 +- trunk/net/ipv6/netfilter.c | 5 +- trunk/net/ipv6/netfilter/ip6_tables.c | 2 - trunk/net/ipv6/netfilter/ip6t_mac.c | 1 - trunk/net/ipv6/route.c | 1 - trunk/net/ipv6/sit.c | 1 - trunk/net/ipv6/tcp_ipv6.c | 20 +- trunk/net/ipx/af_ipx.c | 1 - trunk/net/irda/af_irda.c | 1 - trunk/net/irda/irda_device.c | 1 - trunk/net/irda/irias_object.c | 12 +- trunk/net/irda/irnet/irnet.h | 1 - trunk/net/key/af_key.c | 1 - trunk/net/netlink/af_netlink.c | 1 - trunk/net/netrom/af_netrom.c | 1 - trunk/net/packet/af_packet.c | 3 +- trunk/net/rose/af_rose.c | 2 - trunk/net/sched/Kconfig | 2 +- trunk/net/sched/ematch.c | 1 + trunk/net/sctp/sm_make_chunk.c | 2 +- trunk/net/sctp/socket.c | 5 +- trunk/net/socket.c | 2 +- trunk/net/sunrpc/auth.c | 2 +- trunk/net/sunrpc/auth_unix.c | 2 +- trunk/net/sunrpc/clnt.c | 4 +- trunk/net/sunrpc/svc.c | 2 +- trunk/net/wanrouter/af_wanpipe.c | 1 - trunk/net/wanrouter/wanmain.c | 1 - trunk/net/x25/af_x25.c | 1 - trunk/security/commoncap.c | 1 - trunk/security/dummy.c | 1 - trunk/security/keys/keyctl.c | 1 - trunk/security/security.c | 1 - trunk/sound/oss/dmasound/dmasound.h | 1 + trunk/sound/oss/dmasound/dmasound_atari.c | 112 +- trunk/sound/oss/dmasound/dmasound_paula.c | 14 +- trunk/sound/oss/dmasound/dmasound_q40.c | 18 +- trunk/sound/oss/dmasound/trans_16.c | 1 - trunk/sound/oss/harmony.c | 4 +- trunk/sound/oss/i810_audio.c | 4 +- trunk/sound/pci/emu10k1/emufx.c | 1 - 852 files changed, 12794 insertions(+), 14366 deletions(-) delete mode 100644 trunk/Documentation/x86_64/cpu-hotplug-spec create mode 100644 trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h delete mode 100644 trunk/arch/powerpc/boot/.gitignore delete mode 100644 trunk/arch/powerpc/kernel/vdso32/.gitignore delete mode 100644 trunk/arch/powerpc/kernel/vdso64/.gitignore delete mode 100644 trunk/arch/powerpc/platforms/83xx/Kconfig delete mode 100644 trunk/arch/powerpc/platforms/83xx/Makefile rename trunk/arch/um/{include/sysdep-i386/kernel-offsets.h => sys-i386/kernel-offsets.c} (80%) rename trunk/arch/um/{include/sysdep-x86_64/kernel-offsets.h => sys-x86_64/kernel-offsets.c} (90%) delete mode 100644 trunk/arch/x86_64/kernel/pci-swiotlb.c delete mode 100644 trunk/arch/x86_64/kernel/vsmp.c create mode 100644 trunk/arch/x86_64/pci/Makefile-BUS delete mode 100644 trunk/include/asm-x86_64/gart-mapping.h delete mode 100644 trunk/include/asm-x86_64/idle.h diff --git a/[refs] b/[refs] index d602c967f8d8..ae217a23014d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a2d823bf13efea4c859376f6e85c49cfbad7ab60 +refs/heads/master: f60d36690ce11a6a41b89e63b4201fbba3aa0bfb diff --git a/trunk/Documentation/cpusets.txt b/trunk/Documentation/cpusets.txt index 990998ee10b6..9e49b1c35729 100644 --- a/trunk/Documentation/cpusets.txt +++ b/trunk/Documentation/cpusets.txt @@ -135,7 +135,7 @@ Cpusets extends these two mechanisms as follows: The implementation of cpusets requires a few, simple hooks into the rest of the kernel, none in performance critical paths: - - in init/main.c, to initialize the root cpuset at system boot. + - in main/init.c, to initialize the root cpuset at system boot. - in fork and exit, to attach and detach a task from its cpuset. - in sched_setaffinity, to mask the requested CPUs by what's allowed in that tasks cpuset. @@ -146,7 +146,7 @@ into the rest of the kernel, none in performance critical paths: and related changes in both sched.c and arch/ia64/kernel/domain.c - in the mbind and set_mempolicy system calls, to mask the requested Memory Nodes by what's allowed in that tasks cpuset. - - in page_alloc.c, to restrict memory to allowed nodes. + - in page_alloc, to restrict memory to allowed nodes. - in vmscan.c, to restrict page recovery to the current cpuset. In addition a new file system, of type "cpuset" may be mounted, diff --git a/trunk/Documentation/filesystems/ext3.txt b/trunk/Documentation/filesystems/ext3.txt index afb1335c05d6..f4d0de6bac63 100644 --- a/trunk/Documentation/filesystems/ext3.txt +++ b/trunk/Documentation/filesystems/ext3.txt @@ -84,6 +84,8 @@ reservation noreservation +resize= + bsddf (*) Make 'df' act like BSD. minixdf Make 'df' act like Minix. @@ -173,7 +175,6 @@ See manual pages to learn more. tune2fs: create a ext3 journal on a ext2 partition with the -j flag. mke2fs: create a ext3 partition with the -j flag. debugfs: ext2 and ext3 file system debugger. -ext2online: online (mounted) ext2 and ext3 filesystem resizer References @@ -183,7 +184,6 @@ kernel source: programs: http://e2fsprogs.sourceforge.net/ - http://ext2resize.sourceforge.net useful links: http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html http://www-106.ibm.com/developerworks/linux/library/l-fs7/ diff --git a/trunk/Documentation/kdump/gdbmacros.txt b/trunk/Documentation/kdump/gdbmacros.txt index dcf5580380ab..bc1b9eb92ae1 100644 --- a/trunk/Documentation/kdump/gdbmacros.txt +++ b/trunk/Documentation/kdump/gdbmacros.txt @@ -177,25 +177,3 @@ document trapinfo 'trapinfo ' will tell you by which trap & possibly addresthe kernel paniced. end - - -define dmesg - set $i = 0 - set $end_idx = (log_end - 1) & (log_buf_len - 1) - - while ($i < logged_chars) - set $idx = (log_end - 1 - logged_chars + $i) & (log_buf_len - 1) - - if ($idx + 100 <= $end_idx) || \ - ($end_idx <= $idx && $idx + 100 < log_buf_len) - printf "%.100s", &log_buf[$idx] - set $i = $i + 100 - else - printf "%c", log_buf[$idx] - set $i = $i + 1 - end - end -end -document dmesg - print the kernel ring buffer -end diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index fe11fccf7e41..dd0bfc291a68 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -856,49 +856,6 @@ running once the system is up. mga= [HW,DRM] - migration_cost= - [KNL,SMP] debug: override scheduler migration costs - Format: ,,... - This debugging option can be used to override the - default scheduler migration cost matrix. The numbers - are indexed by 'CPU domain distance'. - E.g. migration_cost=1000,2000,3000 on an SMT NUMA - box will set up an intra-core migration cost of - 1 msec, an inter-core migration cost of 2 msecs, - and an inter-node migration cost of 3 msecs. - - WARNING: using the wrong values here can break - scheduler performance, so it's only for scheduler - development purposes, not production environments. - - migration_debug= - [KNL,SMP] migration cost auto-detect verbosity - Format=<0|1|2> - If a system's migration matrix reported at bootup - seems erroneous then this option can be used to - increase verbosity of the detection process. - We default to 0 (no extra messages), 1 will print - some more information, and 2 will be really - verbose (probably only useful if you also have a - serial console attached to the system). - - migration_factor= - [KNL,SMP] multiply/divide migration costs by a factor - Format= - This debug option can be used to proportionally - increase or decrease the auto-detected migration - costs for all entries of the migration matrix. - E.g. migration_factor=150 will increase migration - costs by 50%. (and thus the scheduler will be less - eager migrating cache-hot tasks) - migration_factor=80 will decrease migration costs - by 20%. (thus the scheduler will be more eager to - migrate tasks) - - WARNING: using the wrong values here can break - scheduler performance, so it's only for scheduler - development purposes, not production environments. - mousedev.tap_time= [MOUSE] Maximum time between finger touching and leaving touchpad surface for touch to be considered diff --git a/trunk/Documentation/laptop-mode.txt b/trunk/Documentation/laptop-mode.txt index f42e4c089356..dc4e810afdcd 100644 --- a/trunk/Documentation/laptop-mode.txt +++ b/trunk/Documentation/laptop-mode.txt @@ -3,7 +3,7 @@ How to conserve battery power using laptop-mode Document Author: Bart Samwel (bart@samwel.tk) Date created: January 2, 2004 -Last modified: December 06, 2004 +Last modified: July 10, 2004 Introduction ------------ @@ -33,7 +33,7 @@ or anything. Simply install all the files included in this document, and laptop mode will automatically be started when you're on battery. For your convenience, a tarball containing an installer can be downloaded at: -http://www.xs4all.nl/~bsamwel/laptop_mode/tools/ +http://www.xs4all.nl/~bsamwel/laptop_mode/tools To configure laptop mode, you need to edit the configuration file, which is located in /etc/default/laptop-mode on Debian-based systems, or in @@ -912,7 +912,7 @@ void usage() exit(0); } -int main(int argc, char **argv) +int main(int ac, char **av) { int fd; char *disk = 0; diff --git a/trunk/Documentation/oops-tracing.txt b/trunk/Documentation/oops-tracing.txt index 2503404ae5c2..05960f8a748e 100644 --- a/trunk/Documentation/oops-tracing.txt +++ b/trunk/Documentation/oops-tracing.txt @@ -41,9 +41,11 @@ the disk is not available then you have three options :- run a null modem to a second machine and capture the output there using your favourite communication program. Minicom works well. -(3) Use Kdump (see Documentation/kdump/kdump.txt), - extract the kernel ring buffer from old memory with using dmesg - gdbmacro in Documentation/kdump/gdbmacros.txt. +(3) Patch the kernel with one of the crash dump patches. These save + data to a floppy disk or video rom or a swap partition. None of + these are standard kernel patches so you have to find and apply + them yourself. Search kernel archives for kmsgdump, lkcd and + oops+smram. Full Information diff --git a/trunk/Documentation/video4linux/CARDLIST.bttv b/trunk/Documentation/video4linux/CARDLIST.bttv index b72706c58a44..74fb085e178b 100644 --- a/trunk/Documentation/video4linux/CARDLIST.bttv +++ b/trunk/Documentation/video4linux/CARDLIST.bttv @@ -142,4 +142,3 @@ 141 -> Asound Skyeye PCTV 142 -> Sabrent TV-FM (bttv version) 143 -> Hauppauge ImpactVCB (bt878) [0070:13eb] -144 -> MagicTV diff --git a/trunk/Documentation/video4linux/CARDLIST.cx88 b/trunk/Documentation/video4linux/CARDLIST.cx88 index 56e194f1a0b0..34b6e59f2968 100644 --- a/trunk/Documentation/video4linux/CARDLIST.cx88 +++ b/trunk/Documentation/video4linux/CARDLIST.cx88 @@ -19,7 +19,7 @@ 18 -> Hauppauge Nova-T DVB-T [0070:9002,0070:9001] 19 -> Conexant DVB-T reference design [14f1:0187] 20 -> Provideo PV259 [1540:2580] - 21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10,18ac:db11] + 21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10] 22 -> pcHDTV HD3000 HDTV [7063:3000] 23 -> digitalnow DNTV Live! DVB-T [17de:a8a6] 24 -> Hauppauge WinTV 28xxx (Roslyn) models [0070:2801] diff --git a/trunk/Documentation/x86_64/boot-options.txt b/trunk/Documentation/x86_64/boot-options.txt index 72ab9b99b22c..e566affeed7f 100644 --- a/trunk/Documentation/x86_64/boot-options.txt +++ b/trunk/Documentation/x86_64/boot-options.txt @@ -125,7 +125,7 @@ SMP cpumask=MASK only use cpus with bits set in mask additional_cpus=NUM Allow NUM more CPUs for hotplug - (defaults are specified by the BIOS, see Documentation/x86_64/cpu-hotplug-spec) + (defaults are specified by the BIOS or half the available CPUs) NUMA diff --git a/trunk/Documentation/x86_64/cpu-hotplug-spec b/trunk/Documentation/x86_64/cpu-hotplug-spec deleted file mode 100644 index 5c0fa345e556..000000000000 --- a/trunk/Documentation/x86_64/cpu-hotplug-spec +++ /dev/null @@ -1,21 +0,0 @@ -Firmware support for CPU hotplug under Linux/x86-64 ---------------------------------------------------- - -Linux/x86-64 supports CPU hotplug now. For various reasons Linux wants to -know in advance boot time the maximum number of CPUs that could be plugged -into the system. ACPI 3.0 currently has no official way to supply -this information from the firmware to the operating system. - -In ACPI each CPU needs an LAPIC object in the MADT table (5.2.11.5 in the -ACPI 3.0 specification). ACPI already has the concept of disabled LAPIC -objects by setting the Enabled bit in the LAPIC object to zero. - -For CPU hotplug Linux/x86-64 expects now that any possible future hotpluggable -CPU is already available in the MADT. If the CPU is not available yet -it should have its LAPIC Enabled bit set to 0. Linux will use the number -of disabled LAPICs to compute the maximum number of future CPUs. - -In the worst case the user can overwrite this choice using a command line -option (additional_cpus=...), but it is recommended to supply the correct -number (or a reasonable approximation of it, with erring towards more not less) -in the MADT to avoid manual configuration. diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 0db72a36e245..090e10b65b09 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -2359,6 +2359,13 @@ P: Nicolas Pitre M: nico@cam.org S: Maintained +SNA NETWORK LAYER +P: Jay Schulist +M: jschlst@samba.org +L: linux-sna@turbolinux.com +W: http://www.linux-sna.org +S: Supported + SOFTWARE RAID (Multiple Disks) SUPPORT P: Ingo Molnar M: mingo@redhat.com @@ -2480,7 +2487,7 @@ P: Paul Mundt M: lethal@linux-sh.org P: Kazumoto Kojima M: kkojima@rr.iij4u.or.jp -L: linuxsh-dev@lists.sourceforge.net +L: linux-sh@m17n.org W: http://www.linux-sh.org W: http://www.m17n.org/linux-sh/ W: http://www.rr.iij4u.or.jp/~kkojima/linux-sh4.html diff --git a/trunk/arch/alpha/kernel/pci-noop.c b/trunk/arch/alpha/kernel/pci-noop.c index fff5cf93e816..9903e3a79102 100644 --- a/trunk/arch/alpha/kernel/pci-noop.c +++ b/trunk/arch/alpha/kernel/pci-noop.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index 9924fd07743a..abb739b88ed1 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -276,7 +276,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, { extern void ret_from_fork(void); - struct thread_info *childti = task_thread_info(p); + struct thread_info *childti = p->thread_info; struct pt_regs * childregs; struct switch_stack * childstack, *stack; unsigned long stack_offset, settls; @@ -285,7 +285,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, if (!(regs->ps & 8)) stack_offset = (PAGE_SIZE-1) & (unsigned long) regs; childregs = (struct pt_regs *) - (stack_offset + PAGE_SIZE + task_stack_page(p)); + (stack_offset + PAGE_SIZE + (long) childti); *childregs = *regs; settls = regs->r20; @@ -428,15 +428,30 @@ dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt, struct thread_info *ti) int dump_elf_task(elf_greg_t *dest, struct task_struct *task) { - dump_elf_thread(dest, task_pt_regs(task), task_thread_info(task)); + struct thread_info *ti; + struct pt_regs *pt; + + ti = task->thread_info; + pt = (struct pt_regs *)((unsigned long)ti + 2*PAGE_SIZE) - 1; + + dump_elf_thread(dest, pt, ti); + return 1; } int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task) { - struct switch_stack *sw = (struct switch_stack *)task_pt_regs(task) - 1; + struct thread_info *ti; + struct pt_regs *pt; + struct switch_stack *sw; + + ti = task->thread_info; + pt = (struct pt_regs *)((unsigned long)ti + 2*PAGE_SIZE) - 1; + sw = (struct switch_stack *)pt - 1; + memcpy(dest, sw->fp, 32 * 8); + return 1; } @@ -477,8 +492,8 @@ do_sys_execve(char __user *ufilename, char __user * __user *argv, unsigned long thread_saved_pc(task_t *t) { - unsigned long base = (unsigned long)task_stack_page(t); - unsigned long fp, sp = task_thread_info(t)->pcb.ksp; + unsigned long base = (unsigned long)t->thread_info; + unsigned long fp, sp = t->thread_info->pcb.ksp; if (sp > base && sp+6*8 < base + 16*1024) { fp = ((unsigned long*)sp)[6]; @@ -508,7 +523,7 @@ get_wchan(struct task_struct *p) pc = thread_saved_pc(p); if (in_sched_functions(pc)) { - schedule_frame = ((unsigned long *)task_thread_info(p)->pcb.ksp)[6]; + schedule_frame = ((unsigned long *)p->thread_info->pcb.ksp)[6]; return ((unsigned long *)schedule_frame)[12]; } return pc; diff --git a/trunk/arch/alpha/kernel/ptrace.c b/trunk/arch/alpha/kernel/ptrace.c index 0cd060598f9a..9969d212e94d 100644 --- a/trunk/arch/alpha/kernel/ptrace.c +++ b/trunk/arch/alpha/kernel/ptrace.c @@ -72,13 +72,6 @@ enum { REG_R0 = 0, REG_F0 = 32, REG_FPCR = 63, REG_PC = 64 }; -#define PT_REG(reg) \ - (PAGE_SIZE*2 - sizeof(struct pt_regs) + offsetof(struct pt_regs, reg)) - -#define SW_REG(reg) \ - (PAGE_SIZE*2 - sizeof(struct pt_regs) - sizeof(struct switch_stack) \ - + offsetof(struct switch_stack, reg)) - static int regoff[] = { PT_REG( r0), PT_REG( r1), PT_REG( r2), PT_REG( r3), PT_REG( r4), PT_REG( r5), PT_REG( r6), PT_REG( r7), @@ -110,14 +103,14 @@ get_reg_addr(struct task_struct * task, unsigned long regno) unsigned long *addr; if (regno == 30) { - addr = &task_thread_info(task)->pcb.usp; + addr = &task->thread_info->pcb.usp; } else if (regno == 65) { - addr = &task_thread_info(task)->pcb.unique; + addr = &task->thread_info->pcb.unique; } else if (regno == 31 || regno > 65) { zero = 0; addr = &zero; } else { - addr = task_stack_page(task) + regoff[regno]; + addr = (void *)task->thread_info + regoff[regno]; } return addr; } @@ -132,7 +125,7 @@ get_reg(struct task_struct * task, unsigned long regno) if (regno == 63) { unsigned long fpcr = *get_reg_addr(task, regno); unsigned long swcr - = task_thread_info(task)->ieee_state & IEEE_SW_MASK; + = task->thread_info->ieee_state & IEEE_SW_MASK; swcr = swcr_update_status(swcr, fpcr); return fpcr | swcr; } @@ -146,8 +139,8 @@ static int put_reg(struct task_struct *task, unsigned long regno, unsigned long data) { if (regno == 63) { - task_thread_info(task)->ieee_state - = ((task_thread_info(task)->ieee_state & ~IEEE_SW_MASK) + task->thread_info->ieee_state + = ((task->thread_info->ieee_state & ~IEEE_SW_MASK) | (data & IEEE_SW_MASK)); data = (data & FPCR_DYN_MASK) | ieee_swcr_to_fpcr(data); } @@ -195,35 +188,35 @@ ptrace_set_bpt(struct task_struct * child) * branch (emulation can be tricky for fp branches). */ displ = ((s32)(insn << 11)) >> 9; - task_thread_info(child)->bpt_addr[nsaved++] = pc + 4; + child->thread_info->bpt_addr[nsaved++] = pc + 4; if (displ) /* guard against unoptimized code */ - task_thread_info(child)->bpt_addr[nsaved++] + child->thread_info->bpt_addr[nsaved++] = pc + 4 + displ; DBG(DBG_BPT, ("execing branch\n")); } else if (op_code == 0x1a) { reg_b = (insn >> 16) & 0x1f; - task_thread_info(child)->bpt_addr[nsaved++] = get_reg(child, reg_b); + child->thread_info->bpt_addr[nsaved++] = get_reg(child, reg_b); DBG(DBG_BPT, ("execing jump\n")); } else { - task_thread_info(child)->bpt_addr[nsaved++] = pc + 4; + child->thread_info->bpt_addr[nsaved++] = pc + 4; DBG(DBG_BPT, ("execing normal insn\n")); } /* install breakpoints: */ for (i = 0; i < nsaved; ++i) { - res = read_int(child, task_thread_info(child)->bpt_addr[i], + res = read_int(child, child->thread_info->bpt_addr[i], (int *) &insn); if (res < 0) return res; - task_thread_info(child)->bpt_insn[i] = insn; + child->thread_info->bpt_insn[i] = insn; DBG(DBG_BPT, (" -> next_pc=%lx\n", - task_thread_info(child)->bpt_addr[i])); - res = write_int(child, task_thread_info(child)->bpt_addr[i], + child->thread_info->bpt_addr[i])); + res = write_int(child, child->thread_info->bpt_addr[i], BREAKINST); if (res < 0) return res; } - task_thread_info(child)->bpt_nsaved = nsaved; + child->thread_info->bpt_nsaved = nsaved; return 0; } @@ -234,9 +227,9 @@ ptrace_set_bpt(struct task_struct * child) int ptrace_cancel_bpt(struct task_struct * child) { - int i, nsaved = task_thread_info(child)->bpt_nsaved; + int i, nsaved = child->thread_info->bpt_nsaved; - task_thread_info(child)->bpt_nsaved = 0; + child->thread_info->bpt_nsaved = 0; if (nsaved > 2) { printk("ptrace_cancel_bpt: bogus nsaved: %d!\n", nsaved); @@ -244,8 +237,8 @@ ptrace_cancel_bpt(struct task_struct * child) } for (i = 0; i < nsaved; ++i) { - write_int(child, task_thread_info(child)->bpt_addr[i], - task_thread_info(child)->bpt_insn[i]); + write_int(child, child->thread_info->bpt_addr[i], + child->thread_info->bpt_insn[i]); } return (nsaved != 0); } @@ -362,7 +355,7 @@ do_sys_ptrace(long request, long pid, long addr, long data, if (!valid_signal(data)) break; /* Mark single stepping. */ - task_thread_info(child)->bpt_nsaved = -1; + child->thread_info->bpt_nsaved = -1; clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); child->exit_code = data; wake_up_process(child); diff --git a/trunk/arch/alpha/kernel/smp.c b/trunk/arch/alpha/kernel/smp.c index 4b873527ce1c..da0be3465791 100644 --- a/trunk/arch/alpha/kernel/smp.c +++ b/trunk/arch/alpha/kernel/smp.c @@ -302,7 +302,7 @@ secondary_cpu_start(int cpuid, struct task_struct *idle) + hwrpb->processor_offset + cpuid * hwrpb->processor_size); hwpcb = (struct pcb_struct *) cpu->hwpcb; - ipcb = &task_thread_info(idle)->pcb; + ipcb = &idle->thread_info->pcb; /* Initialize the CPU's HWPCB to something just good enough for us to get started. Immediately after starting, we'll swpctx diff --git a/trunk/arch/arm/common/rtctime.c b/trunk/arch/arm/common/rtctime.c index ffb82d5bedef..72b03f201eb9 100644 --- a/trunk/arch/arm/common/rtctime.c +++ b/trunk/arch/arm/common/rtctime.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include diff --git a/trunk/arch/arm/kernel/apm.c b/trunk/arch/arm/kernel/apm.c index 766b6c05c6db..b9df1b782bb1 100644 --- a/trunk/arch/arm/kernel/apm.c +++ b/trunk/arch/arm/kernel/apm.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index 4b4e4cf79c80..54a21bdcba5c 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -342,10 +342,10 @@ void flush_thread(void) void release_thread(struct task_struct *dead_task) { #if defined(CONFIG_VFP) - vfp_release_thread(&task_thread_info(dead_task)->vfpstate); + vfp_release_thread(&dead_task->thread_info->vfpstate); #endif #if defined(CONFIG_IWMMXT) - iwmmxt_task_release(task_thread_info(dead_task)); + iwmmxt_task_release(dead_task->thread_info); #endif } @@ -355,9 +355,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) { - struct thread_info *thread = task_thread_info(p); - struct pt_regs *childregs = task_pt_regs(p); + struct thread_info *thread = p->thread_info; + struct pt_regs *childregs; + childregs = (void *)thread + THREAD_START_SP - sizeof(*regs); *childregs = *regs; childregs->ARM_r0 = 0; childregs->ARM_sp = stack_start; @@ -459,8 +460,8 @@ unsigned long get_wchan(struct task_struct *p) if (!p || p == current || p->state == TASK_RUNNING) return 0; - stack_start = (unsigned long)end_of_stack(p); - stack_end = (unsigned long)task_stack_page(p) + THREAD_SIZE; + stack_start = (unsigned long)(p->thread_info + 1); + stack_end = ((unsigned long)p->thread_info) + THREAD_SIZE; fp = thread_saved_fp(p); do { diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index e591f72bcdeb..2b84f78d7b0f 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -54,6 +54,23 @@ #define BREAKINST_THUMB 0xde01 #endif +/* + * Get the address of the live pt_regs for the specified task. + * These are saved onto the top kernel stack when the process + * is not running. + * + * Note: if a user thread is execve'd from kernel space, the + * kernel stack will not be empty on entry to the kernel, so + * ptracing these tasks will fail. + */ +static inline struct pt_regs * +get_user_regs(struct task_struct *task) +{ + return (struct pt_regs *) + ((unsigned long)task->thread_info + THREAD_SIZE - + 8 - sizeof(struct pt_regs)); +} + /* * this routine will get a word off of the processes privileged stack. * the offset is how far from the base addr as stored in the THREAD. @@ -62,7 +79,7 @@ */ static inline long get_user_reg(struct task_struct *task, int offset) { - return task_pt_regs(task)->uregs[offset]; + return get_user_regs(task)->uregs[offset]; } /* @@ -74,7 +91,7 @@ static inline long get_user_reg(struct task_struct *task, int offset) static inline int put_user_reg(struct task_struct *task, int offset, long data) { - struct pt_regs newregs, *regs = task_pt_regs(task); + struct pt_regs newregs, *regs = get_user_regs(task); int ret = -EINVAL; newregs = *regs; @@ -404,7 +421,7 @@ void ptrace_set_bpt(struct task_struct *child) u32 insn; int res; - regs = task_pt_regs(child); + regs = get_user_regs(child); pc = instruction_pointer(regs); if (thumb_mode(regs)) { @@ -555,7 +572,7 @@ static int ptrace_write_user(struct task_struct *tsk, unsigned long off, */ static int ptrace_getregs(struct task_struct *tsk, void __user *uregs) { - struct pt_regs *regs = task_pt_regs(tsk); + struct pt_regs *regs = get_user_regs(tsk); return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; } @@ -570,7 +587,7 @@ static int ptrace_setregs(struct task_struct *tsk, void __user *uregs) ret = -EFAULT; if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { - struct pt_regs *regs = task_pt_regs(tsk); + struct pt_regs *regs = get_user_regs(tsk); ret = -EINVAL; if (valid_user_regs(&newregs)) { @@ -587,7 +604,7 @@ static int ptrace_setregs(struct task_struct *tsk, void __user *uregs) */ static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) { - return copy_to_user(ufp, &task_thread_info(tsk)->fpstate, + return copy_to_user(ufp, &tsk->thread_info->fpstate, sizeof(struct user_fp)) ? -EFAULT : 0; } @@ -596,7 +613,7 @@ static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) */ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) { - struct thread_info *thread = task_thread_info(tsk); + struct thread_info *thread = tsk->thread_info; thread->used_cp[1] = thread->used_cp[2] = 1; return copy_from_user(&thread->fpstate, ufp, sizeof(struct user_fp)) ? -EFAULT : 0; @@ -609,7 +626,7 @@ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) */ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) { - struct thread_info *thread = task_thread_info(tsk); + struct thread_info *thread = tsk->thread_info; void *ptr = &thread->fpstate; if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) @@ -626,7 +643,7 @@ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) */ static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) { - struct thread_info *thread = task_thread_info(tsk); + struct thread_info *thread = tsk->thread_info; void *ptr = &thread->fpstate; if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) @@ -762,7 +779,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) #endif case PTRACE_GET_THREAD_AREA: - ret = put_user(task_thread_info(child)->tp_value, + ret = put_user(child->thread_info->tp_value, (unsigned long __user *) data); break; diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index 7338948bd7d3..373c0959bc2f 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -114,7 +114,7 @@ int __cpuinit __cpu_up(unsigned int cpu) * We need to tell the secondary core where to find * its stack and the page tables. */ - secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; + secondary_data.stack = (void *)idle->thread_info + THREAD_START_SP; secondary_data.pgdir = virt_to_phys(pgd); wmb(); @@ -245,7 +245,7 @@ void __cpuexit cpu_die(void) __asm__("mov sp, %0\n" " b secondary_start_kernel" : - : "r" (task_stack_page(current) + THREAD_SIZE - 8)); + : "r" ((void *)current->thread_info + THREAD_SIZE - 8)); } #endif /* CONFIG_HOTPLUG_CPU */ diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index 93cfd3ffcc72..c9fe6f5f7ee3 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -164,7 +164,7 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) } else if (verify_stack(fp)) { printk("invalid frame pointer 0x%08x", fp); ok = 0; - } else if (fp < (unsigned long)end_of_stack(tsk)) + } else if (fp < (unsigned long)(tsk->thread_info + 1)) printk("frame pointer underflow"); printk("\n"); @@ -210,7 +210,7 @@ static void __die(const char *str, int err, struct thread_info *thread, struct p if (!user_mode(regs) || in_interrupt()) { dump_mem("Stack: ", regs->ARM_sp, - THREAD_SIZE + (unsigned long)task_stack_page(tsk)); + THREAD_SIZE + (unsigned long)tsk->thread_info); dump_backtrace(regs, tsk); dump_instr(regs); } diff --git a/trunk/arch/arm26/kernel/process.c b/trunk/arch/arm26/kernel/process.c index 386305659171..15833a0057dd 100644 --- a/trunk/arch/arm26/kernel/process.c +++ b/trunk/arch/arm26/kernel/process.c @@ -277,9 +277,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, unsigned long unused, struct task_struct *p, struct pt_regs *regs) { - struct thread_info *thread = task_thread_info(p); - struct pt_regs *childregs = task_pt_regs(p); + struct thread_info *thread = p->thread_info; + struct pt_regs *childregs; + childregs = __get_user_regs(thread); *childregs = *regs; childregs->ARM_r0 = 0; childregs->ARM_sp = stack_start; diff --git a/trunk/arch/arm26/kernel/ptrace.c b/trunk/arch/arm26/kernel/ptrace.c index 3c3371d4683e..4e6b7356a722 100644 --- a/trunk/arch/arm26/kernel/ptrace.c +++ b/trunk/arch/arm26/kernel/ptrace.c @@ -39,6 +39,21 @@ */ #define BREAKINST_ARM 0xef9f0001 +/* + * Get the address of the live pt_regs for the specified task. + * These are saved onto the top kernel stack when the process + * is not running. + * + * Note: if a user thread is execve'd from kernel space, the + * kernel stack will not be empty on entry to the kernel, so + * ptracing these tasks will fail. + */ +static inline struct pt_regs * +get_user_regs(struct task_struct *task) +{ + return __get_user_regs(task->thread_info); +} + /* * this routine will get a word off of the processes privileged stack. * the offset is how far from the base addr as stored in the THREAD. @@ -47,7 +62,7 @@ */ static inline long get_user_reg(struct task_struct *task, int offset) { - return task_pt_regs(task)->uregs[offset]; + return get_user_regs(task)->uregs[offset]; } /* @@ -59,7 +74,7 @@ static inline long get_user_reg(struct task_struct *task, int offset) static inline int put_user_reg(struct task_struct *task, int offset, long data) { - struct pt_regs newregs, *regs = task_pt_regs(task); + struct pt_regs newregs, *regs = get_user_regs(task); int ret = -EINVAL; newregs = *regs; @@ -362,7 +377,7 @@ void ptrace_set_bpt(struct task_struct *child) u32 insn; int res; - regs = task_pt_regs(child); + regs = get_user_regs(child); pc = instruction_pointer(regs); res = read_instr(child, pc, &insn); @@ -485,7 +500,7 @@ static int ptrace_write_user(struct task_struct *tsk, unsigned long off, */ static int ptrace_getregs(struct task_struct *tsk, void *uregs) { - struct pt_regs *regs = task_pt_regs(tsk); + struct pt_regs *regs = get_user_regs(tsk); return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; } @@ -500,7 +515,7 @@ static int ptrace_setregs(struct task_struct *tsk, void *uregs) ret = -EFAULT; if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { - struct pt_regs *regs = task_pt_regs(tsk); + struct pt_regs *regs = get_user_regs(tsk); ret = -EINVAL; if (valid_user_regs(&newregs)) { @@ -517,7 +532,7 @@ static int ptrace_setregs(struct task_struct *tsk, void *uregs) */ static int ptrace_getfpregs(struct task_struct *tsk, void *ufp) { - return copy_to_user(ufp, &task_thread_info(tsk)->fpstate, + return copy_to_user(ufp, &tsk->thread_info->fpstate, sizeof(struct user_fp)) ? -EFAULT : 0; } @@ -527,7 +542,7 @@ static int ptrace_getfpregs(struct task_struct *tsk, void *ufp) static int ptrace_setfpregs(struct task_struct *tsk, void *ufp) { set_stopped_child_used_math(tsk); - return copy_from_user(&task_threas_info(tsk)->fpstate, ufp, + return copy_from_user(&tsk->thread_info->fpstate, ufp, sizeof(struct user_fp)) ? -EFAULT : 0; } diff --git a/trunk/arch/arm26/kernel/traps.c b/trunk/arch/arm26/kernel/traps.c index 5847ea5d7747..f64f59022392 100644 --- a/trunk/arch/arm26/kernel/traps.c +++ b/trunk/arch/arm26/kernel/traps.c @@ -132,7 +132,7 @@ static void dump_instr(struct pt_regs *regs) /*static*/ void __dump_stack(struct task_struct *tsk, unsigned long sp) { - dump_mem("Stack: ", sp, 8192+(unsigned long)task_stack_page(tsk)); + dump_mem("Stack: ", sp, 8192+(unsigned long)tsk->thread_info); } void dump_stack(void) @@ -158,7 +158,7 @@ void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) } else if (verify_stack(fp)) { printk("invalid frame pointer 0x%08x", fp); ok = 0; - } else if (fp < (unsigned long)end_of_stack(tsk)) + } else if (fp < (unsigned long)(tsk->thread_info + 1)) printk("frame pointer underflow"); printk("\n"); @@ -168,7 +168,7 @@ void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) /* FIXME - this is probably wrong.. */ void show_stack(struct task_struct *task, unsigned long *sp) { - dump_mem("Stack: ", (unsigned long)sp, 8192+(unsigned long)task_stack_page(task)); + dump_mem("Stack: ", (unsigned long)sp, 8192+(unsigned long)task->thread_info); } DEFINE_SPINLOCK(die_lock); @@ -187,7 +187,7 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err) printk("CPU: %d\n", smp_processor_id()); show_regs(regs); printk("Process %s (pid: %d, stack limit = 0x%p)\n", - current->comm, current->pid, end_of_stack(tsk)); + current->comm, current->pid, tsk->thread_info + 1); if (!user_mode(regs) || in_interrupt()) { __dump_stack(tsk, (unsigned long)(regs + 1)); diff --git a/trunk/arch/cris/arch-v10/drivers/ds1302.c b/trunk/arch/cris/arch-v10/drivers/ds1302.c index b100f26497c4..10795f67f687 100644 --- a/trunk/arch/cris/arch-v10/drivers/ds1302.c +++ b/trunk/arch/cris/arch-v10/drivers/ds1302.c @@ -148,7 +148,6 @@ #include #include #include -#include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/pcf8563.c b/trunk/arch/cris/arch-v10/drivers/pcf8563.c index af517c210383..f2c55742e90c 100644 --- a/trunk/arch/cris/arch-v10/drivers/pcf8563.c +++ b/trunk/arch/cris/arch-v10/drivers/pcf8563.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/process.c b/trunk/arch/cris/arch-v10/kernel/process.c index 0a675ce9e099..69e28b4057e8 100644 --- a/trunk/arch/cris/arch-v10/kernel/process.c +++ b/trunk/arch/cris/arch-v10/kernel/process.c @@ -79,7 +79,7 @@ void hard_reset_now (void) */ unsigned long thread_saved_pc(struct task_struct *t) { - return task_pt_regs(t)->irp; + return (unsigned long)user_regs(t->thread_info)->irp; } static void kernel_thread_helper(void* dummy, int (*fn)(void *), void * arg) @@ -128,7 +128,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, * remember that the task_struct doubles as the kernel stack for the task */ - childregs = task_pt_regs(p); + childregs = user_regs(p->thread_info); *childregs = *regs; /* struct copy of pt_regs */ diff --git a/trunk/arch/cris/arch-v10/kernel/ptrace.c b/trunk/arch/cris/arch-v10/kernel/ptrace.c index f214f74f264e..6cbd34a27b90 100644 --- a/trunk/arch/cris/arch-v10/kernel/ptrace.c +++ b/trunk/arch/cris/arch-v10/kernel/ptrace.c @@ -37,7 +37,7 @@ inline long get_reg(struct task_struct *task, unsigned int regno) if (regno == PT_USP) return task->thread.usp; else if (regno < PT_MAX) - return ((unsigned long *)task_pt_regs(task))[regno]; + return ((unsigned long *)user_regs(task->thread_info))[regno]; else return 0; } @@ -51,7 +51,7 @@ inline int put_reg(struct task_struct *task, unsigned int regno, if (regno == PT_USP) task->thread.usp = data; else if (regno < PT_MAX) - ((unsigned long *)task_pt_regs(task))[regno] = data; + ((unsigned long *)user_regs(task->thread_info))[regno] = data; else return -1; return 0; diff --git a/trunk/arch/cris/arch-v32/kernel/process.c b/trunk/arch/cris/arch-v32/kernel/process.c index 843513102d3c..882be42114f7 100644 --- a/trunk/arch/cris/arch-v32/kernel/process.c +++ b/trunk/arch/cris/arch-v32/kernel/process.c @@ -96,7 +96,7 @@ hard_reset_now(void) */ unsigned long thread_saved_pc(struct task_struct *t) { - return task_pt_regs(t)->erp; + return (unsigned long)user_regs(t->thread_info)->erp; } static void @@ -148,7 +148,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, * fix it up. Note: the task_struct doubles as the kernel stack for the * task. */ - childregs = task_pt_regs(p); + childregs = user_regs(p->thread_info); *childregs = *regs; /* Struct copy of pt_regs. */ p->set_child_tid = p->clear_child_tid = NULL; childregs->r10 = 0; /* Child returns 0 after a fork/clone. */ @@ -157,7 +157,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, * The TLS is in $mof beacuse it is the 5th argument to sys_clone. */ if (p->mm && (clone_flags & CLONE_SETTLS)) { - task_thread_info(p)->tls = regs->mof; + p->thread_info->tls = regs->mof; } /* Put the switch stack right below the pt_regs. */ diff --git a/trunk/arch/cris/arch-v32/kernel/ptrace.c b/trunk/arch/cris/arch-v32/kernel/ptrace.c index 82cf2e3624a4..5528b83a622b 100644 --- a/trunk/arch/cris/arch-v32/kernel/ptrace.c +++ b/trunk/arch/cris/arch-v32/kernel/ptrace.c @@ -46,7 +46,7 @@ long get_reg(struct task_struct *task, unsigned int regno) unsigned long ret; if (regno <= PT_EDA) - ret = ((unsigned long *)task_pt_regs(task))[regno]; + ret = ((unsigned long *)user_regs(task->thread_info))[regno]; else if (regno == PT_USP) ret = task->thread.usp; else if (regno == PT_PPC) @@ -65,13 +65,13 @@ long get_reg(struct task_struct *task, unsigned int regno) int put_reg(struct task_struct *task, unsigned int regno, unsigned long data) { if (regno <= PT_EDA) - ((unsigned long *)task_pt_regs(task))[regno] = data; + ((unsigned long *)user_regs(task->thread_info))[regno] = data; else if (regno == PT_USP) task->thread.usp = data; else if (regno == PT_PPC) { /* Write pseudo-PC to ERP only if changed. */ if (data != get_pseudo_pc(task)) - task_pt_regs(task)->erp = data; + ((unsigned long *)user_regs(task->thread_info))[PT_ERP] = data; } else if (regno <= PT_MAX) return put_debugreg(task->pid, regno, data); else diff --git a/trunk/arch/cris/arch-v32/kernel/smp.c b/trunk/arch/cris/arch-v32/kernel/smp.c index da40d19a151e..13867f4fad16 100644 --- a/trunk/arch/cris/arch-v32/kernel/smp.c +++ b/trunk/arch/cris/arch-v32/kernel/smp.c @@ -113,10 +113,10 @@ smp_boot_one_cpu(int cpuid) if (IS_ERR(idle)) panic("SMP: fork failed for CPU:%d", cpuid); - task_thread_info(idle)->cpu = cpuid; + idle->thread_info->cpu = cpuid; /* Information to the CPU that is about to boot */ - smp_init_current_idle_thread = task_thread_info(idle); + smp_init_current_idle_thread = idle->thread_info; cpu_now_booting = cpuid; /* Wait for CPU to come online */ diff --git a/trunk/arch/cris/arch-v32/mm/tlb.c b/trunk/arch/cris/arch-v32/mm/tlb.c index 9d75d7692303..b08a28bb58ab 100644 --- a/trunk/arch/cris/arch-v32/mm/tlb.c +++ b/trunk/arch/cris/arch-v32/mm/tlb.c @@ -198,9 +198,9 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next, per_cpu(current_pgd, cpu) = next->pgd; /* Switch context in the MMU. */ - if (tsk && task_thread_info(tsk)) + if (tsk && tsk->thread_info) { - SPEC_REG_WR(SPEC_REG_PID, next->context.page_id | task_thread_info(tsk)->tls); + SPEC_REG_WR(SPEC_REG_PID, next->context.page_id | tsk->thread_info->tls); } else { diff --git a/trunk/arch/frv/kernel/process.c b/trunk/arch/frv/kernel/process.c index 0fff8a61ef2a..c4488379ac3b 100644 --- a/trunk/arch/frv/kernel/process.c +++ b/trunk/arch/frv/kernel/process.c @@ -204,7 +204,7 @@ int copy_thread(int nr, unsigned long clone_flags, regs0 = __kernel_frame0_ptr; childregs0 = (struct pt_regs *) - (task_stack_page(p) + THREAD_SIZE - USER_CONTEXT_SIZE); + ((unsigned long) p->thread_info + THREAD_SIZE - USER_CONTEXT_SIZE); childregs = childregs0; /* set up the userspace frame (the only place that the USP is stored) */ @@ -220,7 +220,7 @@ int copy_thread(int nr, unsigned long clone_flags, *childregs = *regs; childregs->sp = (unsigned long) childregs0; childregs->next_frame = childregs0; - childregs->gr15 = (unsigned long) task_thread_info(p); + childregs->gr15 = (unsigned long) p->thread_info; childregs->gr29 = (unsigned long) p; } diff --git a/trunk/arch/h8300/kernel/process.c b/trunk/arch/h8300/kernel/process.c index ed79ae20e88d..585ed5efd0f7 100644 --- a/trunk/arch/h8300/kernel/process.c +++ b/trunk/arch/h8300/kernel/process.c @@ -195,7 +195,7 @@ int copy_thread(int nr, unsigned long clone_flags, { struct pt_regs * childregs; - childregs = (struct pt_regs *) (THREAD_SIZE + task_stack_page(p)) - 1; + childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; *childregs = *regs; childregs->retpc = (unsigned long) ret_from_fork; diff --git a/trunk/arch/i386/Kconfig b/trunk/arch/i386/Kconfig index d5d0df7f04fc..815878ebd30f 100644 --- a/trunk/arch/i386/Kconfig +++ b/trunk/arch/i386/Kconfig @@ -41,21 +41,8 @@ config ARCH_MAY_HAVE_PC_FDC bool default y -config DMI - bool - default y - source "init/Kconfig" -config DOUBLEFAULT - default y - bool "Enable doublefault exception handler" if EMBEDDED - help - This option allows trapping of rare doublefault exceptions that - would otherwise cause a system to silently reboot. Disabling this - option saves about 4k and might cause you much additional grey - hair. - menu "Processor type and features" choice diff --git a/trunk/arch/i386/boot/Makefile b/trunk/arch/i386/boot/Makefile index f136752563b1..0fea75dd4e31 100644 --- a/trunk/arch/i386/boot/Makefile +++ b/trunk/arch/i386/boot/Makefile @@ -101,4 +101,4 @@ zlilo: $(BOOTIMAGE) if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi install: - sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" + sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)" diff --git a/trunk/arch/i386/kernel/acpi/boot.c b/trunk/arch/i386/kernel/acpi/boot.c index 2111529dea77..447fa9e33ffb 100644 --- a/trunk/arch/i386/kernel/acpi/boot.c +++ b/trunk/arch/i386/kernel/acpi/boot.c @@ -108,7 +108,7 @@ char *__acpi_map_table(unsigned long phys_addr, unsigned long size) if (!phys_addr || !size) return NULL; - if (phys_addr+size <= (end_pfn_map << PAGE_SHIFT) + PAGE_SIZE) + if (phys_addr < (end_pfn_map << PAGE_SHIFT)) return __va(phys_addr); return NULL; diff --git a/trunk/arch/i386/kernel/apic.c b/trunk/arch/i386/kernel/apic.c index acd3f1e34ca6..d8f94e78de8a 100644 --- a/trunk/arch/i386/kernel/apic.c +++ b/trunk/arch/i386/kernel/apic.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -38,16 +37,9 @@ #include #include -#include #include "io_ports.h" -/* - * cpu_mask that denotes the CPUs that needs timer interrupt coming in as - * IPIs in place of local APIC timers - */ -static cpumask_t timer_bcast_ipi; - /* * Knob to control our willingness to enable the local APIC. */ @@ -100,6 +92,10 @@ void __init apic_intr_init(void) /* Using APIC to generate smp_local_timer_interrupt? */ int using_apic_timer = 0; +static DEFINE_PER_CPU(int, prof_multiplier) = 1; +static DEFINE_PER_CPU(int, prof_old_multiplier) = 1; +static DEFINE_PER_CPU(int, prof_counter) = 1; + static int enabled_via_apicbase; void enable_NMI_through_LVT0 (void * dummy) @@ -939,16 +935,11 @@ void (*wait_timer_tick)(void) __devinitdata = wait_8254_wraparound; static void __setup_APIC_LVTT(unsigned int clocks) { unsigned int lvtt_value, tmp_value, ver; - int cpu = smp_processor_id(); ver = GET_APIC_VERSION(apic_read(APIC_LVR)); lvtt_value = APIC_LVT_TIMER_PERIODIC | LOCAL_TIMER_VECTOR; if (!APIC_INTEGRATED(ver)) lvtt_value |= SET_APIC_TIMER_BASE(APIC_TIMER_BASE_DIV); - - if (cpu_isset(cpu, timer_bcast_ipi)) - lvtt_value |= APIC_LVT_MASKED; - apic_write_around(APIC_LVTT, lvtt_value); /* @@ -1081,7 +1072,7 @@ void __devinit setup_secondary_APIC_clock(void) setup_APIC_timer(calibration_result); } -void disable_APIC_timer(void) +void __devinit disable_APIC_timer(void) { if (using_apic_timer) { unsigned long v; @@ -1093,10 +1084,7 @@ void disable_APIC_timer(void) void enable_APIC_timer(void) { - int cpu = smp_processor_id(); - - if (using_apic_timer && - !cpu_isset(cpu, timer_bcast_ipi)) { + if (using_apic_timer) { unsigned long v; v = apic_read(APIC_LVTT); @@ -1104,31 +1092,33 @@ void enable_APIC_timer(void) } } -void switch_APIC_timer_to_ipi(void *cpumask) +/* + * the frequency of the profiling timer can be changed + * by writing a multiplier value into /proc/profile. + */ +int setup_profiling_timer(unsigned int multiplier) { - cpumask_t mask = *(cpumask_t *)cpumask; - int cpu = smp_processor_id(); - - if (cpu_isset(cpu, mask) && - !cpu_isset(cpu, timer_bcast_ipi)) { - disable_APIC_timer(); - cpu_set(cpu, timer_bcast_ipi); - } -} -EXPORT_SYMBOL(switch_APIC_timer_to_ipi); + int i; -void switch_ipi_to_APIC_timer(void *cpumask) -{ - cpumask_t mask = *(cpumask_t *)cpumask; - int cpu = smp_processor_id(); + /* + * Sanity check. [at least 500 APIC cycles should be + * between APIC interrupts as a rule of thumb, to avoid + * irqs flooding us] + */ + if ( (!multiplier) || (calibration_result/multiplier < 500)) + return -EINVAL; + + /* + * Set the new multiplier for each CPU. CPUs don't start using the + * new values until the next timer interrupt in which they do process + * accounting. At that time they also adjust their APIC timers + * accordingly. + */ + for (i = 0; i < NR_CPUS; ++i) + per_cpu(prof_multiplier, i) = multiplier; - if (cpu_isset(cpu, mask) && - cpu_isset(cpu, timer_bcast_ipi)) { - cpu_clear(cpu, timer_bcast_ipi); - enable_APIC_timer(); - } + return 0; } -EXPORT_SYMBOL(switch_ipi_to_APIC_timer); #undef APIC_DIVISOR @@ -1144,10 +1134,32 @@ EXPORT_SYMBOL(switch_ipi_to_APIC_timer); inline void smp_local_timer_interrupt(struct pt_regs * regs) { + int cpu = smp_processor_id(); + profile_tick(CPU_PROFILING, regs); + if (--per_cpu(prof_counter, cpu) <= 0) { + /* + * The multiplier may have changed since the last time we got + * to this point as a result of the user writing to + * /proc/profile. In this case we need to adjust the APIC + * timer accordingly. + * + * Interrupts are already masked off at this point. + */ + per_cpu(prof_counter, cpu) = per_cpu(prof_multiplier, cpu); + if (per_cpu(prof_counter, cpu) != + per_cpu(prof_old_multiplier, cpu)) { + __setup_APIC_LVTT( + calibration_result/ + per_cpu(prof_counter, cpu)); + per_cpu(prof_old_multiplier, cpu) = + per_cpu(prof_counter, cpu); + } + #ifdef CONFIG_SMP - update_process_times(user_mode_vm(regs)); + update_process_times(user_mode_vm(regs)); #endif + } /* * We take the 'long' return path, and there every subsystem @@ -1194,43 +1206,6 @@ fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) irq_exit(); } -#ifndef CONFIG_SMP -static void up_apic_timer_interrupt_call(struct pt_regs *regs) -{ - int cpu = smp_processor_id(); - - /* - * the NMI deadlock-detector uses this. - */ - per_cpu(irq_stat, cpu).apic_timer_irqs++; - - smp_local_timer_interrupt(regs); -} -#endif - -void smp_send_timer_broadcast_ipi(struct pt_regs *regs) -{ - cpumask_t mask; - - cpus_and(mask, cpu_online_map, timer_bcast_ipi); - if (!cpus_empty(mask)) { -#ifdef CONFIG_SMP - send_IPI_mask(mask, LOCAL_TIMER_VECTOR); -#else - /* - * We can directly call the apic timer interrupt handler - * in UP case. Minus all irq related functions - */ - up_apic_timer_interrupt_call(regs); -#endif - } -} - -int setup_profiling_timer(unsigned int multiplier) -{ - return -EINVAL; -} - /* * This interrupt should _never_ happen with our APIC/SMP architecture */ diff --git a/trunk/arch/i386/kernel/apm.c b/trunk/arch/i386/kernel/apm.c index 05312a8abb8b..9d8827156e54 100644 --- a/trunk/arch/i386/kernel/apm.c +++ b/trunk/arch/i386/kernel/apm.c @@ -219,7 +219,6 @@ #include #include #include -#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/amd.c b/trunk/arch/i386/kernel/cpu/amd.c index 333578a4e91a..e7697e077f6b 100644 --- a/trunk/arch/i386/kernel/cpu/amd.c +++ b/trunk/arch/i386/kernel/cpu/amd.c @@ -216,12 +216,6 @@ static void __init init_amd(struct cpuinfo_x86 *c) c->x86_max_cores = 1; } - if (cpuid_eax(0x80000000) >= 0x80000007) { - c->x86_power = cpuid_edx(0x80000007); - if (c->x86_power & (1<<8)) - set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); - } - #ifdef CONFIG_X86_HT /* * On a AMD dual core setup the lower bits of the APIC id @@ -239,7 +233,6 @@ static void __init init_amd(struct cpuinfo_x86 *c) cpu, c->x86_max_cores, cpu_core_id[cpu]); } #endif - } static unsigned int amd_size_cache(struct cpuinfo_x86 * c, unsigned int size) diff --git a/trunk/arch/i386/kernel/cpu/common.c b/trunk/arch/i386/kernel/cpu/common.c index 15aee26ec2b6..170400879f44 100644 --- a/trunk/arch/i386/kernel/cpu/common.c +++ b/trunk/arch/i386/kernel/cpu/common.c @@ -204,10 +204,7 @@ static int __devinit have_cpuid_p(void) /* Do minimum CPU detection early. Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment. - The others are not touched to avoid unwanted side effects. - - WARNING: this function is only called on the BP. Don't add code here - that is supposed to run on all CPUs. */ + The others are not touched to avoid unwanted side effects. */ static void __init early_cpu_detect(void) { struct cpuinfo_x86 *c = &boot_cpu_data; @@ -239,6 +236,12 @@ static void __init early_cpu_detect(void) if (cap0 & (1<<19)) c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8; } + + early_intel_workaround(c); + +#ifdef CONFIG_X86_HT + phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; +#endif } void __devinit generic_identify(struct cpuinfo_x86 * c) @@ -286,12 +289,6 @@ void __devinit generic_identify(struct cpuinfo_x86 * c) get_model_name(c); /* Default name */ } } - - early_intel_workaround(c); - -#ifdef CONFIG_X86_HT - phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; -#endif } static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c index 7975e79d5fa4..871366b83b3f 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c @@ -40,6 +40,8 @@ #include #include +#include "speedstep-est-common.h" + #define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "acpi-cpufreq", msg) MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski"); @@ -365,7 +367,6 @@ acpi_cpufreq_cpu_init ( unsigned int cpu = policy->cpu; struct cpufreq_acpi_io *data; unsigned int result = 0; - struct cpuinfo_x86 *c = &cpu_data[policy->cpu]; union acpi_object arg0 = {ACPI_TYPE_BUFFER}; u32 arg0_buf[3]; @@ -389,7 +390,7 @@ acpi_cpufreq_cpu_init ( if (result) goto err_free; - if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { + if (is_const_loops_cpu(cpu)) { acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS; } diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c index 9a826cde4fd1..edb9873e27e3 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c @@ -35,6 +35,8 @@ #include #include +#include "speedstep-est-common.h" + #define PFX "speedstep-centrino: " #define MAINTAINER "Jeremy Fitzhardinge " @@ -491,13 +493,12 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) unsigned l, h; int ret; int i; - struct cpuinfo_x86 *c = &cpu_data[policy->cpu]; /* Only Intel makes Enhanced Speedstep-capable CPUs */ if (cpu->x86_vendor != X86_VENDOR_INTEL || !cpu_has(cpu, X86_FEATURE_EST)) return -ENODEV; - if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { + if (is_const_loops_cpu(policy->cpu)) { centrino_driver.flags |= CPUFREQ_CONST_LOOPS; } diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h new file mode 100644 index 000000000000..5ce995c9d866 --- /dev/null +++ b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h @@ -0,0 +1,25 @@ +/* + * Routines common for drivers handling Enhanced Speedstep Technology + * Copyright (C) 2004 Venkatesh Pallipadi + * + * Licensed under the terms of the GNU GPL License version 2 -- see + * COPYING for details. + */ + +static inline int is_const_loops_cpu(unsigned int cpu) +{ + struct cpuinfo_x86 *c = cpu_data + cpu; + + if (c->x86_vendor != X86_VENDOR_INTEL || !cpu_has(c, X86_FEATURE_EST)) + return 0; + + /* + * on P-4s, the TSC runs with constant frequency independent of cpu freq + * when we use EST + */ + if (c->x86 == 0xf) + return 1; + + return 0; +} + diff --git a/trunk/arch/i386/kernel/cpu/intel.c b/trunk/arch/i386/kernel/cpu/intel.c index 8c0120186b9f..5e2da704f0fa 100644 --- a/trunk/arch/i386/kernel/cpu/intel.c +++ b/trunk/arch/i386/kernel/cpu/intel.c @@ -183,13 +183,10 @@ static void __devinit init_intel(struct cpuinfo_x86 *c) } #endif - if (c->x86 == 15) + if (c->x86 == 15) set_bit(X86_FEATURE_P4, c->x86_capability); if (c->x86 == 6) set_bit(X86_FEATURE_P3, c->x86_capability); - if ((c->x86 == 0xf && c->x86_model >= 0x03) || - (c->x86 == 0x6 && c->x86_model >= 0x0e)) - set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); } diff --git a/trunk/arch/i386/kernel/cpu/mtrr/if.c b/trunk/arch/i386/kernel/cpu/mtrr/if.c index 5ac051bb9d55..cf39e205d33c 100644 --- a/trunk/arch/i386/kernel/cpu/mtrr/if.c +++ b/trunk/arch/i386/kernel/cpu/mtrr/if.c @@ -1,6 +1,5 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/proc.c b/trunk/arch/i386/kernel/cpu/proc.c index 89a85af33d28..6d91b274589c 100644 --- a/trunk/arch/i386/kernel/cpu/proc.c +++ b/trunk/arch/i386/kernel/cpu/proc.c @@ -29,7 +29,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL, NULL, NULL, NULL, "mp", "nx", NULL, "mmxext", NULL, - NULL, "fxsr_opt", "rdtscp", NULL, NULL, "lm", "3dnowext", "3dnow", + NULL, "fxsr_opt", NULL, NULL, NULL, "lm", "3dnowext", "3dnow", /* Transmeta-defined */ "recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL, @@ -40,7 +40,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) /* Other (Linux-defined) */ "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", NULL, NULL, NULL, NULL, - "constant_tsc", NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @@ -57,21 +57,11 @@ static int show_cpuinfo(struct seq_file *m, void *v) NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* AMD-defined (#2) */ - "lahf_lm", "cmp_legacy", "svm", NULL, "cr8legacy", NULL, NULL, NULL, + "lahf_lm", "cmp_legacy", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; - static char *x86_power_flags[] = { - "ts", /* temperature sensor */ - "fid", /* frequency id control */ - "vid", /* voltage id control */ - "ttp", /* thermal trip */ - "tm", - "stc", - NULL, - /* nothing */ /* constant_tsc - moved to flags */ - }; struct cpuinfo_x86 *c = v; int i, n = c - cpu_data; int fpu_exception; @@ -141,17 +131,6 @@ static int show_cpuinfo(struct seq_file *m, void *v) x86_cap_flags[i] != NULL ) seq_printf(m, " %s", x86_cap_flags[i]); - for (i = 0; i < 32; i++) - if (c->x86_power & (1 << i)) { - if (i < ARRAY_SIZE(x86_power_flags) && - x86_power_flags[i]) - seq_printf(m, "%s%s", - x86_power_flags[i][0]?" ":"", - x86_power_flags[i]); - else - seq_printf(m, " [%d]", i); - } - seq_printf(m, "\nbogomips\t: %lu.%02lu\n\n", c->loops_per_jiffy/(500000/HZ), (c->loops_per_jiffy/(5000/HZ)) % 100); diff --git a/trunk/arch/i386/kernel/dmi_scan.c b/trunk/arch/i386/kernel/dmi_scan.c index 6a93d75db431..58516e2ac172 100644 --- a/trunk/arch/i386/kernel/dmi_scan.c +++ b/trunk/arch/i386/kernel/dmi_scan.c @@ -4,7 +4,7 @@ #include #include #include -#include + static char * __init dmi_string(struct dmi_header *dm, u8 s) { @@ -19,7 +19,7 @@ static char * __init dmi_string(struct dmi_header *dm, u8 s) } if (*bp != 0) { - str = dmi_alloc(strlen(bp) + 1); + str = alloc_bootmem(strlen(bp) + 1); if (str != NULL) strcpy(str, bp); else @@ -40,7 +40,7 @@ static int __init dmi_table(u32 base, int len, int num, u8 *buf, *data; int i = 0; - buf = dmi_ioremap(base, len); + buf = bt_ioremap(base, len); if (buf == NULL) return -1; @@ -65,7 +65,7 @@ static int __init dmi_table(u32 base, int len, int num, data += 2; i++; } - dmi_iounmap(buf, len); + bt_iounmap(buf, len); return 0; } @@ -112,7 +112,7 @@ static void __init dmi_save_devices(struct dmi_header *dm) if ((*d & 0x80) == 0) continue; - dev = dmi_alloc(sizeof(*dev)); + dev = alloc_bootmem(sizeof(*dev)); if (!dev) { printk(KERN_ERR "dmi_save_devices: out of memory.\n"); break; @@ -131,7 +131,7 @@ static void __init dmi_save_ipmi_device(struct dmi_header *dm) struct dmi_device *dev; void * data; - data = dmi_alloc(dm->length); + data = alloc_bootmem(dm->length); if (data == NULL) { printk(KERN_ERR "dmi_save_ipmi_device: out of memory.\n"); return; @@ -139,7 +139,7 @@ static void __init dmi_save_ipmi_device(struct dmi_header *dm) memcpy(data, dm, dm->length); - dev = dmi_alloc(sizeof(*dev)); + dev = alloc_bootmem(sizeof(*dev)); if (!dev) { printk(KERN_ERR "dmi_save_ipmi_device: out of memory.\n"); return; @@ -221,7 +221,7 @@ void __init dmi_scan_machine(void) } } -out: printk(KERN_INFO "DMI not present or invalid.\n"); +out: printk(KERN_INFO "DMI not present.\n"); } diff --git a/trunk/arch/i386/kernel/io_apic.c b/trunk/arch/i386/kernel/io_apic.c index f2dd218d88cb..7554f8fd874a 100644 --- a/trunk/arch/i386/kernel/io_apic.c +++ b/trunk/arch/i386/kernel/io_apic.c @@ -1649,7 +1649,7 @@ static void __init enable_IO_APIC(void) for(apic = 0; apic < nr_ioapics; apic++) { int pin; /* See if any of the pins is in ExtINT mode */ - for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) { + for(pin = 0; pin < nr_ioapic_registers[i]; pin++) { struct IO_APIC_route_entry entry; spin_lock_irqsave(&ioapic_lock, flags); *(((int *)&entry) + 0) = io_apic_read(apic, 0x10 + 2 * pin); diff --git a/trunk/arch/i386/kernel/ioport.c b/trunk/arch/i386/kernel/ioport.c index 79026f026b85..b59a34dbe262 100644 --- a/trunk/arch/i386/kernel/ioport.c +++ b/trunk/arch/i386/kernel/ioport.c @@ -7,7 +7,6 @@ #include #include -#include #include #include #include diff --git a/trunk/arch/i386/kernel/kprobes.c b/trunk/arch/i386/kernel/kprobes.c index 6483eeb1a4e8..2f372dbd34fd 100644 --- a/trunk/arch/i386/kernel/kprobes.c +++ b/trunk/arch/i386/kernel/kprobes.c @@ -188,19 +188,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs) kcb->kprobe_status = KPROBE_REENTER; return 1; } else { - if (regs->eflags & VM_MASK) { - /* We are in virtual-8086 mode. Return 0 */ - goto no_kprobe; - } - if (*addr != BREAKPOINT_INSTRUCTION) { - /* The breakpoint instruction was removed by - * another cpu right after we hit, no further - * handling of this interrupt is appropriate - */ - regs->eip -= sizeof(kprobe_opcode_t); - ret = 1; - goto no_kprobe; - } p = __get_cpu_var(current_kprobe); if (p->break_handler && p->break_handler(p, regs)) { goto ss_probe; diff --git a/trunk/arch/i386/kernel/microcode.c b/trunk/arch/i386/kernel/microcode.c index d3fdf0057d82..165f13158c60 100644 --- a/trunk/arch/i386/kernel/microcode.c +++ b/trunk/arch/i386/kernel/microcode.c @@ -70,7 +70,6 @@ */ //#define DEBUG /* pr_debug */ -#include #include #include #include @@ -166,7 +165,7 @@ static void collect_cpu_info (void *unused) wrmsr(MSR_IA32_UCODE_REV, 0, 0); /* see notes above for revision 1.07. Apparent chip bug */ - sync_core(); + serialize_cpu(); /* get the current revision from MSR 0x8B */ rdmsr(MSR_IA32_UCODE_REV, val[0], uci->rev); pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n", @@ -380,7 +379,7 @@ static void do_update_one (void * unused) wrmsr(MSR_IA32_UCODE_REV, 0, 0); /* see notes above for revision 1.07. Apparent chip bug */ - sync_core(); + serialize_cpu(); /* get the current revision from MSR 0x8B */ rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]); diff --git a/trunk/arch/i386/kernel/process.c b/trunk/arch/i386/kernel/process.c index 2185377fdde1..035928f3f6c1 100644 --- a/trunk/arch/i386/kernel/process.c +++ b/trunk/arch/i386/kernel/process.c @@ -424,7 +424,18 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, struct task_struct *tsk; int err; - childregs = task_pt_regs(p); + childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; + /* + * The below -8 is to reserve 8 bytes on top of the ring0 stack. + * This is necessary to guarantee that the entire "struct pt_regs" + * is accessable even if the CPU haven't stored the SS/ESP registers + * on the stack (interrupt gate does not save these registers + * when switching to the same priv ring). + * Therefore beware: accessing the xss/esp fields of the + * "struct pt_regs" is possible, but they may contain the + * completely wrong values. + */ + childregs = (struct pt_regs *) ((unsigned long) childregs - 8); *childregs = *regs; childregs->eax = 0; childregs->esp = esp; @@ -529,7 +540,12 @@ EXPORT_SYMBOL(dump_thread); */ int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) { - struct pt_regs ptregs = *task_pt_regs(tsk); + struct pt_regs ptregs; + + ptregs = *(struct pt_regs *) + ((unsigned long)tsk->thread_info + + /* see comments in copy_thread() about -8 */ + THREAD_SIZE - sizeof(ptregs) - 8); ptregs.xcs &= 0xffff; ptregs.xds &= 0xffff; ptregs.xes &= 0xffff; @@ -585,8 +601,8 @@ static inline void disable_tsc(struct task_struct *prev_p, * gcc should eliminate the ->thread_info dereference if * has_secure_computing returns 0 at compile time (SECCOMP=n). */ - prev = task_thread_info(prev_p); - next = task_thread_info(next_p); + prev = prev_p->thread_info; + next = next_p->thread_info; if (has_secure_computing(prev) || has_secure_computing(next)) { /* slow path here */ @@ -771,7 +787,7 @@ unsigned long get_wchan(struct task_struct *p) int count = 0; if (!p || p == current || p->state == TASK_RUNNING) return 0; - stack_page = (unsigned long)task_stack_page(p); + stack_page = (unsigned long)p->thread_info; esp = p->thread.esp; if (!stack_page || esp < stack_page || esp > top_esp+stack_page) return 0; diff --git a/trunk/arch/i386/kernel/reboot.c b/trunk/arch/i386/kernel/reboot.c index d207242976d3..2fa5803a759d 100644 --- a/trunk/arch/i386/kernel/reboot.c +++ b/trunk/arch/i386/kernel/reboot.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -356,10 +355,10 @@ void machine_halt(void) void machine_power_off(void) { - if (pm_power_off) { - machine_shutdown(); + machine_shutdown(); + + if (pm_power_off) pm_power_off(); - } } diff --git a/trunk/arch/i386/kernel/setup.c b/trunk/arch/i386/kernel/setup.c index 51e513b4f72d..f685637a100d 100644 --- a/trunk/arch/i386/kernel/setup.c +++ b/trunk/arch/i386/kernel/setup.c @@ -45,7 +45,6 @@ #include #include #include -#include #include