Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 16 Jul 2007 17:48:20 +0000 (10:48 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 16 Jul 2007 17:48:20 +0000 (10:48 -0700)
* 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block:
  splice: direct splicing updates ppos twice
  more ACSI removal
  umem: Fix match of pci_ids in umem driver
  umem: Remove references to dead CONFIG_MM_MAP_MEMORY variable
  remove the documentation for the legacy CDROM drivers

713 files changed:
.gitignore
Documentation/00-INDEX
Documentation/CodingStyle
Documentation/DocBook/procfs-guide.tmpl
Documentation/RCU/checklist.txt
Documentation/SubmitChecklist
Documentation/SubmittingPatches
Documentation/accounting/getdelays.c
Documentation/accounting/taskstats-struct.txt
Documentation/fault-injection/failcmd.sh [deleted file]
Documentation/fault-injection/failmodule.sh [deleted file]
Documentation/fault-injection/fault-injection.txt
Documentation/feature-removal-schedule.txt
Documentation/filesystems/proc.txt
Documentation/filesystems/vfs.txt
Documentation/hrtimer/timer_stats.txt
Documentation/ioctl-number.txt
Documentation/kernel-parameters.txt
Documentation/oops-tracing.txt
Documentation/sound/oss/AD1816 [deleted file]
Documentation/sound/oss/NM256 [deleted file]
Documentation/sound/oss/OPL3-SA2 [deleted file]
Documentation/sound/oss/VIA-chipset [deleted file]
Documentation/sound/oss/cs46xx [deleted file]
Documentation/spinlocks.txt
Documentation/sysctl/ctl_unnumbered.txt [new file with mode: 0644]
Documentation/sysctl/vm.txt
Documentation/vm/hugetlbpage.txt
Documentation/vm/slub.txt
MAINTAINERS
Makefile
arch/alpha/kernel/srmcons.c
arch/alpha/kernel/sys_marvel.c
arch/alpha/kernel/time.c
arch/arm26/Kconfig
arch/arm26/defconfig
arch/arm26/mm/init.c
arch/avr32/kernel/traps.c
arch/cris/arch-v10/defconfig
arch/cris/arch-v32/drivers/cryptocop.c
arch/cris/arch-v32/drivers/i2c.c
arch/cris/arch-v32/drivers/pcf8563.c
arch/frv/kernel/entry.S
arch/frv/kernel/gdb-stub.c
arch/frv/kernel/setup.c
arch/h8300/Kconfig
arch/h8300/Makefile
arch/h8300/boot/compressed/Makefile
arch/h8300/boot/compressed/head.S
arch/h8300/boot/compressed/vmlinux.lds [new file with mode: 0644]
arch/h8300/boot/compressed/vmlinux.scr [new file with mode: 0644]
arch/h8300/kernel/Makefile
arch/h8300/kernel/entry.S [moved from arch/h8300/platform/h8s/entry.S with 62% similarity]
arch/h8300/kernel/ints.c [deleted file]
arch/h8300/kernel/ptrace.c
arch/h8300/kernel/signal.c
arch/h8300/platform/h8300h/Makefile
arch/h8300/platform/h8300h/entry.S [deleted file]
arch/h8300/platform/h8s/Makefile
arch/i386/Kconfig
arch/i386/kernel/head.S
arch/i386/kernel/process.c
arch/i386/kernel/traps.c
arch/ia64/ia32/binfmt_elf32.c
arch/ia64/ia32/ia32_entry.S
arch/ia64/kernel/setup.c
arch/m32r/Kconfig
arch/m68knommu/kernel/process.c
arch/m68knommu/kernel/setup.c
arch/m68knommu/mm/memory.c
arch/parisc/kernel/traps.c
arch/powerpc/Kconfig
arch/powerpc/kernel/traps.c
arch/ppc/kernel/traps.c
arch/s390/kernel/traps.c
arch/sh/Kconfig
arch/sh/Kconfig.debug
arch/sh/Makefile
arch/sh/boards/dreamcast/setup.c
arch/sh/boards/hp6xx/mach.c [deleted file]
arch/sh/boards/hp6xx/setup.c
arch/sh/boards/landisk/setup.c
arch/sh/boards/lboxre2/setup.c
arch/sh/boards/mpc1211/setup.c
arch/sh/boards/renesas/edosk7705/setup.c
arch/sh/boards/renesas/hs7751rvoip/setup.c
arch/sh/boards/renesas/r7780rp/Kconfig
arch/sh/boards/renesas/r7780rp/setup.c
arch/sh/boards/renesas/rts7751r2d/setup.c
arch/sh/boards/renesas/sh7710voipgw/setup.c
arch/sh/boards/renesas/systemh/setup.c
arch/sh/boards/saturn/Makefile [deleted file]
arch/sh/boards/saturn/io.c [deleted file]
arch/sh/boards/saturn/irq.c [deleted file]
arch/sh/boards/saturn/setup.c [deleted file]
arch/sh/boards/saturn/smp.c [deleted file]
arch/sh/boards/se/7206/setup.c
arch/sh/boards/se/7300/setup.c
arch/sh/boards/se/73180/setup.c
arch/sh/boards/se/7343/setup.c
arch/sh/boards/se/7619/setup.c
arch/sh/boards/se/770x/irq.c
arch/sh/boards/se/770x/setup.c
arch/sh/boards/se/7722/irq.c
arch/sh/boards/se/7722/setup.c
arch/sh/boards/se/7751/irq.c
arch/sh/boards/se/7751/setup.c
arch/sh/boards/se/7780/irq.c
arch/sh/boards/se/7780/setup.c
arch/sh/boards/sh03/setup.c
arch/sh/boards/shmin/setup.c
arch/sh/boards/snapgear/setup.c
arch/sh/boards/superh/microdev/setup.c
arch/sh/boards/titan/setup.c
arch/sh/boards/unknown/Makefile [deleted file]
arch/sh/boards/unknown/setup.c [deleted file]
arch/sh/cchips/Kconfig
arch/sh/configs/dreamcast_defconfig
arch/sh/configs/r7780mp_defconfig [new file with mode: 0644]
arch/sh/configs/r7785rp_defconfig
arch/sh/configs/se7206_defconfig
arch/sh/configs/se7619_defconfig
arch/sh/configs/se7722_defconfig
arch/sh/configs/shx3_defconfig [new file with mode: 0644]
arch/sh/drivers/dma/Kconfig
arch/sh/drivers/pci/Kconfig
arch/sh/kernel/Makefile
arch/sh/kernel/cf-enabler.c
arch/sh/kernel/cpu/init.c
arch/sh/kernel/cpu/irq/intc2.c
arch/sh/kernel/cpu/irq/ipr.c
arch/sh/kernel/cpu/sh2/entry.S
arch/sh/kernel/cpu/sh2/probe.c
arch/sh/kernel/cpu/sh2/setup-sh7619.c
arch/sh/kernel/cpu/sh2a/setup-sh7206.c
arch/sh/kernel/cpu/sh3/entry.S
arch/sh/kernel/cpu/sh3/setup-sh7705.c
arch/sh/kernel/cpu/sh3/setup-sh7709.c
arch/sh/kernel/cpu/sh3/setup-sh7710.c
arch/sh/kernel/cpu/sh4/Makefile
arch/sh/kernel/cpu/sh4/probe.c
arch/sh/kernel/cpu/sh4/setup-sh7750.c
arch/sh/kernel/cpu/sh4/setup-sh7760.c
arch/sh/kernel/cpu/sh4a/Makefile
arch/sh/kernel/cpu/sh4a/clock-shx3.c [new file with mode: 0644]
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7780.c
arch/sh/kernel/cpu/sh4a/setup-sh7785.c
arch/sh/kernel/cpu/sh4a/setup-shx3.c [new file with mode: 0644]
arch/sh/kernel/irq.c
arch/sh/kernel/machvec.c [new file with mode: 0644]
arch/sh/kernel/process.c
arch/sh/kernel/ptrace.c
arch/sh/kernel/setup.c
arch/sh/kernel/sh_ksyms.c
arch/sh/kernel/signal.c
arch/sh/kernel/syscalls.S
arch/sh/kernel/timers/timer-tmu.c
arch/sh/kernel/topology.c [new file with mode: 0644]
arch/sh/kernel/traps.c
arch/sh/kernel/vmlinux.lds.S
arch/sh/lib/div64-generic.c
arch/sh/lib/div64.S
arch/sh/math-emu/math.c
arch/sh/mm/Kconfig
arch/sh/mm/Makefile
arch/sh/mm/fault.c
arch/sh/mm/init.c
arch/sh/mm/numa.c [new file with mode: 0644]
arch/sh/mm/pg-dma.c [deleted file]
arch/sh/tools/Makefile
arch/sh/tools/mach-types
arch/sparc/mm/srmmu.c
arch/sparc/mm/sun4c.c
arch/sparc64/Kconfig
arch/sparc64/kernel/Makefile
arch/sparc64/kernel/ds.c [new file with mode: 0644]
arch/sparc64/kernel/hvtramp.S [new file with mode: 0644]
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/ldc.c [new file with mode: 0644]
arch/sparc64/kernel/mdesc.c
arch/sparc64/kernel/power.c
arch/sparc64/kernel/process.c
arch/sparc64/kernel/prom.c
arch/sparc64/kernel/setup.c
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sysfs.c
arch/sparc64/kernel/time.c
arch/sparc64/kernel/vio.c [new file with mode: 0644]
arch/sparc64/kernel/viohs.c [new file with mode: 0644]
arch/sparc64/lib/Makefile
arch/sparc64/lib/delay.c [deleted file]
arch/sparc64/prom/misc.c
arch/sparc64/prom/p1275.c
arch/sparc64/prom/tree.c
arch/um/Kconfig.debug
arch/um/config.release [deleted file]
arch/um/defconfig
arch/um/drivers/chan_kern.c
arch/um/drivers/chan_user.c
arch/um/drivers/cow_sys.h
arch/um/drivers/daemon_user.c
arch/um/drivers/fd.c
arch/um/drivers/harddog_user.c
arch/um/drivers/line.c
arch/um/drivers/mcast_user.c
arch/um/drivers/mconsole_user.c
arch/um/drivers/net_user.c
arch/um/drivers/port_user.c
arch/um/drivers/pty.c
arch/um/drivers/slip_user.c
arch/um/drivers/slirp_user.c
arch/um/drivers/ssl.c
arch/um/drivers/stdio_console.c
arch/um/drivers/tty.c
arch/um/drivers/ubd_kern.c
arch/um/drivers/ubd_user.c
arch/um/drivers/xterm.c
arch/um/drivers/xterm_kern.c
arch/um/include/chan_kern.h
arch/um/include/chan_user.h
arch/um/include/common-offsets.h
arch/um/include/os.h
arch/um/include/um_malloc.h
arch/um/kernel/irq.c
arch/um/kernel/process.c
arch/um/os-Linux/aio.c
arch/um/os-Linux/drivers/ethertap_user.c
arch/um/os-Linux/drivers/tuntap_user.c
arch/um/os-Linux/helper.c
arch/um/os-Linux/main.c
arch/um/os-Linux/sigio.c
arch/um/os-Linux/skas/process.c
arch/um/os-Linux/user_syms.c
arch/x86_64/ia32/ia32entry.S
arch/x86_64/kernel/head.S
arch/x86_64/kernel/traps.c
crypto/proc.c
drivers/atm/Kconfig
drivers/auxdisplay/Kconfig
drivers/base/dmapool.c
drivers/block/Kconfig
drivers/block/Makefile
drivers/block/nbd.c
drivers/block/pktcdvd.c
drivers/block/sunvdc.c [new file with mode: 0644]
drivers/block/z2ram.c
drivers/char/Kconfig
drivers/char/Makefile
drivers/char/amiserial.c
drivers/char/consolemap.c
drivers/char/cyclades.c
drivers/char/esp.c
drivers/char/generic_serial.c
drivers/char/genrtc.c
drivers/char/hw_random/intel-rng.c
drivers/char/ip2/i2ellis.c
drivers/char/ipmi/Kconfig
drivers/char/ipmi/ipmi_poweroff.c
drivers/char/ipmi/ipmi_si_intf.c
drivers/char/istallion.c
drivers/char/keyboard.c
drivers/char/misc.c
drivers/char/mspec.c
drivers/char/mxser.c
drivers/char/mxser_new.c
drivers/char/n_hdlc.c
drivers/char/n_r3964.c
drivers/char/n_tty.c
drivers/char/nvram.c
drivers/char/rocket.c
drivers/char/rtc.c
drivers/char/selection.c
drivers/char/sonypi.c
drivers/char/synclink.c
drivers/char/synclink_gt.c
drivers/char/synclinkmp.c
drivers/char/tpm/Kconfig
drivers/char/tty_audit.c [new file with mode: 0644]
drivers/char/tty_io.c
drivers/char/tty_ioctl.c
drivers/connector/Kconfig
drivers/crypto/Kconfig
drivers/dma/Kconfig
drivers/edac/Kconfig
drivers/firmware/edd.c
drivers/firmware/pcdp.c
drivers/macintosh/adb.c
drivers/message/i2o/Kconfig
drivers/message/i2o/device.c
drivers/message/i2o/exec-osm.c
drivers/message/i2o/iop.c
drivers/misc/Kconfig
drivers/misc/sony-laptop.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/sunvnet.c [new file with mode: 0644]
drivers/net/sunvnet.h [new file with mode: 0644]
drivers/net/wan/Kconfig
drivers/parport/Kconfig
drivers/parport/parport_pc.c
drivers/pci/pci-sysfs.c
drivers/pci/probe.c
drivers/pci/proc.c
drivers/pci/search.c
drivers/pnp/Kconfig
drivers/pnp/isapnp/Kconfig
drivers/pnp/isapnp/core.c
drivers/pnp/pnpbios/Kconfig
drivers/sbus/char/cpwatchdog.c
drivers/scsi/Kconfig
drivers/serial/68360serial.c
drivers/serial/8250.c
drivers/serial/8250_early.c
drivers/serial/Kconfig
drivers/serial/atmel_serial.c
drivers/serial/ip22zilog.c
drivers/serial/serial_core.c
drivers/serial/sh-sci.c
drivers/serial/sh-sci.h
drivers/serial/sn_console.c
drivers/serial/sunhv.c
drivers/serial/sunsab.c
drivers/serial/sunsu.c
drivers/serial/sunzilog.c
drivers/telephony/Kconfig
drivers/video/pvr2fb.c
drivers/w1/Kconfig
drivers/w1/masters/Kconfig
drivers/w1/slaves/Kconfig
fs/Kconfig
fs/afs/Makefile
fs/afs/afs.h
fs/afs/afs_fs.h
fs/afs/callback.c
fs/afs/dir.c
fs/afs/file.c
fs/afs/flock.c [new file with mode: 0644]
fs/afs/fsclient.c
fs/afs/internal.h
fs/afs/main.c
fs/afs/misc.c
fs/afs/proc.c
fs/afs/super.c
fs/afs/vnode.c
fs/anon_inodes.c
fs/binfmt_elf.c
fs/block_dev.c
fs/buffer.c
fs/compat_ioctl.c
fs/drop_caches.c
fs/ext2/file.c
fs/ext2/super.c
fs/ext3/inode.c
fs/ext3/namei.c
fs/ext3/super.c
fs/ext4/balloc.c
fs/ext4/namei.c
fs/ext4/super.c
fs/fat/dir.c
fs/fat/fatent.c
fs/fat/inode.c
fs/freevxfs/vxfs_dir.h
fs/gfs2/eaops.c
fs/hfsplus/btree.c
fs/hfsplus/dir.c
fs/hfsplus/hfsplus_fs.h
fs/hfsplus/inode.c
fs/hfsplus/super.c
fs/hfsplus/unicode.c
fs/hugetlbfs/inode.c
fs/ioctl.c
fs/isofs/dir.c
fs/isofs/inode.c
fs/isofs/joliet.c
fs/isofs/namei.c
fs/jbd/commit.c
fs/jbd/revoke.c
fs/jbd2/commit.c
fs/jbd2/revoke.c
fs/namespace.c
fs/ncpfs/file.c
fs/nfs/client.c
fs/nls/Makefile
fs/open.c
fs/partitions/acorn.c
fs/proc/array.c
fs/proc/base.c
fs/proc/generic.c
fs/proc/inode.c
fs/proc/proc_misc.c
fs/proc/proc_tty.c
fs/quota.c
fs/reiserfs/file.c
fs/seq_file.c
fs/super.c
fs/udf/crc.c
fs/udf/ialloc.c
fs/udf/inode.c
fs/ufs/super.c
include/asm-alpha/io.h
include/asm-alpha/pgtable.h
include/asm-arm/pgtable.h
include/asm-arm26/dma-mapping.h [deleted file]
include/asm-arm26/ioctls.h
include/asm-arm26/pgtable.h
include/asm-arm26/termbits.h
include/asm-arm26/termios.h
include/asm-avr32/pgtable.h
include/asm-cris/ioctls.h
include/asm-cris/pgtable.h
include/asm-cris/termbits.h
include/asm-cris/termios.h
include/asm-frv/pgtable.h
include/asm-frv/unistd.h
include/asm-generic/dma-mapping-broken.h
include/asm-generic/fcntl.h
include/asm-h8300/dma-mapping.h [deleted file]
include/asm-h8300/ioctls.h
include/asm-h8300/termbits.h
include/asm-h8300/termios.h
include/asm-h8300/thread_info.h
include/asm-i386/fixmap.h
include/asm-i386/ide.h
include/asm-i386/io.h
include/asm-i386/pgtable-2level.h
include/asm-i386/pgtable-3level.h
include/asm-i386/pgtable.h
include/asm-i386/processor.h
include/asm-i386/thread_info.h
include/asm-ia64/compat.h
include/asm-ia64/pgtable.h
include/asm-m32r/dma-mapping.h [deleted file]
include/asm-m32r/ioctls.h
include/asm-m32r/pgtable.h
include/asm-m32r/termbits.h
include/asm-m32r/termios.h
include/asm-m68k/motorola_pgtable.h
include/asm-m68k/sun3_pgtable.h
include/asm-mips/compat.h
include/asm-mips/pgtable.h
include/asm-parisc/compat.h
include/asm-parisc/fcntl.h
include/asm-parisc/pgtable.h
include/asm-powerpc/compat.h
include/asm-powerpc/pgtable-ppc32.h
include/asm-powerpc/pgtable-ppc64.h
include/asm-ppc/pgtable.h
include/asm-s390/compat.h
include/asm-s390/dma-mapping.h [deleted file]
include/asm-s390/pgtable.h
include/asm-sh/bugs.h
include/asm-sh/cache.h
include/asm-sh/cpu-sh2/cache.h
include/asm-sh/cpu-sh3/timer.h
include/asm-sh/cpu-sh4/freq.h
include/asm-sh/cpu-sh4/timer.h
include/asm-sh/futex-irq.h [new file with mode: 0644]
include/asm-sh/futex.h
include/asm-sh/hd64461.h
include/asm-sh/hw_irq.h
include/asm-sh/irq.h
include/asm-sh/machvec.h
include/asm-sh/machvec_init.h [deleted file]
include/asm-sh/mmzone.h [new file with mode: 0644]
include/asm-sh/page.h
include/asm-sh/parport.h [new file with mode: 0644]
include/asm-sh/pgtable.h
include/asm-sh/processor.h
include/asm-sh/rwsem.h
include/asm-sh/saturn/io.h [deleted file]
include/asm-sh/saturn/smpc.h [deleted file]
include/asm-sh/sections.h
include/asm-sh/setup.h
include/asm-sh/sh03/io.h
include/asm-sh/smp.h
include/asm-sh/snapgear.h
include/asm-sh/sparsemem.h [new file with mode: 0644]
include/asm-sh/system.h
include/asm-sh/topology.h
include/asm-sh/uaccess.h
include/asm-sh/ubc.h
include/asm-sh64/pgtable.h
include/asm-sparc/pgtable.h
include/asm-sparc64/bugs.h
include/asm-sparc64/compat.h
include/asm-sparc64/cpudata.h
include/asm-sparc64/delay.h
include/asm-sparc64/hvtramp.h [new file with mode: 0644]
include/asm-sparc64/hypervisor.h
include/asm-sparc64/irq.h
include/asm-sparc64/ldc.h [new file with mode: 0644]
include/asm-sparc64/mdesc.h
include/asm-sparc64/mmu_context.h
include/asm-sparc64/pgtable.h
include/asm-sparc64/power.h [new file with mode: 0644]
include/asm-sparc64/smp.h
include/asm-sparc64/vio.h [new file with mode: 0644]
include/asm-um/pgtable.h
include/asm-um/thread_info.h
include/asm-v850/ioctls.h
include/asm-v850/termbits.h
include/asm-v850/termios.h
include/asm-x86_64/compat.h
include/asm-x86_64/fixmap.h
include/asm-x86_64/io.h
include/asm-x86_64/pgtable.h
include/asm-xtensa/pgtable.h
include/linux/Kbuild
include/linux/attribute_container.h
include/linux/audit.h
include/linux/backing-dev.h
include/linux/bug.h
include/linux/capability.h
include/linux/cdrom.h
include/linux/cobalt-nvram.h [deleted file]
include/linux/console.h
include/linux/consolemap.h
include/linux/cpu.h
include/linux/dma-mapping.h
include/linux/ds17287rtc.h
include/linux/ext2_fs_sb.h
include/linux/ext3_fs_sb.h
include/linux/ext4_fs_sb.h
include/linux/file.h
include/linux/fs.h
include/linux/fuse.h
include/linux/hrtimer.h
include/linux/i2o.h
include/linux/idr.h
include/linux/init.h
include/linux/init_task.h
include/linux/io.h
include/linux/ipc.h
include/linux/irq.h
include/linux/leds.h
include/linux/lzo.h
include/linux/mm.h
include/linux/mmzone.h
include/linux/mnt_namespace.h
include/linux/module.h
include/linux/msdos_fs.h
include/linux/ncp_fs.h
include/linux/nsproxy.h
include/linux/pci.h
include/linux/percpu.h
include/linux/percpu_counter.h
include/linux/pid_namespace.h
include/linux/prctl.h
include/linux/prefetch.h
include/linux/proc_fs.h
include/linux/sched.h
include/linux/scx200_gpio.h
include/linux/seccomp.h
include/linux/serial.h
include/linux/serial_8250.h
include/linux/signal.h
include/linux/slab.h
include/linux/slab_def.h
include/linux/slob_def.h [new file with mode: 0644]
include/linux/slub_def.h
include/linux/smp_lock.h
include/linux/socket.h
include/linux/sonypi.h
include/linux/spinlock.h
include/linux/taskstats.h
include/linux/time.h
include/linux/timer.h
include/linux/tty.h
include/linux/uio.h
include/linux/user_namespace.h [new file with mode: 0644]
include/linux/utsname.h
include/linux/workqueue.h
init/Kconfig
init/do_mounts.c
init/main.c
ipc/msg.c
ipc/sem.c
ipc/shm.c
ipc/util.c
ipc/util.h
kernel/Makefile
kernel/audit.c
kernel/audit.h
kernel/auditsc.c
kernel/cpuset.c
kernel/exit.c
kernel/fork.c
kernel/futex.c
kernel/irq/spurious.c
kernel/kallsyms.c
kernel/kfifo.c
kernel/kthread.c
kernel/module.c
kernel/nsproxy.c
kernel/pid.c
kernel/printk.c
kernel/ptrace.c
kernel/rtmutex-debug.c
kernel/rtmutex.c
kernel/rtmutex_common.h
kernel/seccomp.c
kernel/signal.c
kernel/softirq.c
kernel/stop_machine.c
kernel/sys.c
kernel/sys_ni.c
kernel/sysctl.c
kernel/taskstats.c
kernel/time.c
kernel/time/clockevents.c
kernel/time/ntp.c
kernel/time/timekeeping.c
kernel/time/timer_stats.c
kernel/timer.c
kernel/user.c
kernel/user_namespace.c [new file with mode: 0644]
kernel/utsname.c
kernel/utsname_sysctl.c
kernel/workqueue.c
lib/Kconfig.debug
lib/Makefile
lib/bug.c
lib/check_signature.c [new file with mode: 0644]
lib/idr.c
lib/percpu_counter.c
lib/vsprintf.c
mm/Kconfig
mm/backing-dev.c
mm/filemap.c
mm/hugetlb.c
mm/madvise.c
mm/memory.c
mm/mempolicy.c
mm/mempool.c
mm/mlock.c
mm/mmap.c
mm/nommu.c
mm/page-writeback.c
mm/page_alloc.c
mm/slab.c
mm/slob.c
mm/slub.c
mm/swap_state.c
mm/swapfile.c
mm/truncate.c
net/compat.c
net/core/scm.c
net/netlabel/netlabel_user.c
net/socket.c
net/sunrpc/auth_gss/auth_gss.c
scripts/checkpatch.pl
scripts/decodecode [new file with mode: 0644]
security/selinux/nlmsgtab.c
sound/oss/Kconfig
sound/oss/Makefile
sound/oss/ac97.c [deleted file]
sound/oss/ac97.h [deleted file]
sound/oss/aci.c [deleted file]
sound/oss/aci.h [deleted file]
sound/oss/ad1816.c [deleted file]
sound/oss/ad1889.c [deleted file]
sound/oss/ad1889.h [deleted file]
sound/oss/adlib_card.c [deleted file]
sound/oss/cs461x.h [deleted file]
sound/oss/cs461x_image.h [deleted file]
sound/oss/cs46xx.c [deleted file]
sound/oss/cs46xx_wrapper-24.h [deleted file]
sound/oss/cs46xxpm.h [deleted file]
sound/oss/emu10k1/8010.h [deleted file]
sound/oss/emu10k1/Makefile [deleted file]
sound/oss/emu10k1/audio.c [deleted file]
sound/oss/emu10k1/audio.h [deleted file]
sound/oss/emu10k1/cardmi.c [deleted file]
sound/oss/emu10k1/cardmi.h [deleted file]
sound/oss/emu10k1/cardmo.c [deleted file]
sound/oss/emu10k1/cardmo.h [deleted file]
sound/oss/emu10k1/cardwi.c [deleted file]
sound/oss/emu10k1/cardwi.h [deleted file]
sound/oss/emu10k1/cardwo.c [deleted file]
sound/oss/emu10k1/cardwo.h [deleted file]
sound/oss/emu10k1/ecard.c [deleted file]
sound/oss/emu10k1/ecard.h [deleted file]
sound/oss/emu10k1/efxmgr.c [deleted file]
sound/oss/emu10k1/efxmgr.h [deleted file]
sound/oss/emu10k1/emuadxmg.c [deleted file]
sound/oss/emu10k1/hwaccess.c [deleted file]
sound/oss/emu10k1/hwaccess.h [deleted file]
sound/oss/emu10k1/icardmid.h [deleted file]
sound/oss/emu10k1/icardwav.h [deleted file]
sound/oss/emu10k1/irqmgr.c [deleted file]
sound/oss/emu10k1/irqmgr.h [deleted file]
sound/oss/emu10k1/main.c [deleted file]
sound/oss/emu10k1/midi.c [deleted file]
sound/oss/emu10k1/midi.h [deleted file]
sound/oss/emu10k1/mixer.c [deleted file]
sound/oss/emu10k1/passthrough.c [deleted file]
sound/oss/emu10k1/passthrough.h [deleted file]
sound/oss/emu10k1/recmgr.c [deleted file]
sound/oss/emu10k1/recmgr.h [deleted file]
sound/oss/emu10k1/timer.c [deleted file]
sound/oss/emu10k1/timer.h [deleted file]
sound/oss/emu10k1/voicemgr.c [deleted file]
sound/oss/emu10k1/voicemgr.h [deleted file]
sound/oss/mpu401.c
sound/oss/nm256.h [deleted file]
sound/oss/nm256_audio.c [deleted file]
sound/oss/nm256_coeff.h [deleted file]
sound/oss/opl3.c
sound/oss/opl3.h [deleted file]
sound/oss/opl3sa2.c [deleted file]
usr/.gitignore

index 060a71d41ad7ccc3214065a182e6f67568420071..8d15830b883d8f715b06aa5f028e5013d637acb3 100644 (file)
@@ -45,3 +45,6 @@ series
 
 # cscope files
 cscope.*
+
+*.orig
+*.rej
index f08ca953573392ec710a27db0f7f87f14ad54527..8b056363344299c3822cd38427429007bb1c44b7 100644 (file)
@@ -12,6 +12,8 @@ Following translations are available on the WWW:
 
 00-INDEX
        - this file.
+ABI/
+       - info on kernel <-> userspace ABI and relative interface stability.
 BUG-HUNTING
        - brute force method of doing binary search of patches to find bug.
 Changes
@@ -25,37 +27,57 @@ DMA-mapping.txt
 DocBook/
        - directory with DocBook templates etc. for kernel documentation.
 HOWTO
-       - The process and procedures of how to do Linux kernel development.
+       - the process and procedures of how to do Linux kernel development.
 IO-mapping.txt
        - how to access I/O mapped memory from within device drivers.
 IPMI.txt
        - info on Linux Intelligent Platform Management Interface (IPMI) Driver.
 IRQ-affinity.txt
        - how to select which CPU(s) handle which interrupt events on SMP.
+IRQ.txt
+       - description of what an IRQ is.
 ManagementStyle
        - how to (attempt to) manage kernel hackers.
 MSI-HOWTO.txt
        - the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
+PCIEBUS-HOWTO.txt
+       - a guide describing the PCI Express Port Bus driver.
 RCU/
        - directory with info on RCU (read-copy update).
 README.DAC960
        - info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
+README.cycladesZ
+       - info on Cyclades-Z firmware loading.
 SAK.txt
        - info on Secure Attention Keys.
+SecurityBugs
+       - procedure for reporting security bugs found in the kernel.
+SubmitChecklist
+       - Linux kernel patch submission checklist.
 SubmittingDrivers
        - procedure to get a new driver source included into the kernel tree.
 SubmittingPatches
        - procedure to get a source patch included into the kernel tree.
 VGA-softcursor.txt
        - how to change your VGA cursor from a blinking underscore.
+accounting/
+       - documentation on accounting and taskstats.
+aoe/
+       - description of AoE (ATA over Ethernet) along with config examples.
 applying-patches.txt
        - description of various trees and how to apply their patches.
 arm/
        - directory with info about Linux on the ARM architecture.
+atomic_ops.txt
+       - semantics and behavior of atomic and bitmask operations.
+auxdisplay/
+       - misc. LCD driver documentation (cfag12864b, ks0108).
 basic_profiling.txt
        - basic instructions for those who wants to profile Linux kernel.
 binfmt_misc.txt
        - info on the kernel support for extra binary formats.
+blackfin/
+       - directory with documentation for the Blackfin arch.
 block/
        - info on the Block I/O (BIO) layer.
 cachetlb.txt
@@ -68,16 +90,32 @@ cli-sti-removal.txt
        - cli()/sti() removal guide.
 computone.txt
        - info on Computone Intelliport II/Plus Multiport Serial Driver.
+connector/
+       - docs on the netlink based userspace<->kernel space communication mod.
+console/
+       - documentation on Linux console drivers.
 cpqarray.txt
        - info on using Compaq's SMART2 Intelligent Disk Array Controllers.
 cpu-freq/
        - info on CPU frequency and voltage scaling.
+cpu-hotplug.txt
+       - document describing CPU hotplug support in the Linux kernel.
+cpu-load.txt
+       - document describing how CPU load statistics are collected.
+cpusets.txt
+       - documents the cpusets feature; assign CPUs and Mem to a set of tasks.
+cputopology.txt
+       - documentation on how CPU topology info is exported via sysfs.
 cris/
        - directory with info about Linux on CRIS architecture.
 crypto/
        - directory with info on the Crypto API.
+dcdbas.txt
+       - information on the Dell Systems Management Base Driver.
 debugging-modules.txt
        - some notes on debugging modules after Linux 2.6.3.
+dell_rbu.txt
+       - document demonstrating the use of the Dell Remote BIOS Update driver.
 device-mapper/
        - directory with info on Device Mapper.
 devices.txt
@@ -86,32 +124,52 @@ digiepca.txt
        - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
 dnotify.txt
        - info about directory notification in Linux.
+dontdiff
+       - file containing a list of files that should never be diff'ed.
 driver-model/
        - directory with info about Linux driver model.
+drivers/
+       - directory with driver documentation (currently only EDAC).
 dvb/
        - info on Linux Digital Video Broadcast (DVB) subsystem.
 early-userspace/
        - info about initramfs, klibc, and userspace early during boot.
+ecryptfs.txt
+       - docs on eCryptfs: stacked cryptographic filesystem for Linux.
 eisa.txt
        - info on EISA bus support.
 exception.txt
        - how Linux v2.2 handles exceptions without verify_area etc.
+fault-injection/
+       - dir with docs about the fault injection capabilities infrastructure.
 fb/
        - directory with info on the frame buffer graphics abstraction layer.
+feature-removal-schedule.txt
+       - list of files and features that are going to be removed.
 filesystems/
        - directory with info on the various filesystems that Linux supports.
 firmware_class/
        - request_firmware() hotplug interface info.
 floppy.txt
        - notes and driver options for the floppy disk driver.
+fujitsu/
+       - Fujitsu FR-V Linux documentation.
+gpio.txt
+       - overview of GPIO (General Purpose Input/Output) access conventions.
 hayes-esp.txt
        - info on using the Hayes ESP serial driver.
 highuid.txt
        - notes on the change from 16 bit to 32 bit user/group IDs.
 hpet.txt
        - High Precision Event Timer Driver for Linux.
+hrtimer/
+       - info on the timer_stats debugging facility for timer (ab)use.
+hrtimers/
+       - info on the hrtimers subsystem for high-resolution kernel timers.
 hw_random.txt
        - info on Linux support for random number generator in i8xx chipsets.
+hwmon/
+       - directory with docs on various hardware monitoring drivers.
 i2c/
        - directory with info about the I2C bus/protocol (2 wire, kHz speed).
 i2o/
@@ -122,16 +180,22 @@ ia64/
        - directory with info about Linux on Intel 64 bit architecture.
 ide.txt
        - important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
+infiniband/
+       - directory with documents concerning Linux InfiniBand support.
 initrd.txt
        - how to use the RAM disk as an initial/temporary root filesystem.
 input/
        - info on Linux input device support.
 io_ordering.txt
        - info on ordering I/O writes to memory-mapped addresses.
+ioctl/
+       - directory with documents describing various IOCTL calls.
 ioctl-number.txt
        - how to implement and register device/driver ioctl calls.
 iostats.txt
        - info on I/O statistics Linux kernel provides.
+irqflags-tracing.txt
+       - how to use the irq-flags tracing feature.
 isapnp.txt
        - info on Linux ISA Plug & Play support.
 isdn/
@@ -140,26 +204,40 @@ java.txt
        - info on the in-kernel binary support for Java(tm).
 kbuild/
        - directory with info about the kernel build process.
-kdumpt.txt
-       - mini HowTo on getting the crash dump code to work.
+kdump/
+       - directory with mini HowTo on getting the crash dump code to work.
 kernel-doc-nano-HOWTO.txt
        - mini HowTo on generation and location of kernel documentation files.
 kernel-docs.txt
        - listing of various WWW + books that document kernel internals.
 kernel-parameters.txt
        - summary listing of command line / boot prompt args for the kernel.
+keys-request-key.txt
+       - description of the kernel key request service.
+keys.txt
+       - description of the kernel key retention service.
 kobject.txt
        - info of the kobject infrastructure of the Linux kernel.
+kprobes.txt
+       - documents the kernel probes debugging feature.
+kref.txt
+       - docs on adding reference counters (krefs) to kernel objects.
 laptop-mode.txt
-       - How to conserve battery power using laptop-mode.
+       - how to conserve battery power using laptop-mode.
 ldm.txt
        - a brief description of LDM (Windows Dynamic Disks).
+leds-class.txt
+       - documents LED handling under Linux.
+local_ops.txt
+       - semantics and behavior of local atomic operations.
+lockdep-design.txt
+       - documentation on the runtime locking correctness validator.
 locks.txt
        - info on file locking implementations, flock() vs. fcntl(), etc.
 logo.gif
-       - Full colour GIF image of Linux logo (penguin).
+       - full colour GIF image of Linux logo (penguin - Tux).
 logo.txt
-       - Info on creator of above logo & site to get additional images from.
+       - info on creator of above logo & site to get additional images from.
 m68k/
        - directory with info about Linux on Motorola 68k architecture.
 magic-number.txt
@@ -170,6 +248,8 @@ mca.txt
        - info on supporting Micro Channel Architecture (e.g. PS/2) systems.
 md.txt
        - info on boot arguments for the multiple devices driver.
+memory-barriers.txt
+       - info on Linux kernel memory barriers.
 memory.txt
        - info on typical Linux memory problems.
 mips/
@@ -177,9 +257,11 @@ mips/
 mono.txt
        - how to execute Mono-based .NET binaries with the help of BINFMT_MISC.
 moxa-smartio
-       - info on installing/using Moxa multiport serial driver.
+       - file with info on installing/using Moxa multiport serial driver.
 mtrr.txt
        - how to use PPro Memory Type Range Registers to increase performance.
+mutex-design.txt
+       - info on the generic mutex subsystem.
 nbd.txt
        - info on a TCP implementation of a network block device.
 netlabel/
@@ -190,6 +272,8 @@ nfsroot.txt
        - short guide on setting up a diskless box with NFS root filesystem.
 nmi_watchdog.txt
        - info on NMI watchdog for SMP systems.
+nommu-mmap.txt
+       - documentation about no-mmu memory mapping support.
 numastat.txt
        - info on how to read Numa policy hit/miss statistics in sysfs.
 oops-tracing.txt
@@ -202,8 +286,16 @@ parport.txt
        - how to use the parallel-port driver.
 parport-lowlevel.txt
        - description and usage of the low level parallel port functions.
+pci-error-recovery.txt
+       - info on PCI error recovery.
 pci.txt
        - info on the PCI subsystem for device driver authors.
+pcieaer-howto.txt
+       - the PCI Express Advanced Error Reporting Driver Guide HOWTO.
+pcmcia/
+       - info on the Linux PCMCIA driver.
+pi-futex.txt
+       - documentation on lightweight PI-futexes.
 pm.txt
        - info on Linux power management support.
 pnp.txt
@@ -214,18 +306,32 @@ powerpc/
        - directory with info on using Linux with the PowerPC.
 preempt-locking.txt
        - info on locking under a preemptive kernel.
+prio_tree.txt
+       - info on radix-priority-search-tree use for indexing vmas.
 ramdisk.txt
        - short guide on how to set up and use the RAM disk.
+rbtree.txt
+       - info on what red-black trees are and what they are for.
 riscom8.txt
        - notes on using the RISCom/8 multi-port serial driver.
+robust-futex-ABI.txt
+       - documentation of the robust futex ABI.
+robust-futexes.txt
+       - a description of what robust futexes are.
 rocket.txt
        - info on the Comtrol RocketPort multiport serial driver.
 rpc-cache.txt
        - introduction to the caching mechanisms in the sunrpc layer.
+rt-mutex-design.txt
+       - description of the RealTime mutex implementation design.
+rt-mutex.txt
+       - desc. of RT-mutex subsystem with PI (Priority Inheritance) support.
 rtc.txt
        - notes on how to use the Real Time Clock (aka CMOS clock) driver.
 s390/
        - directory with info on using Linux on the IBM S390.
+sched-arch.txt
+       - CPU Scheduler implementation hints for architecture specific code.
 sched-coding.txt
        - reference for various scheduler-related methods in the O(1) scheduler.
 sched-design.txt
@@ -240,22 +346,32 @@ serial/
        - directory with info on the low level serial API.
 serial-console.txt
        - how to set up Linux with a serial line console as the default.
+sgi-ioc4.txt
+       - description of the SGI IOC4 PCI (multi function) device.
 sgi-visws.txt
        - short blurb on the SGI Visual Workstations.
 sh/
        - directory with info on porting Linux to a new architecture.
+sharedsubtree.txt
+       - a description of shared subtrees for namespaces.
 smart-config.txt
        - description of the Smart Config makefile feature.
 smp.txt
        - a few notes on symmetric multi-processing.
+sony-laptop.txt
+       - Sony Notebook Control Driver (SNC) Readme.
 sonypi.txt
        - info on Linux Sony Programmable I/O Device support.
 sound/
        - directory with info on sound card support.
 sparc/
        - directory with info on using Linux on Sparc architecture.
+sparse.txt
+       - info on how to obtain and use the sparse tool for typechecking.
 specialix.txt
        - info on hardware/driver for specialix IO8+ multiport serial card.
+spi/
+       - overview of Linux kernel Serial Peripheral Interface (SPI) support.
 spinlocks.txt
        - info on using spinlocks to provide exclusive access in kernel.
 stable_api_nonsense.txt
@@ -274,24 +390,32 @@ sysrq.txt
        - info on the magic SysRq key.
 telephony/
        - directory with info on telephony (e.g. voice over IP) support.
+thinkpad-acpi.txt
+       - information on the (IBM and Lenovo) ThinkPad ACPI Extras driver.
 time_interpolators.txt
        - info on time interpolators.
 tipar.txt
        - information about Parallel link cable for Texas Instruments handhelds.
 tty.txt
        - guide to the locking policies of the tty layer.
-unicode.txt
-       - info on the Unicode character/font mapping used in Linux.
 uml/
        - directory with information about User Mode Linux.
+unicode.txt
+       - info on the Unicode character/font mapping used in Linux.
+unshare.txt
+       - description of the Linux unshare system call.
 usb/
        - directory with info regarding the Universal Serial Bus.
+video-output.txt
+       - sysfs class driver interface to enable/disable a video output device.
 video4linux/
        - directory with info regarding video/TV/radio cards and linux.
 vm/
        - directory with info on the Linux vm code.
 voyager.txt
        - guide to running Linux on the Voyager architecture.
+w1/
+       - directory with documents regarding the 1-wire (w1) subsystem.
 watchdog/
        - how to auto-reboot Linux if it has "fallen and can't get up". ;-)
 x86_64/
