]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 28 Dec 2008 20:33:21 +0000 (12:33 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 28 Dec 2008 20:33:21 +0000 (12:33 -0800)
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (85 commits)
  [S390] provide documentation for hvc_iucv kernel parameter.
  [S390] convert ctcm printks to dev_xxx and pr_xxx macros.
  [S390] convert zfcp printks to pr_xxx macros.
  [S390] convert vmlogrdr printks to pr_xxx macros.
  [S390] convert zfcp dumper printks to pr_xxx macros.
  [S390] convert cpu related printks to pr_xxx macros.
  [S390] convert qeth printks to dev_xxx and pr_xxx macros.
  [S390] convert sclp printks to pr_xxx macros.
  [S390] convert iucv printks to dev_xxx and pr_xxx macros.
  [S390] convert ap_bus printks to pr_xxx macros.
  [S390] convert dcssblk and extmem printks messages to pr_xxx macros.
  [S390] convert monwriter printks to pr_xxx macros.
  [S390] convert s390 debug feature printks to pr_xxx macros.
  [S390] convert monreader printks to pr_xxx macros.
  [S390] convert appldata printks to pr_xxx macros.
  [S390] convert setup printks to pr_xxx macros.
  [S390] convert hypfs printks to pr_xxx macros.
  [S390] convert time printks to pr_xxx macros.
  [S390] convert cpacf printks to pr_xxx macros.
  [S390] convert cio printks to pr_xxx macros.
  ...

996 files changed:
Documentation/controllers/cpuacct.txt [new file with mode: 0644]
Documentation/cpu-freq/user-guide.txt
Documentation/credentials.txt [new file with mode: 0644]
Documentation/feature-removal-schedule.txt
Documentation/filesystems/proc.txt
Documentation/ftrace.txt
Documentation/kernel-parameters.txt
Documentation/markers.txt
Documentation/nmi_watchdog.txt
Documentation/scheduler/sched-arch.txt
Documentation/scheduler/sched-design-CFS.txt
Documentation/sh/kgdb.txt [deleted file]
Documentation/sound/alsa/ALSA-Configuration.txt
Documentation/sound/alsa/HD-Audio-Models.txt [new file with mode: 0644]
Documentation/sound/alsa/HD-Audio.txt [new file with mode: 0644]
Documentation/sound/alsa/Procfile.txt
Documentation/sound/alsa/soc/machine.txt
Documentation/tracepoints.txt
Documentation/x86/boot.txt
Documentation/x86/pat.txt
Documentation/x86/x86_64/boot-options.txt
Documentation/x86/x86_64/mm.txt
MAINTAINERS
arch/alpha/kernel/asm-offsets.c
arch/alpha/kernel/entry.S
arch/arm/mach-pxa/include/mach/palmasoc.h [new file with mode: 0644]
arch/ia64/Kconfig
arch/ia64/ia32/sys_ia32.c
arch/ia64/kernel/mca_drv.c
arch/ia64/kernel/perfmon.c
arch/ia64/kernel/signal.c
arch/m32r/Kconfig
arch/mips/Kconfig
arch/mips/kernel/kspd.c
arch/mips/kernel/mips-mt-fpaff.c
arch/mips/kernel/vpe.c
arch/parisc/kernel/signal.c
arch/powerpc/Kconfig
arch/powerpc/include/asm/ftrace.h
arch/powerpc/include/asm/module.h
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/ftrace.c
arch/powerpc/kernel/idle.c
arch/powerpc/kernel/module_32.c
arch/powerpc/kernel/module_64.c
arch/powerpc/lib/Makefile
arch/powerpc/mm/fault.c
arch/powerpc/platforms/cell/spufs/inode.c
arch/s390/hypfs/inode.c
arch/s390/kernel/compat_linux.c
arch/s390/kernel/topology.c
arch/sh/Kconfig
arch/sh/Kconfig.debug
arch/sh/Makefile
arch/sh/boards/Kconfig
arch/sh/boards/Makefile
arch/sh/boards/board-ap325rxa.c
arch/sh/boards/board-shmin.c
arch/sh/boards/mach-cayman/Makefile
arch/sh/boards/mach-cayman/irq.c
arch/sh/boards/mach-cayman/led.c [deleted file]
arch/sh/boards/mach-dreamcast/irq.c
arch/sh/boards/mach-dreamcast/setup.c
arch/sh/boards/mach-edosk7705/Makefile
arch/sh/boards/mach-edosk7705/io.c
arch/sh/boards/mach-edosk7705/setup.c
arch/sh/boards/mach-hp6xx/pm.c
arch/sh/boards/mach-microdev/Makefile
arch/sh/boards/mach-microdev/fdc37c93xapm.c [new file with mode: 0644]
arch/sh/boards/mach-microdev/irq.c
arch/sh/boards/mach-microdev/led.c [deleted file]
arch/sh/boards/mach-microdev/setup.c
arch/sh/boards/mach-migor/setup.c
arch/sh/boards/mach-rsk/Kconfig [new file with mode: 0644]
arch/sh/boards/mach-rsk/Makefile [new file with mode: 0644]
arch/sh/boards/mach-rsk/devices-rsk7203.c [moved from arch/sh/boards/board-rsk7203.c with 58% similarity]
arch/sh/boards/mach-rsk/setup.c [new file with mode: 0644]
arch/sh/boards/mach-se/7343/Makefile
arch/sh/boards/mach-se/7343/io.c [deleted file]
arch/sh/boards/mach-se/7343/setup.c
arch/sh/boards/mach-se/770x/setup.c
arch/sh/boards/mach-se/7721/setup.c
arch/sh/boards/mach-se/7722/setup.c
arch/sh/boards/mach-sh03/setup.c
arch/sh/boards/mach-systemh/irq.c
arch/sh/cchips/hd6446x/hd64461.c
arch/sh/configs/edosk7705_defconfig [new file with mode: 0644]
arch/sh/configs/rsk7201_defconfig [new file with mode: 0644]
arch/sh/configs/rsk7203_defconfig
arch/sh/configs/rts7751r2dplus_qemu_defconfig [deleted file]
arch/sh/configs/se7343_defconfig
arch/sh/drivers/dma/Makefile
arch/sh/drivers/dma/dma-isa.c [deleted file]
arch/sh/drivers/dma/dma-sh.c
arch/sh/drivers/dma/dma-sh.h
arch/sh/drivers/pci/ops-sh03.c
arch/sh/drivers/pci/pci-sh7780.c
arch/sh/include/asm/addrspace.h
arch/sh/include/asm/bitops-grb.h
arch/sh/include/asm/bitops-irq.h [deleted file]
arch/sh/include/asm/bitops-llsc.h
arch/sh/include/asm/bitops-op32.h [new file with mode: 0644]
arch/sh/include/asm/bitops.h
arch/sh/include/asm/bugs.h
arch/sh/include/asm/elf.h
arch/sh/include/asm/ftrace.h
arch/sh/include/asm/io.h
arch/sh/include/asm/kgdb.h
arch/sh/include/asm/machvec.h
arch/sh/include/asm/mmu_context.h
arch/sh/include/asm/mutex-llsc.h [new file with mode: 0644]
arch/sh/include/asm/mutex.h
arch/sh/include/asm/pm.h [deleted file]
arch/sh/include/asm/processor.h
arch/sh/include/asm/processor_32.h
arch/sh/include/asm/processor_64.h
arch/sh/include/asm/ptrace.h
arch/sh/include/asm/sh_bios.h
arch/sh/include/asm/string_64.h
arch/sh/include/asm/syscall_32.h
arch/sh/include/asm/syscall_64.h
arch/sh/include/asm/system.h
arch/sh/include/asm/unaligned-sh4a.h [new file with mode: 0644]
arch/sh/include/asm/unaligned.h
arch/sh/include/cpu-sh3/cpu/gpio.h
arch/sh/include/mach-common/mach/edosk7705.h
arch/sh/include/mach-se/mach/mrshpc.h [new file with mode: 0644]
arch/sh/include/mach-se/mach/se.h
arch/sh/include/mach-se/mach/se7343.h
arch/sh/kernel/Makefile_32
arch/sh/kernel/Makefile_64
arch/sh/kernel/cf-enabler.c [deleted file]
arch/sh/kernel/cpu/clock.c
arch/sh/kernel/cpu/init.c
arch/sh/kernel/cpu/sh2a/Makefile
arch/sh/kernel/cpu/sh2a/clock-sh7201.c [new file with mode: 0644]
arch/sh/kernel/cpu/sh2a/probe.c
arch/sh/kernel/cpu/sh2a/setup-sh7201.c [new file with mode: 0644]
arch/sh/kernel/cpu/sh3/entry.S
arch/sh/kernel/cpu/sh3/ex.S
arch/sh/kernel/cpu/sh4/softfloat.c
arch/sh/kernel/cpu/sh4a/clock-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7343.c
arch/sh/kernel/cpu/sh4a/setup-sh7366.c
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7723.c
arch/sh/kernel/debugtraps.S
arch/sh/kernel/disassemble.c [new file with mode: 0644]
arch/sh/kernel/entry-common.S
arch/sh/kernel/ftrace.c [new file with mode: 0644]
arch/sh/kernel/head_32.S
arch/sh/kernel/idle.c [new file with mode: 0644]
arch/sh/kernel/kgdb.c [new file with mode: 0644]
arch/sh/kernel/kgdb_jmp.S [deleted file]
arch/sh/kernel/kgdb_stub.c [deleted file]
arch/sh/kernel/pm.c [deleted file]
arch/sh/kernel/process_32.c
arch/sh/kernel/process_64.c
arch/sh/kernel/ptrace_64.c
arch/sh/kernel/setup.c
arch/sh/kernel/sh_bios.c
arch/sh/kernel/sh_ksyms_32.c
arch/sh/kernel/sh_ksyms_64.c
arch/sh/kernel/signal_32.c
arch/sh/kernel/signal_64.c
arch/sh/kernel/sys_sh.c
arch/sh/kernel/time_32.c
arch/sh/kernel/time_64.c
arch/sh/kernel/timers/timer-mtu2.c
arch/sh/kernel/traps_32.c
arch/sh/lib/Makefile
arch/sh/lib/ashiftrt.S [new file with mode: 0644]
arch/sh/lib/ashldi3.c [new file with mode: 0644]
arch/sh/lib/ashlsi3.S [new file with mode: 0644]
arch/sh/lib/ashrdi3.c [new file with mode: 0644]
arch/sh/lib/ashrsi3.S [new file with mode: 0644]
arch/sh/lib/libgcc.h [new file with mode: 0644]
arch/sh/lib/lshrdi3.c [new file with mode: 0644]
arch/sh/lib/lshrsi3.S [new file with mode: 0644]
arch/sh/lib/mcount.S [new file with mode: 0644]
arch/sh/lib/movmem.S [new file with mode: 0644]
arch/sh/lib/udiv_qrnnd.S [new file with mode: 0644]
arch/sh/lib/udivsi3.S [new file with mode: 0644]
arch/sh/lib/udivsi3_i4i-Os.S [new file with mode: 0644]
arch/sh/lib/udivsi3_i4i.S [new file with mode: 0644]
arch/sh/lib64/Makefile
arch/sh/lib64/c-checksum.c
arch/sh/lib64/memcpy.S [new file with mode: 0644]
arch/sh/lib64/memcpy.c [deleted file]
arch/sh/lib64/memset.S [new file with mode: 0644]
arch/sh/lib64/sdivsi3.S [new file with mode: 0644]
arch/sh/lib64/strcpy.S [new file with mode: 0644]
arch/sh/lib64/strlen.S [new file with mode: 0644]
arch/sh/lib64/udivdi3.S [new file with mode: 0644]
arch/sh/lib64/udivsi3.S [new file with mode: 0644]
arch/sh/mm/Makefile_32
arch/sh/mm/Makefile_64
arch/sh/mm/asids-debugfs.c [new file with mode: 0644]
arch/sh/mm/consistent.c
arch/sh/mm/fault_32.c
arch/sh/mm/ioremap_32.c
arch/sh/mm/mmap.c
arch/sh/oprofile/Makefile
arch/sh/oprofile/backtrace.c [new file with mode: 0644]
arch/sh/oprofile/common.c [new file with mode: 0644]
arch/sh/oprofile/op_impl.h [new file with mode: 0644]
arch/sh/oprofile/op_model_null.c [deleted file]
arch/sh/oprofile/op_model_sh7750.c
arch/sh/tools/mach-types
arch/um/drivers/mconsole_kern.c
arch/x86/Kconfig
arch/x86/Kconfig.cpu
arch/x86/Kconfig.debug
arch/x86/boot/video-vga.c
arch/x86/boot/video.c
arch/x86/configs/i386_defconfig
arch/x86/configs/x86_64_defconfig
arch/x86/crypto/crc32c-intel.c
arch/x86/ia32/ia32_aout.c
arch/x86/ia32/ia32_signal.c
arch/x86/include/asm/apic.h
arch/x86/include/asm/bigsmp/apic.h
arch/x86/include/asm/bitops.h
arch/x86/include/asm/bug.h
arch/x86/include/asm/byteorder.h
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/dma-mapping.h
arch/x86/include/asm/ds.h
arch/x86/include/asm/dwarf2.h
arch/x86/include/asm/emergency-restart.h
arch/x86/include/asm/es7000/apic.h
arch/x86/include/asm/es7000/wakecpu.h
arch/x86/include/asm/ftrace.h
arch/x86/include/asm/gart.h
arch/x86/include/asm/genapic_32.h
arch/x86/include/asm/genapic_64.h
arch/x86/include/asm/hardirq_32.h
arch/x86/include/asm/hardirq_64.h
arch/x86/include/asm/hw_irq.h
arch/x86/include/asm/hypervisor.h [new file with mode: 0644]
arch/x86/include/asm/ia32.h
arch/x86/include/asm/idle.h
arch/x86/include/asm/io.h
arch/x86/include/asm/io_64.h
arch/x86/include/asm/io_apic.h
arch/x86/include/asm/iommu.h
arch/x86/include/asm/irq.h
arch/x86/include/asm/irq_regs_32.h
arch/x86/include/asm/kexec.h
arch/x86/include/asm/linkage.h
arch/x86/include/asm/mach-default/mach_apic.h
arch/x86/include/asm/mach-default/mach_wakecpu.h
arch/x86/include/asm/mach-default/smpboot_hooks.h
arch/x86/include/asm/mach-generic/mach_apic.h
arch/x86/include/asm/mach-generic/mach_wakecpu.h [new file with mode: 0644]
arch/x86/include/asm/mmu_context_32.h
arch/x86/include/asm/msr-index.h
arch/x86/include/asm/msr.h
arch/x86/include/asm/numaq/wakecpu.h
arch/x86/include/asm/pci.h
arch/x86/include/asm/pgtable-2level.h
arch/x86/include/asm/pgtable-3level.h
arch/x86/include/asm/pgtable.h
arch/x86/include/asm/pgtable_32.h
arch/x86/include/asm/pgtable_64.h
arch/x86/include/asm/prctl.h
arch/x86/include/asm/processor.h
arch/x86/include/asm/ptrace.h
arch/x86/include/asm/reboot.h
arch/x86/include/asm/setup.h
arch/x86/include/asm/sigframe.h [new file with mode: 0644]
arch/x86/include/asm/signal.h
arch/x86/include/asm/sparsemem.h
arch/x86/include/asm/syscalls.h
arch/x86/include/asm/system.h
arch/x86/include/asm/thread_info.h
arch/x86/include/asm/trampoline.h
arch/x86/include/asm/traps.h
arch/x86/include/asm/tsc.h
arch/x86/include/asm/uaccess.h
arch/x86/include/asm/uv/bios.h
arch/x86/include/asm/uv/uv_hub.h
arch/x86/include/asm/vmware.h [new file with mode: 0644]
arch/x86/include/asm/xen/hypercall.h
arch/x86/include/asm/xen/hypervisor.h
arch/x86/include/asm/xen/page.h
arch/x86/kernel/Makefile
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/amd_iommu.c
arch/x86/kernel/amd_iommu_init.c
arch/x86/kernel/aperture_64.c
arch/x86/kernel/apic.c
arch/x86/kernel/apm_32.c
arch/x86/kernel/asm-offsets_32.c
arch/x86/kernel/asm-offsets_64.c
arch/x86/kernel/bios_uv.c
arch/x86/kernel/check.c [new file with mode: 0644]
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/addon_cpuid_features.c
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
arch/x86/kernel/cpu/hypervisor.c [new file with mode: 0644]
arch/x86/kernel/cpu/intel.c
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/cpu/mcheck/mce_amd_64.c
arch/x86/kernel/cpu/mcheck/mce_intel_64.c
arch/x86/kernel/cpu/mtrr/main.c
arch/x86/kernel/cpu/vmware.c [new file with mode: 0644]
arch/x86/kernel/crash.c
arch/x86/kernel/ds.c
arch/x86/kernel/dumpstack.c [new file with mode: 0644]
arch/x86/kernel/dumpstack.h [new file with mode: 0644]
arch/x86/kernel/dumpstack_32.c
arch/x86/kernel/dumpstack_64.c
arch/x86/kernel/e820.c
arch/x86/kernel/early-quirks.c
arch/x86/kernel/early_printk.c
arch/x86/kernel/entry_32.S
arch/x86/kernel/entry_64.S
arch/x86/kernel/es7000_32.c
arch/x86/kernel/ftrace.c
arch/x86/kernel/genapic_64.c
arch/x86/kernel/genx2apic_uv_x.c
arch/x86/kernel/head.c
arch/x86/kernel/head32.c
arch/x86/kernel/head64.c
arch/x86/kernel/hpet.c
arch/x86/kernel/init_task.c
arch/x86/kernel/io_apic.c
arch/x86/kernel/irq_64.c
arch/x86/kernel/irqinit_32.c
arch/x86/kernel/irqinit_64.c
arch/x86/kernel/machine_kexec_32.c
arch/x86/kernel/microcode_amd.c
arch/x86/kernel/microcode_core.c
arch/x86/kernel/microcode_intel.c
arch/x86/kernel/mpparse.c
arch/x86/kernel/nmi.c
arch/x86/kernel/numaq_32.c
arch/x86/kernel/pci-dma.c
arch/x86/kernel/process.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
arch/x86/kernel/ptrace.c
arch/x86/kernel/reboot.c
arch/x86/kernel/relocate_kernel_32.S
arch/x86/kernel/setup.c
arch/x86/kernel/sigframe.h [deleted file]
arch/x86/kernel/signal.c [moved from arch/x86/kernel/signal_32.c with 73% similarity]
arch/x86/kernel/signal_64.c [deleted file]
arch/x86/kernel/smp.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/stacktrace.c
arch/x86/kernel/time_32.c
arch/x86/kernel/time_64.c
arch/x86/kernel/tlb_32.c
arch/x86/kernel/tlb_64.c
arch/x86/kernel/tlb_uv.c
arch/x86/kernel/trampoline.c
arch/x86/kernel/traps.c
arch/x86/kernel/tsc.c
arch/x86/kernel/tsc_sync.c
arch/x86/kernel/vmi_32.c
arch/x86/kernel/vmlinux_32.lds.S
arch/x86/kernel/vmlinux_64.lds.S
arch/x86/kernel/vsyscall_64.c
arch/x86/lguest/boot.c
arch/x86/mach-generic/bigsmp.c
arch/x86/mach-generic/default.c
arch/x86/mach-generic/es7000.c
arch/x86/mach-generic/probe.c
arch/x86/mach-generic/summit.c
arch/x86/mm/Makefile
arch/x86/mm/fault.c
arch/x86/mm/init_32.c
arch/x86/mm/init_64.c
arch/x86/mm/ioremap.c
arch/x86/mm/pat.c
arch/x86/pci/common.c
arch/x86/pci/direct.c
arch/x86/pci/pci.h
arch/x86/vdso/vclock_gettime.c
arch/x86/xen/enlighten.c
arch/x86/xen/mmu.c
arch/x86/xen/multicalls.c
arch/x86/xen/setup.c
block/Kconfig
block/blk-core.c
block/blktrace.c
block/elevator.c
crypto/Kconfig
crypto/Makefile
crypto/aes_generic.c
crypto/ahash.c
crypto/ansi_cprng.c
crypto/api.c
crypto/authenc.c
crypto/camellia.c
crypto/crc32c.c
crypto/crypto_null.c
crypto/des_generic.c
crypto/fcrypt.c
crypto/hmac.c
crypto/internal.h
crypto/md4.c
crypto/md5.c
crypto/michael_mic.c
crypto/proc.c
crypto/rmd128.c
crypto/rmd160.c
crypto/rmd256.c
crypto/rmd320.c
crypto/salsa20_generic.c
crypto/sha1_generic.c
crypto/sha256_generic.c
crypto/sha512_generic.c
crypto/shash.c [new file with mode: 0644]
crypto/testmgr.c
crypto/testmgr.h
crypto/tgr192.c
crypto/wp512.c
drivers/acpi/pci_irq.c
drivers/acpi/processor_idle.c
drivers/block/loop.c
drivers/char/sysrq.c
drivers/char/tty_audit.c
drivers/char/tty_io.c
drivers/connector/cn_proc.c
drivers/crypto/hifn_795x.c
drivers/crypto/padlock-aes.c
drivers/crypto/talitos.c
drivers/crypto/talitos.h
drivers/firmware/dmi_scan.c
drivers/i2c/busses/i2c-sh_mobile.c
drivers/input/keyboard/sh_keysc.c
drivers/isdn/capi/capifs.c
drivers/isdn/hysdn/hysdn_procconf.c
drivers/md/dm.c
drivers/media/video/Kconfig
drivers/media/video/sh_mobile_ceu_camera.c
drivers/misc/sgi-gru/gruprocfs.c
drivers/misc/sgi-xp/xp.h
drivers/misc/sgi-xp/xp_main.c
drivers/misc/sgi-xp/xp_sn2.c
drivers/misc/sgi-xp/xp_uv.c
drivers/misc/sgi-xp/xpc.h
drivers/misc/sgi-xp/xpc_sn2.c
drivers/misc/sgi-xp/xpc_uv.c
drivers/net/tun.c
drivers/pci/quirks.c
drivers/serial/sh-sci.c
drivers/serial/sh-sci.h
drivers/usb/core/devio.c
drivers/usb/core/inode.c
drivers/usb/gadget/m66592-udc.c
drivers/usb/gadget/m66592-udc.h
drivers/usb/host/r8a66597-hcd.c
drivers/usb/host/r8a66597.h
drivers/video/Kconfig
drivers/video/fb_defio.c
drivers/video/sh7760fb.c
drivers/video/sh_mobile_lcdcfb.c
drivers/xen/balloon.c
drivers/xen/features.c
drivers/xen/grant-table.c
fs/9p/fid.c
fs/9p/vfs_inode.c
fs/9p/vfs_super.c
fs/affs/inode.c
fs/affs/super.c
fs/anon_inodes.c
fs/attr.c
fs/autofs/inode.c
fs/autofs4/dev-ioctl.c
fs/autofs4/inode.c
fs/autofs4/waitq.c
fs/bfs/dir.c
fs/binfmt_aout.c
fs/binfmt_elf.c
fs/binfmt_elf_fdpic.c
fs/binfmt_flat.c
fs/binfmt_som.c
fs/bio.c
fs/cifs/cifs_fs_sb.h
fs/cifs/cifsproto.h
fs/cifs/connect.c
fs/cifs/dir.c
fs/cifs/inode.c
fs/cifs/ioctl.c
fs/cifs/misc.c
fs/coda/cache.c
fs/coda/file.c
fs/coda/upcall.c
fs/compat.c
fs/devpts/inode.c
fs/dquot.c
fs/ecryptfs/ecryptfs_kernel.h
fs/ecryptfs/kthread.c
fs/ecryptfs/main.c
fs/ecryptfs/messaging.c
fs/ecryptfs/miscdev.c
fs/exec.c
fs/exportfs/expfs.c
fs/ext2/balloc.c
fs/ext2/ialloc.c
fs/ext3/balloc.c
fs/ext3/ialloc.c
fs/ext4/balloc.c
fs/ext4/ialloc.c
fs/fat/file.c
fs/fat/inode.c
fs/fcntl.c
fs/file_table.c
fs/fuse/dev.c
fs/fuse/dir.c
fs/gfs2/inode.c
fs/hfs/inode.c
fs/hfs/super.c
fs/hfsplus/inode.c
fs/hfsplus/options.c
fs/hpfs/namei.c
fs/hpfs/super.c
fs/hppfs/hppfs.c
fs/hugetlbfs/inode.c
fs/inotify_user.c
fs/internal.h
fs/ioprio.c
fs/jfs/jfs_inode.c
fs/locks.c
fs/minix/bitmap.c
fs/namei.c
fs/namespace.c
fs/ncpfs/ioctl.c
fs/nfsctl.c
fs/nfsd/auth.c
fs/nfsd/nfs4recover.c
fs/nfsd/nfsfh.c
fs/nfsd/vfs.c
fs/ocfs2/dlm/dlmfs.c
fs/ocfs2/namei.c
fs/omfs/inode.c
fs/open.c
fs/pipe.c
fs/posix_acl.c
fs/proc/array.c
fs/proc/base.c
fs/quota.c
fs/ramfs/inode.c
fs/reiserfs/namei.c
fs/seq_file.c
fs/smbfs/dir.c
fs/smbfs/inode.c
fs/smbfs/proc.c
fs/super.c
fs/sysv/ialloc.c
fs/ubifs/budget.c
fs/ubifs/dir.c
fs/udf/ialloc.c
fs/udf/namei.c
fs/ufs/ialloc.c
fs/xfs/linux-2.6/xfs_cred.h
fs/xfs/linux-2.6/xfs_globals.h
fs/xfs/linux-2.6/xfs_ioctl.c
fs/xfs/xfs_acl.c
fs/xfs/xfs_inode.h
fs/xfs/xfs_vnodeops.h
include/asm-generic/bug.h
include/asm-generic/pgtable.h
include/asm-generic/vmlinux.lds.h
include/asm-m32r/system.h
include/crypto/aes.h
include/crypto/algapi.h
include/crypto/hash.h
include/crypto/internal/hash.h
include/keys/keyring-type.h [new file with mode: 0644]
include/linux/audit.h
include/linux/binfmts.h
include/linux/blktrace_api.h
include/linux/capability.h
include/linux/compiler.h
include/linux/crc32c.h
include/linux/cred.h
include/linux/crypto.h
include/linux/dmi.h
include/linux/fb.h
include/linux/fs.h
include/linux/ftrace.h
include/linux/ftrace_irq.h [new file with mode: 0644]
include/linux/hardirq.h
include/linux/init_task.h
include/linux/input.h
include/linux/kexec.h
include/linux/key-ui.h [deleted file]
include/linux/key.h
include/linux/keyctl.h
include/linux/linkage.h
include/linux/marker.h
include/linux/mfd/wm8350/audio.h
include/linux/mm.h
include/linux/nsproxy.h
include/linux/pci.h
include/linux/pci_ids.h
include/linux/pid.h
include/linux/ptrace.h
include/linux/rcupdate.h
include/linux/ring_buffer.h
include/linux/sched.h
include/linux/securebits.h
include/linux/security.h
include/linux/seq_file.h
include/linux/stacktrace.h
include/linux/topology.h
include/linux/tracepoint.h
include/linux/tty.h
include/linux/user_namespace.h
include/net/scm.h
include/sound/ac97_codec.h
include/sound/asound.h
include/sound/core.h
include/sound/info.h
include/sound/jack.h
include/sound/l3.h [new file with mode: 0644]
include/sound/s3c24xx_uda134x.h [new file with mode: 0644]
include/sound/soc-dai.h [new file with mode: 0644]
include/sound/soc-dapm.h
include/sound/soc.h
include/sound/uda134x.h [new file with mode: 0644]
include/sound/version.h
include/trace/block.h [new file with mode: 0644]
include/trace/boot.h [new file with mode: 0644]
include/trace/sched.h
include/video/sh_mobile_lcdc.h
include/xen/interface/event_channel.h
init/Kconfig
init/main.c
ipc/mqueue.c
ipc/shm.c
ipc/util.c
kernel/Makefile
kernel/acct.c
kernel/auditsc.c
kernel/capability.c
kernel/cgroup.c
kernel/cred-internals.h [new file with mode: 0644]
kernel/cred.c [new file with mode: 0644]
kernel/delayacct.c
kernel/exit.c
kernel/extable.c
kernel/fork.c
kernel/futex.c
kernel/futex_compat.c
kernel/kmod.c
kernel/kthread.c
kernel/lockdep.c
kernel/marker.c
kernel/module.c
kernel/nsproxy.c
kernel/power/disk.c
kernel/power/main.c
kernel/profile.c
kernel/ptrace.c
kernel/sched.c
kernel/sched_debug.c
kernel/sched_fair.c
kernel/sched_rt.c
kernel/sched_stats.h
kernel/signal.c
kernel/sys.c
kernel/sysctl.c
kernel/timer.c
kernel/trace/Kconfig
kernel/trace/Makefile
kernel/trace/ftrace.c
kernel/trace/ring_buffer.c
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_boot.c
kernel/trace/trace_branch.c [new file with mode: 0644]
kernel/trace/trace_functions.c
kernel/trace/trace_functions_graph.c [new file with mode: 0644]
kernel/trace/trace_hw_branches.c [new file with mode: 0644]
kernel/trace/trace_irqsoff.c
kernel/trace/trace_mmiotrace.c
kernel/trace/trace_nop.c
kernel/trace/trace_power.c [new file with mode: 0644]
kernel/trace/trace_sched_switch.c
kernel/trace/trace_sched_wakeup.c
kernel/trace/trace_selftest.c
kernel/trace/trace_stack.c
kernel/trace/trace_sysprof.c
kernel/tracepoint.c
kernel/tsacct.c
kernel/uid16.c
kernel/user.c
kernel/user_namespace.c
kernel/workqueue.c
lib/Kconfig
lib/Makefile
lib/bug.c
lib/is_single_threaded.c [new file with mode: 0644]
lib/libcrc32c.c
mm/bounce.c
mm/memory.c
mm/mempolicy.c
mm/migrate.c
mm/mlock.c
mm/oom_kill.c
mm/shmem.c
mm/swapfile.c
net/9p/client.c
net/ax25/af_ax25.c
net/ax25/ax25_route.c
net/core/dev.c
net/core/scm.c
net/ipv4/netfilter/ipt_LOG.c
net/ipv6/ip6_flowlabel.c
net/ipv6/netfilter/ip6t_LOG.c
net/netfilter/nfnetlink_log.c
net/netfilter/xt_owner.c
net/netrom/af_netrom.c
net/rose/af_rose.c
net/rxrpc/ar-key.c
net/sched/cls_flow.c
net/socket.c
net/sunrpc/auth.c
net/unix/af_unix.c
samples/tracepoints/tp-samples-trace.h
samples/tracepoints/tracepoint-probe-sample.c
samples/tracepoints/tracepoint-probe-sample2.c
samples/tracepoints/tracepoint-sample.c
scripts/Makefile.build
scripts/bootgraph.pl
scripts/recordmcount.pl
scripts/trace/power.pl [new file with mode: 0644]
scripts/tracing/draw_functrace.py [new file with mode: 0644]
security/capability.c
security/commoncap.c
security/keys/internal.h
security/keys/key.c
security/keys/keyctl.c
security/keys/keyring.c
security/keys/permission.c
security/keys/proc.c
security/keys/process_keys.c
security/keys/request_key.c
security/keys/request_key_auth.c
security/root_plug.c
security/security.c
security/selinux/exports.c
security/selinux/hooks.c
security/selinux/include/av_perm_to_string.h
security/selinux/include/av_permissions.h
security/selinux/include/class_to_string.h
security/selinux/include/flask.h
security/selinux/include/objsec.h
security/selinux/nlmsgtab.c
security/selinux/selinuxfs.c
security/selinux/xfrm.c
security/smack/smack_access.c
security/smack/smack_lsm.c
security/smack/smackfs.c
sound/ac97_bus.c
sound/aoa/codecs/Makefile
sound/aoa/codecs/onyx.c [moved from sound/aoa/codecs/snd-aoa-codec-onyx.c with 99% similarity]
sound/aoa/codecs/onyx.h [moved from sound/aoa/codecs/snd-aoa-codec-onyx.h with 100% similarity]
sound/aoa/codecs/tas-basstreble.h [moved from sound/aoa/codecs/snd-aoa-codec-tas-basstreble.h with 100% similarity]
sound/aoa/codecs/tas-gain-table.h [moved from sound/aoa/codecs/snd-aoa-codec-tas-gain-table.h with 100% similarity]
sound/aoa/codecs/tas.c [moved from sound/aoa/codecs/snd-aoa-codec-tas.c with 99% similarity]
sound/aoa/codecs/tas.h [moved from sound/aoa/codecs/snd-aoa-codec-tas.h with 100% similarity]
sound/aoa/codecs/toonie.c [moved from sound/aoa/codecs/snd-aoa-codec-toonie.c with 98% similarity]
sound/aoa/core/Makefile
sound/aoa/core/alsa.c [moved from sound/aoa/core/snd-aoa-alsa.c with 98% similarity]
sound/aoa/core/alsa.h [moved from sound/aoa/core/snd-aoa-alsa.h with 100% similarity]
sound/aoa/core/core.c [moved from sound/aoa/core/snd-aoa-core.c with 99% similarity]
sound/aoa/core/gpio-feature.c [moved from sound/aoa/core/snd-aoa-gpio-feature.c with 99% similarity]
sound/aoa/core/gpio-pmf.c [moved from sound/aoa/core/snd-aoa-gpio-pmf.c with 100% similarity]
sound/aoa/fabrics/Makefile
sound/aoa/fabrics/layout.c [moved from sound/aoa/fabrics/snd-aoa-fabric-layout.c with 99% similarity]
sound/aoa/soundbus/i2sbus/Makefile
sound/aoa/soundbus/i2sbus/control.c [moved from sound/aoa/soundbus/i2sbus/i2sbus-control.c with 100% similarity]
sound/aoa/soundbus/i2sbus/core.c [moved from sound/aoa/soundbus/i2sbus/i2sbus-core.c with 99% similarity]
sound/aoa/soundbus/i2sbus/i2sbus.h
sound/aoa/soundbus/i2sbus/interface.h [moved from sound/aoa/soundbus/i2sbus/i2sbus-interface.h with 100% similarity]
sound/aoa/soundbus/i2sbus/pcm.c [moved from sound/aoa/soundbus/i2sbus/i2sbus-pcm.c with 100% similarity]
sound/core/Kconfig
sound/core/Makefile
sound/core/device.c
sound/core/hrtimer.c [new file with mode: 0644]
sound/core/info.c
sound/core/init.c
sound/core/jack.c
sound/core/rawmidi.c
sound/core/rtctimer.c
sound/core/seq/seq.c
sound/core/timer.c
sound/drivers/Kconfig
sound/drivers/pcsp/pcsp.c
sound/drivers/pcsp/pcsp.h
sound/drivers/pcsp/pcsp_lib.c
sound/drivers/vx/vx_core.c
sound/drivers/vx/vx_pcm.c
sound/isa/sb/sb8.c
sound/pci/Kconfig
sound/pci/ac97/ac97_codec.c
sound/pci/ac97/ac97_patch.c
sound/pci/ca0106/ca0106.h
sound/pci/ca0106/ca0106_main.c
sound/pci/ca0106/ca0106_mixer.c
sound/pci/cs46xx/cs46xx_lib.c
sound/pci/cs5535audio/Makefile
sound/pci/cs5535audio/cs5535audio.c
sound/pci/cs5535audio/cs5535audio.h
sound/pci/cs5535audio/cs5535audio_olpc.c [new file with mode: 0644]
sound/pci/cs5535audio/cs5535audio_pcm.c
sound/pci/emu10k1/emu10k1_main.c
sound/pci/emu10k1/emumixer.c
sound/pci/es1968.c
sound/pci/hda/Kconfig [new file with mode: 0644]
sound/pci/hda/Makefile
sound/pci/hda/hda_beep.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_eld.c [new file with mode: 0644]
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_hwdep.c
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_local.h
sound/pci/hda/hda_patch.h [deleted file]
sound/pci/hda/hda_proc.c
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_atihdmi.c
sound/pci/hda/patch_cmedia.c
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_intelhdmi.c [new file with mode: 0644]
sound/pci/hda/patch_nvhdmi.c
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_si3054.c
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_via.c
sound/pci/ice1712/ice1724.c
sound/pci/maestro3.c
sound/pci/mixart/mixart.c
sound/pci/mixart/mixart_core.c
sound/pci/oxygen/oxygen.c
sound/pci/pcxhr/Makefile
sound/pci/pcxhr/pcxhr.c
sound/pci/pcxhr/pcxhr.h
sound/pci/pcxhr/pcxhr_core.c
sound/pci/pcxhr/pcxhr_core.h
sound/pci/pcxhr/pcxhr_hwdep.c
sound/pci/pcxhr/pcxhr_mix22.c [new file with mode: 0644]
sound/pci/pcxhr/pcxhr_mix22.h [new file with mode: 0644]
sound/pci/pcxhr/pcxhr_mixer.c
sound/pci/riptide/riptide.c
sound/pci/rme9652/hdsp.c
sound/pci/rme9652/hdspm.c
sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
sound/ppc/pmac.c
sound/ppc/tumbler.c
sound/soc/Kconfig
sound/soc/Makefile
sound/soc/at32/Kconfig [deleted file]
sound/soc/at32/Makefile [deleted file]
sound/soc/at32/at32-pcm.c [deleted file]
sound/soc/at32/at32-pcm.h [deleted file]
sound/soc/at32/at32-ssc.c [deleted file]
sound/soc/at32/at32-ssc.h [deleted file]
sound/soc/at91/Kconfig [deleted file]
sound/soc/at91/Makefile [deleted file]
sound/soc/at91/at91-pcm.c [deleted file]
sound/soc/at91/at91-pcm.h [deleted file]
sound/soc/at91/at91-ssc.c [deleted file]
sound/soc/at91/at91-ssc.h [deleted file]
sound/soc/atmel/Kconfig [new file with mode: 0644]
sound/soc/atmel/Makefile [new file with mode: 0644]
sound/soc/atmel/atmel-pcm.c [new file with mode: 0644]
sound/soc/atmel/atmel-pcm.h [new file with mode: 0644]
sound/soc/atmel/atmel_ssc_dai.c [new file with mode: 0644]
sound/soc/atmel/atmel_ssc_dai.h [new file with mode: 0644]
sound/soc/atmel/playpaq_wm8510.c [moved from sound/soc/at32/playpaq_wm8510.c with 98% similarity]
sound/soc/atmel/sam9g20_wm8731.c [new file with mode: 0644]
sound/soc/au1x/dbdma2.c
sound/soc/au1x/psc-ac97.c
sound/soc/au1x/psc-i2s.c
sound/soc/au1x/sample-ac97.c
sound/soc/blackfin/Kconfig
sound/soc/blackfin/bf5xx-ac97-pcm.c
sound/soc/blackfin/bf5xx-ac97.c
sound/soc/blackfin/bf5xx-ac97.h
sound/soc/blackfin/bf5xx-ad1980.c
sound/soc/blackfin/bf5xx-ad73311.c
sound/soc/blackfin/bf5xx-i2s-pcm.c
sound/soc/blackfin/bf5xx-i2s.c
sound/soc/blackfin/bf5xx-sport.h
sound/soc/blackfin/bf5xx-ssm2602.c
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/codecs/ac97.c
sound/soc/codecs/ad1980.c
sound/soc/codecs/ad73311.c
sound/soc/codecs/ak4535.c
sound/soc/codecs/cs4270.c
sound/soc/codecs/l3.c [new file with mode: 0644]
sound/soc/codecs/pcm3008.c [new file with mode: 0644]
sound/soc/codecs/pcm3008.h [new file with mode: 0644]
sound/soc/codecs/ssm2602.c
sound/soc/codecs/tlv320aic23.c
sound/soc/codecs/tlv320aic26.c
sound/soc/codecs/tlv320aic3x.c
sound/soc/codecs/tlv320aic3x.h
sound/soc/codecs/twl4030.c [new file with mode: 0644]
sound/soc/codecs/twl4030.h [new file with mode: 0644]
sound/soc/codecs/uda134x.c [new file with mode: 0644]
sound/soc/codecs/uda134x.h [new file with mode: 0644]
sound/soc/codecs/uda1380.c
sound/soc/codecs/wm8350.c [new file with mode: 0644]
sound/soc/codecs/wm8350.h [new file with mode: 0644]
sound/soc/codecs/wm8510.c
sound/soc/codecs/wm8580.c
sound/soc/codecs/wm8580.h
sound/soc/codecs/wm8728.c [new file with mode: 0644]
sound/soc/codecs/wm8728.h [new file with mode: 0644]
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8750.c
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8900.c
sound/soc/codecs/wm8900.h
sound/soc/codecs/wm8903.c
sound/soc/codecs/wm8903.h
sound/soc/codecs/wm8971.c
sound/soc/codecs/wm8990.c
sound/soc/codecs/wm8990.h
sound/soc/codecs/wm9712.c
sound/soc/codecs/wm9713.c
sound/soc/davinci/Kconfig
sound/soc/davinci/Makefile
sound/soc/davinci/davinci-evm.c
sound/soc/davinci/davinci-i2s.c
sound/soc/davinci/davinci-pcm.c
sound/soc/davinci/davinci-sffsdr.c [new file with mode: 0644]
sound/soc/fsl/Kconfig
sound/soc/fsl/fsl_dma.c
sound/soc/fsl/fsl_ssi.c
sound/soc/fsl/mpc5200_psc_i2s.c
sound/soc/fsl/mpc8610_hpcd.c
sound/soc/fsl/soc-of-simple.c
sound/soc/omap/Kconfig
sound/soc/omap/Makefile
sound/soc/omap/n810.c
sound/soc/omap/omap-mcbsp.c
sound/soc/omap/omap-pcm.c
sound/soc/omap/omap2evm.c [new file with mode: 0644]
sound/soc/omap/omap3beagle.c [new file with mode: 0644]
sound/soc/omap/omap3pandora.c [new file with mode: 0644]
sound/soc/omap/osk5912.c
sound/soc/omap/overo.c [new file with mode: 0644]
sound/soc/omap/sdp3430.c [new file with mode: 0644]
sound/soc/pxa/Kconfig
sound/soc/pxa/Makefile
sound/soc/pxa/corgi.c
sound/soc/pxa/e800_wm9712.c
sound/soc/pxa/em-x270.c
sound/soc/pxa/palm27x.c [new file with mode: 0644]
sound/soc/pxa/poodle.c
sound/soc/pxa/pxa-ssp.c [new file with mode: 0644]
sound/soc/pxa/pxa-ssp.h [new file with mode: 0644]
sound/soc/pxa/pxa2xx-ac97.c
sound/soc/pxa/pxa2xx-i2s.c
sound/soc/pxa/pxa2xx-pcm.c
sound/soc/pxa/spitz.c
sound/soc/pxa/tosa.c
sound/soc/pxa/zylonite.c [new file with mode: 0644]
sound/soc/s3c24xx/Kconfig
sound/soc/s3c24xx/Makefile
sound/soc/s3c24xx/ln2440sbc_alc650.c
sound/soc/s3c24xx/neo1973_wm8753.c
sound/soc/s3c24xx/s3c2412-i2s.c
sound/soc/s3c24xx/s3c2443-ac97.c
sound/soc/s3c24xx/s3c24xx-i2s.c
sound/soc/s3c24xx/s3c24xx-pcm.c
sound/soc/s3c24xx/s3c24xx_uda134x.c [new file with mode: 0644]
sound/soc/s3c24xx/smdk2443_wm9710.c
sound/soc/sh/dma-sh7760.c
sound/soc/sh/hac.c
sound/soc/sh/sh7760-ac97.c
sound/soc/sh/ssi.c
sound/soc/soc-core.c
sound/soc/soc-dapm.c
sound/sound_core.c
sound/usb/caiaq/caiaq-control.c
sound/usb/caiaq/caiaq-device.c
sound/usb/usbmidi.c
sound/usb/usx2y/usb_stream.c

diff --git a/Documentation/controllers/cpuacct.txt b/Documentation/controllers/cpuacct.txt
new file mode 100644 (file)
index 0000000..bb775fb
--- /dev/null
@@ -0,0 +1,32 @@
+CPU Accounting Controller
+-------------------------
+
+The CPU accounting controller is used to group tasks using cgroups and
+account the CPU usage of these groups of tasks.
+
+The CPU accounting controller supports multi-hierarchy groups. An accounting
+group accumulates the CPU usage of all of its child groups and the tasks
+directly present in its group.
+
+Accounting groups can be created by first mounting the cgroup filesystem.
+
+# mkdir /cgroups
+# mount -t cgroup -ocpuacct none /cgroups
+
+With the above step, the initial or the parent accounting group
+becomes visible at /cgroups. At bootup, this group includes all the
+tasks in the system. /cgroups/tasks lists the tasks in this cgroup.
+/cgroups/cpuacct.usage gives the CPU time (in nanoseconds) obtained by
+this group which is essentially the CPU time obtained by all the tasks
+in the system.
+
+New accounting groups can be created under the parent group /cgroups.
+
+# cd /cgroups
+# mkdir g1
+# echo $$ > g1
+
+The above steps create a new group g1 and move the current shell
+process (bash) into it. CPU time consumed by this bash and its children
+can be obtained from g1/cpuacct.usage and the same is accumulated in
+/cgroups/cpuacct.usage also.
index 4f3f3840320e30eaa0650e9197725b7d6e811b4e..e3443ddcfb890028cc8f1a9576a029c35d200154 100644 (file)
@@ -93,10 +93,8 @@ Several "PowerBook" and "iBook2" notebooks are supported.
 1.5 SuperH
 ----------
 
-The following SuperH processors are supported by cpufreq:
-
-SH-3
-SH-4
+All SuperH processors supporting rate rounding through the clock
+framework are supported by cpufreq.
 
 1.6 Blackfin
 ------------
diff --git a/Documentation/credentials.txt b/Documentation/credentials.txt
new file mode 100644 (file)
index 0000000..df03169
--- /dev/null
@@ -0,0 +1,582 @@
+                            ====================
+                            CREDENTIALS IN LINUX
+                            ====================
+
+By: David Howells <dhowells@redhat.com>
+
+Contents:
+
+ (*) Overview.
+
+ (*) Types of credentials.
+
+ (*) File markings.
+
+ (*) Task credentials.
+
+     - Immutable credentials.
+     - Accessing task credentials.
+     - Accessing another task's credentials.
+     - Altering credentials.
+     - Managing credentials.
+
+ (*) Open file credentials.
+
+ (*) Overriding the VFS's use of credentials.
+
+
+========
+OVERVIEW
+========
+
+There are several parts to the security check performed by Linux when one
+object acts upon another:
+
+ (1) Objects.
+
+     Objects are things in the system that may be acted upon directly by
+     userspace programs.  Linux has a variety of actionable objects, including:
+
+       - Tasks
+       - Files/inodes
+       - Sockets
+       - Message queues
+       - Shared memory segments
+       - Semaphores
+       - Keys
+
+     As a part of the description of all these objects there is a set of
+     credentials.  What's in the set depends on the type of object.
+
+ (2) Object ownership.
+
+     Amongst the credentials of most objects, there will be a subset that
+     indicates the ownership of that object.  This is used for resource
+     accounting and limitation (disk quotas and task rlimits for example).
+
+     In a standard UNIX filesystem, for instance, this will be defined by the
+     UID marked on the inode.
+
+ (3) The objective context.
+
+     Also amongst the credentials of those objects, there will be a subset that
+     indicates the 'objective context' of that object.  This may or may not be
+     the same set as in (2) - in standard UNIX files, for instance, this is the
+     defined by the UID and the GID marked on the inode.
+
+     The objective context is used as part of the security calculation that is
+     carried out when an object is acted upon.
+
+ (4) Subjects.
+
+     A subject is an object that is acting upon another object.
+
+     Most of the objects in the system are inactive: they don't act on other
+     objects within the system.  Processes/tasks are the obvious exception:
+     they do stuff; they access and manipulate things.
+
+     Objects other than tasks may under some circumstances also be subjects.
+     For instance an open file may send SIGIO to a task using the UID and EUID
+     given to it by a task that called fcntl(F_SETOWN) upon it.  In this case,
+     the file struct will have a subjective context too.
+
+ (5) The subjective context.
+
+     A subject has an additional interpretation of its credentials.  A subset
+     of its credentials forms the 'subjective context'.  The subjective context
+     is used as part of the security calculation that is carried out when a
+     subject acts.
+
+     A Linux task, for example, has the FSUID, FSGID and the supplementary
+     group list for when it is acting upon a file - which are quite separate
+     from the real UID and GID that normally form the objective context of the
+     task.
+
+ (6) Actions.
+
+     Linux has a number of actions available that a subject may perform upon an
+     object.  The set of actions available depends on the nature of the subject
+     and the object.
+
+     Actions include reading, writing, creating and deleting files; forking or
+     signalling and tracing tasks.
+
+ (7) Rules, access control lists and security calculations.
+
+     When a subject acts upon an object, a security calculation is made.  This
+     involves taking the subjective context, the objective context and the
+     action, and searching one or more sets of rules to see whether the subject
+     is granted or denied permission to act in the desired manner on the
+     object, given those contexts.
+
+     There are two main sources of rules:
+
+     (a) Discretionary access control (DAC):
+
+        Sometimes the object will include sets of rules as part of its
+        description.  This is an 'Access Control List' or 'ACL'.  A Linux
+        file may supply more than one ACL.
+
+        A traditional UNIX file, for example, includes a permissions mask that
+        is an abbreviated ACL with three fixed classes of subject ('user',
+        'group' and 'other'), each of which may be granted certain privileges
+        ('read', 'write' and 'execute' - whatever those map to for the object
+        in question).  UNIX file permissions do not allow the arbitrary
+        specification of subjects, however, and so are of limited use.
+
+        A Linux file might also sport a POSIX ACL.  This is a list of rules
+        that grants various permissions to arbitrary subjects.
+
+     (b) Mandatory access control (MAC):
+
+        The system as a whole may have one or more sets of rules that get
+        applied to all subjects and objects, regardless of their source.
+        SELinux and Smack are examples of this.
+
+        In the case of SELinux and Smack, each object is given a label as part
+        of its credentials.  When an action is requested, they take the
+        subject label, the object label and the action and look for a rule
+        that says that this action is either granted or denied.
+
+
+====================
+TYPES OF CREDENTIALS
+====================
+
+The Linux kernel supports the following types of credentials:
+
+ (1) Traditional UNIX credentials.
+
+       Real User ID
+       Real Group ID
+
+     The UID and GID are carried by most, if not all, Linux objects, even if in
+     some cases it has to be invented (FAT or CIFS files for example, which are
+     derived from Windows).  These (mostly) define the objective context of
+     that object, with tasks being slightly different in some cases.
+
+       Effective, Saved and FS User ID
+       Effective, Saved and FS Group ID
+       Supplementary groups
+
+     These are additional credentials used by tasks only.  Usually, an
+     EUID/EGID/GROUPS will be used as the subjective context, and real UID/GID
+     will be used as the objective.  For tasks, it should be noted that this is
+     not always true.
+
+ (2) Capabilities.
+
+       Set of permitted capabilities
+       Set of inheritable capabilities
+       Set of effective capabilities
+       Capability bounding set
+
+     These are only carried by tasks.  They indicate superior capabilities
+     granted piecemeal to a task that an ordinary task wouldn't otherwise have.
+     These are manipulated implicitly by changes to the traditional UNIX
+     credentials, but can also be manipulated directly by the capset() system
+     call.
+
+     The permitted capabilities are those caps that the process might grant
+     itself to its effective or permitted sets through capset().  This
+     inheritable set might also be so constrained.
+
+     The effective capabilities are the ones that a task is actually allowed to
+     make use of itself.
+
+     The inheritable capabilities are the ones that may get passed across
+     execve().
+
+     The bounding set limits the capabilities that may be inherited across
+     execve(), especially when a binary is executed that will execute as UID 0.
+
+ (3) Secure management flags (securebits).
+
+     These are only carried by tasks.  These govern the way the above
+     credentials are manipulated and inherited over certain operations such as
+     execve().  They aren't used directly as objective or subjective
+     credentials.
+
+ (4) Keys and keyrings.
+
+     These are only carried by tasks.  They carry and cache security tokens
+     that don't fit into the other standard UNIX credentials.  They are for
+     making such things as network filesystem keys available to the file
+     accesses performed by processes, without the necessity of ordinary
+     programs having to know about security details involved.
+
+     Keyrings are a special type of key.  They carry sets of other keys and can
+     be searched for the desired key.  Each process may subscribe to a number
+     of keyrings:
+
+       Per-thread keying
+       Per-process keyring
+       Per-session keyring
+
+     When a process accesses a key, if not already present, it will normally be
+     cached on one of these keyrings for future accesses to find.
+
+     For more information on using keys, see Documentation/keys.txt.
+
+ (5) LSM
+
+     The Linux Security Module allows extra controls to be placed over the
+     operations that a task may do.  Currently Linux supports two main
+     alternate LSM options: SELinux and Smack.
+
+     Both work by labelling the objects in a system and then applying sets of
+     rules (policies) that say what operations a task with one label may do to
+     an object with another label.
+
+ (6) AF_KEY
+
+     This is a socket-based approach to credential management for networking
+     stacks [RFC 2367].  It isn't discussed by this document as it doesn't
+     interact directly with task and file credentials; rather it keeps system
+     level credentials.
+
+
+When a file is opened, part of the opening task's subjective context is
+recorded in the file struct created.  This allows operations using that file
+struct to use those credentials instead of the subjective context of the task
+that issued the operation.  An example of this would be a file opened on a
+network filesystem where the credentials of the opened file should be presented
+to the server, regardless of who is actually doing a read or a write upon it.
+
+
+=============
+FILE MARKINGS
+=============
+
+Files on disk or obtained over the network may have annotations that form the
+objective security context of that file.  Depending on the type of filesystem,
+this may include one or more of the following:
+
+ (*) UNIX UID, GID, mode;
+
+ (*) Windows user ID;
+
+ (*) Access control list;
+
+ (*) LSM security label;
+
+ (*) UNIX exec privilege escalation bits (SUID/SGID);
+
+ (*) File capabilities exec privilege escalation bits.
+
+These are compared to the task's subjective security context, and certain
+operations allowed or disallowed as a result.  In the case of execve(), the
+privilege escalation bits come into play, and may allow the resulting process
+extra privileges, based on the annotations on the executable file.
+
+
+================
+TASK CREDENTIALS
+================
+
+In Linux, all of a task's credentials are held in (uid, gid) or through
+(groups, keys, LSM security) a refcounted structure of type 'struct cred'.
+Each task points to its credentials by a pointer called 'cred' in its
+task_struct.
+
+Once a set of credentials has been prepared and committed, it may not be
+changed, barring the following exceptions:
+
+ (1) its reference count may be changed;
+
+ (2) the reference count on the group_info struct it points to may be changed;
+
+ (3) the reference count on the security data it points to may be changed;
+
+ (4) the reference count on any keyrings it points to may be changed;
+
+ (5) any keyrings it points to may be revoked, expired or have their security
+     attributes changed; and
+
+ (6) the contents of any keyrings to which it points may be changed (the whole
+     point of keyrings being a shared set of credentials, modifiable by anyone
+     with appropriate access).
+
+To alter anything in the cred struct, the copy-and-replace principle must be
+adhered to.  First take a copy, then alter the copy and then use RCU to change
+the task pointer to make it point to the new copy.  There are wrappers to aid
+with this (see below).
+
+A task may only alter its _own_ credentials; it is no longer permitted for a
+task to alter another's credentials.  This means the capset() system call is no
+longer permitted to take any PID other than the one of the current process.
+Also keyctl_instantiate() and keyctl_negate() functions no longer permit
+attachment to process-specific keyrings in the requesting process as the
+instantiating process may need to create them.
+
+
+IMMUTABLE CREDENTIALS
+---------------------
+
+Once a set of credentials has been made public (by calling commit_creds() for
+example), it must be considered immutable, barring two exceptions:
+
+ (1) The reference count may be altered.
+
+ (2) Whilst the keyring subscriptions of a set of credentials may not be
+     changed, the keyrings subscribed to may have their contents altered.
+
+To catch accidental credential alteration at compile time, struct task_struct
+has _const_ pointers to its credential sets, as does struct file.  Furthermore,
+certain functions such as get_cred() and put_cred() operate on const pointers,
+thus rendering casts unnecessary, but require to temporarily ditch the const
+qualification to be able to alter the reference count.
+
+
+ACCESSING TASK CREDENTIALS
+--------------------------
+
+A task being able to alter only its own credentials permits the current process
+to read or replace its own credentials without the need for any form of locking
+- which simplifies things greatly.  It can just call:
+
+       const struct cred *current_cred()
+
+to get a pointer to its credentials structure, and it doesn't have to release
+it afterwards.
+
+There are convenience wrappers for retrieving specific aspects of a task's
+credentials (the value is simply returned in each case):
+
+       uid_t current_uid(void)         Current's real UID
+       gid_t current_gid(void)         Current's real GID
+       uid_t current_euid(void)        Current's effective UID
+       gid_t current_egid(void)        Current's effective GID
+       uid_t current_fsuid(void)       Current's file access UID
+       gid_t current_fsgid(void)       Current's file access GID
+       kernel_cap_t current_cap(void)  Current's effective capabilities
+       void *current_security(void)    Current's LSM security pointer
+       struct user_struct *current_user(void)  Current's user account
+
+There are also convenience wrappers for retrieving specific associated pairs of
+a task's credentials:
+
+       void current_uid_gid(uid_t *, gid_t *);
+       void current_euid_egid(uid_t *, gid_t *);
+       void current_fsuid_fsgid(uid_t *, gid_t *);
+
+which return these pairs of values through their arguments after retrieving
+them from the current task's credentials.
+
+
+In addition, there is a function for obtaining a reference on the current
+process's current set of credentials:
+
+       const struct cred *get_current_cred(void);
+
+and functions for getting references to one of the credentials that don't
+actually live in struct cred:
+
+       struct user_struct *get_current_user(void);
+       struct group_info *get_current_groups(void);
+
+which get references to the current process's user accounting structure and
+supplementary groups list respectively.
+
+Once a reference has been obtained, it must be released with put_cred(),
+free_uid() or put_group_info() as appropriate.
+
+
+ACCESSING ANOTHER TASK'S CREDENTIALS
+------------------------------------
+
+Whilst a task may access its own credentials without the need for locking, the
+same is not true of a task wanting to access another task's credentials.  It
+must use the RCU read lock and rcu_dereference().
+
+The rcu_dereference() is wrapped by:
+
+       const struct cred *__task_cred(struct task_struct *task);
+
+This should be used inside the RCU read lock, as in the following example:
+
+       void foo(struct task_struct *t, struct foo_data *f)
+       {
+               const struct cred *tcred;
+               ...
+               rcu_read_lock();
+               tcred = __task_cred(t);
+               f->uid = tcred->uid;
+               f->gid = tcred->gid;
+               f->groups = get_group_info(tcred->groups);
+               rcu_read_unlock();
+               ...
+       }
+
+A function need not get RCU read lock to use __task_cred() if it is holding a
+spinlock at the time as this implicitly holds the RCU read lock.
+
+Should it be necessary to hold another task's credentials for a long period of
+time, and possibly to sleep whilst doing so, then the caller should get a
+reference on them using:
+
+       const struct cred *get_task_cred(struct task_struct *task);
+
+This does all the RCU magic inside of it.  The caller must call put_cred() on
+the credentials so obtained when they're finished with.
+
+There are a couple of convenience functions to access bits of another task's
+credentials, hiding the RCU magic from the caller:
+
+       uid_t task_uid(task)            Task's real UID
+       uid_t task_euid(task)           Task's effective UID
+
+If the caller is holding a spinlock or the RCU read lock at the time anyway,
+then:
+
+       __task_cred(task)->uid
+       __task_cred(task)->euid
+
+should be used instead.  Similarly, if multiple aspects of a task's credentials
+need to be accessed, RCU read lock or a spinlock should be used, __task_cred()
+called, the result stored in a temporary pointer and then the credential
+aspects called from that before dropping the lock.  This prevents the
+potentially expensive RCU magic from being invoked multiple times.
+
+Should some other single aspect of another task's credentials need to be
+accessed, then this can be used:
+
+       task_cred_xxx(task, member)
+
+where 'member' is a non-pointer member of the cred struct.  For instance:
+
+       uid_t task_cred_xxx(task, suid);
+
+will retrieve 'struct cred::suid' from the task, doing the appropriate RCU
+magic.  This may not be used for pointer members as what they point to may
+disappear the moment the RCU read lock is dropped.
+
+
+ALTERING CREDENTIALS
+--------------------
+
+As previously mentioned, a task may only alter its own credentials, and may not
+alter those of another task.  This means that it doesn't need to use any
+locking to alter its own credentials.
+
+To alter the current process's credentials, a function should first prepare a
+new set of credentials by calling:
+
+       struct cred *prepare_creds(void);
+
+this locks current->cred_replace_mutex and then allocates and constructs a
+duplicate of the current process's credentials, returning with the mutex still
+held if successful.  It returns NULL if not successful (out of memory).
+
+The mutex prevents ptrace() from altering the ptrace state of a process whilst
+security checks on credentials construction and changing is taking place as
+the ptrace state may alter the outcome, particularly in the case of execve().
+
+The new credentials set should be altered appropriately, and any security
+checks and hooks done.  Both the current and the proposed sets of credentials
+are available for this purpose as current_cred() will return the current set
+still at this point.
+
+
+When the credential set is ready, it should be committed to the current process
+by calling:
+
+       int commit_creds(struct cred *new);
+
+This will alter various aspects of the credentials and the process, giving the
+LSM a chance to do likewise, then it will use rcu_assign_pointer() to actually
+commit the new credentials to current->cred, it will release
+current->cred_replace_mutex to allow ptrace() to take place, and it will notify
+the scheduler and others of the changes.
+
+This function is guaranteed to return 0, so that it can be tail-called at the
+end of such functions as sys_setresuid().
+
+Note that this function consumes the caller's reference to the new credentials.
+The caller should _not_ call put_cred() on the new credentials afterwards.
+
+Furthermore, once this function has been called on a new set of credentials,
+those credentials may _not_ be changed further.
+
+
+Should the security checks fail or some other error occur after prepare_creds()
+has been called, then the following function should be invoked:
+
+       void abort_creds(struct cred *new);
+
+This releases the lock on current->cred_replace_mutex that prepare_creds() got
+and then releases the new credentials.
+
+
+A typical credentials alteration function would look something like this:
+
+       int alter_suid(uid_t suid)
+       {
+               struct cred *new;
+               int ret;
+
+               new = prepare_creds();
+               if (!new)
+                       return -ENOMEM;
+
+               new->suid = suid;
+               ret = security_alter_suid(new);
+               if (ret < 0) {
+                       abort_creds(new);
+                       return ret;
+               }
+
+               return commit_creds(new);
+       }
+
+
+MANAGING CREDENTIALS
+--------------------
+
+There are some functions to help manage credentials:
+
+ (*) void put_cred(const struct cred *cred);
+
+     This releases a reference to the given set of credentials.  If the
+     reference count reaches zero, the credentials will be scheduled for
+     destruction by the RCU system.
+
+ (*) const struct cred *get_cred(const struct cred *cred);
+
+     This gets a reference on a live set of credentials, returning a pointer to
+     that set of credentials.
+
+ (*) struct cred *get_new_cred(struct cred *cred);
+
+     This gets a reference on a set of credentials that is under construction
+     and is thus still mutable, returning a pointer to that set of credentials.
+
+
+=====================
+OPEN FILE CREDENTIALS
+=====================
+
+When a new file is opened, a reference is obtained on the opening task's
+credentials and this is attached to the file struct as 'f_cred' in place of
+'f_uid' and 'f_gid'.  Code that used to access file->f_uid and file->f_gid
+should now access file->f_cred->fsuid and file->f_cred->fsgid.
+
+It is safe to access f_cred without the use of RCU or locking because the
+pointer will not change over the lifetime of the file struct, and nor will the
+contents of the cred struct pointed to, barring the exceptions listed above
+(see the Task Credentials section).
+
+
+=======================================
+OVERRIDING THE VFS'S USE OF CREDENTIALS
+=======================================
+
+Under some circumstances it is desirable to override the credentials used by
+the VFS, and that can be done by calling into such as vfs_mkdir() with a
+different set of credentials.  This is done in the following places:
+
+ (*) sys_faccessat().
+
+ (*) do_coredump().
+
+ (*) nfs4recover.c.
index c28a2ac88f9d9ed1457ab0c04324e3cf20fe986f..1a8af7354e799843721c3fb7ac40ab2df9352671 100644 (file)
@@ -244,18 +244,6 @@ Who:       Michael Buesch <mb@bu3sch.de>
 
 ---------------------------
 
-What:  init_mm export
-When:  2.6.26
-Why:   Not used in-tree. The current out-of-tree users used it to
-       work around problems in the CPA code which should be resolved
-       by now. One usecase was described to provide verification code
-       of the CPA operation. That's a good idea in general, but such
-       code / infrastructure should be in the kernel and not in some
-       out-of-tree driver.
-Who:   Thomas Gleixner <tglx@linutronix.de>
-
-----------------------------
-
 What:  usedac i386 kernel parameter
 When:  2.6.27
 Why:   replaced by allowdac and no dac combination
index bb1b0dd3bfcbcc919bea2fbdf706607608f915c5..71df353e367c9e8c3f2833fe7114c875a6d49d3b 100644 (file)
@@ -1339,10 +1339,13 @@ nmi_watchdog
 
 Enables/Disables the NMI watchdog on x86 systems.  When the value is non-zero
 the NMI watchdog is enabled and will continuously test all online cpus to
-determine whether or not they are still functioning properly.
+determine whether or not they are still functioning properly. Currently,
+passing "nmi_watchdog=" parameter at boot time is required for this function
+to work.
 
-Because the NMI watchdog shares registers with oprofile, by disabling the NMI
-watchdog, oprofile may have more registers to utilize.
+If LAPIC NMI watchdog method is in use (nmi_watchdog=2 kernel parameter), the
+NMI watchdog shares registers with oprofile. By disabling the NMI watchdog,
+oprofile may have more registers to utilize.
 
 msgmni
 ------
index 9cc4d685dde583464cbfbd9c7448358c2de90ef3..803b1318b13da11242a3558123d28293d3ee4378 100644 (file)
@@ -82,7 +82,7 @@ of ftrace. Here is a list of some of the key files:
                tracer is not adding more data, they will display
                the same information every time they are read.
 
-  iter_ctrl: This file lets the user control the amount of data
+  trace_options: This file lets the user control the amount of data
                that is displayed in one of the above output
                files.
 
@@ -94,10 +94,10 @@ of ftrace. Here is a list of some of the key files:
                only be recorded if the latency is greater than
                the value in this file. (in microseconds)
 
-  trace_entries: This sets or displays the number of bytes each CPU
+  buffer_size_kb: This sets or displays the number of kilobytes each CPU
                buffer can hold. The tracer buffers are the same size
                for each CPU. The displayed number is the size of the
-                CPU buffer and not total size of all buffers. The
+               CPU buffer and not total size of all buffers. The
                trace buffers are allocated in pages (blocks of memory
                that the kernel uses for allocation, usually 4 KB in size).
                If the last page allocated has room for more bytes
@@ -127,6 +127,8 @@ of ftrace. Here is a list of some of the key files:
                be traced. If a function exists in both set_ftrace_filter
                and set_ftrace_notrace, the function will _not_ be traced.
 
+  set_ftrace_pid: Have the function tracer only trace a single thread.
+
   available_filter_functions: This lists the functions that ftrace
                has processed and can trace. These are the function
                names that you can pass to "set_ftrace_filter" or
@@ -316,23 +318,23 @@ The above is mostly meaningful for kernel developers.
   The rest is the same as the 'trace' file.
 
 
-iter_ctrl
----------
+trace_options
+-------------
 
-The iter_ctrl file is used to control what gets printed in the trace
+The trace_options file is used to control what gets printed in the trace
 output. To see what is available, simply cat the file:
 
-  cat /debug/tracing/iter_ctrl
+  cat /debug/tracing/trace_options
   print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \
- noblock nostacktrace nosched-tree
+ noblock nostacktrace nosched-tree nouserstacktrace nosym-userobj
 
 To disable one of the options, echo in the option prepended with "no".
 
-  echo noprint-parent > /debug/tracing/iter_ctrl
+  echo noprint-parent > /debug/tracing/trace_options
 
 To enable an option, leave off the "no".
 
-  echo sym-offset > /debug/tracing/iter_ctrl
+  echo sym-offset > /debug/tracing/trace_options
 
 Here are the available options:
 
@@ -378,6 +380,20 @@ Here are the available options:
                When a trace is recorded, so is the stack of functions.
                This allows for back traces of trace sites.
 
+  userstacktrace - This option changes the trace.
+                  It records a stacktrace of the current userspace thread.
+
+  sym-userobj - when user stacktrace are enabled, look up which object the
+               address belongs to, and print a relative address
+               This is especially useful when ASLR is on, otherwise you don't
+               get a chance to resolve the address to object/file/line after the app is no
+               longer running
+
+               The lookup is performed when you read trace,trace_pipe,latency_trace. Example:
+
+               a.out-1623  [000] 40874.465068: /root/a.out[+0x480] <-/root/a.out[+0
+x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
+
   sched-tree - TBD (any users??)
 
 
@@ -1059,6 +1075,83 @@ For simple one time traces, the above is sufficent. For anything else,
 a search through /proc/mounts may be needed to find where the debugfs
 file-system is mounted.
 
+
+Single thread tracing
+---------------------
+
+By writing into /debug/tracing/set_ftrace_pid you can trace a
+single thread. For example:
+
+# cat /debug/tracing/set_ftrace_pid
+no pid
+# echo 3111 > /debug/tracing/set_ftrace_pid
+# cat /debug/tracing/set_ftrace_pid
+3111
+# echo function > /debug/tracing/current_tracer
+# cat /debug/tracing/trace | head
+ # tracer: function
+ #
+ #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
+ #              | |       |          |         |
+     yum-updatesd-3111  [003]  1637.254676: finish_task_switch <-thread_return
+     yum-updatesd-3111  [003]  1637.254681: hrtimer_cancel <-schedule_hrtimeout_range
+     yum-updatesd-3111  [003]  1637.254682: hrtimer_try_to_cancel <-hrtimer_cancel
+     yum-updatesd-3111  [003]  1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel
+     yum-updatesd-3111  [003]  1637.254685: fget_light <-do_sys_poll
+     yum-updatesd-3111  [003]  1637.254686: pipe_poll <-do_sys_poll
+# echo -1 > /debug/tracing/set_ftrace_pid
+# cat /debug/tracing/trace |head
+ # tracer: function
+ #
+ #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
+ #              | |       |          |         |
+ ##### CPU 3 buffer started ####
+     yum-updatesd-3111  [003]  1701.957688: free_poll_entry <-poll_freewait
+     yum-updatesd-3111  [003]  1701.957689: remove_wait_queue <-free_poll_entry
+     yum-updatesd-3111  [003]  1701.957691: fput <-free_poll_entry
+     yum-updatesd-3111  [003]  1701.957692: audit_syscall_exit <-sysret_audit
+     yum-updatesd-3111  [003]  1701.957693: path_put <-audit_syscall_exit
+
+If you want to trace a function when executing, you could use
+something like this simple program:
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int main (int argc, char **argv)
+{
+        if (argc < 1)
+                exit(-1);
+
+        if (fork() > 0) {
+                int fd, ffd;
+                char line[64];
+                int s;
+
+                ffd = open("/debug/tracing/current_tracer", O_WRONLY);
+                if (ffd < 0)
+                        exit(-1);
+                write(ffd, "nop", 3);
+
+                fd = open("/debug/tracing/set_ftrace_pid", O_WRONLY);
+                s = sprintf(line, "%d\n", getpid());
+                write(fd, line, s);
+
+                write(ffd, "function", 8);
+
+                close(fd);
+                close(ffd);
+
+                execvp(argv[1], argv+1);
+        }
+
+        return 0;
+}
+
 dynamic ftrace
 --------------
 
@@ -1158,7 +1251,11 @@ These are the only wild cards which are supported.
 
   <match>*<match> will not work.
 
- # echo hrtimer_* > /debug/tracing/set_ftrace_filter
+Note: It is better to use quotes to enclose the wild cards, otherwise
+  the shell may expand the parameters into names of files in the local
+  directory.
+
+ # echo 'hrtimer_*' > /debug/tracing/set_ftrace_filter
 
 Produces:
 
@@ -1213,7 +1310,7 @@ Again, now we want to append.
  # echo sys_nanosleep > /debug/tracing/set_ftrace_filter
  # cat /debug/tracing/set_ftrace_filter
 sys_nanosleep
- # echo hrtimer_* >> /debug/tracing/set_ftrace_filter
+ # echo 'hrtimer_*' >> /debug/tracing/set_ftrace_filter
  # cat /debug/tracing/set_ftrace_filter
 hrtimer_run_queues
 hrtimer_run_pending
@@ -1299,41 +1396,29 @@ trace entries
 -------------
 
 Having too much or not enough data can be troublesome in diagnosing
-an issue in the kernel. The file trace_entries is used to modify
+an issue in the kernel. The file buffer_size_kb is used to modify
 the size of the internal trace buffers. The number listed
 is the number of entries that can be recorded per CPU. To know
 the full size, multiply the number of possible CPUS with the
 number of entries.
 
- # cat /debug/tracing/trace_entries
-65620
+ # cat /debug/tracing/buffer_size_kb
+1408 (units kilobytes)
 
 Note, to modify this, you must have tracing completely disabled. To do that,
 echo "nop" into the current_tracer. If the current_tracer is not set
 to "nop", an EINVAL error will be returned.
 
  # echo nop > /debug/tracing/current_tracer
- # echo 100000 > /debug/tracing/trace_entries
- # cat /debug/tracing/trace_entries
-100045
-
-
-Notice that we echoed in 100,000 but the size is 100,045. The entries
-are held in individual pages. It allocates the number of pages it takes
-to fulfill the request. If more entries may fit on the last page
-then they will be added.
-
- # echo 1 > /debug/tracing/trace_entries
- # cat /debug/tracing/trace_entries
-85
-
-This shows us that 85 entries can fit in a single page.
+ # echo 10000 > /debug/tracing/buffer_size_kb
+ # cat /debug/tracing/buffer_size_kb
+10000 (units kilobytes)
 
 The number of pages which will be allocated is limited to a percentage
 of available memory. Allocating too much will produce an error.
 
- # echo 1000000000000 > /debug/tracing/trace_entries
+ # echo 1000000000000 > /debug/tracing/buffer_size_kb
 -bash: echo: write error: Cannot allocate memory
- # cat /debug/tracing/trace_entries
+ # cat /debug/tracing/buffer_size_kb
 85
 
index 12f0fb6faaf62207698b9c65eebdabb840b1f20a..a2d8805c03d5588f317a9677add758c94051e6a6 100644 (file)
@@ -89,6 +89,7 @@ parameter is applicable:
        SPARC   Sparc architecture is enabled.
        SWSUSP  Software suspend (hibernation) is enabled.
        SUSPEND System suspend states are enabled.
+       FTRACE  Function tracing enabled.
        TS      Appropriate touchscreen support is enabled.
        USB     USB support is enabled.
        USBHID  USB Human Interface Device support is enabled.
@@ -753,6 +754,14 @@ and is between 256 and 4096 characters. It is defined in the file
                        parameter will force ia64_sal_cache_flush to call
                        ia64_pal_cache_flush instead of SAL_CACHE_FLUSH.
 
+       ftrace=[tracer]
+                       [ftrace] will set and start the specified tracer
+                       as early as possible in order to facilitate early
+                       boot debugging.
+
+       ftrace_dump_on_oops
+                       [ftrace] will dump the trace buffers on oops.
+
        gamecon.map[2|3]=
                        [HW,JOY] Multisystem joystick and NES/SNES/PSX pad
                        support via parallel port (up to 5 devices per port)
@@ -1399,7 +1408,20 @@ and is between 256 and 4096 characters. It is defined in the file
                        when a NMI is triggered.
                        Format: [state][,regs][,debounce][,die]
 
-       nmi_watchdog=   [KNL,BUGS=X86-32] Debugging features for SMP kernels
+       nmi_watchdog=   [KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels
+                       Format: [panic,][num]
+                       Valid num: 0,1,2
+                       0 - turn nmi_watchdog off
+                       1 - use the IO-APIC timer for the NMI watchdog
+                       2 - use the local APIC for the NMI watchdog using
+                       a performance counter. Note: This will use one performance
+                       counter and the local APIC's performance vector.
+                       When panic is specified panic when an NMI watchdog timeout occurs.
+                       This is useful when you use a panic=... timeout and need the box
+                       quickly up again.
+                       Instead of 1 and 2 it is possible to use the following
+                       symbolic names: lapic and ioapic
+                       Example: nmi_watchdog=2 or nmi_watchdog=panic,lapic
 
        no387           [BUGS=X86-32] Tells the kernel to use the 387 maths
                        emulation library even if a 387 maths coprocessor
@@ -1455,6 +1477,10 @@ and is between 256 and 4096 characters. It is defined in the file
                        instruction doesn't work correctly and not to
                        use it.
 
+       no_file_caps    Tells the kernel not to honor file capabilities.  The
+                       only way then for a file to be executed with privilege
+                       is to be setuid root or executed by root.
+
        nohalt          [IA-64] Tells the kernel not to use the power saving
                        function PAL_HALT_LIGHT when idle. This increases
                        power-consumption. On the positive side, it reduces
@@ -1632,6 +1658,17 @@ and is between 256 and 4096 characters. It is defined in the file
                nomsi           [MSI] If the PCI_MSI kernel config parameter is
                                enabled, this kernel boot option can be used to
                                disable the use of MSI interrupts system-wide.
+               noioapicquirk   [APIC] Disable all boot interrupt quirks.
+                               Safety option to keep boot IRQs enabled. This
+                               should never be necessary.
+               ioapicreroute   [APIC] Enable rerouting of boot IRQs to the
+                               primary IO-APIC for bridges that cannot disable
+                               boot IRQs. This fixes a source of spurious IRQs
+                               when the system masks IRQs.
+               noioapicreroute [APIC] Disable workaround that uses the
+                               boot IRQ equivalent of an IRQ that connects to
+                               a chipset where boot IRQs cannot be disabled.
+                               The opposite of ioapicreroute.
                biosirq         [X86-32] Use PCI BIOS calls to get the interrupt
                                routing table. These calls are known to be buggy
                                on several machines and they hang the machine
@@ -2171,6 +2208,9 @@ and is between 256 and 4096 characters. It is defined in the file
        st=             [HW,SCSI] SCSI tape parameters (buffers, etc.)
                        See Documentation/scsi/st.txt.
 
+       stacktrace      [FTRACE]
+                       Enabled the stack tracer on boot up.
+
        sti=            [PARISC,HW]
                        Format: <num>
                        Set the STI (builtin display/keyboard on the HP-PARISC
@@ -2269,6 +2309,13 @@ and is between 256 and 4096 characters. It is defined in the file
                        Format:
                        <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
 
+       tsc=            Disable clocksource-must-verify flag for TSC.
+                       Format: <string>
+                       [x86] reliable: mark tsc clocksource as reliable, this
+                       disables clocksource verification at runtime.
+                       Used to enable high-resolution timer mode on older
+                       hardware, and in virtualized environment.
+
        turbografx.map[2|3]=    [HW,JOY]
                        TurboGraFX parallel port interface
                        Format:
index 089f6138fcd94249a6444ca3a932a50c263098e1..d2b3d0e91b26d21423d8202668ac8d512558e7dd 100644 (file)
@@ -51,11 +51,16 @@ to call) for the specific marker through marker_probe_register() and can be
 activated by calling marker_arm(). Marker deactivation can be done by calling
 marker_disarm() as many times as marker_arm() has been called. Removing a probe
 is done through marker_probe_unregister(); it will disarm the probe.
-marker_synchronize_unregister() must be called before the end of the module exit
-function to make sure there is no caller left using the probe. This, and the
-fact that preemption is disabled around the probe call, make sure that probe
-removal and module unload are safe. See the "Probe example" section below for a
-sample probe module.
+
+marker_synchronize_unregister() must be called between probe unregistration and
+the first occurrence of
+- the end of module exit function,
+  to make sure there is no caller left using the probe;
+- the free of any resource used by the probes,
+  to make sure the probes wont be accessing invalid data.
+This, and the fact that preemption is disabled around the probe call, make sure
+that probe removal and module unload are safe. See the "Probe example" section
+below for a sample probe module.
 
 The marker mechanism supports inserting multiple instances of the same marker.
 Markers can be put in inline functions, inlined static functions, and
@@ -70,6 +75,20 @@ a printk warning which identifies the inconsistency:
 
 "Format mismatch for probe probe_name (format), marker (format)"
 
+Another way to use markers is to simply define the marker without generating any
+function call to actually call into the marker. This is useful in combination
+with tracepoint probes in a scheme like this :
+
+void probe_tracepoint_name(unsigned int arg1, struct task_struct *tsk);
+
+DEFINE_MARKER_TP(marker_eventname, tracepoint_name, probe_tracepoint_name,
+       "arg1 %u pid %d");
+
+notrace void probe_tracepoint_name(unsigned int arg1, struct task_struct *tsk)
+{
+       struct marker *marker = &GET_MARKER(kernel_irq_entry);
+       /* write data to trace buffers ... */
+}
 
 * Probe / marker example
 
index 90aa4531cb67343b03b396610aa0db77c1d1e0ba..bf9f80a982829ae06062e9cc118762335936ad4a 100644 (file)
@@ -69,6 +69,11 @@ to the overall system performance.
 On x86 nmi_watchdog is disabled by default so you have to enable it with
 a boot time parameter.
 
+It's possible to disable the NMI watchdog in run-time by writing "0" to
+/proc/sys/kernel/nmi_watchdog. Writing "1" to the same file will re-enable
+the NMI watchdog. Notice that you still need to use "nmi_watchdog=" parameter
+at boot time.
+
 NOTE: In kernels prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally
 on x86 SMP boxes.
 
index 941615a9769b91ea0cee31723023c600645db67d..d43dbcbd163b4d45e3479614149c780b5e12778f 100644 (file)
@@ -8,7 +8,7 @@ Context switch
 By default, the switch_to arch function is called with the runqueue
 locked. This is usually not a problem unless switch_to may need to
 take the runqueue lock. This is usually due to a wake up operation in
-the context switch. See include/asm-ia64/system.h for an example.
+the context switch. See arch/ia64/include/asm/system.h for an example.
 
 To request the scheduler call switch_to with the runqueue unlocked,
 you must `#define __ARCH_WANT_UNLOCKED_CTXSW` in a header file
@@ -23,7 +23,7 @@ disabled. Interrupts may be enabled over the call if it is likely to
 introduce a significant interrupt latency by adding the line
 `#define __ARCH_WANT_INTERRUPTS_ON_CTXSW` in the same place as for
 unlocked context switches. This define also implies
-`__ARCH_WANT_UNLOCKED_CTXSW`. See include/asm-arm/system.h for an
+`__ARCH_WANT_UNLOCKED_CTXSW`. See arch/arm/include/asm/system.h for an
 example.
 
 
index eb471c7a905eda60bc83cbf9eeb03e807356606b..8398ca4ff4ede1e4671f334bdb417e4787593aec 100644 (file)
@@ -273,3 +273,24 @@ task groups and modify their CPU share using the "cgroups" pseudo filesystem.
 
        # #Launch gmplayer (or your favourite movie player)
        # echo <movie_player_pid> > multimedia/tasks
+
+8. Implementation note: user namespaces
+
+User namespaces are intended to be hierarchical.  But they are currently
+only partially implemented.  Each of those has ramifications for CFS.
+
+First, since user namespaces are hierarchical, the /sys/kernel/uids
+presentation is inadequate.  Eventually we will likely want to use sysfs
+tagging to provide private views of /sys/kernel/uids within each user
+namespace.
+
+Second, the hierarchical nature is intended to support completely
+unprivileged use of user namespaces.  So if using user groups, then
+we want the users in a user namespace to be children of the user
+who created it.
+
+That is currently unimplemented.  So instead, every user in a new
+user namespace will receive 1024 shares just like any user in the
+initial user namespace.  Note that at the moment creation of a new
+user namespace requires each of CAP_SYS_ADMIN, CAP_SETUID, and
+CAP_SETGID.
diff --git a/Documentation/sh/kgdb.txt b/Documentation/sh/kgdb.txt
deleted file mode 100644 (file)
index 05b4ba8..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-
-This file describes the configuration and behavior of KGDB for the SH
-kernel. Based on a description from Henry Bell <henry.bell@st.com>, it
-has been modified to account for quirks in the current implementation.
-
-Version
-=======
-
-This version of KGDB was written for 2.4.xx kernels for the SH architecture.
-Further documentation is available from the linux-sh project website.
-
-
-Debugging Setup: Host
-======================
-
-The two machines will be connected together via a serial line - this
-should be a null modem cable i.e. with a twist.
-
-On your DEVELOPMENT machine, go to your kernel source directory and
-build the kernel, enabling KGDB support in the "kernel hacking" section.
-This includes the KGDB code, and also makes the kernel be compiled with
-the "-g" option set -- necessary for debugging.
-
-To install this new kernel, use the following installation procedure.
-
-Decide on which tty port you want the machines to communicate, then
-cable them up back-to-back using the null modem.  On the DEVELOPMENT
-machine, you may wish to create an initialization file called .gdbinit
-(in the kernel source directory or in your home directory) to execute 
-commonly-used commands at startup.
-
-A minimal .gdbinit might look like this:
-
-  file vmlinux
-  set remotebaud 115200
-  target remote /dev/ttyS0
-
-Change the "target" definition so that it specifies the tty port that
-you intend to use.  Change the "remotebaud" definition to match the
-data rate that you are going to use for the com line (115200 is the
-default). 
-
-Debugging Setup: Target
-========================
-
-By default, the KGDB stub will communicate with the host GDB using
-ttySC1 at 115200 baud, 8 databits, no parity; these defaults can be
-changed in the kernel configuration. As the kernel starts up, KGDB will
-initialize so that breakpoints, kernel segfaults, and so forth will
-generally enter the debugger.
-
-This behavior can be modified by including the "kgdb" option in the
-kernel command line; this option has the general form:
-
-  kgdb=<ttyspec>,<action>
-
-The <ttyspec> indicates the port to use, and can optionally specify
-baud, parity and databits -- e.g. "ttySC0,9600N8" or "ttySC1,19200".
-
-The <action> can be "halt" or "disabled".  The "halt" action enters the
-debugger via a breakpoint as soon as kgdb is initialized; the "disabled"
-action causes kgdb to ignore kernel segfaults and such until explicitly
-entered by a breakpoint in the code or by external action (sysrq or NMI). 
-
-(Both <ttyspec> and <action> can appear alone, w/o the separating comma.)
-
-For example, if you wish to debug early in kernel startup code, you
-might specify the halt option:
-
-  kgdb=halt
-
-Boot the TARGET machine, which will appear to hang. 
-
-On your DEVELOPMENT machine, cd to the source directory and run the gdb
-program.  (This is likely to be a cross GDB which runs on your host but
-is built for an SH target.) If everything is working correctly you
-should see gdb print out a few lines indicating that a breakpoint has
-been taken.  It will actually show a line of code in the target kernel
-inside the gdbstub activation code.
-
-NOTE: BE SURE TO TERMINATE OR SUSPEND any other host application which
-may be using the same serial port (for example, a terminal emulator you
-have been using to connect to the target boot code.)  Otherwise, data
-from the target may not all get to GDB!
-
-You can now use whatever gdb commands you like to set breakpoints.
-Enter "continue" to start your target machine executing again.  At this
-point the target system will run at full speed until it encounters
-your breakpoint or gets a segment violation in the kernel, or whatever.
-
-Serial Ports: KGDB, Console
-============================
-
-This version of KGDB may not gracefully handle conflict with other
-drivers in the kernel using the same port. If KGDB is configured on the
-same port (and with the same parameters) as the kernel console, or if
-CONFIG_SH_KGDB_CONSOLE is configured, things should be fine (though in
-some cases console messages may appear twice through GDB).  But if the
-KGDB port is not the kernel console and used by another serial driver
-which assumes different serial parameters (e.g. baud rate) KGDB may not
-recover.
-
-Also, when KGDB is entered via sysrq-g (requires CONFIG_KGDB_SYSRQ) and
-the kgdb port uses the same port as the console, detaching GDB will not
-restore the console to working order without the port being re-opened.
-
-Another serious consequence of this is that GDB currently CANNOT break
-into KGDB externally (e.g. via ^C or <BREAK>); unless a breakpoint or
-error is encountered, the only way to enter KGDB after the initial halt
-(see above) is via NMI (CONFIG_KGDB_NMI) or sysrq-g (CONFIG_KGDB_SYSRQ).
-
-Code is included for the basic Hitachi Solution Engine boards to allow
-the use of ttyS0 for KGDB if desired; this is less robust, but may be
-useful in some cases.  (This cannot be selected using the config file, 
-but only through the kernel command line, e.g. "kgdb=ttyS0", though the
-configured defaults for baud rate etc. still apply if not overridden.)
-
-If gdbstub Does Not Work
-========================
-
-If it doesn't work, you will have to troubleshoot it.  Do the easy
-things first like double checking your cabling and data rates.  You
-might try some non-kernel based programs to see if the back-to-back
-connection works properly.  Just something simple like cat /etc/hosts
-/dev/ttyS0 on one machine and cat /dev/ttyS0 on the other will tell you
-if you can send data from one machine to the other.  There is no point
-in tearing out your hair in the kernel if the line doesn't work.
-
-If you need to debug the GDB/KGDB communication itself, the gdb commands
-"set debug remote 1" and "set debug serial 1" may be useful, but be
-warned: they produce a lot of output.
-
-Threads
-=======
-
-Each process in a target machine is seen as a gdb thread. gdb thread related
-commands (info threads, thread n) can be used. CONFIG_KGDB_THREAD must
-be defined for this to work.
-
-In this version, kgdb reports PID_MAX (32768) as the process ID for the
-idle process (pid 0), since GDB does not accept 0 as an ID.
-
-Detaching (exiting KGDB)
-=========================
-
-There are two ways to resume full-speed target execution: "continue" and
-"detach". With "continue", GDB inserts any specified breakpoints in the
-target code and resumes execution; the target is still in "gdb mode".
-If a breakpoint or other debug event (e.g. NMI) happens, the target
-halts and communicates with GDB again, which is waiting for it.
-
-With "detach", GDB does *not* insert any breakpoints; target execution
-is resumed and GDB stops communicating (does not wait for the target).
-In this case, the target is no longer in "gdb mode" -- for example,
-console messages no longer get sent separately to the KGDB port, or
-encapsulated for GDB.  If a debug event (e.g. NMI) occurs, the target
-will re-enter "gdb mode" and will display this fact on the console; you
-must give a new "target remote" command to gdb.
-
-NOTE: TO AVOID LOSSING CONSOLE MESSAGES IN CASE THE KERNEL CONSOLE AND
-KGDB USING THE SAME PORT, THE TARGET WAITS FOR ANY INPUT CHARACTER ON
-THE KGDB PORT AFTER A DETACH COMMAND.  For example, after the detach you
-could start a terminal emulator on the same host port and enter a <cr>;
-however, this program must then be terminated or suspended in order to
-use GBD again if KGDB is re-entered.
-
-
-Acknowledgements
-================
-
-This code was mostly generated by Henry Bell <henry.bell@st.com>;
-largely from KGDB by Amit S. Kale <akale@veritas.com> - extracts from
-code by Glenn Engel, Jim Kingdon, David Grothe <dave@gcom.com>, Tigran
-Aivazian <tigran@sco.com>, William Gatliff <bgat@open-widgets.com>, Ben
-Lee, Steve Chamberlain and Benoit Miller <fulg@iname.com> are also
-included. 
-
-Jeremy Siegel
-<jsiegel@mvista.com>
index 394d7d378dc74daf6899621d2bca0c37cdd598cf..841a9365d5fdd67b5018c7551ff7bb2433056c8a 100644 (file)
@@ -757,6 +757,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
     model      - force the model name
     position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
     probe_mask  - Bitmask to probe codecs (default = -1, meaning all slots)
+    probe_only - Only probing and no codec initialization (default=off);
+                 Useful to check the initial codec status for debugging
     bdl_pos_adj        - Specifies the DMA IRQ timing delay in samples.
                Passing -1 will make the driver to choose the appropriate
                value based on the controller chip.
@@ -772,327 +774,23 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
 
     This module supports multiple cards and autoprobe.
     
+    See Documentation/sound/alsa/HD-Audio.txt for more details about
+    HD-audio driver.
+
     Each codec may have a model table for different configurations.
     If your machine isn't listed there, the default (usually minimal)
     configuration is set up.  You can pass "model=<name>" option to
     specify a certain model in such a case.  There are different
-    models depending on the codec chip.
-
-         Model name    Description
-         ----------    -----------
-       ALC880
-         3stack        3-jack in back and a headphone out
-         3stack-digout 3-jack in back, a HP out and a SPDIF out
-         5stack        5-jack in back, 2-jack in front
-         5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
-         6stack        6-jack in back, 2-jack in front
-         6stack-digout 6-jack with a SPDIF out
-         w810          3-jack
-         z71v          3-jack (HP shared SPDIF)
-         asus          3-jack (ASUS Mobo)
-         asus-w1v      ASUS W1V
-         asus-dig      ASUS with SPDIF out
-         asus-dig2     ASUS with SPDIF out (using GPIO2)
-         uniwill       3-jack
-         fujitsu       Fujitsu Laptops (Pi1536)
-         F1734         2-jack
-         lg            LG laptop (m1 express dual)
-         lg-lw         LG LW20/LW25 laptop
-         tcl           TCL S700
-         clevo         Clevo laptops (m520G, m665n)
-         medion        Medion Rim 2150
-         test          for testing/debugging purpose, almost all controls can be
-                       adjusted.  Appearing only when compiled with
-                       $CONFIG_SND_DEBUG=y
-         auto          auto-config reading BIOS (default)
-
-       ALC260
-         hp            HP machines
-         hp-3013       HP machines (3013-variant)
-         hp-dc7600     HP DC7600
-         fujitsu       Fujitsu S7020
-         acer          Acer TravelMate
-         will          Will laptops (PB V7900)
-         replacer      Replacer 672V
-         basic         fixed pin assignment (old default model)
-         test          for testing/debugging purpose, almost all controls can
-                       adjusted.  Appearing only when compiled with
-                       $CONFIG_SND_DEBUG=y
-         auto          auto-config reading BIOS (default)
-
-       ALC262
-         fujitsu       Fujitsu Laptop
-         hp-bpc        HP xw4400/6400/8400/9400 laptops
-         hp-bpc-d7000  HP BPC D7000
-         hp-tc-t5735   HP Thin Client T5735
-         hp-rp5700     HP RP5700
-         benq          Benq ED8
-         benq-t31      Benq T31
-         hippo         Hippo (ATI) with jack detection, Sony UX-90s
-         hippo_1       Hippo (Benq) with jack detection
-         sony-assamd   Sony ASSAMD
-         toshiba-s06   Toshiba S06
-         toshiba-rx1   Toshiba RX1
-         ultra         Samsung Q1 Ultra Vista model
-         lenovo-3000   Lenovo 3000 y410
-         nec           NEC Versa S9100
-         basic         fixed pin assignment w/o SPDIF
-         auto          auto-config reading BIOS (default)
-
-       ALC267/268
-         quanta-il1    Quanta IL1 mini-notebook
-         3stack        3-stack model
-         toshiba       Toshiba A205
-         acer          Acer laptops
-         acer-aspire   Acer Aspire One
-         dell          Dell OEM laptops (Vostro 1200)
-         zepto         Zepto laptops
-         test          for testing/debugging purpose, almost all controls can
-                       adjusted.  Appearing only when compiled with
-                       $CONFIG_SND_DEBUG=y
-         auto          auto-config reading BIOS (default)
-
-       ALC269
-         basic         Basic preset
-         quanta        Quanta FL1
-         eeepc-p703    ASUS Eeepc P703 P900A
-         eeepc-p901    ASUS Eeepc P901 S101
-
-       ALC662/663
-         3stack-dig    3-stack (2-channel) with SPDIF
-         3stack-6ch     3-stack (6-channel)
-         3stack-6ch-dig 3-stack (6-channel) with SPDIF
-         6stack-dig     6-stack with SPDIF
-         lenovo-101e    Lenovo laptop
-         eeepc-p701    ASUS Eeepc P701
-         eeepc-ep20    ASUS Eeepc EP20
-         ecs           ECS/Foxconn mobo
-         m51va         ASUS M51VA
-         g71v          ASUS G71V
-         h13           ASUS H13
-         g50v          ASUS G50V
-         asus-mode1    ASUS
-         asus-mode2    ASUS
-         asus-mode3    ASUS
-         asus-mode4    ASUS
-         asus-mode5    ASUS
-         asus-mode6    ASUS
-         auto          auto-config reading BIOS (default)
-
-       ALC882/885
-         3stack-dig    3-jack with SPDIF I/O
-         6stack-dig    6-jack digital with SPDIF I/O
-         arima         Arima W820Di1
-         targa         Targa T8, MSI-1049 T8
-         asus-a7j      ASUS A7J
-         asus-a7m      ASUS A7M
-         macpro        MacPro support
-         mbp3          Macbook Pro rev3
-         imac24        iMac 24'' with jack detection
-         w2jc          ASUS W2JC
-         auto          auto-config reading BIOS (default)
-
-       ALC883/888
-         3stack-dig    3-jack with SPDIF I/O
-         6stack-dig    6-jack digital with SPDIF I/O
-         3stack-6ch    3-jack 6-channel
-         3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
-         6stack-dig-demo  6-jack digital for Intel demo board
-         acer          Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
-         acer-aspire   Acer Aspire 9810
-         medion        Medion Laptops
-         medion-md2    Medion MD2
-         targa-dig     Targa/MSI
-         targa-2ch-dig Targs/MSI with 2-channel
-         laptop-eapd   3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE)
-         lenovo-101e   Lenovo 101E
-         lenovo-nb0763 Lenovo NB0763
-         lenovo-ms7195-dig Lenovo MS7195
-         lenovo-sky    Lenovo Sky
-         haier-w66     Haier W66
-         3stack-hp     HP machines with 3stack (Lucknow, Samba boards)
-         6stack-dell   Dell machines with 6stack (Inspiron 530)
-         mitac         Mitac 8252D
-         clevo-m720    Clevo M720 laptop series
-         fujitsu-pi2515 Fujitsu AMILO Pi2515
-         3stack-6ch-intel Intel DG33* boards
-         auto          auto-config reading BIOS (default)
-
-       ALC861/660
-         3stack        3-jack
-         3stack-dig    3-jack with SPDIF I/O
-         6stack-dig    6-jack with SPDIF I/O
-         3stack-660    3-jack (for ALC660)
-         uniwill-m31   Uniwill M31 laptop
-         toshiba       Toshiba laptop support
-         asus          Asus laptop support
-         asus-laptop   ASUS F2/F3 laptops
-         auto          auto-config reading BIOS (default)
-
-       ALC861VD/660VD
-         3stack        3-jack
-         3stack-dig    3-jack with SPDIF OUT
-         6stack-dig    6-jack with SPDIF OUT
-         3stack-660    3-jack (for ALC660VD)
-         3stack-660-digout 3-jack with SPDIF OUT (for ALC660VD)
-         lenovo        Lenovo 3000 C200
-         dallas        Dallas laptops
-         hp            HP TX1000
-         auto          auto-config reading BIOS (default)
-
-       CMI9880
-         minimal       3-jack in back
-         min_fp        3-jack in back, 2-jack in front
-         full          6-jack in back, 2-jack in front
-         full_dig      6-jack in back, 2-jack in front, SPDIF I/O
-         allout        5-jack in back, 2-jack in front, SPDIF out
-         auto          auto-config reading BIOS (default)
-
-       AD1882 / AD1882A
-         3stack        3-stack mode (default)
-         6stack        6-stack mode
-
-       AD1884A / AD1883 / AD1984A / AD1984B
-         desktop       3-stack desktop (default)
-         laptop        laptop with HP jack sensing
-         mobile        mobile devices with HP jack sensing
-         thinkpad      Lenovo Thinkpad X300
-
-       AD1884
-         N/A
-
-       AD1981
-         basic         3-jack (default)
-         hp            HP nx6320
-         thinkpad      Lenovo Thinkpad T60/X60/Z60
-         toshiba       Toshiba U205
-
-       AD1983
-         N/A
-
-       AD1984
-         basic         default configuration
-         thinkpad      Lenovo Thinkpad T61/X61
-         dell          Dell T3400
-
-       AD1986A
-         6stack        6-jack, separate surrounds (default)
-         3stack        3-stack, shared surrounds
-         laptop        2-channel only (FSC V2060, Samsung M50)
-         laptop-eapd   2-channel with EAPD (Samsung R65, ASUS A6J)
-         laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100)
-         ultra         2-channel with EAPD (Samsung Ultra tablet PC)
-
-       AD1988/AD1988B/AD1989A/AD1989B
-         6stack        6-jack
-         6stack-dig    ditto with SPDIF
-         3stack        3-jack
-         3stack-dig    ditto with SPDIF
-         laptop        3-jack with hp-jack automute
-         laptop-dig    ditto with SPDIF
-         auto          auto-config reading BIOS (default)
-       
-       Conexant 5045
-         laptop-hpsense    Laptop with HP sense (old model laptop)
-         laptop-micsense   Laptop with Mic sense (old model fujitsu)
-         laptop-hpmicsense Laptop with HP and Mic senses
-         benq          Benq R55E
-         test          for testing/debugging purpose, almost all controls
-                       can be adjusted.  Appearing only when compiled with
-                       $CONFIG_SND_DEBUG=y
-
-       Conexant 5047
-         laptop        Basic Laptop config 
-         laptop-hp     Laptop config for some HP models (subdevice 30A5)
-         laptop-eapd   Laptop config with EAPD support
-         test          for testing/debugging purpose, almost all controls
-                       can be adjusted.  Appearing only when compiled with
-                       $CONFIG_SND_DEBUG=y
-
-       Conexant 5051
-         laptop        Basic Laptop config (default)
-         hp            HP Spartan laptop
-
-       STAC9200
-         ref           Reference board
-         dell-d21      Dell (unknown)
-         dell-d22      Dell (unknown)
-         dell-d23      Dell (unknown)
-         dell-m21      Dell Inspiron 630m, Dell Inspiron 640m
-         dell-m22      Dell Latitude D620, Dell Latitude D820
-         dell-m23      Dell XPS M1710, Dell Precision M90
-         dell-m24      Dell Latitude 120L
-         dell-m25      Dell Inspiron E1505n
-         dell-m26      Dell Inspiron 1501
-         dell-m27      Dell Inspiron E1705/9400
-         gateway       Gateway laptops with EAPD control
-         panasonic     Panasonic CF-74
-
-       STAC9205/9254
-         ref           Reference board
-         dell-m42      Dell (unknown)
-         dell-m43      Dell Precision
-         dell-m44      Dell Inspiron
-
-       STAC9220/9221
-         ref           Reference board
-         3stack        D945 3stack
-         5stack        D945 5stack + SPDIF
-         intel-mac-v1  Intel Mac Type 1
-         intel-mac-v2  Intel Mac Type 2
-         intel-mac-v3  Intel Mac Type 3
-         intel-mac-v4  Intel Mac Type 4
-         intel-mac-v5  Intel Mac Type 5
-         intel-mac-auto Intel Mac (detect type according to subsystem id)
-         macmini       Intel Mac Mini (equivalent with type 3)
-         macbook       Intel Mac Book (eq. type 5)
-         macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3)
-         macbook-pro   Intel Mac Book Pro 2nd generation (eq. type 3)
-         imac-intel    Intel iMac (eq. type 2)
-         imac-intel-20 Intel iMac (newer version) (eq. type 3)
-         dell-d81      Dell (unknown)
-         dell-d82      Dell (unknown)
-         dell-m81      Dell (unknown)
-         dell-m82      Dell XPS M1210
-
-       STAC9202/9250/9251
-         ref           Reference board, base config
-         m2-2          Some Gateway MX series laptops
-         m6            Some Gateway NX series laptops
-         pa6           Gateway NX860 series
-
-       STAC9227/9228/9229/927x
-         ref           Reference board
-         ref-no-jd     Reference board without HP/Mic jack detection
-         3stack        D965 3stack
-         5stack        D965 5stack + SPDIF
-         dell-3stack   Dell Dimension E520
-         dell-bios     Fixes with Dell BIOS setup
-
-       STAC92HD71B*
-         ref           Reference board
-         dell-m4-1     Dell desktops
-         dell-m4-2     Dell desktops
-         dell-m4-3     Dell desktops
-
-       STAC92HD73*
-         ref           Reference board
-         no-jd         BIOS setup but without jack-detection
-         dell-m6-amic  Dell desktops/laptops with analog mics
-         dell-m6-dmic  Dell desktops/laptops with digital mics
-         dell-m6       Dell desktops/laptops with both type of mics
-
-       STAC9872
-         vaio          Setup for VAIO FE550G/SZ110
-         vaio-ar Setup for VAIO AR
+    models depending on the codec chip.  The list of available models
+    is found in HD-Audio-Models.txt
 
     The model name "genric" is treated as a special case.  When this
     model is given, the driver uses the generic codec parser without
     "codec-patch".  It's sometimes good for testing and debugging.
 
     If the default configuration doesn't work and one of the above
