Merge branch 'core/printk' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux...
Linus Torvalds [Mon, 14 Jul 2008 22:27:43 +0000 (15:27 -0700)]
* 'core/printk' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, generic: mark early_printk as asmlinkage
  printk: export console_drivers
  printk: remember the message level for multi-line output
  printk: refactor processing of line severity tokens
  printk: don't prefer unsuited consoles on registration
  printk: clean up recursion check related static variables
  namespacecheck: more kernel/printk.c fixes
  namespacecheck: fix kernel printk.c

1368 files changed:
Documentation/ABI/testing/sysfs-block
Documentation/ABI/testing/sysfs-bus-css [new file with mode: 0644]
Documentation/ABI/testing/sysfs-firmware-memmap [new file with mode: 0644]
Documentation/HOWTO
Documentation/block/data-integrity.txt [new file with mode: 0644]
Documentation/ftrace.txt [new file with mode: 0644]
Documentation/ioctl-number.txt
Documentation/kdump/kdump.txt
Documentation/kernel-parameters.txt
Documentation/networking/ip-sysctl.txt
Documentation/nmi_watchdog.txt
Documentation/scheduler/sched-domains.txt
Documentation/scheduler/sched-rt-group.txt
Documentation/sound/alsa/ALSA-Configuration.txt
Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
Documentation/tracers/mmiotrace.txt [new file with mode: 0644]
Documentation/x86/i386/IO-APIC.txt [moved from Documentation/i386/IO-APIC.txt with 100% similarity]
Documentation/x86/i386/boot.txt [moved from Documentation/i386/boot.txt with 96% similarity]
Documentation/x86/i386/usb-legacy-support.txt [moved from Documentation/i386/usb-legacy-support.txt with 100% similarity]
Documentation/x86/i386/zero-page.txt [moved from Documentation/i386/zero-page.txt with 100% similarity]
Documentation/x86/x86_64/00-INDEX [moved from Documentation/x86_64/00-INDEX with 100% similarity]
Documentation/x86/x86_64/boot-options.txt [moved from Documentation/x86_64/boot-options.txt with 100% similarity]
Documentation/x86/x86_64/cpu-hotplug-spec [moved from Documentation/x86_64/cpu-hotplug-spec with 100% similarity]
Documentation/x86/x86_64/fake-numa-for-cpusets [moved from Documentation/x86_64/fake-numa-for-cpusets with 100% similarity]
Documentation/x86/x86_64/kernel-stacks [moved from Documentation/x86_64/kernel-stacks with 100% similarity]
Documentation/x86/x86_64/machinecheck [moved from Documentation/x86_64/machinecheck with 100% similarity]
Documentation/x86/x86_64/mm.txt [moved from Documentation/x86_64/mm.txt with 87% similarity]
Documentation/x86/x86_64/uefi.txt [moved from Documentation/x86_64/uefi.txt with 84% similarity]
MAINTAINERS
Makefile
arch/arm/Kconfig
arch/arm/boot/compressed/Makefile
arch/arm/kernel/Makefile
arch/arm/kernel/armksyms.c
arch/arm/kernel/entry-common.S
arch/arm/kernel/ftrace.c [new file with mode: 0644]
arch/arm/kernel/kprobes.c
arch/avr32/Kconfig
arch/avr32/boards/atngw100/setup.c
arch/avr32/boards/atstk1000/atstk1002.c
arch/avr32/boards/atstk1000/atstk1003.c
arch/avr32/boards/atstk1000/atstk1004.c
arch/avr32/kernel/entry-avr32b.S
arch/avr32/kernel/signal.c
arch/avr32/kernel/time.c
arch/avr32/kernel/vmlinux.lds.S
arch/avr32/lib/io-readsb.S
arch/avr32/mach-at32ap/Makefile
arch/avr32/mach-at32ap/at32ap700x.c
arch/avr32/mach-at32ap/intc.c
arch/avr32/mach-at32ap/pdc.c [moved from arch/avr32/mach-at32ap/at32ap.c with 90% similarity]
arch/avr32/mach-at32ap/pio.c
arch/avr32/mach-at32ap/pio.h
arch/avr32/mach-at32ap/pm-at32ap700x.S
arch/avr32/mach-at32ap/pm.c [new file with mode: 0644]
arch/avr32/mach-at32ap/sdramc.h [new file with mode: 0644]
arch/avr32/mm/init.c
arch/avr32/mm/tlb.c
arch/blackfin/mach-bf561/coreb.c
arch/cris/arch-v10/drivers/eeprom.c
arch/cris/arch-v10/drivers/gpio.c
arch/cris/arch-v10/drivers/i2c.c
arch/cris/arch-v10/drivers/sync_serial.c
arch/cris/arch-v32/drivers/cryptocop.c
arch/cris/arch-v32/drivers/i2c.c
arch/cris/arch-v32/drivers/mach-a3/gpio.c
arch/cris/arch-v32/drivers/mach-fs/gpio.c
arch/cris/arch-v32/drivers/sync_serial.c
arch/m68k/bvme6000/rtc.c
arch/m68k/mvme16x/rtc.c
arch/mips/basler/excite/excite_iodev.c
arch/mips/kernel/rtlx.c
arch/mips/kernel/vpe.c
arch/mips/sibyte/common/sb_tbprof.c
arch/parisc/kernel/perf.c
arch/powerpc/Kconfig
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/ftrace.c [new file with mode: 0644]
arch/powerpc/kernel/io.c
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/ppc_ksyms.c
arch/powerpc/kernel/setup_32.c
arch/powerpc/platforms/powermac/Makefile
arch/s390/Kconfig
arch/s390/appldata/appldata.h
arch/s390/appldata/appldata_base.c
arch/s390/appldata/appldata_mem.c
arch/s390/appldata/appldata_net_sum.c
arch/s390/appldata/appldata_os.c
arch/s390/crypto/crypt_s390.h
arch/s390/crypto/prng.c
arch/s390/hypfs/inode.c
arch/s390/kernel/Makefile
arch/s390/kernel/binfmt_elf32.c [deleted file]
arch/s390/kernel/compat_ptrace.h
arch/s390/kernel/debug.c
arch/s390/kernel/early.c
arch/s390/kernel/ipl.c
arch/s390/kernel/kprobes.c
arch/s390/kernel/machine_kexec.c
arch/s390/kernel/mem_detect.c [new file with mode: 0644]
arch/s390/kernel/process.c
arch/s390/kernel/ptrace.c
arch/s390/kernel/setup.c
arch/s390/kernel/time.c
arch/s390/kernel/topology.c
arch/s390/kernel/vtime.c
arch/s390/mm/init.c
arch/sh/boards/landisk/gio.c
arch/sparc/kernel/apc.c
arch/sparc64/Kconfig
arch/sparc64/Kconfig.debug
arch/sparc64/kernel/Makefile
arch/sparc64/kernel/ftrace.c [new file with mode: 0644]
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/time.c
arch/sparc64/lib/mcount.S
arch/um/drivers/harddog_kern.c
arch/um/drivers/mmapper_kern.c
arch/um/drivers/random.c
arch/x86/Kconfig
arch/x86/Kconfig.cpu
arch/x86/Kconfig.debug
arch/x86/Makefile
arch/x86/boot/a20.c
arch/x86/boot/compressed/head_64.S
arch/x86/boot/compressed/misc.c
arch/x86/boot/compressed/relocs.c
arch/x86/boot/cpu.c
arch/x86/boot/main.c
arch/x86/boot/memory.c
arch/x86/boot/pmjump.S
arch/x86/boot/video-vga.c
arch/x86/configs/i386_defconfig
arch/x86/configs/x86_64_defconfig
arch/x86/ia32/ia32entry.S
arch/x86/kernel/.gitignore
arch/x86/kernel/Makefile
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/acpi/sleep.c
arch/x86/kernel/alternative.c
arch/x86/kernel/amd_iommu.c [new file with mode: 0644]
arch/x86/kernel/amd_iommu_init.c [new file with mode: 0644]
arch/x86/kernel/aperture_64.c
arch/x86/kernel/apic_32.c
arch/x86/kernel/apic_64.c
arch/x86/kernel/apm_32.c
arch/x86/kernel/asm-offsets_32.c
arch/x86/kernel/asm-offsets_64.c
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/addon_cpuid_features.c
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/amd_64.c [new file with mode: 0644]
arch/x86/kernel/cpu/bugs.c
arch/x86/kernel/cpu/bugs_64.c [moved from arch/x86/kernel/bugs_64.c with 100% similarity]
arch/x86/kernel/cpu/centaur_64.c [new file with mode: 0644]
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/common_64.c [new file with mode: 0644]
arch/x86/kernel/cpu/cpu.h
arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c
arch/x86/kernel/cpu/intel.c
arch/x86/kernel/cpu/intel_64.c [new file with mode: 0644]
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/cpu/mcheck/k7.c
arch/x86/kernel/cpu/mcheck/mce_64.c
arch/x86/kernel/cpu/mcheck/p4.c
arch/x86/kernel/cpu/mtrr/generic.c
arch/x86/kernel/cpu/mtrr/main.c
arch/x86/kernel/cpu/mtrr/mtrr.h
arch/x86/kernel/cpu/perfctr-watchdog.c
arch/x86/kernel/cpuid.c
arch/x86/kernel/e820.c [new file with mode: 0644]
arch/x86/kernel/e820_32.c [deleted file]
arch/x86/kernel/e820_64.c [deleted file]
arch/x86/kernel/early-quirks.c
arch/x86/kernel/efi.c
arch/x86/kernel/efi_64.c
arch/x86/kernel/entry_32.S
arch/x86/kernel/entry_64.S
arch/x86/kernel/ftrace.c [new file with mode: 0644]
arch/x86/kernel/genapic_64.c
arch/x86/kernel/genx2apic_uv_x.c
arch/x86/kernel/head.c [new file with mode: 0644]
arch/x86/kernel/head32.c
arch/x86/kernel/head64.c
arch/x86/kernel/head_32.S
arch/x86/kernel/head_64.S
arch/x86/kernel/hpet.c
arch/x86/kernel/i386_ksyms_32.c
arch/x86/kernel/i387.c
arch/x86/kernel/i8259.c [moved from arch/x86/kernel/i8259_32.c with 70% similarity]
arch/x86/kernel/i8259_64.c [deleted file]
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/io_apic_64.c
arch/x86/kernel/ipi.c
arch/x86/kernel/irq_32.c
arch/x86/kernel/irq_64.c
arch/x86/kernel/irqinit_32.c [new file with mode: 0644]
arch/x86/kernel/irqinit_64.c [new file with mode: 0644]
arch/x86/kernel/ldt.c
arch/x86/kernel/machine_kexec_32.c
arch/x86/kernel/machine_kexec_64.c
arch/x86/kernel/microcode.c
arch/x86/kernel/mmconf-fam10h_64.c
arch/x86/kernel/mpparse.c
arch/x86/kernel/msr.c
arch/x86/kernel/nmi.c [moved from arch/x86/kernel/nmi_32.c with 68% similarity]
arch/x86/kernel/nmi_64.c [deleted file]
arch/x86/kernel/numaq_32.c
arch/x86/kernel/paravirt.c
arch/x86/kernel/paravirt_patch_32.c
arch/x86/kernel/paravirt_patch_64.c
arch/x86/kernel/pci-calgary_64.c
arch/x86/kernel/pci-dma.c
arch/x86/kernel/pci-gart_64.c
arch/x86/kernel/pci-swiotlb_64.c
arch/x86/kernel/probe_roms_32.c [new file with mode: 0644]
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/quirks.c
arch/x86/kernel/reboot.c
arch/x86/kernel/reboot_fixups_32.c
arch/x86/kernel/setup.c
arch/x86/kernel/setup64.c [deleted file]
arch/x86/kernel/setup_32.c [deleted file]
arch/x86/kernel/setup_64.c [deleted file]
arch/x86/kernel/setup_percpu.c [new file with mode: 0644]
arch/x86/kernel/smpboot.c
arch/x86/kernel/summit_32.c
arch/x86/kernel/sys_i386_32.c
arch/x86/kernel/time_32.c
arch/x86/kernel/time_64.c
arch/x86/kernel/tlb_64.c
arch/x86/kernel/tlb_uv.c [new file with mode: 0644]
arch/x86/kernel/trampoline.c
arch/x86/kernel/traps_32.c
arch/x86/kernel/traps_64.c
arch/x86/kernel/tsc.c [new file with mode: 0644]
arch/x86/kernel/tsc_32.c [deleted file]
arch/x86/kernel/tsc_64.c [deleted file]
arch/x86/kernel/visws_quirks.c [new file with mode: 0644]
arch/x86/kernel/vmi_32.c
arch/x86/kernel/vmiclock_32.c
arch/x86/kernel/vmlinux_32.lds.S
arch/x86/kernel/vmlinux_64.lds.S
arch/x86/kernel/vsmp_64.c
arch/x86/kernel/vsyscall_64.c
arch/x86/kernel/x8664_ksyms_64.c
arch/x86/lguest/Kconfig
arch/x86/lguest/boot.c
arch/x86/lib/Makefile
arch/x86/lib/copy_user_64.S
arch/x86/lib/copy_user_nocache_64.S
arch/x86/lib/delay.c [moved from arch/x86/lib/delay_32.c with 88% similarity]
arch/x86/lib/delay_64.c [deleted file]
arch/x86/lib/getuser.S [moved from arch/x86/lib/getuser_64.S with 53% similarity]
arch/x86/lib/getuser_32.S [deleted file]
arch/x86/lib/putuser.S [moved from arch/x86/lib/putuser_32.S with 54% similarity]
arch/x86/lib/putuser_64.S [deleted file]
arch/x86/lib/thunk_32.S [new file with mode: 0644]
arch/x86/lib/thunk_64.S
arch/x86/lib/usercopy_64.c
arch/x86/mach-default/setup.c
arch/x86/mach-es7000/Makefile
arch/x86/mach-es7000/es7000plat.c
arch/x86/mach-generic/Makefile
arch/x86/mach-generic/bigsmp.c
arch/x86/mach-generic/numaq.c [new file with mode: 0644]
arch/x86/mach-generic/probe.c
arch/x86/mach-visws/Makefile [deleted file]
arch/x86/mach-visws/mpparse.c [deleted file]
arch/x86/mach-visws/reboot.c [deleted file]
arch/x86/mach-visws/setup.c [deleted file]
arch/x86/mach-visws/traps.c [deleted file]
arch/x86/mach-visws/visws_apic.c [deleted file]
arch/x86/mach-voyager/setup.c
arch/x86/mach-voyager/voyager_smp.c
arch/x86/math-emu/reg_constant.c
arch/x86/mm/Makefile
arch/x86/mm/discontig_32.c
arch/x86/mm/dump_pagetables.c
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/k8topology_64.c
arch/x86/mm/kmmio.c [new file with mode: 0644]
arch/x86/mm/mmio-mod.c [new file with mode: 0644]
arch/x86/mm/numa_64.c
arch/x86/mm/pageattr-test.c
arch/x86/mm/pageattr.c
arch/x86/mm/pat.c
arch/x86/mm/pf_in.c [new file with mode: 0644]
arch/x86/mm/pf_in.h [new file with mode: 0644]
arch/x86/mm/pgtable.c
arch/x86/mm/pgtable_32.c
arch/x86/mm/srat_32.c [moved from arch/x86/kernel/srat_32.c with 56% similarity]
arch/x86/mm/srat_64.c
arch/x86/mm/testmmiotrace.c [new file with mode: 0644]
arch/x86/oprofile/nmi_int.c
arch/x86/pci/Makefile
arch/x86/pci/Makefile_32 [deleted file]
arch/x86/pci/Makefile_64 [deleted file]
arch/x86/pci/acpi.c
arch/x86/pci/amd_bus.c [moved from arch/x86/pci/k8-bus_64.c with 91% similarity]
arch/x86/pci/common.c
arch/x86/pci/direct.c
arch/x86/pci/i386.c
arch/x86/pci/init.c
arch/x86/pci/irq.c
arch/x86/pci/legacy.c
arch/x86/pci/mmconfig-shared.c
arch/x86/pci/mp_bus_to_node.c [deleted file]
arch/x86/pci/numa.c
arch/x86/pci/pci.h
arch/x86/pci/visws.c
arch/x86/power/hibernate_64.c
arch/x86/vdso/vclock_gettime.c
arch/x86/vdso/vdso32-setup.c
arch/x86/vdso/vgetcpu.c
arch/x86/vdso/vma.c
arch/x86/xen/Kconfig
arch/x86/xen/Makefile
arch/x86/xen/enlighten.c
arch/x86/xen/manage.c [deleted file]
arch/x86/xen/mmu.c
arch/x86/xen/mmu.h
arch/x86/xen/multicalls.c
arch/x86/xen/multicalls.h
arch/x86/xen/setup.c
arch/x86/xen/smp.c
arch/x86/xen/suspend.c [new file with mode: 0644]
arch/x86/xen/time.c
arch/x86/xen/xen-head.S
arch/x86/xen/xen-ops.h
block/Kconfig
block/Makefile
block/as-iosched.c
block/blk-core.c
block/blk-integrity.c [new file with mode: 0644]
block/blk-map.c
block/blk-merge.c
block/blk-settings.c
block/blk.h
block/blktrace.c
block/bsg.c
block/cfq-iosched.c
block/cmd-filter.c [new file with mode: 0644]
block/elevator.c
block/genhd.c
block/scsi_ioctl.c
crypto/Kconfig
crypto/Makefile
crypto/ahash.c [new file with mode: 0644]
crypto/api.c
crypto/camellia.c
crypto/chainiv.c
crypto/crc32c.c
crypto/cryptd.c
crypto/digest.c
crypto/hash.c
crypto/hmac.c
crypto/internal.h
crypto/prng.c [new file with mode: 0644]
crypto/prng.h [new file with mode: 0644]
crypto/ripemd.h [new file with mode: 0644]
crypto/rmd128.c [new file with mode: 0644]
crypto/rmd160.c [new file with mode: 0644]
crypto/rmd256.c [new file with mode: 0644]
crypto/rmd320.c [new file with mode: 0644]
crypto/tcrypt.c
crypto/tcrypt.h
drivers/Makefile
drivers/acpi/Kconfig
drivers/ata/libata-acpi.c
drivers/ata/libata-scsi.c
drivers/ata/pata_sis.c
drivers/base/power/trace.c
drivers/base/topology.c
drivers/block/DAC960.c
drivers/block/aoe/aoechr.c
drivers/block/aoe/aoecmd.c
drivers/block/paride/pg.c
drivers/block/paride/pt.c
drivers/block/pktcdvd.c
drivers/block/xen-blkfront.c
drivers/bluetooth/hci_vhci.c
drivers/cdrom/cdrom.c
drivers/char/Makefile
drivers/char/agp/amd64-agp.c
drivers/char/agp/frontend.c
drivers/char/apm-emulation.c
drivers/char/briq_panel.c
drivers/char/cs5535_gpio.c
drivers/char/drm/Makefile [deleted file]
drivers/char/ds1286.c
drivers/char/ds1620.c
drivers/char/dsp56k.c
drivers/char/dtlk.c
drivers/char/efirtc.c
drivers/char/genrtc.c
drivers/char/hpet.c
drivers/char/hvc_xen.c
drivers/char/hw_random/core.c
drivers/char/ip2/ip2main.c
drivers/char/ip27-rtc.c
drivers/char/ipmi/ipmi_devintf.c
drivers/char/ipmi/ipmi_watchdog.c
drivers/char/lcd.c
drivers/char/lp.c
drivers/char/mbcs.c
drivers/char/mem.c
drivers/char/misc.c
drivers/char/mwave/mwavedd.c
drivers/char/nvram.c
drivers/char/pc8736x_gpio.c
drivers/char/pcmcia/cm4000_cs.c
drivers/char/pcmcia/cm4040_cs.c
drivers/char/pcmcia/ipwireless/hardware.c
drivers/char/pcmcia/ipwireless/main.c
drivers/char/ppdev.c
drivers/char/raw.c
drivers/char/rtc.c
drivers/char/scx200_gpio.c
drivers/char/snsc.c
drivers/char/sonypi.c
drivers/char/tb0219.c
drivers/char/tlclk.c
drivers/char/tpm/tpm.c
drivers/char/tpm/tpm_tis.c
drivers/char/tty_io.c
drivers/char/vc_screen.c
drivers/char/viotape.c
drivers/char/vr41xx_giu.c
drivers/char/xilinx_hwicap/xilinx_hwicap.c
drivers/crypto/Kconfig
drivers/crypto/Makefile
drivers/crypto/hifn_795x.c
drivers/crypto/ixp4xx_crypto.c [new file with mode: 0644]
drivers/crypto/padlock-aes.c
drivers/crypto/padlock-sha.c
drivers/crypto/talitos.c [new file with mode: 0644]
drivers/crypto/talitos.h [new file with mode: 0644]
drivers/firmware/Kconfig
drivers/firmware/Makefile
drivers/firmware/dmi_scan.c
drivers/firmware/memmap.c [new file with mode: 0644]
drivers/gpu/Makefile [new file with mode: 0644]
drivers/gpu/drm/Kconfig [moved from drivers/char/drm/Kconfig with 100% similarity]
drivers/gpu/drm/Makefile [new file with mode: 0644]
drivers/gpu/drm/README.drm [moved from drivers/char/drm/README.drm with 100% similarity]
drivers/gpu/drm/ati_pcigart.c [moved from drivers/char/drm/ati_pcigart.c with 100% similarity]
drivers/gpu/drm/drm_agpsupport.c [moved from drivers/char/drm/drm_agpsupport.c with 100% similarity]
drivers/gpu/drm/drm_auth.c [moved from drivers/char/drm/drm_auth.c with 100% similarity]
drivers/gpu/drm/drm_bufs.c [moved from drivers/char/drm/drm_bufs.c with 100% similarity]
drivers/gpu/drm/drm_context.c [moved from drivers/char/drm/drm_context.c with 100% similarity]
drivers/gpu/drm/drm_dma.c [moved from drivers/char/drm/drm_dma.c with 100% similarity]
drivers/gpu/drm/drm_drawable.c [moved from drivers/char/drm/drm_drawable.c with 100% similarity]
drivers/gpu/drm/drm_drv.c [moved from drivers/char/drm/drm_drv.c with 100% similarity]
drivers/gpu/drm/drm_fops.c [moved from drivers/char/drm/drm_fops.c with 98% similarity]
drivers/gpu/drm/drm_hashtab.c [moved from drivers/char/drm/drm_hashtab.c with 100% similarity]
drivers/gpu/drm/drm_ioc32.c [moved from drivers/char/drm/drm_ioc32.c with 100% similarity]
drivers/gpu/drm/drm_ioctl.c [moved from drivers/char/drm/drm_ioctl.c with 100% similarity]
drivers/gpu/drm/drm_irq.c [moved from drivers/char/drm/drm_irq.c with 100% similarity]
drivers/gpu/drm/drm_lock.c [moved from drivers/char/drm/drm_lock.c with 100% similarity]
drivers/gpu/drm/drm_memory.c [moved from drivers/char/drm/drm_memory.c with 100% similarity]
drivers/gpu/drm/drm_mm.c [moved from drivers/char/drm/drm_mm.c with 100% similarity]
drivers/gpu/drm/drm_pci.c [moved from drivers/char/drm/drm_pci.c with 100% similarity]
drivers/gpu/drm/drm_proc.c [moved from drivers/char/drm/drm_proc.c with 100% similarity]
drivers/gpu/drm/drm_scatter.c [moved from drivers/char/drm/drm_scatter.c with 100% similarity]
drivers/gpu/drm/drm_sman.c [moved from drivers/char/drm/drm_sman.c with 100% similarity]
drivers/gpu/drm/drm_stub.c [moved from drivers/char/drm/drm_stub.c with 100% similarity]
drivers/gpu/drm/drm_sysfs.c [moved from drivers/char/drm/drm_sysfs.c with 100% similarity]
drivers/gpu/drm/drm_vm.c [moved from drivers/char/drm/drm_vm.c with 100% similarity]
drivers/gpu/drm/i810/Makefile [new file with mode: 0644]
drivers/gpu/drm/i810/i810_dma.c [moved from drivers/char/drm/i810_dma.c with 100% similarity]
drivers/gpu/drm/i810/i810_drv.c [moved from drivers/char/drm/i810_drv.c with 100% similarity]
drivers/gpu/drm/i810/i810_drv.h [moved from drivers/char/drm/i810_drv.h with 100% similarity]
drivers/gpu/drm/i830/Makefile [new file with mode: 0644]
drivers/gpu/drm/i830/i830_dma.c [moved from drivers/char/drm/i830_dma.c with 100% similarity]
drivers/gpu/drm/i830/i830_drv.c [moved from drivers/char/drm/i830_drv.c with 100% similarity]
drivers/gpu/drm/i830/i830_drv.h [moved from drivers/char/drm/i830_drv.h with 100% similarity]
drivers/gpu/drm/i830/i830_irq.c [moved from drivers/char/drm/i830_irq.c with 100% similarity]
drivers/gpu/drm/i915/Makefile [new file with mode: 0644]
drivers/gpu/drm/i915/i915_dma.c [moved from drivers/char/drm/i915_dma.c with 100% similarity]
drivers/gpu/drm/i915/i915_drv.c [moved from drivers/char/drm/i915_drv.c with 100% similarity]
drivers/gpu/drm/i915/i915_drv.h [moved from drivers/char/drm/i915_drv.h with 100% similarity]
drivers/gpu/drm/i915/i915_ioc32.c [moved from drivers/char/drm/i915_ioc32.c with 100% similarity]
drivers/gpu/drm/i915/i915_irq.c [moved from drivers/char/drm/i915_irq.c with 100% similarity]
drivers/gpu/drm/i915/i915_mem.c [moved from drivers/char/drm/i915_mem.c with 100% similarity]
drivers/gpu/drm/mga/Makefile [new file with mode: 0644]
drivers/gpu/drm/mga/mga_dma.c [moved from drivers/char/drm/mga_dma.c with 100% similarity]
drivers/gpu/drm/mga/mga_drv.c [moved from drivers/char/drm/mga_drv.c with 100% similarity]
drivers/gpu/drm/mga/mga_drv.h [moved from drivers/char/drm/mga_drv.h with 100% similarity]
drivers/gpu/drm/mga/mga_ioc32.c [moved from drivers/char/drm/mga_ioc32.c with 100% similarity]
drivers/gpu/drm/mga/mga_irq.c [moved from drivers/char/drm/mga_irq.c with 100% similarity]
drivers/gpu/drm/mga/mga_state.c [moved from drivers/char/drm/mga_state.c with 100% similarity]
drivers/gpu/drm/mga/mga_ucode.h [moved from drivers/char/drm/mga_ucode.h with 100% similarity]
drivers/gpu/drm/mga/mga_warp.c [moved from drivers/char/drm/mga_warp.c with 100% similarity]
drivers/gpu/drm/r128/Makefile [new file with mode: 0644]
drivers/gpu/drm/r128/r128_cce.c [moved from drivers/char/drm/r128_cce.c with 100% similarity]
drivers/gpu/drm/r128/r128_drv.c [moved from drivers/char/drm/r128_drv.c with 100% similarity]
drivers/gpu/drm/r128/r128_drv.h [moved from drivers/char/drm/r128_drv.h with 100% similarity]
drivers/gpu/drm/r128/r128_ioc32.c [moved from drivers/char/drm/r128_ioc32.c with 100% similarity]
drivers/gpu/drm/r128/r128_irq.c [moved from drivers/char/drm/r128_irq.c with 100% similarity]
drivers/gpu/drm/r128/r128_state.c [moved from drivers/char/drm/r128_state.c with 100% similarity]
drivers/gpu/drm/radeon/Makefile [new file with mode: 0644]
drivers/gpu/drm/radeon/r300_cmdbuf.c [moved from drivers/char/drm/r300_cmdbuf.c with 100% similarity]
drivers/gpu/drm/radeon/r300_reg.h [moved from drivers/char/drm/r300_reg.h with 100% similarity]
drivers/gpu/drm/radeon/radeon_cp.c [moved from drivers/char/drm/radeon_cp.c with 100% similarity]
drivers/gpu/drm/radeon/radeon_drv.c [moved from drivers/char/drm/radeon_drv.c with 100% similarity]
drivers/gpu/drm/radeon/radeon_drv.h [moved from drivers/char/drm/radeon_drv.h with 100% similarity]
drivers/gpu/drm/radeon/radeon_ioc32.c [moved from drivers/char/drm/radeon_ioc32.c with 100% similarity]
drivers/gpu/drm/radeon/radeon_irq.c [moved from drivers/char/drm/radeon_irq.c with 100% similarity]
drivers/gpu/drm/radeon/radeon_mem.c [moved from drivers/char/drm/radeon_mem.c with 100% similarity]
drivers/gpu/drm/radeon/radeon_microcode.h [moved from drivers/char/drm/radeon_microcode.h with 100% similarity]
drivers/gpu/drm/radeon/radeon_state.c [moved from drivers/char/drm/radeon_state.c with 100% similarity]
drivers/gpu/drm/savage/Makefile [new file with mode: 0644]
drivers/gpu/drm/savage/savage_bci.c [moved from drivers/char/drm/savage_bci.c with 100% similarity]
drivers/gpu/drm/savage/savage_drv.c [moved from drivers/char/drm/savage_drv.c with 100% similarity]
drivers/gpu/drm/savage/savage_drv.h [moved from drivers/char/drm/savage_drv.h with 100% similarity]
drivers/gpu/drm/savage/savage_state.c [moved from drivers/char/drm/savage_state.c with 100% similarity]
drivers/gpu/drm/sis/Makefile [new file with mode: 0644]
drivers/gpu/drm/sis/sis_drv.c [moved from drivers/char/drm/sis_drv.c with 100% similarity]
drivers/gpu/drm/sis/sis_drv.h [moved from drivers/char/drm/sis_drv.h with 100% similarity]
drivers/gpu/drm/sis/sis_mm.c [moved from drivers/char/drm/sis_mm.c with 100% similarity]
drivers/gpu/drm/tdfx/Makefile [new file with mode: 0644]
drivers/gpu/drm/tdfx/tdfx_drv.c [moved from drivers/char/drm/tdfx_drv.c with 100% similarity]
drivers/gpu/drm/tdfx/tdfx_drv.h [moved from drivers/char/drm/tdfx_drv.h with 100% similarity]
drivers/gpu/drm/via/Makefile [new file with mode: 0644]
drivers/gpu/drm/via/via_3d_reg.h [moved from drivers/char/drm/via_3d_reg.h with 100% similarity]
drivers/gpu/drm/via/via_dma.c [moved from drivers/char/drm/via_dma.c with 100% similarity]
drivers/gpu/drm/via/via_dmablit.c [moved from drivers/char/drm/via_dmablit.c with 100% similarity]
drivers/gpu/drm/via/via_dmablit.h [moved from drivers/char/drm/via_dmablit.h with 100% similarity]
drivers/gpu/drm/via/via_drv.c [moved from drivers/char/drm/via_drv.c with 100% similarity]
drivers/gpu/drm/via/via_drv.h [moved from drivers/char/drm/via_drv.h with 100% similarity]
drivers/gpu/drm/via/via_irq.c [moved from drivers/char/drm/via_irq.c with 100% similarity]
drivers/gpu/drm/via/via_map.c [moved from drivers/char/drm/via_map.c with 100% similarity]
drivers/gpu/drm/via/via_mm.c [moved from drivers/char/drm/via_mm.c with 100% similarity]
drivers/gpu/drm/via/via_verifier.c [moved from drivers/char/drm/via_verifier.c with 100% similarity]
drivers/gpu/drm/via/via_verifier.h [moved from drivers/char/drm/via_verifier.h with 100% similarity]
drivers/gpu/drm/via/via_video.c [moved from drivers/char/drm/via_video.c with 100% similarity]
drivers/hid/hidraw.c
drivers/i2c/i2c-dev.c
drivers/ide/ide-tape.c
drivers/ide/legacy/ide-cs.c
drivers/infiniband/core/ucm.c
drivers/infiniband/core/ucma.c
drivers/infiniband/core/user_mad.c
drivers/infiniband/core/uverbs_main.c
drivers/infiniband/hw/ipath/ipath_file_ops.c
drivers/input/input.c
drivers/input/misc/hp_sdc_rtc.c
drivers/input/misc/uinput.c
drivers/input/mousedev.c
drivers/input/serio/serio_raw.c
drivers/input/xen-kbdfront.c
drivers/isdn/capi/capi.c
drivers/isdn/hardware/eicon/divamnt.c
drivers/isdn/hardware/eicon/divasi.c
drivers/isdn/hardware/eicon/divasmain.c
drivers/isdn/i4l/isdn_common.c
drivers/lguest/Kconfig
drivers/lguest/lg.h
drivers/macintosh/adb.c
drivers/macintosh/ans-lcd.c
drivers/macintosh/smu.c
drivers/macintosh/via-pmu.c
drivers/md/linear.c
drivers/md/raid0.c
drivers/md/raid10.c
drivers/md/raid5.c
drivers/media/dvb/dvb-core/dvbdev.c
drivers/media/radio/miropcm20-rds.c
drivers/media/video/ov7670.c
drivers/media/video/videodev.c
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptctl.c
drivers/message/fusion/mptspi.c
drivers/message/i2o/i2o_config.c
drivers/misc/atmel_pwm.c
drivers/misc/hdpuftrs/hdpu_cpustate.c
drivers/misc/phantom.c
drivers/misc/sony-laptop.c
drivers/mtd/ftl.c
drivers/mtd/maps/pcmciamtd.c
drivers/mtd/mtdchar.c
drivers/mtd/ubi/cdev.c
drivers/net/irda/nsc-ircc.c
drivers/net/irda/via-ircc.c
drivers/net/macb.c
drivers/net/ppp_generic.c
drivers/net/tun.c
drivers/net/wan/cosa.c
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/xen-netfront.c
drivers/parisc/eisa_eeprom.c
drivers/pci/intel-iommu.c
drivers/pcmcia/Kconfig
drivers/pcmcia/Makefile
drivers/pcmcia/au1000_generic.h
drivers/pcmcia/au1000_pb1x00.c
drivers/pcmcia/au1000_xxs1500.c
drivers/pcmcia/bfin_cf_pcmcia.c [new file with mode: 0644]
drivers/pcmcia/cardbus.c
drivers/pcmcia/cistpl.c
drivers/pcmcia/cs.c
drivers/pcmcia/cs_internal.h
drivers/pcmcia/ds.c
drivers/pcmcia/hd64465_ss.c
drivers/pcmcia/i82092.c
drivers/pcmcia/i82092aa.h
drivers/pcmcia/i82365.c
drivers/pcmcia/m8xx_pcmcia.c
drivers/pcmcia/pcmcia_ioctl.c
drivers/pcmcia/pcmcia_resource.c
drivers/pcmcia/pxa2xx_base.c
drivers/pcmcia/rsrc_mgr.c
drivers/pcmcia/rsrc_nonstatic.c
drivers/pcmcia/soc_common.h
drivers/pcmcia/socket_sysfs.c
drivers/pcmcia/ti113x.h
drivers/rapidio/rio-driver.c
drivers/rtc/rtc-at32ap700x.c
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-fm3130.c
drivers/rtc/rtc-m41t80.c
drivers/rtc/rtc-pcf8563.c
drivers/s390/block/dasd.c
drivers/s390/block/dasd_3990_erp.c
drivers/s390/block/dasd_eckd.c
drivers/s390/block/dasd_eer.c
drivers/s390/block/dasd_fba.c
drivers/s390/block/dcssblk.c
drivers/s390/block/xpram.c
drivers/s390/char/con3215.c
drivers/s390/char/con3270.c
drivers/s390/char/fs3270.c
drivers/s390/char/monreader.c
drivers/s390/char/monwriter.c
drivers/s390/char/raw3270.c
drivers/s390/char/sclp.c
drivers/s390/char/sclp_cmd.c
drivers/s390/char/sclp_con.c
drivers/s390/char/sclp_config.c
drivers/s390/char/sclp_cpi_sys.c
drivers/s390/char/sclp_quiesce.c
drivers/s390/char/sclp_rw.c
drivers/s390/char/sclp_sdias.c
drivers/s390/char/sclp_tty.c
drivers/s390/char/sclp_tty.h
drivers/s390/char/sclp_vt220.c
drivers/s390/char/tape_34xx.c
drivers/s390/char/tape_3590.c
drivers/s390/char/tape_char.c
drivers/s390/char/tape_core.c
drivers/s390/char/tty3270.c
drivers/s390/char/vmcp.c
drivers/s390/char/vmlogrdr.c
drivers/s390/char/vmur.c
drivers/s390/char/vmwatchdog.c
drivers/s390/char/zcore.c
drivers/s390/cio/Makefile
drivers/s390/cio/airq.c
drivers/s390/cio/chp.c
drivers/s390/cio/chp.h
drivers/s390/cio/chsc.c
drivers/s390/cio/chsc.h
drivers/s390/cio/chsc_sch.c [new file with mode: 0644]
drivers/s390/cio/chsc_sch.h [new file with mode: 0644]
drivers/s390/cio/cio.c
drivers/s390/cio/cio.h
drivers/s390/cio/cmf.c
drivers/s390/cio/css.c
drivers/s390/cio/css.h
drivers/s390/cio/device.c
drivers/s390/cio/device.h
drivers/s390/cio/device_fsm.c
drivers/s390/cio/device_id.c
drivers/s390/cio/device_ops.c
drivers/s390/cio/device_pgid.c
drivers/s390/cio/device_status.c
drivers/s390/cio/fcx.c [new file with mode: 0644]
drivers/s390/cio/idset.h
drivers/s390/cio/io_sch.h
drivers/s390/cio/ioasm.h
drivers/s390/cio/isc.c [new file with mode: 0644]
drivers/s390/cio/itcw.c [new file with mode: 0644]
drivers/s390/cio/qdio.c
drivers/s390/cio/qdio.h
drivers/s390/cio/scsw.c [new file with mode: 0644]
drivers/s390/crypto/ap_bus.c
drivers/s390/crypto/ap_bus.h
drivers/s390/crypto/zcrypt_api.c
drivers/s390/crypto/zcrypt_api.h
drivers/s390/crypto/zcrypt_cex2a.c
drivers/s390/crypto/zcrypt_error.h
drivers/s390/crypto/zcrypt_pcica.c
drivers/s390/crypto/zcrypt_pcicc.c
drivers/s390/crypto/zcrypt_pcixcc.c
drivers/s390/net/claw.c
drivers/s390/net/ctcm_fsms.c
drivers/s390/net/ctcm_main.c
drivers/s390/net/cu3088.c
drivers/s390/net/cu3088.h
drivers/s390/net/lcs.c
drivers/s390/net/netiucv.c
drivers/s390/net/qeth_core_main.c
drivers/s390/net/qeth_l3_main.c
drivers/s390/net/smsgiucv.c
drivers/s390/s390mach.c
drivers/s390/s390mach.h
drivers/sbus/char/bpp.c
drivers/sbus/char/cpwatchdog.c
drivers/sbus/char/display7seg.c
drivers/sbus/char/envctrl.c
drivers/sbus/char/flash.c
drivers/sbus/char/jsflash.c
drivers/sbus/char/openprom.c
drivers/sbus/char/riowatchdog.c
drivers/sbus/char/rtc.c
drivers/sbus/char/uctrl.c
drivers/sbus/char/vfc_dev.c
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-xxxx.c
drivers/scsi/aacraid/linit.c
drivers/scsi/ch.c
drivers/scsi/dpt_i2o.c
drivers/scsi/gdth.c
drivers/scsi/ipr.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mm.c
drivers/scsi/megaraid/megaraid_sas.c
drivers/scsi/osst.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_tgt_if.c
drivers/scsi/sg.c
drivers/scsi/sr.c
drivers/scsi/st.c
drivers/serial/8250.c
drivers/serial/atmel_serial.c
drivers/spi/spidev.c
drivers/ssb/driver_pcicore.c
drivers/telephony/phonedev.c
drivers/uio/uio.c
drivers/usb/core/devio.c
drivers/usb/core/file.c
drivers/usb/gadget/printer.c
drivers/usb/host/ohci-au1xxx.c
drivers/usb/host/ohci-lh7a404.c
drivers/usb/host/ohci-s3c2410.c
drivers/usb/host/ohci-sa1111.c
drivers/usb/mon/mon_bin.c
drivers/video/Kconfig
drivers/video/fb_defio.c
drivers/video/fbmem.c
drivers/video/sgivwfb.c
drivers/video/xen-fbfront.c
drivers/xen/Makefile
drivers/xen/balloon.c
drivers/xen/events.c
drivers/xen/grant-table.c
drivers/xen/manage.c [new file with mode: 0644]
drivers/xen/xenbus/xenbus_client.c
drivers/xen/xenbus/xenbus_comms.c
drivers/xen/xenbus/xenbus_xs.c
fs/Kconfig
fs/Makefile
fs/bio-integrity.c [new file with mode: 0644]
fs/bio.c
fs/char_dev.c
fs/cifs/cifsacl.c
fs/cifs/cifsfs.c
fs/cifs/inode.c
fs/dlm/user.c
fs/ecryptfs/file.c
fs/exec.c
fs/fat/cache.c
fs/fat/dir.c
fs/fat/file.c
fs/fat/inode.c
fs/fcntl.c
fs/gfs2/ops_file.c
fs/msdos/namei.c
fs/namespace.c
fs/ncpfs/file.c
fs/nfs/file.c
fs/ocfs2/dlmglue.c
fs/ocfs2/stack_user.c
fs/proc/base.c
fs/proc/proc_misc.c
fs/proc/task_mmu.c
fs/proc/task_nommu.c
fs/ramfs/file-mmu.c
fs/ramfs/file-nommu.c
fs/read_write.c
fs/smbfs/file.c
fs/splice.c
fs/vfat/namei.c
fs/xfs/xfs_log.c
include/Kbuild
include/asm-arm/ftrace.h [new file with mode: 0644]
include/asm-arm/kprobes.h
include/asm-avr32/arch-at32ap/board.h
include/asm-avr32/arch-at32ap/init.h
include/asm-avr32/arch-at32ap/pm.h
include/asm-avr32/arch-at32ap/sram.h [new file with mode: 0644]
include/asm-avr32/mmu_context.h
include/asm-avr32/pci.h
include/asm-avr32/pgalloc.h
include/asm-avr32/pgtable.h
include/asm-avr32/setup.h
include/asm-avr32/thread_info.h
include/asm-avr32/tlbflush.h
include/asm-frv/system.h
include/asm-generic/pgtable.h
include/asm-generic/topology.h
include/asm-generic/vmlinux.lds.h
include/asm-mips/mach-au1x00/au1xxx_psc.h
include/asm-powerpc/ftrace.h [new file with mode: 0644]
include/asm-powerpc/hw_irq.h
include/asm-s390/Kbuild
include/asm-s390/airq.h
include/asm-s390/ccwdev.h
include/asm-s390/chpid.h
include/asm-s390/chsc.h [new file with mode: 0644]
include/asm-s390/cio.h
include/asm-s390/elf.h
include/asm-s390/etr.h
include/asm-s390/fcx.h [new file with mode: 0644]
include/asm-s390/ipl.h
include/asm-s390/isc.h [new file with mode: 0644]
include/asm-s390/itcw.h [new file with mode: 0644]
include/asm-s390/pgtable.h
include/asm-s390/processor.h
include/asm-s390/ptrace.h
include/asm-s390/schid.h [moved from drivers/s390/cio/schid.h with 65% similarity]
include/asm-s390/sclp.h
include/asm-s390/setup.h
include/asm-s390/sparsemem.h
include/asm-s390/timer.h
include/asm-s390/zcrypt.h
include/asm-sparc64/ftrace.h [new file with mode: 0644]
include/asm-x86/acpi.h
include/asm-x86/alternative.h
include/asm-x86/amd_iommu.h [new file with mode: 0644]
include/asm-x86/amd_iommu_types.h [new file with mode: 0644]
include/asm-x86/apic.h
include/asm-x86/asm.h
include/asm-x86/atomic_64.h
include/asm-x86/bios_ebda.h
include/asm-x86/bitops.h
include/asm-x86/bootparam.h
include/asm-x86/cmpxchg_64.h
include/asm-x86/cpufeature.h
include/asm-x86/current.h
include/asm-x86/current_32.h [deleted file]
include/asm-x86/current_64.h [deleted file]
include/asm-x86/desc.h
include/asm-x86/desc_defs.h
include/asm-x86/dmi.h
include/asm-x86/dwarf2.h
include/asm-x86/dwarf2_32.h [deleted file]
include/asm-x86/dwarf2_64.h [deleted file]
include/asm-x86/e820.h
include/asm-x86/e820_32.h [deleted file]
include/asm-x86/e820_64.h [deleted file]
include/asm-x86/efi.h
include/asm-x86/elf.h
include/asm-x86/fixmap.h
include/asm-x86/fixmap_32.h
include/asm-x86/fixmap_64.h
include/asm-x86/ftrace.h [new file with mode: 0644]
include/asm-x86/gart.h
include/asm-x86/genapic_64.h
include/asm-x86/hardirq.h
include/asm-x86/highmem.h
include/asm-x86/hpet.h
include/asm-x86/hw_irq.h
include/asm-x86/hw_irq_32.h [deleted file]
include/asm-x86/hw_irq_64.h [deleted file]
include/asm-x86/i8259.h
include/asm-x86/io.h
include/asm-x86/io_32.h
include/asm-x86/io_64.h
include/asm-x86/io_apic.h
include/asm-x86/iommu.h
include/asm-x86/ipi.h
include/asm-x86/irq.h
include/asm-x86/irq_32.h [deleted file]
include/asm-x86/irq_64.h [deleted file]
include/asm-x86/irq_vectors.h [new file with mode: 0644]
include/asm-x86/irqflags.h
include/asm-x86/mach-bigsmp/mach_apic.h
include/asm-x86/mach-bigsmp/mach_mpspec.h [deleted file]
include/asm-x86/mach-default/irq_vectors.h [deleted file]
include/asm-x86/mach-default/irq_vectors_limits.h [deleted file]
include/asm-x86/mach-default/mach_apic.h
include/asm-x86/mach-default/setup_arch.h
include/asm-x86/mach-default/smpboot_hooks.h
include/asm-x86/mach-es7000/mach_mpspec.h [deleted file]
include/asm-x86/mach-generic/mach_mpparse.h
include/asm-x86/mach-numaq/mach_apic.h
include/asm-x86/mach-numaq/mach_mpparse.h
include/asm-x86/mach-numaq/mach_mpspec.h [deleted file]
include/asm-x86/mach-summit/mach_mpspec.h [deleted file]
include/asm-x86/mach-visws/irq_vectors.h [deleted file]
include/asm-x86/mach-visws/mach_apic.h
include/asm-x86/mach-visws/mach_apicdef.h
include/asm-x86/mach-visws/setup_arch.h
include/asm-x86/mach-visws/smpboot_hooks.h
include/asm-x86/mach-voyager/irq_vectors.h [deleted file]
include/asm-x86/mmconfig.h [new file with mode: 0644]
include/asm-x86/mmu_context.h
include/asm-x86/mmu_context_32.h
include/asm-x86/mmu_context_64.h
include/asm-x86/mmzone_32.h
include/asm-x86/mpspec.h
include/asm-x86/mpspec_def.h
include/asm-x86/msr-index.h
include/asm-x86/msr.h
include/asm-x86/nmi.h
include/asm-x86/numa_32.h
include/asm-x86/numa_64.h
include/asm-x86/numaq.h
include/asm-x86/page.h
include/asm-x86/page_32.h
include/asm-x86/page_64.h
include/asm-x86/paravirt.h
include/asm-x86/pat.h
include/asm-x86/pci.h
include/asm-x86/pci_32.h
include/asm-x86/pda.h
include/asm-x86/percpu.h
include/asm-x86/pgalloc.h
include/asm-x86/pgtable.h
include/asm-x86/pgtable_32.h
include/asm-x86/pgtable_64.h
include/asm-x86/processor-flags.h
include/asm-x86/processor.h
include/asm-x86/proto.h
include/asm-x86/ptrace.h
include/asm-x86/reboot.h
include/asm-x86/required-features.h
include/asm-x86/resume-trace.h
include/asm-x86/seccomp_32.h
include/asm-x86/seccomp_64.h
include/asm-x86/segment.h
include/asm-x86/setup.h
include/asm-x86/smp.h
include/asm-x86/srat.h
include/asm-x86/string_32.h
include/asm-x86/suspend_32.h
include/asm-x86/system.h
include/asm-x86/thread_info.h
include/asm-x86/thread_info_32.h [deleted file]
include/asm-x86/thread_info_64.h [deleted file]
include/asm-x86/time.h
include/asm-x86/timer.h
include/asm-x86/topology.h
include/asm-x86/tsc.h
include/asm-x86/uaccess.h
include/asm-x86/uaccess_32.h
include/asm-x86/uaccess_64.h
include/asm-x86/unistd_64.h
include/asm-x86/uv/uv_bau.h [new file with mode: 0644]
include/asm-x86/uv/uv_hub.h
include/asm-x86/uv/uv_mmrs.h
include/asm-x86/visws/cobalt.h [moved from include/asm-x86/mach-visws/cobalt.h with 100% similarity]
include/asm-x86/visws/lithium.h [moved from include/asm-x86/mach-visws/lithium.h with 100% similarity]
include/asm-x86/visws/piix4.h [moved from include/asm-x86/mach-visws/piix4.h with 100% similarity]
include/asm-x86/visws/sgivw.h [new file with mode: 0644]
include/asm-x86/vm86.h
include/asm-x86/vmi_time.h
include/asm-x86/vsyscall.h
include/asm-x86/xen/hypercall.h
include/asm-x86/xen/page.h
include/asm-x86/xor_32.h
include/asm-x86/xor_64.h
include/crypto/hash.h [new file with mode: 0644]
include/crypto/internal/hash.h [new file with mode: 0644]
include/drm/Kbuild [new file with mode: 0644]
include/drm/drm.h [moved from drivers/char/drm/drm.h with 100% similarity]
include/drm/drmP.h [moved from drivers/char/drm/drmP.h with 100% similarity]
include/drm/drm_core.h [moved from drivers/char/drm/drm_core.h with 100% similarity]
include/drm/drm_hashtab.h [moved from drivers/char/drm/drm_hashtab.h with 100% similarity]
include/drm/drm_memory.h [moved from drivers/char/drm/drm_memory.h with 100% similarity]
include/drm/drm_memory_debug.h [moved from drivers/char/drm/drm_memory_debug.h with 100% similarity]
include/drm/drm_os_linux.h [moved from drivers/char/drm/drm_os_linux.h with 100% similarity]
include/drm/drm_pciids.h [moved from drivers/char/drm/drm_pciids.h with 100% similarity]
include/drm/drm_sarea.h [moved from drivers/char/drm/drm_sarea.h with 100% similarity]
include/drm/drm_sman.h [moved from drivers/char/drm/drm_sman.h with 100% similarity]
include/drm/i810_drm.h [moved from drivers/char/drm/i810_drm.h with 100% similarity]
include/drm/i830_drm.h [moved from drivers/char/drm/i830_drm.h with 100% similarity]
include/drm/i915_drm.h [moved from drivers/char/drm/i915_drm.h with 100% similarity]
include/drm/mga_drm.h [moved from drivers/char/drm/mga_drm.h with 100% similarity]
include/drm/r128_drm.h [moved from drivers/char/drm/r128_drm.h with 100% similarity]
include/drm/radeon_drm.h [moved from drivers/char/drm/radeon_drm.h with 100% similarity]
include/drm/savage_drm.h [moved from drivers/char/drm/savage_drm.h with 100% similarity]
include/drm/sis_drm.h [moved from drivers/char/drm/sis_drm.h with 100% similarity]
include/drm/via_drm.h [moved from drivers/char/drm/via_drm.h with 100% similarity]
include/linux/acpi.h
include/linux/bio.h
include/linux/blkdev.h
include/linux/blktrace_api.h
include/linux/bootmem.h
include/linux/console.h
include/linux/crypto.h
include/linux/delay.h
include/linux/efi.h
include/linux/firmware-map.h [new file with mode: 0644]
include/linux/fs.h
include/linux/ftrace.h [new file with mode: 0644]
include/linux/genhd.h
include/linux/iocontext.h
include/linux/irqflags.h
include/linux/kernel_stat.h
include/linux/kprobes.h
include/linux/linkage.h
include/linux/lockdep.h
include/linux/marker.h
include/linux/mm.h
include/linux/mmiotrace.h [new file with mode: 0644]
include/linux/mod_devicetable.h
include/linux/page-flags.h
include/linux/pageblock-flags.h
include/linux/preempt.h
include/linux/ptrace.h
include/linux/resume-trace.h
include/linux/sched.h
include/linux/security.h
include/linux/smp_lock.h
include/linux/writeback.h
include/linux/xfrm.h
include/pcmcia/bulkmem.h [deleted file]
include/pcmcia/cistpl.h
include/pcmcia/cs.h
include/pcmcia/cs_types.h
include/pcmcia/ds.h
include/pcmcia/ss.h
include/pcmcia/version.h [deleted file]
include/sound/ad1843.h [new file with mode: 0644]
include/sound/control.h
include/sound/core.h
include/sound/cs4231-regs.h
include/sound/cs4231.h
include/sound/emu10k1.h
include/sound/seq_kernel.h
include/sound/soc-dapm.h
include/sound/soc.h
include/sound/uda1341.h
include/sound/version.h
include/xen/events.h
include/xen/grant_table.h
include/xen/hvc-console.h
include/xen/interface/elfnote.h
include/xen/interface/features.h
include/xen/interface/io/fbif.h
include/xen/interface/io/kbdif.h
include/xen/interface/memory.h
include/xen/interface/xen.h
include/xen/xen-ops.h
init/calibrate.c
kernel/Makefile
kernel/cpu.c
kernel/cpuset.c
kernel/exit.c
kernel/fork.c
kernel/kprobes.c
kernel/kthread.c
kernel/lockdep.c
kernel/lockdep_internals.h
kernel/lockdep_proc.c
kernel/marker.c
kernel/mutex-debug.c
kernel/mutex.c
kernel/pm_qos_params.c
kernel/printk.c
kernel/ptrace.c
kernel/rcupreempt.c
kernel/sched.c
kernel/sched_clock.c
kernel/sched_cpupri.c [new file with mode: 0644]
kernel/sched_cpupri.h [new file with mode: 0644]
kernel/sched_debug.c
kernel/sched_fair.c
kernel/sched_features.h
kernel/sched_rt.c
kernel/sched_stats.h
kernel/semaphore.c
kernel/softirq.c
kernel/spinlock.c
kernel/stop_machine.c
kernel/sysctl.c
kernel/time/tick-broadcast.c
kernel/time/tick-sched.c
kernel/trace/Kconfig [new file with mode: 0644]
kernel/trace/Makefile [new file with mode: 0644]
kernel/trace/ftrace.c [new file with mode: 0644]
kernel/trace/trace.c [new file with mode: 0644]
kernel/trace/trace.h [new file with mode: 0644]
kernel/trace/trace_functions.c [new file with mode: 0644]
kernel/trace/trace_irqsoff.c [new file with mode: 0644]
kernel/trace/trace_mmiotrace.c [new file with mode: 0644]
kernel/trace/trace_sched_switch.c [new file with mode: 0644]
kernel/trace/trace_sched_wakeup.c [new file with mode: 0644]
kernel/trace/trace_selftest.c [new file with mode: 0644]
kernel/trace/trace_selftest_dynamic.c [new file with mode: 0644]
kernel/trace/trace_sysprof.c [new file with mode: 0644]
lib/Kconfig.debug
lib/Makefile
lib/smp_processor_id.c
mm/Kconfig
mm/mprotect.c
mm/page-writeback.c
mm/page_alloc.c
mm/slub.c
net/ipv4/fib_trie.c
net/ipv4/netfilter/nf_nat_snmp_basic.c
net/ipv4/tcp_probe.c
net/ipv6/addrconf.c
net/ipv6/exthdrs.c
net/irda/irnet/irnet.h
net/irda/irnet/irnet_ppp.c
net/irda/irnetlink.c
net/iucv/af_iucv.c
net/iucv/iucv.c
net/mac80211/main.c
net/mac80211/mlme.c
net/mac80211/rc80211_pid.h
net/mac80211/rc80211_pid_algo.c
net/netfilter/nf_conntrack_proto_tcp.c
net/netlabel/netlabel_cipso_v4.c
net/netlabel/netlabel_mgmt.c
net/netlabel/netlabel_unlabeled.c
net/sctp/sm_statefuns.c
net/sctp/ulpevent.c
net/xfrm/xfrm_user.c
scripts/Makefile.lib
scripts/mod/file2alias.c
security/Kconfig
security/Makefile
security/capability.c
security/commoncap.c
security/device_cgroup.c
security/dummy.c [deleted file]
security/root_plug.c
security/security.c
security/selinux/hooks.c
security/selinux/include/audit.h
security/selinux/include/avc.h
security/selinux/include/objsec.h
security/selinux/include/security.h
security/selinux/netnode.c
security/selinux/netport.c
security/selinux/selinuxfs.c
security/selinux/ss/avtab.c
security/selinux/ss/context.h
security/selinux/ss/mls.c
security/selinux/ss/mls.h
security/selinux/ss/policydb.c
security/selinux/ss/services.c
security/selinux/ss/sidtab.c
security/selinux/ss/sidtab.h
security/smack/smack_lsm.c
sound/Kconfig
sound/aoa/Kconfig
sound/aoa/codecs/Kconfig
sound/aoa/fabrics/Kconfig
sound/aoa/soundbus/Kconfig
sound/arm/Kconfig
sound/arm/sa11xx-uda1341.c
sound/core/Kconfig
sound/core/control.c
sound/core/init.c
sound/core/memalloc.c
sound/core/pcm_native.c
sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_device.c
sound/core/sound.c
sound/core/timer.c
sound/drivers/Kconfig
sound/drivers/vx/vx_hwdep.c
sound/i2c/cs8427.c
sound/i2c/l3/uda1341.c
sound/isa/Kconfig
sound/isa/cs423x/cs4231_lib.c
sound/isa/opti9xx/opti92x-ad1848.c
sound/isa/sb/Makefile
sound/isa/wavefront/wavefront_synth.c
sound/mips/Kconfig
sound/mips/Makefile
sound/mips/ad1843.c [new file with mode: 0644]
sound/mips/hal2.c [new file with mode: 0644]
sound/mips/hal2.h [new file with mode: 0644]
sound/mips/sgio2audio.c [new file with mode: 0644]
sound/oss/Kconfig
sound/oss/dmasound/dmasound_core.c
sound/oss/dmasound/dmasound_paula.c
sound/oss/dmasound/dmasound_q40.c
sound/oss/msnd.c
sound/oss/msnd.h
sound/oss/msnd_classic.h
sound/oss/msnd_pinnacle.c
sound/oss/msnd_pinnacle.h
sound/oss/vwsnd.c
sound/parisc/Kconfig
sound/pci/Kconfig
sound/pci/Makefile
sound/pci/ac97/Makefile
sound/pci/ac97/ac97_codec.c
sound/pci/ac97/ac97_patch.c
sound/pci/ak4531_codec.c [moved from sound/pci/ac97/ak4531_codec.c with 96% similarity]
sound/pci/au88x0/au88x0_game.c
sound/pci/azt3328.c
sound/pci/azt3328.h
sound/pci/ca0106/ca0106_main.c
sound/pci/emu10k1/emu10k1_main.c
sound/pci/emu10k1/emumixer.c
sound/pci/emu10k1/memory.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_hwdep.c
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_proc.c
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_sigmatel.c
sound/pci/ice1712/envy24ht.h
sound/pci/ice1712/ice1712.h
sound/pci/ice1712/ice1724.c
sound/pci/maestro3.c
sound/pci/nm256/nm256.c
sound/pci/oxygen/hifier.c
sound/pci/oxygen/oxygen.c
sound/pci/oxygen/oxygen.h
sound/pci/oxygen/oxygen_io.c
sound/pci/oxygen/oxygen_lib.c
sound/pci/oxygen/oxygen_pcm.c
sound/pci/oxygen/virtuoso.c
sound/pci/pcxhr/pcxhr.c
sound/pci/pcxhr/pcxhr_core.c
sound/pci/trident/trident_main.c
sound/pci/trident/trident_memory.c
sound/pci/via82xx.c
sound/pci/ymfpci/ymfpci_main.c
sound/pcmcia/Kconfig
sound/pcmcia/vx/vxp_ops.c
sound/ppc/Kconfig
sound/ppc/daca.c
sound/ppc/tumbler.c
sound/sh/Kconfig
sound/soc/Kconfig
sound/soc/Makefile
sound/soc/at32/Kconfig [new file with mode: 0644]
sound/soc/at32/Makefile [new file with mode: 0644]
sound/soc/at32/at32-pcm.c [new file with mode: 0644]
sound/soc/at32/at32-pcm.h [new file with mode: 0644]
sound/soc/at32/at32-ssc.c [new file with mode: 0644]
sound/soc/at32/at32-ssc.h [new file with mode: 0644]
sound/soc/at32/playpaq_wm8510.c [new file with mode: 0644]
sound/soc/at91/Kconfig
sound/soc/at91/at91-pcm.c
sound/soc/at91/at91-ssc.c
sound/soc/at91/at91-ssc.h
sound/soc/at91/eti_b1_wm8731.c
sound/soc/au1x/Kconfig [new file with mode: 0644]
sound/soc/au1x/Makefile [new file with mode: 0644]
sound/soc/au1x/dbdma2.c [new file with mode: 0644]
sound/soc/au1x/psc-ac97.c [new file with mode: 0644]
sound/soc/au1x/psc-i2s.c [new file with mode: 0644]
sound/soc/au1x/psc.h [new file with mode: 0644]
sound/soc/au1x/sample-ac97.c [new file with mode: 0644]
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/codecs/ac97.c
sound/soc/codecs/ac97.h
sound/soc/codecs/ak4535.c [new file with mode: 0644]
sound/soc/codecs/ak4535.h [new file with mode: 0644]
sound/soc/codecs/cs4270.c
sound/soc/codecs/cs4270.h
sound/soc/codecs/tlv320aic3x.c
sound/soc/codecs/tlv320aic3x.h
sound/soc/codecs/uda1380.c [new file with mode: 0644]
sound/soc/codecs/uda1380.h [new file with mode: 0644]
sound/soc/codecs/wm8510.c [new file with mode: 0644]
sound/soc/codecs/wm8510.h [new file with mode: 0644]
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8731.h
sound/soc/codecs/wm8750.c
sound/soc/codecs/wm8750.h
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8753.h
sound/soc/codecs/wm8990.c [new file with mode: 0644]
sound/soc/codecs/wm8990.h [new file with mode: 0644]
sound/soc/codecs/wm9712.c
sound/soc/codecs/wm9712.h
sound/soc/codecs/wm9713.c
sound/soc/codecs/wm9713.h
sound/soc/davinci/Kconfig
sound/soc/davinci/davinci-evm.c
sound/soc/davinci/davinci-i2s.c
sound/soc/davinci/davinci-i2s.h
sound/soc/davinci/davinci-pcm.c
sound/soc/fsl/Kconfig
sound/soc/fsl/fsl_dma.c
sound/soc/fsl/fsl_dma.h
sound/soc/fsl/fsl_ssi.c
sound/soc/fsl/fsl_ssi.h
sound/soc/fsl/mpc8610_hpcd.c
sound/soc/omap/Kconfig
sound/soc/omap/n810.c
sound/soc/omap/omap-mcbsp.c
sound/soc/omap/omap-mcbsp.h
sound/soc/omap/omap-pcm.c
sound/soc/pxa/Kconfig
sound/soc/pxa/Makefile
sound/soc/pxa/corgi.c
sound/soc/pxa/em-x270.c [new file with mode: 0644]
sound/soc/pxa/poodle.c
sound/soc/pxa/pxa2xx-ac97.c
sound/soc/pxa/pxa2xx-ac97.h
sound/soc/pxa/pxa2xx-i2s.c
sound/soc/pxa/pxa2xx-i2s.h
sound/soc/pxa/pxa2xx-pcm.c
sound/soc/pxa/spitz.c
sound/soc/pxa/tosa.c
sound/soc/s3c24xx/Kconfig
sound/soc/s3c24xx/neo1973_wm8753.c
sound/soc/s3c24xx/s3c2412-i2s.c
sound/soc/s3c24xx/s3c2412-i2s.h
sound/soc/s3c24xx/s3c2443-ac97.c
sound/soc/s3c24xx/s3c24xx-ac97.h
sound/soc/s3c24xx/s3c24xx-i2s.c
sound/soc/s3c24xx/s3c24xx-i2s.h
sound/soc/s3c24xx/s3c24xx-pcm.c
sound/soc/s3c24xx/smdk2443_wm9710.c
sound/soc/sh/Kconfig
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/sparc/Kconfig
sound/sparc/dbri.c
sound/spi/Kconfig
sound/usb/Kconfig
sound/usb/caiaq/caiaq-audio.c
sound/usb/caiaq/caiaq-device.c
sound/usb/caiaq/caiaq-device.h
sound/usb/usbaudio.c
sound/usb/usbquirks.h