index b49b92edb396835632781470f18bb31ab0055387..a667eb1fc26e2dfca7ac7b46b8a93f1eb22867e8 100644 (file)
@@ -218,6 +218,18 @@ no space after the prefix increment & decrement unary operators:
 
 and no space around the '.' and "->" structure member operators.
 
+Do not leave trailing whitespace at the ends of lines.  Some editors with
+"smart" indentation will insert whitespace at the beginning of new lines as
+appropriate, so you can start typing the next line of code right away.
+However, some such editors do not remove the whitespace if you end up not
+putting a line of code there, such as if you leave a blank line.  As a result,
+you end up with lines containing trailing whitespace.
+
+Git will warn you about patches that introduce trailing whitespace, and can
+optionally strip the trailing whitespace for you; however, if applying a series
+of patches, this may make later patches in the series fail by changing their
+context lines.
+
 
                Chapter 4: Naming
 
@@ -726,6 +738,33 @@ need them.  Feel free to peruse that header file to see what else is already
 defined that you shouldn't reproduce in your code.
 
 
+               Chapter 18:  Editor modelines and other cruft
+
+Some editors can interpret configuration information embedded in source files,
+indicated with special markers.  For example, emacs interprets lines marked
+like this:
+
+-*- mode: c -*-
+
+Or like this:
+
+/*
+Local Variables:
+compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
+End:
+*/
+
+Vim interprets markers that look like this:
+
+/* vim:set sw=8 noet */
+
+Do not include any of these in source files.  People have their own personal
+editor configurations, and your source files should not override them.  This
+includes markers for indentation and mode configuration.  People may use their
+own custom mode, or may have some other magic method for making indentation
+work correctly.
+
+
 
                Appendix I: References
 
