From 9827ee3f8ab06692fad0df8e2bc4de5d746606ed Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 11 Jan 2006 19:36:32 -0800 Subject: [PATCH] --- yaml --- r: 18043 b: refs/heads/master c: 593195f9b2309693f27b402f34573f7920b82c3e h: refs/heads/master i: 18041: c5a8cf22037d2dc1d7c685a8e297fd18e4646bd5 18039: 55babd5afeb2e177d5f1690c909832691984da03 v: v3 --- [refs] | 2 +- trunk/Documentation/filesystems/ext3.txt | 4 +- trunk/Documentation/kdump/gdbmacros.txt | 22 + trunk/Documentation/oops-tracing.txt | 8 +- trunk/Documentation/x86_64/boot-options.txt | 2 +- trunk/Documentation/x86_64/cpu-hotplug-spec | 21 + trunk/MAINTAINERS | 7 - trunk/arch/alpha/kernel/pci-noop.c | 1 + trunk/arch/arm/common/rtctime.c | 1 + trunk/arch/arm/kernel/apm.c | 1 + trunk/arch/cris/arch-v10/drivers/ds1302.c | 1 + trunk/arch/cris/arch-v10/drivers/pcf8563.c | 1 + trunk/arch/i386/Kconfig | 13 + 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/reboot.c | 7 +- trunk/arch/i386/kernel/setup.c | 4 +- trunk/arch/i386/kernel/time.c | 6 + trunk/arch/i386/kernel/vm86.c | 1 + trunk/arch/ia64/hp/sim/simserial.c | 1 + trunk/arch/ia64/ia32/sys_ia32.c | 1 + trunk/arch/ia64/kernel/kprobes.c | 7 + trunk/arch/ia64/kernel/perfmon.c | 1 + trunk/arch/ia64/kernel/salinfo.c | 1 + trunk/arch/ia64/sn/kernel/tiocx.c | 1 + trunk/arch/m68k/bvme6000/rtc.c | 1 + trunk/arch/m68k/kernel/sys_m68k.c | 1 + trunk/arch/m68k/mvme16x/rtc.c | 1 + trunk/arch/mips/kernel/syscall.c | 1 + trunk/arch/mips/kernel/sysirix.c | 1 + trunk/arch/parisc/hpux/sys_hpux.c | 1 + trunk/arch/parisc/kernel/perf.c | 1 + 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/rtas.c | 13 +- trunk/arch/powerpc/kernel/setup_64.c | 60 +- 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 + .../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/sysdev/Makefile | 2 +- trunk/arch/ppc/4xx_io/serial_sicc.c | 1 + trunk/arch/ppc/Kconfig | 4 + trunk/arch/ppc/kernel/ppc_htab.c | 1 + trunk/arch/s390/kernel/compat_linux.c | 1 + trunk/arch/sparc/kernel/sys_sunos.c | 1 + trunk/arch/sparc64/Kconfig | 2 +- trunk/arch/sparc64/kernel/kprobes.c | 8 + trunk/arch/sparc64/kernel/sys_sparc32.c | 1 + trunk/arch/sparc64/kernel/sys_sunos32.c | 1 + 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 - .../sysdep-i386/kernel-offsets.h} | 5 +- .../sysdep-x86_64/kernel-offsets.h} | 2 +- trunk/arch/um/kernel/asm-offsets.c | 2 +- trunk/arch/um/kernel/skas/process.c | 4 +- trunk/arch/um/kernel/um_arch.c | 4 - trunk/arch/x86_64/Kconfig | 40 +- trunk/arch/x86_64/Makefile | 7 +- trunk/arch/x86_64/defconfig | 116 +- trunk/arch/x86_64/ia32/ia32_signal.c | 26 +- trunk/arch/x86_64/ia32/ia32entry.S | 38 +- trunk/arch/x86_64/ia32/ptrace32.c | 9 +- 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/i8259.c | 3 +- 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 | 71 +- trunk/arch/x86_64/kernel/ptrace.c | 9 +- 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 | 57 +- 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 | 158 +- 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/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/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/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 | 4 +- trunk/drivers/net/Kconfig | 2 +- trunk/drivers/net/cs89x0.c | 2 +- trunk/drivers/oprofile/event_buffer.c | 1 + trunk/drivers/parisc/led.c | 1 + trunk/drivers/parisc/pdc_stable.c | 2 +- trunk/fs/attr.c | 1 + trunk/fs/autofs/root.c | 1 + trunk/fs/autofs4/root.c | 1 + trunk/fs/buffer.c | 1 + trunk/fs/compat_ioctl.c | 36 + 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/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 | 2 +- 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_vnodeops.c | 3 + trunk/include/asm-generic/mutex-dec.h | 2 +- trunk/include/asm-h8300/page.h | 6 - 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/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 | 14 +- 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/udbg.h | 9 +- 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 | 5 + 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 | 58 +- 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 | 8 +- 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 | 44 +- trunk/include/asm-x86_64/thread_info.h | 1 + trunk/include/asm-x86_64/timex.h | 16 + trunk/include/asm-x86_64/uaccess.h | 1 + trunk/include/asm-x86_64/vsyscall.h | 4 +- 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 | 1 + trunk/include/linux/mmzone.h | 2 +- trunk/include/linux/pci_ids.h | 3 + trunk/include/linux/sched.h | 15 - 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/ptrace.c | 1 + trunk/kernel/sched.c | 7 +- 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/mlock.c | 1 + trunk/mm/mmap.c | 1 + trunk/mm/mremap.c | 1 + trunk/mm/page_alloc.c | 9 +- trunk/mm/swapfile.c | 1 + 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/decnet/af_decnet.c | 1 + trunk/net/decnet/dn_dev.c | 1 + 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 +- trunk/net/ipv4/netfilter/ip_tables.c | 1 + 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/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/i810_audio.c | 4 +- trunk/sound/pci/emu10k1/emufx.c | 1 + 463 files changed, 10465 insertions(+), 9997 deletions(-) create mode 100644 trunk/Documentation/x86_64/cpu-hotplug-spec delete mode 100644 trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h create mode 100644 trunk/arch/powerpc/boot/.gitignore create mode 100644 trunk/arch/powerpc/kernel/vdso32/.gitignore create mode 100644 trunk/arch/powerpc/kernel/vdso64/.gitignore create mode 100644 trunk/arch/powerpc/platforms/83xx/Kconfig create mode 100644 trunk/arch/powerpc/platforms/83xx/Makefile rename trunk/arch/um/{sys-i386/kernel-offsets.c => include/sysdep-i386/kernel-offsets.h} (80%) rename trunk/arch/um/{sys-x86_64/kernel-offsets.c => include/sysdep-x86_64/kernel-offsets.h} (90%) create mode 100644 trunk/arch/x86_64/kernel/pci-swiotlb.c create mode 100644 trunk/arch/x86_64/kernel/vsmp.c delete mode 100644 trunk/arch/x86_64/pci/Makefile-BUS create mode 100644 trunk/include/asm-x86_64/gart-mapping.h create mode 100644 trunk/include/asm-x86_64/idle.h diff --git a/[refs] b/[refs] index 4c4d2ba8a1ba..1210bbea5d2c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f9cfc08d640e1586e76eee63cc2b0a9360bc7c7e +refs/heads/master: 593195f9b2309693f27b402f34573f7920b82c3e diff --git a/trunk/Documentation/filesystems/ext3.txt b/trunk/Documentation/filesystems/ext3.txt index f4d0de6bac63..afb1335c05d6 100644 --- a/trunk/Documentation/filesystems/ext3.txt +++ b/trunk/Documentation/filesystems/ext3.txt @@ -84,8 +84,6 @@ reservation noreservation -resize= - bsddf (*) Make 'df' act like BSD. minixdf Make 'df' act like Minix. @@ -175,6 +173,7 @@ 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 @@ -184,6 +183,7 @@ 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 bc1b9eb92ae1..dcf5580380ab 100644 --- a/trunk/Documentation/kdump/gdbmacros.txt +++ b/trunk/Documentation/kdump/gdbmacros.txt @@ -177,3 +177,25 @@ 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/oops-tracing.txt b/trunk/Documentation/oops-tracing.txt index 05960f8a748e..2503404ae5c2 100644 --- a/trunk/Documentation/oops-tracing.txt +++ b/trunk/Documentation/oops-tracing.txt @@ -41,11 +41,9 @@ 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) 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. +(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. Full Information diff --git a/trunk/Documentation/x86_64/boot-options.txt b/trunk/Documentation/x86_64/boot-options.txt index e566affeed7f..72ab9b99b22c 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 or half the available CPUs) + (defaults are specified by the BIOS, see Documentation/x86_64/cpu-hotplug-spec) NUMA diff --git a/trunk/Documentation/x86_64/cpu-hotplug-spec b/trunk/Documentation/x86_64/cpu-hotplug-spec new file mode 100644 index 000000000000..5c0fa345e556 --- /dev/null +++ b/trunk/Documentation/x86_64/cpu-hotplug-spec @@ -0,0 +1,21 @@ +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 b6416a293ec9..0db72a36e245 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -2359,13 +2359,6 @@ 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 diff --git a/trunk/arch/alpha/kernel/pci-noop.c b/trunk/arch/alpha/kernel/pci-noop.c index 9903e3a79102..fff5cf93e816 100644 --- a/trunk/arch/alpha/kernel/pci-noop.c +++ b/trunk/arch/alpha/kernel/pci-noop.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/common/rtctime.c b/trunk/arch/arm/common/rtctime.c index 72b03f201eb9..ffb82d5bedef 100644 --- a/trunk/arch/arm/common/rtctime.c +++ b/trunk/arch/arm/common/rtctime.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/arm/kernel/apm.c b/trunk/arch/arm/kernel/apm.c index b9df1b782bb1..766b6c05c6db 100644 --- a/trunk/arch/arm/kernel/apm.c +++ b/trunk/arch/arm/kernel/apm.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/ds1302.c b/trunk/arch/cris/arch-v10/drivers/ds1302.c index 10795f67f687..b100f26497c4 100644 --- a/trunk/arch/cris/arch-v10/drivers/ds1302.c +++ b/trunk/arch/cris/arch-v10/drivers/ds1302.c @@ -148,6 +148,7 @@ #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 f2c55742e90c..af517c210383 100644 --- a/trunk/arch/cris/arch-v10/drivers/pcf8563.c +++ b/trunk/arch/cris/arch-v10/drivers/pcf8563.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/i386/Kconfig b/trunk/arch/i386/Kconfig index 815878ebd30f..d5d0df7f04fc 100644 --- a/trunk/arch/i386/Kconfig +++ b/trunk/arch/i386/Kconfig @@ -41,8 +41,21 @@ 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/kernel/acpi/boot.c b/trunk/arch/i386/kernel/acpi/boot.c index 447fa9e33ffb..2111529dea77 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 < (end_pfn_map << PAGE_SHIFT)) + if (phys_addr+size <= (end_pfn_map << PAGE_SHIFT) + PAGE_SIZE) return __va(phys_addr); return NULL; diff --git a/trunk/arch/i386/kernel/apic.c b/trunk/arch/i386/kernel/apic.c index d8f94e78de8a..acd3f1e34ca6 100644 --- a/trunk/arch/i386/kernel/apic.c +++ b/trunk/arch/i386/kernel/apic.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -37,9 +38,16 @@ #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. */ @@ -92,10 +100,6 @@ 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) @@ -935,11 +939,16 @@ 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); /* @@ -1072,7 +1081,7 @@ void __devinit setup_secondary_APIC_clock(void) setup_APIC_timer(calibration_result); } -void __devinit disable_APIC_timer(void) +void disable_APIC_timer(void) { if (using_apic_timer) { unsigned long v; @@ -1084,7 +1093,10 @@ void __devinit disable_APIC_timer(void) void enable_APIC_timer(void) { - if (using_apic_timer) { + int cpu = smp_processor_id(); + + if (using_apic_timer && + !cpu_isset(cpu, timer_bcast_ipi)) { unsigned long v; v = apic_read(APIC_LVTT); @@ -1092,33 +1104,31 @@ void enable_APIC_timer(void) } } -/* - * the frequency of the profiling timer can be changed - * by writing a multiplier value into /proc/profile. - */ -int setup_profiling_timer(unsigned int multiplier) +void switch_APIC_timer_to_ipi(void *cpumask) { - int i; + 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)) { + disable_APIC_timer(); + cpu_set(cpu, timer_bcast_ipi); + } +} +EXPORT_SYMBOL(switch_APIC_timer_to_ipi); - return 0; +void switch_ipi_to_APIC_timer(void *cpumask) +{ + cpumask_t mask = *(cpumask_t *)cpumask; + int cpu = smp_processor_id(); + + if (cpu_isset(cpu, mask) && + cpu_isset(cpu, timer_bcast_ipi)) { + cpu_clear(cpu, timer_bcast_ipi); + enable_APIC_timer(); + } } +EXPORT_SYMBOL(switch_ipi_to_APIC_timer); #undef APIC_DIVISOR @@ -1134,32 +1144,10 @@ int setup_profiling_timer(unsigned int multiplier) 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 @@ -1206,6 +1194,43 @@ 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 9d8827156e54..05312a8abb8b 100644 --- a/trunk/arch/i386/kernel/apm.c +++ b/trunk/arch/i386/kernel/apm.c @@ -219,6 +219,7 @@ #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 e7697e077f6b..333578a4e91a 100644 --- a/trunk/arch/i386/kernel/cpu/amd.c +++ b/trunk/arch/i386/kernel/cpu/amd.c @@ -216,6 +216,12 @@ 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 @@ -233,6 +239,7 @@ 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 170400879f44..15aee26ec2b6 100644 --- a/trunk/arch/i386/kernel/cpu/common.c +++ b/trunk/arch/i386/kernel/cpu/common.c @@ -204,7 +204,10 @@ 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. */ + 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. */ static void __init early_cpu_detect(void) { struct cpuinfo_x86 *c = &boot_cpu_data; @@ -236,12 +239,6 @@ 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) @@ -289,6 +286,12 @@ 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 871366b83b3f..7975e79d5fa4 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c @@ -40,8 +40,6 @@ #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"); @@ -367,6 +365,7 @@ 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]; @@ -390,7 +389,7 @@ acpi_cpufreq_cpu_init ( if (result) goto err_free; - if (is_const_loops_cpu(cpu)) { + if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { 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 edb9873e27e3..9a826cde4fd1 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c @@ -35,8 +35,6 @@ #include #include -#include "speedstep-est-common.h" - #define PFX "speedstep-centrino: " #define MAINTAINER "Jeremy Fitzhardinge " @@ -493,12 +491,13 @@ 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 (is_const_loops_cpu(policy->cpu)) { + if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { 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 deleted file mode 100644 index 5ce995c9d866..000000000000 --- a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 5e2da704f0fa..8c0120186b9f 100644 --- a/trunk/arch/i386/kernel/cpu/intel.c +++ b/trunk/arch/i386/kernel/cpu/intel.c @@ -183,10 +183,13 @@ 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 cf39e205d33c..5ac051bb9d55 100644 --- a/trunk/arch/i386/kernel/cpu/mtrr/if.c +++ b/trunk/arch/i386/kernel/cpu/mtrr/if.c @@ -1,5 +1,6 @@ #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 6d91b274589c..89a85af33d28 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", NULL, NULL, NULL, "lm", "3dnowext", "3dnow", + NULL, "fxsr_opt", "rdtscp", 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, - NULL, NULL, NULL, NULL, 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, @@ -57,11 +57,21 @@ 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", NULL, NULL, NULL, NULL, NULL, NULL, + "lahf_lm", "cmp_legacy", "svm", NULL, "cr8legacy", 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; @@ -131,6 +141,17 @@ 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 58516e2ac172..6a93d75db431 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 = alloc_bootmem(strlen(bp) + 1); + str = dmi_alloc(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 = bt_ioremap(base, len); + buf = dmi_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++; } - bt_iounmap(buf, len); + dmi_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 = alloc_bootmem(sizeof(*dev)); + dev = dmi_alloc(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 = alloc_bootmem(dm->length); + data = dmi_alloc(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 = alloc_bootmem(sizeof(*dev)); + dev = dmi_alloc(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.\n"); +out: printk(KERN_INFO "DMI not present or invalid.\n"); } diff --git a/trunk/arch/i386/kernel/io_apic.c b/trunk/arch/i386/kernel/io_apic.c index 7554f8fd874a..f2dd218d88cb 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[i]; pin++) { + for (pin = 0; pin < nr_ioapic_registers[apic]; 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 b59a34dbe262..79026f026b85 100644 --- a/trunk/arch/i386/kernel/ioport.c +++ b/trunk/arch/i386/kernel/ioport.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/kprobes.c b/trunk/arch/i386/kernel/kprobes.c index 2f372dbd34fd..6483eeb1a4e8 100644 --- a/trunk/arch/i386/kernel/kprobes.c +++ b/trunk/arch/i386/kernel/kprobes.c @@ -188,6 +188,19 @@ 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 165f13158c60..d3fdf0057d82 100644 --- a/trunk/arch/i386/kernel/microcode.c +++ b/trunk/arch/i386/kernel/microcode.c @@ -70,6 +70,7 @@ */ //#define DEBUG /* pr_debug */ +#include #include #include #include @@ -165,7 +166,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 */ - serialize_cpu(); + sync_core(); /* 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", @@ -379,7 +380,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 */ - serialize_cpu(); + sync_core(); /* get the current revision from MSR 0x8B */ rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]); diff --git a/trunk/arch/i386/kernel/reboot.c b/trunk/arch/i386/kernel/reboot.c index 2fa5803a759d..d207242976d3 100644 --- a/trunk/arch/i386/kernel/reboot.c +++ b/trunk/arch/i386/kernel/reboot.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -355,10 +356,10 @@ void machine_halt(void) void machine_power_off(void) { - machine_shutdown(); - - if (pm_power_off) + if (pm_power_off) { + machine_shutdown(); pm_power_off(); + } } diff --git a/trunk/arch/i386/kernel/setup.c b/trunk/arch/i386/kernel/setup.c index f685637a100d..51e513b4f72d 100644 --- a/trunk/arch/i386/kernel/setup.c +++ b/trunk/arch/i386/kernel/setup.c @@ -45,6 +45,7 @@ #include #include #include +#include #include