-    matches with your device, report it together with the PCI
-    subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel
+    matches with your device, report it together with alsa-info.sh
+    output (with --no-upload option) to kernel bugzilla or alsa-devel
     ML (see the section "Links and Addresses").
 
     power_save and power_save_controller options are for power-saving
@@ -1652,7 +1350,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
     * AuzenTech X-Meridian
     * Bgears b-Enspirer
     * Club3D Theatron DTS
-    * HT-Omega Claro
+    * HT-Omega Claro (plus)
+    * HT-Omega Claro halo (XT)
     * Razer Barracuda AC-1
     * Sondigo Inferno
 
@@ -2409,8 +2108,11 @@ Links and Addresses
   ALSA project homepage
        http://www.alsa-project.org
 
-  ALSA Bug Tracking System
-       https://bugtrack.alsa-project.org/bugs/
+  Kernel Bugzilla
+       http://bugzilla.kernel.org/
 
   ALSA Developers ML
        mailto:alsa-devel@alsa-project.org
+
+  alsa-info.sh script
+       http://www.alsa-project.org/alsa-info.sh
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
new file mode 100644 (file)
index 0000000..4b7ac21
--- /dev/null
@@ -0,0 +1,348 @@
+  Model name   Description
+  ----------    -----------
+ALC880
+======
+  3stack       3-jack in back and a headphone out
+  3stack-digout        3-jack in back, a HP out and a SPDIF out
+  5stack       5-jack in back, 2-jack in front
+  5stack-digout        5-jack in back, 2-jack in front, a SPDIF out
+  6stack       6-jack in back, 2-jack in front
+  6stack-digout        6-jack with a SPDIF out
+  w810         3-jack
+  z71v         3-jack (HP shared SPDIF)
+  asus         3-jack (ASUS Mobo)
+  asus-w1v     ASUS W1V
+  asus-dig     ASUS with SPDIF out
+  asus-dig2    ASUS with SPDIF out (using GPIO2)
+  uniwill      3-jack
+  fujitsu      Fujitsu Laptops (Pi1536)
+  F1734                2-jack
+  lg           LG laptop (m1 express dual)
+  lg-lw                LG LW20/LW25 laptop
+  tcl          TCL S700
+  clevo                Clevo laptops (m520G, m665n)
+  medion       Medion Rim 2150
+  test         for testing/debugging purpose, almost all controls can be
+               adjusted.  Appearing only when compiled with
+               $CONFIG_SND_DEBUG=y
+  auto         auto-config reading BIOS (default)
+
+ALC260
+======
+  hp           HP machines
+  hp-3013      HP machines (3013-variant)
+  hp-dc7600    HP DC7600
+  fujitsu      Fujitsu S7020
+  acer         Acer TravelMate
+  will         Will laptops (PB V7900)
+  replacer     Replacer 672V
+  basic                fixed pin assignment (old default model)
+  test         for testing/debugging purpose, almost all controls can
+               adjusted.  Appearing only when compiled with
+               $CONFIG_SND_DEBUG=y
+  auto         auto-config reading BIOS (default)
+
+ALC262
+======
+  fujitsu      Fujitsu Laptop
+  hp-bpc       HP xw4400/6400/8400/9400 laptops
+  hp-bpc-d7000 HP BPC D7000
+  hp-tc-t5735  HP Thin Client T5735
+  hp-rp5700    HP RP5700
+  benq         Benq ED8
+  benq-t31     Benq T31
+  hippo                Hippo (ATI) with jack detection, Sony UX-90s
+  hippo_1      Hippo (Benq) with jack detection
+  sony-assamd  Sony ASSAMD
+  toshiba-s06  Toshiba S06
+  toshiba-rx1  Toshiba RX1
+  ultra                Samsung Q1 Ultra Vista model
+  lenovo-3000  Lenovo 3000 y410
+  nec          NEC Versa S9100
+  basic                fixed pin assignment w/o SPDIF
+  auto         auto-config reading BIOS (default)
+
+ALC267/268
+==========
+  quanta-il1   Quanta IL1 mini-notebook
+  3stack       3-stack model
+  toshiba      Toshiba A205
+  acer         Acer laptops
+  acer-dmic    Acer laptops with digital-mic
+  acer-aspire  Acer Aspire One
+  dell         Dell OEM laptops (Vostro 1200)
+  zepto                Zepto laptops
+  test         for testing/debugging purpose, almost all controls can
+               adjusted.  Appearing only when compiled with
+               $CONFIG_SND_DEBUG=y
+  auto         auto-config reading BIOS (default)
+
+ALC269
+======
+  basic                Basic preset
+  quanta       Quanta FL1
+  eeepc-p703   ASUS Eeepc P703 P900A
+  eeepc-p901   ASUS Eeepc P901 S101
+  fujitsu      FSC Amilo
+  auto         auto-config reading BIOS (default)
+
+ALC662/663
+==========
+  3stack-dig   3-stack (2-channel) with SPDIF
+  3stack-6ch    3-stack (6-channel)
+  3stack-6ch-dig 3-stack (6-channel) with SPDIF
+  6stack-dig    6-stack with SPDIF
+  lenovo-101e   Lenovo laptop
+  eeepc-p701   ASUS Eeepc P701
+  eeepc-ep20   ASUS Eeepc EP20
+  ecs          ECS/Foxconn mobo
+  m51va                ASUS M51VA
+  g71v         ASUS G71V
+  h13          ASUS H13
+  g50v         ASUS G50V
+  asus-mode1   ASUS
+  asus-mode2   ASUS
+  asus-mode3   ASUS
+  asus-mode4   ASUS
+  asus-mode5   ASUS
+  asus-mode6   ASUS
+  auto         auto-config reading BIOS (default)
+
+ALC882/885
+==========
+  3stack-dig   3-jack with SPDIF I/O
+  6stack-dig   6-jack digital with SPDIF I/O
+  arima                Arima W820Di1
+  targa                Targa T8, MSI-1049 T8
+  asus-a7j     ASUS A7J
+  asus-a7m     ASUS A7M
+  macpro       MacPro support
+  mbp3         Macbook Pro rev3
+  imac24       iMac 24'' with jack detection
+  w2jc         ASUS W2JC
+  auto         auto-config reading BIOS (default)
+
+ALC883/888
+==========
+  3stack-dig   3-jack with SPDIF I/O
+  6stack-dig   6-jack digital with SPDIF I/O
+  3stack-6ch    3-jack 6-channel
+  3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
+  6stack-dig-demo  6-jack digital for Intel demo board
+  acer         Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
+  acer-aspire  Acer Aspire 9810
+  acer-aspire-4930g Acer Aspire 4930G
+  medion       Medion Laptops
+  medion-md2   Medion MD2
+  targa-dig    Targa/MSI
+  targa-2ch-dig        Targs/MSI with 2-channel
+  laptop-eapd   3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE)
+  lenovo-101e  Lenovo 101E
+  lenovo-nb0763        Lenovo NB0763
+  lenovo-ms7195-dig Lenovo MS7195
+  lenovo-sky   Lenovo Sky
+  haier-w66    Haier W66
+  3stack-hp    HP machines with 3stack (Lucknow, Samba boards)
+  6stack-dell  Dell machines with 6stack (Inspiron 530)
+  mitac                Mitac 8252D
+  clevo-m720   Clevo M720 laptop series
+  fujitsu-pi2515 Fujitsu AMILO Pi2515
+  fujitsu-xa3530 Fujitsu AMILO XA3530
+  3stack-6ch-intel Intel DG33* boards
+  auto         auto-config reading BIOS (default)
+
+ALC861/660
+==========
+  3stack       3-jack
+  3stack-dig   3-jack with SPDIF I/O
+  6stack-dig   6-jack with SPDIF I/O
+  3stack-660   3-jack (for ALC660)
+  uniwill-m31  Uniwill M31 laptop
+  toshiba      Toshiba laptop support
+  asus         Asus laptop support
+  asus-laptop  ASUS F2/F3 laptops
+  auto         auto-config reading BIOS (default)
+
+ALC861VD/660VD
+==============
+  3stack       3-jack
+  3stack-dig   3-jack with SPDIF OUT
+  6stack-dig   6-jack with SPDIF OUT
+  3stack-660   3-jack (for ALC660VD)
+  3stack-660-digout 3-jack with SPDIF OUT (for ALC660VD)
+  lenovo       Lenovo 3000 C200
+  dallas       Dallas laptops
+  hp           HP TX1000
+  asus-v1s     ASUS V1Sn
+  auto         auto-config reading BIOS (default)
+
+CMI9880
+=======
+  minimal      3-jack in back
+  min_fp       3-jack in back, 2-jack in front
+  full         6-jack in back, 2-jack in front
+  full_dig     6-jack in back, 2-jack in front, SPDIF I/O
+  allout       5-jack in back, 2-jack in front, SPDIF out
+  auto         auto-config reading BIOS (default)
+
+AD1882 / AD1882A
+================
+  3stack       3-stack mode (default)
+  6stack       6-stack mode
+
+AD1884A / AD1883 / AD1984A / AD1984B
+====================================
+  desktop      3-stack desktop (default)
+  laptop       laptop with HP jack sensing
+  mobile       mobile devices with HP jack sensing
+  thinkpad     Lenovo Thinkpad X300
+
+AD1884
+======
+  N/A
+
+AD1981
+======
+  basic                3-jack (default)
+  hp           HP nx6320
+  thinkpad     Lenovo Thinkpad T60/X60/Z60
+  toshiba      Toshiba U205
+
+AD1983
+======
+  N/A
+
+AD1984
+======
+  basic                default configuration
+  thinkpad     Lenovo Thinkpad T61/X61
+  dell         Dell T3400
+
+AD1986A
+=======
+  6stack       6-jack, separate surrounds (default)
+  3stack       3-stack, shared surrounds
+  laptop       2-channel only (FSC V2060, Samsung M50)
+  laptop-eapd  2-channel with EAPD (ASUS A6J)
+  laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100)
+  ultra                2-channel with EAPD (Samsung Ultra tablet PC)
+  samsung      2-channel with EAPD (Samsung R65)
+
+AD1988/AD1988B/AD1989A/AD1989B
+==============================
+  6stack       6-jack
+  6stack-dig   ditto with SPDIF
+  3stack       3-jack
+  3stack-dig   ditto with SPDIF
+  laptop       3-jack with hp-jack automute
+  laptop-dig   ditto with SPDIF
+  auto         auto-config reading BIOS (default)
+
+Conexant 5045
+=============
+  laptop-hpsense    Laptop with HP sense (old model laptop)
+  laptop-micsense   Laptop with Mic sense (old model fujitsu)
+  laptop-hpmicsense Laptop with HP and Mic senses
+  benq         Benq R55E
+  test         for testing/debugging purpose, almost all controls
+               can be adjusted.  Appearing only when compiled with
+               $CONFIG_SND_DEBUG=y
+
+Conexant 5047
+=============
+  laptop       Basic Laptop config 
+  laptop-hp    Laptop config for some HP models (subdevice 30A5)
+  laptop-eapd  Laptop config with EAPD support
+  test         for testing/debugging purpose, almost all controls
+               can be adjusted.  Appearing only when compiled with
+               $CONFIG_SND_DEBUG=y
+
+Conexant 5051
+=============
+  laptop       Basic Laptop config (default)
+  hp           HP Spartan laptop
+
+STAC9200
+========
+  ref          Reference board
+  dell-d21     Dell (unknown)
+  dell-d22     Dell (unknown)
+  dell-d23     Dell (unknown)
+  dell-m21     Dell Inspiron 630m, Dell Inspiron 640m
+  dell-m22     Dell Latitude D620, Dell Latitude D820
+  dell-m23     Dell XPS M1710, Dell Precision M90
+  dell-m24     Dell Latitude 120L
+  dell-m25     Dell Inspiron E1505n
+  dell-m26     Dell Inspiron 1501
+  dell-m27     Dell Inspiron E1705/9400
+  gateway      Gateway laptops with EAPD control
+  panasonic    Panasonic CF-74
+
+STAC9205/9254
+=============
+  ref          Reference board
+  dell-m42     Dell (unknown)
+  dell-m43     Dell Precision
+  dell-m44     Dell Inspiron
+
+STAC9220/9221
+=============
+  ref          Reference board
+  3stack       D945 3stack
+  5stack       D945 5stack + SPDIF
+  intel-mac-v1 Intel Mac Type 1
+  intel-mac-v2 Intel Mac Type 2
+  intel-mac-v3 Intel Mac Type 3
+  intel-mac-v4 Intel Mac Type 4
+  intel-mac-v5 Intel Mac Type 5
+  intel-mac-auto Intel Mac (detect type according to subsystem id)
+  macmini      Intel Mac Mini (equivalent with type 3)
+  macbook      Intel Mac Book (eq. type 5)
+  macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3)
+  macbook-pro  Intel Mac Book Pro 2nd generation (eq. type 3)
+  imac-intel   Intel iMac (eq. type 2)
+  imac-intel-20        Intel iMac (newer version) (eq. type 3)
+  dell-d81     Dell (unknown)
+  dell-d82     Dell (unknown)
+  dell-m81     Dell (unknown)
+  dell-m82     Dell XPS M1210
+
+STAC9202/9250/9251
+==================
+  ref          Reference board, base config
+  m2-2         Some Gateway MX series laptops
+  m6           Some Gateway NX series laptops
+  pa6          Gateway NX860 series
+
+STAC9227/9228/9229/927x
+=======================
+  ref          Reference board
+  ref-no-jd    Reference board without HP/Mic jack detection
+  3stack       D965 3stack
+  5stack       D965 5stack + SPDIF
+  dell-3stack  Dell Dimension E520
+  dell-bios    Fixes with Dell BIOS setup
+
+STAC92HD71B*
+============
+  ref          Reference board
+  dell-m4-1    Dell desktops
+  dell-m4-2    Dell desktops
+  dell-m4-3    Dell desktops
+
+STAC92HD73*
+===========
+  ref          Reference board
+  no-jd                BIOS setup but without jack-detection
+  dell-m6-amic Dell desktops/laptops with analog mics
+  dell-m6-dmic Dell desktops/laptops with digital mics
+  dell-m6      Dell desktops/laptops with both type of mics
+
+STAC92HD83*
+===========
+  ref          Reference board
+
+STAC9872
+========
+  vaio         Setup for VAIO FE550G/SZ110
+  vaio-ar Setup for VAIO AR
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
new file mode 100644 (file)
index 0000000..8d68fff
--- /dev/null
@@ -0,0 +1,577 @@
+MORE NOTES ON HD-AUDIO DRIVER
+=============================
+                                       Takashi Iwai <tiwai@suse.de>
+
+
+GENERAL
+-------
+
+HD-audio is the new standard on-board audio component on modern PCs
+after AC97.  Although Linux has been supporting HD-audio since long
+time ago, there are often problems with new machines.  A part of the
+problem is broken BIOS, and the rest is the driver implementation.
+This document explains the brief trouble-shooting and debugging
+methods for the        HD-audio hardware.
+
+The HD-audio component consists of two parts: the controller chip and 
+the codec chips on the HD-audio bus.  Linux provides a single driver
+for all controllers, snd-hda-intel.  Although the driver name contains
+a word of a well-known harware vendor, it's not specific to it but for
+all controller chips by other companies.  Since the HD-audio
+controllers are supposed to be compatible, the single snd-hda-driver
+should work in most cases.  But, not surprisingly, there are known
+bugs and issues specific to each controller type.  The snd-hda-intel
+driver has a bunch of workarounds for these as described below.
+
+A controller may have multiple codecs.  Usually you have one audio
+codec and optionally one modem codec.  In theory, there might be
+multiple audio codecs, e.g. for analog and digital outputs, and the
+driver might not work properly because of conflict of mixer elements.
+This should be fixed in future if such hardware really exists.
+
+The snd-hda-intel driver has several different codec parsers depending
+on the codec.  It has a generic parser as a fallback, but this
+functionality is fairly limited until now.  Instead of the generic
+parser, usually the codec-specific parser (coded in patch_*.c) is used
+for the codec-specific implementations.  The details about the
+codec-specific problems are explained in the later sections.
+
+If you are interested in the deep debugging of HD-audio, read the
+HD-audio specification at first.  The specification is found on
+Intel's web page, for example:
+
+- http://www.intel.com/standards/hdaudio/
+
+
+HD-AUDIO CONTROLLER
+-------------------
+
+DMA-Position Problem
+~~~~~~~~~~~~~~~~~~~~
+The most common problem of the controller is the inaccurate DMA
+pointer reporting.  The DMA pointer for playback and capture can be
+read in two ways, either via a LPIB register or via a position-buffer
+map.  As default the driver tries to read from the io-mapped
+position-buffer, and falls back to LPIB if the position-buffer appears
+dead.  However, this detection isn't perfect on some devices.  In such
+a case, you can change the default method via `position_fix` option.
+
+`position_fix=1` means to use LPIB method explicitly.
+`position_fix=2` means to use the position-buffer.  0 is the default
+value, the automatic check and fallback to LPIB as described in the
+above.  If you get a problem of repeated sounds, this option might
+help.
+
+In addition to that, every controller is known to be broken regarding
+the wake-up timing.  It wakes up a few samples before actually
+processing the data on the buffer.  This caused a lot of problems, for
+example, with ALSA dmix or JACK.  Since 2.6.27 kernel, the driver puts
+an artificial delay to the wake up timing.  This delay is controlled
+via `bdl_pos_adj` option. 
+
+When `bdl_pos_adj` is a negative value (as default), it's assigned to
+an appropriate value depending on the controller chip.  For Intel
+chips, it'd be 1 while it'd be 32 for others.  Usually this works.
+Only in case it doesn't work and you get warning messages, you should
+change this parameter to other values.
+
+
+Codec-Probing Problem
+~~~~~~~~~~~~~~~~~~~~~
+A less often but a more severe problem is the codec probing.  When
+BIOS reports the available codec slots wrongly, the driver gets
+confused and tries to access the non-existing codec slot.  This often
+results in the total screw-up, and destructs the further communication
+with the codec chips.  The symptom appears usually as error messages
+like:
+------------------------------------------------------------------------
+  hda_intel: azx_get_response timeout, switching to polling mode:
+        last cmd=0x12345678
+  hda_intel: azx_get_response timeout, switching to single_cmd mode:
+        last cmd=0x12345678
+------------------------------------------------------------------------
+
+The first line is a warning, and this is usually relatively harmless.
+It means that the codec response isn't notified via an IRQ.  The
+driver uses explicit polling method to read the response.  It gives
+very slight CPU overhead, but you'd unlikely notice it.
+
+The second line is, however, a fatal error.  If this happens, usually
+it means that something is really wrong.  Most likely you are
+accessing a non-existing codec slot.
+
+Thus, if the second error message appears, try to narrow the probed
+codec slots via `probe_mask` option.  It's a bitmask, and each bit
+corresponds to the codec slot.  For example, to probe only the first
+slot, pass `probe_mask=1`.  For the first and the third slots, pass
+`probe_mask=5` (where 5 = 1 | 4), and so on.
+
+Since 2.6.29 kernel, the driver has a more robust probing method, so
+this error might happen rarely, though.
+
+
+Interrupt Handling
+~~~~~~~~~~~~~~~~~~
+In rare but some cases, the interrupt isn't properly handled as
+default.  You would notice this by the DMA transfer error reported by
+ALSA PCM core, for example.  Using MSI might help in such a case.
+Pass `enable_msi=1` option for enabling MSI.
+
+
+HD-AUDIO CODEC
+--------------
+
+Model Option
+~~~~~~~~~~~~
+The most common problem regarding the HD-audio driver is the
+unsupported codec features or the mismatched device configuration.
+Most of codec-specific code has several preset models, either to
+override the BIOS setup or to provide more comprehensive features.
+
+The driver checks PCI SSID and looks through the static configuration
+table until any matching entry is found.  If you have a new machine,
+you may see a message like below:
+------------------------------------------------------------------------
+    hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...
+------------------------------------------------------------------------
+Even if you see such a message, DON'T PANIC.  Take a deep breath and
+keep your towel.  First of all, it's an informational message, no
+warning, no error.  This means that the PCI SSID of your device isn't
+listed in the known preset model (white-)list.  But, this doesn't mean
+that the driver is broken.  Many codec-drivers provide the automatic
+configuration mechanism based on the BIOS setup.
+
+The HD-audio codec has usually "pin" widgets, and BIOS sets the default
+configuration of each pin, which indicates the location, the
+connection type, the jack color, etc.  The HD-audio driver can guess
+the right connection judging from these default configuration values.
+However -- some codec-support codes, such as patch_analog.c, don't
+support the automatic probing (yet as of 2.6.28).  And, BIOS is often,
+yes, pretty often broken.  It sets up wrong values and screws up the
+driver.
+
+The preset model is provided basically to overcome such a situation.
+When the matching preset model is found in the white-list, the driver
+assumes the static configuration of that preset and builds the mixer
+elements and PCM streams based on the static information.  Thus, if
+you have a newer machine with a slightly different PCI SSID from the
+existing one, you may have a good chance to re-use the same model.
+You can pass the `model` option to specify the preset model instead of
+PCI SSID look-up.
+
+What `model` option values are available depends on the codec chip.
+Check your codec chip from the codec proc file (see "Codec Proc-File"
+section below).  It will show the vendor/product name of your codec
+chip.  Then, see Documentation/sound/alsa/HD-Audio-Modelstxt file,
+the section of HD-audio driver.  You can find a list of codecs
+and `model` options belonging to each codec.  For example, for Realtek
+ALC262 codec chip, pass `model=ultra` for devices that are compatible
+with Samsung Q1 Ultra.
+
+Thus, the first thing you can do for any brand-new, unsupported and
+non-working HD-audio hardware is to check HD-audio codec and several
+different `model` option values.  If you have a luck, some of them
+might suit with your device well.
+
+Some codecs such as ALC880 have a special model option `model=test`.
+This configures the driver to provide as many mixer controls as
+possible for every single pin feature except for the unsolicited
+events (and maybe some other specials).  Adjust each mixer element and
+try the I/O in the way of trial-and-error until figuring out the whole
+I/O pin mappings.
+
+Note that `model=generic` has a special meaning.  It means to use the
+generic parser regardless of the codec.  Usually the codec-specific
+parser is much better than the generic parser (as now).  Thus this
+option is more about the debugging purpose.
+
+
+Speaker and Headphone Output
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+One of the most frequent (and obvious) bugs with HD-audio is the
+silent output from either or both of a built-in speaker and a
+headphone jack.  In general, you should try a headphone output at
+first.  A speaker output often requires more additional controls like
+the external amplifier bits.  Thus a headphone output has a slightly
+better chance.
+
+Before making a bug report, double-check whether the mixer is set up
+correctly.  The recent version of snd-hda-intel driver provides mostly
+"Master" volume control as well as "Front" volume (where Front
+indicates the front-channels).  In addition, there can be individual
+"Headphone" and "Speaker" controls.
+
+Ditto for the speaker output.  There can be "External Amplifier"
+switch on some codecs.  Turn on this if present.
+
+Another related problem is the automatic mute of speaker output by
+headphone plugging.  This feature is implemented in most cases, but
+not on every preset model or codec-support code.
+
+In anyway, try a different model option if you have such a problem.
+Some other models may match better and give you more matching
+functionality.  If none of the available models works, send a bug
+report.  See the bug report section for details.
+
+If you are masochistic enough to debug the driver problem, note the
+following:
+
+- The speaker (and the headphone, too) output often requires the
+  external amplifier.  This can be set usually via EAPD verb or a
+  certain GPIO.  If the codec pin supports EAPD, you have a better
+  chance via SET_EAPD_BTL verb (0x70c).  On others, GPIO pin (mostly
+  it's either GPIO0 or GPIO1) may turn on/off EAPD.
+- Some Realtek codecs require special vendor-specific coefficients to
+  turn on the amplifier.  See patch_realtek.c.
+- IDT codecs may have extra power-enable/disable controls on each
+  analog pin.  See patch_sigmatel.c.
+- Very rare but some devices don't accept the pin-detection verb until
+  triggered.  Issuing GET_PIN_SENSE verb (0xf09) may result in the
+  codec-communication stall.  Some examples are found in
+  patch_realtek.c.
+
+
+Capture Problems
+~~~~~~~~~~~~~~~~
+The capture problems are often because of missing setups of mixers.
+Thus, before submitting a bug report, make sure that you set up the
+mixer correctly.  For example, both "Capture Volume" and "Capture
+Switch" have to be set properly in addition to the right "Capture
+Source" or "Input Source" selection.  Some devices have "Mic Boost"
+volume or switch.
+
+When the PCM device is opened via "default" PCM (without pulse-audio
+plugin), you'll likely have "Digital Capture Volume" control as well.
+This is provided for the extra gain/attenuation of the signal in
+software, especially for the inputs without the hardware volume
+control such as digital microphones.  Unless really needed, this
+should be set to exactly 50%, corresponding to 0dB -- neither extra
+gain nor attenuation.  When you use "hw" PCM, i.e., a raw access PCM,
+this control will have no influence, though.
+
+It's known that some codecs / devices have fairly bad analog circuits,
+and the recorded sound contains a certain DC-offset.  This is no bug
+of the driver.
+
+Most of modern laptops have no analog CD-input connection.  Thus, the
+recording from CD input won't work in many cases although the driver
+provides it as the capture source.  Use CDDA instead.
+
+The automatic switching of the built-in and external mic per plugging
+is implemented on some codec models but not on every model.  Partly
+because of my laziness but mostly lack of testers.  Feel free to
+submit the improvement patch to the author.
+
+
+Direct Debugging
+~~~~~~~~~~~~~~~~
+If no model option gives you a better result, and you are a tough guy
+to fight against evil, try debugging via hitting the raw HD-audio
+codec verbs to the device.  Some tools are available: hda-emu and
+hda-analyzer.  The detailed description is found in the sections
+below.  You'd need to enable hwdep for using these tools.  See "Kernel
+Configuration" section.
+
+
+OTHER ISSUES
+------------
+
+Kernel Configuration
+~~~~~~~~~~~~~~~~~~~~
+In general, I recommend you to enable the sound debug option,
+`CONFIG_SND_DEBUG=y`, no matter whether you are debugging or not.
+This enables snd_printd() macro and others, and you'll get additional
+kernel messages at probing.
+
+In addition, you can enable `CONFIG_SND_DEBUG_VERBOSE=y`.  But this
+will give you far more messages.  Thus turn this on only when you are
+sure to want it.
+
+Don't forget to turn on the appropriate `CONFIG_SND_HDA_CODEC_*`
+options.  Note that each of them corresponds to the codec chip, not
+the controller chip.  Thus, even if lspci shows the Nvidia controller,
+you may need to choose the option for other vendors.  If you are
+unsure, just select all yes.
+
+`CONFIG_SND_HDA_HWDEP` is a useful option for debugging the driver.
+When this is enabled, the driver creates hardware-dependent devices
+(one per each codec), and you have a raw access to the device via
+these device files.  For example, `hwC0D2` will be created for the
+codec slot #2 of the first card (#0).  For debug-tools such as
+hda-verb and hda-analyzer, the hwdep device has to be enabled.
+Thus, it'd be better to turn this on always.
+
+`CONFIG_SND_HDA_RECONFIG` is a new option, and this depends on the
+hwdep option above.  When enabled, you'll have some sysfs files under
+the corresponding hwdep directory.  See "HD-audio reconfiguration"
+section below.
+
+`CONFIG_SND_HDA_POWER_SAVE` option enables the power-saving feature.
+See "Power-saving" section below.
+
+
+Codec Proc-File
+~~~~~~~~~~~~~~~
+The codec proc-file is a treasure-chest for debugging HD-audio.
+It shows most of useful information of each codec widget.
+
+The proc file is located in /proc/asound/card*/codec#*, one file per
+each codec slot.  You can know the codec vendor, product id and
+names, the type of each widget, capabilities and so on.
+This file, however, doesn't show the jack sensing state, so far.  This
+is because the jack-sensing might be depending on the trigger state.
+
+This file will be picked up by the debug tools, and also it can be fed
+to the emulator as the primary codec information.  See the debug tools
+section below.
+
+This proc file can be also used to check whether the generic parser is
+used.  When the generic parser is used, the vendor/product ID name
+will appear as "Realtek ID 0262", instead of "Realtek ALC262".
+
+
+HD-Audio Reconfiguration
+~~~~~~~~~~~~~~~~~~~~~~~~
+This is an experimental feature to allow you re-configure the HD-audio
+codec dynamically without reloading the driver.  The following sysfs
+files are available under each codec-hwdep device directory (e.g. 
+/sys/class/sound/hwC0D0):
+
+vendor_id::
+  Shows the 32bit codec vendor-id hex number.  You can change the
+  vendor-id value by writing to this file.
+subsystem_id::
+  Shows the 32bit codec subsystem-id hex number.  You can change the
+  subsystem-id value by writing to this file.
+revision_id::
+  Shows the 32bit codec revision-id hex number.  You can change the
+  revision-id value by writing to this file.
+afg::
+  Shows the AFG ID.  This is read-only.
+mfg::
+  Shows the MFG ID.  This is read-only.
+name::
+  Shows the codec name string.  Can be changed by writing to this
+  file.
+modelname::
+  Shows the currently set `model` option.  Can be changed by writing
+  to this file.
+init_verbs::
+  The extra verbs to execute at initialization.  You can add a verb by
+  writing to this file.  Pass tree numbers, nid, verb and parameter.
+hints::
+  Shows hint strings for codec parsers for any use.  Right now it's
+  not used.
+reconfig::
+  Triggers the codec re-configuration.  When any value is written to
+  this file, the driver re-initialize and parses the codec tree
+  again.  All the changes done by the sysfs entries above are taken
+  into account.
+clear::
+  Resets the codec, removes the mixer elements and PCM stuff of the
+  specified codec, and clear all init verbs and hints.
+
+
+Power-Saving
+~~~~~~~~~~~~
+The power-saving is a kind of auto-suspend of the device.  When the
+device is inactive for a certain time, the device is automatically
+turned off to save the power.  The time to go down is specified via
+`power_save` module option, and this option can be changed dynamically
+via sysfs.
+
+The power-saving won't work when the analog loopback is enabled on
+some codecs.  Make sure that you mute all unneeded signal routes when
+you want the power-saving.
+
+The power-saving feature might cause audible click noises at each
+power-down/up depending on the device.  Some of them might be
+solvable, but some are hard, I'm afraid.  Some distros such as
+openSUSE enables the power-saving feature automatically when the power
+cable is unplugged.  Thus, if you hear noises, suspect first the
+power-saving.  See /sys/module/snd_hda_intel/parameters/power_save to
+check the current value.  If it's non-zero, the feature is turned on.
+
+
+Development Tree
+~~~~~~~~~~~~~~~~
+The latest development codes for HD-audio are found on sound git tree:
+
+- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
+
+The master branch or for-next branches can be used as the main
+development branches in general while the HD-audio specific patches
+are committed in topic/hda branch.
+
+If you are using the latest Linus tree, it'd be better to pull the
+above GIT tree onto it.  If you are using the older kernels, an easy
+way to try the latest ALSA code is to build from the snapshot
+tarball.  There are daily tarballs and the latest snapshot tarball.
+All can be built just like normal alsa-driver release packages, that
+is, installed via the usual spells: configure, make and make
+install(-modules).  See INSTALL in the package.  The snapshot tarballs
+are found at:
+
+- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/
+
+
+Sending a Bug Report
+~~~~~~~~~~~~~~~~~~~~
+If any model or module options don't work for your device, it's time
+to send a bug report to the developers.  Give the following in your
+bug report:
+
+- Hardware vendor, product and model names
+- Kernel version (and ALSA-driver version if you built externally)
+- `alsa-info.sh` output; run with `--no-upload` option.  See the
+  section below about alsa-info
+
+If it's a regression, at best, send alsa-info outputs of both working
+and non-working kernels.  This is really helpful because we can
+compare the codec registers directly.
+
+Send a bug report either the followings:
+
+kernel-bugzilla::
+  http://bugme.linux-foundation.org/
+alsa-devel ML::
+  alsa-devel@alsa-project.org
+
+
+DEBUG TOOLS
+-----------
+
+This section describes some tools available for debugging HD-audio
+problems.
+
+alsa-info
+~~~~~~~~~
+The script `alsa-info.sh` is a very useful tool to gather the audio
+device information.  You can fetch the latest version from:
+
+- http://www.alsa-project.org/alsa-info.sh
+
+Run this script as root, and it will gather the important information
+such as the module lists, module parameters, proc file contents
+including the codec proc files, mixer outputs and the control
+elements.  As default, it will store the information onto a web server
+on alsa-project.org.  But, if you send a bug report, it'd be better to
+run with `--no-upload` option, and attach the generated file.
+
+There are some other useful options.  See `--help` option output for
+details.
+
+
+hda-verb
+~~~~~~~~
+hda-verb is a tiny program that allows you to access the HD-audio
+codec directly.  You can execute a raw HD-audio codec verb with this.
+This program accesses the hwdep device, thus you need to enable the
+kernel config `CONFIG_SND_HDA_HWDEP=y` beforehand.
+
+The hda-verb program takes four arguments: the hwdep device file, the
+widget NID, the verb and the parameter.  When you access to the codec
+on the slot 2 of the card 0, pass /dev/snd/hwC0D2 to the first
+argument, typically.  (However, the real path name depends on the
+system.)
+
+The second parameter is the widget number-id to access.  The third
+parameter can be either a hex/digit number or a string corresponding
+to a verb.  Similarly, the last parameter is the value to write, or
+can be a string for the parameter type.
+
+------------------------------------------------------------------------
+  % hda-verb /dev/snd/hwC0D0 0x12 0x701 2
+  nid = 0x12, verb = 0x701, param = 0x2
+  value = 0x0
+
+  % hda-verb /dev/snd/hwC0D0 0x0 PARAMETERS VENDOR_ID
+  nid = 0x0, verb = 0xf00, param = 0x0
+  value = 0x10ec0262
+
+  % hda-verb /dev/snd/hwC0D0 2 set_a 0xb080
+  nid = 0x2, verb = 0x300, param = 0xb080
+  value = 0x0
+------------------------------------------------------------------------
+
+Although you can issue any verbs with this program, the driver state
+won't be always updated.  For example, the volume values are usually
+cached in the driver, and thus changing the widget amp value directly
+via hda-verb won't change the mixer value.
+
+The hda-verb program is found in the ftp directory:
+
+- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/
+
+Also a git repository is available:
+
+- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/hda-verb.git
+
+See README file in the tarball for more details about hda-verb
+program.
+
+
+hda-analyzer
+~~~~~~~~~~~~
+hda-analyzer provides a graphical interface to access the raw HD-audio
+control, based on pyGTK2 binding.  It's a more powerful version of
+hda-verb.  The program gives you an easy-to-use GUI stuff for showing
+the widget information and adjusting the amp values, as well as the
+proc-compatible output.
+
+The hda-analyzer is a part of alsa.git repository in
+alsa-project.org:
+
+- http://git.alsa-project.org/?p=alsa.git;a=tree;f=hda-analyzer
+
+
+Codecgraph
+~~~~~~~~~~
+Codecgraph is a utility program to generate a graph and visualizes the
+codec-node connection of a codec chip.  It's especially useful when
+you analyze or debug a codec without a proper datasheet.  The program
+parses the given codec proc file and converts to SVG via graphiz
+program.
+
+The tarball and GIT trees are found in the web page at:
+
+- http://helllabs.org/codecgraph/
+
+
+hda-emu
+~~~~~~~
+hda-emu is an HD-audio emulator.  The main purpose of this program is
+to debug an HD-audio codec without the real hardware.  Thus, it
+doesn't emulate the behavior with the real audio I/O, but it just
+dumps the codec register changes and the ALSA-driver internal changes
+at probing and operating the HD-audio driver.
+
+The program requires a codec proc-file to simulate.  Get a proc file
+for the target codec beforehand, or pick up an example codec from the
+codec proc collections in the tarball.  Then, run the program with the
+proc file, and the hda-emu program will start parsing the codec file
+and simulates the HD-audio driver:
+
+------------------------------------------------------------------------
+  % hda-emu codecs/stac9200-dell-d820-laptop
+  # Parsing..
+  hda_codec: Unknown model for STAC9200, using BIOS defaults
+  hda_codec: pin nid 08 bios pin config 40c003fa
+  ....
+------------------------------------------------------------------------
+
+The program gives you only a very dumb command-line interface.  You
+can get a proc-file dump at the current state, get a list of control
+(mixer) elements, set/get the control element value, simulate the PCM
+operation, the jack plugging simulation, etc.
+
+The package is found in:
+
+- ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/
+
+A git repository is available:
+
+- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/hda-emu.git
+
+See README file in the tarball for more details about hda-emu
+program.
index f738b296440a55a3a3cc86b0f0039bff1c2d2067..bba2dbb79d81c10d71bbc5b0879f6d3745d1543d 100644 (file)