index 45cad23efefa9f85c6a973d6612ff60d496c1fd6..2de84dc195a8b46e52735a60bb9ce4097d4f7d67 100644 (file)
@@ -352,49 +352,93 @@ entry->write_proc = write_proc_foo;
       <funcsynopsis>
        <funcprototype>
          <funcdef>int <function>read_func</function></funcdef>
-         <paramdef>char* <parameter>page</parameter></paramdef>
+         <paramdef>char* <parameter>buffer</parameter></paramdef>
          <paramdef>char** <parameter>start</parameter></paramdef>
          <paramdef>off_t <parameter>off</parameter></paramdef>
          <paramdef>int <parameter>count</parameter></paramdef>
-         <paramdef>int* <parameter>eof</parameter></paramdef>
+         <paramdef>int* <parameter>peof</parameter></paramdef>
          <paramdef>void* <parameter>data</parameter></paramdef>
        </funcprototype>
       </funcsynopsis>
 
       <para>
         The read function should write its information into the
-        <parameter>page</parameter>. For proper use, the function
-        should start writing at an offset of
-        <parameter>off</parameter> in <parameter>page</parameter> and
-        write at most <parameter>count</parameter> bytes, but because
-        most read functions are quite simple and only return a small
-        amount of information, these two parameters are usually
-        ignored (it breaks pagers like <literal>more</literal> and
-        <literal>less</literal>, but <literal>cat</literal> still
-        works).
+        <parameter>buffer</parameter>, which will be exactly
+        <literal>PAGE_SIZE</literal> bytes long.
       </para>
 
       <para>
-        If the <parameter>off</parameter> and
-        <parameter>count</parameter> parameters are properly used,
-        <parameter>eof</parameter> should be used to signal that the
+        The parameter
+        <parameter>peof</parameter> should be used to signal that the
         end of the file has been reached by writing
         <literal>1</literal> to the memory location
-        <parameter>eof</parameter> points to.
+        <parameter>peof</parameter> points to.
       </para>
 
       <para>
-        The parameter <parameter>start</parameter> doesn't seem to be
-        used anywhere in the kernel. The <parameter>data</parameter>
+        The <parameter>data</parameter>
         parameter can be used to create a single call back function for
         several files, see <xref linkend="usingdata"/>.
       </para>
 
       <para>
-        The <function>read_func</function> function must return the
-        number of bytes written into the <parameter>page</parameter>.
+        The rest of the parameters and the return value are described
+       by a comment in <filename>fs/proc/generic.c</filename> as follows:
       </para>
 
+      <blockquote>
+        <para>
+       You have three ways to return data:
+               </para>
+        <orderedlist>
+          <listitem>
+            <para>
+             Leave <literal>*start = NULL</literal>.  (This is the default.)
+             Put the data of the requested offset at that
+             offset within the buffer.  Return the number (<literal>n</literal>)
+             of bytes there are from the beginning of the
+             buffer up to the last byte of data.  If the
+             number of supplied bytes (<literal>= n - offset</literal>) is
+             greater than zero and you didn't signal eof
+             and the reader is prepared to take more data
+             you will be called again with the requested
+             offset advanced by the number of bytes
+             absorbed.  This interface is useful for files
+             no larger than the buffer.
+           </para>
+         </listitem>
+         <listitem>
+            <para>
+             Set <literal>*start</literal> to an unsigned long value less than
+             the buffer address but greater than zero.
+             Put the data of the requested offset at the
+             beginning of the buffer.  Return the number of
+             bytes of data placed there.  If this number is
+             greater than zero and you didn't signal eof
+             and the reader is prepared to take more data
+             you will be called again with the requested
+             offset advanced by <literal>*start</literal>.  This interface is
+             useful when you have a large file consisting
+             of a series of blocks which you want to count
+             and return as wholes.
+             (Hack by Paul.Russell@rustcorp.com.au)
+           </para>
+         </listitem>
+         <listitem>
+            <para>
+             Set <literal>*start</literal> to an address within the buffer.
+             Put the data of the requested offset at <literal>*start</literal>.
+             Return the number of bytes of data placed there.
+             If this number is greater than zero and you
+             didn't signal eof and the reader is prepared to
+             take more data you will be called again with the
+             requested offset advanced by the number of bytes
+             absorbed.
+           </para>
+         </listitem>
+       </orderedlist>
+      </blockquote>
+
       <para>
         <xref linkend="example"/> shows how to use a read call back
         function.
index f4dffadbcb00af44b40b99dd55649731b57cb21d..42b01bc2e1b4f01f414b340a6204fb3ea1087953 100644 (file)
@@ -222,7 +222,15 @@ over a rather long period of time, but improvements are always welcome!
        deadlock as soon as the RCU callback happens to interrupt that
        acquisition's critical section.
 
-13.    SRCU (srcu_read_lock(), srcu_read_unlock(), and synchronize_srcu())
+13.    RCU callbacks can be and are executed in parallel.  In many cases,
+       the callback code simply wrappers around kfree(), so that this
+       is not an issue (or, more accurately, to the extent that it is
+       an issue, the memory-allocator locking handles it).  However,
+       if the callbacks do manipulate a shared data structure, they
+       must use whatever locking or other synchronization is required
+       to safely access and/or modify that data structure.
+
+14.    SRCU (srcu_read_lock(), srcu_read_unlock(), and synchronize_srcu())
        may only be invoked from process context.  Unlike other forms of
        RCU, it -is- permissible to block in an SRCU read-side critical
        section (demarked by srcu_read_lock() and srcu_read_unlock()),
index 6ebffb57e3dbf326c6db594da4206c2f30bf1050..19e7f65c269f21616347effd9035caeee4d2cb60 100644 (file)
@@ -1,4 +1,4 @@
-Linux Kernel patch sumbittal checklist
+Linux Kernel patch submission checklist
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Here are some basic things that developers should do if they want to see their
@@ -9,7 +9,6 @@ Documentation/SubmittingPatches and elsewhere regarding submitting Linux
 kernel patches.
 
 
-
 1: Builds cleanly with applicable or modified CONFIG options =y, =m, and
    =n.  No gcc warnings/errors, no linker warnings/errors.
 
index 0958e97d4bf4326ad0f6bc6418263f403d168eda..3f9a7912e69bcbe46f551e614d3f0b90af138999 100644 (file)
@@ -464,9 +464,25 @@ section Linus Computer Science 101.
 Nuff said.  If your code deviates too much from this, it is likely
 to be rejected without further review, and without comment.
 
+Once significant exception is when moving code from one file to
+another in this case you should not modify the moved code at all in
+the same patch which moves it.  This clearly delineates the act of
+moving the code and your changes.  This greatly aids review of the
+actual differences and allows tools to better track the history of
+the code itself.
+
 Check your patches with the patch style checker prior to submission
-(scripts/checkpatch.pl).  You should be able to justify all
-violations that remain in your patch.
+(scripts/checkpatch.pl).  The style checker should be viewed as
+a guide not as the final word.  If your code looks better with
+a violation then its probably best left alone.
+
+The checker reports at three levels:
+ - ERROR: things that are very likely to be wrong
+ - WARNING: things requiring careful review
+ - CHECK: things requiring thought
+
+You should be able to justify all violations that remain in your
+patch.
 
 
 
index 71acc28ed0d1b8b6b3692362bcf9d6ef4d7fcd02..24c5aade89987998260f956bfc16dacfe3d48841 100644 (file)
@@ -49,6 +49,7 @@ char name[100];
 int dbg;
 int print_delays;
 int print_io_accounting;
+int print_task_context_switch_counts;
 __u64 stime, utime;
 
 #define PRINTF(fmt, arg...) {                  \
@@ -195,7 +196,7 @@ void print_delayacct(struct taskstats *t)
               "IO    %15s%15s\n"
               "      %15llu%15llu\n"
               "MEM   %15s%15s\n"
-              "      %15llu%15llu\n\n",
+              "      %15llu%15llu\n"
               "count", "real total", "virtual total", "delay total",
               t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
               t->cpu_delay_total,
@@ -204,6 +205,14 @@ void print_delayacct(struct taskstats *t)
               "count", "delay total", t->swapin_count, t->swapin_delay_total);
 }
 
