From 130f66cee2c26cd7565019370e94bbdbe454c69c Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 13 Oct 2012 11:29:00 +0900 Subject: [PATCH] --- yaml --- r: 334231 b: refs/heads/master c: 4d7127dace8cf4b05eb7c8c8531fc204fbb195f4 h: refs/heads/master i: 334229: 23cb1a7f22b72f6596dd40d1881f8151738044c2 334227: 1a54a1dc1ca4437da49c5a378b28f19f4d3ac742 334223: 1bfa6095f06ae8bc98314bfbc5b4b20ed374d54e v: v3 --- [refs] | 2 +- .../Documentation/ABI/testing/sysfs-bus-fcoe | 12 +- .../DocBook/media/v4l/compat.xml | 4 + .../DocBook/media/v4l/controls.xml | 278 ++- trunk/Documentation/DocBook/media/v4l/io.xml | 6 +- .../DocBook/media/v4l/pixfmt-nv12m.xml | 17 +- .../DocBook/media/v4l/pixfmt.xml | 38 + .../DocBook/media/v4l/subdev-formats.xml | 44 + .../DocBook/media/v4l/vidioc-qbuf.xml | 3 +- .../DocBook/media/v4l/vidioc-querybuf.xml | 11 +- trunk/Documentation/arm/Booting | 22 +- .../filesystems/nfs/nfsd-admin-interfaces.txt | 41 + .../Documentation/scsi/ChangeLog.megaraid_sas | 13 + .../Documentation/thermal/cpu-cooling-api.txt | 32 + .../exynos4_tmu => thermal/exynos_thermal} | 35 +- trunk/Documentation/thermal/sysfs-api.txt | 9 +- .../video4linux/v4l2-controls.txt | 24 + trunk/MAINTAINERS | 11 +- trunk/Makefile | 19 +- trunk/arch/Kconfig | 3 + trunk/arch/alpha/Kconfig | 1 + trunk/arch/alpha/include/asm/thread_info.h | 3 +- trunk/arch/alpha/include/asm/unistd.h | 1 - trunk/arch/alpha/kernel/entry.S | 100 +- trunk/arch/alpha/kernel/osf_sys.c | 16 +- trunk/arch/alpha/kernel/ptrace.c | 32 +- trunk/arch/alpha/kernel/signal.c | 48 +- trunk/arch/arm/Kconfig | 1 + trunk/arch/arm/boot/compressed/.gitignore | 1 + trunk/arch/arm/boot/compressed/Makefile | 9 +- trunk/arch/arm/boot/compressed/head.S | 71 +- trunk/arch/arm/include/asm/assembler.h | 29 + trunk/arch/arm/include/asm/cacheflush.h | 15 + trunk/arch/arm/include/asm/glue-cache.h | 1 + trunk/arch/arm/include/asm/opcodes-virt.h | 10 + trunk/arch/arm/include/asm/ptrace.h | 1 + trunk/arch/arm/include/asm/thread_info.h | 2 - trunk/arch/arm/include/asm/unistd.h | 1 - trunk/arch/arm/include/asm/vfpmacros.h | 4 +- trunk/arch/arm/include/asm/virt.h | 69 + trunk/arch/arm/kernel/Makefile | 2 + trunk/arch/arm/kernel/entry-common.S | 29 +- trunk/arch/arm/kernel/head.S | 14 +- trunk/arch/arm/kernel/hyp-stub.S | 223 ++ trunk/arch/arm/kernel/process.c | 5 +- trunk/arch/arm/kernel/setup.c | 20 + trunk/arch/arm/kernel/signal.c | 1 - trunk/arch/arm/kernel/smp.c | 8 +- trunk/arch/arm/kernel/suspend.c | 17 +- trunk/arch/arm/mach-davinci/Kconfig | 7 + trunk/arch/arm/mach-davinci/board-da850-evm.c | 179 ++ .../arch/arm/mach-davinci/board-dm644x-evm.c | 15 +- .../arch/arm/mach-davinci/board-dm646x-evm.c | 80 +- trunk/arch/arm/mach-davinci/da850.c | 152 ++ trunk/arch/arm/mach-davinci/dm644x.c | 17 +- .../arm/mach-davinci/include/mach/da8xx.h | 11 + .../arch/arm/mach-davinci/include/mach/mux.h | 42 + .../arch/arm/mach-davinci/include/mach/psc.h | 1 + trunk/arch/arm/mach-exynos/mach-nuri.c | 9 +- trunk/arch/arm/mach-exynos/mach-origen.c | 6 +- trunk/arch/arm/mach-exynos/mach-smdk4x12.c | 2 +- trunk/arch/arm/mach-exynos/mach-smdkv310.c | 2 +- .../arm/mach-exynos/mach-universal_c210.c | 9 +- trunk/arch/arm/mach-exynos/setup-fimd0.c | 2 +- trunk/arch/arm/mach-omap2/board-4430sdp.c | 73 +- trunk/arch/arm/mach-omap2/board-omap4panda.c | 27 +- trunk/arch/arm/mach-omap2/display.c | 1 - trunk/arch/arm/mach-omap2/twl-common.c | 6 + trunk/arch/arm/mach-s3c24xx/mach-smdk2416.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-anw6410.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-crag6410.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-hmt.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-mini6410.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-ncp.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-real6410.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-smartq5.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-smartq7.c | 2 +- trunk/arch/arm/mach-s3c64xx/mach-smdk6410.c | 2 +- trunk/arch/arm/mach-s5p64x0/mach-smdk6440.c | 2 +- trunk/arch/arm/mach-s5p64x0/mach-smdk6450.c | 2 +- trunk/arch/arm/mach-s5pc100/mach-smdkc100.c | 2 +- trunk/arch/arm/mach-s5pv210/mach-aquila.c | 2 +- trunk/arch/arm/mach-s5pv210/mach-goni.c | 2 +- trunk/arch/arm/mach-s5pv210/mach-smdkv210.c | 2 +- trunk/arch/arm/mm/Kconfig | 17 + trunk/arch/arm/mm/cache-fa.S | 3 + trunk/arch/arm/mm/cache-v3.S | 3 + trunk/arch/arm/mm/cache-v4.S | 3 + trunk/arch/arm/mm/cache-v4wb.S | 3 + trunk/arch/arm/mm/cache-v4wt.S | 3 + trunk/arch/arm/mm/cache-v6.S | 3 + trunk/arch/arm/mm/cache-v7.S | 48 +- trunk/arch/arm/mm/proc-arm1020.S | 3 + trunk/arch/arm/mm/proc-arm1020e.S | 3 + trunk/arch/arm/mm/proc-arm1022.S | 3 + trunk/arch/arm/mm/proc-arm1026.S | 3 + trunk/arch/arm/mm/proc-arm920.S | 3 + trunk/arch/arm/mm/proc-arm922.S | 3 + trunk/arch/arm/mm/proc-arm925.S | 3 + trunk/arch/arm/mm/proc-arm926.S | 3 + trunk/arch/arm/mm/proc-arm940.S | 3 + trunk/arch/arm/mm/proc-arm946.S | 3 + trunk/arch/arm/mm/proc-feroceon.S | 4 + trunk/arch/arm/mm/proc-macros.S | 1 + trunk/arch/arm/mm/proc-mohawk.S | 3 + trunk/arch/arm/mm/proc-v7.S | 2 +- trunk/arch/arm/mm/proc-xsc3.S | 3 + trunk/arch/arm/mm/proc-xscale.S | 4 + .../plat-nomadik/include/plat/gpio-nomadik.h | 6 + .../arm/plat-nomadik/include/plat/pincfg.h | 2 + .../plat-samsung/include/plat/regs-fb-v4.h | 159 -- trunk/arch/arm/plat-samsung/setup-mipiphy.c | 20 +- trunk/arch/arm64/include/asm/Kbuild | 2 - trunk/arch/arm64/include/asm/hwcap.h | 9 +- trunk/arch/arm64/include/asm/ptrace.h | 75 +- trunk/arch/arm64/include/asm/sigcontext.h | 40 +- trunk/arch/arm64/include/asm/stat.h | 5 +- trunk/arch/arm64/include/asm/unistd.h | 20 +- trunk/arch/arm64/include/asm/unistd32.h | 1105 ++++------ trunk/arch/arm64/include/uapi/asm/Kbuild | 14 + .../arm64/include/{ => uapi}/asm/auxvec.h | 0 .../include/{ => uapi}/asm/bitsperlong.h | 0 .../arm64/include/{ => uapi}/asm/byteorder.h | 0 .../arch/arm64/include/{ => uapi}/asm/fcntl.h | 0 trunk/arch/arm64/include/uapi/asm/hwcap.h | 26 + .../arch/arm64/include/{ => uapi}/asm/param.h | 0 trunk/arch/arm64/include/uapi/asm/ptrace.h | 91 + .../arch/arm64/include/{ => uapi}/asm/setup.h | 0 .../arch/arm64/include/uapi/asm/sigcontext.h | 57 + .../arm64/include/{ => uapi}/asm/siginfo.h | 0 .../arm64/include/{ => uapi}/asm/signal.h | 0 trunk/arch/arm64/include/uapi/asm/stat.h | 16 + .../arm64/include/{ => uapi}/asm/statfs.h | 0 trunk/arch/arm64/include/uapi/asm/unistd.h | 16 + trunk/arch/arm64/kernel/entry.S | 1 + trunk/arch/arm64/kernel/ptrace.c | 6 +- trunk/arch/arm64/kernel/signal32.c | 22 +- trunk/arch/arm64/kernel/sys.c | 4 +- trunk/arch/arm64/kernel/sys32.S | 126 +- trunk/arch/arm64/kernel/sys_compat.c | 10 +- trunk/arch/avr32/include/asm/Kbuild | 3 - trunk/arch/avr32/include/asm/param.h | 18 +- trunk/arch/avr32/include/asm/ptrace.h | 115 +- trunk/arch/avr32/include/asm/setup.h | 5 +- trunk/arch/avr32/include/asm/signal.h | 121 +- trunk/arch/avr32/include/asm/termios.h | 41 +- trunk/arch/avr32/include/asm/thread_info.h | 18 +- trunk/arch/avr32/include/asm/types.h | 6 +- trunk/arch/avr32/include/asm/unistd.h | 296 +-- trunk/arch/avr32/include/uapi/asm/Kbuild | 32 + .../avr32/include/{ => uapi}/asm/auxvec.h | 0 .../include/{ => uapi}/asm/bitsperlong.h | 0 .../avr32/include/{ => uapi}/asm/byteorder.h | 0 .../avr32/include/{ => uapi}/asm/cachectl.h | 0 .../arch/avr32/include/{ => uapi}/asm/errno.h | 0 .../arch/avr32/include/{ => uapi}/asm/fcntl.h | 0 .../arch/avr32/include/{ => uapi}/asm/ioctl.h | 0 .../avr32/include/{ => uapi}/asm/ioctls.h | 0 .../avr32/include/{ => uapi}/asm/ipcbuf.h | 0 .../avr32/include/{ => uapi}/asm/kvm_para.h | 0 .../arch/avr32/include/{ => uapi}/asm/mman.h | 0 .../avr32/include/{ => uapi}/asm/msgbuf.h | 0 trunk/arch/avr32/include/uapi/asm/param.h | 18 + .../arch/avr32/include/{ => uapi}/asm/poll.h | 0 .../include/{ => uapi}/asm/posix_types.h | 0 trunk/arch/avr32/include/uapi/asm/ptrace.h | 126 ++ .../avr32/include/{ => uapi}/asm/resource.h | 0 .../avr32/include/{ => uapi}/asm/sembuf.h | 0 trunk/arch/avr32/include/uapi/asm/setup.h | 17 + .../avr32/include/{ => uapi}/asm/shmbuf.h | 0 .../avr32/include/{ => uapi}/asm/sigcontext.h | 0 .../avr32/include/{ => uapi}/asm/siginfo.h | 0 trunk/arch/avr32/include/uapi/asm/signal.h | 128 ++ .../avr32/include/{ => uapi}/asm/socket.h | 0 .../avr32/include/{ => uapi}/asm/sockios.h | 0 .../arch/avr32/include/{ => uapi}/asm/stat.h | 0 .../avr32/include/{ => uapi}/asm/statfs.h | 0 .../arch/avr32/include/{ => uapi}/asm/swab.h | 0 .../avr32/include/{ => uapi}/asm/termbits.h | 0 trunk/arch/avr32/include/uapi/asm/termios.h | 50 + trunk/arch/avr32/include/uapi/asm/types.h | 8 + trunk/arch/avr32/include/uapi/asm/unistd.h | 305 +++ trunk/arch/avr32/kernel/process.c | 4 +- trunk/arch/avr32/kernel/signal.c | 1 - trunk/arch/blackfin/include/asm/thread_info.h | 4 - trunk/arch/blackfin/kernel/process.c | 4 +- trunk/arch/blackfin/kernel/signal.c | 1 - trunk/arch/c6x/Kconfig | 1 + trunk/arch/c6x/include/asm/Kbuild | 1 - trunk/arch/c6x/include/asm/processor.h | 2 - trunk/arch/c6x/include/asm/ptrace.h | 146 +- trunk/arch/c6x/include/asm/syscalls.h | 5 - trunk/arch/c6x/include/asm/thread_info.h | 1 - trunk/arch/c6x/include/uapi/asm/Kbuild | 7 + .../c6x/include/{ => uapi}/asm/byteorder.h | 0 .../c6x/include/{ => uapi}/asm/kvm_para.h | 0 trunk/arch/c6x/include/uapi/asm/ptrace.h | 163 ++ trunk/arch/c6x/include/{ => uapi}/asm/setup.h | 0 .../c6x/include/{ => uapi}/asm/sigcontext.h | 0 trunk/arch/c6x/include/{ => uapi}/asm/swab.h | 0 .../arch/c6x/include/{ => uapi}/asm/unistd.h | 3 + trunk/arch/c6x/kernel/asm-offsets.c | 1 - trunk/arch/c6x/kernel/entry.S | 56 +- trunk/arch/c6x/kernel/process.c | 72 +- trunk/arch/cris/arch-v10/kernel/process.c | 4 +- trunk/arch/cris/arch-v32/kernel/process.c | 4 +- trunk/arch/cris/include/asm/thread_info.h | 3 - trunk/arch/frv/Kconfig | 1 + trunk/arch/frv/include/asm/Kbuild | 3 - trunk/arch/frv/include/asm/processor.h | 9 +- trunk/arch/frv/include/asm/ptrace.h | 52 +- trunk/arch/frv/include/asm/setup.h | 7 +- trunk/arch/frv/include/asm/signal.h | 33 +- trunk/arch/frv/include/asm/termios.h | 46 +- trunk/arch/frv/include/asm/thread_info.h | 3 - trunk/arch/frv/include/asm/types.h | 6 +- trunk/arch/frv/include/asm/unistd.h | 348 +-- trunk/arch/frv/include/uapi/asm/Kbuild | 32 + .../arch/frv/include/{ => uapi}/asm/auxvec.h | 0 .../frv/include/{ => uapi}/asm/bitsperlong.h | 0 .../frv/include/{ => uapi}/asm/byteorder.h | 0 trunk/arch/frv/include/{ => uapi}/asm/errno.h | 0 trunk/arch/frv/include/{ => uapi}/asm/fcntl.h | 0 trunk/arch/frv/include/{ => uapi}/asm/ioctl.h | 0 .../arch/frv/include/{ => uapi}/asm/ioctls.h | 0 .../arch/frv/include/{ => uapi}/asm/ipcbuf.h | 0 .../frv/include/{ => uapi}/asm/kvm_para.h | 0 trunk/arch/frv/include/{ => uapi}/asm/mman.h | 0 .../arch/frv/include/{ => uapi}/asm/msgbuf.h | 0 trunk/arch/frv/include/{ => uapi}/asm/param.h | 0 trunk/arch/frv/include/{ => uapi}/asm/poll.h | 0 .../frv/include/{ => uapi}/asm/posix_types.h | 0 trunk/arch/frv/include/uapi/asm/ptrace.h | 60 + .../frv/include/{ => uapi}/asm/registers.h | 0 .../frv/include/{ => uapi}/asm/resource.h | 0 .../arch/frv/include/{ => uapi}/asm/sembuf.h | 0 trunk/arch/frv/include/uapi/asm/setup.h | 18 + .../arch/frv/include/{ => uapi}/asm/shmbuf.h | 0 .../frv/include/{ => uapi}/asm/sigcontext.h | 0 .../arch/frv/include/{ => uapi}/asm/siginfo.h | 0 trunk/arch/frv/include/uapi/asm/signal.h | 36 + .../arch/frv/include/{ => uapi}/asm/socket.h | 0 .../arch/frv/include/{ => uapi}/asm/sockios.h | 0 trunk/arch/frv/include/{ => uapi}/asm/stat.h | 0 .../arch/frv/include/{ => uapi}/asm/statfs.h | 0 trunk/arch/frv/include/{ => uapi}/asm/swab.h | 0 .../frv/include/{ => uapi}/asm/termbits.h | 0 trunk/arch/frv/include/uapi/asm/termios.h | 46 + trunk/arch/frv/include/uapi/asm/types.h | 11 + trunk/arch/frv/include/uapi/asm/unistd.h | 348 +++ trunk/arch/frv/kernel/Makefile | 4 +- trunk/arch/frv/kernel/entry.S | 13 + trunk/arch/frv/kernel/frv_ksyms.c | 1 - trunk/arch/frv/kernel/kernel_execve.S | 33 - trunk/arch/frv/kernel/kernel_thread.S | 77 - trunk/arch/frv/kernel/process.c | 66 +- trunk/arch/frv/kernel/signal.c | 9 - trunk/arch/h8300/include/asm/thread_info.h | 7 +- trunk/arch/h8300/kernel/process.c | 4 +- trunk/arch/h8300/kernel/signal.c | 1 - trunk/arch/hexagon/include/asm/thread_info.h | 5 - trunk/arch/hexagon/kernel/signal.c | 1 - trunk/arch/hexagon/kernel/syscall.c | 4 +- trunk/arch/ia64/Kconfig | 2 +- trunk/arch/ia64/include/asm/Kbuild | 14 - trunk/arch/ia64/include/asm/gcc_intrin.h | 615 +----- trunk/arch/ia64/include/asm/intrinsics.h | 120 +- trunk/arch/ia64/include/asm/kvm_para.h | 10 +- trunk/arch/ia64/include/asm/mman.h | 12 +- trunk/arch/ia64/include/asm/param.h | 22 +- trunk/arch/ia64/include/asm/perfmon.h | 171 +- trunk/arch/ia64/include/asm/ptrace.h | 236 +- trunk/arch/ia64/include/asm/siginfo.h | 118 +- trunk/arch/ia64/include/asm/signal.h | 122 +- trunk/arch/ia64/include/asm/termios.h | 46 +- trunk/arch/ia64/include/asm/thread_info.h | 2 - trunk/arch/ia64/include/asm/types.h | 19 +- trunk/arch/ia64/include/asm/unistd.h | 324 +-- trunk/arch/ia64/include/asm/ustack.h | 11 +- trunk/arch/ia64/include/uapi/asm/Kbuild | 45 + .../arch/ia64/include/{ => uapi}/asm/auxvec.h | 0 .../ia64/include/{ => uapi}/asm/bitsperlong.h | 0 .../arch/ia64/include/{ => uapi}/asm/break.h | 0 .../ia64/include/{ => uapi}/asm/byteorder.h | 0 .../ia64/include/{ => uapi}/asm/cmpxchg.h | 0 .../arch/ia64/include/{ => uapi}/asm/errno.h | 0 .../arch/ia64/include/{ => uapi}/asm/fcntl.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/fpu.h | 0 trunk/arch/ia64/include/uapi/asm/gcc_intrin.h | 618 ++++++ .../ia64/include/{ => uapi}/asm/ia64regs.h | 0 .../include/{ => uapi}/asm/intel_intrin.h | 0 trunk/arch/ia64/include/uapi/asm/intrinsics.h | 124 ++ .../arch/ia64/include/{ => uapi}/asm/ioctl.h | 0 .../arch/ia64/include/{ => uapi}/asm/ioctls.h | 0 .../arch/ia64/include/{ => uapi}/asm/ipcbuf.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/kvm.h | 0 trunk/arch/ia64/include/uapi/asm/kvm_para.h | 0 trunk/arch/ia64/include/uapi/asm/mman.h | 16 + .../arch/ia64/include/{ => uapi}/asm/msgbuf.h | 0 trunk/arch/ia64/include/uapi/asm/param.h | 29 + trunk/arch/ia64/include/uapi/asm/perfmon.h | 177 ++ .../{ => uapi}/asm/perfmon_default_smpl.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/poll.h | 0 .../ia64/include/{ => uapi}/asm/posix_types.h | 0 trunk/arch/ia64/include/uapi/asm/ptrace.h | 247 +++ .../include/{ => uapi}/asm/ptrace_offsets.h | 0 .../ia64/include/{ => uapi}/asm/resource.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/rse.h | 0 .../arch/ia64/include/{ => uapi}/asm/sembuf.h | 0 .../arch/ia64/include/{ => uapi}/asm/setup.h | 0 .../arch/ia64/include/{ => uapi}/asm/shmbuf.h | 0 .../ia64/include/{ => uapi}/asm/sigcontext.h | 0 trunk/arch/ia64/include/uapi/asm/siginfo.h | 121 + trunk/arch/ia64/include/uapi/asm/signal.h | 127 ++ .../arch/ia64/include/{ => uapi}/asm/socket.h | 0 .../ia64/include/{ => uapi}/asm/sockios.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/stat.h | 0 .../arch/ia64/include/{ => uapi}/asm/statfs.h | 0 trunk/arch/ia64/include/{ => uapi}/asm/swab.h | 0 .../ia64/include/{ => uapi}/asm/termbits.h | 0 trunk/arch/ia64/include/uapi/asm/termios.h | 50 + trunk/arch/ia64/include/uapi/asm/types.h | 31 + .../ia64/include/{ => uapi}/asm/ucontext.h | 0 trunk/arch/ia64/include/uapi/asm/unistd.h | 328 +++ trunk/arch/ia64/include/uapi/asm/ustack.h | 12 + trunk/arch/ia64/kernel/process.c | 4 +- trunk/arch/ia64/kernel/signal.c | 8 - trunk/arch/ia64/kernel/time.c | 4 +- trunk/arch/m32r/include/asm/thread_info.h | 9 +- trunk/arch/m32r/kernel/process.c | 4 +- trunk/arch/m32r/kernel/signal.c | 3 - trunk/arch/m68k/Kconfig | 1 + trunk/arch/m68k/include/asm/processor.h | 25 +- trunk/arch/m68k/include/asm/ptrace.h | 2 + trunk/arch/m68k/include/asm/unistd.h | 2 + trunk/arch/m68k/kernel/entry.S | 16 + trunk/arch/m68k/kernel/process.c | 104 +- trunk/arch/m68k/kernel/sys_m68k.c | 17 - .../arch/microblaze/include/asm/thread_info.h | 3 +- trunk/arch/microblaze/kernel/signal.c | 7 +- trunk/arch/microblaze/kernel/sys_microblaze.c | 4 +- trunk/arch/mips/include/asm/thread_info.h | 3 - trunk/arch/mips/kernel/kgdb.c | 9 + trunk/arch/mips/kernel/linux32.c | 4 +- trunk/arch/mips/kernel/syscall.c | 4 +- trunk/arch/mn10300/Kconfig | 1 + trunk/arch/mn10300/include/asm/Kbuild | 1 - trunk/arch/mn10300/include/asm/frame.inc | 2 +- trunk/arch/mn10300/include/asm/processor.h | 18 +- trunk/arch/mn10300/include/asm/ptrace.h | 73 +- trunk/arch/mn10300/include/asm/setup.h | 4 +- trunk/arch/mn10300/include/asm/signal.h | 121 +- trunk/arch/mn10300/include/asm/termios.h | 81 +- trunk/arch/mn10300/include/asm/thread_info.h | 3 +- trunk/arch/mn10300/include/asm/types.h | 5 +- trunk/arch/mn10300/include/asm/unistd.h | 344 +-- trunk/arch/mn10300/include/uapi/asm/Kbuild | 31 + .../mn10300/include/{ => uapi}/asm/auxvec.h | 0 .../include/{ => uapi}/asm/bitsperlong.h | 0 .../include/{ => uapi}/asm/byteorder.h | 0 .../mn10300/include/{ => uapi}/asm/errno.h | 0 .../mn10300/include/{ => uapi}/asm/fcntl.h | 0 .../mn10300/include/{ => uapi}/asm/ioctl.h | 0 .../mn10300/include/{ => uapi}/asm/ioctls.h | 0 .../mn10300/include/{ => uapi}/asm/ipcbuf.h | 0 .../mn10300/include/{ => uapi}/asm/kvm_para.h | 0 .../mn10300/include/{ => uapi}/asm/mman.h | 0 .../mn10300/include/{ => uapi}/asm/msgbuf.h | 0 .../mn10300/include/{ => uapi}/asm/param.h | 0 .../mn10300/include/{ => uapi}/asm/poll.h | 0 .../include/{ => uapi}/asm/posix_types.h | 0 trunk/arch/mn10300/include/uapi/asm/ptrace.h | 84 + .../mn10300/include/{ => uapi}/asm/resource.h | 0 .../mn10300/include/{ => uapi}/asm/sembuf.h | 0 trunk/arch/mn10300/include/uapi/asm/setup.h | 0 .../mn10300/include/{ => uapi}/asm/shmbuf.h | 0 .../include/{ => uapi}/asm/sigcontext.h | 0 .../mn10300/include/{ => uapi}/asm/siginfo.h | 0 trunk/arch/mn10300/include/uapi/asm/signal.h | 131 ++ .../mn10300/include/{ => uapi}/asm/socket.h | 0 .../mn10300/include/{ => uapi}/asm/sockios.h | 0 .../mn10300/include/{ => uapi}/asm/stat.h | 0 .../mn10300/include/{ => uapi}/asm/statfs.h | 0 .../mn10300/include/{ => uapi}/asm/swab.h | 0 .../mn10300/include/{ => uapi}/asm/termbits.h | 0 trunk/arch/mn10300/include/uapi/asm/termios.h | 83 + trunk/arch/mn10300/include/uapi/asm/types.h | 11 + trunk/arch/mn10300/include/uapi/asm/unistd.h | 354 +++ trunk/arch/mn10300/kernel/Makefile | 4 +- trunk/arch/mn10300/kernel/entry.S | 18 + trunk/arch/mn10300/kernel/internal.h | 6 +- trunk/arch/mn10300/kernel/kernel_execve.S | 37 - trunk/arch/mn10300/kernel/kthread.S | 31 - trunk/arch/mn10300/kernel/process.c | 91 +- trunk/arch/mn10300/kernel/signal.c | 13 - trunk/arch/openrisc/include/asm/processor.h | 2 +- trunk/arch/openrisc/include/asm/thread_info.h | 3 +- trunk/arch/openrisc/kernel/irq.c | 20 +- trunk/arch/openrisc/kernel/process.c | 4 +- trunk/arch/openrisc/kernel/ptrace.c | 2 +- trunk/arch/openrisc/lib/delay.c | 6 +- trunk/arch/parisc/hpux/fs.c | 4 +- trunk/arch/parisc/hpux/gate.S | 2 +- trunk/arch/parisc/include/asm/thread_info.h | 5 +- trunk/arch/parisc/kernel/process.c | 4 +- trunk/arch/parisc/kernel/signal.c | 45 +- trunk/arch/parisc/kernel/sys_parisc32.c | 4 +- trunk/arch/parisc/kernel/syscall.S | 9 +- trunk/arch/powerpc/Kconfig | 3 +- trunk/arch/powerpc/include/asm/Kbuild | 35 - trunk/arch/powerpc/include/asm/bootx.h | 123 +- trunk/arch/powerpc/include/asm/cputable.h | 35 +- trunk/arch/powerpc/include/asm/elf.h | 311 +-- trunk/arch/powerpc/include/asm/kvm_para.h | 70 +- trunk/arch/powerpc/include/asm/mman.h | 27 +- trunk/arch/powerpc/include/asm/nvram.h | 55 +- trunk/arch/powerpc/include/asm/processor.h | 3 - trunk/arch/powerpc/include/asm/ptrace.h | 244 +- trunk/arch/powerpc/include/asm/signal.h | 143 +- trunk/arch/powerpc/include/asm/spu_info.h | 29 +- trunk/arch/powerpc/include/asm/swab.h | 15 +- trunk/arch/powerpc/include/asm/syscalls.h | 3 - trunk/arch/powerpc/include/asm/termios.h | 69 +- trunk/arch/powerpc/include/asm/thread_info.h | 2 + trunk/arch/powerpc/include/asm/types.h | 30 +- trunk/arch/powerpc/include/asm/unistd.h | 376 +--- trunk/arch/powerpc/include/uapi/asm/Kbuild | 41 + .../powerpc/include/{ => uapi}/asm/auxvec.h | 0 .../include/{ => uapi}/asm/bitsperlong.h | 0 trunk/arch/powerpc/include/uapi/asm/bootx.h | 132 ++ .../include/{ => uapi}/asm/byteorder.h | 0 .../arch/powerpc/include/uapi/asm/cputable.h | 36 + trunk/arch/powerpc/include/uapi/asm/elf.h | 307 +++ .../powerpc/include/{ => uapi}/asm/errno.h | 0 .../powerpc/include/{ => uapi}/asm/fcntl.h | 0 .../powerpc/include/{ => uapi}/asm/ioctl.h | 0 .../powerpc/include/{ => uapi}/asm/ioctls.h | 0 .../powerpc/include/{ => uapi}/asm/ipcbuf.h | 0 .../arch/powerpc/include/{ => uapi}/asm/kvm.h | 0 .../arch/powerpc/include/uapi/asm/kvm_para.h | 90 + .../powerpc/include/{ => uapi}/asm/linkage.h | 0 trunk/arch/powerpc/include/uapi/asm/mman.h | 31 + .../powerpc/include/{ => uapi}/asm/msgbuf.h | 0 trunk/arch/powerpc/include/uapi/asm/nvram.h | 62 + .../powerpc/include/{ => uapi}/asm/param.h | 0 .../powerpc/include/{ => uapi}/asm/poll.h | 0 .../include/{ => uapi}/asm/posix_types.h | 0 .../powerpc/include/{ => uapi}/asm/ps3fb.h | 0 trunk/arch/powerpc/include/uapi/asm/ptrace.h | 259 +++ .../powerpc/include/{ => uapi}/asm/resource.h | 0 .../powerpc/include/{ => uapi}/asm/seccomp.h | 0 .../powerpc/include/{ => uapi}/asm/sembuf.h | 0 .../powerpc/include/{ => uapi}/asm/setup.h | 0 .../powerpc/include/{ => uapi}/asm/shmbuf.h | 0 .../include/{ => uapi}/asm/sigcontext.h | 0 .../powerpc/include/{ => uapi}/asm/siginfo.h | 0 trunk/arch/powerpc/include/uapi/asm/signal.h | 145 ++ .../powerpc/include/{ => uapi}/asm/socket.h | 0 .../powerpc/include/{ => uapi}/asm/sockios.h | 0 .../arch/powerpc/include/uapi/asm/spu_info.h | 53 + .../powerpc/include/{ => uapi}/asm/stat.h | 0 .../powerpc/include/{ => uapi}/asm/statfs.h | 0 trunk/arch/powerpc/include/uapi/asm/swab.h | 23 + .../powerpc/include/{ => uapi}/asm/termbits.h | 0 trunk/arch/powerpc/include/uapi/asm/termios.h | 76 + trunk/arch/powerpc/include/uapi/asm/types.h | 40 + .../powerpc/include/{ => uapi}/asm/ucontext.h | 0 trunk/arch/powerpc/include/uapi/asm/unistd.h | 380 ++++ trunk/arch/powerpc/kernel/entry_32.S | 16 + trunk/arch/powerpc/kernel/entry_64.S | 16 + trunk/arch/powerpc/kernel/misc.S | 7 - trunk/arch/powerpc/kernel/misc_32.S | 33 - trunk/arch/powerpc/kernel/misc_64.S | 34 - trunk/arch/powerpc/kernel/ppc_ksyms.c | 1 - trunk/arch/powerpc/kernel/process.c | 59 +- trunk/arch/powerpc/kernel/signal_32.c | 1 - trunk/arch/powerpc/kernel/sys_ppc32.c | 22 - trunk/arch/powerpc/kernel/time.c | 4 +- .../powerpc/platforms/pseries/eeh_event.c | 5 +- trunk/arch/s390/Kconfig | 2 +- trunk/arch/s390/include/asm/thread_info.h | 4 - trunk/arch/s390/kernel/time.c | 4 +- trunk/arch/score/include/asm/thread_info.h | 4 - trunk/arch/score/kernel/signal.c | 1 + trunk/arch/score/kernel/sys_score.c | 4 +- trunk/arch/sh/include/asm/thread_info.h | 3 + trunk/arch/sh/kernel/process_32.c | 4 +- trunk/arch/sh/kernel/process_64.c | 4 +- trunk/arch/sh/kernel/signal_32.c | 1 - trunk/arch/sh/kernel/signal_64.c | 1 - trunk/arch/sparc/include/asm/thread_info_32.h | 3 +- trunk/arch/sparc/include/asm/thread_info_64.h | 3 + trunk/arch/sparc/include/asm/uaccess_64.h | 5 + trunk/arch/sparc/kernel/process_32.c | 4 +- trunk/arch/sparc/kernel/process_64.c | 4 +- trunk/arch/sparc/kernel/sys_sparc32.c | 4 +- trunk/arch/sparc/kernel/syscalls.S | 32 +- trunk/arch/sparc/kernel/traps_64.c | 263 ++- trunk/arch/sparc/mm/fault_64.c | 2 - trunk/arch/tile/include/arch/Kbuild | 17 - trunk/arch/tile/include/arch/spr_def.h | 12 +- trunk/arch/tile/include/asm/Kbuild | 3 - trunk/arch/tile/include/asm/hardwall.h | 33 +- trunk/arch/tile/include/asm/ptrace.h | 72 +- trunk/arch/tile/include/asm/setup.h | 7 +- trunk/arch/tile/include/asm/signal.h | 12 +- trunk/arch/tile/include/asm/unistd.h | 25 +- trunk/arch/tile/include/uapi/arch/Kbuild | 17 + trunk/arch/tile/include/{ => uapi}/arch/abi.h | 0 .../arch/tile/include/{ => uapi}/arch/chip.h | 0 .../include/{ => uapi}/arch/chip_tile64.h | 0 .../include/{ => uapi}/arch/chip_tilegx.h | 0 .../include/{ => uapi}/arch/chip_tilepro.h | 0 .../tile/include/{ => uapi}/arch/icache.h | 0 .../tile/include/{ => uapi}/arch/interrupts.h | 0 .../include/{ => uapi}/arch/interrupts_32.h | 0 .../include/{ => uapi}/arch/interrupts_64.h | 0 .../tile/include/{ => uapi}/arch/opcode.h | 0 .../include/{ => uapi}/arch/opcode_tilegx.h | 0 .../include/{ => uapi}/arch/opcode_tilepro.h | 0 trunk/arch/tile/include/{ => uapi}/arch/sim.h | 0 .../tile/include/{ => uapi}/arch/sim_def.h | 0 trunk/arch/tile/include/uapi/arch/spr_def.h | 26 + .../tile/include/{ => uapi}/arch/spr_def_32.h | 6 +- .../tile/include/{ => uapi}/arch/spr_def_64.h | 6 +- trunk/arch/tile/include/uapi/asm/Kbuild | 15 + .../arch/tile/include/{ => uapi}/asm/auxvec.h | 0 .../tile/include/{ => uapi}/asm/bitsperlong.h | 0 .../tile/include/{ => uapi}/asm/byteorder.h | 0 .../tile/include/{ => uapi}/asm/cachectl.h | 0 trunk/arch/tile/include/uapi/asm/hardwall.h | 51 + .../tile/include/{ => uapi}/asm/kvm_para.h | 0 trunk/arch/tile/include/{ => uapi}/asm/mman.h | 0 trunk/arch/tile/include/uapi/asm/ptrace.h | 88 + trunk/arch/tile/include/uapi/asm/setup.h | 21 + .../tile/include/{ => uapi}/asm/sigcontext.h | 0 .../tile/include/{ => uapi}/asm/siginfo.h | 0 trunk/arch/tile/include/uapi/asm/signal.h | 27 + trunk/arch/tile/include/{ => uapi}/asm/stat.h | 0 trunk/arch/tile/include/{ => uapi}/asm/swab.h | 0 trunk/arch/tile/include/uapi/asm/unistd.h | 34 + trunk/arch/tile/kernel/compat_signal.c | 9 - trunk/arch/tile/kernel/process.c | 11 +- trunk/arch/tile/kernel/signal.c | 12 +- trunk/arch/um/include/asm/processor-generic.h | 2 - trunk/arch/um/include/asm/thread_info.h | 3 - trunk/arch/um/include/shared/os.h | 1 - trunk/arch/um/kernel/exec.c | 5 - trunk/arch/um/kernel/process.c | 10 +- trunk/arch/um/os-Linux/process.c | 13 - .../arch/unicore32/include/asm/thread_info.h | 4 +- trunk/arch/unicore32/kernel/entry.S | 2 - trunk/arch/unicore32/kernel/signal.c | 1 - trunk/arch/unicore32/kernel/sys.c | 4 +- trunk/arch/x86/Kconfig | 1 + trunk/arch/x86/include/asm/msr-index.h | 5 + trunk/arch/x86/include/asm/unistd.h | 1 - trunk/arch/x86/include/asm/vgtod.h | 4 +- trunk/arch/x86/kernel/cpu/Makefile | 2 +- trunk/arch/x86/kernel/cpu/perf_event.h | 2 + .../arch/x86/kernel/cpu/perf_event_amd_ibs.c | 61 +- trunk/arch/x86/kernel/cpu/perf_event_intel.c | 2 + trunk/arch/x86/kernel/cpu/perf_event_knc.c | 248 +++ trunk/arch/x86/kernel/cpu/perfctr-watchdog.c | 4 + trunk/arch/x86/kernel/entry_32.S | 48 +- trunk/arch/x86/kernel/entry_64.S | 24 +- trunk/arch/x86/kernel/kgdb.c | 2 + trunk/arch/x86/kernel/setup.c | 3 + trunk/arch/x86/kernel/vsyscall_64.c | 49 +- trunk/arch/x86/um/Kconfig | 1 + trunk/arch/x86/vdso/vclock_gettime.c | 22 +- trunk/arch/x86/xen/enlighten.c | 18 +- trunk/arch/x86/xen/mmu.c | 41 + trunk/arch/xtensa/include/asm/thread_info.h | 5 - trunk/arch/xtensa/kernel/process.c | 4 +- trunk/arch/xtensa/kernel/signal.c | 4 - trunk/drivers/acpi/ec.c | 30 +- trunk/drivers/acpi/processor_idle.c | 3 +- trunk/drivers/acpi/thermal.c | 93 +- trunk/drivers/cpuidle/cpuidle.c | 2 +- .../drivers/gpu/drm/exynos/exynos_drm_fimd.c | 2 +- trunk/drivers/hwmon/Kconfig | 10 - trunk/drivers/hwmon/Makefile | 1 - trunk/drivers/hwmon/exynos4_tmu.c | 518 ----- trunk/drivers/input/evdev.c | 99 +- trunk/drivers/input/input.c | 114 +- trunk/drivers/input/joydev.c | 88 +- trunk/drivers/input/keyboard/samsung-keypad.c | 11 +- trunk/drivers/input/mousedev.c | 224 +- trunk/drivers/input/tablet/wacom_sys.c | 145 +- trunk/drivers/input/tablet/wacom_wac.c | 30 +- .../drivers/input/touchscreen/atmel_mxt_ts.c | 6 +- trunk/drivers/isdn/i4l/isdn_ppp.c | 2 +- trunk/drivers/md/Kconfig | 8 + trunk/drivers/md/Makefile | 1 + trunk/drivers/md/dm-bio-prison.c | 415 ++++ trunk/drivers/md/dm-bio-prison.h | 72 + trunk/drivers/md/dm-bufio.c | 13 +- trunk/drivers/md/dm-mpath.c | 3 +- trunk/drivers/md/dm-thin.c | 521 +---- trunk/drivers/md/dm-verity.c | 2 +- trunk/drivers/md/dm.c | 108 +- .../md/persistent-data/dm-space-map-common.c | 4 +- trunk/drivers/media/dvb-core/dvb_frontend.c | 20 +- trunk/drivers/media/dvb-core/dvb_frontend.h | 4 +- trunk/drivers/media/dvb-frontends/a8293.c | 2 +- trunk/drivers/media/dvb-frontends/af9013.c | 6 +- trunk/drivers/media/dvb-frontends/af9033.c | 16 +- trunk/drivers/media/dvb-frontends/bcm3510.c | 2 +- trunk/drivers/media/dvb-frontends/cx24110.c | 6 +- .../media/dvb-frontends/cxd2820r_core.c | 3 +- trunk/drivers/media/dvb-frontends/drxd_hard.c | 2 +- trunk/drivers/media/dvb-frontends/ds3000.c | 12 +- .../media/dvb-frontends/dvb_dummy_fe.c | 21 +- trunk/drivers/media/dvb-frontends/isl6405.c | 2 +- trunk/drivers/media/dvb-frontends/isl6421.c | 2 +- trunk/drivers/media/dvb-frontends/itd1000.c | 2 +- trunk/drivers/media/dvb-frontends/lg2160.c | 8 +- trunk/drivers/media/dvb-frontends/lnbp21.c | 4 +- trunk/drivers/media/dvb-frontends/lnbp22.c | 2 +- trunk/drivers/media/dvb-frontends/s5h1432.c | 8 +- trunk/drivers/media/dvb-frontends/s921.c | 9 +- trunk/drivers/media/dvb-frontends/si21xx.c | 4 +- trunk/drivers/media/dvb-frontends/sp8870.c | 6 +- trunk/drivers/media/dvb-frontends/sp887x.c | 6 +- trunk/drivers/media/dvb-frontends/stb6100.c | 8 +- trunk/drivers/media/dvb-frontends/stv0299.c | 6 +- .../media/dvb-frontends/stv0900_core.c | 4 +- trunk/drivers/media/dvb-frontends/tda665x.c | 8 +- trunk/drivers/media/dvb-frontends/tda8083.c | 4 +- .../drivers/media/i2c/cx25840/cx25840-core.c | 2 +- trunk/drivers/media/i2c/m5mols/m5mols.h | 10 + .../drivers/media/i2c/m5mols/m5mols_capture.c | 3 + trunk/drivers/media/i2c/m5mols/m5mols_core.c | 47 + trunk/drivers/media/i2c/m5mols/m5mols_reg.h | 1 + trunk/drivers/media/i2c/mt9p031.c | 19 +- trunk/drivers/media/i2c/mt9t001.c | 22 +- trunk/drivers/media/i2c/mt9v032.c | 54 +- trunk/drivers/media/i2c/soc_camera/ov2640.c | 5 + trunk/drivers/media/i2c/ths7303.c | 106 +- trunk/drivers/media/i2c/tvp514x.c | 77 +- trunk/drivers/media/pci/bt8xx/bttv-driver.c | 30 +- trunk/drivers/media/pci/bt8xx/bttvp.h | 1 + trunk/drivers/media/pci/bt8xx/dst_ca.c | 2 +- trunk/drivers/media/pci/cx23885/altera-ci.c | 4 +- trunk/drivers/media/pci/cx23885/cimax2.c | 2 +- .../drivers/media/pci/cx23885/cx23885-cards.c | 3 + .../drivers/media/pci/cx23885/cx23885-video.c | 3 +- .../pci/cx25821/cx25821-video-upstream-ch2.c | 2 +- .../pci/cx25821/cx25821-video-upstream.c | 2 +- trunk/drivers/media/pci/cx88/cx88-blackbird.c | 6 +- trunk/drivers/media/pci/cx88/cx88-dvb.c | 2 +- trunk/drivers/media/pci/cx88/cx88-mpeg.c | 2 +- trunk/drivers/media/pci/cx88/cx88-tvaudio.c | 4 +- trunk/drivers/media/pci/cx88/cx88-video.c | 2 +- .../drivers/media/pci/saa7134/saa7134-video.c | 2 +- trunk/drivers/media/platform/Kconfig | 4 +- trunk/drivers/media/platform/davinci/vpbe.c | 136 +- .../media/platform/davinci/vpbe_display.c | 80 +- .../media/platform/davinci/vpbe_venc.c | 25 +- .../media/platform/davinci/vpfe_capture.c | 17 +- .../media/platform/davinci/vpif_capture.c | 370 ++-- .../media/platform/davinci/vpif_capture.h | 16 +- .../media/platform/davinci/vpif_display.c | 275 ++- .../media/platform/davinci/vpif_display.h | 18 +- .../media/platform/exynos-gsc/gsc-regs.c | 4 +- trunk/drivers/media/platform/fsl-viu.c | 2 +- .../drivers/media/platform/mem2mem_testdev.c | 14 +- trunk/drivers/media/platform/omap/omap_vout.c | 75 +- .../drivers/media/platform/omap3isp/ispreg.h | 6 +- .../media/platform/s5p-fimc/fimc-capture.c | 135 +- .../media/platform/s5p-fimc/fimc-core.c | 19 +- .../media/platform/s5p-fimc/fimc-core.h | 28 +- .../media/platform/s5p-fimc/fimc-m2m.c | 25 +- .../media/platform/s5p-fimc/fimc-reg.c | 23 +- .../media/platform/s5p-fimc/fimc-reg.h | 3 +- .../media/platform/s5p-fimc/mipi-csis.c | 75 +- trunk/drivers/media/platform/s5p-g2d/g2d.c | 2 +- .../media/platform/s5p-jpeg/jpeg-core.c | 6 +- trunk/drivers/media/platform/s5p-mfc/Makefile | 7 +- .../media/platform/s5p-mfc/regs-mfc-v6.h | 408 ++++ .../drivers/media/platform/s5p-mfc/regs-mfc.h | 41 + .../drivers/media/platform/s5p-mfc/s5p_mfc.c | 294 ++- .../media/platform/s5p-mfc/s5p_mfc_cmd.c | 111 +- .../media/platform/s5p-mfc/s5p_mfc_cmd.h | 17 +- .../media/platform/s5p-mfc/s5p_mfc_cmd_v5.c | 166 ++ .../media/platform/s5p-mfc/s5p_mfc_cmd_v5.h | 20 + .../media/platform/s5p-mfc/s5p_mfc_cmd_v6.c | 156 ++ .../media/platform/s5p-mfc/s5p_mfc_cmd_v6.h | 20 + .../media/platform/s5p-mfc/s5p_mfc_common.h | 191 +- .../media/platform/s5p-mfc/s5p_mfc_ctrl.c | 202 +- .../media/platform/s5p-mfc/s5p_mfc_ctrl.h | 1 + .../media/platform/s5p-mfc/s5p_mfc_dec.c | 258 ++- .../media/platform/s5p-mfc/s5p_mfc_dec.h | 1 + .../media/platform/s5p-mfc/s5p_mfc_enc.c | 236 +- .../media/platform/s5p-mfc/s5p_mfc_enc.h | 1 + .../media/platform/s5p-mfc/s5p_mfc_intr.c | 11 +- .../media/platform/s5p-mfc/s5p_mfc_opr.c | 1418 +----------- .../media/platform/s5p-mfc/s5p_mfc_opr.h | 137 +- .../media/platform/s5p-mfc/s5p_mfc_opr_v5.c | 1794 +++++++++++++++ .../{s5p_mfc_shm.h => s5p_mfc_opr_v5.h} | 41 +- .../media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 1956 +++++++++++++++++ .../media/platform/s5p-mfc/s5p_mfc_opr_v6.h | 50 + .../media/platform/s5p-mfc/s5p_mfc_pm.c | 3 +- .../media/platform/s5p-mfc/s5p_mfc_shm.c | 47 - .../media/platform/soc_camera/mx2_camera.c | 7 +- .../media/platform/soc_camera/soc_camera.c | 40 +- .../media/radio/si470x/radio-si470x-i2c.c | 2 +- .../media/radio/si470x/radio-si470x-usb.c | 2 +- trunk/drivers/media/radio/si4713-i2c.c | 12 +- trunk/drivers/media/rc/ene_ir.c | 5 +- trunk/drivers/media/rc/iguanair.c | 147 +- trunk/drivers/media/rc/ir-lirc-codec.c | 4 +- .../media/rc/keymaps/rc-msi-digivox-ii.c | 36 +- trunk/drivers/media/rc/nuvoton-cir.c | 3 + trunk/drivers/media/rc/redrat3.c | 3 + trunk/drivers/media/rc/winbond-cir.c | 2 +- trunk/drivers/media/tuners/mt2063.c | 44 +- trunk/drivers/media/tuners/mt2063.h | 4 - trunk/drivers/media/tuners/tda18271-common.c | 104 +- trunk/drivers/media/usb/dvb-usb-v2/af9015.c | 4 +- trunk/drivers/media/usb/dvb-usb-v2/af9035.c | 2 +- trunk/drivers/media/usb/dvb-usb/a800.c | 2 +- .../media/usb/dvb-usb/cinergyT2-core.c | 3 +- .../drivers/media/usb/dvb-usb/dibusb-common.c | 2 +- trunk/drivers/media/usb/dvb-usb/digitv.c | 2 +- trunk/drivers/media/usb/dvb-usb/dtt200u.c | 2 +- trunk/drivers/media/usb/dvb-usb/m920x.c | 2 +- .../media/usb/dvb-usb/technisat-usb2.c | 1 + trunk/drivers/media/usb/em28xx/em28xx-cards.c | 2 +- trunk/drivers/media/usb/em28xx/em28xx-dvb.c | 13 +- .../drivers/media/usb/stk1160/stk1160-core.c | 15 +- trunk/drivers/media/usb/stk1160/stk1160-v4l.c | 7 +- trunk/drivers/media/usb/stk1160/stk1160.h | 3 +- trunk/drivers/media/usb/uvc/uvc_queue.c | 10 +- trunk/drivers/media/usb/uvc/uvc_video.c | 4 +- trunk/drivers/media/usb/uvc/uvcvideo.h | 2 +- trunk/drivers/media/v4l2-core/v4l2-ctrls.c | 74 + trunk/drivers/media/v4l2-core/v4l2-ioctl.c | 8 +- .../drivers/media/v4l2-core/videobuf2-core.c | 79 +- trunk/drivers/mmc/host/mxs-mmc.c | 2 +- .../drivers/net/ethernet/intel/e1000e/e1000.h | 6 +- .../net/ethernet/intel/e1000e/netdev.c | 2 +- trunk/drivers/net/ethernet/jme.c | 4 + trunk/drivers/net/usb/cdc_eem.c | 4 + trunk/drivers/net/usb/kaweth.c | 2 +- trunk/drivers/net/usb/mcs7830.c | 30 +- trunk/drivers/net/usb/usbnet.c | 17 + trunk/drivers/net/vxlan.c | 148 +- trunk/drivers/net/wireless/ath/ath5k/base.c | 3 +- trunk/drivers/net/wireless/ath/ath9k/beacon.c | 2 +- trunk/drivers/net/wireless/ath/ath9k/hw.c | 5 + trunk/drivers/net/wireless/ath/ath9k/hw.h | 1 + trunk/drivers/net/wireless/ath/ath9k/main.c | 15 +- trunk/drivers/net/wireless/ath/ath9k/pci.c | 7 + trunk/drivers/net/wireless/ath/ath9k/xmit.c | 53 +- .../net/wireless/ath/carl9170/carl9170.h | 1 + .../drivers/net/wireless/ath/carl9170/main.c | 29 +- trunk/drivers/net/wireless/mwifiex/cfg80211.c | 27 +- trunk/drivers/net/wireless/mwifiex/join.c | 6 +- trunk/drivers/net/wireless/mwifiex/main.h | 2 +- trunk/drivers/net/wireless/mwifiex/scan.c | 38 +- .../net/wireless/mwifiex/sta_cmdresp.c | 4 +- .../drivers/net/wireless/mwifiex/sta_event.c | 31 +- trunk/drivers/net/wireless/rt2x00/rt2800lib.c | 4 +- trunk/drivers/net/xen-netback/netback.c | 40 +- .../drivers/pinctrl/pinctrl-nomadik-db8500.c | 289 ++- .../drivers/pinctrl/pinctrl-nomadik-db8540.c | 344 ++- trunk/drivers/pinctrl/pinctrl-nomadik.c | 117 +- trunk/drivers/pinctrl/pinctrl-nomadik.h | 78 + trunk/drivers/platform/x86/acerhdf.c | 5 +- .../drivers/platform/x86/intel_mid_thermal.c | 2 +- trunk/drivers/power/power_supply_core.c | 2 +- trunk/drivers/scsi/bfa/bfa_core.c | 85 +- trunk/drivers/scsi/bfa/bfa_defs.h | 61 +- trunk/drivers/scsi/bfa/bfa_defs_svc.h | 119 +- trunk/drivers/scsi/bfa/bfa_fc.h | 5 + trunk/drivers/scsi/bfa/bfa_fcbuild.c | 4 + trunk/drivers/scsi/bfa/bfa_fcpim.c | 123 +- trunk/drivers/scsi/bfa/bfa_fcpim.h | 13 +- trunk/drivers/scsi/bfa/bfa_fcs.c | 64 +- trunk/drivers/scsi/bfa/bfa_fcs.h | 23 +- trunk/drivers/scsi/bfa/bfa_fcs_lport.c | 155 +- trunk/drivers/scsi/bfa/bfa_fcs_rport.c | 288 ++- trunk/drivers/scsi/bfa/bfa_ioc.c | 494 ++++- trunk/drivers/scsi/bfa/bfa_ioc.h | 63 +- trunk/drivers/scsi/bfa/bfa_ioc_ct.c | 236 +- trunk/drivers/scsi/bfa/bfa_modules.h | 1 + trunk/drivers/scsi/bfa/bfa_port.c | 32 + trunk/drivers/scsi/bfa/bfa_port.h | 3 + trunk/drivers/scsi/bfa/bfa_svc.c | 732 +++++- trunk/drivers/scsi/bfa/bfa_svc.h | 30 +- trunk/drivers/scsi/bfa/bfad.c | 6 +- trunk/drivers/scsi/bfa/bfad_bsg.c | 375 +++- trunk/drivers/scsi/bfa/bfad_bsg.h | 63 +- trunk/drivers/scsi/bfa/bfad_drv.h | 2 +- trunk/drivers/scsi/bfa/bfi.h | 72 +- trunk/drivers/scsi/bfa/bfi_ms.h | 14 + trunk/drivers/scsi/bfa/bfi_reg.h | 3 + trunk/drivers/scsi/fcoe/fcoe.c | 14 +- trunk/drivers/scsi/fcoe/fcoe.h | 2 + trunk/drivers/scsi/libfc/fc_fcp.c | 3 +- trunk/drivers/scsi/lpfc/lpfc.h | 2 + trunk/drivers/scsi/lpfc/lpfc_attr.c | 8 +- trunk/drivers/scsi/lpfc/lpfc_crtn.h | 1 + trunk/drivers/scsi/lpfc/lpfc_els.c | 7 +- trunk/drivers/scsi/lpfc/lpfc_hbadisc.c | 11 +- trunk/drivers/scsi/lpfc/lpfc_hw4.h | 20 +- trunk/drivers/scsi/lpfc/lpfc_init.c | 256 ++- trunk/drivers/scsi/lpfc/lpfc_scsi.c | 39 +- trunk/drivers/scsi/lpfc/lpfc_sli.c | 96 +- trunk/drivers/scsi/lpfc/lpfc_sli4.h | 8 +- trunk/drivers/scsi/lpfc/lpfc_version.h | 2 +- trunk/drivers/scsi/megaraid/megaraid_sas.h | 8 +- .../drivers/scsi/megaraid/megaraid_sas_base.c | 13 +- trunk/drivers/scsi/megaraid/megaraid_sas_fp.c | 2 +- .../scsi/megaraid/megaraid_sas_fusion.c | 27 +- .../scsi/megaraid/megaraid_sas_fusion.h | 2 +- trunk/drivers/scsi/mvumi.c | 1093 +++++++-- trunk/drivers/scsi/mvumi.h | 235 +- trunk/drivers/scsi/qla2xxx/qla_init.c | 5 +- trunk/drivers/scsi/scsi_debug.c | 2 +- trunk/drivers/scsi/scsi_error.c | 8 +- trunk/drivers/scsi/storvsc_drv.c | 5 + trunk/drivers/scsi/virtio_scsi.c | 39 +- .../omap-thermal/omap-thermal-common.c | 5 +- trunk/drivers/staging/omapdrm/omap_drv.c | 5 +- trunk/drivers/thermal/Kconfig | 26 + trunk/drivers/thermal/Makefile | 5 +- trunk/drivers/thermal/cpu_cooling.c | 449 ++++ trunk/drivers/thermal/exynos_thermal.c | 997 +++++++++ trunk/drivers/thermal/rcar_thermal.c | 260 +++ trunk/drivers/thermal/spear_thermal.c | 2 +- trunk/drivers/thermal/thermal_sys.c | 321 ++- trunk/drivers/tty/hvc/hvc_xen.c | 5 +- trunk/drivers/tty/serial/kgdboc.c | 3 +- trunk/drivers/tty/vt/vt.c | 13 + trunk/drivers/usb/class/cdc-acm.c | 3 + trunk/drivers/video/Kconfig | 15 - trunk/drivers/video/Makefile | 2 - trunk/drivers/video/amifb.c | 2 - trunk/drivers/video/arcfb.c | 1 + trunk/drivers/video/atmel_lcdfb.c | 5 +- trunk/drivers/video/bf537-lq035.c | 12 +- trunk/drivers/video/bf54x-lq043fb.c | 9 +- trunk/drivers/video/bfin-lq035q1-fb.c | 13 +- trunk/drivers/video/bfin-t350mcqb-fb.c | 1 + trunk/drivers/video/bw2.c | 4 +- trunk/drivers/video/cg3.c | 3 +- trunk/drivers/video/cobalt_lcdfb.c | 5 +- trunk/drivers/video/console/font_mini_4x6.c | 2 +- trunk/drivers/video/console/font_sun8x16.c | 2 +- trunk/drivers/video/cyber2000fb.c | 4 +- trunk/drivers/video/da8xx-fb.c | 283 ++- trunk/drivers/video/ep93xx-fb.c | 17 +- trunk/drivers/video/exynos/exynos_dp_core.c | 322 ++- trunk/drivers/video/exynos/exynos_dp_core.h | 6 +- trunk/drivers/video/exynos/exynos_dp_reg.c | 58 +- trunk/drivers/video/exynos/exynos_dp_reg.h | 3 +- trunk/drivers/video/exynos/exynos_mipi_dsi.c | 9 +- .../video/exynos/exynos_mipi_dsi_common.c | 8 - trunk/drivers/video/fsl-diu-fb.c | 10 +- trunk/drivers/video/gbefb.c | 17 +- trunk/drivers/video/hpfb.c | 28 +- trunk/drivers/video/imxfb.c | 1 + trunk/drivers/video/jz4740_fb.c | 44 +- trunk/drivers/video/mb862xx/mb862xxfbdrv.c | 10 +- trunk/drivers/video/mbx/mbxfb.c | 25 +- trunk/drivers/video/msm/mddi.c | 3 - trunk/drivers/video/msm/mddi_client_nt35399.c | 6 +- trunk/drivers/video/msm/mdp.c | 1 - trunk/drivers/video/msm/mdp_hw.h | 1 - trunk/drivers/video/mx3fb.c | 3 +- trunk/drivers/video/nuc900fb.c | 2 +- trunk/drivers/video/omap/hwa742.c | 1 - trunk/drivers/video/omap/lcd_palmte.c | 1 - trunk/drivers/video/omap/omapfb_main.c | 9 - .../video/omap2/displays/panel-acx565akm.c | 14 +- .../video/omap2/displays/panel-generic-dpi.c | 76 +- .../omap2/displays/panel-lgphilips-lb035q02.c | 3 + .../drivers/video/omap2/displays/panel-n8x0.c | 31 +- .../omap2/displays/panel-nec-nl8048hl11-01b.c | 3 + .../video/omap2/displays/panel-picodlp.c | 4 + .../omap2/displays/panel-sharp-ls037v7dw01.c | 3 + .../drivers/video/omap2/displays/panel-taal.c | 239 +- .../video/omap2/displays/panel-tfp410.c | 20 +- .../omap2/displays/panel-tpo-td043mtea1.c | 7 +- trunk/drivers/video/omap2/dss/Kconfig | 2 +- trunk/drivers/video/omap2/dss/Makefile | 4 +- trunk/drivers/video/omap2/dss/apply.c | 330 +-- trunk/drivers/video/omap2/dss/core.c | 91 +- trunk/drivers/video/omap2/dss/dispc.c | 1018 ++++++--- trunk/drivers/video/omap2/dss/dispc.h | 37 + trunk/drivers/video/omap2/dss/display.c | 108 +- trunk/drivers/video/omap2/dss/dpi.c | 181 +- trunk/drivers/video/omap2/dss/dsi.c | 675 ++++-- trunk/drivers/video/omap2/dss/dss.c | 257 ++- trunk/drivers/video/omap2/dss/dss.h | 79 +- trunk/drivers/video/omap2/dss/dss_features.c | 278 ++- trunk/drivers/video/omap2/dss/dss_features.h | 7 + trunk/drivers/video/omap2/dss/hdmi.c | 247 ++- trunk/drivers/video/omap2/dss/hdmi_panel.c | 31 +- trunk/drivers/video/omap2/dss/manager-sysfs.c | 512 +++++ trunk/drivers/video/omap2/dss/manager.c | 473 +--- trunk/drivers/video/omap2/dss/output.c | 148 ++ trunk/drivers/video/omap2/dss/overlay-sysfs.c | 456 ++++ trunk/drivers/video/omap2/dss/overlay.c | 492 +---- trunk/drivers/video/omap2/dss/rfbi.c | 222 +- trunk/drivers/video/omap2/dss/sdi.c | 126 +- trunk/drivers/video/omap2/dss/venc.c | 337 ++- trunk/drivers/video/omap2/dss/venc_panel.c | 251 +++ .../drivers/video/omap2/omapfb/omapfb-ioctl.c | 7 +- .../drivers/video/omap2/omapfb/omapfb-main.c | 32 +- trunk/drivers/video/omap2/omapfb/omapfb.h | 5 +- trunk/drivers/video/omap2/vram.c | 56 - trunk/drivers/video/pnx4008/Makefile | 7 - trunk/drivers/video/pnx4008/dum.h | 211 -- trunk/drivers/video/pnx4008/fbcommon.h | 43 - trunk/drivers/video/pnx4008/pnxrgbfb.c | 198 -- trunk/drivers/video/pnx4008/sdum.c | 861 -------- trunk/drivers/video/pnx4008/sdum.h | 136 -- trunk/drivers/video/ps3fb.c | 7 +- trunk/drivers/video/s3c-fb.c | 54 +- trunk/drivers/video/s3c2410fb.c | 34 +- trunk/drivers/video/savage/savagefb_driver.c | 4 +- trunk/drivers/video/sis/initextlfb.c | 2 +- trunk/drivers/video/sunxvr1000.c | 4 +- trunk/drivers/video/sunxvr2500.c | 4 +- trunk/drivers/video/sunxvr500.c | 8 +- trunk/drivers/video/udlfb.c | 2 +- trunk/drivers/video/uvesafb.c | 2 + trunk/drivers/video/vermilion/vermilion.c | 3 +- trunk/drivers/video/via/via_clock.c | 19 + trunk/drivers/xen/xenbus/xenbus_xs.c | 21 + trunk/fs/9p/v9fs.c | 30 +- trunk/fs/9p/vfs_inode.c | 8 +- trunk/fs/btrfs/ioctl.c | 2 +- trunk/fs/ceph/export.c | 18 +- trunk/fs/compat.c | 12 +- trunk/fs/exec.c | 14 +- trunk/fs/exofs/super.c | 4 - trunk/fs/ext3/super.c | 6 - trunk/fs/fat/dir.c | 4 +- trunk/fs/fat/fat.h | 5 +- trunk/fs/fat/inode.c | 5 +- trunk/fs/fat/namei_msdos.c | 26 +- trunk/fs/fat/namei_vfat.c | 30 +- trunk/fs/file.c | 3 + trunk/fs/file_table.c | 2 +- trunk/fs/filesystems.c | 4 +- trunk/fs/fs-writeback.c | 2 +- trunk/fs/gfs2/export.c | 4 + trunk/fs/hpfs/super.c | 3 - trunk/fs/internal.h | 4 +- trunk/fs/isofs/export.c | 2 +- trunk/fs/lockd/svc.c | 17 +- trunk/fs/locks.c | 6 +- trunk/fs/namei.c | 216 +- trunk/fs/namespace.c | 16 +- trunk/fs/nfs/callback.c | 16 +- trunk/fs/nfsd/nfs2acl.c | 3 +- trunk/fs/nfsd/nfs3proc.c | 2 +- trunk/fs/nfsd/nfs4callback.c | 1 - trunk/fs/nfsd/nfs4idmap.c | 4 +- trunk/fs/nfsd/nfs4proc.c | 6 +- trunk/fs/nfsd/nfs4state.c | 351 +-- trunk/fs/nfsd/nfs4xdr.c | 2 +- trunk/fs/nfsd/nfsctl.c | 84 +- trunk/fs/nfsd/nfsd.h | 4 +- trunk/fs/nfsd/nfssvc.c | 26 +- trunk/fs/nfsd/state.h | 8 +- trunk/fs/nfsd/vfs.c | 2 +- trunk/fs/open.c | 29 +- trunk/fs/proc/base.c | 5 +- trunk/fs/quota/quota.c | 4 +- trunk/fs/reiserfs/inode.c | 6 +- trunk/fs/super.c | 23 - trunk/fs/sysv/balloc.c | 18 +- trunk/fs/sysv/ialloc.c | 14 +- trunk/fs/sysv/inode.c | 4 +- trunk/fs/sysv/super.c | 1 + trunk/fs/sysv/sysv.h | 1 + trunk/fs/ufs/balloc.c | 30 +- trunk/fs/ufs/ialloc.c | 16 +- trunk/fs/ufs/super.c | 21 +- trunk/fs/ufs/ufs.h | 1 + trunk/fs/xattr.c | 8 +- trunk/fs/xfs/xfs_export.c | 3 + trunk/include/linux/alarmtimer.h | 31 +- trunk/include/linux/audit.h | 70 +- trunk/include/linux/can/Kbuild | 5 - trunk/include/linux/clocksource.h | 16 - trunk/include/linux/compiler-gcc4.h | 2 +- trunk/include/linux/console.h | 10 +- trunk/include/linux/cpu_cooling.h | 58 + trunk/include/linux/dvb/version.h | 2 +- trunk/include/linux/fs.h | 26 +- trunk/include/linux/fsnotify.h | 8 +- trunk/include/linux/if_link.h | 6 + trunk/include/linux/input.h | 10 +- trunk/include/linux/jiffies.h | 20 +- trunk/include/linux/lglock.h | 19 +- trunk/include/linux/mmc/Kbuild | 1 - trunk/include/linux/nfsd/Kbuild | 5 - trunk/include/linux/nfsd/debug.h | 31 +- trunk/include/linux/nfsd/export.h | 52 +- trunk/include/linux/nfsd/nfsfh.h | 111 +- trunk/include/linux/nfsd/stats.h | 8 +- trunk/include/linux/of_mdio.h | 20 +- trunk/include/linux/perf_event.h | 2 +- .../{exynos4_tmu.h => exynos_thermal.h} | 47 +- trunk/include/linux/platform_data/mipi-csis.h | 30 +- trunk/include/linux/security.h | 12 +- trunk/include/linux/sunrpc/Kbuild | 1 - trunk/include/linux/sunrpc/debug.h | 39 +- trunk/include/linux/sunrpc/svc_xprt.h | 5 +- trunk/include/linux/sunrpc/svcsock.h | 3 - trunk/include/linux/syscalls.h | 8 + trunk/include/linux/thermal.h | 28 +- trunk/include/linux/timekeeper_internal.h | 108 + trunk/include/linux/usb/usbnet.h | 2 + trunk/include/linux/v4l2-controls.h | 42 + trunk/include/linux/v4l2-mediabus.h | 5 + trunk/include/linux/videodev2.h | 5 + trunk/include/linux/virtio_scsi.h | 2 + trunk/include/linux/wimax/Kbuild | 1 - trunk/include/media/davinci/vpbe.h | 14 +- trunk/include/media/davinci/vpbe_types.h | 8 +- trunk/include/media/davinci/vpbe_venc.h | 2 +- trunk/include/media/davinci/vpif_types.h | 26 +- trunk/include/media/s5p_fimc.h | 2 - trunk/include/media/v4l2-ctrls.h | 23 + trunk/include/media/v4l2-subdev.h | 48 + trunk/include/scsi/fc/fc_fcp.h | 6 + trunk/include/scsi/libfcoe.h | 2 - trunk/include/scsi/scsi_cmnd.h | 12 +- trunk/include/uapi/linux/can/Kbuild | 5 + trunk/include/{ => uapi}/linux/can/bcm.h | 0 trunk/include/{ => uapi}/linux/can/error.h | 0 trunk/include/{ => uapi}/linux/can/gw.h | 0 trunk/include/{ => uapi}/linux/can/netlink.h | 0 trunk/include/{ => uapi}/linux/can/raw.h | 0 trunk/include/uapi/linux/mmc/Kbuild | 1 + trunk/include/{ => uapi}/linux/mmc/ioctl.h | 0 trunk/include/uapi/linux/nfsd/Kbuild | 5 + trunk/include/{ => uapi}/linux/nfsd/cld.h | 0 trunk/include/uapi/linux/nfsd/debug.h | 40 + trunk/include/uapi/linux/nfsd/export.h | 58 + trunk/include/uapi/linux/nfsd/nfsfh.h | 122 + trunk/include/uapi/linux/nfsd/stats.h | 17 + trunk/include/uapi/linux/sunrpc/Kbuild | 1 + trunk/include/uapi/linux/sunrpc/debug.h | 48 + trunk/include/uapi/linux/wimax/Kbuild | 1 + trunk/include/{ => uapi}/linux/wimax/i2400m.h | 0 trunk/include/uapi/xen/Kbuild | 2 + trunk/include/{ => uapi}/xen/evtchn.h | 0 trunk/include/{ => uapi}/xen/privcmd.h | 0 trunk/include/video/omapdss.h | 112 +- .../video/samsung_fimd.h} | 152 +- trunk/include/xen/Kbuild | 2 - trunk/include/xen/interface/hvm/hvm_op.h | 19 + trunk/init/Kconfig | 12 + trunk/init/do_mounts.c | 7 +- trunk/init/do_mounts_initrd.c | 41 +- trunk/init/main.c | 33 +- trunk/ipc/mqueue.c | 17 +- trunk/kernel/acct.c | 6 +- trunk/kernel/audit.c | 2 + trunk/kernel/audit.h | 7 +- trunk/kernel/audit_watch.c | 3 +- trunk/kernel/auditfilter.c | 65 +- trunk/kernel/auditsc.c | 217 +- trunk/kernel/debug/debug_core.c | 18 + trunk/kernel/debug/kdb/kdb_bt.c | 2 + trunk/kernel/debug/kdb/kdb_io.c | 33 +- trunk/kernel/debug/kdb/kdb_main.c | 2 + trunk/kernel/events/core.c | 21 +- trunk/kernel/irq/irqdomain.c | 33 +- trunk/kernel/kmod.c | 7 +- trunk/kernel/kthread.c | 1 + trunk/kernel/rcutree.c | 21 +- trunk/kernel/rcutree.h | 6 + trunk/kernel/sched/core.c | 71 +- trunk/kernel/time.c | 2 +- trunk/kernel/time/Kconfig | 4 + trunk/kernel/time/alarmtimer.c | 118 +- trunk/kernel/time/jiffies.c | 32 +- trunk/kernel/time/tick-sched.c | 2 +- trunk/kernel/time/timekeeping.c | 117 +- trunk/kernel/timer.c | 10 +- trunk/mm/backing-dev.c | 50 +- trunk/mm/page-writeback.c | 14 +- trunk/mm/shmem.c | 6 +- trunk/mm/slab_common.c | 5 +- trunk/mm/swapfile.c | 11 +- trunk/net/9p/client.c | 18 +- trunk/net/9p/trans_fd.c | 38 +- trunk/net/bridge/br_netfilter.c | 3 + trunk/net/core/pktgen.c | 146 +- trunk/net/core/utils.c | 24 + trunk/net/ipv4/ip_vti.c | 4 +- trunk/net/ipv4/route.c | 2 +- trunk/net/ipv4/sysctl_net_ipv4.c | 2 + trunk/net/ipv4/tcp_ipv4.c | 7 +- trunk/net/ipv6/tcp_ipv6.c | 3 +- trunk/net/mac80211/mesh_sync.c | 3 +- trunk/net/mac80211/status.c | 4 +- trunk/net/mac80211/tx.c | 22 +- trunk/net/sunrpc/svc_xprt.c | 233 +- trunk/net/sunrpc/svcsock.c | 157 +- .../net/sunrpc/xprtrdma/svc_rdma_transport.c | 4 - trunk/scripts/Makefile.modinst | 2 +- trunk/scripts/Makefile.modpost | 2 +- trunk/scripts/coccicheck | 3 + trunk/scripts/coccinelle/api/ptr_ret.cocci | 26 + .../coccinelle/tests/odd_ptr_err.cocci | 65 + trunk/scripts/kconfig/Makefile | 12 +- trunk/scripts/kconfig/conf.c | 25 +- trunk/scripts/kconfig/expr.h | 11 + trunk/scripts/kconfig/lkc_proto.h | 6 +- trunk/scripts/kconfig/lxdialog/dialog.h | 9 +- trunk/scripts/kconfig/lxdialog/textbox.c | 171 +- trunk/scripts/kconfig/lxdialog/util.c | 7 + trunk/scripts/kconfig/mconf.c | 123 +- trunk/scripts/kconfig/menu.c | 53 +- trunk/scripts/kconfig/nconf.c | 2 +- trunk/scripts/kernel-doc | 273 ++- trunk/scripts/mod/modpost.c | 1 + trunk/scripts/package/buildtar | 6 +- trunk/scripts/tags.sh | 8 +- trunk/security/capability.c | 4 +- trunk/security/security.c | 4 +- trunk/security/selinux/hooks.c | 4 +- trunk/security/smack/smack_lsm.c | 4 +- trunk/security/tomoyo/common.h | 2 +- trunk/security/tomoyo/mount.c | 5 +- trunk/security/tomoyo/tomoyo.c | 4 +- trunk/sound/pci/hda/hda_codec.c | 2 + trunk/sound/pci/hda/hda_intel.c | 5 - trunk/sound/pci/hda/patch_cirrus.c | 58 +- trunk/sound/pci/hda/patch_realtek.c | 3 + trunk/sound/pci/hda/patch_sigmatel.c | 27 + trunk/sound/pci/hda/patch_via.c | 98 +- trunk/sound/usb/quirks-table.h | 46 + trunk/tools/perf/Makefile | 86 +- trunk/tools/perf/bash_completion | 50 +- trunk/tools/perf/builtin-buildid-cache.c | 58 +- trunk/tools/perf/builtin-buildid-list.c | 55 +- trunk/tools/perf/builtin-diff.c | 68 +- trunk/tools/perf/builtin-evlist.c | 21 +- trunk/tools/perf/builtin-help.c | 40 +- trunk/tools/perf/builtin-inject.c | 88 +- trunk/tools/perf/builtin-kmem.c | 66 +- trunk/tools/perf/builtin-kvm.c | 460 ++-- trunk/tools/perf/builtin-lock.c | 90 +- trunk/tools/perf/builtin-probe.c | 26 +- trunk/tools/perf/builtin-record.c | 27 +- trunk/tools/perf/builtin-report.c | 4 +- trunk/tools/perf/builtin-sched.c | 2 +- trunk/tools/perf/builtin-script.c | 90 +- trunk/tools/perf/builtin-stat.c | 328 ++- trunk/tools/perf/builtin-timechart.c | 100 +- trunk/tools/perf/builtin-top.c | 11 +- trunk/tools/perf/builtin-trace.c | 134 +- trunk/tools/perf/perf.c | 4 +- trunk/tools/perf/ui/browsers/hists.c | 12 +- trunk/tools/perf/ui/gtk/browser.c | 6 +- trunk/tools/perf/ui/gtk/util.c | 2 +- trunk/tools/perf/ui/helpline.h | 18 +- trunk/tools/perf/ui/hist.c | 145 +- trunk/tools/perf/ui/setup.c | 2 +- trunk/tools/perf/ui/stdio/hist.c | 45 +- trunk/tools/perf/util/annotate.h | 8 +- trunk/tools/perf/util/cache.h | 38 +- trunk/tools/perf/util/debug.c | 2 +- trunk/tools/perf/util/debug.h | 17 +- trunk/tools/perf/util/evlist.c | 88 +- trunk/tools/perf/util/evlist.h | 18 +- trunk/tools/perf/util/generate-cmdlist.sh | 4 +- trunk/tools/perf/util/hist.c | 66 +- trunk/tools/perf/util/hist.h | 38 +- .../util/include/linux/rbtree_augmented.h | 2 + trunk/tools/perf/util/map.c | 2 +- trunk/tools/perf/util/parse-options.c | 8 + trunk/tools/perf/util/parse-options.h | 1 + trunk/tools/perf/util/path.c | 2 +- trunk/tools/perf/util/perf_regs.h | 4 +- trunk/tools/perf/util/sort.h | 19 +- trunk/tools/perf/util/symbol.h | 10 +- trunk/tools/perf/util/unwind.h | 4 +- trunk/tools/perf/util/util.c | 4 +- trunk/tools/power/acpi/acpidump.c | 1 - trunk/tools/testing/ktest/ktest.pl | 15 +- 1193 files changed, 34709 insertions(+), 21286 deletions(-) create mode 100644 trunk/Documentation/filesystems/nfs/nfsd-admin-interfaces.txt create mode 100644 trunk/Documentation/thermal/cpu-cooling-api.txt rename trunk/Documentation/{hwmon/exynos4_tmu => thermal/exynos_thermal} (71%) create mode 100644 trunk/arch/arm/include/asm/virt.h create mode 100644 trunk/arch/arm/kernel/hyp-stub.S delete mode 100644 trunk/arch/arm/plat-samsung/include/plat/regs-fb-v4.h rename trunk/arch/arm64/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/arm64/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/arm64/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/arm64/include/{ => uapi}/asm/fcntl.h (100%) create mode 100644 trunk/arch/arm64/include/uapi/asm/hwcap.h rename trunk/arch/arm64/include/{ => uapi}/asm/param.h (100%) create mode 100644 trunk/arch/arm64/include/uapi/asm/ptrace.h rename trunk/arch/arm64/include/{ => uapi}/asm/setup.h (100%) create mode 100644 trunk/arch/arm64/include/uapi/asm/sigcontext.h rename trunk/arch/arm64/include/{ => uapi}/asm/siginfo.h (100%) rename trunk/arch/arm64/include/{ => uapi}/asm/signal.h (100%) create mode 100644 trunk/arch/arm64/include/uapi/asm/stat.h rename trunk/arch/arm64/include/{ => uapi}/asm/statfs.h (100%) create mode 100644 trunk/arch/arm64/include/uapi/asm/unistd.h rename trunk/arch/avr32/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/cachectl.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/errno.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/fcntl.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/ioctl.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/ioctls.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/ipcbuf.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/kvm_para.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/mman.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/msgbuf.h (100%) create mode 100644 trunk/arch/avr32/include/uapi/asm/param.h rename trunk/arch/avr32/include/{ => uapi}/asm/poll.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/posix_types.h (100%) create mode 100644 trunk/arch/avr32/include/uapi/asm/ptrace.h rename trunk/arch/avr32/include/{ => uapi}/asm/resource.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/sembuf.h (100%) create mode 100644 trunk/arch/avr32/include/uapi/asm/setup.h rename trunk/arch/avr32/include/{ => uapi}/asm/shmbuf.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/siginfo.h (100%) create mode 100644 trunk/arch/avr32/include/uapi/asm/signal.h rename trunk/arch/avr32/include/{ => uapi}/asm/socket.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/sockios.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/statfs.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/swab.h (100%) rename trunk/arch/avr32/include/{ => uapi}/asm/termbits.h (100%) create mode 100644 trunk/arch/avr32/include/uapi/asm/termios.h create mode 100644 trunk/arch/avr32/include/uapi/asm/types.h create mode 100644 trunk/arch/avr32/include/uapi/asm/unistd.h rename trunk/arch/c6x/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/c6x/include/{ => uapi}/asm/kvm_para.h (100%) create mode 100644 trunk/arch/c6x/include/uapi/asm/ptrace.h rename trunk/arch/c6x/include/{ => uapi}/asm/setup.h (100%) rename trunk/arch/c6x/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/c6x/include/{ => uapi}/asm/swab.h (100%) rename trunk/arch/c6x/include/{ => uapi}/asm/unistd.h (92%) rename trunk/arch/frv/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/errno.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/fcntl.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/ioctl.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/ioctls.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/ipcbuf.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/kvm_para.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/mman.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/msgbuf.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/param.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/poll.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/posix_types.h (100%) create mode 100644 trunk/arch/frv/include/uapi/asm/ptrace.h rename trunk/arch/frv/include/{ => uapi}/asm/registers.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/resource.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/sembuf.h (100%) create mode 100644 trunk/arch/frv/include/uapi/asm/setup.h rename trunk/arch/frv/include/{ => uapi}/asm/shmbuf.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/siginfo.h (100%) create mode 100644 trunk/arch/frv/include/uapi/asm/signal.h rename trunk/arch/frv/include/{ => uapi}/asm/socket.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/sockios.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/statfs.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/swab.h (100%) rename trunk/arch/frv/include/{ => uapi}/asm/termbits.h (100%) create mode 100644 trunk/arch/frv/include/uapi/asm/termios.h create mode 100644 trunk/arch/frv/include/uapi/asm/types.h create mode 100644 trunk/arch/frv/include/uapi/asm/unistd.h delete mode 100644 trunk/arch/frv/kernel/kernel_execve.S delete mode 100644 trunk/arch/frv/kernel/kernel_thread.S rename trunk/arch/ia64/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/break.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/cmpxchg.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/errno.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/fcntl.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/fpu.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/gcc_intrin.h rename trunk/arch/ia64/include/{ => uapi}/asm/ia64regs.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/intel_intrin.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/intrinsics.h rename trunk/arch/ia64/include/{ => uapi}/asm/ioctl.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/ioctls.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/ipcbuf.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/kvm.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/kvm_para.h create mode 100644 trunk/arch/ia64/include/uapi/asm/mman.h rename trunk/arch/ia64/include/{ => uapi}/asm/msgbuf.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/param.h create mode 100644 trunk/arch/ia64/include/uapi/asm/perfmon.h rename trunk/arch/ia64/include/{ => uapi}/asm/perfmon_default_smpl.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/poll.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/posix_types.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/ptrace.h rename trunk/arch/ia64/include/{ => uapi}/asm/ptrace_offsets.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/resource.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/rse.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/sembuf.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/setup.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/shmbuf.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/sigcontext.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/siginfo.h create mode 100644 trunk/arch/ia64/include/uapi/asm/signal.h rename trunk/arch/ia64/include/{ => uapi}/asm/socket.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/sockios.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/statfs.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/swab.h (100%) rename trunk/arch/ia64/include/{ => uapi}/asm/termbits.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/termios.h create mode 100644 trunk/arch/ia64/include/uapi/asm/types.h rename trunk/arch/ia64/include/{ => uapi}/asm/ucontext.h (100%) create mode 100644 trunk/arch/ia64/include/uapi/asm/unistd.h create mode 100644 trunk/arch/ia64/include/uapi/asm/ustack.h rename trunk/arch/mn10300/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/errno.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/fcntl.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/ioctl.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/ioctls.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/ipcbuf.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/kvm_para.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/mman.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/msgbuf.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/param.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/poll.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/posix_types.h (100%) create mode 100644 trunk/arch/mn10300/include/uapi/asm/ptrace.h rename trunk/arch/mn10300/include/{ => uapi}/asm/resource.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/sembuf.h (100%) create mode 100644 trunk/arch/mn10300/include/uapi/asm/setup.h rename trunk/arch/mn10300/include/{ => uapi}/asm/shmbuf.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/siginfo.h (100%) create mode 100644 trunk/arch/mn10300/include/uapi/asm/signal.h rename trunk/arch/mn10300/include/{ => uapi}/asm/socket.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/sockios.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/statfs.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/swab.h (100%) rename trunk/arch/mn10300/include/{ => uapi}/asm/termbits.h (100%) create mode 100644 trunk/arch/mn10300/include/uapi/asm/termios.h create mode 100644 trunk/arch/mn10300/include/uapi/asm/types.h create mode 100644 trunk/arch/mn10300/include/uapi/asm/unistd.h delete mode 100644 trunk/arch/mn10300/kernel/kernel_execve.S delete mode 100644 trunk/arch/mn10300/kernel/kthread.S rename trunk/arch/powerpc/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/bitsperlong.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/bootx.h rename trunk/arch/powerpc/include/{ => uapi}/asm/byteorder.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/cputable.h create mode 100644 trunk/arch/powerpc/include/uapi/asm/elf.h rename trunk/arch/powerpc/include/{ => uapi}/asm/errno.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/fcntl.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/ioctl.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/ioctls.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/ipcbuf.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/kvm.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/kvm_para.h rename trunk/arch/powerpc/include/{ => uapi}/asm/linkage.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/mman.h rename trunk/arch/powerpc/include/{ => uapi}/asm/msgbuf.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/nvram.h rename trunk/arch/powerpc/include/{ => uapi}/asm/param.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/poll.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/posix_types.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/ps3fb.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/ptrace.h rename trunk/arch/powerpc/include/{ => uapi}/asm/resource.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/seccomp.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/sembuf.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/setup.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/shmbuf.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/siginfo.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/signal.h rename trunk/arch/powerpc/include/{ => uapi}/asm/socket.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/sockios.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/spu_info.h rename trunk/arch/powerpc/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/powerpc/include/{ => uapi}/asm/statfs.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/swab.h rename trunk/arch/powerpc/include/{ => uapi}/asm/termbits.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/termios.h create mode 100644 trunk/arch/powerpc/include/uapi/asm/types.h rename trunk/arch/powerpc/include/{ => uapi}/asm/ucontext.h (100%) create mode 100644 trunk/arch/powerpc/include/uapi/asm/unistd.h rename trunk/arch/tile/include/{ => uapi}/arch/abi.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/chip.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/chip_tile64.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/chip_tilegx.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/chip_tilepro.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/icache.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/interrupts.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/interrupts_32.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/interrupts_64.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/opcode.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/opcode_tilegx.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/opcode_tilepro.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/sim.h (100%) rename trunk/arch/tile/include/{ => uapi}/arch/sim_def.h (100%) create mode 100644 trunk/arch/tile/include/uapi/arch/spr_def.h rename trunk/arch/tile/include/{ => uapi}/arch/spr_def_32.h (98%) rename trunk/arch/tile/include/{ => uapi}/arch/spr_def_64.h (98%) rename trunk/arch/tile/include/{ => uapi}/asm/auxvec.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/bitsperlong.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/byteorder.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/cachectl.h (100%) create mode 100644 trunk/arch/tile/include/uapi/asm/hardwall.h rename trunk/arch/tile/include/{ => uapi}/asm/kvm_para.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/mman.h (100%) create mode 100644 trunk/arch/tile/include/uapi/asm/ptrace.h create mode 100644 trunk/arch/tile/include/uapi/asm/setup.h rename trunk/arch/tile/include/{ => uapi}/asm/sigcontext.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/siginfo.h (100%) create mode 100644 trunk/arch/tile/include/uapi/asm/signal.h rename trunk/arch/tile/include/{ => uapi}/asm/stat.h (100%) rename trunk/arch/tile/include/{ => uapi}/asm/swab.h (100%) create mode 100644 trunk/arch/tile/include/uapi/asm/unistd.h create mode 100644 trunk/arch/x86/kernel/cpu/perf_event_knc.c delete mode 100644 trunk/drivers/hwmon/exynos4_tmu.c create mode 100644 trunk/drivers/md/dm-bio-prison.c create mode 100644 trunk/drivers/md/dm-bio-prison.h create mode 100644 trunk/drivers/media/platform/s5p-mfc/regs-mfc-v6.h create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_cmd_v5.c create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_cmd_v5.h create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_cmd_v6.c create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_cmd_v6.h create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v5.c rename trunk/drivers/media/platform/s5p-mfc/{s5p_mfc_shm.h => s5p_mfc_opr_v5.h} (76%) create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c create mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.h delete mode 100644 trunk/drivers/media/platform/s5p-mfc/s5p_mfc_shm.c create mode 100644 trunk/drivers/thermal/cpu_cooling.c create mode 100644 trunk/drivers/thermal/exynos_thermal.c create mode 100644 trunk/drivers/thermal/rcar_thermal.c create mode 100644 trunk/drivers/video/omap2/dss/manager-sysfs.c create mode 100644 trunk/drivers/video/omap2/dss/output.c create mode 100644 trunk/drivers/video/omap2/dss/overlay-sysfs.c create mode 100644 trunk/drivers/video/omap2/dss/venc_panel.c delete mode 100644 trunk/drivers/video/pnx4008/Makefile delete mode 100644 trunk/drivers/video/pnx4008/dum.h delete mode 100644 trunk/drivers/video/pnx4008/fbcommon.h delete mode 100644 trunk/drivers/video/pnx4008/pnxrgbfb.c delete mode 100644 trunk/drivers/video/pnx4008/sdum.c delete mode 100644 trunk/drivers/video/pnx4008/sdum.h create mode 100644 trunk/include/linux/cpu_cooling.h rename trunk/include/linux/platform_data/{exynos4_tmu.h => exynos_thermal.h} (64%) create mode 100644 trunk/include/linux/timekeeper_internal.h rename trunk/include/{ => uapi}/linux/can/bcm.h (100%) rename trunk/include/{ => uapi}/linux/can/error.h (100%) rename trunk/include/{ => uapi}/linux/can/gw.h (100%) rename trunk/include/{ => uapi}/linux/can/netlink.h (100%) rename trunk/include/{ => uapi}/linux/can/raw.h (100%) rename trunk/include/{ => uapi}/linux/mmc/ioctl.h (100%) rename trunk/include/{ => uapi}/linux/nfsd/cld.h (100%) create mode 100644 trunk/include/uapi/linux/nfsd/debug.h create mode 100644 trunk/include/uapi/linux/nfsd/export.h create mode 100644 trunk/include/uapi/linux/nfsd/nfsfh.h create mode 100644 trunk/include/uapi/linux/nfsd/stats.h create mode 100644 trunk/include/uapi/linux/sunrpc/debug.h rename trunk/include/{ => uapi}/linux/wimax/i2400m.h (100%) rename trunk/include/{ => uapi}/xen/evtchn.h (100%) rename trunk/include/{ => uapi}/xen/privcmd.h (100%) rename trunk/{arch/arm/plat-samsung/include/plat/regs-fb.h => include/video/samsung_fimd.h} (73%) create mode 100644 trunk/scripts/coccinelle/tests/odd_ptr_err.cocci create mode 100644 trunk/tools/perf/util/include/linux/rbtree_augmented.h diff --git a/[refs] b/[refs] index d10cae0c3bcf..9ef5a8dda4bb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 59b69ac2bad602d02904d310ee156e47e74d8109 +refs/heads/master: 4d7127dace8cf4b05eb7c8c8531fc204fbb195f4 diff --git a/trunk/Documentation/ABI/testing/sysfs-bus-fcoe b/trunk/Documentation/ABI/testing/sysfs-bus-fcoe index 469d09c02f6b..50e2a80ea28f 100644 --- a/trunk/Documentation/ABI/testing/sysfs-bus-fcoe +++ b/trunk/Documentation/ABI/testing/sysfs-bus-fcoe @@ -9,19 +9,19 @@ Attributes: this value will change the dev_loss_tmo for all FCFs discovered by this controller. - lesb_link_fail: Link Error Status Block (LESB) link failure count. + lesb/link_fail: Link Error Status Block (LESB) link failure count. - lesb_vlink_fail: Link Error Status Block (LESB) virtual link + lesb/vlink_fail: Link Error Status Block (LESB) virtual link failure count. - lesb_miss_fka: Link Error Status Block (LESB) missed FCoE + lesb/miss_fka: Link Error Status Block (LESB) missed FCoE Initialization Protocol (FIP) Keep-Alives (FKA). - lesb_symb_err: Link Error Status Block (LESB) symbolic error count. + lesb/symb_err: Link Error Status Block (LESB) symbolic error count. - lesb_err_block: Link Error Status Block (LESB) block error count. + lesb/err_block: Link Error Status Block (LESB) block error count. - lesb_fcs_error: Link Error Status Block (LESB) Fibre Channel + lesb/fcs_error: Link Error Status Block (LESB) Fibre Channel Serivces error count. Notes: ctlr_X (global increment starting at 0) diff --git a/trunk/Documentation/DocBook/media/v4l/compat.xml b/trunk/Documentation/DocBook/media/v4l/compat.xml index c6ae4c9d0e0c..4fdf6b562d1c 100644 --- a/trunk/Documentation/DocBook/media/v4l/compat.xml +++ b/trunk/Documentation/DocBook/media/v4l/compat.xml @@ -2582,6 +2582,10 @@ ioctls. Support for frequency band enumeration: &VIDIOC-ENUM-FREQ-BANDS; ioctl. + + Vendor and device specific media bus pixel formats. + . + diff --git a/trunk/Documentation/DocBook/media/v4l/controls.xml b/trunk/Documentation/DocBook/media/v4l/controls.xml index 272a5f718509..7fe5be1d3bbb 100644 --- a/trunk/Documentation/DocBook/media/v4l/controls.xml +++ b/trunk/Documentation/DocBook/media/v4l/controls.xml @@ -1586,7 +1586,6 @@ frame counter of the frame that is currently displayed (decoded). This value is the decoder is started. - V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE  @@ -2269,6 +2268,14 @@ encoder or editing process may produce.". Applicable to the MPEG1, MPEG2, MPEG4 encoders. + + + V4L2_CID_MPEG_VIDEO_VBV_DELAY  + integer + Sets the initial delay in milliseconds for +VBV buffer control. + + V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE  @@ -2334,6 +2341,265 @@ Applicable to the MPEG4 decoder. vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder. + + + V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING  + boolean + + Enable generation of frame packing supplemental enhancement information in the encoded bitstream. +The frame packing SEI message contains the arrangement of L and R planes for 3D viewing. Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0  + boolean + + Sets current frame as frame0 in frame packing SEI. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE  + enum v4l2_mpeg_video_h264_sei_fp_arrangement_type + + Frame packing arrangement type for H264 SEI. +Applicable to the H264 encoder. +Possible values are: + + + + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD  + Pixels are alternatively from L and R. + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN  + L and R are interlaced by column. + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW  + L and R are interlaced by row. + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE  + L is on the left, R on the right. + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM  + L is on top, R on bottom. + + + V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL  + One view per frame. + + + + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO  + boolean + + Enables flexible macroblock ordering in the encoded bitstream. It is a technique +used for restructuring the ordering of macroblocks in pictures. Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE  + enum v4l2_mpeg_video_h264_fmo_map_type + + When using FMO, the map type divides the image in different scan patterns of macroblocks. +Applicable to the H264 encoder. +Possible values are: + + + + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES  + Slices are interleaved one after other with macroblocks in run length order. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES  + Scatters the macroblocks based on a mathematical function known to both encoder and decoder. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER  + Macroblocks arranged in rectangular areas or regions of interest. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT  + Slice groups grow in a cyclic way from centre to outwards. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN  + Slice groups grow in raster scan pattern from left to right. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN  + Slice groups grow in wipe scan pattern from top to bottom. + + + V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT  + User defined map type. + + + + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP  + integer + + Number of slice groups in FMO. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION  + enum v4l2_mpeg_video_h264_fmo_change_dir + + Specifies a direction of the slice group change for raster and wipe maps. +Applicable to the H264 encoder. +Possible values are: + + + + + + V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT  + Raster scan or wipe right. + + + V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT  + Reverse raster scan or wipe left. + + + + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE  + integer + + Specifies the size of the first slice group for raster and wipe map. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH  + integer + + Specifies the number of consecutive macroblocks for the interleaved map. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_ASO  + boolean + + Enables arbitrary slice ordering in encoded bitstream. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER  + integer + Specifies the slice order in ASO. Applicable to the H264 encoder. +The supplied 32-bit integer is interpreted as follows (bit +0 = least significant bit): + + + + + + Bit 0:15 + Slice ID + + + Bit 16:32 + Slice position or order + + + + + + + + V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING  + boolean + + Enables H264 hierarchical coding. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE  + enum v4l2_mpeg_video_h264_hierarchical_coding_type + + Specifies the hierarchical coding type. +Applicable to the H264 encoder. +Possible values are: + + + + + + V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B  + Hierarchical B coding. + + + V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P  + Hierarchical P coding. + + + + + + + + V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER  + integer + + Specifies the number of hierarchical coding layers. +Applicable to the H264 encoder. + + + + + V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP  + integer + Specifies a user defined QP for each layer. Applicable to the H264 encoder. +The supplied 32-bit integer is interpreted as follows (bit +0 = least significant bit): + + + + + + Bit 0:15 + QP value + + + Bit 16:32 + Layer number + + + + + @@ -4267,6 +4533,16 @@ interface and may change in the future. pixels / second. + + V4L2_CID_TEST_PATTERN + menu + + + Some capture/display/sensor devices have + the capability to generate test pattern images. These hardware + specific test patterns can be used to test if a device is working + properly. + diff --git a/trunk/Documentation/DocBook/media/v4l/io.xml b/trunk/Documentation/DocBook/media/v4l/io.xml index 97f785add841..b5d1cbdc558b 100644 --- a/trunk/Documentation/DocBook/media/v4l/io.xml +++ b/trunk/Documentation/DocBook/media/v4l/io.xml @@ -677,8 +677,10 @@ memory, set by the application. See for details. length Size of the buffer (not the payload) in bytes for the - single-planar API. For the multi-planar API should contain the - number of elements in the planes array. + single-planar API. For the multi-planar API the application sets + this to the number of elements in the planes + array. The driver will fill in the actual number of valid elements in + that array. diff --git a/trunk/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml b/trunk/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml index 5274c24d11e0..a990b34d911a 100644 --- a/trunk/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml +++ b/trunk/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml @@ -1,11 +1,13 @@ - + - V4L2_PIX_FMT_NV12M ('NM12') + V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16 &manvol; - V4L2_PIX_FMT_NV12M - Variation of V4L2_PIX_FMT_NV12 with planes + V4L2_PIX_FMT_NV12M + V4L2_PIX_FMT_NV21M + V4L2_PIX_FMT_NV12MT_16X16 + Variation of V4L2_PIX_FMT_NV12 and V4L2_PIX_FMT_NV21 with planes non contiguous in memory. @@ -22,7 +24,12 @@ The CbCr plane is the same width, in bytes, as the Y plane (and of the image), but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example, Cb0/Cr0 belongs to Y'00, Y'01, -Y'10, Y'11. +Y'10, Y'11. +V4L2_PIX_FMT_NV12MT_16X16 is the tiled version of +V4L2_PIX_FMT_NV12M with 16x16 macroblock tiles. Here pixels +are arranged in 16x16 2D tiles and tiles are arranged in linear order in memory. +V4L2_PIX_FMT_NV21M is the same as V4L2_PIX_FMT_NV12M +except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte. V4L2_PIX_FMT_NV12M is intended to be used only in drivers and applications that support the multi-planar API, diff --git a/trunk/Documentation/DocBook/media/v4l/pixfmt.xml b/trunk/Documentation/DocBook/media/v4l/pixfmt.xml index 1ddbfabe3195..bf94f417592c 100644 --- a/trunk/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/trunk/Documentation/DocBook/media/v4l/pixfmt.xml @@ -758,6 +758,11 @@ extended control V4L2_CID_MPEG_STREAM_TYPE, see 'AVC1' H264 video elementary stream without start codes. + + V4L2_PIX_FMT_H264_MVC + 'MVC' + H264 MVC video elementary stream. + V4L2_PIX_FMT_H263 'H263' @@ -793,6 +798,11 @@ extended control V4L2_CID_MPEG_STREAM_TYPE, see 'VC1L' VC1, SMPTE 421M Annex L compliant stream. + + V4L2_PIX_FMT_VP8 + 'VP8' + VP8 video elementary stream. + @@ -996,6 +1006,34 @@ the other bits are set to 0. Old 6-bit greyscale format. Only the most significant 6 bits of each byte are used, the other bits are set to 0. + + V4L2_PIX_FMT_S5C_UYVY_JPG + 'S5CI' + Two-planar format used by Samsung S5C73MX cameras. The +first plane contains interleaved JPEG and UYVY image data, followed by meta data +in form of an array of offsets to the UYVY data blocks. The actual pointer array +follows immediately the interleaved JPEG/UYVY data, the number of entries in +this array equals the height of the UYVY image. Each entry is a 4-byte unsigned +integer in big endian order and it's an offset to a single pixel line of the +UYVY image. The first plane can start either with JPEG or UYVY data chunk. The +size of a single UYVY block equals the UYVY image's width multiplied by 2. The +size of a JPEG chunk depends on the image and can vary with each line. +The second plane, at an offset of 4084 bytes, contains a 4-byte offset to +the pointer array in the first plane. This offset is followed by a 4-byte value +indicating size of the pointer array. All numbers in the second plane are also +in big endian order. Remaining data in the second plane is undefined. The +information in the second plane allows to easily find location of the pointer +array, which can be different for each frame. The size of the pointer array is +constant for given UYVY image height. +In order to extract UYVY and JPEG frames an application can initially set +a data pointer to the start of first plane and then add an offset from the first +entry of the pointers table. Such a pointer indicates start of an UYVY image +pixel line. Whole UYVY line can be copied to a separate buffer. These steps +should be repeated for each line, i.e. the number of entries in the pointer +array. Anything what's in between the UYVY lines is JPEG data and should be +concatenated to form the JPEG stream. + + diff --git a/trunk/Documentation/DocBook/media/v4l/subdev-formats.xml b/trunk/Documentation/DocBook/media/v4l/subdev-formats.xml index 49c532ebbbbe..a0a936455fae 100644 --- a/trunk/Documentation/DocBook/media/v4l/subdev-formats.xml +++ b/trunk/Documentation/DocBook/media/v4l/subdev-formats.xml @@ -2565,5 +2565,49 @@ + +
+ Vendor and Device Specific Formats + + + Experimental + This is an experimental +interface and may change in the future. + + + This section lists complex data formats that are either vendor or + device specific. + + + The following table lists the existing vendor and device specific + formats. + + + Vendor and device specific formats + + + + + + + Identifier + Code + Comments + + + + + V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 + 0x5001 + + Interleaved raw UYVY and JPEG image format with embedded + meta-data used by Samsung S3C73MX camera sensors. + + + + +
+
+ diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml index 6a821a65a5ae..2d37abefce13 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-qbuf.xml @@ -121,8 +121,7 @@ remaining fields or returns an error code. The driver may also set field. It indicates a non-critical (recoverable) streaming error. In such case the application may continue as normal, but should be aware that data in the dequeued buffer might be corrupted. When using the multi-planar API, the -planes array does not have to be passed; the m.planes -member must be set to NULL in that case. +planes array must be passed in as well. By default VIDIOC_DQBUF blocks when no buffer is in the outgoing queue. When the diff --git a/trunk/Documentation/DocBook/media/v4l/vidioc-querybuf.xml b/trunk/Documentation/DocBook/media/v4l/vidioc-querybuf.xml index 6e414d7b6df7..a597155c052d 100644 --- a/trunk/Documentation/DocBook/media/v4l/vidioc-querybuf.xml +++ b/trunk/Documentation/DocBook/media/v4l/vidioc-querybuf.xml @@ -48,8 +48,8 @@ Description - This ioctl is part of the memory -mapping I/O method. It can be used to query the status of a + This ioctl is part of the streaming + I/O method. It can be used to query the status of a buffer at any time after buffers have been allocated with the &VIDIOC-REQBUFS; ioctl. @@ -71,6 +71,7 @@ the structure. In the flags field the V4L2_BUF_FLAG_MAPPED, +V4L2_BUF_FLAG_PREPARED, V4L2_BUF_FLAG_QUEUED and V4L2_BUF_FLAG_DONE flags will be valid. The memory field will be set to the current @@ -79,8 +80,10 @@ contains the offset of the buffer from the start of the device memory, the length field its size. For the multi-planar API, fields m.mem_offset and length in the m.planes -array elements will be used instead. The driver may or may not set the remaining -fields and flags, they are meaningless in this context. +array elements will be used instead and the length +field of &v4l2-buffer; is set to the number of filled-in array elements. +The driver may or may not set the remaining fields and flags, they are +meaningless in this context. The v4l2_buffer structure is specified in . diff --git a/trunk/Documentation/arm/Booting b/trunk/Documentation/arm/Booting index a341d87d276e..0c1f475fdf36 100644 --- a/trunk/Documentation/arm/Booting +++ b/trunk/Documentation/arm/Booting @@ -154,13 +154,33 @@ In either case, the following conditions must be met: - CPU mode All forms of interrupts must be disabled (IRQs and FIQs) - The CPU must be in SVC mode. (A special exception exists for Angel) + + For CPUs which do not include the ARM virtualization extensions, the + CPU must be in SVC mode. (A special exception exists for Angel) + + CPUs which include support for the virtualization extensions can be + entered in HYP mode in order to enable the kernel to make full use of + these extensions. This is the recommended boot method for such CPUs, + unless the virtualisations are already in use by a pre-installed + hypervisor. + + If the kernel is not entered in HYP mode for any reason, it must be + entered in SVC mode. - Caches, MMUs The MMU must be off. Instruction cache may be on or off. Data cache must be off. + If the kernel is entered in HYP mode, the above requirements apply to + the HYP mode configuration in addition to the ordinary PL1 (privileged + kernel modes) configuration. In addition, all traps into the + hypervisor must be disabled, and PL1 access must be granted for all + peripherals and CPU resources for which this is architecturally + possible. Except for entering in HYP mode, the system configuration + should be such that a kernel which does not include support for the + virtualization extensions can boot correctly without extra help. + - The boot loader is expected to call the kernel image by jumping directly to the first instruction of the kernel image. diff --git a/trunk/Documentation/filesystems/nfs/nfsd-admin-interfaces.txt b/trunk/Documentation/filesystems/nfs/nfsd-admin-interfaces.txt new file mode 100644 index 000000000000..56a96fb08a73 --- /dev/null +++ b/trunk/Documentation/filesystems/nfs/nfsd-admin-interfaces.txt @@ -0,0 +1,41 @@ +Administrative interfaces for nfsd +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Note that normally these interfaces are used only by the utilities in +nfs-utils. + +nfsd is controlled mainly by pseudofiles under the "nfsd" filesystem, +which is normally mounted at /proc/fs/nfsd/. + +The server is always started by the first write of a nonzero value to +nfsd/threads. + +Before doing that, NFSD can be told which sockets to listen on by +writing to nfsd/portlist; that write may be: + + - an ascii-encoded file descriptor, which should refer to a + bound (and listening, for tcp) socket, or + - "transportname port", where transportname is currently either + "udp", "tcp", or "rdma". + +If nfsd is started without doing any of these, then it will create one +udp and one tcp listener at port 2049 (see nfsd_init_socks). + +On startup, nfsd and lockd grace periods start. + +nfsd is shut down by a write of 0 to nfsd/threads. All locks and state +are thrown away at that point. + +Between startup and shutdown, the number of threads may be adjusted up +or down by additional writes to nfsd/threads or by writes to +nfsd/pool_threads. + +For more detail about files under nfsd/ and what they control, see +fs/nfsd/nfsctl.c; most of them have detailed comments. + +Implementation notes +^^^^^^^^^^^^^^^^^^^^ + +Note that the rpc server requires the caller to serialize addition and +removal of listening sockets, and startup and shutdown of the server. +For nfsd this is done using nfsd_mutex. diff --git a/trunk/Documentation/scsi/ChangeLog.megaraid_sas b/trunk/Documentation/scsi/ChangeLog.megaraid_sas index 3a3079411a3d..da03146c182a 100644 --- a/trunk/Documentation/scsi/ChangeLog.megaraid_sas +++ b/trunk/Documentation/scsi/ChangeLog.megaraid_sas @@ -1,3 +1,16 @@ +Release Date : Mon. Oct 1, 2012 17:00:00 PST 2012 - + (emaild-id:megaraidlinux@lsi.com) + Adam Radford +Current Version : 06.504.01.00-rc1 +Old Version : 00.00.06.18-rc1 + 1. Removed un-needed completion_lock spinlock calls. + 2. Add module param for configurable MSI-X vector count. + 3. Load io_request DataLength in bytes. + 4. Add array boundary check for SystemPD. + 5. Add SystemPD FastPath support. + 6. Remove duplicate code. + 7. Version, Changelog, Copyright update. +------------------------------------------------------------------------------- Release Date : Tue. Jun 17, 2012 17:00:00 PST 2012 - (emaild-id:megaraidlinux@lsi.com) Adam Radford/Kashyap Desai diff --git a/trunk/Documentation/thermal/cpu-cooling-api.txt b/trunk/Documentation/thermal/cpu-cooling-api.txt new file mode 100644 index 000000000000..fca24c931ec8 --- /dev/null +++ b/trunk/Documentation/thermal/cpu-cooling-api.txt @@ -0,0 +1,32 @@ +CPU cooling APIs How To +=================================== + +Written by Amit Daniel Kachhap + +Updated: 12 May 2012 + +Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) + +0. Introduction + +The generic cpu cooling(freq clipping) provides registration/unregistration APIs +to the caller. The binding of the cooling devices to the trip point is left for +the user. The registration APIs returns the cooling device pointer. + +1. cpu cooling APIs + +1.1 cpufreq registration/unregistration APIs +1.1.1 struct thermal_cooling_device *cpufreq_cooling_register( + struct cpumask *clip_cpus) + + This interface function registers the cpufreq cooling device with the name + "thermal-cpufreq-%x". This api can support multiple instances of cpufreq + cooling devices. + + clip_cpus: cpumask of cpus where the frequency constraints will happen. + +1.1.2 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) + + This interface function unregisters the "thermal-cpufreq-%x" cooling device. + + cdev: Cooling device pointer which has to be unregistered. diff --git a/trunk/Documentation/hwmon/exynos4_tmu b/trunk/Documentation/thermal/exynos_thermal similarity index 71% rename from trunk/Documentation/hwmon/exynos4_tmu rename to trunk/Documentation/thermal/exynos_thermal index c3c6b41db607..2b46f67b1ccb 100644 --- a/trunk/Documentation/hwmon/exynos4_tmu +++ b/trunk/Documentation/thermal/exynos_thermal @@ -46,36 +46,7 @@ The threshold levels are defined as follows: The threshold and each trigger_level are set through the corresponding registers. -When an interrupt occurs, this driver notify user space of -one of four threshold levels for the interrupt -through kobject_uevent_env and sysfs_notify functions. +When an interrupt occurs, this driver notify kernel thermal framework +with the function exynos4_report_trigger. Although an interrupt condition for level_0 can be set, -it is not notified to user space through sysfs_notify function. - -Sysfs Interface ---------------- -name name of the temperature sensor - RO - -temp1_input temperature - RO - -temp1_max temperature for level_1 interrupt - RO - -temp1_crit temperature for level_2 interrupt - RO - -temp1_emergency temperature for level_3 interrupt - RO - -temp1_max_alarm alarm for level_1 interrupt - RO - -temp1_crit_alarm - alarm for level_2 interrupt - RO - -temp1_emergency_alarm - alarm for level_3 interrupt - RO +it can be used to synchronize the cooling action. diff --git a/trunk/Documentation/thermal/sysfs-api.txt b/trunk/Documentation/thermal/sysfs-api.txt index c087dbcf3535..ca1a1a34970e 100644 --- a/trunk/Documentation/thermal/sysfs-api.txt +++ b/trunk/Documentation/thermal/sysfs-api.txt @@ -84,7 +84,8 @@ temperature) and throttle appropriate devices. 1.3 interface for binding a thermal zone device with a thermal cooling device 1.3.1 int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz, - int trip, struct thermal_cooling_device *cdev); + int trip, struct thermal_cooling_device *cdev, + unsigned long upper, unsigned long lower); This interface function bind a thermal cooling device to the certain trip point of a thermal zone device. @@ -93,6 +94,12 @@ temperature) and throttle appropriate devices. cdev: thermal cooling device trip: indicates which trip point the cooling devices is associated with in this thermal zone. + upper:the Maximum cooling state for this trip point. + THERMAL_NO_LIMIT means no upper limit, + and the cooling device can be in max_state. + lower:the Minimum cooling state can be used for this trip point. + THERMAL_NO_LIMIT means no lower limit, + and the cooling device can be in cooling state 0. 1.3.2 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *tz, int trip, struct thermal_cooling_device *cdev); diff --git a/trunk/Documentation/video4linux/v4l2-controls.txt b/trunk/Documentation/video4linux/v4l2-controls.txt index 54270df99d5c..cfe52c798d74 100644 --- a/trunk/Documentation/video4linux/v4l2-controls.txt +++ b/trunk/Documentation/video4linux/v4l2-controls.txt @@ -136,11 +136,25 @@ Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu: const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 def, const s64 *qmenu_int); +Standard menu controls with a driver specific menu are added by calling +v4l2_ctrl_new_std_menu_items: + + struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items( + struct v4l2_ctrl_handler *hdl, + const struct v4l2_ctrl_ops *ops, u32 id, s32 max, + s32 skip_mask, s32 def, const char * const *qmenu); + These functions are typically called right after the v4l2_ctrl_handler_init: static const s64 exp_bias_qmenu[] = { -2, -1, 0, 1, 2 }; + static const char * const test_pattern[] = { + "Disabled", + "Vertical Bars", + "Solid Black", + "Solid White", + }; v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, @@ -156,6 +170,9 @@ These functions are typically called right after the v4l2_ctrl_handler_init: ARRAY_SIZE(exp_bias_qmenu) - 1, ARRAY_SIZE(exp_bias_qmenu) / 2 - 1, exp_bias_qmenu); + v4l2_ctrl_new_std_menu_items(&foo->ctrl_handler, &foo_ctrl_ops, + V4L2_CID_TEST_PATTERN, ARRAY_SIZE(test_pattern) - 1, 0, + 0, test_pattern); ... if (foo->ctrl_handler.error) { int err = foo->ctrl_handler.error; @@ -185,6 +202,13 @@ v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes as the last argument an array of signed 64-bit integers that form an exact menu item list. +The v4l2_ctrl_new_std_menu_items function is very similar to +v4l2_ctrl_new_std_menu but takes an extra parameter qmenu, which is the driver +specific menu for an otherwise standard menu control. A good example for this +control is the test pattern control for capture/display/sensors devices that +have the capability to generate test patterns. These test patterns are hardware +specific, so the contents of the menu will vary from device to device. + Note that if something fails, the function will return NULL or an error and set ctrl_handler->error to the error code. If ctrl_handler->error was already set, then it will just return and do nothing. This is also true for diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 0f6ff811da07..e73060fe0788 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -1958,10 +1958,10 @@ S: Supported F: drivers/platform/x86/classmate-laptop.c COCCINELLE/Semantic Patches (SmPL) -M: Julia Lawall +M: Julia Lawall M: Gilles Muller -M: Nicolas Palix -L: cocci@diku.dk (moderated for non-subscribers) +M: Nicolas Palix +L: cocci@systeme.lip6.fr (moderated for non-subscribers) W: http://coccinelle.lip6.fr/ S: Supported F: scripts/coccinelle/ @@ -2423,11 +2423,6 @@ S: Maintained F: Documentation/hwmon/dme1737 F: drivers/hwmon/dme1737.c -DOCBOOK FOR DOCUMENTATION -M: Randy Dunlap -S: Maintained -F: scripts/kernel-doc - DOCKING STATION DRIVER M: Shaohua Li L: linux-acpi@vger.kernel.org diff --git a/trunk/Makefile b/trunk/Makefile index 86eb6acb3978..5d8e7f258388 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -664,22 +664,9 @@ ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) endif # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments -# But warn user when we do so -warn-assign = \ -$(warning "WARNING: Appending $$K$(1) ($(K$(1))) from $(origin K$(1)) to kernel $$$(1)") - -ifneq ($(KCPPFLAGS),) - $(call warn-assign,CPPFLAGS) - KBUILD_CPPFLAGS += $(KCPPFLAGS) -endif -ifneq ($(KAFLAGS),) - $(call warn-assign,AFLAGS) - KBUILD_AFLAGS += $(KAFLAGS) -endif -ifneq ($(KCFLAGS),) - $(call warn-assign,CFLAGS) - KBUILD_CFLAGS += $(KCFLAGS) -endif +KBUILD_CPPFLAGS += $(KCPPFLAGS) +KBUILD_AFLAGS += $(KAFLAGS) +KBUILD_CFLAGS += $(KCFLAGS) # Use --build-id when available. LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\ diff --git a/trunk/arch/Kconfig b/trunk/arch/Kconfig index 26a28419cafc..a79a1ad8bb96 100644 --- a/trunk/arch/Kconfig +++ b/trunk/arch/Kconfig @@ -274,6 +274,9 @@ config ARCH_WANT_OLD_COMPAT_IPC config GENERIC_KERNEL_THREAD bool +config GENERIC_KERNEL_EXECVE + bool + config HAVE_ARCH_SECCOMP_FILTER bool help diff --git a/trunk/arch/alpha/Kconfig b/trunk/arch/alpha/Kconfig index 7da91246e279..7a08cfb80ee8 100644 --- a/trunk/arch/alpha/Kconfig +++ b/trunk/arch/alpha/Kconfig @@ -21,6 +21,7 @@ config ALPHA select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNLEN_USER select GENERIC_KERNEL_THREAD + select GENERIC_KERNEL_EXECVE help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory, diff --git a/trunk/arch/alpha/include/asm/thread_info.h b/trunk/arch/alpha/include/asm/thread_info.h index 28335bd40e40..4554ecbff7c6 100644 --- a/trunk/arch/alpha/include/asm/thread_info.h +++ b/trunk/arch/alpha/include/asm/thread_info.h @@ -84,7 +84,6 @@ register struct thread_info *__current_thread_info __asm__("$8"); #define _TIF_SIGPENDING (1< non-restartable */ + cmovne $26, 0, $18 /* $18 = 0 => non-restartable */ ldq $0, SP_OFF($sp) and $0, 8, $0 beq $0, ret_to_kernel @@ -320,8 +320,8 @@ ret_to_user: sampling and the rti. */ lda $16, 7 call_pal PAL_swpipl - ldl $5, TI_FLAGS($8) - and $5, _TIF_WORK_MASK, $2 + ldl $17, TI_FLAGS($8) + and $17, _TIF_WORK_MASK, $2 bne $2, work_pending restore_all: RESTORE_ALL @@ -341,10 +341,10 @@ $syscall_error: * frame to indicate that a negative return value wasn't an * error number.. */ - ldq $19, 0($sp) /* old syscall nr (zero if success) */ - beq $19, $ret_success + ldq $18, 0($sp) /* old syscall nr (zero if success) */ + beq $18, $ret_success - ldq $20, 72($sp) /* .. and this a3 */ + ldq $19, 72($sp) /* .. and this a3 */ subq $31, $0, $0 /* with error in v0 */ addq $31, 1, $1 /* set a3 for errno return */ stq $0, 0($sp) @@ -362,51 +362,35 @@ $ret_success: * Do all cleanup when returning from all interrupts and system calls. * * Arguments: - * $5: TI_FLAGS. * $8: current. - * $19: The old syscall number, or zero if this is not a return + * $17: TI_FLAGS. + * $18: The old syscall number, or zero if this is not a return * from a syscall that errored and is possibly restartable. - * $20: The old a3 value + * $19: The old a3 value */ .align 4 .ent work_pending work_pending: - and $5, _TIF_NEED_RESCHED, $2 - beq $2, $work_notifysig + and $17, _TIF_NOTIFY_RESUME | _TIF_SIGPENDING, $2 + bne $2, $work_notifysig $work_resched: - subq $sp, 16, $sp - stq $19, 0($sp) /* save syscall nr */ - stq $20, 8($sp) /* and error indication (a3) */ + /* + * We can get here only if we returned from syscall without SIGPENDING + * or got through work_notifysig already. Either case means no syscall + * restarts for us, so let $18 and $19 burn. + */ jsr $26, schedule - ldq $19, 0($sp) - ldq $20, 8($sp) - addq $sp, 16, $sp - /* Make sure need_resched and sigpending don't change between - sampling and the rti. */ - lda $16, 7 - call_pal PAL_swpipl - ldl $5, TI_FLAGS($8) - and $5, _TIF_WORK_MASK, $2 - beq $2, restore_all - and $5, _TIF_NEED_RESCHED, $2 - bne $2, $work_resched + mov 0, $18 + br ret_to_user $work_notifysig: mov $sp, $16 bsr $1, do_switch_stack - mov $sp, $17 - mov $5, $18 - mov $19, $9 /* save old syscall number */ - mov $20, $10 /* save old a3 */ - and $5, _TIF_SIGPENDING, $2 - cmovne $2, 0, $9 /* we don't want double syscall restarts */ - jsr $26, do_notify_resume - mov $9, $19 - mov $10, $20 + jsr $26, do_work_pending bsr $1, undo_switch_stack - br ret_to_user + br restore_all .end work_pending /* @@ -418,11 +402,10 @@ $work_notifysig: strace: /* set up signal stack, call syscall_trace */ bsr $1, do_switch_stack - jsr $26, syscall_trace + jsr $26, syscall_trace_enter /* returns the syscall number */ bsr $1, undo_switch_stack - /* get the system call number and the arguments back.. */ - ldq $0, 0($sp) + /* get the arguments back.. */ ldq $16, SP_OFF+24($sp) ldq $17, SP_OFF+32($sp) ldq $18, SP_OFF+40($sp) @@ -449,15 +432,15 @@ $strace_success: stq $0, 0($sp) /* save return value */ bsr $1, do_switch_stack - jsr $26, syscall_trace + jsr $26, syscall_trace_leave bsr $1, undo_switch_stack br $31, ret_from_sys_call .align 3 $strace_error: - ldq $19, 0($sp) /* old syscall nr (zero if success) */ - beq $19, $strace_success - ldq $20, 72($sp) /* .. and this a3 */ + ldq $18, 0($sp) /* old syscall nr (zero if success) */ + beq $18, $strace_success + ldq $19, 72($sp) /* .. and this a3 */ subq $31, $0, $0 /* with error in v0 */ addq $31, 1, $1 /* set a3 for errno return */ @@ -465,11 +448,11 @@ $strace_error: stq $1, 72($sp) /* a3 for return */ bsr $1, do_switch_stack - mov $19, $9 /* save old syscall number */ - mov $20, $10 /* save old a3 */ - jsr $26, syscall_trace - mov $9, $19 - mov $10, $20 + mov $18, $9 /* save old syscall number */ + mov $19, $10 /* save old a3 */ + jsr $26, syscall_trace_leave + mov $9, $18 + mov $10, $19 bsr $1, undo_switch_stack mov $31, $26 /* tell "ret_from_sys_call" we can restart */ @@ -620,24 +603,9 @@ ret_from_kernel_thread: mov $9, $27 mov $10, $16 jsr $26, ($9) - ldgp $gp, 0($26) - mov $0, $16 - mov $31, $26 - jmp $31, sys_exit -.end ret_from_kernel_thread - - .globl ret_from_kernel_execve - .align 4 - .ent ret_from_kernel_execve -ret_from_kernel_execve: - mov $16, $sp - /* Avoid the HAE being gratuitously wrong, to avoid restoring it. */ - ldq $2, alpha_mv+HAE_CACHE - stq $2, 152($sp) /* HAE */ mov $31, $19 /* to disable syscall restarts */ br $31, ret_to_user - -.end ret_from_kernel_execve +.end ret_from_kernel_thread /* @@ -698,7 +666,7 @@ sys_sigreturn: lda $sp, -SWITCH_STACK_SIZE($sp) jsr $26, do_sigreturn bne $9, 1f - jsr $26, syscall_trace + jsr $26, syscall_trace_leave 1: br $1, undo_switch_stack br ret_from_sys_call .end sys_sigreturn @@ -715,7 +683,7 @@ sys_rt_sigreturn: lda $sp, -SWITCH_STACK_SIZE($sp) jsr $26, do_rt_sigreturn bne $9, 1f - jsr $26, syscall_trace + jsr $26, syscall_trace_leave 1: br $1, undo_switch_stack br ret_from_sys_call .end sys_rt_sigreturn diff --git a/trunk/arch/alpha/kernel/osf_sys.c b/trunk/arch/alpha/kernel/osf_sys.c index 63e77e3944ce..9eb090582cf1 100644 --- a/trunk/arch/alpha/kernel/osf_sys.c +++ b/trunk/arch/alpha/kernel/osf_sys.c @@ -449,7 +449,7 @@ osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags) { int retval; struct cdfs_args tmp; - char *devname; + struct filename *devname; retval = -EFAULT; if (copy_from_user(&tmp, args, sizeof(tmp))) @@ -458,7 +458,7 @@ osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags) retval = PTR_ERR(devname); if (IS_ERR(devname)) goto out; - retval = do_mount(devname, dirname, "ext2", flags, NULL); + retval = do_mount(devname->name, dirname, "ext2", flags, NULL); putname(devname); out: return retval; @@ -469,7 +469,7 @@ osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags) { int retval; struct cdfs_args tmp; - char *devname; + struct filename *devname; retval = -EFAULT; if (copy_from_user(&tmp, args, sizeof(tmp))) @@ -478,7 +478,7 @@ osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags) retval = PTR_ERR(devname); if (IS_ERR(devname)) goto out; - retval = do_mount(devname, dirname, "iso9660", flags, NULL); + retval = do_mount(devname->name, dirname, "iso9660", flags, NULL); putname(devname); out: return retval; @@ -499,7 +499,7 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path, int, flag, void __user *, data) { int retval; - char *name; + struct filename *name; name = getname(path); retval = PTR_ERR(name); @@ -507,13 +507,13 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path, goto out; switch (typenr) { case 1: - retval = osf_ufs_mount(name, data, flag); + retval = osf_ufs_mount(name->name, data, flag); break; case 6: - retval = osf_cdfs_mount(name, data, flag); + retval = osf_cdfs_mount(name->name, data, flag); break; case 9: - retval = osf_procfs_mount(name, data, flag); + retval = osf_procfs_mount(name->name, data, flag); break; default: retval = -EINVAL; diff --git a/trunk/arch/alpha/kernel/ptrace.c b/trunk/arch/alpha/kernel/ptrace.c index 54616f496aed..2a4a80ff4a20 100644 --- a/trunk/arch/alpha/kernel/ptrace.c +++ b/trunk/arch/alpha/kernel/ptrace.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -312,25 +313,18 @@ long arch_ptrace(struct task_struct *child, long request, return ret; } +asmlinkage unsigned long syscall_trace_enter(void) +{ + unsigned long ret = 0; + if (test_thread_flag(TIF_SYSCALL_TRACE) && + tracehook_report_syscall_entry(current_pt_regs())) + ret = -1UL; + return ret ?: current_pt_regs()->r0; +} + asmlinkage void -syscall_trace(void) +syscall_trace_leave(void) { - if (!test_thread_flag(TIF_SYSCALL_TRACE)) - return; - if (!(current->ptrace & PT_PTRACED)) - return; - /* The 0x80 provides a way for the tracing parent to distinguish - between a syscall stop and SIGTRAP delivery */ - ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) - ? 0x80 : 0)); - - /* - * This isn't the same as continuing with a signal, but it will do - * for normal use. strace only continues with a signal if the - * stopping signal is not SIGTRAP. -brl - */ - if (current->exit_code) { - send_sig(current->exit_code, current, 1); - current->exit_code = 0; - } + if (test_thread_flag(TIF_SYSCALL_TRACE)) + tracehook_report_syscall_exit(current_pt_regs(), 0); } diff --git a/trunk/arch/alpha/kernel/signal.c b/trunk/arch/alpha/kernel/signal.c index a8c97d42ec8e..32575f85507d 100644 --- a/trunk/arch/alpha/kernel/signal.c +++ b/trunk/arch/alpha/kernel/signal.c @@ -298,8 +298,9 @@ get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size) static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, - struct switch_stack *sw, unsigned long mask, unsigned long sp) + unsigned long mask, unsigned long sp) { + struct switch_stack *sw = (struct switch_stack *)regs - 1; long i, err = 0; err |= __put_user(on_sig_stack((unsigned long)sc), &sc->sc_onstack); @@ -354,7 +355,7 @@ setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, - struct pt_regs *regs, struct switch_stack * sw) + struct pt_regs *regs) { unsigned long oldsp, r26, err = 0; struct sigframe __user *frame; @@ -364,7 +365,7 @@ setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) return -EFAULT; - err |= setup_sigcontext(&frame->sc, regs, sw, set->sig[0], oldsp); + err |= setup_sigcontext(&frame->sc, regs, set->sig[0], oldsp); if (err) return -EFAULT; @@ -401,7 +402,7 @@ setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, - sigset_t *set, struct pt_regs *regs, struct switch_stack * sw) + sigset_t *set, struct pt_regs *regs) { unsigned long oldsp, r26, err = 0; struct rt_sigframe __user *frame; @@ -420,7 +421,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); err |= __put_user(sas_ss_flags(oldsp), &frame->uc.uc_stack.ss_flags); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); - err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, sw, + err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0], oldsp); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); if (err) @@ -464,15 +465,15 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, */ static inline void handle_signal(int sig, struct k_sigaction *ka, siginfo_t *info, - struct pt_regs * regs, struct switch_stack *sw) + struct pt_regs * regs) { sigset_t *oldset = sigmask_to_save(); int ret; if (ka->sa.sa_flags & SA_SIGINFO) - ret = setup_rt_frame(sig, ka, info, oldset, regs, sw); + ret = setup_rt_frame(sig, ka, info, oldset, regs); else - ret = setup_frame(sig, ka, oldset, regs, sw); + ret = setup_frame(sig, ka, oldset, regs); if (ret) { force_sigsegv(sig, current); @@ -519,8 +520,7 @@ syscall_restart(unsigned long r0, unsigned long r19, * all (if we get here from anything but a syscall return, it will be 0) */ static void -do_signal(struct pt_regs * regs, struct switch_stack * sw, - unsigned long r0, unsigned long r19) +do_signal(struct pt_regs *regs, unsigned long r0, unsigned long r19) { siginfo_t info; int signr; @@ -537,7 +537,7 @@ do_signal(struct pt_regs * regs, struct switch_stack * sw, /* Whee! Actually deliver the signal. */ if (r0) syscall_restart(r0, r19, regs, &ka); - handle_signal(signr, &ka, &info, regs, sw); + handle_signal(signr, &ka, &info, regs); if (single_stepping) ptrace_set_bpt(current); /* re-set bpt */ return; @@ -568,15 +568,23 @@ do_signal(struct pt_regs * regs, struct switch_stack * sw, } void -do_notify_resume(struct pt_regs *regs, struct switch_stack *sw, - unsigned long thread_info_flags, +do_work_pending(struct pt_regs *regs, unsigned long thread_flags, unsigned long r0, unsigned long r19) { - if (thread_info_flags & _TIF_SIGPENDING) - do_signal(regs, sw, r0, r19); - - if (thread_info_flags & _TIF_NOTIFY_RESUME) { - clear_thread_flag(TIF_NOTIFY_RESUME); - tracehook_notify_resume(regs); - } + do { + if (thread_flags & _TIF_NEED_RESCHED) { + schedule(); + } else { + local_irq_enable(); + if (thread_flags & _TIF_SIGPENDING) { + do_signal(regs, r0, r19); + r0 = 0; + } else { + clear_thread_flag(TIF_NOTIFY_RESUME); + tracehook_notify_resume(regs); + } + } + local_irq_disable(); + thread_flags = current_thread_info()->flags; + } while (thread_flags & _TIF_WORK_MASK); } diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 767aae8277fa..431c3753145a 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -53,6 +53,7 @@ config ARM select GENERIC_STRNLEN_USER select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN select GENERIC_KERNEL_THREAD + select GENERIC_KERNEL_EXECVE help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and diff --git a/trunk/arch/arm/boot/compressed/.gitignore b/trunk/arch/arm/boot/compressed/.gitignore index d0d441c429ae..f79a08efe000 100644 --- a/trunk/arch/arm/boot/compressed/.gitignore +++ b/trunk/arch/arm/boot/compressed/.gitignore @@ -1,6 +1,7 @@ ashldi3.S font.c lib1funcs.S +hyp-stub.S piggy.gzip piggy.lzo piggy.lzma diff --git a/trunk/arch/arm/boot/compressed/Makefile b/trunk/arch/arm/boot/compressed/Makefile index bb267562e7ed..a517153a13ea 100644 --- a/trunk/arch/arm/boot/compressed/Makefile +++ b/trunk/arch/arm/boot/compressed/Makefile @@ -30,6 +30,10 @@ FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c OBJS += string.o CFLAGS_string.o := -Os +ifeq ($(CONFIG_ARM_VIRT_EXT),y) +OBJS += hyp-stub.o +endif + # # Architecture dependencies # @@ -126,7 +130,7 @@ KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) endif ccflags-y := -fpic -fno-builtin -I$(obj) -asflags-y := -Wa,-march=all +asflags-y := -Wa,-march=all -DZIMAGE # Supply kernel BSS size to the decompressor via a linker symbol. KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ @@ -198,3 +202,6 @@ $(obj)/font.c: $(FONTC) $(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG) @sed "$(SEDFLAGS)" < $< > $@ + +$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S + $(call cmd,shipped) diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index bc67cbff3944..90275f036cd1 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ #include +#include /* * Debugging stuff @@ -132,7 +133,12 @@ start: .word start @ absolute load/run zImage address .word _edata @ zImage end address THUMB( .thumb ) -1: mov r7, r1 @ save architecture ID +1: + mrs r9, cpsr +#ifdef CONFIG_ARM_VIRT_EXT + bl __hyp_stub_install @ get into SVC mode, reversibly +#endif + mov r7, r1 @ save architecture ID mov r8, r2 @ save atags pointer #ifndef __ARM_ARCH_2__ @@ -148,9 +154,9 @@ start: ARM( swi 0x123456 ) @ angel_SWI_ARM THUMB( svc 0xab ) @ angel_SWI_THUMB not_angel: - mrs r2, cpsr @ turn off interrupts to - orr r2, r2, #0xc0 @ prevent angel from running - msr cpsr_c, r2 + safe_svcmode_maskall r0 + msr spsr_cxsf, r9 @ Save the CPU boot mode in + @ SPSR #else teqp pc, #0x0c000003 @ turn off interrupts #endif @@ -350,6 +356,20 @@ dtb_check_done: adr r5, restart bic r5, r5, #31 +/* Relocate the hyp vector base if necessary */ +#ifdef CONFIG_ARM_VIRT_EXT + mrs r0, spsr + and r0, r0, #MODE_MASK + cmp r0, #HYP_MODE + bne 1f + + bl __hyp_get_vectors + sub r0, r0, r5 + add r0, r0, r10 + bl __hyp_set_vectors +1: +#endif + sub r9, r6, r5 @ size to copy add r9, r9, #31 @ rounded up to a multiple bic r9, r9, #31 @ ... of 32 bytes @@ -458,11 +478,29 @@ not_relocated: mov r0, #0 bl decompress_kernel bl cache_clean_flush bl cache_off - mov r0, #0 @ must be zero mov r1, r7 @ restore architecture number mov r2, r8 @ restore atags pointer - ARM( mov pc, r4 ) @ call kernel - THUMB( bx r4 ) @ entry point is always ARM + +#ifdef CONFIG_ARM_VIRT_EXT + mrs r0, spsr @ Get saved CPU boot mode + and r0, r0, #MODE_MASK + cmp r0, #HYP_MODE @ if not booted in HYP mode... + bne __enter_kernel @ boot kernel directly + + adr r12, .L__hyp_reentry_vectors_offset + ldr r0, [r12] + add r0, r0, r12 + + bl __hyp_set_vectors + __HVC(0) @ otherwise bounce to hyp mode + + b . @ should never be reached + + .align 2 +.L__hyp_reentry_vectors_offset: .long __hyp_reentry_vectors - . +#else + b __enter_kernel +#endif .align 2 .type LC0, #object @@ -1196,6 +1234,25 @@ memdump: mov r12, r0 #endif .ltorg + +#ifdef CONFIG_ARM_VIRT_EXT +.align 5 +__hyp_reentry_vectors: + W(b) . @ reset + W(b) . @ undef + W(b) . @ svc + W(b) . @ pabort + W(b) . @ dabort + W(b) __enter_kernel @ hyp + W(b) . @ irq + W(b) . @ fiq +#endif /* CONFIG_ARM_VIRT_EXT */ + +__enter_kernel: + mov r0, #0 @ must be 0 + ARM( mov pc, r4 ) @ call kernel + THUMB( bx r4 ) @ entry point is always ARM + reloc_code_end: .align diff --git a/trunk/arch/arm/include/asm/assembler.h b/trunk/arch/arm/include/asm/assembler.h index 5c8b3bf4d825..2ef95813fce0 100644 --- a/trunk/arch/arm/include/asm/assembler.h +++ b/trunk/arch/arm/include/asm/assembler.h @@ -22,6 +22,7 @@ #include #include +#include #define IOMEM(x) (x) @@ -239,6 +240,34 @@ .endm #endif +/* + * Helper macro to enter SVC mode cleanly and mask interrupts. reg is + * a scratch register for the macro to overwrite. + * + * This macro is intended for forcing the CPU into SVC mode at boot time. + * you cannot return to the original mode. + * + * Beware, it also clobers LR. + */ +.macro safe_svcmode_maskall reg:req + mrs \reg , cpsr + mov lr , \reg + and lr , lr , #MODE_MASK + cmp lr , #HYP_MODE + orr \reg , \reg , #PSR_I_BIT | PSR_F_BIT + bic \reg , \reg , #MODE_MASK + orr \reg , \reg , #SVC_MODE +THUMB( orr \reg , \reg , #PSR_T_BIT ) + bne 1f + orr \reg, \reg, #PSR_A_BIT + adr lr, BSYM(2f) + msr spsr_cxsf, \reg + __MSR_ELR_HYP(14) + __ERET +1: msr cpsr_c, \reg +2: +.endm + /* * STRT/LDRT access macros with ARM and Thumb-2 variants */ diff --git a/trunk/arch/arm/include/asm/cacheflush.h b/trunk/arch/arm/include/asm/cacheflush.h index e4448e16046d..e1489c54cd12 100644 --- a/trunk/arch/arm/include/asm/cacheflush.h +++ b/trunk/arch/arm/include/asm/cacheflush.h @@ -49,6 +49,13 @@ * * Unconditionally clean and invalidate the entire cache. * + * flush_kern_louis() + * + * Flush data cache levels up to the level of unification + * inner shareable and invalidate the I-cache. + * Only needed from v7 onwards, falls back to flush_cache_all() + * for all other processor versions. + * * flush_user_all() * * Clean and invalidate all user space cache entries @@ -97,6 +104,7 @@ struct cpu_cache_fns { void (*flush_icache_all)(void); void (*flush_kern_all)(void); + void (*flush_kern_louis)(void); void (*flush_user_all)(void); void (*flush_user_range)(unsigned long, unsigned long, unsigned int); @@ -119,6 +127,7 @@ extern struct cpu_cache_fns cpu_cache; #define __cpuc_flush_icache_all cpu_cache.flush_icache_all #define __cpuc_flush_kern_all cpu_cache.flush_kern_all +#define __cpuc_flush_kern_louis cpu_cache.flush_kern_louis #define __cpuc_flush_user_all cpu_cache.flush_user_all #define __cpuc_flush_user_range cpu_cache.flush_user_range #define __cpuc_coherent_kern_range cpu_cache.coherent_kern_range @@ -139,6 +148,7 @@ extern struct cpu_cache_fns cpu_cache; extern void __cpuc_flush_icache_all(void); extern void __cpuc_flush_kern_all(void); +extern void __cpuc_flush_kern_louis(void); extern void __cpuc_flush_user_all(void); extern void __cpuc_flush_user_range(unsigned long, unsigned long, unsigned int); extern void __cpuc_coherent_kern_range(unsigned long, unsigned long); @@ -204,6 +214,11 @@ static inline void __flush_icache_all(void) __flush_icache_preferred(); } +/* + * Flush caches up to Level of Unification Inner Shareable + */ +#define flush_cache_louis() __cpuc_flush_kern_louis() + #define flush_cache_all() __cpuc_flush_kern_all() static inline void vivt_flush_cache_mm(struct mm_struct *mm) diff --git a/trunk/arch/arm/include/asm/glue-cache.h b/trunk/arch/arm/include/asm/glue-cache.h index 4f8d2c0dc441..cca9f15704ed 100644 --- a/trunk/arch/arm/include/asm/glue-cache.h +++ b/trunk/arch/arm/include/asm/glue-cache.h @@ -132,6 +132,7 @@ #ifndef MULTI_CACHE #define __cpuc_flush_icache_all __glue(_CACHE,_flush_icache_all) #define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all) +#define __cpuc_flush_kern_louis __glue(_CACHE,_flush_kern_cache_louis) #define __cpuc_flush_user_all __glue(_CACHE,_flush_user_cache_all) #define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range) #define __cpuc_coherent_kern_range __glue(_CACHE,_coherent_kern_range) diff --git a/trunk/arch/arm/include/asm/opcodes-virt.h b/trunk/arch/arm/include/asm/opcodes-virt.h index b85665a96f8e..efcfdf92d9d5 100644 --- a/trunk/arch/arm/include/asm/opcodes-virt.h +++ b/trunk/arch/arm/include/asm/opcodes-virt.h @@ -26,4 +26,14 @@ 0xF7E08000 | (((imm16) & 0xF000) << 4) | ((imm16) & 0x0FFF) \ ) +#define __ERET __inst_arm_thumb32( \ + 0xE160006E, \ + 0xF3DE8F00 \ +) + +#define __MSR_ELR_HYP(regnum) __inst_arm_thumb32( \ + 0xE12EF300 | regnum, \ + 0xF3808E30 | (regnum << 16) \ +) + #endif /* ! __ASM_ARM_OPCODES_VIRT_H */ diff --git a/trunk/arch/arm/include/asm/ptrace.h b/trunk/arch/arm/include/asm/ptrace.h index 44fe998269d9..142d6ae41231 100644 --- a/trunk/arch/arm/include/asm/ptrace.h +++ b/trunk/arch/arm/include/asm/ptrace.h @@ -44,6 +44,7 @@ #define IRQ_MODE 0x00000012 #define SVC_MODE 0x00000013 #define ABT_MODE 0x00000017 +#define HYP_MODE 0x0000001a #define UND_MODE 0x0000001b #define SYSTEM_MODE 0x0000001f #define MODE32_BIT 0x00000010 diff --git a/trunk/arch/arm/include/asm/thread_info.h b/trunk/arch/arm/include/asm/thread_info.h index f71cdab18b87..8477b4c1d39f 100644 --- a/trunk/arch/arm/include/asm/thread_info.h +++ b/trunk/arch/arm/include/asm/thread_info.h @@ -151,7 +151,6 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define TIF_SYSCALL_TRACE 8 #define TIF_SYSCALL_AUDIT 9 #define TIF_SYSCALL_TRACEPOINT 10 -#define TIF_POLLING_NRFLAG 16 #define TIF_USING_IWMMXT 17 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ #define TIF_RESTORE_SIGMASK 20 @@ -164,7 +163,6 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) -#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) #define _TIF_SECCOMP (1 << TIF_SECCOMP) diff --git a/trunk/arch/arm/include/asm/unistd.h b/trunk/arch/arm/include/asm/unistd.h index f259921edfe9..91819ad54424 100644 --- a/trunk/arch/arm/include/asm/unistd.h +++ b/trunk/arch/arm/include/asm/unistd.h @@ -479,7 +479,6 @@ #define __ARCH_WANT_SYS_SOCKETCALL #endif #define __ARCH_WANT_SYS_EXECVE -#define __ARCH_WANT_KERNEL_EXECVE /* * "Conditional" syscalls diff --git a/trunk/arch/arm/include/asm/vfpmacros.h b/trunk/arch/arm/include/asm/vfpmacros.h index a7aadbd9a6dd..6a6f1e485f41 100644 --- a/trunk/arch/arm/include/asm/vfpmacros.h +++ b/trunk/arch/arm/include/asm/vfpmacros.h @@ -28,7 +28,7 @@ ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] tst \tmp, #HWCAP_VFPv3D16 - ldceq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} + ldceql p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} addne \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 @@ -52,7 +52,7 @@ ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] tst \tmp, #HWCAP_VFPv3D16 - stceq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} + stceql p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} addne \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 diff --git a/trunk/arch/arm/include/asm/virt.h b/trunk/arch/arm/include/asm/virt.h new file mode 100644 index 000000000000..86164df86cb4 --- /dev/null +++ b/trunk/arch/arm/include/asm/virt.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2012 Linaro Limited. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef VIRT_H +#define VIRT_H + +#include + +/* + * Flag indicating that the kernel was not entered in the same mode on every + * CPU. The zImage loader stashes this value in an SPSR, so we need an + * architecturally defined flag bit here (the N flag, as it happens) + */ +#define BOOT_CPU_MODE_MISMATCH (1<<31) + +#ifndef __ASSEMBLY__ + +#ifdef CONFIG_ARM_VIRT_EXT +/* + * __boot_cpu_mode records what mode the primary CPU was booted in. + * A correctly-implemented bootloader must start all CPUs in the same mode: + * if it fails to do this, the flag BOOT_CPU_MODE_MISMATCH is set to indicate + * that some CPU(s) were booted in a different mode. + * + * This allows the kernel to flag an error when the secondaries have come up. + */ +extern int __boot_cpu_mode; + +void __hyp_set_vectors(unsigned long phys_vector_base); +unsigned long __hyp_get_vectors(void); +#else +#define __boot_cpu_mode (SVC_MODE) +#endif + +#ifndef ZIMAGE +void hyp_mode_check(void); + +/* Reports the availability of HYP mode */ +static inline bool is_hyp_mode_available(void) +{ + return ((__boot_cpu_mode & MODE_MASK) == HYP_MODE && + !(__boot_cpu_mode & BOOT_CPU_MODE_MISMATCH)); +} + +/* Check if the bootloader has booted CPUs in different modes */ +static inline bool is_hyp_mode_mismatched(void) +{ + return !!(__boot_cpu_mode & BOOT_CPU_MODE_MISMATCH); +} +#endif + +#endif /* __ASSEMBLY__ */ + +#endif /* ! VIRT_H */ diff --git a/trunk/arch/arm/kernel/Makefile b/trunk/arch/arm/kernel/Makefile index 5dfef9d97ed9..5bbec7b8183e 100644 --- a/trunk/arch/arm/kernel/Makefile +++ b/trunk/arch/arm/kernel/Makefile @@ -81,4 +81,6 @@ head-y := head$(MMUEXT).o obj-$(CONFIG_DEBUG_LL) += debug.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o +obj-$(CONFIG_ARM_VIRT_EXT) += hyp-stub.o + extra-y := $(head-y) vmlinux.lds diff --git a/trunk/arch/arm/kernel/entry-common.S b/trunk/arch/arm/kernel/entry-common.S index e340fa1db203..417bac1846bd 100644 --- a/trunk/arch/arm/kernel/entry-common.S +++ b/trunk/arch/arm/kernel/entry-common.S @@ -86,35 +86,14 @@ ENDPROC(ret_to_user) */ ENTRY(ret_from_fork) bl schedule_tail + cmp r5, #0 + movne r0, r4 + movne lr, pc + movne pc, r5 get_thread_info tsk - mov why, #1 b ret_slow_syscall ENDPROC(ret_from_fork) -ENTRY(ret_from_kernel_thread) - UNWIND(.fnstart) - UNWIND(.cantunwind) - bl schedule_tail - mov r0, r4 - adr lr, BSYM(1f) @ kernel threads should not exit - mov pc, r5 -1: bl do_exit - nop - UNWIND(.fnend) -ENDPROC(ret_from_kernel_thread) - -/* - * turn a kernel thread into userland process - * use: ret_from_kernel_execve(struct pt_regs *normal) - */ -ENTRY(ret_from_kernel_execve) - mov why, #0 @ not a syscall - str why, [r0, #S_R0] @ ... and we want 0 in ->ARM_r0 as well - get_thread_info tsk @ thread structure - mov sp, r0 @ stack pointer just under pt_regs - b ret_slow_syscall -ENDPROC(ret_from_kernel_execve) - .equ NR_syscalls,0 #define CALL(x) .equ NR_syscalls,NR_syscalls+1 #include "calls.S" diff --git a/trunk/arch/arm/kernel/head.S b/trunk/arch/arm/kernel/head.S index 9874d0741191..4eee351f4668 100644 --- a/trunk/arch/arm/kernel/head.S +++ b/trunk/arch/arm/kernel/head.S @@ -83,8 +83,12 @@ ENTRY(stext) THUMB( .thumb ) @ switch to Thumb now. THUMB(1: ) - setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode - @ and irqs disabled +#ifdef CONFIG_ARM_VIRT_EXT + bl __hyp_stub_install +#endif + @ ensure svc mode and all interrupts masked + safe_svcmode_maskall r9 + mrc p15, 0, r9, c0, c0 @ get processor id bl __lookup_processor_type @ r5=procinfo r9=cpuid movs r10, r5 @ invalid processor (r5=0)? @@ -326,7 +330,11 @@ ENTRY(secondary_startup) * the processor type - there is no need to check the machine type * as it has already been validated by the primary processor. */ - setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 +#ifdef CONFIG_ARM_VIRT_EXT + bl __hyp_stub_install +#endif + safe_svcmode_maskall r9 + mrc p15, 0, r9, c0, c0 @ get processor id bl __lookup_processor_type movs r10, r5 @ invalid processor? diff --git a/trunk/arch/arm/kernel/hyp-stub.S b/trunk/arch/arm/kernel/hyp-stub.S new file mode 100644 index 000000000000..65b2417aebce --- /dev/null +++ b/trunk/arch/arm/kernel/hyp-stub.S @@ -0,0 +1,223 @@ +/* + * Copyright (c) 2012 Linaro Limited. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include + +#ifndef ZIMAGE +/* + * For the kernel proper, we need to find out the CPU boot mode long after + * boot, so we need to store it in a writable variable. + * + * This is not in .bss, because we set it sufficiently early that the boot-time + * zeroing of .bss would clobber it. + */ +.data +ENTRY(__boot_cpu_mode) + .long 0 +.text + + /* + * Save the primary CPU boot mode. Requires 3 scratch registers. + */ + .macro store_primary_cpu_mode reg1, reg2, reg3 + mrs \reg1, cpsr + and \reg1, \reg1, #MODE_MASK + adr \reg2, .L__boot_cpu_mode_offset + ldr \reg3, [\reg2] + str \reg1, [\reg2, \reg3] + .endm + + /* + * Compare the current mode with the one saved on the primary CPU. + * If they don't match, record that fact. The Z bit indicates + * if there's a match or not. + * Requires 3 additionnal scratch registers. + */ + .macro compare_cpu_mode_with_primary mode, reg1, reg2, reg3 + adr \reg2, .L__boot_cpu_mode_offset + ldr \reg3, [\reg2] + ldr \reg1, [\reg2, \reg3] + cmp \mode, \reg1 @ matches primary CPU boot mode? + orrne r7, r7, #BOOT_CPU_MODE_MISMATCH + strne r7, [r5, r6] @ record what happened and give up + .endm + +#else /* ZIMAGE */ + + .macro store_primary_cpu_mode reg1:req, reg2:req, reg3:req + .endm + +/* + * The zImage loader only runs on one CPU, so we don't bother with mult-CPU + * consistency checking: + */ + .macro compare_cpu_mode_with_primary mode, reg1, reg2, reg3 + cmp \mode, \mode + .endm + +#endif /* ZIMAGE */ + +/* + * Hypervisor stub installation functions. + * + * These must be called with the MMU and D-cache off. + * They are not ABI compliant and are only intended to be called from the kernel + * entry points in head.S. + */ +@ Call this from the primary CPU +ENTRY(__hyp_stub_install) + store_primary_cpu_mode r4, r5, r6 +ENDPROC(__hyp_stub_install) + + @ fall through... + +@ Secondary CPUs should call here +ENTRY(__hyp_stub_install_secondary) + mrs r4, cpsr + and r4, r4, #MODE_MASK + + /* + * If the secondary has booted with a different mode, give up + * immediately. + */ + compare_cpu_mode_with_primary r4, r5, r6, r7 + bxne lr + + /* + * Once we have given up on one CPU, we do not try to install the + * stub hypervisor on the remaining ones: because the saved boot mode + * is modified, it can't compare equal to the CPSR mode field any + * more. + * + * Otherwise... + */ + + cmp r4, #HYP_MODE + bxne lr @ give up if the CPU is not in HYP mode + +/* + * Configure HSCTLR to set correct exception endianness/instruction set + * state etc. + * Turn off all traps + * Eventually, CPU-specific code might be needed -- assume not for now + * + * This code relies on the "eret" instruction to synchronize the + * various coprocessor accesses. + */ + @ Now install the hypervisor stub: + adr r7, __hyp_stub_vectors + mcr p15, 4, r7, c12, c0, 0 @ set hypervisor vector base (HVBAR) + + @ Disable all traps, so we don't get any nasty surprise + mov r7, #0 + mcr p15, 4, r7, c1, c1, 0 @ HCR + mcr p15, 4, r7, c1, c1, 2 @ HCPTR + mcr p15, 4, r7, c1, c1, 3 @ HSTR + +THUMB( orr r7, #(1 << 30) ) @ HSCTLR.TE +#ifdef CONFIG_CPU_BIG_ENDIAN + orr r7, #(1 << 9) @ HSCTLR.EE +#endif + mcr p15, 4, r7, c1, c0, 0 @ HSCTLR + + mrc p15, 4, r7, c1, c1, 1 @ HDCR + and r7, #0x1f @ Preserve HPMN + mcr p15, 4, r7, c1, c1, 1 @ HDCR + +#if !defined(ZIMAGE) && defined(CONFIG_ARM_ARCH_TIMER) + @ make CNTP_* and CNTPCT accessible from PL1 + mrc p15, 0, r7, c0, c1, 1 @ ID_PFR1 + lsr r7, #16 + and r7, #0xf + cmp r7, #1 + bne 1f + mrc p15, 4, r7, c14, c1, 0 @ CNTHCTL + orr r7, r7, #3 @ PL1PCEN | PL1PCTEN + mcr p15, 4, r7, c14, c1, 0 @ CNTHCTL +1: +#endif + + bic r7, r4, #MODE_MASK + orr r7, r7, #SVC_MODE +THUMB( orr r7, r7, #PSR_T_BIT ) + msr spsr_cxsf, r7 @ This is SPSR_hyp. + + __MSR_ELR_HYP(14) @ msr elr_hyp, lr + __ERET @ return, switching to SVC mode + @ The boot CPU mode is left in r4. +ENDPROC(__hyp_stub_install_secondary) + +__hyp_stub_do_trap: + cmp r0, #-1 + mrceq p15, 4, r0, c12, c0, 0 @ get HVBAR + mcrne p15, 4, r0, c12, c0, 0 @ set HVBAR + __ERET +ENDPROC(__hyp_stub_do_trap) + +/* + * __hyp_set_vectors: Call this after boot to set the initial hypervisor + * vectors as part of hypervisor installation. On an SMP system, this should + * be called on each CPU. + * + * r0 must be the physical address of the new vector table (which must lie in + * the bottom 4GB of physical address space. + * + * r0 must be 32-byte aligned. + * + * Before calling this, you must check that the stub hypervisor is installed + * everywhere, by waiting for any secondary CPUs to be brought up and then + * checking that BOOT_CPU_MODE_HAVE_HYP(__boot_cpu_mode) is true. + * + * If not, there is a pre-existing hypervisor, some CPUs failed to boot, or + * something else went wrong... in such cases, trying to install a new + * hypervisor is unlikely to work as desired. + * + * When you call into your shiny new hypervisor, sp_hyp will contain junk, + * so you will need to set that to something sensible at the new hypervisor's + * initialisation entry point. + */ +ENTRY(__hyp_get_vectors) + mov r0, #-1 +ENDPROC(__hyp_get_vectors) + @ fall through +ENTRY(__hyp_set_vectors) + __HVC(0) + bx lr +ENDPROC(__hyp_set_vectors) + +#ifndef ZIMAGE +.align 2 +.L__boot_cpu_mode_offset: + .long __boot_cpu_mode - . +#endif + +.align 5 +__hyp_stub_vectors: +__hyp_stub_reset: W(b) . +__hyp_stub_und: W(b) . +__hyp_stub_svc: W(b) . +__hyp_stub_pabort: W(b) . +__hyp_stub_dabort: W(b) . +__hyp_stub_trap: W(b) __hyp_stub_do_trap +__hyp_stub_irq: W(b) . +__hyp_stub_fiq: W(b) . +ENDPROC(__hyp_stub_vectors) + diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index f98c17ff1957..90084a6de35a 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -373,7 +373,6 @@ void release_thread(struct task_struct *dead_task) } asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); -asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); int copy_thread(unsigned long clone_flags, unsigned long stack_start, @@ -388,13 +387,13 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start, *childregs = *regs; childregs->ARM_r0 = 0; childregs->ARM_sp = stack_start; - thread->cpu_context.pc = (unsigned long)ret_from_fork; } else { + memset(childregs, 0, sizeof(struct pt_regs)); thread->cpu_context.r4 = stk_sz; thread->cpu_context.r5 = stack_start; - thread->cpu_context.pc = (unsigned long)ret_from_kernel_thread; childregs->ARM_cpsr = SVC_MODE; } + thread->cpu_context.pc = (unsigned long)ret_from_fork; thread->cpu_context.sp = (unsigned long)childregs; clear_ptrace_hw_breakpoint(p); diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index febafa0f552d..da1d1aa20ad9 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -53,6 +53,7 @@ #include #include #include +#include #include "atags.h" #include "tcm.h" @@ -703,6 +704,21 @@ static int __init meminfo_cmp(const void *_a, const void *_b) return cmp < 0 ? -1 : cmp > 0 ? 1 : 0; } +void __init hyp_mode_check(void) +{ +#ifdef CONFIG_ARM_VIRT_EXT + if (is_hyp_mode_available()) { + pr_info("CPU: All CPU(s) started in HYP mode.\n"); + pr_info("CPU: Virtualization extensions available.\n"); + } else if (is_hyp_mode_mismatched()) { + pr_warn("CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x%x)\n", + __boot_cpu_mode & MODE_MASK); + pr_warn("CPU: This may indicate a broken bootloader or firmware.\n"); + } else + pr_info("CPU: All CPU(s) started in SVC mode.\n"); +#endif +} + void __init setup_arch(char **cmdline_p) { struct machine_desc *mdesc; @@ -748,6 +764,10 @@ void __init setup_arch(char **cmdline_p) smp_init_cpus(); } #endif + + if (!is_smp()) + hyp_mode_check(); + reserve_crashkernel(); tcm_init(); diff --git a/trunk/arch/arm/kernel/signal.c b/trunk/arch/arm/kernel/signal.c index f27789e4e38a..56f72d257ebd 100644 --- a/trunk/arch/arm/kernel/signal.c +++ b/trunk/arch/arm/kernel/signal.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index d100eacdb798..8e20754dd31d 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -43,6 +43,7 @@ #include #include #include +#include #include /* @@ -202,8 +203,11 @@ int __cpuinit __cpu_disable(void) /* * Flush user cache and TLB mappings, and then remove this CPU * from the vm mask set of all processes. + * + * Caches are flushed to the Level of Unification Inner Shareable + * to write-back dirty lines to unified caches shared by all CPUs. */ - flush_cache_all(); + flush_cache_louis(); local_flush_tlb_all(); clear_tasks_mm_cpumask(cpu); @@ -355,6 +359,8 @@ void __init smp_cpus_done(unsigned int max_cpus) num_online_cpus(), bogosum / (500000/HZ), (bogosum / (5000/HZ)) % 100); + + hyp_mode_check(); } void __init smp_prepare_boot_cpu(void) diff --git a/trunk/arch/arm/kernel/suspend.c b/trunk/arch/arm/kernel/suspend.c index 1794cc3b0f18..358bca3a995e 100644 --- a/trunk/arch/arm/kernel/suspend.c +++ b/trunk/arch/arm/kernel/suspend.c @@ -17,6 +17,8 @@ extern void cpu_resume_mmu(void); */ void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr) { + u32 *ctx = ptr; + *save_ptr = virt_to_phys(ptr); /* This must correspond to the LDM in cpu_resume() assembly */ @@ -26,7 +28,20 @@ void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr) cpu_do_suspend(ptr); - flush_cache_all(); + flush_cache_louis(); + + /* + * flush_cache_louis does not guarantee that + * save_ptr and ptr are cleaned to main memory, + * just up to the Level of Unification Inner Shareable. + * Since the context pointer and context itself + * are to be retrieved with the MMU off that + * data must be cleaned from all cache levels + * to main memory using "area" cache primitives. + */ + __cpuc_flush_dcache_area(ctx, ptrsz); + __cpuc_flush_dcache_area(save_ptr, sizeof(*save_ptr)); + outer_clean_range(*save_ptr, *save_ptr + ptrsz); outer_clean_range(virt_to_phys(save_ptr), virt_to_phys(save_ptr) + sizeof(*save_ptr)); diff --git a/trunk/arch/arm/mach-davinci/Kconfig b/trunk/arch/arm/mach-davinci/Kconfig index ab99c3c3b752..026b4b277ae5 100644 --- a/trunk/arch/arm/mach-davinci/Kconfig +++ b/trunk/arch/arm/mach-davinci/Kconfig @@ -186,6 +186,13 @@ config DA850_UI_RMII NOTE: Please take care while choosing this option, MII PHY will not be functional if RMII mode is selected. +config DA850_UI_SD_VIDEO_PORT + bool "Video Port Interface" + help + Say Y if you want to use Video Port Interface (VPIF) on the + DA850/OMAP-L138 EVM. The Video decoders/encoders are found on the + UI daughter card that is supplied with the EVM. + endchoice config DA850_WL12XX diff --git a/trunk/arch/arm/mach-davinci/board-da850-evm.c b/trunk/arch/arm/mach-davinci/board-da850-evm.c index 1295e616ceee..32ee3f895967 100644 --- a/trunk/arch/arm/mach-davinci/board-da850-evm.c +++ b/trunk/arch/arm/mach-davinci/board-da850-evm.c @@ -45,6 +45,9 @@ #include #include +#include +#include + #define DA850_EVM_PHY_ID "davinci_mdio-0:00" #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8) #define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15) @@ -452,6 +455,15 @@ static void da850_evm_ui_keys_init(unsigned gpio) } } +#ifdef CONFIG_DA850_UI_SD_VIDEO_PORT +static inline void da850_evm_setup_video_port(int video_sel) +{ + gpio_set_value_cansleep(video_sel, 0); +} +#else +static inline void da850_evm_setup_video_port(int video_sel) { } +#endif + static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, unsigned ngpio, void *c) { @@ -497,6 +509,8 @@ static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, da850_evm_setup_emac_rmii(sel_a); + da850_evm_setup_video_port(sel_c); + return 0; exp_setup_keys_fail: @@ -1149,6 +1163,169 @@ static __init int da850_evm_init_cpufreq(void) static __init int da850_evm_init_cpufreq(void) { return 0; } #endif +#if defined(CONFIG_DA850_UI_SD_VIDEO_PORT) + +#define TVP5147_CH0 "tvp514x-0" +#define TVP5147_CH1 "tvp514x-1" + +/* VPIF capture configuration */ +static struct tvp514x_platform_data tvp5146_pdata = { + .clk_polarity = 0, + .hs_polarity = 1, + .vs_polarity = 1, +}; + +#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) + +static const struct vpif_input da850_ch0_inputs[] = { + { + .input = { + .index = 0, + .name = "Composite", + .type = V4L2_INPUT_TYPE_CAMERA, + .capabilities = V4L2_IN_CAP_STD, + .std = TVP514X_STD_ALL, + }, + .input_route = INPUT_CVBS_VI2B, + .output_route = OUTPUT_10BIT_422_EMBEDDED_SYNC, + .subdev_name = TVP5147_CH0, + }, +}; + +static const struct vpif_input da850_ch1_inputs[] = { + { + .input = { + .index = 0, + .name = "S-Video", + .type = V4L2_INPUT_TYPE_CAMERA, + .capabilities = V4L2_IN_CAP_STD, + .std = TVP514X_STD_ALL, + }, + .input_route = INPUT_SVIDEO_VI2C_VI1C, + .output_route = OUTPUT_10BIT_422_EMBEDDED_SYNC, + .subdev_name = TVP5147_CH1, + }, +}; + +static struct vpif_subdev_info da850_vpif_capture_sdev_info[] = { + { + .name = TVP5147_CH0, + .board_info = { + I2C_BOARD_INFO("tvp5146", 0x5d), + .platform_data = &tvp5146_pdata, + }, + }, + { + .name = TVP5147_CH1, + .board_info = { + I2C_BOARD_INFO("tvp5146", 0x5c), + .platform_data = &tvp5146_pdata, + }, + }, +}; + +static struct vpif_capture_config da850_vpif_capture_config = { + .subdev_info = da850_vpif_capture_sdev_info, + .subdev_count = ARRAY_SIZE(da850_vpif_capture_sdev_info), + .chan_config[0] = { + .inputs = da850_ch0_inputs, + .input_count = ARRAY_SIZE(da850_ch0_inputs), + .vpif_if = { + .if_type = VPIF_IF_BT656, + .hd_pol = 1, + .vd_pol = 1, + .fid_pol = 0, + }, + }, + .chan_config[1] = { + .inputs = da850_ch1_inputs, + .input_count = ARRAY_SIZE(da850_ch1_inputs), + .vpif_if = { + .if_type = VPIF_IF_BT656, + .hd_pol = 1, + .vd_pol = 1, + .fid_pol = 0, + }, + }, + .card_name = "DA850/OMAP-L138 Video Capture", +}; + +/* VPIF display configuration */ +static struct vpif_subdev_info da850_vpif_subdev[] = { + { + .name = "adv7343", + .board_info = { + I2C_BOARD_INFO("adv7343", 0x2a), + }, + }, +}; + +static const struct vpif_output da850_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = "Composite", + .type = V4L2_OUTPUT_TYPE_ANALOG, + .capabilities = V4L2_OUT_CAP_STD, + .std = V4L2_STD_ALL, + }, + .subdev_name = "adv7343", + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = "S-Video", + .type = V4L2_OUTPUT_TYPE_ANALOG, + .capabilities = V4L2_OUT_CAP_STD, + .std = V4L2_STD_ALL, + }, + .subdev_name = "adv7343", + .output_route = ADV7343_SVIDEO_ID, + }, +}; + +static struct vpif_display_config da850_vpif_display_config = { + .subdevinfo = da850_vpif_subdev, + .subdev_count = ARRAY_SIZE(da850_vpif_subdev), + .chan_config[0] = { + .outputs = da850_ch0_outputs, + .output_count = ARRAY_SIZE(da850_ch0_outputs), + }, + .card_name = "DA850/OMAP-L138 Video Display", +}; + +static __init void da850_vpif_init(void) +{ + int ret; + + ret = da850_register_vpif(); + if (ret) + pr_warn("da850_evm_init: VPIF setup failed: %d\n", ret); + + ret = davinci_cfg_reg_list(da850_vpif_capture_pins); + if (ret) + pr_warn("da850_evm_init: VPIF capture mux setup failed: %d\n", + ret); + + ret = da850_register_vpif_capture(&da850_vpif_capture_config); + if (ret) + pr_warn("da850_evm_init: VPIF capture setup failed: %d\n", ret); + + ret = davinci_cfg_reg_list(da850_vpif_display_pins); + if (ret) + pr_warn("da850_evm_init: VPIF display mux setup failed: %d\n", + ret); + + ret = da850_register_vpif_display(&da850_vpif_display_config); + if (ret) + pr_warn("da850_evm_init: VPIF display setup failed: %d\n", ret); +} + +#else +static __init void da850_vpif_init(void) {} +#endif + #ifdef CONFIG_DA850_WL12XX static void wl12xx_set_power(int index, bool power_on) @@ -1375,6 +1552,8 @@ static __init void da850_evm_init(void) pr_warning("da850_evm_init: suspend registration failed: %d\n", ret); + da850_vpif_init(); + ret = da8xx_register_spi(1, da850evm_spi_info, ARRAY_SIZE(da850evm_spi_info)); if (ret) diff --git a/trunk/arch/arm/mach-davinci/board-dm644x-evm.c b/trunk/arch/arm/mach-davinci/board-dm644x-evm.c index ca72fc4b8cca..f22572cee49d 100644 --- a/trunk/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/trunk/arch/arm/mach-davinci/board-dm644x-evm.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -620,7 +621,7 @@ static struct vpbe_enc_mode_info dm644xevm_enc_std_timing[] = { { .name = "ntsc", .timings_type = VPBE_ENC_STD, - .timings = {V4L2_STD_525_60}, + .std_id = V4L2_STD_525_60, .interlaced = 1, .xres = 720, .yres = 480, @@ -632,7 +633,7 @@ static struct vpbe_enc_mode_info dm644xevm_enc_std_timing[] = { { .name = "pal", .timings_type = VPBE_ENC_STD, - .timings = {V4L2_STD_625_50}, + .std_id = V4L2_STD_625_50, .interlaced = 1, .xres = 720, .yres = 576, @@ -647,8 +648,8 @@ static struct vpbe_enc_mode_info dm644xevm_enc_std_timing[] = { static struct vpbe_enc_mode_info dm644xevm_enc_preset_timing[] = { { .name = "480p59_94", - .timings_type = VPBE_ENC_DV_PRESET, - .timings = {V4L2_DV_480P59_94}, + .timings_type = VPBE_ENC_CUSTOM_TIMINGS, + .dv_timings = V4L2_DV_BT_CEA_720X480P59_94, .interlaced = 0, .xres = 720, .yres = 480, @@ -659,8 +660,8 @@ static struct vpbe_enc_mode_info dm644xevm_enc_preset_timing[] = { }, { .name = "576p50", - .timings_type = VPBE_ENC_DV_PRESET, - .timings = {V4L2_DV_576P50}, + .timings_type = VPBE_ENC_CUSTOM_TIMINGS, + .dv_timings = V4L2_DV_BT_CEA_720X576P50, .interlaced = 0, .xres = 720, .yres = 576, @@ -698,7 +699,7 @@ static struct vpbe_output dm644xevm_vpbe_outputs[] = { .index = 1, .name = "Component", .type = V4L2_OUTPUT_TYPE_ANALOG, - .capabilities = V4L2_OUT_CAP_PRESETS, + .capabilities = V4L2_OUT_CAP_DV_TIMINGS, }, .subdev_name = VPBE_VENC_SUBDEV_NAME, .default_mode = "480p59_94", diff --git a/trunk/arch/arm/mach-davinci/board-dm646x-evm.c b/trunk/arch/arm/mach-davinci/board-dm646x-evm.c index 9944367b4931..1dbf85beed1b 100644 --- a/trunk/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/trunk/arch/arm/mach-davinci/board-dm646x-evm.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -496,18 +497,49 @@ static struct vpif_subdev_info dm646x_vpif_subdev[] = { }, }; -static const char *output[] = { - "Composite", - "Component", - "S-Video", +static const struct vpif_output dm6467_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = "Composite", + .type = V4L2_OUTPUT_TYPE_ANALOG, + .capabilities = V4L2_OUT_CAP_STD, + .std = V4L2_STD_ALL, + }, + .subdev_name = "adv7343", + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = "Component", + .type = V4L2_OUTPUT_TYPE_ANALOG, + .capabilities = V4L2_OUT_CAP_CUSTOM_TIMINGS, + }, + .subdev_name = "adv7343", + .output_route = ADV7343_COMPONENT_ID, + }, + { + .output = { + .index = 2, + .name = "S-Video", + .type = V4L2_OUTPUT_TYPE_ANALOG, + .capabilities = V4L2_OUT_CAP_STD, + .std = V4L2_STD_ALL, + }, + .subdev_name = "adv7343", + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config dm646x_vpif_display_config = { .set_clock = set_vpif_clock, .subdevinfo = dm646x_vpif_subdev, .subdev_count = ARRAY_SIZE(dm646x_vpif_subdev), - .output = output, - .output_count = ARRAY_SIZE(output), + .chan_config[0] = { + .outputs = dm6467_ch0_outputs, + .output_count = ARRAY_SIZE(dm6467_ch0_outputs), + }, .card_name = "DM646x EVM", }; @@ -601,15 +633,6 @@ static struct vpif_subdev_info vpif_capture_sdev_info[] = { I2C_BOARD_INFO("tvp5146", 0x5d), .platform_data = &tvp5146_pdata, }, - .input = INPUT_CVBS_VI2B, - .output = OUTPUT_10BIT_422_EMBEDDED_SYNC, - .can_route = 1, - .vpif_if = { - .if_type = VPIF_IF_BT656, - .hd_pol = 1, - .vd_pol = 1, - .fid_pol = 0, - }, }, { .name = TVP5147_CH1, @@ -617,15 +640,6 @@ static struct vpif_subdev_info vpif_capture_sdev_info[] = { I2C_BOARD_INFO("tvp5146", 0x5c), .platform_data = &tvp5146_pdata, }, - .input = INPUT_SVIDEO_VI2C_VI1C, - .output = OUTPUT_10BIT_422_EMBEDDED_SYNC, - .can_route = 1, - .vpif_if = { - .if_type = VPIF_IF_BT656, - .hd_pol = 1, - .vd_pol = 1, - .fid_pol = 0, - }, }, }; @@ -635,9 +649,12 @@ static const struct vpif_input dm6467_ch0_inputs[] = { .index = 0, .name = "Composite", .type = V4L2_INPUT_TYPE_CAMERA, + .capabilities = V4L2_IN_CAP_STD, .std = TVP514X_STD_ALL, }, .subdev_name = TVP5147_CH0, + .input_route = INPUT_CVBS_VI2B, + .output_route = OUTPUT_10BIT_422_EMBEDDED_SYNC, }, }; @@ -647,9 +664,12 @@ static const struct vpif_input dm6467_ch1_inputs[] = { .index = 0, .name = "S-Video", .type = V4L2_INPUT_TYPE_CAMERA, + .capabilities = V4L2_IN_CAP_STD, .std = TVP514X_STD_ALL, }, .subdev_name = TVP5147_CH1, + .input_route = INPUT_SVIDEO_VI2C_VI1C, + .output_route = OUTPUT_10BIT_422_EMBEDDED_SYNC, }, }; @@ -661,10 +681,22 @@ static struct vpif_capture_config dm646x_vpif_capture_cfg = { .chan_config[0] = { .inputs = dm6467_ch0_inputs, .input_count = ARRAY_SIZE(dm6467_ch0_inputs), + .vpif_if = { + .if_type = VPIF_IF_BT656, + .hd_pol = 1, + .vd_pol = 1, + .fid_pol = 0, + }, }, .chan_config[1] = { .inputs = dm6467_ch1_inputs, .input_count = ARRAY_SIZE(dm6467_ch1_inputs), + .vpif_if = { + .if_type = VPIF_IF_BT656, + .hd_pol = 1, + .vd_pol = 1, + .fid_pol = 0, + }, }, }; diff --git a/trunk/arch/arm/mach-davinci/da850.c b/trunk/arch/arm/mach-davinci/da850.c index e517e1036b09..b90c172d5541 100644 --- a/trunk/arch/arm/mach-davinci/da850.c +++ b/trunk/arch/arm/mach-davinci/da850.c @@ -347,6 +347,13 @@ static struct clk spi1_clk = { .flags = DA850_CLK_ASYNC3, }; +static struct clk vpif_clk = { + .name = "vpif", + .parent = &pll0_sysclk2, + .lpsc = DA850_LPSC1_VPIF, + .gpsc = 1, +}; + static struct clk sata_clk = { .name = "sata", .parent = &pll0_sysclk2, @@ -397,6 +404,7 @@ static struct clk_lookup da850_clks[] = { CLK(NULL, "usb20", &usb20_clk), CLK("spi_davinci.0", NULL, &spi0_clk), CLK("spi_davinci.1", NULL, &spi1_clk), + CLK("vpif", NULL, &vpif_clk), CLK("ahci", NULL, &sata_clk), CLK(NULL, NULL, NULL), }; @@ -573,6 +581,46 @@ static const struct mux_config da850_pins[] = { MUX_CFG(DA850, GPIO6_10, 13, 20, 15, 8, false) MUX_CFG(DA850, GPIO6_13, 13, 8, 15, 8, false) MUX_CFG(DA850, RTC_ALARM, 0, 28, 15, 2, false) + /* VPIF Capture */ + MUX_CFG(DA850, VPIF_DIN0, 15, 4, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN1, 15, 0, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN2, 14, 28, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN3, 14, 24, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN4, 14, 20, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN5, 14, 16, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN6, 14, 12, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN7, 14, 8, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN8, 16, 4, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN9, 16, 0, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN10, 15, 28, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN11, 15, 24, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN12, 15, 20, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN13, 15, 16, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN14, 15, 12, 15, 1, false) + MUX_CFG(DA850, VPIF_DIN15, 15, 8, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKIN0, 14, 0, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKIN1, 14, 4, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKIN2, 19, 8, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKIN3, 19, 16, 15, 1, false) + /* VPIF Display */ + MUX_CFG(DA850, VPIF_DOUT0, 17, 4, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT1, 17, 0, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT2, 16, 28, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT3, 16, 24, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT4, 16, 20, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT5, 16, 16, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT6, 16, 12, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT7, 16, 8, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT8, 18, 4, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT9, 18, 0, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT10, 17, 28, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT11, 17, 24, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT12, 17, 20, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT13, 17, 16, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT14, 17, 12, 15, 1, false) + MUX_CFG(DA850, VPIF_DOUT15, 17, 8, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKO2, 19, 12, 15, 1, false) + MUX_CFG(DA850, VPIF_CLKO3, 19, 20, 15, 1, false) #endif }; @@ -595,6 +643,26 @@ const short da850_lcdcntl_pins[] __initconst = { -1 }; +const short da850_vpif_capture_pins[] __initdata = { + DA850_VPIF_DIN0, DA850_VPIF_DIN1, DA850_VPIF_DIN2, DA850_VPIF_DIN3, + DA850_VPIF_DIN4, DA850_VPIF_DIN5, DA850_VPIF_DIN6, DA850_VPIF_DIN7, + DA850_VPIF_DIN8, DA850_VPIF_DIN9, DA850_VPIF_DIN10, DA850_VPIF_DIN11, + DA850_VPIF_DIN12, DA850_VPIF_DIN13, DA850_VPIF_DIN14, DA850_VPIF_DIN15, + DA850_VPIF_CLKIN0, DA850_VPIF_CLKIN1, DA850_VPIF_CLKIN2, + DA850_VPIF_CLKIN3, + -1 +}; + +const short da850_vpif_display_pins[] __initdata = { + DA850_VPIF_DOUT0, DA850_VPIF_DOUT1, DA850_VPIF_DOUT2, DA850_VPIF_DOUT3, + DA850_VPIF_DOUT4, DA850_VPIF_DOUT5, DA850_VPIF_DOUT6, DA850_VPIF_DOUT7, + DA850_VPIF_DOUT8, DA850_VPIF_DOUT9, DA850_VPIF_DOUT10, + DA850_VPIF_DOUT11, DA850_VPIF_DOUT12, DA850_VPIF_DOUT13, + DA850_VPIF_DOUT14, DA850_VPIF_DOUT15, DA850_VPIF_CLKO2, + DA850_VPIF_CLKO3, + -1 +}; + /* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */ static u8 da850_default_priorities[DA850_N_CP_INTC_IRQ] = { [IRQ_DA8XX_COMMTX] = 7, @@ -1064,6 +1132,90 @@ int __init da850_register_pm(struct platform_device *pdev) return ret; } +/* VPIF resource, platform data */ +static u64 da850_vpif_dma_mask = DMA_BIT_MASK(32); + +static struct resource da850_vpif_resource[] = { + { + .start = DA8XX_VPIF_BASE, + .end = DA8XX_VPIF_BASE + 0xfff, + .flags = IORESOURCE_MEM, + } +}; + +static struct platform_device da850_vpif_dev = { + .name = "vpif", + .id = -1, + .dev = { + .dma_mask = &da850_vpif_dma_mask, + .coherent_dma_mask = DMA_BIT_MASK(32), + }, + .resource = da850_vpif_resource, + .num_resources = ARRAY_SIZE(da850_vpif_resource), +}; + +static struct resource da850_vpif_display_resource[] = { + { + .start = IRQ_DA850_VPIFINT, + .end = IRQ_DA850_VPIFINT, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device da850_vpif_display_dev = { + .name = "vpif_display", + .id = -1, + .dev = { + .dma_mask = &da850_vpif_dma_mask, + .coherent_dma_mask = DMA_BIT_MASK(32), + }, + .resource = da850_vpif_display_resource, + .num_resources = ARRAY_SIZE(da850_vpif_display_resource), +}; + +static struct resource da850_vpif_capture_resource[] = { + { + .start = IRQ_DA850_VPIFINT, + .end = IRQ_DA850_VPIFINT, + .flags = IORESOURCE_IRQ, + }, + { + .start = IRQ_DA850_VPIFINT, + .end = IRQ_DA850_VPIFINT, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device da850_vpif_capture_dev = { + .name = "vpif_capture", + .id = -1, + .dev = { + .dma_mask = &da850_vpif_dma_mask, + .coherent_dma_mask = DMA_BIT_MASK(32), + }, + .resource = da850_vpif_capture_resource, + .num_resources = ARRAY_SIZE(da850_vpif_capture_resource), +}; + +int __init da850_register_vpif(void) +{ + return platform_device_register(&da850_vpif_dev); +} + +int __init da850_register_vpif_display(struct vpif_display_config + *display_config) +{ + da850_vpif_display_dev.dev.platform_data = display_config; + return platform_device_register(&da850_vpif_display_dev); +} + +int __init da850_register_vpif_capture(struct vpif_capture_config + *capture_config) +{ + da850_vpif_capture_dev.dev.platform_data = capture_config; + return platform_device_register(&da850_vpif_capture_dev); +} + static struct davinci_soc_info davinci_soc_info_da850 = { .io_desc = da850_io_desc, .io_desc_num = ARRAY_SIZE(da850_io_desc), diff --git a/trunk/arch/arm/mach-davinci/dm644x.c b/trunk/arch/arm/mach-davinci/dm644x.c index 0755d466221a..cd0c8b1e1ecf 100644 --- a/trunk/arch/arm/mach-davinci/dm644x.c +++ b/trunk/arch/arm/mach-davinci/dm644x.c @@ -701,7 +701,7 @@ static struct resource dm644x_venc_resources[] = { #define DM644X_VPSS_DACCLKEN BIT(4) static int dm644x_venc_setup_clock(enum vpbe_enc_timings_type type, - unsigned int mode) + unsigned int pclock) { int ret = 0; u32 v = DM644X_VPSS_VENCLKEN; @@ -711,27 +711,18 @@ static int dm644x_venc_setup_clock(enum vpbe_enc_timings_type type, v |= DM644X_VPSS_DACCLKEN; writel(v, DAVINCI_SYSMOD_VIRT(SYSMOD_VPSS_CLKCTL)); break; - case VPBE_ENC_DV_PRESET: - switch (mode) { - case V4L2_DV_480P59_94: - case V4L2_DV_576P50: + case VPBE_ENC_CUSTOM_TIMINGS: + if (pclock <= 27000000) { v |= DM644X_VPSS_MUXSEL_PLL2_MODE | DM644X_VPSS_DACCLKEN; writel(v, DAVINCI_SYSMOD_VIRT(SYSMOD_VPSS_CLKCTL)); - break; - case V4L2_DV_720P60: - case V4L2_DV_1080I60: - case V4L2_DV_1080P30: + } else { /* * For HD, use external clock source since * HD requires higher clock rate */ v |= DM644X_VPSS_MUXSEL_VPBECLK_MODE; writel(v, DAVINCI_SYSMOD_VIRT(SYSMOD_VPSS_CLKCTL)); - break; - default: - ret = -EINVAL; - break; } break; default: diff --git a/trunk/arch/arm/mach-davinci/include/mach/da8xx.h b/trunk/arch/arm/mach-davinci/include/mach/da8xx.h index c9ee723c56f3..aaccdc4528fc 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/trunk/arch/arm/mach-davinci/include/mach/da8xx.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -26,6 +27,8 @@ #include #include +#include + extern void __iomem *da8xx_syscfg0_base; extern void __iomem *da8xx_syscfg1_base; @@ -63,6 +66,7 @@ extern unsigned int da850_max_speed; #define DA8XX_PLL0_BASE 0x01c11000 #define DA8XX_TIMER64P0_BASE 0x01c20000 #define DA8XX_TIMER64P1_BASE 0x01c21000 +#define DA8XX_VPIF_BASE 0x01e17000 #define DA8XX_GPIO_BASE 0x01e26000 #define DA8XX_PSC1_BASE 0x01e27000 #define DA8XX_AEMIF_CS2_BASE 0x60000000 @@ -92,6 +96,11 @@ int da8xx_register_cpuidle(void); void __iomem * __init da8xx_get_mem_ctlr(void); int da850_register_pm(struct platform_device *pdev); int __init da850_register_sata(unsigned long refclkpn); +int __init da850_register_vpif(void); +int __init da850_register_vpif_display + (struct vpif_display_config *display_config); +int __init da850_register_vpif_capture + (struct vpif_capture_config *capture_config); void da8xx_restart(char mode, const char *cmd); extern struct platform_device da8xx_serial_device; @@ -126,6 +135,8 @@ extern const short da830_ecap1_pins[]; extern const short da830_ecap2_pins[]; extern const short da830_eqep0_pins[]; extern const short da830_eqep1_pins[]; +extern const short da850_vpif_capture_pins[]; +extern const short da850_vpif_display_pins[]; extern const short da850_i2c0_pins[]; extern const short da850_i2c1_pins[]; diff --git a/trunk/arch/arm/mach-davinci/include/mach/mux.h b/trunk/arch/arm/mach-davinci/include/mach/mux.h index a7e92fca32e6..9e95b8a1edb6 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/mux.h +++ b/trunk/arch/arm/mach-davinci/include/mach/mux.h @@ -928,6 +928,48 @@ enum davinci_da850_index { DA850_GPIO6_10, DA850_GPIO6_13, DA850_RTC_ALARM, + + /* VPIF Capture */ + DA850_VPIF_DIN0, + DA850_VPIF_DIN1, + DA850_VPIF_DIN2, + DA850_VPIF_DIN3, + DA850_VPIF_DIN4, + DA850_VPIF_DIN5, + DA850_VPIF_DIN6, + DA850_VPIF_DIN7, + DA850_VPIF_DIN8, + DA850_VPIF_DIN9, + DA850_VPIF_DIN10, + DA850_VPIF_DIN11, + DA850_VPIF_DIN12, + DA850_VPIF_DIN13, + DA850_VPIF_DIN14, + DA850_VPIF_DIN15, + DA850_VPIF_CLKIN0, + DA850_VPIF_CLKIN1, + DA850_VPIF_CLKIN2, + DA850_VPIF_CLKIN3, + + /* VPIF Display */ + DA850_VPIF_DOUT0, + DA850_VPIF_DOUT1, + DA850_VPIF_DOUT2, + DA850_VPIF_DOUT3, + DA850_VPIF_DOUT4, + DA850_VPIF_DOUT5, + DA850_VPIF_DOUT6, + DA850_VPIF_DOUT7, + DA850_VPIF_DOUT8, + DA850_VPIF_DOUT9, + DA850_VPIF_DOUT10, + DA850_VPIF_DOUT11, + DA850_VPIF_DOUT12, + DA850_VPIF_DOUT13, + DA850_VPIF_DOUT14, + DA850_VPIF_DOUT15, + DA850_VPIF_CLKO2, + DA850_VPIF_CLKO3, }; enum davinci_tnetv107x_index { diff --git a/trunk/arch/arm/mach-davinci/include/mach/psc.h b/trunk/arch/arm/mach-davinci/include/mach/psc.h index 405318e35bf6..40a0027838e8 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/psc.h +++ b/trunk/arch/arm/mach-davinci/include/mach/psc.h @@ -166,6 +166,7 @@ #define DA830_LPSC1_McASP1 8 #define DA850_LPSC1_SATA 8 #define DA830_LPSC1_McASP2 9 +#define DA850_LPSC1_VPIF 9 #define DA8XX_LPSC1_SPI1 10 #define DA8XX_LPSC1_I2C 11 #define DA8XX_LPSC1_UART1 12 diff --git a/trunk/arch/arm/mach-exynos/mach-nuri.c b/trunk/arch/arm/mach-exynos/mach-nuri.c index 480cd78f1920..c05d7aa84031 100644 --- a/trunk/arch/arm/mach-exynos/mach-nuri.c +++ b/trunk/arch/arm/mach-exynos/mach-nuri.c @@ -29,6 +29,7 @@ #include #include