index 4bd9ea5..44f52a4 100644 (file)
@@ -26,3 +26,37 @@ Description:
                I/O statistics of partition <part>. The format is the
                same as the above-written /sys/block/<disk>/stat
                format.
+
+
+What:          /sys/block/<disk>/integrity/format
+Date:          June 2008
+Contact:       Martin K. Petersen <martin.petersen@oracle.com>
+Description:
+               Metadata format for integrity capable block device.
+               E.g. T10-DIF-TYPE1-CRC.
+
+
+What:          /sys/block/<disk>/integrity/read_verify
+Date:          June 2008
+Contact:       Martin K. Petersen <martin.petersen@oracle.com>
+Description:
+               Indicates whether the block layer should verify the
+               integrity of read requests serviced by devices that
+               support sending integrity metadata.
+
+
+What:          /sys/block/<disk>/integrity/tag_size
+Date:          June 2008
+Contact:       Martin K. Petersen <martin.petersen@oracle.com>
+Description:
+               Number of bytes of integrity tag space available per
+               512 bytes of data.
+
+
+What:          /sys/block/<disk>/integrity/write_generate
+Date:          June 2008
+Contact:       Martin K. Petersen <martin.petersen@oracle.com>
+Description:
+               Indicates whether the block layer should automatically
+               generate checksums for write requests bound for
+               devices that support receiving integrity metadata.
diff --git a/Documentation/ABI/testing/sysfs-bus-css b/Documentation/ABI/testing/sysfs-bus-css
new file mode 100644 (file)
index 0000000..b585ec2
--- /dev/null
@@ -0,0 +1,35 @@
+What:          /sys/bus/css/devices/.../type
+Date:          March 2008
+Contact:       Cornelia Huck <cornelia.huck@de.ibm.com>
+               linux-s390@vger.kernel.org
+Description:   Contains the subchannel type, as reported by the hardware.
+               This attribute is present for all subchannel types.
+
+What:          /sys/bus/css/devices/.../modalias
+Date:          March 2008
+Contact:       Cornelia Huck <cornelia.huck@de.ibm.com>
+               linux-s390@vger.kernel.org
+Description:   Contains the module alias as reported with uevents.
+               It is of the format css:t<type> and present for all
+               subchannel types.
+
+What:          /sys/bus/css/drivers/io_subchannel/.../chpids
+Date:          December 2002
+Contact:       Cornelia Huck <cornelia.huck@de.ibm.com>
+               linux-s390@vger.kernel.org
+Description:   Contains the ids of the channel paths used by this
+               subchannel, as reported by the channel subsystem
+               during subchannel recognition.
+               Note: This is an I/O-subchannel specific attribute.
+Users:         s390-tools, HAL
+
+What:          /sys/bus/css/drivers/io_subchannel/.../pimpampom
+Date:          December 2002
+Contact:       Cornelia Huck <cornelia.huck@de.ibm.com>
+               linux-s390@vger.kernel.org
+Description:   Contains the PIM/PAM/POM values, as reported by the
+               channel subsystem when last queried by the common I/O
+               layer (this implies that this attribute is not neccessarily
+               in sync with the values current in the channel subsystem).
+               Note: This is an I/O-subchannel specific attribute.
+Users:         s390-tools, HAL
diff --git a/Documentation/ABI/testing/sysfs-firmware-memmap b/Documentation/ABI/testing/sysfs-firmware-memmap
new file mode 100644 (file)
index 0000000..0d99ee6
--- /dev/null
@@ -0,0 +1,71 @@
+What:          /sys/firmware/memmap/
+Date:          June 2008
+Contact:       Bernhard Walle <bwalle@suse.de>
+Description:
+               On all platforms, the firmware provides a memory map which the
+               kernel reads. The resources from that memory map are registered
+               in the kernel resource tree and exposed to userspace via
+               /proc/iomem (together with other resources).
+
+               However, on most architectures that firmware-provided memory
+               map is modified afterwards by the kernel itself, either because
+               the kernel merges that memory map with other information or
+               just because the user overwrites that memory map via command
+               line.
+
+               kexec needs the raw firmware-provided memory map to setup the
+               parameter segment of the kernel that should be booted with
+               kexec. Also, the raw memory map is useful for debugging. For
+               that reason, /sys/firmware/memmap is an interface that provides
+               the raw memory map to userspace.
+
+               The structure is as follows: Under /sys/firmware/memmap there
+               are subdirectories with the number of the entry as their name:
+
+                       /sys/firmware/memmap/0
+                       /sys/firmware/memmap/1
+                       /sys/firmware/memmap/2
+                       /sys/firmware/memmap/3
+                       ...
+
+               The maximum depends on the number of memory map entries provided
+               by the firmware. The order is just the order that the firmware
+               provides.
+
+               Each directory contains three files:
+
+               start   : The start address (as hexadecimal number with the
+                         '0x' prefix).
+               end     : The end address, inclusive (regardless whether the
+                         firmware provides inclusive or exclusive ranges).
+               type    : Type of the entry as string. See below for a list of
+                         valid types.
+
+               So, for example:
+
+                       /sys/firmware/memmap/0/start
+                       /sys/firmware/memmap/0/end
+                       /sys/firmware/memmap/0/type
+                       /sys/firmware/memmap/1/start
+                       ...
+
+               Currently following types exist:
+
+                 - System RAM
+                 - ACPI Tables
+                 - ACPI Non-volatile Storage
+                 - reserved
+
+               Following shell snippet can be used to display that memory
+               map in a human-readable format:
+
+               -------------------- 8< ----------------------------------------
+                 #!/bin/bash
+                 cd /sys/firmware/memmap
+                 for dir in * ; do
+                     start=$(cat $dir/start)
+                     end=$(cat $dir/end)
+                     type=$(cat $dir/type)
+                     printf "%016x-%016x (%s)\n" $start $[ $end +1] "$type"
+                 done
+               -------------------- >8 ----------------------------------------
index 0291ade..619e8ca 100644 (file)
@@ -377,7 +377,7 @@ Bug Reporting
 bugzilla.kernel.org is where the Linux kernel developers track kernel
 bugs.  Users are encouraged to report all bugs that they find in this
 tool.  For details on how to use the kernel bugzilla, please see:
-       http://test.kernel.org/bugzilla/faq.html
+       http://bugzilla.kernel.org/page.cgi?id=faq.html
 
 The file REPORTING-BUGS in the main kernel source directory has a good
 template for how to report a possible kernel bug, and details what kind
diff --git a/Documentation/block/data-integrity.txt b/Documentation/block/data-integrity.txt
new file mode 100644 (file)
index 0000000..e9dc8d8
--- /dev/null
@@ -0,0 +1,327 @@
+----------------------------------------------------------------------
+1. INTRODUCTION
+
+Modern filesystems feature checksumming of data and metadata to
+protect against data corruption.  However, the detection of the
+corruption is done at read time which could potentially be months
+after the data was written.  At that point the original data that the
+application tried to write is most likely lost.
+
+The solution is to ensure that the disk is actually storing what the
+application meant it to.  Recent additions to both the SCSI family
+protocols (SBC Data Integrity Field, SCC protection proposal) as well
+as SATA/T13 (External Path Protection) try to remedy this by adding
+support for appending integrity metadata to an I/O.  The integrity
+metadata (or protection information in SCSI terminology) includes a
+checksum for each sector as well as an incrementing counter that
+ensures the individual sectors are written in the right order.  And
+for some protection schemes also that the I/O is written to the right
+place on disk.
+
+Current storage controllers and devices implement various protective
+measures, for instance checksumming and scrubbing.  But these
+technologies are working in their own isolated domains or at best
+between adjacent nodes in the I/O path.  The interesting thing about
+DIF and the other integrity extensions is that the protection format
+is well defined and every node in the I/O path can verify the
+integrity of the I/O and reject it if corruption is detected.  This
+allows not only corruption prevention but also isolation of the point
+of failure.
+
+----------------------------------------------------------------------
+2. THE DATA INTEGRITY EXTENSIONS
+
+As written, the protocol extensions only protect the path between
+controller and storage device.  However, many controllers actually
+allow the operating system to interact with the integrity metadata
+(IMD).  We have been working with several FC/SAS HBA vendors to enable
+the protection information to be transferred to and from their
+controllers.
+
+The SCSI Data Integrity Field works by appending 8 bytes of protection
+information to each sector.  The data + integrity metadata is stored
+in 520 byte sectors on disk.  Data + IMD are interleaved when
+transferred between the controller and target.  The T13 proposal is
+similar.
+
+Because it is highly inconvenient for operating systems to deal with
+520 (and 4104) byte sectors, we approached several HBA vendors and
+encouraged them to allow separation of the data and integrity metadata
+scatter-gather lists.
+
+The controller will interleave the buffers on write and split them on
+read.  This means that the Linux can DMA the data buffers to and from
+host memory without changes to the page cache.
+
+Also, the 16-bit CRC checksum mandated by both the SCSI and SATA specs
+is somewhat heavy to compute in software.  Benchmarks found that
+calculating this checksum had a significant impact on system
+performance for a number of workloads.  Some controllers allow a
+lighter-weight checksum to be used when interfacing with the operating
+system.  Emulex, for instance, supports the TCP/IP checksum instead.
+The IP checksum received from the OS is converted to the 16-bit CRC
+when writing and vice versa.  This allows the integrity metadata to be
+generated by Linux or the application at very low cost (comparable to
+software RAID5).
+
+The IP checksum is weaker than the CRC in terms of detecting bit
+errors.  However, the strength is really in the separation of the data
+buffers and the integrity metadata.  These two distinct buffers much
+match up for an I/O to complete.
+
+The separation of the data and integrity metadata buffers as well as
+the choice in checksums is referred to as the Data Integrity
+Extensions.  As these extensions are outside the scope of the protocol
+bodies (T10, T13), Oracle and its partners are trying to standardize
+them within the Storage Networking Industry Association.
+
+----------------------------------------------------------------------
+3. KERNEL CHANGES
+
+The data integrity framework in Linux enables protection information
+to be pinned to I/Os and sent to/received from controllers that
+support it.
+
+The advantage to the integrity extensions in SCSI and SATA is that
+they enable us to protect the entire path from application to storage
+device.  However, at the same time this is also the biggest
+disadvantage. It means that the protection information must be in a
+format that can be understood by the disk.
+
+Generally Linux/POSIX applications are agnostic to the intricacies of
+the storage devices they are accessing.  The virtual filesystem switch
+and the block layer make things like hardware sector size and
+transport protocols completely transparent to the application.
+
+However, this level of detail is required when preparing the
+protection information to send to a disk.  Consequently, the very
+concept of an end-to-end protection scheme is a layering violation.
+It is completely unreasonable for an application to be aware whether
+it is accessing a SCSI or SATA disk.
+
+The data integrity support implemented in Linux attempts to hide this
+from the application.  As far as the application (and to some extent
+the kernel) is concerned, the integrity metadata is opaque information
+that's attached to the I/O.
+
+The current implementation allows the block layer to automatically
+generate the protection information for any I/O.  Eventually the
+intent is to move the integrity metadata calculation to userspace for
+user data.  Metadata and other I/O that originates within the kernel
+will still use the automatic generation interface.
+
+Some storage devices allow each hardware sector to be tagged with a
+16-bit value.  The owner of this tag space is the owner of the block
+device.  I.e. the filesystem in most cases.  The filesystem can use
+this extra space to tag sectors as they see fit.  Because the tag
+space is limited, the block interface allows tagging bigger chunks by
+way of interleaving.  This way, 8*16 bits of information can be
+attached to a typical 4KB filesystem block.
+
+This also means that applications such as fsck and mkfs will need
+access to manipulate the tags from user space.  A passthrough
+interface for this is being worked on.
+
+
+----------------------------------------------------------------------
+4. BLOCK LAYER IMPLEMENTATION DETAILS
+
+4.1 BIO
+
+The data integrity patches add a new field to struct bio when
+CONFIG_BLK_DEV_INTEGRITY is enabled.  bio->bi_integrity is a pointer
+to a struct bip which contains the bio integrity payload.  Essentially
+a bip is a trimmed down struct bio which holds a bio_vec containing
+the integrity metadata and the required housekeeping information (bvec
+pool, vector count, etc.)
+
+A kernel subsystem can enable data integrity protection on a bio by
+calling bio_integrity_alloc(bio).  This will allocate and attach the
+bip to the bio.
+
+Individual pages containing integrity metadata can subsequently be
+attached using bio_integrity_add_page().
+
+bio_free() will automatically free the bip.
+
+
+4.2 BLOCK DEVICE
+
+Because the format of the protection data is tied to the physical
+disk, each block device has been extended with a block integrity
+profile (struct blk_integrity).  This optional profile is registered
+with the block layer using blk_integrity_register().
+
+The profile contains callback functions for generating and verifying
+the protection data, as well as getting and setting application tags.
+The profile also contains a few constants to aid in completing,
+merging and splitting the integrity metadata.
+
+Layered block devices will need to pick a profile that's appropriate
+for all subdevices.  blk_integrity_compare() can help with that.  DM
+and MD linear, RAID0 and RAID1 are currently supported.  RAID4/5/6
+will require extra work due to the application tag.
+
+
+----------------------------------------------------------------------
+5.0 BLOCK LAYER INTEGRITY API
+
+5.1 NORMAL FILESYSTEM
+
+    The normal filesystem is unaware that the underlying block device
+    is capable of sending/receiving integrity metadata.  The IMD will
+    be automatically generated by the block layer at submit_bio() time
+    in case of a WRITE.  A READ request will cause the I/O integrity
+    to be verified upon completion.
+
+    IMD generation and verification can be toggled using the
+
+      /sys/block/<bdev>/integrity/write_generate
+
+    and
+
+      /sys/block/<bdev>/integrity/read_verify
+
+    flags.
+
+
+5.2 INTEGRITY-AWARE FILESYSTEM
+
+    A filesystem that is integrity-aware can prepare I/Os with IMD
+    attached.  It can also use the application tag space if this is
+    supported by the block device.
+
+
+    int bdev_integrity_enabled(block_device, int rw);
+
+      bdev_integrity_enabled() will return 1 if the block device
+      supports integrity metadata transfer for the data direction
+      specified in 'rw'.
+
+      bdev_integrity_enabled() honors the write_generate and
+      read_verify flags in sysfs and will respond accordingly.
+
+
+    int bio_integrity_prep(bio);
+
+      To generate IMD for WRITE and to set up buffers for READ, the
+      filesystem must call bio_integrity_prep(bio).
+
+      Prior to calling this function, the bio data direction and start
+      sector must be set, and the bio should have all data pages
+      added.  It is up to the caller to ensure that the bio does not
+      change while I/O is in progress.
+
+      bio_integrity_prep() should only be called if
+      bio_integrity_enabled() returned 1.
+
+
+    int bio_integrity_tag_size(bio);
+
+      If the filesystem wants to use the application tag space it will
+      first have to find out how much storage space is available.
+      Because tag space is generally limited (usually 2 bytes per
+      sector regardless of sector size), the integrity framework
+      supports interleaving the information between the sectors in an
+      I/O.
+
+      Filesystems can call bio_integrity_tag_size(bio) to find out how
+      many bytes of storage are available for that particular bio.
+
+      Another option is bdev_get_tag_size(block_device) which will
+      return the number of available bytes per hardware sector.
+
+
+    int bio_integrity_set_tag(bio, void *tag_buf, len);
+
+      After a successful return from bio_integrity_prep(),
+      bio_integrity_set_tag() can be used to attach an opaque tag
+      buffer to a bio.  Obviously this only makes sense if the I/O is
+      a WRITE.
+
+
+    int bio_integrity_get_tag(bio, void *tag_buf, len);
+
+      Similarly, at READ I/O completion time the filesystem can
+      retrieve the tag buffer using bio_integrity_get_tag().
+
+
+6.3 PASSING EXISTING INTEGRITY METADATA
+
+    Filesystems that either generate their own integrity metadata or
+    are capable of transferring IMD from user space can use the
+    following calls:
+
+
+    struct bip * bio_integrity_alloc(bio, gfp_mask, nr_pages);
+
+      Allocates the bio integrity payload and hangs it off of the bio.
+      nr_pages indicate how many pages of protection data need to be
+      stored in the integrity bio_vec list (similar to bio_alloc()).
+
+      The integrity payload will be freed at bio_free() time.
+
+
+    int bio_integrity_add_page(bio, page, len, offset);
+
+      Attaches a page containing integrity metadata to an existing
+      bio.  The bio must have an existing bip,
+      i.e. bio_integrity_alloc() must have been called.  For a WRITE,
+      the integrity metadata in the pages must be in a format
+      understood by the target device with the notable exception that
+      the sector numbers will be remapped as the request traverses the
+      I/O stack.  This implies that the pages added using this call
+      will be modified during I/O!  The first reference tag in the
+      integrity metadata must have a value of bip->bip_sector.
+
+      Pages can be added using bio_integrity_add_page() as long as
+      there is room in the bip bio_vec array (nr_pages).
+
+      Upon completion of a READ operation, the attached pages will
+      contain the integrity metadata received from the storage device.
+      It is up to the receiver to process them and verify data
+      integrity upon completion.
+
+
+6.4 REGISTERING A BLOCK DEVICE AS CAPABLE OF EXCHANGING INTEGRITY
+    METADATA
+
+    To enable integrity exchange on a block device the gendisk must be
+    registered as capable:
+
+    int blk_integrity_register(gendisk, blk_integrity);
+
+      The blk_integrity struct is a template and should contain the
+      following:
+
+        static struct blk_integrity my_profile = {
+            .name                   = "STANDARDSBODY-TYPE-VARIANT-CSUM",
+            .generate_fn            = my_generate_fn,
+                   .verify_fn              = my_verify_fn,
+                   .get_tag_fn             = my_get_tag_fn,
+                   .set_tag_fn             = my_set_tag_fn,
+           .tuple_size             = sizeof(struct my_tuple_size),
+           .tag_size               = <tag bytes per hw sector>,
+        };
+
+      'name' is a text string which will be visible in sysfs.  This is
+      part of the userland API so chose it carefully and never change
+      it.  The format is standards body-type-variant.
+      E.g. T10-DIF-TYPE1-IP or T13-EPP-0-CRC.
+
+      'generate_fn' generates appropriate integrity metadata (for WRITE).
+
+      'verify_fn' verifies that the data buffer matches the integrity
+      metadata.
+
+      'tuple_size' must be set to match the size of the integrity
+      metadata per sector.  I.e. 8 for DIF and EPP.
+
+      'tag_size' must be set to identify how many bytes of tag space
+      are available per hardware sector.  For DIF this is either 2 or
+      0 depending on the value of the Control Mode Page ATO bit.
+
+      See 6.2 for a description of get_tag_fn and set_tag_fn.
+
+----------------------------------------------------------------------
+2007-12-24 Martin K. Petersen <martin.petersen@oracle.com>
diff --git a/Documentation/ftrace.txt b/Documentation/ftrace.txt
new file mode 100644 (file)
index 0000000..77d3faa
--- /dev/null
@@ -0,0 +1,1361 @@
+               ftrace - Function Tracer
+               ========================
+
+Copyright 2008 Red Hat Inc.
+   Author:   Steven Rostedt <srostedt@redhat.com>
+  License:   The GNU Free Documentation License, Version 1.2
+Reviewers:   Elias Oltmanns and Randy Dunlap
+
+Writen for: 2.6.26-rc8 linux-2.6-tip.git tip/tracing/ftrace branch
+
+Introduction
+------------
+
+Ftrace is an internal tracer designed to help out developers and
+designers of systems to find what is going on inside the kernel.
+It can be used for debugging or analyzing latencies and performance
+issues that take place outside of user-space.
+
+Although ftrace is the function tracer, it also includes an
+infrastructure that allows for other types of tracing. Some of the
+tracers that are currently in ftrace is a tracer to trace
+context switches, the time it takes for a high priority task to
+run after it was woken up, the time interrupts are disabled, and
+more.
+
+
+The File System
+---------------
+
+Ftrace uses the debugfs file system to hold the control files as well
+as the files to display output.
+
+To mount the debugfs system:
+
+  # mkdir /debug
+  # mount -t debugfs nodev /debug
+
+
+That's it! (assuming that you have ftrace configured into your kernel)
+
+After mounting the debugfs, you can see a directory called
+"tracing".  This directory contains the control and output files
+of ftrace. Here is a list of some of the key files:
+
+
+ Note: all time values are in microseconds.
+
+  current_tracer : This is used to set or display the current tracer
+               that is configured.
+
+  available_tracers : This holds the different types of tracers that
+               have been compiled into the kernel. The tracers
+               listed here can be configured by echoing in their
+               name into current_tracer.
+
+  tracing_enabled : This sets or displays whether the current_tracer
+               is activated and tracing or not. Echo 0 into this
+               file to disable the tracer or 1 (or non-zero) to
+               enable it.
+
+  trace : This file holds the output of the trace in a human readable
+               format.
+
+  latency_trace : This file shows the same trace but the information
+               is organized more to display possible latencies
+               in the system.
+
+  trace_pipe : The output is the same as the "trace" file but this
+               file is meant to be streamed with live tracing.
+               Reads from this file will block until new data
+               is retrieved. Unlike the "trace" and "latency_trace"
+               files, this file is a consumer. This means reading
+               from this file causes sequential reads to display
+               more current data. Once data is read from this
+               file, it is consumed, and will not be read
+               again with a sequential read. The "trace" and
+               "latency_trace" files are static, and if the
+               tracer isn't 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
+               that is displayed in one of the above output
+               files.
+
+  trace_max_latency : Some of the tracers record the max latency.
+               For example, the time interrupts are disabled.
+               This time is saved in this file. The max trace
+               will also be stored, and displayed by either
+               "trace" or "latency_trace".  A new max trace will
+               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 trace
+               entries each CPU buffer can hold. The tracer buffers
+               are the same size for each CPU, so care must be
+               taken when modifying the trace_entries. The trace
+               buffers are allocated in pages (blocks of memory that
+               the kernel uses for allocation, usually 4 KB in size).
+               Since each entry is smaller than a page, if the last
+               allocated page has room for more entries than were
+               requested, the rest of the page is used to allocate
+               entries.
+
+               This can only be updated when the current_tracer
+               is set to "none".
+
+               NOTE: It is planned on changing the allocated buffers
+                     from being the number of possible CPUS to
+                     the number of online CPUS.
+
+  tracing_cpumask : This is a mask that lets the user only trace
+               on specified CPUS. The format is a hex string
+               representing the CPUS.
+
+  set_ftrace_filter : When dynamic ftrace is configured in, the
+               code is dynamically modified to disable calling
+               of the function profiler (mcount). This lets
+               tracing be configured in with practically no overhead
+               in performance.  This also has a side effect of
+               enabling or disabling specific functions to be
+               traced.  Echoing in names of functions into this
+               file will limit the trace to only these functions.
+
+  set_ftrace_notrace: This has the opposite effect that
+               set_ftrace_filter has. Any function that is added
+               here will not be traced. If a function exists
+               in both set_ftrace_filter and set_ftrace_notrace,
+               the function will _not_ be traced.
+
+  available_filter_functions : When a function is encountered the first
+               time by the dynamic tracer, it is recorded and
+               later the call is converted into a nop. This file
+               lists the functions that have been recorded
+               by the dynamic tracer and these functions can
+               be used to set the ftrace filter by the above
+               "set_ftrace_filter" file.
+
+
+The Tracers
+-----------
+
+Here are the list of current tracers that can be configured.
+
+  ftrace - function tracer that uses mcount to trace all functions.
+               It is possible to filter out which functions that are
+               to be traced when dynamic ftrace is configured in.
+
+  sched_switch - traces the context switches between tasks.
+
+  irqsoff - traces the areas that disable interrupts and saves off
+               the trace with the longest max latency.
+               See tracing_max_latency.  When a new max is recorded,
+               it replaces the old trace. It is best to view this
+               trace with the latency_trace file.
+
+  preemptoff - Similar to irqsoff but traces and records the time
+               preemption is disabled.
+
+  preemptirqsoff - Similar to irqsoff and preemptoff, but traces and
+                records the largest time irqs and/or preemption is
+                disabled.
+
+  wakeup - Traces and records the max latency that it takes for
+               the highest priority task to get scheduled after
+               it has been woken up.
+
+  none - This is not a tracer. To remove all tracers from tracing
+               simply echo "none" into current_tracer.
+
+
+Examples of using the tracer
+----------------------------
+
+Here are typical examples of using the tracers with only controlling
+them with the debugfs interface (without using any user-land utilities).
+
+Output format:
+--------------
+
+Here's an example of the output format of the file "trace"
+
+                             --------
+# tracer: ftrace
+#
+#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
+#              | |      |          |         |
+            bash-4251  [01] 10152.583854: path_put <-path_walk
+            bash-4251  [01] 10152.583855: dput <-path_put
+            bash-4251  [01] 10152.583855: _atomic_dec_and_lock <-dput
+                             --------
+
+A header is printed with the trace that is represented. In this case
+the tracer is "ftrace". Then a header showing the format. Task name
+"bash", the task PID "4251", the CPU that it was running on
+"01", the timestamp in <secs>.<usecs> format, the function name that was
+traced "path_put" and the parent function that called this function
+"path_walk".
+
+The sched_switch tracer also includes tracing of task wake ups and
+context switches.
+
+     ksoftirqd/1-7     [01]  1453.070013:      7:115:R   +  2916:115:S
+     ksoftirqd/1-7     [01]  1453.070013:      7:115:R   +    10:115:S
+     ksoftirqd/1-7     [01]  1453.070013:      7:115:R ==>    10:115:R
+        events/1-10    [01]  1453.070013:     10:115:S ==>  2916:115:R
+     kondemand/1-2916  [01]  1453.070013:   2916:115:S ==>     7:115:R
+     ksoftirqd/1-7     [01]  1453.070013:      7:115:S ==>     0:140:R
+
+Wake ups are represented by a "+" and the context switches show
+"==>".  The format is:
+
+ Context switches:
+
+       Previous task              Next Task
+
+  <pid>:<prio>:<state>  ==>  <pid>:<prio>:<state>
+
+ Wake ups:
+
+       Current task               Task waking up
+
+  <pid>:<prio>:<state>    +  <pid>:<prio>:<state>
+
+The prio is the internal kernel priority, which is inverse to the
+priority that is usually displayed by user-space tools. Zero represents
+the highest priority (99). Prio 100 starts the "nice" priorities with
+100 being equal to nice -20 and 139 being nice 19. The prio "140" is
+reserved for the idle task which is the lowest priority thread (pid 0).
+
+
+Latency trace format
+--------------------
+
+For traces that display latency times, the latency_trace file gives
+a bit more information to see why a latency happened. Here's a typical
+trace.
+
+# tracer: irqsoff
+#
+irqsoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 97 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: apic_timer_interrupt
+ => ended at:   do_softirq
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+  <idle>-0     0d..1    0us+: trace_hardirqs_off_thunk (apic_timer_interrupt)
+  <idle>-0     0d.s.   97us : __do_softirq (do_softirq)
+  <idle>-0     0d.s1   98us : trace_hardirqs_on (do_softirq)
+
+
+vim:ft=help
+
+
+This shows that the current tracer is "irqsoff" tracing the time
+interrupts are disabled. It gives the trace version and the kernel
+this was executed on (2.6.26-rc8). Then it displays the max latency
+in microsecs (97 us). The number of trace entries displayed
+by the total number recorded (both are three: #3/3). The type of
+preemption that was used (PREEMPT). VP, KP, SP, and HP are always zero
+and reserved for later use. #P is the number of online CPUS (#P:2).
+
+The task is the process that was running when the latency happened.
+(swapper pid: 0).
+
+The start and stop that caused the latencies:
+
+  apic_timer_interrupt is where the interrupts were disabled.
+  do_softirq is where they were enabled again.
+
+The next lines after the header are the trace itself. The header
+explains which is which.
+
+  cmd: The name of the process in the trace.
+
+  pid: The PID of that process.
+
+  CPU#: The CPU that the process was running on.
+
+  irqs-off: 'd' interrupts are disabled. '.' otherwise.
+
+  need-resched: 'N' task need_resched is set, '.' otherwise.
+
+  hardirq/softirq:
+       'H' - hard irq happened inside a softirq.
+       'h' - hard irq is running
+       's' - soft irq is running
+       '.' - normal context.
+
+  preempt-depth: The level of preempt_disabled
+
+The above is mostly meaningful for kernel developers.
+
+  time: This differs from the trace file output. The trace file output
+       included an absolute timestamp. The timestamp used by the
+       latency_trace file is relative to the start of the trace.
+
+  delay: This is just to help catch your eye a bit better. And
+       needs to be fixed to be only relative to the same CPU.
+       The marks are determined by the difference between this
+       current trace and the next trace.
+        '!' - greater than preempt_mark_thresh (default 100)
+        '+' - greater than 1 microsecond
+        ' ' - less than or equal to 1 microsecond.
+
+  The rest is the same as the 'trace' file.
+
+
+iter_ctrl
+---------
+
+The iter_ctrl 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
+  print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \
+ noblock nostacktrace nosched-tree
+
+To disable one of the options, echo in the option prepended with "no".
+
+  echo noprint-parent > /debug/tracing/iter_ctrl
+
+To enable an option, leave off the "no".
+
+  echo sym-offset > /debug/tracing/iter_ctrl
+
+Here are the available options:
+
+  print-parent - On function traces, display the calling function
+               as well as the function being traced.
+
+  print-parent:
+   bash-4000  [01]  1477.606694: simple_strtoul <-strict_strtoul
+
+  noprint-parent:
+   bash-4000  [01]  1477.606694: simple_strtoul
+
+
+  sym-offset - Display not only the function name, but also the offset
+               in the function. For example, instead of seeing just
+               "ktime_get", you will see "ktime_get+0xb/0x20".
+
+  sym-offset:
+   bash-4000  [01]  1477.606694: simple_strtoul+0x6/0xa0
+
+  sym-addr - this will also display the function address as well as
+               the function name.
+
+  sym-addr:
+   bash-4000  [01]  1477.606694: simple_strtoul <c0339346>
+
+  verbose - This deals with the latency_trace file.
+
+    bash  4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \
+    (+0.000ms): simple_strtoul (strict_strtoul)
+
+  raw - This will display raw numbers. This option is best for use with
+       user applications that can translate the raw numbers better than
+       having it done in the kernel.
+
+  hex - Similar to raw, but the numbers will be in a hexadecimal format.
+
+  bin - This will print out the formats in raw binary.
+
+  block - TBD (needs update)
+
+  stacktrace - This is one of the options that changes the trace itself.
+               When a trace is recorded, so is the stack of functions.
+               This allows for back traces of trace sites.
+
+  sched-tree - TBD (any users??)
+
+
+sched_switch
+------------
+
+This tracer simply records schedule switches. Here's an example
+of how to use it.
+
+ # echo sched_switch > /debug/tracing/current_tracer
+ # echo 1 > /debug/tracing/tracing_enabled
+ # sleep 1
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/trace
+
+# tracer: sched_switch
+#
+#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
+#              | |      |          |         |
+            bash-3997  [01]   240.132281:   3997:120:R   +  4055:120:R
+            bash-3997  [01]   240.132284:   3997:120:R ==>  4055:120:R
+           sleep-4055  [01]   240.132371:   4055:120:S ==>  3997:120:R
+            bash-3997  [01]   240.132454:   3997:120:R   +  4055:120:S
+            bash-3997  [01]   240.132457:   3997:120:R ==>  4055:120:R
+           sleep-4055  [01]   240.132460:   4055:120:D ==>  3997:120:R
+            bash-3997  [01]   240.132463:   3997:120:R   +  4055:120:D
+            bash-3997  [01]   240.132465:   3997:120:R ==>  4055:120:R
+          <idle>-0     [00]   240.132589:      0:140:R   +     4:115:S
+          <idle>-0     [00]   240.132591:      0:140:R ==>     4:115:R
+     ksoftirqd/0-4     [00]   240.132595:      4:115:S ==>     0:140:R
+          <idle>-0     [00]   240.132598:      0:140:R   +     4:115:S
+          <idle>-0     [00]   240.132599:      0:140:R ==>     4:115:R
+     ksoftirqd/0-4     [00]   240.132603:      4:115:S ==>     0:140:R
+           sleep-4055  [01]   240.133058:   4055:120:S ==>  3997:120:R
+ [...]
+
+
+As we have discussed previously about this format, the header shows
+the name of the trace and points to the options. The "FUNCTION"
+is a misnomer since here it represents the wake ups and context
+switches.
+
+The sched_switch only lists the wake ups (represented with '+')
+and context switches ('==>') with the previous task or current
+first followed by the next task or task waking up. The format for both
+of these is PID:KERNEL-PRIO:TASK-STATE. Remember that the KERNEL-PRIO
+is the inverse of the actual priority with zero (0) being the highest
+priority and the nice values starting at 100 (nice -20). Below is
+a quick chart to map the kernel priority to user land priorities.
+
+  Kernel priority: 0 to 99    ==> user RT priority 99 to 0
+  Kernel priority: 100 to 139 ==> user nice -20 to 19
+  Kernel priority: 140        ==> idle task priority
+
+The task states are:
+
+ R - running : wants to run, may not actually be running
+ S - sleep   : process is waiting to be woken up (handles signals)
+ D - deep sleep : process must be woken up (ignores signals)
+ T - stopped : process suspended
+ t - traced  : process is being traced (with something like gdb)
+ Z - zombie  : process waiting to be cleaned up
+ X - unknown
+
+
+ftrace_enabled
+--------------
+
+The following tracers give different output depending on whether
+or not the sysctl ftrace_enabled is set. To set ftrace_enabled,
+one can either use the sysctl function or set it via the proc
+file system interface.
+
+  sysctl kernel.ftrace_enabled=1
+
+ or
+
+  echo 1 > /proc/sys/kernel/ftrace_enabled
+
+To disable ftrace_enabled simply replace the '1' with '0' in
+the above commands.
+
+When ftrace_enabled is set the tracers will also record the functions
+that are within the trace. The descriptions of the tracers
+will also show an example with ftrace enabled.
+
+
+irqsoff
+-------
+
+When interrupts are disabled, the CPU can not react to any other
+external event (besides NMIs and SMIs). This prevents the timer
+interrupt from triggering or the mouse interrupt from letting the
+kernel know of a new mouse event. The result is a latency with the
+reaction time.
+
+The irqsoff tracer tracks the time interrupts are disabled to the time
+they are re-enabled. When a new maximum latency is hit, it saves off
+the trace so that it may be retrieved at a later time. Every time a
+new maximum in reached, the old saved trace is discarded and the new
+trace is saved.
+
+To reset the maximum, echo 0 into tracing_max_latency. Here's an
+example:
+
+ # echo irqsoff > /debug/tracing/current_tracer
+ # echo 0 > /debug/tracing/tracing_max_latency
+ # echo 1 > /debug/tracing/tracing_enabled
+ # ls -ltr
+ [...]
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/latency_trace
+# tracer: irqsoff
+#
+irqsoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 6 us, #3/3, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: bash-4269 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: copy_page_range
+ => ended at:   copy_page_range
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+    bash-4269  1...1    0us+: _spin_lock (copy_page_range)
+    bash-4269  1...1    7us : _spin_unlock (copy_page_range)
+    bash-4269  1...2    7us : trace_preempt_on (copy_page_range)
+
+
+vim:ft=help
+
+Here we see that that we had a latency of 6 microsecs (which is
+very good). The spin_lock in copy_page_range disabled interrupts.
+The difference between the 6 and the displayed timestamp 7us is
+because the clock must have incremented between the time of recording
+the max latency and recording the function that had that latency.
+
+Note the above had ftrace_enabled not set. If we set the ftrace_enabled,
+we get a much larger output:
+
+# tracer: irqsoff
+#
+irqsoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 50 us, #101/101, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: ls-4339 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: __alloc_pages_internal
+ => ended at:   __alloc_pages_internal
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+      ls-4339  0...1    0us+: get_page_from_freelist (__alloc_pages_internal)
+      ls-4339  0d..1    3us : rmqueue_bulk (get_page_from_freelist)
+      ls-4339  0d..1    3us : _spin_lock (rmqueue_bulk)
+      ls-4339  0d..1    4us : add_preempt_count (_spin_lock)
+      ls-4339  0d..2    4us : __rmqueue (rmqueue_bulk)
+      ls-4339  0d..2    5us : __rmqueue_smallest (__rmqueue)
+      ls-4339  0d..2    5us : __mod_zone_page_state (__rmqueue_smallest)
+      ls-4339  0d..2    6us : __rmqueue (rmqueue_bulk)
+      ls-4339  0d..2    6us : __rmqueue_smallest (__rmqueue)
+      ls-4339  0d..2    7us : __mod_zone_page_state (__rmqueue_smallest)
+      ls-4339  0d..2    7us : __rmqueue (rmqueue_bulk)
+      ls-4339  0d..2    8us : __rmqueue_smallest (__rmqueue)
+[...]
+      ls-4339  0d..2   46us : __rmqueue_smallest (__rmqueue)
+      ls-4339  0d..2   47us : __mod_zone_page_state (__rmqueue_smallest)
+      ls-4339  0d..2   47us : __rmqueue (rmqueue_bulk)
+      ls-4339  0d..2   48us : __rmqueue_smallest (__rmqueue)
+      ls-4339  0d..2   48us : __mod_zone_page_state (__rmqueue_smallest)
+      ls-4339  0d..2   49us : _spin_unlock (rmqueue_bulk)
+      ls-4339  0d..2   49us : sub_preempt_count (_spin_unlock)
+      ls-4339  0d..1   50us : get_page_from_freelist (__alloc_pages_internal)
+      ls-4339  0d..2   51us : trace_hardirqs_on (__alloc_pages_internal)
+
+
+vim:ft=help
+
+
+Here we traced a 50 microsecond latency. But we also see all the
+functions that were called during that time. Note that by enabling
+function tracing, we endure an added overhead. This overhead may
+extend the latency times. But nevertheless, this trace has provided
+some very helpful debugging information.
+
+
+preemptoff
+----------
+
+When preemption is disabled, we may be able to receive interrupts but
+the task cannot be preempted and a higher priority task must wait
+for preemption to be enabled again before it can preempt a lower
+priority task.
+
+The preemptoff tracer traces the places that disable preemption.
+Like the irqsoff, it records the maximum latency that preemption
+was disabled. The control of preemptoff is much like the irqsoff.
+
+ # echo preemptoff > /debug/tracing/current_tracer
+ # echo 0 > /debug/tracing/tracing_max_latency
+ # echo 1 > /debug/tracing/tracing_enabled
+ # ls -ltr
+ [...]
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/latency_trace
+# tracer: preemptoff
+#
+preemptoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 29 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: do_IRQ
+ => ended at:   __do_softirq
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+    sshd-4261  0d.h.    0us+: irq_enter (do_IRQ)
+    sshd-4261  0d.s.   29us : _local_bh_enable (__do_softirq)
+    sshd-4261  0d.s1   30us : trace_preempt_on (__do_softirq)
+
+
+vim:ft=help
+
+This has some more changes. Preemption was disabled when an interrupt
+came in (notice the 'h'), and was enabled while doing a softirq.
+(notice the 's'). But we also see that interrupts have been disabled
+when entering the preempt off section and leaving it (the 'd').
+We do not know if interrupts were enabled in the mean time.
+
+# tracer: preemptoff
+#
+preemptoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 63 us, #87/87, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: remove_wait_queue
+ => ended at:   __do_softirq
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+    sshd-4261  0d..1    0us : _spin_lock_irqsave (remove_wait_queue)
+    sshd-4261  0d..1    1us : _spin_unlock_irqrestore (remove_wait_queue)
+    sshd-4261  0d..1    2us : do_IRQ (common_interrupt)
+    sshd-4261  0d..1    2us : irq_enter (do_IRQ)
+    sshd-4261  0d..1    2us : idle_cpu (irq_enter)
+    sshd-4261  0d..1    3us : add_preempt_count (irq_enter)
+    sshd-4261  0d.h1    3us : idle_cpu (irq_enter)
+    sshd-4261  0d.h.    4us : handle_fasteoi_irq (do_IRQ)
+[...]
+    sshd-4261  0d.h.   12us : add_preempt_count (_spin_lock)
+    sshd-4261  0d.h1   12us : ack_ioapic_quirk_irq (handle_fasteoi_irq)
+    sshd-4261  0d.h1   13us : move_native_irq (ack_ioapic_quirk_irq)
+    sshd-4261  0d.h1   13us : _spin_unlock (handle_fasteoi_irq)
+    sshd-4261  0d.h1   14us : sub_preempt_count (_spin_unlock)
+    sshd-4261  0d.h1   14us : irq_exit (do_IRQ)
+    sshd-4261  0d.h1   15us : sub_preempt_count (irq_exit)
+    sshd-4261  0d..2   15us : do_softirq (irq_exit)
+    sshd-4261  0d...   15us : __do_softirq (do_softirq)
+    sshd-4261  0d...   16us : __local_bh_disable (__do_softirq)
+    sshd-4261  0d...   16us+: add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s4   20us : add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s4   21us : sub_preempt_count (local_bh_enable)
+    sshd-4261  0d.s5   21us : sub_preempt_count (local_bh_enable)
+[...]
+    sshd-4261  0d.s6   41us : add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s6   42us : sub_preempt_count (local_bh_enable)
+    sshd-4261  0d.s7   42us : sub_preempt_count (local_bh_enable)
+    sshd-4261  0d.s5   43us : add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s5   43us : sub_preempt_count (local_bh_enable_ip)
+    sshd-4261  0d.s6   44us : sub_preempt_count (local_bh_enable_ip)
+    sshd-4261  0d.s5   44us : add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s5   45us : sub_preempt_count (local_bh_enable)
+[...]
+    sshd-4261  0d.s.   63us : _local_bh_enable (__do_softirq)
+    sshd-4261  0d.s1   64us : trace_preempt_on (__do_softirq)
+
+
+The above is an example of the preemptoff trace with ftrace_enabled
+set. Here we see that interrupts were disabled the entire time.
+The irq_enter code lets us know that we entered an interrupt 'h'.
+Before that, the functions being traced still show that it is not
+in an interrupt, but we can see by the functions themselves that
+this is not the case.
+
+Notice that the __do_softirq when called doesn't have a preempt_count.
+It may seem that we missed a preempt enabled. What really happened
+is that the preempt count is held on the threads stack and we
+switched to the softirq stack (4K stacks in effect). The code
+does not copy the preempt count, but because interrupts are disabled,
+we don't need to worry about it. Having a tracer like this is good
+to let people know what really happens inside the kernel.
+
+
+preemptirqsoff
+--------------
+
+Knowing the locations that have interrupts disabled or preemption
+disabled for the longest times is helpful. But sometimes we would
+like to know when either preemption and/or interrupts are disabled.
+
+The following code:
+
+    local_irq_disable();
+    call_function_with_irqs_off();
+    preempt_disable();
+    call_function_with_irqs_and_preemption_off();
+    local_irq_enable();
+    call_function_with_preemption_off();
+    preempt_enable();
+
+The irqsoff tracer will record the total length of
+call_function_with_irqs_off() and
+call_function_with_irqs_and_preemption_off().
+
+The preemptoff tracer will record the total length of
+call_function_with_irqs_and_preemption_off() and
+call_function_with_preemption_off().
+
+But neither will trace the time that interrupts and/or preemption
+is disabled. This total time is the time that we can not schedule.
+To record this time, use the preemptirqsoff tracer.
+
+Again, using this trace is much like the irqsoff and preemptoff tracers.
+
+ # echo preemptirqsoff > /debug/tracing/current_tracer
+ # echo 0 > /debug/tracing/tracing_max_latency
+ # echo 1 > /debug/tracing/tracing_enabled
+ # ls -ltr
+ [...]
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/latency_trace
+# tracer: preemptirqsoff
+#
+preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 293 us, #3/3, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: ls-4860 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: apic_timer_interrupt
+ => ended at:   __do_softirq
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+      ls-4860  0d...    0us!: trace_hardirqs_off_thunk (apic_timer_interrupt)
+      ls-4860  0d.s.  294us : _local_bh_enable (__do_softirq)
+      ls-4860  0d.s1  294us : trace_preempt_on (__do_softirq)
+
+
+vim:ft=help
+
+
+The trace_hardirqs_off_thunk is called from assembly on x86 when
+interrupts are disabled in the assembly code. Without the function
+tracing, we don't know if interrupts were enabled within the preemption
+points. We do see that it started with preemption enabled.
+
+Here is a trace with ftrace_enabled set:
+
+
+# tracer: preemptirqsoff
+#
+preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 105 us, #183/183, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: sshd-4261 (uid:0 nice:0 policy:0 rt_prio:0)
+    -----------------
+ => started at: write_chan
+ => ended at:   __do_softirq
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+      ls-4473  0.N..    0us : preempt_schedule (write_chan)
+      ls-4473  0dN.1    1us : _spin_lock (schedule)
+      ls-4473  0dN.1    2us : add_preempt_count (_spin_lock)
+      ls-4473  0d..2    2us : put_prev_task_fair (schedule)
+[...]
+      ls-4473  0d..2   13us : set_normalized_timespec (ktime_get_ts)
+      ls-4473  0d..2   13us : __switch_to (schedule)
+    sshd-4261  0d..2   14us : finish_task_switch (schedule)
+    sshd-4261  0d..2   14us : _spin_unlock_irq (finish_task_switch)
+    sshd-4261  0d..1   15us : add_preempt_count (_spin_lock_irqsave)
+    sshd-4261  0d..2   16us : _spin_unlock_irqrestore (hrtick_set)
+    sshd-4261  0d..2   16us : do_IRQ (common_interrupt)
+    sshd-4261  0d..2   17us : irq_enter (do_IRQ)
+    sshd-4261  0d..2   17us : idle_cpu (irq_enter)
+    sshd-4261  0d..2   18us : add_preempt_count (irq_enter)
+    sshd-4261  0d.h2   18us : idle_cpu (irq_enter)
+    sshd-4261  0d.h.   18us : handle_fasteoi_irq (do_IRQ)
+    sshd-4261  0d.h.   19us : _spin_lock (handle_fasteoi_irq)
+    sshd-4261  0d.h.   19us : add_preempt_count (_spin_lock)
+    sshd-4261  0d.h1   20us : _spin_unlock (handle_fasteoi_irq)
+    sshd-4261  0d.h1   20us : sub_preempt_count (_spin_unlock)
+[...]
+    sshd-4261  0d.h1   28us : _spin_unlock (handle_fasteoi_irq)
+    sshd-4261  0d.h1   29us : sub_preempt_count (_spin_unlock)
+    sshd-4261  0d.h2   29us : irq_exit (do_IRQ)
+    sshd-4261  0d.h2   29us : sub_preempt_count (irq_exit)
+    sshd-4261  0d..3   30us : do_softirq (irq_exit)
+    sshd-4261  0d...   30us : __do_softirq (do_softirq)
+    sshd-4261  0d...   31us : __local_bh_disable (__do_softirq)
+    sshd-4261  0d...   31us+: add_preempt_count (__local_bh_disable)
+    sshd-4261  0d.s4   34us : add_preempt_count (__local_bh_disable)
+[...]
+    sshd-4261  0d.s3   43us : sub_preempt_count (local_bh_enable_ip)
+    sshd-4261  0d.s4   44us : sub_preempt_count (local_bh_enable_ip)
+    sshd-4261  0d.s3   44us : smp_apic_timer_interrupt (apic_timer_interrupt)
+    sshd-4261  0d.s3   45us : irq_enter (smp_apic_timer_interrupt)
+    sshd-4261  0d.s3   45us : idle_cpu (irq_enter)
+    sshd-4261  0d.s3   46us : add_preempt_count (irq_enter)
+    sshd-4261  0d.H3   46us : idle_cpu (irq_enter)
+    sshd-4261  0d.H3   47us : hrtimer_interrupt (smp_apic_timer_interrupt)
+    sshd-4261  0d.H3   47us : ktime_get (hrtimer_interrupt)
+[...]
+    sshd-4261  0d.H3   81us : tick_program_event (hrtimer_interrupt)
+    sshd-4261  0d.H3   82us : ktime_get (tick_program_event)
+    sshd-4261  0d.H3   82us : ktime_get_ts (ktime_get)
+    sshd-4261  0d.H3   83us : getnstimeofday (ktime_get_ts)
+    sshd-4261  0d.H3   83us : set_normalized_timespec (ktime_get_ts)
+    sshd-4261  0d.H3   84us : clockevents_program_event (tick_program_event)
+    sshd-4261  0d.H3   84us : lapic_next_event (clockevents_program_event)
+    sshd-4261  0d.H3   85us : irq_exit (smp_apic_timer_interrupt)
+    sshd-4261  0d.H3   85us : sub_preempt_count (irq_exit)
+    sshd-4261  0d.s4   86us : sub_preempt_count (irq_exit)
+    sshd-4261  0d.s3   86us : add_preempt_count (__local_bh_disable)
+[...]
+    sshd-4261  0d.s1   98us : sub_preempt_count (net_rx_action)
+    sshd-4261  0d.s.   99us : add_preempt_count (_spin_lock_irq)
+    sshd-4261  0d.s1   99us+: _spin_unlock_irq (run_timer_softirq)
+    sshd-4261  0d.s.  104us : _local_bh_enable (__do_softirq)
+    sshd-4261  0d.s.  104us : sub_preempt_count (_local_bh_enable)
+    sshd-4261  0d.s.  105us : _local_bh_enable (__do_softirq)
+    sshd-4261  0d.s1  105us : trace_preempt_on (__do_softirq)
+
+
+This is a very interesting trace. It started with the preemption of
+the ls task. We see that the task had the "need_resched" bit set
+with the 'N' in the trace.  Interrupts are disabled in the spin_lock
+and the trace started. We see that a schedule took place to run
+sshd.  When the interrupts were enabled, we took an interrupt.
+On return from the interrupt handler, the softirq ran. We took another
+interrupt while running the softirq as we see with the capital 'H'.
+
+
+wakeup
+------
+
+In Real-Time environment it is very important to know the wakeup
+time it takes for the highest priority task that wakes up to the
+time it executes. This is also known as "schedule latency".
+I stress the point that this is about RT tasks. It is also important
+to know the scheduling latency of non-RT tasks, but the average
+schedule latency is better for non-RT tasks. Tools like
+LatencyTop are more appropriate for such measurements.
+
+Real-Time environments are interested in the worst case latency.
+That is the longest latency it takes for something to happen, and
+not the average. We can have a very fast scheduler that may only
+have a large latency once in a while, but that would not work well
+with Real-Time tasks.  The wakeup tracer was designed to record
+the worst case wakeups of RT tasks. Non-RT tasks are not recorded
+because the tracer only records one worst case and tracing non-RT
+tasks that are unpredictable will overwrite the worst case latency
+of RT tasks.
+
+Since this tracer only deals with RT tasks, we will run this slightly
+differently than we did with the previous tracers. Instead of performing
+an 'ls', we will run 'sleep 1' under 'chrt' which changes the
+priority of the task.
+
+ # echo wakeup > /debug/tracing/current_tracer
+ # echo 0 > /debug/tracing/tracing_max_latency
+ # echo 1 > /debug/tracing/tracing_enabled
+ # chrt -f 5 sleep 1
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/latency_trace
+# tracer: wakeup
+#
+wakeup latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 4 us, #2/2, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: sleep-4901 (uid:0 nice:0 policy:1 rt_prio:5)
+    -----------------
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+  <idle>-0     1d.h4    0us+: try_to_wake_up (wake_up_process)
+  <idle>-0     1d..4    4us : schedule (cpu_idle)
+
+
+vim:ft=help
+
+
+Running this on an idle system, we see that it only took 4 microseconds
+to perform the task switch.  Note, since the trace marker in the
+schedule is before the actual "switch", we stop the tracing when
+the recorded task is about to schedule in. This may change if
+we add a new marker at the end of the scheduler.
+
+Notice that the recorded task is 'sleep' with the PID of 4901 and it
+has an rt_prio of 5. This priority is user-space priority and not
+the internal kernel priority. The policy is 1 for SCHED_FIFO and 2
+for SCHED_RR.
+
+Doing the same with chrt -r 5 and ftrace_enabled set.
+
+# tracer: wakeup
+#
+wakeup latency trace v1.1.5 on 2.6.26-rc8
+--------------------------------------------------------------------
+ latency: 50 us, #60/60, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)
+    -----------------
+    | task: sleep-4068 (uid:0 nice:0 policy:2 rt_prio:5)
+    -----------------
+
+#                _------=> CPU#
+#               / _-----=> irqs-off
+#              | / _----=> need-resched
+#              || / _---=> hardirq/softirq
+#              ||| / _--=> preempt-depth
+#              |||| /
+#              |||||     delay
+#  cmd     pid ||||| time  |   caller
+#     \   /    |||||   \   |   /
+ksoftirq-7     1d.H3    0us : try_to_wake_up (wake_up_process)
+ksoftirq-7     1d.H4    1us : sub_preempt_count (marker_probe_cb)
+ksoftirq-7     1d.H3    2us : check_preempt_wakeup (try_to_wake_up)
+ksoftirq-7     1d.H3    3us : update_curr (check_preempt_wakeup)
+ksoftirq-7     1d.H3    4us : calc_delta_mine (update_curr)
+ksoftirq-7     1d.H3    5us : __resched_task (check_preempt_wakeup)
+ksoftirq-7     1d.H3    6us : task_wake_up_rt (try_to_wake_up)
+ksoftirq-7     1d.H3    7us : _spin_unlock_irqrestore (try_to_wake_up)
+[...]
+ksoftirq-7     1d.H2   17us : irq_exit (smp_apic_timer_interrupt)
+ksoftirq-7     1d.H2   18us : sub_preempt_count (irq_exit)
+ksoftirq-7     1d.s3   19us : sub_preempt_count (irq_exit)
+ksoftirq-7     1..s2   20us : rcu_process_callbacks (__do_softirq)
+[...]
+ksoftirq-7     1..s2   26us : __rcu_process_callbacks (rcu_process_callbacks)
+ksoftirq-7     1d.s2   27us : _local_bh_enable (__do_softirq)
+ksoftirq-7     1d.s2   28us : sub_preempt_count (_local_bh_enable)
+ksoftirq-7     1.N.3   29us : sub_preempt_count (ksoftirqd)
+ksoftirq-7     1.N.2   30us : _cond_resched (ksoftirqd)
+ksoftirq-7     1.N.2   31us : __cond_resched (_cond_resched)
+ksoftirq-7     1.N.2   32us : add_preempt_count (__cond_resched)
+ksoftirq-7     1.N.2   33us : schedule (__cond_resched)
+ksoftirq-7     1.N.2   33us : add_preempt_count (schedule)
+ksoftirq-7     1.N.3   34us : hrtick_clear (schedule)
+ksoftirq-7     1dN.3   35us : _spin_lock (schedule)
+ksoftirq-7     1dN.3   36us : add_preempt_count (_spin_lock)
+ksoftirq-7     1d..4   37us : put_prev_task_fair (schedule)
+ksoftirq-7     1d..4   38us : update_curr (put_prev_task_fair)
+[...]
+ksoftirq-7     1d..5   47us : _spin_trylock (tracing_record_cmdline)
+ksoftirq-7     1d..5   48us : add_preempt_count (_spin_trylock)
+ksoftirq-7     1d..6   49us : _spin_unlock (tracing_record_cmdline)
+ksoftirq-7     1d..6   49us : sub_preempt_count (_spin_unlock)
+ksoftirq-7     1d..4   50us : schedule (__cond_resched)
+
+The interrupt went off while running ksoftirqd. This task runs at
+SCHED_OTHER. Why didn't we see the 'N' set early? This may be
+a harmless bug with x86_32 and 4K stacks. On x86_32 with 4K stacks
+configured, the interrupt and softirq runs with their own stack.
+Some information is held on the top of the task's stack (need_resched
+and preempt_count are both stored there). The setting of the NEED_RESCHED
+bit is done directly to the task's stack, but the reading of the
+NEED_RESCHED is done by looking at the current stack, which in this case
+is the stack for the hard interrupt. This hides the fact that NEED_RESCHED
+has been set. We don't see the 'N' until we switch back to the task's
+assigned stack.
+
+ftrace
+------
+
+ftrace is not only the name of the tracing infrastructure, but it
+is also a name of one of the tracers. The tracer is the function
+tracer. Enabling the function tracer can be done from the
+debug file system. Make sure the ftrace_enabled is set otherwise
+this tracer is a nop.
+
+ # sysctl kernel.ftrace_enabled=1
+ # echo ftrace > /debug/tracing/current_tracer
+ # echo 1 > /debug/tracing/tracing_enabled
+ # usleep 1
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/trace
+# tracer: ftrace
+#
+#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
+#              | |      |          |         |
+            bash-4003  [00]   123.638713: finish_task_switch <-schedule
+            bash-4003  [00]   123.638714: _spin_unlock_irq <-finish_task_switch
+            bash-4003  [00]   123.638714: sub_preempt_count <-_spin_unlock_irq
+            bash-4003  [00]   123.638715: hrtick_set <-schedule
+            bash-4003  [00]   123.638715: _spin_lock_irqsave <-hrtick_set
+            bash-4003  [00]   123.638716: add_preempt_count <-_spin_lock_irqsave
+            bash-4003  [00]   123.638716: _spin_unlock_irqrestore <-hrtick_set
+            bash-4003  [00]   123.638717: sub_preempt_count <-_spin_unlock_irqrestore
+            bash-4003  [00]   123.638717: hrtick_clear <-hrtick_set
+            bash-4003  [00]   123.638718: sub_preempt_count <-schedule
+            bash-4003  [00]   123.638718: sub_preempt_count <-preempt_schedule
+            bash-4003  [00]   123.638719: wait_for_completion <-__stop_machine_run
+            bash-4003  [00]   123.638719: wait_for_common <-wait_for_completion
+            bash-4003  [00]   123.638720: _spin_lock_irq <-wait_for_common
+            bash-4003  [00]   123.638720: add_preempt_count <-_spin_lock_irq
+[...]
+
+
+Note: It is sometimes better to enable or disable tracing directly from
+a program, because the buffer may be overflowed by the echo commands
+before you get to the point you want to trace. It is also easier to
+stop the tracing at the point that you hit the part that you are
+interested in. Since the ftrace buffer is a ring buffer with the
+oldest data being overwritten, usually it is sufficient to start the
+tracer with an echo command but have you code stop it. Something
+like the following is usually appropriate for this.
+
+int trace_fd;
+[...]
+int main(int argc, char *argv[]) {
+       [...]
+       trace_fd = open("/debug/tracing/tracing_enabled", O_WRONLY);
+       [...]
+       if (condition_hit()) {
+       write(trace_fd, "0", 1);
+       }
+       [...]
+}
+
+
+dynamic ftrace
+--------------
+
+If CONFIG_DYNAMIC_FTRACE is set, then the system will run with
+virtually no overhead when function tracing is disabled. The way
+this works is the mcount function call (placed at the start of
+every kernel function, produced by the -pg switch in gcc), starts
+of pointing to a simple return.
+
+When dynamic ftrace is initialized, it calls kstop_machine to make
+the machine act like a uniprocessor so that it can freely modify code
+without worrying about other processors executing that same code.  At
+initialization, the mcount calls are changed to call a "record_ip"
+function.  After this, the first time a kernel function is called,
+it has the calling address saved in a hash table.
+
+Later on the ftraced kernel thread is awoken and will again call
+kstop_machine if new functions have been recorded. The ftraced thread
+will change all calls to mcount to "nop".  Just calling mcount
+and having mcount return has shown a 10% overhead. By converting
+it to a nop, there is no recordable overhead to the system.
+
+One special side-effect to the recording of the functions being
+traced, is that we can now selectively choose which functions we
+want to trace and which ones we want the mcount calls to remain as
+nops.
+
+Two files are used, one for enabling and one for disabling the tracing
+of recorded functions. They are:
+
+  set_ftrace_filter
+
+and
+
+  set_ftrace_notrace
+
+A list of available functions that you can add to these files is listed
+in:
+
+   available_filter_functions
+
+ # cat /debug/tracing/available_filter_functions
+put_prev_task_idle
+kmem_cache_create
+pick_next_task_rt
+get_online_cpus
+pick_next_task_fair
+mutex_lock
+[...]
+
+If I'm only interested in sys_nanosleep and hrtimer_interrupt:
+
+ # echo sys_nanosleep hrtimer_interrupt \
+               > /debug/tracing/set_ftrace_filter
+ # echo ftrace > /debug/tracing/current_tracer
+ # echo 1 > /debug/tracing/tracing_enabled
+ # usleep 1
+ # echo 0 > /debug/tracing/tracing_enabled
+ # cat /debug/tracing/trace
+# tracer: ftrace
+#
+#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
+#              | |      |          |         |
+          usleep-4134  [00]  1317.070017: hrtimer_interrupt <-smp_apic_timer_interrupt
+          usleep-4134  [00]  1317.070111: sys_nanosleep <-syscall_call
+          <idle>-0     [00]  1317.070115: hrtimer_interrupt <-smp_apic_timer_interrupt
+
+To see what functions are being traced, you can cat the file:
+
+ # cat /debug/tracing/set_ftrace_filter
+hrtimer_interrupt
+sys_nanosleep
+
+
+Perhaps this isn't enough. The filters also allow simple wild cards.
+Only the following are currently available
+
+  <match>*  - will match functions that begin with <match>
+  *<match>  - will match functions that end with <match>
+  *<match>* - will match functions that have <match> in it
+
+Thats all the wild cards that are allowed.
+
+  <match>*<match> will not work.
+
+ # echo hrtimer_* > /debug/tracing/set_ftrace_filter
+
+Produces:<