+void task_context_switch_counts(struct taskstats *t)
+{
+       printf("\n\nTask   %15s%15s\n"
+              "       %15lu%15lu\n",
+              "voluntary", "nonvoluntary",
+              t->nvcsw, t->nivcsw);
+}
+
 void print_ioacct(struct taskstats *t)
 {
        printf("%s: read=%llu, write=%llu, cancelled_write=%llu\n",
@@ -235,7 +244,7 @@ int main(int argc, char *argv[])
        struct msgtemplate msg;
 
        while (1) {
-               c = getopt(argc, argv, "diw:r:m:t:p:vl");
+               c = getopt(argc, argv, "qdiw:r:m:t:p:vl");
                if (c < 0)
                        break;
 
@@ -248,6 +257,10 @@ int main(int argc, char *argv[])
                        printf("printing IO accounting\n");
                        print_io_accounting = 1;
                        break;
+               case 'q':
+                       printf("printing task/process context switch rates\n");
+                       print_task_context_switch_counts = 1;
+                       break;
                case 'w':
                        logfile = strdup(optarg);
                        printf("write to file %s\n", logfile);
@@ -389,6 +402,8 @@ int main(int argc, char *argv[])
                                                        print_delayacct((struct taskstats *) NLA_DATA(na));
                                                if (print_io_accounting)
                                                        print_ioacct((struct taskstats *) NLA_DATA(na));
+                                               if (print_task_context_switch_counts)
+                                                       task_context_switch_counts((struct taskstats *) NLA_DATA(na));
                                                if (fd) {
                                                        if (write(fd, NLA_DATA(na), na->nla_len) < 0) {
                                                                err(1,"write error\n");
index 661c797eaf79dc791997fa31a4b3823132735244..8aa7529f8258a12725f6d34b5a7b349aa104a48a 100644 (file)
@@ -22,6 +22,8 @@ There are three different groups of fields in the struct taskstats:
     /* Extended accounting fields end */
     Their values are collected if CONFIG_TASK_XACCT is set.
 
+4) Per-task and per-thread context switch count statistics
+
 Future extension should add fields to the end of the taskstats struct, and
 should not change the relative position of each field within the struct.
 
@@ -158,4 +160,8 @@ struct taskstats {
 
        /* Extended accounting fields end */
 
+4) Per-task and per-thread statistics
+       __u64   nvcsw;                  /* Context voluntary switch counter */
+       __u64   nivcsw;                 /* Context involuntary switch counter */
+
 }
diff --git a/Documentation/fault-injection/failcmd.sh b/Documentation/fault-injection/failcmd.sh
deleted file mode 100644 (file)
index 63177ab..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-echo 1 > /proc/self/make-it-fail
-exec $*
diff --git a/Documentation/fault-injection/failmodule.sh b/Documentation/fault-injection/failmodule.sh
deleted file mode 100644 (file)
index 474a8b9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-#
-# Usage: failmodule <failname> <modulename> [stacktrace-depth]
-#
-#      <failname>: "failslab", "fail_alloc_page", or "fail_make_request"
-#
-#      <modulename>: module name that you want to inject faults.
-#
-#      [stacktrace-depth]: the maximum number of stacktrace walking allowed
-#
-
-STACKTRACE_DEPTH=5
-if [ $# -gt 2 ]; then
-       STACKTRACE_DEPTH=$3
-fi
-
-if [ ! -d /debug/$1 ]; then
-       echo "Fault-injection $1 does not exist" >&2
-       exit 1
-fi
-if [ ! -d /sys/module/$2 ]; then
-       echo "Module $2 does not exist" >&2
-       exit 1
-fi
-
-# Disable any fault injection
-echo 0 > /debug/$1/stacktrace-depth
-
-echo `cat /sys/module/$2/sections/.text` > /debug/$1/require-start
-echo `cat /sys/module/$2/sections/.exit.text` > /debug/$1/require-end
-echo $STACKTRACE_DEPTH > /debug/$1/stacktrace-depth
index b7ca560b93407ca94848ced9304a52b2365c9559..4bc374a14345da10f666d67745aa151231c10c92 100644 (file)
@@ -103,6 +103,11 @@ configuration of fault-injection capabilities.
        default is 'N', setting it to 'Y' will inject failures
        only into non-sleep allocations (GFP_ATOMIC allocations).
 
+- /debug/fail_page_alloc/min-order:
+
+       specifies the minimum page allocation order to be injected
+       failures.
+
 o Boot option
 
 In order to inject faults while debugfs is not available (early boot time),
@@ -156,70 +161,77 @@ o add a hook to insert failures
 Application Examples
 --------------------
 
-o inject slab allocation failures into module init/cleanup code
+o Inject slab allocation failures into module init/exit code
 
-------------------------------------------------------------------------------
 #!/bin/bash
 
-FAILCMD=Documentation/fault-injection/failcmd.sh
-BLACKLIST="root_plug evbug"
-
-FAILNAME=failslab
-echo Y > /debug/$FAILNAME/task-filter
-echo 10 > /debug/$FAILNAME/probability
-echo 100 > /debug/$FAILNAME/interval
-echo -1 > /debug/$FAILNAME/times
-echo 2 > /debug/$FAILNAME/verbose
-echo 1 > /debug/$FAILNAME/ignore-gfp-wait
+FAILTYPE=failslab
+echo Y > /debug/$FAILTYPE/task-filter
+echo 10 > /debug/$FAILTYPE/probability
+echo 100 > /debug/$FAILTYPE/interval
+echo -1 > /debug/$FAILTYPE/times
+echo 0 > /debug/$FAILTYPE/space
+echo 2 > /debug/$FAILTYPE/verbose
+echo 1 > /debug/$FAILTYPE/ignore-gfp-wait
 
-blacklist()
+faulty_system()
 {
-       echo $BLACKLIST | grep $1 > /dev/null 2>&1
+       bash -c "echo 1 > /proc/self/make-it-fail && exec $*"
 }
 
-oops()
-{
-       dmesg | grep BUG > /dev/null 2>&1
-}
+if [ $# -eq 0 ]
+then
+       echo "Usage: $0 modulename [ modulename ... ]"
+       exit 1
+fi
+
+for m in $*
+do
+       echo inserting $m...
+       faulty_system modprobe $m
 
-find /lib/modules/`uname -r` -name '*.ko' -exec basename {} .ko \; |
-       while read i
-       do
-               oops && exit 1
-
-               if ! blacklist $i
-               then
-                       echo inserting $i...
-                       bash $FAILCMD modprobe $i
-               fi
-       done
-
-lsmod | awk '{ if ($3 == 0) { print $1 } }' |
-       while read i
-       do
-               oops && exit 1
-
-               if ! blacklist $i
-               then
-                       echo removing $i...
-                       bash $FAILCMD modprobe -r $i
-               fi
-       done
+       echo removing $m...
+       faulty_system modprobe -r $m
+done
 
 ------------------------------------------------------------------------------
 
-o inject slab allocation failures only for a specific module
+o Inject page allocation failures only for a specific module
 
-------------------------------------------------------------------------------
 #!/bin/bash
 
-FAILMOD=Documentation/fault-injection/failmodule.sh
+FAILTYPE=fail_page_alloc
+module=$1
 
-echo injecting errors into the module $1...
+if [ -z $module ]
+then
+       echo "Usage: $0 <modulename>"
+       exit 1
+fi
 
-modprobe $1
-bash $FAILMOD failslab $1 10
-echo 25 > /debug/failslab/probability
+modprobe $module
 
-------------------------------------------------------------------------------
+if [ ! -d /sys/module/$module/sections ]
+then
+       echo Module $module is not loaded
+       exit 1
+fi
+
+cat /sys/module/$module/sections/.text > /debug/$FAILTYPE/require-start
+cat /sys/module/$module/sections/.data > /debug/$FAILTYPE/require-end
+
+echo N > /debug/$FAILTYPE/task-filter
+echo 10 > /debug/$FAILTYPE/probability
+echo 100 > /debug/$FAILTYPE/interval
+echo -1 > /debug/$FAILTYPE/times
+echo 0 > /debug/$FAILTYPE/space
+echo 2 > /debug/$FAILTYPE/verbose
+echo 1 > /debug/$FAILTYPE/ignore-gfp-wait
+echo 1 > /debug/$FAILTYPE/ignore-gfp-highmem
+echo 10 > /debug/$FAILTYPE/stacktrace-depth
+
+trap "echo 0 > /debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT
+
+echo "Injecting errors into the module $module... (interrupt to stop)"
+sleep 1000000
 
index 092c65dd35c2e9dd4fdf4f24cd6a6b1f8e64bc84..18bd2ddccb156aef5175533e084625a50e8827eb 100644 (file)
@@ -41,14 +41,6 @@ Who: Pavel Machek <pavel@suse.cz>
 
 ---------------------------
 
-What:  RAW driver (CONFIG_RAW_DRIVER)
-When:  December 2005
-Why:   declared obsolete since kernel 2.6.3
-       O_DIRECT can be used instead
-Who:   Adrian Bunk <bunk@stusta.de>
-
----------------------------
-
 What:  old NCR53C9x driver
 When:  October 2007
 Why:   Replaced by the much better esp_scsi driver.  Actual low-level
@@ -119,13 +111,6 @@ Who:    Adrian Bunk <bunk@stusta.de>
 
 ---------------------------
 
-What:  drivers depending on OSS_OBSOLETE_DRIVER
-When:  options in 2.6.20, code in 2.6.22
-Why:   OSS drivers with ALSA replacements
-Who:   Adrian Bunk <bunk@stusta.de>
-
----------------------------
-
 What:  Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
        (temporary transition config option provided until then)
        The transition config option will also be removed at the same time.
@@ -264,6 +249,14 @@ Who:       Jean Delvare <khali@linux-fr.org>
 
 ---------------------------
 
+What:  'time' kernel boot parameter
+When:  January 2008
+Why:   replaced by 'printk.time=<value>' so that printk timestamps can be
+       enabled or disabled as needed
+Who:   Randy Dunlap <randy.dunlap@oracle.com>
+
+---------------------------
+
 What:  drivers depending on OSS_OBSOLETE
 When:  options in 2.6.23, code in 2.6.25
 Why:   obsolete OSS drivers
index 8756a07f4dc34abf3368935f5abb7a1adee228ef..460b892d089e526945275cf283c7b56950bfbe3b 100644 (file)
@@ -171,7 +171,9 @@ read the file /proc/PID/status:
 This shows you nearly the same information you would get if you viewed it with
 the ps  command.  In  fact,  ps  uses  the  proc  file  system  to  obtain its
 information. The  statm  file  contains  more  detailed  information about the
-process memory usage. Its seven fields are explained in Table 1-2.
+process memory usage. Its seven fields are explained in Table 1-2.  The stat
+file contains details information about the process itself.  Its fields are
+explained in Table 1-3.
 
 
 Table 1-2: Contents of the statm files (as of 2.6.8-rc3)
@@ -188,16 +190,65 @@ Table 1-2: Contents of the statm files (as of 2.6.8-rc3)
  dt       number of dirty pages                        (always 0 on 2.6)
 ..............................................................................
 
+
+Table 1-3: Contents of the stat files (as of 2.6.22-rc3)
+..............................................................................
+ Field          Content
+  pid           process id
+  tcomm         filename of the executable
+  state         state (R is running, S is sleeping, D is sleeping in an
+                uninterruptible wait, Z is zombie, T is traced or stopped)
+  ppid          process id of the parent process
+  pgrp          pgrp of the process
+  sid           session id
+  tty_nr        tty the process uses
+  tty_pgrp      pgrp of the tty
+  flags         task flags
+  min_flt       number of minor faults
+  cmin_flt      number of minor faults with child's
+  maj_flt       number of major faults
+  cmaj_flt      number of major faults with child's
+  utime         user mode jiffies
+  stime         kernel mode jiffies
+  cutime        user mode jiffies with child's
+  cstime        kernel mode jiffies with child's
+  priority      priority level
+  nice          nice level
+  num_threads   number of threads
+  start_time    time the process started after system boot
+  vsize         virtual memory size
+  rss           resident set memory size
+  rsslim        current limit in bytes on the rss
+  start_code    address above which program text can run
+  end_code      address below which program text can run
+  start_stack   address of the start of the stack
+  esp           current value of ESP
+  eip           current value of EIP
+  pending       bitmap of pending signals (obsolete)
+  blocked       bitmap of blocked signals (obsolete)
+  sigign        bitmap of ignored signals (obsolete)
+  sigcatch      bitmap of catched signals (obsolete)
+  wchan         address where process went to sleep
+  0             (place holder)
+  0             (place holder)
+  exit_signal   signal to send to parent thread on exit
+  task_cpu      which CPU the task is scheduled on
+  rt_priority   realtime priority
+  policy        scheduling policy (man sched_setscheduler)
+  blkio_ticks   time spent waiting for block IO
+..............................................................................
+
+
 1.2 Kernel data
 ---------------
 
 Similar to  the  process entries, the kernel data files give information about
 the running kernel. The files used to obtain this information are contained in
-/proc and  are  listed  in Table 1-3. Not all of these will be present in your
+/proc and  are  listed  in Table 1-4. Not all of these will be present in your
 system. It  depends  on the kernel configuration and the loaded modules, which
 files are there, and which are missing.
 
-Table 1-3: Kernel info in /proc 
+Table 1-4: Kernel info in /proc
 ..............................................................................
  File        Content                                           
  apm         Advanced power management info                    
@@ -473,10 +524,10 @@ IDE devices:
 
 More detailed  information  can  be  found  in  the  controller  specific
 subdirectories. These  are  named  ide0,  ide1  and  so  on.  Each  of  these
-directories contains the files shown in table 1-4.
+directories contains the files shown in table 1-5.
 
 
-Table 1-4: IDE controller info in  /proc/ide/ide? 
+Table 1-5: IDE controller info in  /proc/ide/ide?
 ..............................................................................
  File    Content                                 
  channel IDE channel (0 or 1)                    
@@ -486,11 +537,11 @@ Table 1-4: IDE controller info in  /proc/ide/ide?
 ..............................................................................
 
 Each device  connected  to  a  controller  has  a separate subdirectory in the
-controllers directory.  The  files  listed in table 1-5 are contained in these
+controllers directory.  The  files  listed in table 1-6 are contained in these
 directories.
 
 
-Table 1-5: IDE device information 
+Table 1-6: IDE device information
 ..............................................................................
  File             Content                                    
  cache            The cache                                  
index a47cc819f37bb7f5535afbf2bf720766ae51dfdd..045f3e055a28932c76864a19696732311a4f9838 100644 (file)
@@ -3,7 +3,7 @@
 
        Original author: Richard Gooch <rgooch@atnf.csiro.au>
 
-                 Last updated on October 28, 2005
+                 Last updated on June 24, 2007.
 
   Copyright (C) 1999 Richard Gooch
   Copyright (C) 2005 Pekka Enberg
@@ -107,7 +107,7 @@ file /proc/filesystems.
 struct file_system_type
 -----------------------
 
-This describes the filesystem. As of kernel 2.6.13, the following
+This describes the filesystem. As of kernel 2.6.22, the following
 members are defined:
 
 struct file_system_type {
@@ -119,6 +119,8 @@ struct file_system_type {
         struct module *owner;
         struct file_system_type * next;
         struct list_head fs_supers;
+       struct lock_class_key s_lock_key;
+       struct lock_class_key s_umount_key;
 };
 
   name: the name of the filesystem type, such as "ext2", "iso9660",
@@ -137,11 +139,12 @@ struct file_system_type {
 
   next: for internal VFS use: you should initialize this to NULL
 
+  s_lock_key, s_umount_key: lockdep-specific
+
 The get_sb() method has the following arguments:
 
-  struct super_block *sb: the superblock structure. This is partially
-       initialized by the VFS and the rest must be initialized by the
-       get_sb() method
+  struct file_system_type *fs_type: decribes the filesystem, partly initialized
+       by the specific filesystem code
 
   int flags: mount flags
 
@@ -150,12 +153,13 @@ The get_sb() method has the following arguments:
   void *data: arbitrary mount options, usually comes as an ASCII
        string
 
-  int silent: whether or not to be silent on error
+  struct vfsmount *mnt: a vfs-internal representation of a mount point
 
 The get_sb() method must determine if the block device specified
-in the superblock contains a filesystem of the type the method
-supports. On success the method returns the superblock pointer, on
-failure it returns NULL.
+in the dev_name and fs_type contains a filesystem of the type the method
+supports. If it succeeds in opening the named block device, it initializes a
+struct super_block descriptor for the filesystem contained by the block device.
+On failure it returns an error.
 
 The most interesting member of the superblock structure that the
 get_sb() method fills in is the "s_op" field. This is a pointer to
@@ -193,7 +197,7 @@ struct super_operations
 -----------------------
 
 This describes how the VFS can manipulate the superblock of your
-filesystem. As of kernel 2.6.13, the following members are defined:
+filesystem. As of kernel 2.6.22, the following members are defined:
 
 struct super_operations {
         struct inode *(*alloc_inode)(struct super_block *sb);
@@ -216,8 +220,6 @@ struct super_operations {
         void (*clear_inode) (struct inode *);
         void (*umount_begin) (struct super_block *);
 
-        void (*sync_inodes) (struct super_block *sb,
-                                struct writeback_control *wbc);
         int (*show_options)(struct seq_file *, struct vfsmount *);
 
         ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
@@ -300,9 +302,6 @@ or bottom half).
 
   umount_begin: called when the VFS is unmounting a filesystem.
 
-  sync_inodes: called when the VFS is writing out dirty data associated with
-       a superblock.
-
   show_options: called by the VFS to show mount options for /proc/<pid>/mounts.
 
   quota_read: called by the VFS to read from filesystem quota file.
@@ -324,7 +323,7 @@ struct inode_operations
 -----------------------
 
 This describes how the VFS can manipulate an inode in your
-filesystem. As of kernel 2.6.13, the following members are defined:
+filesystem. As of kernel 2.6.22, the following members are defined:
 
 struct inode_operations {
        int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
@@ -348,6 +347,7 @@ struct inode_operations {
        ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
        ssize_t (*listxattr) (struct dentry *, char *, size_t);
        int (*removexattr) (struct dentry *, const char *);
+       void (*truncate_range)(struct inode *, loff_t, loff_t);
 };
 
 Again, all methods are called without any locks being held, unless
@@ -444,6 +444,9 @@ otherwise noted.
   removexattr: called by the VFS to remove an extended attribute from
        a file. This method is called by removexattr(2) system call.
 
+  truncate_range: a method provided by the underlying filesystem to truncate a
+       range of blocks , i.e. punch a hole somewhere in a file.
+
 
 The Address Space Object
 ========================
@@ -522,7 +525,7 @@ struct address_space_operations
 -------------------------------
 
 This describes how the VFS can manipulate mapping of a file to page cache in
-your filesystem. As of kernel 2.6.16, the following members are defined:
+your filesystem. As of kernel 2.6.22, the following members are defined:
 
 struct address_space_operations {
        int (*writepage)(struct page *page, struct writeback_control *wbc);
@@ -543,6 +546,7 @@ struct address_space_operations {
                        int);
        /* migrate the contents of a page to the specified target */
        int (*migratepage) (struct page *, struct page *);
+       int (*launder_page) (struct page *);
 };
 
   writepage: called by the VM to write a dirty page to backing store.
@@ -689,6 +693,10 @@ struct address_space_operations {
        transfer any private data across and update any references
         that it has to the page.
 
+  launder_page: Called before freeing a page - it writes back the dirty page. To
+       prevent redirtying the page, it is kept locked during the whole
+       operation.
+
 The File Object
 ===============
 
@@ -699,9 +707,10 @@ struct file_operations
 ----------------------
 
 This describes how the VFS can manipulate an open file. As of kernel
-2.6.17, the following members are defined:
+2.6.22, the following members are defined:
 
 struct file_operations {
+       struct module *owner;
        loff_t (*llseek) (struct file *, loff_t, int);
        ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
        ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
@@ -728,10 +737,8 @@ struct file_operations {
        int (*check_flags)(int);
        int (*dir_notify)(struct file *filp, unsigned long arg);
        int (*flock) (struct file *, int, struct file_lock *);
-       ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned 
-int);
-       ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned  
-int);
+       ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int);
+       ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int);
 };
 
 Again, all methods are called without any locks being held, unless
index 22b0814d0ad0927024de028303a4af9cce0afc11..20d368c59814206d82dfa2236bdf6764fd5bee85 100644 (file)
@@ -67,3 +67,7 @@ executed on expiry.
 
     Thomas, Ingo
 
+Added flag to indicate 'deferrable timer' in /proc/timer_stats. A deferrable
+timer will appear as follows
+  10D,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
+
index 3de7d379cf077d3c933c931133b5f17132d1fa3a..5c7fbf9d96b40a32d674446a6120d206990d7d76 100644 (file)
@@ -67,7 +67,7 @@ Code  Seq#    Include File            Comments
 0x00   00-1F   linux/wavefront.h       conflict!
 0x02   all     linux/fd.h
 0x03   all     linux/hdreg.h
-0x04   all     linux/umsdos_fs.h
+0x04   D2-DC   linux/umsdos_fs.h       Dead since 2.6.11, but don't reuse these.
 0x06   all     linux/lp.h
 0x09   all     linux/md.h
 0x12   all     linux/fs.h
index 3078f14830dde2125d1b8f9fc756b5b2c76a6ce3..8363ad3ba0187f9abc65ab75c989e80bd0e70eed 100644 (file)
@@ -237,16 +237,9 @@ and is between 256 and 4096 characters. It is defined in the file
                        Disable PIN 1 of APIC timer
                        Can be useful to work around chipset bugs.
 
-       ad1816=         [HW,OSS]
-                       Format: <io>,<irq>,<dma>,<dma2>
-                       See also Documentation/sound/oss/AD1816.
-
        ad1848=         [HW,OSS]
                        Format: <io>,<irq>,<dma>,<dma2>,<type>
 
-       adlib=          [HW,OSS]
-                       Format: <io>
-
        advansys=       [HW,SCSI]
                        See header of drivers/scsi/advansys.c.
 
@@ -451,13 +444,20 @@ and is between 256 and 4096 characters. It is defined in the file
                        Documentation/networking/netconsole.txt for an
                        alternative.
 
-               uart,io,<addr>[,options]
-               uart,mmio,<addr>[,options]
+               uart[8250],io,<addr>[,options]
+               uart[8250],mmio,<addr>[,options]
                        Start an early, polled-mode console on the 8250/16550
                        UART at the specified I/O port or MMIO address,
                        switching to the matching ttyS device later.  The
                        options are the same as for ttyS, above.
 
+       earlycon=       [KNL] Output early console device and options.
+               uart[8250],io,<addr>[,options]
+               uart[8250],mmio,<addr>[,options]
+                       Start an early, polled-mode console on the 8250/16550
+                       UART at the specified I/O port or MMIO address.
+                       The options are the same as for ttyS, above.
+
        cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver
                        Format:
                        <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
@@ -1159,6 +1159,8 @@ and is between 256 and 4096 characters. It is defined in the file
 
        nosmp           [SMP] Tells an SMP kernel to act as a UP kernel.
 
+       nosoftlockup    [KNL] Disable the soft-lockup detector.
+
        nosync          [HW,M68K] Disables sync negotiation for all devices.
 
        notsc           [BUGS=IA-32] Disable Time Stamp Counter
@@ -1167,14 +1169,16 @@ and is between 256 and 4096 characters. It is defined in the file
 
        nowb            [ARM]
 
+       numa_zonelist_order= [KNL, BOOT] Select zonelist order for NUMA.
+                       one of ['zone', 'node', 'default'] can be specified
+                       This can be set from sysctl after boot.
+                       See Documentation/sysctl/vm.txt for details.
+
        nr_uarts=       [SERIAL] maximum number of UARTs to be registered.
 
        opl3=           [HW,OSS]
                        Format: <io>
 
-       opl3sa2=        [HW,OSS] Format:
-                       <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple]
-
        oprofile.timer= [HW]
                        Use timer interrupt instead of performance counters
 
@@ -1356,6 +1360,15 @@ and is between 256 and 4096 characters. It is defined in the file
                        autoconfiguration.
                        Ranges are in pairs (memory base and size).
 
+       print-fatal-signals=
+                       [KNL] debug: print fatal signals
+                       print-fatal-signals=1: print segfault info to
+                       the kernel console.
+                       default: off.
+
+       printk.time=    Show timing data prefixed to each printk message line
+                       Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
+
        profile=        [KNL] Enable kernel profiling via /proc/profile
                        Format: [schedule,]<number>
                        Param: "schedule" - profile schedule points.
@@ -1468,6 +1481,10 @@ and is between 256 and 4096 characters. It is defined in the file
 
        rootfstype=     [KNL] Set root filesystem type
 
+       rootwait        [KNL] Wait (indefinitely) for root device to show up.
+                       Useful for devices that are detected asynchronously
+                       (e.g. USB and MMC devices).
+
        rw              [KNL] Mount root device read-write on boot
 
        S               [KNL] Run init in single mode
@@ -1534,35 +1551,39 @@ and is between 256 and 4096 characters. It is defined in the file
 
        slram=          [HW,MTD]
 
-       slub_debug      [MM, SLUB]
-                       Enabling slub_debug allows one to determine the culprit
-                       if slab objects become corrupted. Enabling slub_debug
-                       creates guard zones around objects and poisons objects
-                       when not in use. Also tracks the last alloc / free.
-                       For more information see Documentation/vm/slub.txt.
+       slub_debug[=options[,slabs]]    [MM, SLUB]
+                       Enabling slub_debug allows one to determine the
+                       culprit if slab objects become corrupted. Enabling
+                       slub_debug can create guard zones around objects and
+                       may poison objects when not in use. Also tracks the
+                       last alloc / free. For more information see
+                       Documentation/vm/slub.txt.
 
        slub_max_order= [MM, SLUB]
-                       Determines the maximum allowed order for slabs. Setting
-                       this too high may cause fragmentation.
-                       For more information see Documentation/vm/slub.txt.
+                       Determines the maximum allowed order for slabs.
+                       A high setting may cause OOMs due to memory
+                       fragmentation. For more information see
+                       Documentation/vm/slub.txt.
 
        slub_min_objects=       [MM, SLUB]
-                       The minimum objects per slab. SLUB will increase the
-                       slab order up to slub_max_order to generate a
-                       sufficiently big slab to satisfy the number of objects.
-                       The higher the number of objects the smaller the overhead
-                       of tracking slabs.
+                       The minimum number of objects per slab. SLUB will
+                       increase the slab order up to slub_max_order to
+                       generate a sufficiently large slab able to contain
+                       the number of objects indicated. The higher the number
+                       of objects the smaller the overhead of tracking slabs
+                       and the less frequently locks need to be acquired.
                        For more information see Documentation/vm/slub.txt.
 
        slub_min_order= [MM, SLUB]
                        Determines the mininum page order for slabs. Must be
-                       lower than slub_max_order
+                       lower than slub_max_order.
                        For more information see Documentation/vm/slub.txt.
 
        slub_nomerge    [MM, SLUB]
-                       Disable merging of slabs of similar size. May be
+                       Disable merging of slabs with similar size. May be
                        necessary if there is some reason to distinguish
-                       allocs to different slabs.
+                       allocs to different slabs. Debug options disable
+                       merging on their own.
                        For more information see Documentation/vm/slub.txt.
 
        smart2=         [HW]
@@ -1775,6 +1796,7 @@ and is between 256 and 4096 characters. It is defined in the file
                        Set number of hash buckets for TCP connection
 
        time            Show timing data prefixed to each printk message line
+                       [deprecated, see 'printk.time']
 
        tipar.timeout=  [HW,PPT]
                        Set communications timeout in tenths of a second
index 7d5b60dea551daacec4cc81006678957a38f1795..23e6dde7eea6c34c33ffeb1ff0906a3f0848dcfa 100644 (file)
@@ -86,6 +86,20 @@ stuff are the values reported by the Oops - you can just cut-and-paste
 and do a replace of spaces to "\x" - that's what I do, as I'm too lazy 
 to write a program to automate this all).
 
+Alternatively, you can use the shell script in scripts/decodecode.
+Its usage is:  decodecode < oops.txt
+
+The hex bytes that follow "Code:" may (in some architectures) have a series
+of bytes that precede the current instruction pointer as well as bytes at and
+following the current instruction pointer.  In some cases, one instruction
+byte or word is surrounded by <> or (), as in "<86>" or "(f00d)".  These
+<> or () markings indicate the current instruction pointer.  Example from
+i386, split into multiple lines for readability:
+
+Code: f9 0f 8d f9 00 00 00 8d 42 0c e8 dd 26 11 c7 a1 60 ea 2b f9 8b 50 08 a1
+64 ea 2b f9 8d 34 82 8b 1e 85 db 74 6d 8b 15 60 ea 2b f9 <8b> 43 04 39 42 54
+7e 04 40 89 42 54 8b 43 04 3b 05 00 f6 52 c0
+
 Finally, if you want to see where the code comes from, you can do
 
        cd /usr/src/linux
diff --git a/Documentation/sound/oss/AD1816 b/Documentation/sound/oss/AD1816
deleted file mode 100644 (file)
index 14bd8f2..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Documentation for the AD1816(A) sound driver
-============================================
-
-Installation:
--------------
-
-To get your AD1816(A) based sound card work, you'll have to enable support for
-experimental code ("Prompt for development and/or incomplete code/drivers")
-and isapnp ("Plug and Play support", "ISA Plug and Play support"). Enable
-"Sound card support", "OSS modules support" and "Support for AD1816(A) based
-cards (EXPERIMENTAL)" in the sound configuration menu, too. Now build, install
-and reboot the new kernel as usual.
-
-Features:
----------
-
-List of features supported by this driver:
-- full-duplex support
-- supported audio formats: unsigned 8bit, signed 16bit little endian, 
-                           signed 16bit big endian, ยต-law, A-law
-- supported channels: mono and stereo
-- supported recording sources: Master, CD, Line, Line1, Line2, Mic
-- supports phat 3d stereo circuit (Line 3)
-
-
-Supported cards:
-----------------
-
-The following cards are known to work with this driver:
-- Terratec Base 1 
-- Terratec Base 64 
-- HP Kayak 
-- Acer FX-3D
-- SY-1816 
-- Highscreen Sound-Boostar 32 Wave 3D
-- Highscreen Sound-Boostar 16 
-- AVM Apex Pro card 
-- (Aztech SC-16 3D) 
-- (Newcom SC-16 3D) 
-- (Terratec EWS64S) 
-
-Cards listed in brackets are not supported reliable. If you have such a card 
-you should add the extra parameter:
-  options=1
-when loading the ad1816 module via modprobe. 
-
-
-Troubleshooting:
-----------------
-
-First of all you should check, if the driver has been loaded
-properly.
-
-If loading of the driver succeeds, but playback/capture fails, check
-if you used the correct values for irq, dma and dma2 when loading the module.
-If one of them is wrong you usually get the following error message:
-
-Nov  6 17:06:13 tek01 kernel: Sound: DMA (output) timed out - IRQ/DRQ config error?
-
-If playback/capture is too fast or to slow, you should have a look at
-the clock chip of your sound card. The AD1816 was designed for a 33MHz
-oscillator, however most sound card manufacturer use slightly
-different oscillators as they are cheaper than 33MHz oscillators. If
-you have such a card you have to adjust the ad1816_clockfreq parameter
-above. For example: For a card using a 32.875MHz oscillator use
-ad1816_clockfreq=32875 instead of ad1816_clockfreq=33000.
-
-
-Updates, bugfixes and bugreports:
---------------------------------
-
-As the driver is still experimental and under development, you should
-watch out for updates.  Updates of the driver are available on the
-Internet from one of my home pages:
-  http://www.student.informatik.tu-darmstadt.de/~tek/projects/linux.html
-or:
-  http://www.tu-darmstadt.de/~tek01/projects/linux.html
-
-Bugreports, bugfixes and related questions should be sent via E-Mail to:
-  tek@rbg.informatik.tu-darmstadt.de
-
-Thorsten Knabe <tek@rbg.informatik.tu-darmstadt.de>
-Christoph Hellwig <hch@infradead.org>
-       Last modified: 2000/09/20
diff --git a/Documentation/sound/oss/NM256 b/Documentation/sound/oss/NM256
deleted file mode 100644 (file)
index b503217..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-=======================================================
-Documentation for the NeoMagic 256AV/256ZX sound driver
-=======================================================
-
-You're looking at version 1.1 of the driver.  (Woohoo!) It has been
-successfully tested against the following laptop models:
-
-       Sony Z505S/Z505SX/Z505DX/Z505RX
-       Sony F150, F160, F180, F250, F270, F280, PCG-F26
-       Dell Latitude CPi, CPt (various submodels)
-
-There are a few caveats, which is why you should read the entirety of
-this document first.
-
-This driver was developed without any support or assistance from
-NeoMagic.  There is no warranty, expressed, implied, or otherwise.  It
-is free software in the public domain; feel free to use it, sell it,
-give it to your best friends, even claim that you wrote it (but why?!)
-but don't go whining to me, NeoMagic, Sony, Dell, or anyone else
-when it blows up your computer.
-
-Version 1.1 contains a change to try and detect non-AC97 versions of
-the hardware, and not install itself appropriately.  It should also
-reinitialize the hardware on an APM resume event, assuming that APM
-was configured into your kernel.
-
-============
-Installation
-============
-
-Enable the sound drivers, the OSS sound drivers, and then the NM256
-driver.  The NM256 driver *must* be configured as a module (it won't
-give you any other choice).
-
-Next, do the usual "make modules" and "make modules_install".
-Finally, insmod the soundcore, sound and nm256 modules.
-
-When the nm256 driver module is loaded, you should see a couple of
-confirmation messages in the kernel logfile indicating that it found
-the device (the device does *not* use any I/O ports or DMA channels).
-Now try playing a wav file, futz with the CD-ROM if you have one, etc.
-
-The NM256 is entirely a PCI-based device, and all the necessary
-information is automatically obtained from the card.  It can only be
-configured as a module in a vain attempt to prevent people from
-hurting themselves.  It works correctly if it shares an IRQ with
-another device (it normally shares IRQ 9 with the builtin eepro100
-ethernet on the Sony Z505 laptops). 
-
-It does not run the card in any sort of compatibility mode. It will
-not work on laptops that have the SB16-compatible, AD1848-compatible
-or CS4232-compatible codec/mixer; you will want to use the appropriate
-compatible OSS driver with these chipsets.  I cannot provide any
-assistance with machines using the SB16, AD1848 or CS4232 compatible
-versions.  (The driver now attempts to detect the mixer version, and
-will refuse to load if it believes the hardware is not
-AC97-compatible.)
-
-The sound support is very basic, but it does include simultaneous
-playback and record capability.  The mixer support is also quite
-simple, although this is in keeping with the rather limited
-functionality of the chipset.
-
-There is no hardware synthesizer available, as the Losedows OPL-3 and
-MIDI support is done via hardware emulation.
-
-Only three recording devices are available on the Sony: the
-microphone, the CD-ROM input, and the volume device (which corresponds
-to the stereo output).  (Other devices may be available on other
-models of laptops.)  The Z505 series does not have a builtin CD-ROM,
-so of course the CD-ROM input doesn't work.  It does work on laptops
-with a builtin CD-ROM drive.
-
-The mixer device does not appear to have any tone controls, at least
-on the Z505 series.  The mixer module checks for tone controls in the
-AC97 mixer, and will enable them if they are available.
-
-==============
-Known problems
-==============
-
-  * There are known problems with PCMCIA cards and the eepro100 ethernet 
-    driver on the Z505S/Z505SX/Z505DX.  Keep reading.
-
-  * There are also potential problems with using a virtual X display, and
-    also problems loading the module after the X server has been started. 
-    Keep reading.
-
-  * The volume control isn't anywhere near linear.  Sorry.  This will be
-    fixed eventually, when I get sufficiently annoyed with it.  (I doubt
-    it will ever be fixed now, since I've never gotten sufficiently
-    annoyed with it and nobody else seems to care.)
-
-  * There are reports that the CD-ROM volume is very low.  Since I do not
-    have a CD-ROM equipped laptop, I cannot test this (it's kinda hard to
-    do remotely).
-
-  * Only 8 fixed-rate speeds are supported.  This is mainly a chipset
-    limitation.  It may be possible to support other speeds in the future.
-
-  * There is no support for the telephone mixer/codec.  There is support
-    for a phonein/phoneout device in the mixer driver;  whether or not 
-    it does anything is anyone's guess.  (Reports on this would be
-    appreciated.  You'll have to figure out how to get the phone to
-    go off-hook before it'll work, tho.)
-
-  * This driver was not written with any cooperation or support from
-    NeoMagic.  If you have any questions about this, see their website
-    for their official stance on supporting open source drivers.
-
-============
-Video memory
-============
-
-The NeoMagic sound engine uses a portion of the display memory to hold
-the sound buffer.  (Crazy, eh?)  The NeoMagic video BIOS sets up a
-special pointer at the top of video RAM to indicate where the top of
-the audio buffer should be placed.
-
-At the present time XFree86 is apparently not aware of this.  It will
-thus write over either the pointer or the sound buffer with abandon.
-(Accelerated-X seems to do a better job here.)
-
-This implies a few things:
-
-  * Sometimes the NM256 driver has to guess at where the buffer 
-    should be placed, especially if the module is loaded after the
-    X server is started.  It's usually correct, but it will consistently
-    fail on the Sony F250.
-
-  * Virtual screens greater than 1024x768x16 under XFree86 are
-    problematic on laptops with only 2.5MB of screen RAM. This
-    includes all of the 256AV-equipped laptops.  (Virtual displays
-    may or may not work on the 256ZX, which has at least 4MB of
-    video RAM.)
-
-If you start having problems with random noise being output either
-constantly (this is the usual symptom on the F250), or when windows
-are moved around (this is the usual symptom when using a virtual
-screen), the best fix is to
-
-  * Don't use a virtual frame buffer.
-  * Make sure you load the NM256 module before the X server is
-    started.
-
-On the F250, it is possible to force the driver to load properly even
-after the XFree86 server is started by doing:
-
-       insmod nm256 buffertop=0x25a800
-
-This forces the audio buffers to the correct offset in screen RAM.
-
-One user has reported a similar problem on the Sony F270, although
-others apparently aren't seeing any problems.  His suggested command
-is
-
-       insmod nm256 buffertop=0x272800
-
-=================
-Official WWW site
-=================
-
-The official site for the NM256 driver is:
-
-       http://www.uglx.org/sony.html
-
-You should always be able to get the latest version of the driver there,
-and the driver will be supported for the foreseeable future.
-
-==============
-Z505RX and IDE
-==============
-
-There appears to be a problem with the IDE chipset on the Z505RX; one
-of the symptoms is that sound playback periodically hangs (when the
-disk is accessed).  The user reporting the problem also reported that
-enabling all of the IDE chipset workarounds in the kernel solved the
-problem, tho obviously only one of them should be needed--if someone
-can give me more details I would appreciate it.
-
-==============================
-Z505S/Z505SX on-board Ethernet
-==============================
-
-If you're using the on-board Ethernet Pro/100 ethernet support on the Z505
-series, I strongly encourage you to download the latest eepro100 driver from
-Donald Becker's site:
-
-       ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/test/eepro100.c
-
-There was a reported problem on the Z505SX that if the ethernet
-interface is disabled and reenabled while the sound driver is loaded,
-the machine would lock up.  I have included a workaround that is
-working satisfactorily.  However, you may occasionally see a message
-about "Releasing interrupts, over 1000 bad interrupts" which indicates
-that the workaround is doing its job.
-
-==================================
-PCMCIA and the Z505S/Z505SX/Z505DX
-==================================
-
-There is also a known problem with the Sony Z505S and Z505SX hanging
-if a PCMCIA card is inserted while the ethernet driver is loaded, or
-in some cases if the laptop is suspended.  This is caused by tons of
-spurious IRQ 9s, probably generated from the PCMCIA or ACPI bridges.
-
-There is currently no fix for the problem that works in every case.
-The only known workarounds are to disable the ethernet interface
-before inserting or removing a PCMCIA card, or with some cards
-disabling the PCMCIA card before ejecting it will also help the
-problem with the laptop hanging when the card is ejected.
-
-One user has reported that setting the tcic's cs_irq to some value
-other than 9 (like 11) fixed the problem.  This doesn't work on my
-Z505S, however--changing the value causes the cardmgr to stop seeing
-card insertions and removals, cards don't seem to work correctly, and
-I still get hangs if a card is inserted when the kernel is booted.
-
-Using the latest ethernet driver and pcmcia package allows me to
-insert an Adaptec 1480A SlimScsi card without the laptop hanging,
-although I still have to shut down the card before ejecting or
-powering down the laptop.  However, similar experiments with a DE-660
-ethernet card still result in hangs when the card is inserted.  I am
-beginning to think that the interrupts are CardBus-related, since the
-Adaptec card is a CardBus card, and the DE-660 is not; however, I
-don't have any other CardBus cards to test with.
-
-======
-Thanks
-======
-
-First, I want to thank everyone (except NeoMagic of course) for their
-generous support and encouragement.  I'd like to list everyone's name
-here that replied during the development phase, but the list is
-amazingly long.
-
-I will be rather unfair and single out a few people, however:
-
-       Justin Maurer, for being the first random net.person to try it,
-       and for letting me login to his Z505SX to get it working there
-
-       Edi Weitz for trying out several different versions, and giving
-       me a lot of useful feedback
-
-       Greg Rumple for letting me login remotely to get the driver 
-       functional on the 256ZX, for his assistance on tracking
-       down all sorts of random stuff, and for trying out Accel-X
-
-       Zach Brown, for the initial AC97 mixer interface design
-
-       Jeff Garzik, for various helpful suggestions on the AC97
-       interface
-
-       "Mr. Bumpy" for feedback on the Z505RX
-
-       Bill Nottingham, for generous assistance in getting the mixer ID
-       code working
-
-=================
-Previous versions
-=================
-
-Versions prior to 0.3 (aka `noname') had problems with weird artifacts
-in the output and failed to set the recording rate properly.  These
-problems have long since been fixed.
-
-Versions prior to 0.5 had problems with clicks in the output when
-anything other than 16-bit stereo sound was being played, and also had
-periodic clicks when recording.
-
-Version 0.7 first incorporated support for the NM256ZX chipset, which
-is found on some Dell Latitude laptops (the CPt, and apparently
-some CPi models as well).  It also included the generic AC97
-mixer module.
-
-Version 0.75 renamed all the functions and files with slightly more
-generic names.
-
-Note that previous versions of this document claimed that recording was
-8-bit only; it actually has been working for 16-bits all along.
diff --git a/Documentation/sound/oss/OPL3-SA2 b/Documentation/sound/oss/OPL3-SA2
deleted file mode 100644 (file)
index d8b6d2b..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-Documentation for the OPL3-SA2, SA3, and SAx driver (opl3sa2.o)
----------------------------------------------------------------
-
-Scott Murray, scott@spiteful.org
-January 7, 2001
-
-NOTE: All trade-marked terms mentioned below are properties of their
-      respective owners.
-
-
-Supported Devices
------------------
-
-This driver is for PnP soundcards based on the following Yamaha audio
-controller chipsets:
-
-YMF711 aka OPL3-SA2
-YMF715 and YMF719 aka OPL3-SA3
-
-Up until recently (December 2000), I'd thought the 719 to be a
-different chipset, the OPL3-SAx.  After an email exhange with
-Yamaha, however, it turns out that the 719 is just a re-badged
-715, and the chipsets are identical.  The chipset detection code
-has been updated to reflect this.
-
-Anyways, all of these chipsets implement the following devices:
-
-OPL3 FM synthesizer
-Soundblaster Pro
-Microsoft/Windows Sound System
-MPU401 MIDI interface
-
-Note that this driver uses the MSS device, and to my knowledge these
-chipsets enforce an either/or situation with the Soundblaster Pro
-device and the MSS device.  Since the MSS device has better
-capabilities, I have implemented the driver to use it.
-
-
-Mixer Channels
---------------
-
-Older versions of this driver (pre-December 2000) had two mixers,
-an OPL3-SA2 or SA3 mixer and a MSS mixer.  The OPL3-SA[23] mixer
-device contained a superset of mixer channels consisting of its own
-channels and all of the MSS mixer channels.  To simplify the driver
-considerably, and to partition functionality better, the OPL3-SA[23]
-mixer device now contains has its own specific mixer channels.  They
-are:
-
-Volume     - Hardware master volume control
-Bass       - SA3 only, now supports left and right channels
-Treble     - SA3 only, now supports left and right channels
-Microphone - Hardware microphone input volume control
-Digital1   - Yamaha 3D enhancement "Wide" mixer
-
-All other mixer channels (e.g. "PCM", "CD", etc.) now have to be
-controlled via the "MS Sound System (CS4231)" mixer.  To facilitate
-this, the mixer device creation order has been switched so that
-the MSS mixer is created first.  This allows accessing the majority
-of the useful mixer channels even via single mixer-aware tools
-such as "aumix".
-
-
-Plug 'n Play
-------------
-
-In previous kernels (2.2.x), some configuration was required to
-get the driver to talk to the card.  Being the new millennium and
-all, the 2.4.x kernels now support auto-configuration if ISA PnP
-support is configured in.  Theoretically, the driver even supports
-having more than one card in this case.
-
-With the addition of PnP support to the driver, two new parameters
-have been added to control it:
-
-isapnp   - set to 0 to disable ISA PnP card detection
-
-multiple - set to 0 to disable multiple PnP card detection
-
-
-Optional Parameters
--------------------
-
-Recent (December 2000) additions to the driver (based on a patch
-provided by Peter Englmaier) are two new parameters:
-
-ymode -    Set Yamaha 3D enhancement mode:
-           0 = Desktop/Normal  5-12 cm speakers
-           1 = Notebook PC (1) 3 cm speakers
-           2 = Notebook PC (2) 1.5 cm speakers
-           3 = Hi-Fi           16-38 cm speakers
-
-loopback - Set A/D input source. Useful for echo cancellation:
-           0 = Mic Right channel (default)
-           1 = Mono output loopback
-
-The ymode parameter has been tested and does work.  The loopback
-parameter, however, is untested.  Any feedback on its usefulness
-would be appreciated.
-
-
-Manual Configuration
---------------------
-
-If for some reason you decide not to compile ISA PnP support into
-your kernel, or disabled the driver's usage of it by setting the
-isapnp parameter as discussed above, then you will need to do some
-manual configuration.  There are two ways of doing this.  The most
-common is to use the isapnptools package to initialize the card, and
-use the kernel module form of the sound subsystem and sound drivers.
-Alternatively, some BIOS's allow manual configuration of installed
-PnP devices in a BIOS menu, which should allow using the non-modular
-sound drivers, i.e. built into the kernel.
-
-I personally use isapnp and modules, and do not have access to a PnP
-BIOS machine to test.  If you have such a beast, configuring the
-driver to be built into the kernel should just work (thanks to work
-done by David Luyer <luyer@ucs.uwa.edu.au>).  You will still need
-to specify settings, which can be done by adding:
-
-opl3sa2=<io>,<irq>,<dma>,<dma2>,<mssio>,<mpuio>
-
-to the kernel command line.  For example:
-
-opl3sa2=0x370,5,0,1,0x530,0x330
-
-If you are instead using the isapnp tools (as most people have been
-before Linux 2.4.x), follow the directions in their documentation to
-produce a configuration file.  Here is the relevant excerpt I used to
-use for my SA3 card from my isapnp.conf:
-
-(CONFIGURE YMH0800/-1 (LD 0
-
-# NOTE: IO 0 is for the unused SoundBlaster part of the chipset.
-(IO 0 (BASE 0x0220))
-(IO 1 (BASE 0x0530))
-(IO 2 (BASE 0x0388))
-(IO 3 (BASE 0x0330))
-(IO 4 (BASE 0x0370))
-(INT 0 (IRQ 5 (MODE +E)))
-(DMA 0 (CHANNEL 0))
-(DMA 1 (CHANNEL 1))
-
-Here, note that:
-
-Port  Acceptable Range  Purpose
-----  ----------------  -------
-IO 0  0x0220 - 0x0280   SB base address, unused.
-IO 1  0x0530 - 0x0F48   MSS base address
-IO 2  0x0388 - 0x03F8   OPL3 base address
-IO 3  0x0300 - 0x0334   MPU base address
-IO 4  0x0100 - 0x0FFE   card's own base address for its control I/O ports
-
-The IRQ and DMA values can be any that are considered acceptable for a
-MSS.  Assuming you've got isapnp all happy, then you should be able to
-do something like the following (which matches up with the isapnp
-configuration above):
-
-modprobe mpu401
-modprobe ad1848
-modprobe opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=0 dma2=1
-modprobe opl3 io=0x388
-
-See the section "Automatic Module Loading" below for how to set up
-/etc/modprobe.conf to automate this.
-
-An important thing to remember that the opl3sa2 module's io argument is
-for it's own control port, which handles the card's master mixer for
-volume (on all cards), and bass and treble (on SA3 cards).
-
-
-Troubleshooting
----------------
-
-If all goes well and you see no error messages, you should be able to
-start using the sound capabilities of your system.  If you get an
-error message while trying to insert the opl3sa2 module, then make
-sure that the values of the various arguments match what you specified
-in your isapnp configuration file, and that there is no conflict with
-another device for an I/O port or interrupt.  Checking the contents of
-/proc/ioports and /proc/interrupts can be useful to see if you're
-butting heads with another device.
-
-If you still cannot get the module to load, look at the contents of
-your system log file, usually /var/log/messages.  If you see the
-message "opl3sa2: Unknown Yamaha audio controller version", then you
-have a different chipset version than I've encountered so far.  Look
-for all messages in the log file that start with "opl3sa2: " and see
-if they provide any clues.  If you do not see the chipset version
-message, and none of the other messages present in the system log are
-helpful, email me some details and I'll try my best to help.
-
-
-Automatic Module Loading
-------------------------
-
-Lastly, if you're using modules and want to set up automatic module
-loading with kmod, the kernel module loader, here is the section I
-currently use in my modprobe.conf file:
-
-# Sound
-alias sound-slot-0 opl3sa2
-options opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=7 dma=0 dma2=3
-options opl3 io=0x388
-
-That's all it currently takes to get an OPL3-SA3 card working on my
-system.  Once again, if you have any other problems, email me at the
-address listed above.
-
-Scott
diff --git a/Documentation/sound/oss/VIA-chipset b/Documentation/sound/oss/VIA-chipset
deleted file mode 100644 (file)
index 3786523..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-Running sound cards on VIA chipsets
-
-o      There are problems with VIA chipsets and sound cards that appear to
-       lock the hardware solidly. Test programs under DOS have verified the
-       problem exists on at least some (but apparently not all) VIA boards
-
-o      VIA have so far failed to bother to answer support mail on the subject
-       so if you are a VIA engineer feeling aggrieved as you read this 
-       document go chase your own people. If there is a workaround please
-       let us know so we can implement it.
-
-
-Certain patterns of ISA DMA access used for most PC sound cards cause the
-VIA chipsets to lock up. From the collected reports this appears to cover a
-wide range of boards. Some also lock up with sound cards under Win* as well.
-
-Linux implements a workaround providing your chipset is PCI and you compiled
-with PCI Quirks enabled. If so you will see a message
-       "Activating ISA DMA bug workarounds"
-
-during booting. If you have a VIA PCI chipset that hangs when you use the
-sound and is not generating this message even with PCI quirks enabled
-please report the information to the linux-kernel list (see REPORTING-BUGS).
-
-If you are one of the tiny number of unfortunates with a 486 ISA/VLB VIA
-chipset board you need to do the following to build a special kernel for
-your board
-
-       edit linux/include/asm-i386/dma.h
-
-change
-
-#define isa_dma_bridge_buggy   (0)
-
-to
-
-#define isa_dma_bridge_buggy   (1)
-
-and rebuild a kernel without PCI quirk support.
-
-
-Other than this particular glitch the VIA [M]VP* chipsets appear to work
-perfectly with Linux.
diff --git a/Documentation/sound/oss/cs46xx b/Documentation/sound/oss/cs46xx
deleted file mode 100644 (file)
index b544327..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-
-Documentation for the Cirrus Logic/Crystal SoundFusion cs46xx/cs4280 audio 
-controller chips (2001/05/11)
-
-The cs46xx audio driver supports the DSP line of Cirrus controllers. 
-Specifically, the cs4610, cs4612, cs4614, cs4622, cs4624, cs4630 and the cs4280
-products.  This driver uses the generic ac97_codec driver for AC97 codec
-support.  
-
-
-Features:
-
-Full Duplex Playback/Capture supported from 8k-48k.
-16Bit Signed LE & 8Bit Unsigned, with Mono or Stereo supported.
-
-APM/PM - 2.2.x PM is enabled and functional. APM can also
-be enabled for 2.4.x by modifying the CS46XX_ACPI_SUPPORT macro
-definition.
-
-DMA playback buffer size is configurable from 16k (defaultorder=2) up to 2Meg 
-(defaultorder=11).  DMA capture buffer size is fixed at a single 4k page as
-two 2k fragments.
-
-MMAP seems to work well with QuakeIII, and test XMMS plugin.
-
-Myth2 works, but the polling logic is not fully correct, but is functional.
-
-The 2.4.4-ac6 gameport code in the cs461x joystick driver has been tested 
-with a Microsoft Sidewinder joystick (cs461x.o and sidewinder.o).  This 
-audio driver must be loaded prior to the joystick driver to enable the
-DSP task image supporting the joystick device.
-
-
-Limitations:
-
-SPDIF is currently not supported.
-
-Primary codec support only.  No secondary codec support is implemented.
-
-
-
-NOTES:
-
-Hercules Game Theatre XP - the EGPIO2 pin controls the external Amp,
-and has been tested.
-Module parameter hercules_egpio_disable set to 1, will force a 0 to EGPIODR
-to disable the external amplifier.
-
-VTB Santa Cruz - the GPIO7/GPIO8 on the Secondary Codec control
-the external amplifier for the "back" speakers, since we do not
-support the secondary codec then this external amp is not
-turned on.  The primary codec external amplifier is supported but
-note that the AC97 EAPD bit is inverted logic (amp_voyetra()).
-
-DMA buffer size - there are issues with many of the Linux applications
-concerning the optimal buffer size.  Several applications request a 
-certain fragment size and number and then do not verify that the driver
-has the ability to support the requested configuration.  
-SNDCTL_DSP_SETFRAGMENT ioctl is used to request a fragment size and
-number of fragments.  Some applications exit if an error is returned
-on this particular ioctl. Therefore, in alignment with the other OSS audio 
-drivers, no error is returned when a SETFRAGs IOCTL is received, but the 
-values passed from the app are not used in any buffer calculation 
-(ossfragshift/ossmaxfrags are not used).
-Use the "defaultorder=N" module parameter to change the buffer size if
-you have an application that requires a specific number of fragments
-or a specific buffer size (see below).
-
-Debug Interface
----------------
-There is an ioctl debug interface to allow runtime modification of the 
-debug print levels.  This debug interface code can be disabled from the 
-compilation process with commenting the following define:
-#define CSDEBUG_INTERFACE 1
-There is also a debug print methodolgy to select printf statements from
-different areas of the driver.  A debug print level is also used to allow
-additional printfs to be active.  Comment out the following line in the
-driver to disable compilation of the CS_DBGOUT print statements:
-#define CSDEBUG 1
-Please see the definitions for cs_debuglevel and cs_debugmask for additional
-information on the debug levels and sections.
-
-There is also a csdbg executable to allow runtime manipulation of these 
-parameters.  for a copy email: twoller@crystal.cirrus.com
-
-
-
-MODULE_PARMS definitions
-------------------------
-module_param(defaultorder, ulong, 0);
-defaultorder=N
-where N is a value from 1 to 12
-The buffer order determines the size of the dma buffer for the driver.
-under Linux, a smaller buffer allows more responsiveness from many of the 
-applications (e.g. games).  A larger buffer allows some of the apps (esound) 
-to not underrun the dma buffer as easily.  As default, use 32k (order=3)
-rather than 64k as some of the games work more responsively.
-(2^N) * PAGE_SIZE = allocated buffer size
-
-module_param(cs_debuglevel, ulong, 0644);
-module_param(cs_debugmask, ulong, 0644);
-cs_debuglevel=N
-cs_debugmask=0xMMMMMMMM
-where N is a value from 0 (no debug printfs), to 9 (maximum)
-0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source).
-
-module_param(hercules_egpio_disable, ulong, 0);
-hercules_egpio_disable=N
-where N is a 0 (enable egpio), or a 1 (disable egpio support)
-
-module_param(initdelay, ulong, 0);
-initdelay=N
-This value is used to determine the millescond delay during the initialization
-code prior to powering up the PLL.  On laptops this value can be used to
-assist with errors on resume, mostly with IBM laptops.  Basically, if the 
-system is booted under battery power then the mdelay()/udelay() functions fail to 
-properly delay the required time.  Also, if the system is booted under AC power
-and then the power removed, the mdelay()/udelay() functions will not delay properly.
-module_param(powerdown, ulong, 0);
-powerdown=N
-where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown)
-
-
-module_param(external_amp, bool, 0);
-external_amp=1
-if N is set to 1, then force enabling the EAPD support in the primary AC97 codec.
-override the detection logic and force the external amp bit in the AC97 0x26 register
-to be reset (0).  EAPD should be 0 for powerup, and 1 for powerdown.  The VTB Santa Cruz
-card has inverted logic, so there is a special function for these cards.
-
-module_param(thinkpad, bool, 0);
-thinkpad=1
-if N is set to 1, then force enabling the clkrun functionality.
-Currently, when the part is being used, then clkrun is disabled for the entire system,
-but re-enabled when the driver is released or there is no outstanding open count.
-
index a661d684768e99c2cb9737b1e5f85925554f9235..471e75389778eb0583be31eed6cce9d6babf67fa 100644 (file)
@@ -1,7 +1,12 @@
-UPDATE March 21 2005 Amit Gud <gud@eth.net>
+SPIN_LOCK_UNLOCKED and RW_LOCK_UNLOCKED defeat lockdep state tracking and
+are hence deprecated.
 
-Macros SPIN_LOCK_UNLOCKED and RW_LOCK_UNLOCKED are deprecated and will be
-removed soon. So for any new code dynamic initialization should be used:
+Please use DEFINE_SPINLOCK()/DEFINE_RWLOCK() or
+__SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static
+initialization.
+
+Dynamic initialization, when necessary, may be performed as
+demonstrated below.
 
    spinlock_t xxx_lock;
    rwlock_t xxx_rw_lock;
@@ -15,12 +20,9 @@ removed soon. So for any new code dynamic initialization should be used:
 
    module_init(xxx_init);
 
-Reasons for deprecation
-  - it hurts automatic lock validators
-  - it becomes intrusive for the realtime preemption patches
-
-Following discussion is still valid, however, with the dynamic initialization
-of spinlocks instead of static.
+The following discussion is still valid, however, with the dynamic
+initialization of spinlocks or with DEFINE_SPINLOCK, etc., used
+instead of SPIN_LOCK_UNLOCKED.
 
 -----------------------
 
diff --git a/Documentation/sysctl/ctl_unnumbered.txt b/Documentation/sysctl/ctl_unnumbered.txt
new file mode 100644 (file)
index 0000000..23003a8
--- /dev/null
@@ -0,0 +1,22 @@
+
+Except for a few extremely rare exceptions user space applications do not use
+the binary sysctl interface.  Instead everyone uses /proc/sys/...  with
+readable ascii names.
+
+Recently the kernel has started supporting setting the binary sysctl value to
+CTL_UNNUMBERED so we no longer need to assign a binary sysctl path to allow
+sysctls to show up in /proc/sys.
+
+Assigning binary sysctl numbers is an endless source of conflicts in sysctl.h,
+breaking of the user space ABI (because of those conflicts), and maintenance
+problems.  A complete pass through all of the sysctl users revealed multiple
+instances where the sysctl binary interface was broken and had gone undetected
+for years.
+
+So please do not add new binary sysctl numbers.  They are unneeded and
+problematic.
+
+If you really need a new binary sysctl number please first merge your sysctl
+into the kernel and then as a separate patch allocate a binary sysctl number.
+
+(ebiederm@xmission.com, June 2007)
index 8cfca173d4bca46fab5c121be80d070858aaa0c6..df3ff2095f9d2decc6846f7286a27702370efbe4 100644 (file)
@@ -32,6 +32,7 @@ Currently, these files are in /proc/sys/vm:
 - min_slab_ratio
 - panic_on_oom
 - mmap_min_address
+- numa_zonelist_order
 
 ==============================================================
 
@@ -231,3 +232,47 @@ security module.  Setting this value to something like 64k will allow the
 vast majority of applications to work correctly and provide defense in depth
 against future potential kernel bugs.
 
+==============================================================
+
+numa_zonelist_order
+
+This sysctl is only for NUMA.
+'where the memory is allocated from' is controlled by zonelists.
+(This documentation ignores ZONE_HIGHMEM/ZONE_DMA32 for simple explanation.
+ you may be able to read ZONE_DMA as ZONE_DMA32...)
+
+In non-NUMA case, a zonelist for GFP_KERNEL is ordered as following.
+ZONE_NORMAL -> ZONE_DMA
+This means that a memory allocation request for GFP_KERNEL will
+get memory from ZONE_DMA only when ZONE_NORMAL is not available.
+
+In NUMA case, you can think of following 2 types of order.
+Assume 2 node NUMA and below is zonelist of Node(0)'s GFP_KERNEL
+
+(A) Node(0) ZONE_NORMAL -> Node(0) ZONE_DMA -> Node(1) ZONE_NORMAL
+(B) Node(0) ZONE_NORMAL -> Node(1) ZONE_NORMAL -> Node(0) ZONE_DMA.
+
+Type(A) offers the best locality for processes on Node(0), but ZONE_DMA
+will be used before ZONE_NORMAL exhaustion. This increases possibility of
+out-of-memory(OOM) of ZONE_DMA because ZONE_DMA is tend to be small.
+
+Type(B) cannot offer the best locality but is more robust against OOM of
+the DMA zone.
+
+Type(A) is called as "Node" order. Type (B) is "Zone" order.
+
+"Node order" orders the zonelists by node, then by zone within each node.
+Specify "[Nn]ode" for zone order
+
+"Zone Order" orders the zonelists by zone type, then by node within each
+zone.  Specify "[Zz]one"for zode order.
+
+Specify "[Dd]efault" to request automatic configuration.  Autoconfiguration
+will select "node" order in following case.
+(1) if the DMA zone does not exist or
+(2) if the DMA zone comprises greater than 50% of the available memory or
+(3) if any node's DMA zone comprises greater than 60% of its local memory and
+    the amount of local memory is big enough.
+
+Otherwise, "zone" order will be selected. Default order is recommended unless
+this is causing problems for your system/application.
index 687104bfd09a79eef794b8dbe1357c33864d028c..51ccc48aa763a55dd641eb32fd05ceff63a80a67 100644 (file)
@@ -77,8 +77,9 @@ If the user applications are going to request hugepages using mmap system
 call, then it is required that system administrator mount a file system of
 type hugetlbfs:
 
-       mount none /mnt/huge -t hugetlbfs <uid=value> <gid=value> <mode=value>
-                <size=value> <nr_inodes=value>
+  mount -t hugetlbfs \
+       -o uid=<value>,gid=<value>,mode=<value>,size=<value>,nr_inodes=<value> \
+       none /mnt/huge
 
 This command mounts a (pseudo) filesystem of type hugetlbfs on the directory
 /mnt/huge.  Any files created on /mnt/huge uses hugepages.  The uid and gid
@@ -88,11 +89,10 @@ mode of root of file system to value & 0777.  This value is given in octal.
 By default the value 0755 is picked. The size option sets the maximum value of
 memory (huge pages) allowed for that filesystem (/mnt/huge). The size is
 rounded down to HPAGE_SIZE.  The option nr_inodes sets the maximum number of
-inodes that /mnt/huge can use.  If the size or nr_inodes options are not
+inodes that /mnt/huge can use.  If the size or nr_inodes option is not
 provided on command line then no limits are set.  For size and nr_inodes
 options, you can use [G|g]/[M|m]/[K|k] to represent giga/mega/kilo. For
-example, size=2K has the same meaning as size=2048. An example is given at
-the end of this document.
+example, size=2K has the same meaning as size=2048.
 
 read and write system calls are not supported on files that reside on hugetlb
 file systems.
index 1523320abd87e6fdfcf2d099869a54f2d3deea3c..df812b03b65d3383962496204d7c3f3e10f6308e 100644 (file)
@@ -41,6 +41,8 @@ Possible debug options are
        P               Poisoning (object and padding)
        U               User tracking (free and alloc)
        T               Trace (please only use on single slabs)
+       -               Switch all debugging off (useful if the kernel is
+                       configured with CONFIG_SLUB_DEBUG_ON)
 
 F.e. in order to boot just with sanity checks and red zoning one would specify:
 
index 4d5760614503d5315857f48d93e19df31dab87f0..5abec1435ad8c94c5a25979d86c016d7b3452654 100644 (file)
@@ -194,13 +194,6 @@ M: jes@trained-monkey.org
 L:     linux-acenic@sunsite.dk
 S:     Maintained
 
-ACI MIXER DRIVER
-P:     Robert Siemer
-M:     Robert.Siemer@gmx.de
-L:     linux-sound@vger.kernel.org
-W:     http://www.stud.uni-karlsruhe.de/~uh1b/
-S:     Maintained
-
 IPS SCSI RAID DRIVER
 P:     Adaptec OEM Raid Solutions
 M:     aacraid@adaptec.com
@@ -272,21 +265,6 @@ L: linux-acpi@vger.kernel.org
 W:     http://acpi.sourceforge.net/
 S:     Supported
 
-AD1816 SOUND DRIVER
-P:     Thorsten Knabe
-M:     Thorsten Knabe <linux@thorsten-knabe.de>
-W:     http://linux.thorsten-knabe.de
-S:     Maintained
-
-AD1889 SOUND DRIVER
-P:     Kyle McMartin
-M:     kyle@parisc-linux.org
-P:     Thibaut Varene
-M:     T-Bone@parisc-linux.org
-W:     http://wiki.parisc-linux.org/AD1889
-L:     parisc-linux@lists.parisc-linux.org
-S:     Maintained
-
 ADM1025 HARDWARE MONITOR DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
@@ -1276,6 +1254,12 @@ M:       tori@unhappy.mine.nu
 L:     netdev@vger.kernel.org
 S:     Maintained
 
+DMA GENERIC MEMCPY SUBSYSTEM
+P:     Shannon Nelson
+M:     shannon.nelson@intel.com
+L:     linux-kernel@vger.kernel.org
+S:     Maintained
+
 DOCBOOK FOR DOCUMENTATION
 P:     Randy Dunlap
 M:     rdunlap@xenotime.net
@@ -1398,13 +1382,6 @@ M:       raisch@de.ibm.com
 L:     general@lists.openfabrics.org
 S:     Supported
 
-EMU10K1 SOUND DRIVER
-P:     James Courtier-Dutton
-M:     James@superbug.demon.co.uk
-L:     emu10k1-devel@lists.sourceforge.net
-W:     http://sourceforge.net/projects/emu10k1/
-S:     Maintained
-
 EMULEX LPFC FC SCSI DRIVER
 P:     James Smart
 M:     james.smart@emulex.com
@@ -1900,6 +1877,12 @@ P:       Tigran Aivazian
 M:     tigran@aivazian.fsnet.co.uk
 S:     Maintained
 
+INTEL I/OAT DMA DRIVER
+P:     Shannon Nelson
+M:     shannon.nelson@intel.com
+L:     linux-kernel@vger.kernel.org
+S:     Supported
+
 INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
 P:     Deepak Saxena
 M:     dsaxena@plexity.net
@@ -2297,6 +2280,14 @@ M:       matthew@wil.cx
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
 
+M32R ARCHITECTURE
+P:     Hirokazu Takata
+M:     takata@linux-m32r.org
+L:     linux-m32r@ml.linux-m32r.org
+L:     linux-m32r-ja@ml.linux-m32r.org (in Japanese)
+W:     http://www.linux-m32r.org/
+S:     Maintained
+
 M68K ARCHITECTURE
 P:     Geert Uytterhoeven
 M:     geert@linux-m68k.org
@@ -2704,12 +2695,6 @@ L:       osst-users@lists.sourceforge.net
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
 
-OPL3-SA2, SA3, and SAx DRIVER
-P:     Zwane Mwaikambo
-M:     zwane@arm.linux.org.uk
-L:     linux-sound@vger.kernel.org
-S:     Maintained
-
 OPROFILE
 P:     Philippe Elie
 M:     phil.el@wanadoo.fr
index de4f8f7d396c6435065a02ebb8274b54165ec2a6..ddbfcac299c1c587c2e9f5d172bfb3e052b12118 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -313,7 +313,8 @@ LINUXINCLUDE    := -Iinclude \
 CPPFLAGS        := -D__KERNEL__ $(LINUXINCLUDE)
 
 CFLAGS          := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-                   -fno-strict-aliasing -fno-common
+                  -fno-strict-aliasing -fno-common \
+                  -Werror-implicit-function-declaration
 AFLAGS          := -D__ASSEMBLY__
 
 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
index 930cedc8be24120d4b7f876876a1ce017618abbd..783f4e50c11137e83b9f31c5b952df062b673539 100644 (file)
@@ -289,7 +289,7 @@ srm_console_device(struct console *co, int *index)
        return srmcons_driver;
 }
 
-static int __init
+static int
 srm_console_setup(struct console *co, char *options)
 {
        return 0;
index 0bcb968cb60a72b7a71b99d98947a53882f620be..922143ea1cdbb6d4b6df166f26e22482ef2f871c 100644 (file)
@@ -420,7 +420,7 @@ marvel_init_pci(void)
                io7_clear_errors(io7);
 }
 
-static void
+static void __init
 marvel_init_rtc(void)
 {
        init_rtc_irq();
index 4748e14a28bca3b9edd05b73d0787b60367cee7d..1dd50d07693cb9241ce1d064b589d5d4938c64ff 100644 (file)
@@ -144,7 +144,7 @@ irqreturn_t timer_interrupt(int irq, void *dev)
        return IRQ_HANDLED;
 }
 
-void
+void __init
 common_init_rtc(void)
 {
        unsigned char x;
index 20688bc13e9bc57ea89785c3e75deb81216f7d58..9044f33299f730b2f7c258da2efb68750f2124d1 100644 (file)
@@ -17,6 +17,9 @@ config MMU
        bool
        default y
 
+config NO_DMA
+       def_bool y
+
 config ARCH_ACORN
         bool
         default y
index c4a89703c3d81ddd66d202b39787f98129f973a7..2b7d44bf49bf6bec3f8403988c7fc3193fc42ba6 100644 (file)
@@ -248,7 +248,6 @@ CONFIG_I2C_CHARDEV=y
 # CONFIG_JBD_DEBUG is not set
 # CONFIG_FAT_FS is not set
 # CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
index 562fac12eb95762dc3e7ed0f5b089a49e42b1690..36e7ee3f8321aed7cff7cf8ed23fe79e472c223c 100644 (file)
@@ -33,9 +33,6 @@
 
 #include <asm/map.h>
 
-
-#define TABLE_SIZE     PTRS_PER_PTE * sizeof(pte_t))
-
 struct mmu_gather mmu_gathers[NR_CPUS];
 
 extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
index 86d107511dd4dc1290e765714a2b560432e85a17..aaa792815cd7ce6d71d760291937b7d2a67f68ad 100644 (file)
@@ -184,7 +184,7 @@ asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs)
        if (!user_mode(regs) && (ecr == ECR_ILLEGAL_OPCODE)) {
                enum bug_trap_type type;
 
-               type = report_bug(regs->pc);
+               type = report_bug(regs->pc, regs);
                switch (type) {
                case BUG_TRAP_TYPE_NONE:
                        break;
index 2a3411eaace94a38c5889351a856494c736c8c10..710c20ba2be7ae79fdf618317a2c4e845dc47a19 100644 (file)
@@ -429,7 +429,6 @@ CONFIG_NET_ETHERNET=y
 # CONFIG_BFS_FS is not set
 # CONFIG_FAT_FS is not set
 # CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
 # CONFIG_JFFS_FS is not set
index 1a071f17446dea7aac9dd40c146c900ed271ad6f..e8914d4016966385e6c380c0471d371c05006c69 100644 (file)
@@ -267,10 +267,10 @@ static void print_user_dma_lists(struct cryptocop_dma_list_operation *dma_op);
 
 
 const struct file_operations cryptocop_fops = {
-       owner: THIS_MODULE,
-       open: cryptocop_open,
-       release: cryptocop_release,
-       ioctl: cryptocop_ioctl
+       .owner =        THIS_MODULE,
+       .open =         cryptocop_open,
+       .release =      cryptocop_release,
+       .ioctl =        cryptocop_ioctl
 };
 
 
index 5d6c52737df3683246ee69152b8256a2c33bd851..e12f6cc6f4a2f24e12306011924f2f53db088e2a 100644 (file)
@@ -574,10 +574,10 @@ i2c_ioctl(struct inode *inode, struct file *file,
 }
 
 static const struct file_operations i2c_fops = {
-       owner:    THIS_MODULE,
-       ioctl:    i2c_ioctl,
-       open:     i2c_open,
-       release:  i2c_release,
+       .owner =    THIS_MODULE,
+       .ioctl =    i2c_ioctl,
+       .open =     i2c_open,
+       .release =  i2c_release,
 };
 
 int __init
index 24b919b3821aff88ca23be6c4bfa97d5021b4150..fa8d50007e4c31af2b82f7d987e439bcbb5af7d7 100644 (file)
@@ -51,10 +51,10 @@ int pcf8563_open(struct inode *, struct file *);
 int pcf8563_release(struct inode *, struct file *);
 
 static const struct file_operations pcf8563_fops = {
-       owner: THIS_MODULE,
-       ioctl: pcf8563_ioctl,
-       open: pcf8563_open,
-       release: pcf8563_release,
+       .owner =        THIS_MODULE,
+       .ioctl =        pcf8563_ioctl,
+       .open =         pcf8563_open,
+       .release =      pcf8563_release,
 };
 
 unsigned char
index 43dc08ec7511eff6b3dba5b4a632ac9dc34d7ba2..275673c192aad94632ef32a885ba3e0dbd37a304 100644 (file)
@@ -1492,6 +1492,10 @@ sys_call_table:
        .long sys_move_pages
        .long sys_getcpu
        .long sys_epoll_pwait
+       .long sys_utimensat             /* 320 */
+       .long sys_signalfd
+       .long sys_timerfd
+       .long sys_eventfd
 
 
 syscall_table_size = (. - sys_call_table)
index 1e7a101cbf4c8c645c894adfdf9f718f6b0e76eb..e89cad1192a99e5949e12f01020f76a7053671dd 100644 (file)
@@ -647,17 +647,11 @@ void debug_to_serial(const char *p, int n)
 }
 #endif
 
-#ifdef CONFIG_GDBSTUB_CONSOLE
-
-static kdev_t gdbstub_console_dev(struct console *con)
-{
-       return MKDEV(1,3); /* /dev/null */
-}
+#ifdef CONFIG_GDB_CONSOLE
 
 static struct console gdbstub_console = {
        .name   = "gdb",
        .write  = gdbstub_console_write,        /* in break.S */
-       .device = gdbstub_console_dev,
        .flags  = CON_PRINTBUFFER,
        .index  = -1,
 };
@@ -2021,7 +2015,7 @@ void __init gdbstub_init(void)
        ptr = mem2hex(gdbstub_banner, ptr, sizeof(gdbstub_banner) - 1, 0);
        gdbstub_send_packet(output_buffer);
 #endif
-#if defined(CONFIG_GDBSTUB_CONSOLE) && defined(CONFIG_GDBSTUB_IMMEDIATE)
+#if defined(CONFIG_GDB_CONSOLE) && defined(CONFIG_GDBSTUB_IMMEDIATE)
        register_console(&gdbstub_console);
 #endif
 
@@ -2031,7 +2025,7 @@ void __init gdbstub_init(void)
 /*
  * register the console at a more appropriate time
  */
-#if defined (CONFIG_GDBSTUB_CONSOLE) && !defined(CONFIG_GDBSTUB_IMMEDIATE)
+#if defined (CONFIG_GDB_CONSOLE) && !defined(CONFIG_GDBSTUB_IMMEDIATE)
 static int __init gdbstub_postinit(void)
 {
        printk("registering console\n");
index aa3c795d5354aa97084c0f82c23ab3abe3e25359..c1c32e4c863da0896e196af17f9c541e31b07089 100644 (file)
@@ -60,10 +60,6 @@ static void __init setup_linux_memory(void);
 static void __init setup_uclinux_memory(void);
 #endif
 
-#ifdef CONFIG_CONSOLE
-extern struct consw *conswitchp;
-#endif
-
 #ifdef CONFIG_MB93090_MB00
 static char __initdata mb93090_banner[] = "FJ/RH FR-V Linux";
 static char __initdata mb93090_version[] = UTS_RELEASE;
@@ -795,13 +791,6 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
-#if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH)
-       /* we need to initialize the Flashrom device here since we might
-        * do things with flash early on in the boot
-        */
-       flash_probe();
-#endif
-
        /* deal with the command line - RedBoot may have passed one to the kernel */
        memcpy(command_line, boot_command_line, sizeof(command_line));
        *cmdline_p = &command_line[0];
@@ -837,11 +826,6 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
-#ifdef CONFIG_BLK_DEV_BLKMEM
-       ROOT_DEV = MKDEV(BLKMEM_MAJOR,0);
-#endif
-       /*rom_length = (unsigned long)&_flashend - (unsigned long)&_romvec;*/
-
 #ifdef CONFIG_MMU
        setup_linux_memory();
 #else
index 618dbad696f6d535f3fa55ce07cfae23289d7cfa..e35f74e6e50566d489852d5156013e5e65de9c5d 100644 (file)
@@ -68,6 +68,9 @@ config TIME_LOW_RES
 config NO_IOPORT
        def_bool y
 
+config NO_DMA
+       def_bool y
+
 config ISA
        bool
        default y
index b2d896a7e598a25c01c852737f3a65b69e30dbde..53b5c1edf596b94eba9d39e54765230d677cc80f 100644 (file)
@@ -61,10 +61,11 @@ archmrproper:
 archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
 
-vmlinux.srec vmlinux.bin: vmlinux
+vmlinux.srec vmlinux.bin zImage: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
 define archhelp
-  echo  'vmlinux.bin  - Create raw binary'
-  echo  'vmlinux.srec - Create srec binary'
+  @echo  'vmlinux.bin  - Create raw binary'
+  @echo  'vmlinux.srec - Create srec binary'
+  @echo  'zImage       - Compressed kernel image'
 endef
index 71aac82a8ae0a72df0f2b5580ca0a59bb6d47b11..d6189e057ed354804f04822ee78e73f2e069b827 100644 (file)
@@ -15,10 +15,10 @@ OBJECTS = $(obj)/head.o $(obj)/misc.o
 # in order to suppress error message.
 #
 CONFIG_MEMORY_START     ?= 0x00400000
-CONFIG_BOOT_LINK_OFFSET ?= 0x00400000
+CONFIG_BOOT_LINK_OFFSET ?= 0x00140000
 IMAGE_OFFSET := $(shell printf "0x%08x" $$[$(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)])
 
-LDFLAGS_vmlinux := -T $(obj)/vmlinux.lds
+LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -estartup $(obj)/vmlinux.lds
 
 $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE
        $(call if_changed,ld)
index b8e90d12d19e906641c2376c9dd7b8fd9d7578bb..985a81a2435a08715fc89a5fa6da5b322d041b90 100644 (file)
@@ -4,7 +4,7 @@
  *  Copyright (C) 2006 Yoshinori Sato
  */
 
-.h8300h
+       .h8300h
 #include <linux/linkage.h>
 
 #define SRAM_START 0xff4000
diff --git a/arch/h8300/boot/compressed/vmlinux.lds b/arch/h8300/boot/compressed/vmlinux.lds
new file mode 100644 (file)
index 0000000..65e2a0d
--- /dev/null
@@ -0,0 +1,32 @@
+SECTIONS
+{
+        .text :
+        {
+        __stext = . ;
+       __text = .;
+              *(.text.startup)
+              *(.text)
+        __etext = . ;
+        }
+
+       .rodata :
+       {
+               *(.rodata)
+       }
+        .data :
+
+        {
+        __sdata = . ;
+        ___data_start = . ;
+                *(.data.*)
+       }
+        .bss :
+        {
+        . = ALIGN(0x4) ;
+        __sbss = . ;
+                *(.bss*)
+        . = ALIGN(0x4) ;
+        __ebss = . ;
+        __end = . ;
+        }
+}
diff --git a/arch/h8300/boot/compressed/vmlinux.scr b/arch/h8300/boot/compressed/vmlinux.scr
new file mode 100644 (file)
index 0000000..a0f6962
--- /dev/null
@@ -0,0 +1,9 @@
+SECTIONS
+{
+  .data : {
+       _input_len = .;
+       LONG(_input_data_end - _input_data) _input_data = .;
+       *(.data)
+       _input_data_end = .;
+       }
+}
index ccc1a7fbf94b0bf4c70d41fa78207574cbffe0f2..874f6aefee65aaab0da63255922fb98d35afdabe 100644 (file)
@@ -6,6 +6,7 @@ extra-y := vmlinux.lds
 
 obj-y := process.o traps.o ptrace.o irq.o \
         sys_h8300.o time.o semaphore.o signal.o \
-         setup.o gpio.o init_task.o syscalls.o
+         setup.o gpio.o init_task.o syscalls.o \
+        entry.o
 
 obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o 
similarity index 62%
rename from arch/h8300/platform/h8s/entry.S
rename to arch/h8300/kernel/entry.S
index f3d6b8e8f959a274a459a8c0df8697b2082be77d..ca7431690300a15fe5dc3ed0b61ad35756d363fd 100644 (file)
@@ -1,11 +1,10 @@
 /* -*- mode: asm -*-
  *
- *  linux/arch/h8300/platform/h8s/entry.S
+ *  linux/arch/h8300/platform/h8300h/entry.S
  *
  *  Yoshinori Sato <ysato@users.sourceforge.jp>
+ *  David McCullough <davidm@snapgear.com>
  *
- *     fairly heavy changes to fix syscall args and signal processing
- *     by David McCullough <davidm@snapgear.com>
  */
 
 /*
 #include <asm/thread_info.h>
 #include <asm/errno.h>
 
+#if defined(CONFIG_CPU_H8300H)
+#define USERRET 8
+INTERRUPTS = 64
+       .h8300h
+       .macro  SHLL2 reg
+       shll.l  \reg
+       shll.l  \reg
+       .endm
+       .macro  SHLR2 reg
+       shlr.l  \reg
+       shlr.l  \reg
+       .endm
+       .macro  SAVEREGS
+       mov.l   er0,@-sp
+       mov.l   er1,@-sp
+       mov.l   er2,@-sp
+       mov.l   er3,@-sp
+       .endm
+       .macro  RESTOREREGS
+       mov.l   @sp+,er3
+       mov.l   @sp+,er2
+       .endm
+       .macro  SAVEEXR
+       .endm
+       .macro  RESTOREEXR
+       .endm
+#endif
+#if defined(CONFIG_CPU_H8S)
+#define USERRET 10
+#define USEREXR 8
+INTERRUPTS = 128
        .h8300s
+       .macro  SHLL2 reg
+       shll.l  #2,\reg
+       .endm
+       .macro  SHLR2 reg
+       shlr.l  #2,\reg
+       .endm
+       .macro  SAVEREGS
+       stm.l   er0-er3,@-sp
+       .endm
+       .macro  RESTOREREGS
+       ldm.l   @sp+,er2-er3
+       .endm
+       .macro  SAVEEXR
+       mov.w   @(USEREXR:16,er0),r1
+       mov.w   r1,@(LEXR-LER3:16,sp)           /* copy EXR */
+       .endm
+       .macro  RESTOREEXR
+       mov.w   @(LEXR-LER1:16,sp),r1           /* restore EXR */
+       mov.b   r1l,r1h
+       mov.w   r1,@(USEREXR:16,er0)
+       .endm
+#endif
+
 
 /* CPU context save/restore macros. */
-       
+
        .macro  SAVE_ALL
        mov.l   er0,@-sp
-
        stc     ccr,r0l                         /* check kernel mode */
        btst    #4,r0l
        bne     5f
        mov.l   @sp,er0                         /* restore saved er0 */
        orc     #0x10,ccr                       /* switch kernel stack */
        mov.l   @SYMBOL_NAME(sw_ksp),sp
-       sub.l   #(LRET-LORIG),sp                /* allocate LORIG - LRET */ 
-       stm.l   er0-er3,@-sp
-       mov.l   @SYMBOL_NAME(sw_usp),er0
-       mov.l   @(10:16,er0),er1                /* copy the RET addr */
-       mov.l   er1,@(LRET-LER3:16,sp)
-       mov.w   @(8:16,er0),r1
-       mov.w   r1,@(LEXR-LER3:16,sp)           /* copy EXR */
+       sub.l   #(LRET-LORIG),sp                /* allocate LORIG - LRET */
+       SAVEREGS
+       mov.l   @SYMBOL_NAME(sw_usp),er0
+       mov.l   @(USERRET:16,er0),er1           /* copy the RET addr */
+       mov.l   er1,@(LRET-LER3:16,sp)
+       SAVEEXR
 
-       mov.w   e1,r1                           /* e1 highbyte = ccr */
-       and     #0xef,r1h                       /* mask mode? flag */
-       sub.w   r0,r0
-       mov.b   r1h,r0l
-       mov.w   r0,@(LCCR-LER3:16,sp)           /* copy ccr */
        mov.l   @(LORIG-LER3:16,sp),er0
        mov.l   er0,@(LER0-LER3:16,sp)          /* copy ER0 */
+       mov.w   e1,r1                           /* e1 highbyte = ccr */
+       and     #0xef,r1h                       /* mask mode? flag */
        bra     6f
 5:
        /* kernel mode */
        mov.l   @sp,er0                         /* restore saved er0 */
        subs    #2,sp                           /* set dummy ccr */
-       stm.l   er0-er3,@-sp
+       SAVEREGS
        mov.w   @(LRET-LER3:16,sp),r1           /* copy old ccr */
+6:
        mov.b   r1h,r1l
        mov.b   #0,r1h
-       mov.w   r1,@(LCCR-LER3:16,sp)
-6:     
+       mov.w   r1,@(LCCR-LER3:16,sp)           /* set ccr */
        mov.l   er6,@-sp                        /* syscall arg #6 */
        mov.l   er5,@-sp                        /* syscall arg #5 */
        mov.l   er4,@-sp                        /* syscall arg #4 */
-       .endm
+       .endm                                   /* r1 = ccr */
 
        .macro  RESTORE_ALL
        mov.l   @sp+,er4
        mov.l   @sp+,er5
        mov.l   @sp+,er6
-       ldm.l   @sp+,er2-er3
+       RESTOREREGS
        mov.w   @(LCCR-LER1:16,sp),r0           /* check kernel mode */
        btst    #4,r0l
        bne     7f
        mov.l   @SYMBOL_NAME(sw_usp),er0
        mov.l   @(LER0-LER1:16,sp),er1          /* restore ER0 */
        mov.l   er1,@er0
-       mov.w   @(LEXR-LER1:16,sp),r1           /* restore EXR */
-       mov.b   r1l,r1h
-       mov.w   r1,@(8:16,er0)
+       RESTOREEXR
        mov.w   @(LCCR-LER1:16,sp),r1           /* restore the RET addr */
        mov.b   r1l,r1h
        mov.b   @(LRET+1-LER1:16,sp),r1l
        mov.w   r1,e1
        mov.w   @(LRET+2-LER1:16,sp),r1
-       mov.l   er1,@(10:16,er0)
+       mov.l   er1,@(USERRET:16,er0)
 
        mov.l   @sp+,er1
-       add.l   #(LRET-LER1),sp                 /* remove LORIG - LRET */ 
+       add.l   #(LRET-LER1),sp                 /* remove LORIG - LRET */
        mov.l   sp,@SYMBOL_NAME(sw_ksp)
        andc    #0xef,ccr                       /* switch to user mode */
        mov.l   er0,sp
        adds    #4,sp                           /* remove the sw created LVEC */
        rte
        .endm
-       
+
 .globl SYMBOL_NAME(system_call)
 .globl SYMBOL_NAME(ret_from_exception)
 .globl SYMBOL_NAME(ret_from_fork)
 .globl SYMBOL_NAME(interrupt_redirect_table)
 .globl SYMBOL_NAME(sw_ksp),SYMBOL_NAME(sw_usp)
 .globl SYMBOL_NAME(resume)
-.globl SYMBOL_NAME(trace_break)
 .globl SYMBOL_NAME(interrupt_entry)
-               
-INTERRUPTS = 128
+.globl SYMBOL_NAME(trace_break)
+
 #if defined(CONFIG_ROMKERNEL)
        .section .int_redirect,"ax"
 SYMBOL_NAME_LABEL(interrupt_redirect_table)
+#if defined(CONFIG_CPU_H8300H)
        .rept   7
        .long   0
        .endr
+#endif
+#if defined(CONFIG_CPU_H8S)
+       .rept   5
+       .long   0
+       .endr
+       jmp     @SYMBOL_NAME(trace_break)
+       .long   0
+#endif
+
        jsr     @SYMBOL_NAME(interrupt_entry)   /* NMI */
        jmp     @SYMBOL_NAME(system_call)       /* TRAPA #0 (System call) */
        .long   0
@@ -141,20 +196,20 @@ SYMBOL_NAME_LABEL(interrupt_redirect_table)
 SYMBOL_NAME_LABEL(interrupt_redirect_table)
        .space  4
 #endif
-       
+
        .section .text
        .align  2
 SYMBOL_NAME_LABEL(interrupt_entry)
        SAVE_ALL
-       mov.w   @(LCCR,sp),r0
-       btst    #4,r0l
+       mov.l   sp,er0
+       add.l   #LVEC,er0
+       btst    #4,r1l
        bne     1f
+       /* user LVEC */
        mov.l   @SYMBOL_NAME(sw_usp),er0
-       mov.l   @(4:16,er0),er0
-       bra     2f
+       adds    #4,er0
 1:
-       mov.l   @(LVEC:16,sp),er0
-2:
+       mov.l   @er0,er0                        /* LVEC address */
 #if defined(CONFIG_ROMKERNEL)
        sub.l   #SYMBOL_NAME(interrupt_redirect_table),er0
 #endif
@@ -162,69 +217,62 @@ SYMBOL_NAME_LABEL(interrupt_entry)
        mov.l   @SYMBOL_NAME(interrupt_redirect_table),er1
        sub.l   er1,er0
 #endif
-       shlr.l  #2,er0
+       SHLR2   er0
        dec.l   #1,er0
        mov.l   sp,er1
        subs    #4,er1                          /* adjust ret_pc */
-       jsr     @SYMBOL_NAME(process_int)
-       mov.l   @SYMBOL_NAME(irq_stat)+CPUSTAT_SOFTIRQ_PENDING,er0
-       beq     1f
-       jsr     @SYMBOL_NAME(do_softirq)
-1:
-       jmp     @SYMBOL_NAME(ret_from_exception)
+       jsr     @SYMBOL_NAME(do_IRQ)
+       jmp     @SYMBOL_NAME(ret_from_interrupt)
 
 SYMBOL_NAME_LABEL(system_call)
        subs    #4,sp                           /* dummy LVEC */
        SAVE_ALL
+       andc    #0x7f,ccr
        mov.l   er0,er4
-       mov.l   #-ENOSYS,er0
-       mov.l   er0,@(LER0:16,sp)
 
        /* save top of frame */
        mov.l   sp,er0
        jsr     @SYMBOL_NAME(set_esp0)
-       cmp.l   #NR_syscalls,er4
-       bcc     SYMBOL_NAME(ret_from_exception):16
-       shll.l  #2,er4
-       mov.l   #SYMBOL_NAME(sys_call_table),er0
-       add.l   er4,er0
-       mov.l   @er0,er0
-       mov.l   er0,er4
-       beq     SYMBOL_NAME(ret_from_exception):16      
        mov.l   sp,er2
        and.w   #0xe000,r2
-       mov.b   @((TASK_FLAGS+3-(TIF_SYSCALL_TRACE >> 3)):16,er2),r2l
+       mov.b   @((TI_FLAGS+3-(TIF_SYSCALL_TRACE >> 3)):16,er2),r2l
        btst    #(TIF_SYSCALL_TRACE & 7),r2l
+       beq     1f
+       jsr     @SYMBOL_NAME(do_syscall_trace)
+1:
+       cmp.l   #NR_syscalls,er4
+       bcc     badsys
+       SHLL2   er4
+       mov.l   #SYMBOL_NAME(sys_call_table),er0
+       add.l   er4,er0
+       mov.l   @er0,er4
+       beq     SYMBOL_NAME(ret_from_exception):16
        mov.l   @(LER1:16,sp),er0
        mov.l   @(LER2:16,sp),er1
        mov.l   @(LER3:16,sp),er2
-       andc    #0x7f,ccr
        jsr     @er4
-       mov.l   er0,@(LER0:16,sp)                       /* save the return value */
+       mov.l   er0,@(LER0:16,sp)               /* save the return value */
+       mov.l   sp,er2
+       and.w   #0xe000,r2
+       mov.b   @((TI_FLAGS+3-(TIF_SYSCALL_TRACE >> 3)):16,er2),r2l
+       btst    #(TIF_SYSCALL_TRACE & 7),r2l
+       beq     2f
+       jsr     @SYMBOL_NAME(do_syscall_trace)
+2:
 #if defined(CONFIG_SYSCALL_PRINT)
        jsr     @SYMBOL_NAME(syscall_print)
 #endif
-       bra     SYMBOL_NAME(ret_from_exception):8
-1:
-       jsr     SYMBOL_NAME(syscall_trace)
-       mov.l   @(LER1:16,sp),er0
-       mov.l   @(LER2:16,sp),er1
-       mov.l   @(LER3:16,sp),er2
-       jsr     @er4
-       mov.l   er0,@(LER0:16,sp)               /* save the return value */
-       jsr     @SYMBOL_NAME(syscall_trace)
-       bra     SYMBOL_NAME(ret_from_exception):8
+       orc     #0x80,ccr
+       bra     resume_userspace
 
-SYMBOL_NAME_LABEL(ret_from_fork)
-       mov.l   er2,er0
-       jsr     @SYMBOL_NAME(schedule_tail)
-       bra     SYMBOL_NAME(ret_from_exception):8
+badsys:
+       mov.l   #-ENOSYS,er0
+       mov.l   er0,@(LER0:16,sp)
+       bra     resume_userspace
 
-SYMBOL_NAME_LABEL(reschedule)
-       /* save top of frame */
-       mov.l   sp,er0
-       jsr     @SYMBOL_NAME(set_esp0)
-       jsr     @SYMBOL_NAME(schedule)
+#if !defined(CONFIG_PREEMPT)
+#define resume_kernel restore_all
+#endif
 
 SYMBOL_NAME_LABEL(ret_from_exception)
 #if defined(CONFIG_PREEMPT)
@@ -232,58 +280,68 @@ SYMBOL_NAME_LABEL(ret_from_exception)
 #endif
 SYMBOL_NAME_LABEL(ret_from_interrupt)
        mov.b   @(LCCR+1:16,sp),r0l
-       btst    #4,r0l                  /* check if returning to kernel */
-       bne     done:8                  /* if so, skip resched, signals */
+       btst    #4,r0l
+       bne     resume_kernel:8         /* return from kernel */
+resume_userspace:
        andc    #0x7f,ccr
        mov.l   sp,er4
-       and.w   #0xe000,r4
+       and.w   #0xe000,r4              /* er4 <- current thread info */
        mov.l   @(TI_FLAGS:16,er4),er1
        and.l   #_TIF_WORK_MASK,er1
-       beq     done:8
-1:
-       mov.l   @(TI_FLAGS:16,er4),er1
+       beq     restore_all:8
+work_pending:
        btst    #TIF_NEED_RESCHED,r1l
-       bne     SYMBOL_NAME(reschedule):16
+       bne     work_resched:8
+       /* work notifysig */
        mov.l   sp,er0
-       subs    #4,er0                  /* adjust retpc */
-       mov.l   er2,er1
-       jsr     @SYMBOL_NAME(do_signal)
+       subs    #4,er0                  /* er0: pt_regs */
+       jsr     @SYMBOL_NAME(do_notify_resume)
+       bra     restore_all:8
+work_resched:
+       mov.l   sp,er0
+       jsr     @SYMBOL_NAME(set_esp0)
+       jsr     @SYMBOL_NAME(schedule)
+       bra     resume_userspace:8
+restore_all:
+       RESTORE_ALL                     /* Does RTE */
+
 #if defined(CONFIG_PREEMPT)
-       bra     done:8                  /* userspace thoru */
-3:
-       btst    #4,r0l
-       beq     done:8                  /* userspace thoru */
-4:
-       mov.l   @(TI_PRE_COUNT:16,er4),er1
-       bne     done:8
-       mov.l   @(TI_FLAGS:16,er4),er1
-       btst    #TIF_NEED_RESCHED,r1l
-       beq     done:8
-       mov.b   r0l,r0l
-       bpl     done:8                  /* interrupt off (exception path?) */
-       mov.l   #PREEMPT_ACTIVE,er1
-       mov.l   er1,@(TI_PRE_COUNT:16,er4)
+resume_kernel:
+       mov.l   @(TI_PRE_COUNT:16,er4),er0
+       bne     restore_all:8
+need_resched:
+       mov.l   @(TI_FLAGS:16,er4),er0
+       btst    #TIF_NEED_RESCHED,r0l
+       beq     restore_all:8
+       mov.b   @(LCCR+1:16,sp),r0l     /* Interrupt Enabled? */
+       bmi     restore_all:8
+       mov.l   #PREEMPT_ACTIVE,er0
+       mov.l   er0,@(TI_PRE_COUNT:16,er4)
        andc    #0x7f,ccr
+       mov.l   sp,er0
+       jsr     @SYMBOL_NAME(set_esp0)
        jsr     @SYMBOL_NAME(schedule)
-       sub.l   er1,er1
-       mov.l   er1,@(TI_PRE_COUNT:16,er4)
        orc     #0x80,ccr
-       bra     4b:8
+       bra     need_resched:8
 #endif
-done:
-       RESTORE_ALL                     /* Does RTE */
+
+SYMBOL_NAME_LABEL(ret_from_fork)
+       mov.l   er2,er0
+       jsr     @SYMBOL_NAME(schedule_tail)
+       jmp     @SYMBOL_NAME(ret_from_exception)
 
 SYMBOL_NAME_LABEL(resume)
        /*
-        *      er0 = prev
-        *      er1 = next
-        *      return last in er2
+        * Beware - when entering resume, offset of tss is in d1,
+        * prev (the current task) is in a0, next (the new task)
+        * is in a1 and d2.b is non-zero if the mm structure is
+        * shared between the tasks, so don't change these
+        * registers until their contents are no longer needed.
         */
 
        /* save sr */
        sub.w   r3,r3
        stc     ccr,r3l
-       stc     exr,r3h
        mov.w   r3,@(THREAD_CCR+2:16,er0)
 
        /* disable interrupts */
@@ -291,41 +349,45 @@ SYMBOL_NAME_LABEL(resume)
        mov.l   @SYMBOL_NAME(sw_usp),er3
        mov.l   er3,@(THREAD_USP:16,er0)
        mov.l   sp,@(THREAD_KSP:16,er0)
-       
+
        /* Skip address space switching if they are the same. */
        /* FIXME: what did we hack out of here, this does nothing! */
 
        mov.l   @(THREAD_USP:16,er1),er0
        mov.l   er0,@SYMBOL_NAME(sw_usp)
        mov.l   @(THREAD_KSP:16,er1),sp
-                       
+
        /* restore status register */
        mov.w   @(THREAD_CCR+2:16,er1),r3
 
        ldc     r3l,ccr
-       ldc     r3h,exr
-
        rts
 
 SYMBOL_NAME_LABEL(trace_break)
-       subs    #4,sp                   /* dummy LVEC */
+       subs    #4,sp
        SAVE_ALL
        sub.l   er1,er1
        dec.l   #1,er1
-       mov.l   er1,@(LORIG,sp) 
+       mov.l   er1,@(LORIG,sp)
        mov.l   sp,er0
        jsr     @SYMBOL_NAME(set_esp0)
        mov.l   @SYMBOL_NAME(sw_usp),er0
        mov.l   @er0,er1
+       mov.w   @(-2:16,er1),r2
+       cmp.w   #0x5730,r2
+       beq     1f
        subs    #2,er1
-       mov.l   er1,@er0        
+       mov.l   er1,@er0
+1:
        and.w   #0xff,e1
        mov.l   er1,er0
        jsr     @SYMBOL_NAME(trace_trap)
-       jmp     @SYMBOL_NAME(ret_from_exception)        
+       jmp     @SYMBOL_NAME(ret_from_exception)
 
        .section        .bss
 SYMBOL_NAME_LABEL(sw_ksp)
-       .space  4       
+       .space  4
 SYMBOL_NAME_LABEL(sw_usp)
-       .space  4       
+       .space  4
+
+       .end
diff --git a/arch/h8300/kernel/ints.c b/arch/h8300/kernel/ints.c
deleted file mode 100644 (file)
index 3e4f479..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * linux/arch/h8300/kernel/ints.c
- *
- * Yoshinori Sato <ysato@users.sourceforge.jp>
- *
- * Based on linux/arch/$(ARCH)/platform/$(PLATFORM)/ints.c
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file COPYING in the main directory of this archive
- * for more details.
- *
- * Copyright 1996 Roman Zippel
- * Copyright 1999 D. Jeff Dionne <jeff@rt-control.com>
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/kernel_stat.h>
-#include <linux/seq_file.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/random.h>
-#include <linux/bootmem.h>
-#include <linux/hardirq.h>
-
-#include <asm/system.h>
-#include <asm/irq.h>
-#include <asm/traps.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-#include <asm/errno.h>
-
-/*
- * This structure has only 4 elements for speed reasons
- */
-typedef struct irq_handler {
-       irqreturn_t (*handler)(int, void *, struct pt_regs *);
-       int         flags;
-       int         count;
-       void        *dev_id;
-       const char  *devname;
-} irq_handler_t;
-
-static irq_handler_t *irq_list[NR_IRQS];
-static int use_kmalloc;
-
-extern unsigned long *interrupt_redirect_table;
-extern const int h8300_saved_vectors[];
-extern const unsigned long h8300_trap_table[];
-int h8300_enable_irq_pin(unsigned int irq);
-void h8300_disable_irq_pin(unsigned int irq);
-
-#define CPU_VECTOR ((unsigned long *)0x000000)
-#define ADDR_MASK (0xffffff)
-
-#if defined(CONFIG_RAMKERNEL)
-static unsigned long __init *get_vector_address(void)
-{
-       unsigned long *rom_vector = CPU_VECTOR;
-       unsigned long base,tmp;
-       int vec_no;
-
-       base = rom_vector[EXT_IRQ0] & ADDR_MASK;
-       
-       /* check romvector format */
-       for (vec_no = EXT_IRQ1; vec_no <= EXT_IRQ0+EXT_IRQS; vec_no++) {
-               if ((base+(vec_no - EXT_IRQ0)*4) != (rom_vector[vec_no] & ADDR_MASK))
-                       return NULL;
-       }
-
-       /* ramvector base address */
-       base -= EXT_IRQ0*4;
-
-       /* writerble check */
-       tmp = ~(*(volatile unsigned long *)base);
-       (*(volatile unsigned long *)base) = tmp;
-       if ((*(volatile unsigned long *)base) != tmp)
-               return NULL;
-       return (unsigned long *)base;
-}
-#endif
-
-void __init init_IRQ(void)
-{
-#if defined(CONFIG_RAMKERNEL)
-       int i;
-       unsigned long *ramvec,*ramvec_p;
-       const unsigned long *trap_entry;
-       const int *saved_vector;
-
-       ramvec = get_vector_address();
-       if (ramvec == NULL)
-               panic("interrupt vector serup failed.");
-       else
-               printk(KERN_INFO "virtual vector at 0x%08lx\n",(unsigned long)ramvec);
-
-       /* create redirect table */
-       ramvec_p = ramvec;
-       trap_entry = h8300_trap_table;
-       saved_vector = h8300_saved_vectors;
-       for ( i = 0; i < NR_IRQS; i++) {
-               if (i == *saved_vector) {
-                       ramvec_p++;
-                       saved_vector++;
-               } else {
-                       if ( i < NR_TRAPS ) {
-                               if (*trap_entry)
-                                       *ramvec_p = VECTOR(*trap_entry);
-                               ramvec_p++;
-                               trap_entry++;
-                       } else
-                               *ramvec_p++ = REDIRECT(interrupt_entry);
-               }
-       }
-       interrupt_redirect_table = ramvec;
-#ifdef DUMP_VECTOR
-       ramvec_p = ramvec;
-       for (i = 0; i < NR_IRQS; i++) {
-               if ((i % 8) == 0)
-                       printk(KERN_DEBUG "\n%p: ",ramvec_p);
-               printk(KERN_DEBUG "%p ",*ramvec_p);
-               ramvec_p++;
-       }
-       printk(KERN_DEBUG "\n");
-#endif
-#endif
-}
-
-int request_irq(unsigned int irq, 
-               irqreturn_t (*handler)(int, void *, struct pt_regs *),
-                unsigned long flags, const char *devname, void *dev_id)
-{
-       irq_handler_t *irq_handle;
-       if (irq < 0 || irq >= NR_IRQS) {
-               printk(KERN_ERR "Incorrect IRQ %d from %s\n", irq, devname);
-               return -EINVAL;
-       }
-
-       if (irq_list[irq] || (h8300_enable_irq_pin(irq) == -EBUSY))
-               return -EBUSY;
-
-       if (use_kmalloc)
-               irq_handle = kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
-       else {
-               /* use bootmem allocater */
-               irq_handle = (irq_handler_t *)alloc_bootmem(sizeof(irq_handler_t));
-               irq_handle = (irq_handler_t *)((unsigned long)irq_handle | 0x80000000);
-       }
-
-       if (irq_handle == NULL)
-               return -ENOMEM;
-
-       irq_handle->handler = handler;
-       irq_handle->flags   = flags;
-       irq_handle->count   = 0;
-       irq_handle->dev_id  = dev_id;
-       irq_handle->devname = devname;
-       irq_list[irq] = irq_handle;
-
-       if (irq_handle->flags & IRQF_SAMPLE_RANDOM)
-               rand_initialize_irq(irq);
-
-       enable_irq(irq);
-       return 0;
-}
-
-EXPORT_SYMBOL(request_irq);
-
-void free_irq(unsigned int irq, void *dev_id)
-{
-       if (irq >= NR_IRQS)
-               return;
-
-       if (!irq_list[irq] || irq_list[irq]->dev_id != dev_id)
-               printk(KERN_WARNING "Removing probably wrong IRQ %d from %s\n",
-                      irq, irq_list[irq]->devname);
-       disable_irq(irq);
-       h8300_disable_irq_pin(irq);
-       if (((unsigned long)irq_list[irq] & 0x80000000) == 0) {
-               kfree(irq_list[irq]);
-               irq_list[irq] = NULL;
-       }
-}
-
-EXPORT_SYMBOL(free_irq);
-
-/*
- * Do we need these probe functions on the m68k?
- */
-unsigned long probe_irq_on (void)
-{
-       return 0;
-}
-
-EXPORT_SYMBOL(probe_irq_on);
-
-int probe_irq_off (unsigned long irqs)
-{
-       return 0;
-}
-
-EXPORT_SYMBOL(probe_irq_off);
-
-void enable_irq(unsigned int irq)
-{
-       if (irq >= EXT_IRQ0 && irq <= (EXT_IRQ0 + EXT_IRQS))
-               IER_REGS |= 1 << (irq - EXT_IRQ0);
-}
-
-void disable_irq(unsigned int irq)
-{
-       if (irq >= EXT_IRQ0 && irq <= (EXT_IRQ0 + EXT_IRQS))
-               IER_REGS &= ~(1 << (irq - EXT_IRQ0));
-}
-
-asmlinkage void process_int(int irq, struct pt_regs *fp)
-{
-       irq_enter();
-       h8300_clear_isr(irq);
-       if (irq >= NR_TRAPS && irq < NR_IRQS) {
-               if (irq_list[irq]) {
-                       irq_list[irq]->handler(irq, irq_list[irq]->dev_id, fp);
-                       irq_list[irq]->count++;
-                       if (irq_list[irq]->flags & IRQF_SAMPLE_RANDOM)
-                               add_interrupt_randomness(irq);
-               }
-       } else {
-               BUG();
-       }
-       irq_exit();
-}
-
-int show_interrupts(struct seq_file *p, void *v)
-{
-       int i = *(loff_t *) v;
-
-       if ((i < NR_IRQS) && (irq_list[i]!=NULL)) {
-               seq_printf(p, "%3d: %10u ",i,irq_list[i]->count);
-               seq_printf(p, "%s\n", irq_list[i]->devname);
-       }
-
-       return 0;
-}
-
-void init_irq_proc(void)
-{
-}
-
-static int __init enable_kmalloc(void)
-{
-       use_kmalloc = 1;
-       return 0;
-}
-core_initcall(enable_kmalloc);
index 8f2411db7eaf3473d5433e5bf31cda3582208a04..8a7a991b8f765ffb1fa47883eeffef39af1d3110 100644 (file)
@@ -219,7 +219,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        return ret;
 }
 
-asmlinkage void syscall_trace(void)
+asmlinkage void do_syscall_trace(void)
 {
        if (!test_thread_flag(TIF_SYSCALL_TRACE))
                return;
index 02955604d7606f76eabf4ee6bd3b0478aad1c10c..62ea12d339b9275c154a30b0e55451f16b7f640c 100644 (file)
@@ -547,3 +547,9 @@ asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset)
        }
        return 0;
 }
+
+asmlinkage void do_notify_resume(struct pt_regs *regs, u32 thread_info_flags)
+{
+       if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
+               do_signal(regs, NULL);
+}
index b24ea08aa0a72fc7420c2199ff46d3d8ada834e6..c5096369ea50cd59d009bbc9552cee64ef7bf5e5 100644 (file)
@@ -4,4 +4,4 @@
 # Reuse any files we can from the H8/300H
 #
 
-obj-y := entry.o irq_pin.o ptrace_h8300h.o
+obj-y := irq_pin.o ptrace_h8300h.o
diff --git a/arch/h8300/platform/h8300h/entry.S b/arch/h8300/platform/h8300h/entry.S
deleted file mode 100644 (file)
index f86ac3b..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-/* -*- mode: asm -*-
- *
- *  linux/arch/h8300/platform/h8300h/entry.S
- *
- *  Yoshinori Sato <ysato@users.sourceforge.jp>
- *  David McCullough <davidm@snapgear.com>
- *
- */
-
-/*
- *  entry.S
- *  include exception/interrupt gateway
- *          system call entry
- */
-
-#include <linux/sys.h>
-#include <asm/unistd.h>
-#include <asm/setup.h>
-#include <asm/segment.h>
-#include <asm/linkage.h>
-#include <asm/asm-offsets.h>
-#include <asm/thread_info.h>
-#include <asm/errno.h>
-
-       .h8300h
-
-/* CPU context save/restore macros. */
-       
-       .macro  SAVE_ALL
-       mov.l   er0,@-sp
-
-       stc     ccr,r0l                         /* check kernel mode */
-       btst    #4,r0l
-       bne     5f
-
-       mov.l   sp,@SYMBOL_NAME(sw_usp)         /* user mode */
-       mov.l   @sp,er0
-       orc     #0x10,ccr
-       mov.l   @SYMBOL_NAME(sw_ksp),sp
-       sub.l   #(LRET-LORIG),sp                /* allocate LORIG - LRET */ 
-       mov.l   er0,@-sp
-       mov.l   er1,@-sp
-       mov.l   @SYMBOL_NAME(sw_usp),er0
-       mov.l   @(8:16,er0),er1                 /* copy the RET addr */
-       mov.l   er1,@(LRET-LER1:16,sp)
-
-       mov.w   e1,r1                           /* e1 highbyte = ccr */
-       and     #0xef,r1h                       /* mask mode? flag */
-       sub.w   r0,r0
-       mov.b   r1h,r0l
-       mov.w   r0,@(LCCR-LER1:16,sp)           /* copy ccr */
-       mov.l   @(LORIG-LER1:16,sp),er0
-       mov.l   er0,@(LER0-LER1:16,sp)          /* copy ER0 */
-       bra     6f
-5:
-       mov.l   @sp,er0                         /* kernel mode */
-       subs    #2,sp                      &