From 238a0fb5ad7211e8152a62b729bc088e5d710a2c Mon Sep 17 00:00:00 2001 From: "Kevin F. Haggerty" Date: Mon, 17 Jul 2017 18:36:25 -0600 Subject: [PATCH] Merge tag 'v3.4.113' into lineage-16.0 This is the 3.4.113 stable release Change-Id: I80791430656359c5447a675cbff4431362d18df0 Signed-off-by: Kevin F. Haggerty --- Documentation/ABI/testing/sysfs-bus-rbd | 6 - Documentation/HOWTO | 32 +- Documentation/cgroups/cpusets.txt | 6 +- Documentation/cgroups/memory.txt | 4 + Documentation/device-mapper/verity.txt | 129 +- .../devicetree/bindings/arm/atmel-at91.txt | 2 +- .../devicetree/bindings/mmc/fsl-imx-esdhc.txt | 8 +- .../bindings/tty/serial/of-serial.txt | 3 + Documentation/dvb/get_dvb_firmware | 2 +- Documentation/hwmon/coretemp | 12 +- Documentation/i2c/busses/i2c-i801 | 2 + Documentation/i2c/busses/i2c-piix4 | 2 +- Documentation/ja_JP/HOWTO | 2 +- Documentation/ja_JP/stable_kernel_rules.txt | 6 +- Documentation/kernel-parameters.txt | 26 + Documentation/lzo.txt | 164 +++ Documentation/networking/ip-sysctl.txt | 5 + Documentation/networking/pktgen.txt | 77 +- Documentation/networking/rds.txt | 9 +- Documentation/pinctrl.txt | 12 +- Documentation/sound/alsa/HD-Audio-Models.txt | 4 +- Documentation/stable_kernel_rules.txt | 28 +- Documentation/sysctl/kernel.txt | 25 +- Documentation/x86/x86_64/mm.txt | 2 + Documentation/zh_CN/HOWTO | 2 +- Documentation/zh_CN/stable_kernel_rules.txt | 2 +- MAINTAINERS | 9 +- Makefile | 4 +- arch/alpha/include/asm/io.h | 5 + arch/alpha/kernel/pci-sysfs.c | 4 +- arch/alpha/mm/fault.c | 2 + arch/alpha/oprofile/common.c | 1 + arch/arm/Kconfig | 15 +- arch/arm/Makefile | 8 + arch/arm/boot/compressed/Makefile | 1 - arch/arm/boot/compressed/head-sa1100.S | 1 + arch/arm/boot/compressed/head-shark.S | 1 + arch/arm/boot/compressed/head.S | 2 + arch/arm/boot/dts/imx27.dtsi | 2 +- arch/arm/boot/dts/imx51-babbage.dts | 4 +- arch/arm/include/asm/a.out-core.h | 45 - arch/arm/include/asm/a.out.h | 34 - arch/arm/include/asm/cacheflush.h | 13 +- arch/arm/include/asm/div64.h | 2 +- arch/arm/include/asm/elf.h | 2 +- arch/arm/include/asm/hwcap.h | 3 +- arch/arm/include/asm/mutex.h | 127 +- arch/arm/include/asm/outercache.h | 4 +- arch/arm/include/asm/pgtable.h | 48 +- arch/arm/include/asm/processor.h | 4 - arch/arm/include/asm/signal.h | 1 + arch/arm/include/asm/uaccess.h | 3 +- arch/arm/include/asm/vfpmacros.h | 12 +- arch/arm/kernel/crash_dump.c | 2 +- arch/arm/kernel/entry-armv.S | 114 +- arch/arm/kernel/entry-header.S | 29 +- arch/arm/kernel/head.S | 3 + arch/arm/kernel/hw_breakpoint.c | 55 +- arch/arm/kernel/machine_kexec.c | 7 + arch/arm/kernel/perf_event.c | 6 +- arch/arm/kernel/perf_event_v7.c | 2 +- arch/arm/kernel/process.c | 9 +- arch/arm/kernel/signal.c | 15 +- arch/arm/kernel/smp.c | 14 +- arch/arm/kernel/stacktrace.c | 20 +- arch/arm/kernel/swp_emulate.c | 2 + arch/arm/kernel/topology.c | 2 + arch/arm/kernel/traps.c | 27 +- arch/arm/mach-at91/at91rm9200_devices.c | 2 +- arch/arm/mach-at91/at91sam9260_devices.c | 2 +- arch/arm/mach-at91/at91sam9261_devices.c | 2 +- arch/arm/mach-at91/at91sam9263_devices.c | 2 +- arch/arm/mach-at91/at91sam9rl_devices.c | 2 +- arch/arm/mach-at91/pm.h | 2 +- arch/arm/mach-at91/sam9_smc.c | 2 +- arch/arm/mach-at91/setup.c | 6 +- arch/arm/mach-cns3xxx/core.c | 16 +- arch/arm/mach-cns3xxx/include/mach/cns3xxx.h | 16 +- arch/arm/mach-dove/common.c | 2 +- arch/arm/mach-dove/include/mach/bridge-regs.h | 1 + arch/arm/mach-dove/include/mach/dove.h | 1 + arch/arm/mach-dove/include/mach/pm.h | 2 +- arch/arm/mach-dove/irq.c | 14 +- arch/arm/mach-footbridge/common.c | 3 + arch/arm/mach-footbridge/dc21285.c | 2 - arch/arm/mach-imx/crm-regs-imx5.h | 2 +- arch/arm/mach-imx/hotplug.c | 31 +- arch/arm/mach-imx/mach-mx21ads.c | 2 +- arch/arm/mach-integrator/integrator_cp.c | 3 +- arch/arm/mach-ixp4xx/common.c | 48 +- arch/arm/mach-ixp4xx/include/mach/gpio.h | 79 +- arch/arm/mach-kirkwood/common.c | 4 +- .../mach-kirkwood/include/mach/bridge-regs.h | 1 + .../arm/mach-kirkwood/include/mach/kirkwood.h | 1 + arch/arm/mach-kirkwood/pcie.c | 11 +- arch/arm/mach-kirkwood/ts219-setup.c | 2 +- arch/arm/mach-mv78xx0/common.c | 6 +- .../mach-mv78xx0/include/mach/bridge-regs.h | 1 + arch/arm/mach-mv78xx0/include/mach/mv78xx0.h | 2 + arch/arm/mach-omap2/board-rx51-peripherals.c | 4 +- arch/arm/mach-omap2/irq.c | 8 + arch/arm/mach-omap2/mux.c | 6 +- arch/arm/mach-omap2/omap_hwmod.c | 43 +- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 17 +- arch/arm/mach-omap2/opp.c | 3 +- arch/arm/mach-orion5x/common.c | 3 +- .../mach-orion5x/include/mach/bridge-regs.h | 2 +- arch/arm/mach-orion5x/include/mach/orion5x.h | 1 + arch/arm/mach-pxa/Kconfig | 9 + arch/arm/mach-pxa/Makefile | 1 + arch/arm/mach-pxa/corgi.c | 3 + arch/arm/mach-pxa/hx4700.c | 2 + arch/arm/mach-pxa/include/mach/lubbock.h | 7 +- arch/arm/mach-pxa/include/mach/mainstone.h | 6 +- arch/arm/mach-pxa/include/mach/mfp-pxa27x.h | 3 + arch/arm/mach-pxa/include/mach/pxa27x.h | 2 +- arch/arm/mach-pxa/include/mach/smemc.h | 1 + arch/arm/mach-pxa/lubbock.c | 108 +- arch/arm/mach-pxa/mainstone.c | 115 +- arch/arm/mach-pxa/poodle.c | 2 + arch/arm/mach-pxa/pxa27x.c | 6 +- arch/arm/mach-pxa/pxa_cplds_irqs.c | 200 +++ arch/arm/mach-pxa/raumfeld.c | 2 +- arch/arm/mach-pxa/reset.c | 8 +- arch/arm/mach-pxa/smemc.c | 15 +- arch/arm/mach-pxa/spitz.c | 2 + arch/arm/mach-pxa/tosa.c | 102 +- .../arm/mach-realview/include/mach/board-eb.h | 2 +- .../mach-s3c24xx/include/mach/debug-macro.S | 12 +- arch/arm/mach-s3c24xx/include/mach/dma.h | 3 +- .../mach-s3c24xx/include/mach/entry-macro.S | 4 +- arch/arm/mach-s3c24xx/pm-h1940.S | 2 +- arch/arm/mach-s3c24xx/sleep-s3c2410.S | 12 +- arch/arm/mach-s3c24xx/sleep-s3c2412.S | 12 +- arch/arm/mach-sa1100/assabet.c | 3 + arch/arm/mach-sa1100/include/mach/collie.h | 2 + arch/arm/mach-sa1100/pm.c | 1 + arch/arm/mach-shmobile/board-mackerel.c | 4 +- arch/arm/mach-tegra/reset.c | 2 +- arch/arm/mach-u300/include/mach/u300-regs.h | 2 +- arch/arm/mach-versatile/pci.c | 6 +- .../mach-w90x900/include/mach/entry-macro.S | 4 +- arch/arm/mm/abort-ev6.S | 6 - arch/arm/mm/abort-ev7.S | 6 - arch/arm/mm/alignment.c | 14 +- arch/arm/mm/cache-feroceon-l2.c | 1 + arch/arm/mm/cache-v7.S | 3 + arch/arm/mm/flush.c | 35 +- arch/arm/mm/idmap.c | 7 + arch/arm/mm/init.c | 3 + arch/arm/mm/mmu.c | 2 +- arch/arm/mm/nommu.c | 6 + arch/arm/mm/proc-arm920.S | 2 +- arch/arm/mm/proc-arm926.S | 2 +- arch/arm/mm/proc-sa1100.S | 2 +- arch/arm/mm/proc-v6.S | 5 +- arch/arm/mm/proc-v7.S | 6 +- arch/arm/mm/proc-xsc3.S | 2 +- arch/arm/mm/proc-xscale.S | 6 +- arch/arm/mm/tlb-v7.S | 12 +- arch/arm/net/bpf_jit_32.c | 27 +- arch/arm/plat-omap/counter_32k.c | 21 +- arch/arm/plat-omap/dmtimer.c | 2 +- arch/arm/plat-orion/common.c | 22 +- arch/arm/plat-orion/include/plat/common.h | 6 +- arch/arm/plat-s3c24xx/dma.c | 2 +- arch/arm/plat-s5p/clock.c | 1 + arch/arm/plat-samsung/adc.c | 8 +- .../plat-samsung/include/plat/debug-macro.S | 18 +- arch/arm/plat-samsung/include/plat/map-s3c.h | 2 +- .../include/plat/watchdog-reset.h | 2 +- arch/arm/vfp/entry.S | 22 +- arch/arm/vfp/vfphw.S | 23 +- arch/arm/vfp/vfpmodule.c | 13 +- arch/avr32/Makefile | 2 +- arch/avr32/boards/mimc200/fram.c | 1 + arch/avr32/boot/u-boot/head.S | 35 +- arch/avr32/kernel/entry-avr32b.S | 3 +- arch/avr32/kernel/head.S | 20 - arch/avr32/mm/fault.c | 2 + arch/c6x/kernel/time.c | 2 +- arch/cris/include/asm/io.h | 1 + arch/cris/mm/fault.c | 2 + arch/frv/mm/fault.c | 2 + arch/ia64/include/asm/processor.h | 2 +- arch/ia64/mm/fault.c | 2 + arch/m32r/mm/fault.c | 2 + arch/m68k/include/asm/linkage.h | 30 + arch/m68k/mm/fault.c | 2 + arch/m68k/mm/hwtest.c | 6 + arch/microblaze/mm/fault.c | 2 + arch/mips/boot/compressed/decompress.c | 1 + arch/mips/cavium-octeon/setup.c | 18 +- arch/mips/include/asm/atomic.h | 2 +- arch/mips/include/asm/jump_label.h | 2 +- arch/mips/include/asm/pgtable.h | 31 + arch/mips/kernel/irq-msc01.c | 2 +- arch/mips/kernel/irq.c | 2 +- arch/mips/kernel/irq_cpu.c | 4 + arch/mips/kernel/mcount.S | 12 + arch/mips/kernel/mips-mt-fpaff.c | 5 +- arch/mips/kernel/perf_event_mipsxx.c | 5 - arch/mips/kernel/smp.c | 2 +- arch/mips/loongson/common/Makefile | 3 +- arch/mips/mm/c-r4k.c | 5 + arch/mips/mm/dma-default.c | 18 +- arch/mips/mm/fault.c | 2 + arch/mips/mm/tlbex.c | 5 + arch/mips/oprofile/backtrace.c | 2 +- arch/mips/power/hibernate.S | 2 + arch/mn10300/mm/fault.c | 2 + arch/openrisc/kernel/head.S | 1 + arch/openrisc/mm/fault.c | 2 + arch/parisc/Makefile | 7 +- arch/parisc/kernel/head.S | 4 + arch/parisc/kernel/signal.c | 67 +- arch/parisc/kernel/syscall_table.S | 2 +- arch/parisc/mm/fault.c | 2 + arch/powerpc/Makefile | 4 +- arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi | 1 + arch/powerpc/include/asm/exception-64s.h | 2 +- arch/powerpc/include/asm/jump_label.h | 2 +- arch/powerpc/include/asm/ppc_asm.h | 7 +- arch/powerpc/include/asm/rtas.h | 1 + arch/powerpc/kernel/cacheinfo.c | 44 +- arch/powerpc/kernel/crash_dump.c | 8 +- arch/powerpc/kernel/entry_64.S | 6 + arch/powerpc/kernel/exceptions-64s.S | 2 +- arch/powerpc/kernel/head_64.S | 1 + arch/powerpc/kernel/lparcfg.c | 24 +- arch/powerpc/kernel/pci_of_scan.c | 4 +- arch/powerpc/kernel/reloc_64.S | 1 + arch/powerpc/kernel/rtas.c | 20 + arch/powerpc/kernel/setup_64.c | 2 +- arch/powerpc/kernel/signal_32.c | 6 + arch/powerpc/kernel/signal_64.c | 6 + arch/powerpc/kernel/sysfs.c | 18 +- arch/powerpc/kernel/time.c | 6 +- arch/powerpc/kernel/traps.c | 10 + arch/powerpc/kernel/vmlinux.lds.S | 1 + arch/powerpc/kvm/book3s_64_mmu_hv.c | 6 +- arch/powerpc/kvm/book3s_hv_rm_mmu.c | 4 + arch/powerpc/kvm/emulate.c | 2 + arch/powerpc/lib/checksum_64.S | 54 +- arch/powerpc/lib/crtsavres.S | 186 +++ arch/powerpc/lib/sstep.c | 2 +- arch/powerpc/mm/fault.c | 6 +- arch/powerpc/perf/callchain.c | 2 +- arch/powerpc/perf/core-book3s.c | 17 +- arch/powerpc/platforms/cell/spu_fault.c | 2 +- arch/powerpc/platforms/cell/spufs/inode.c | 4 +- arch/powerpc/platforms/powernv/pci-ioda.c | 16 +- arch/powerpc/platforms/powernv/pci.c | 4 +- arch/powerpc/platforms/pseries/dlpar.c | 13 +- arch/powerpc/platforms/pseries/eeh_pseries.c | 1 + arch/powerpc/platforms/pseries/ras.c | 3 +- arch/powerpc/sysdev/axonram.c | 2 +- arch/powerpc/sysdev/fsl_msi.c | 5 +- arch/powerpc/sysdev/mpic_pasemi_msi.c | 5 +- arch/powerpc/sysdev/mpic_u3msi.c | 5 +- arch/powerpc/sysdev/ppc4xx_msi.c | 5 +- arch/powerpc/xmon/xmon.c | 7 +- arch/s390/crypto/aes_s390.c | 50 +- arch/s390/crypto/ghash_s390.c | 26 +- arch/s390/include/asm/jump_label.h | 2 +- arch/s390/include/asm/lowcore.h | 11 +- arch/s390/kernel/head64.S | 7 +- arch/s390/kernel/process.c | 2 +- arch/s390/kernel/ptrace.c | 9 +- arch/s390/kernel/sclp.S | 4 + arch/s390/kernel/suspend.c | 6 + arch/s390/kvm/interrupt.c | 1 + arch/s390/kvm/kvm-s390.c | 27 +- arch/s390/kvm/priv.c | 1 + arch/s390/mm/fault.c | 6 + arch/s390/mm/page-states.c | 10 + arch/score/mm/fault.c | 2 + arch/sh/kernel/dumpstack.c | 2 +- arch/sh/lib/Makefile | 2 +- arch/sh/mm/fault_32.c | 2 + arch/sh/mm/tlbflush_64.c | 2 + arch/sparc/Kconfig | 2 +- arch/sparc/include/asm/jump_label.h | 2 +- arch/sparc/include/asm/pgtable_64.h | 6 +- arch/sparc/include/asm/tlbflush_64.h | 11 +- arch/sparc/include/asm/uaccess_64.h | 4 +- arch/sparc/kernel/ldc.c | 2 +- arch/sparc/kernel/pci.c | 16 +- arch/sparc/kernel/smp_64.c | 6 +- arch/sparc/kernel/sys32.S | 2 +- arch/sparc/kernel/syscalls.S | 4 +- arch/sparc/kernel/unaligned_64.c | 12 +- arch/sparc/lib/NG2memcpy.S | 1 + arch/sparc/math-emu/math_32.c | 2 +- arch/sparc/mm/fault_32.c | 2 + arch/sparc/mm/fault_64.c | 102 +- arch/sparc/mm/init_64.c | 27 + arch/sparc/mm/tsb.c | 14 +- arch/tile/kernel/setup.c | 2 +- arch/tile/mm/fault.c | 2 + arch/um/kernel/exitcode.c | 4 +- arch/um/kernel/trap.c | 2 + arch/unicore32/Kconfig | 1 + arch/unicore32/include/asm/bug.h | 5 - arch/unicore32/include/asm/cmpxchg.h | 2 +- arch/unicore32/kernel/setup.h | 6 + arch/x86/Kconfig | 28 +- arch/x86/boot/Makefile | 6 +- arch/x86/boot/compressed/Makefile | 1 + arch/x86/crypto/aesni-intel_glue.c | 4 +- arch/x86/crypto/ghash-clmulni-intel_asm.S | 28 - arch/x86/crypto/ghash-clmulni-intel_glue.c | 15 +- arch/x86/include/asm/cpufeature.h | 2 +- arch/x86/include/asm/desc.h | 35 +- arch/x86/include/asm/elf.h | 5 +- arch/x86/include/asm/espfix.h | 16 + arch/x86/include/asm/fpu-internal.h | 13 +- arch/x86/include/asm/hugetlb.h | 1 + arch/x86/include/asm/i387.h | 28 +- arch/x86/include/asm/iommu_table.h | 11 +- arch/x86/include/asm/irqflags.h | 2 +- arch/x86/include/asm/jump_label.h | 2 +- arch/x86/include/asm/kvm_host.h | 24 +- arch/x86/include/asm/ldt.h | 7 + arch/x86/include/asm/mmu.h | 3 +- arch/x86/include/asm/mmu_context.h | 49 +- arch/x86/include/asm/msr-index.h | 2 + arch/x86/include/asm/page_32_types.h | 1 - arch/x86/include/asm/page_64_types.h | 11 +- arch/x86/include/asm/pgtable_64_types.h | 2 + arch/x86/include/asm/ptrace.h | 16 + arch/x86/include/asm/setup.h | 2 + arch/x86/include/asm/topology.h | 3 +- arch/x86/include/asm/vmx.h | 2 + arch/x86/include/asm/xen/hypervisor.h | 2 + arch/x86/kernel/Makefile | 1 + arch/x86/kernel/apic/apic.c | 4 +- arch/x86/kernel/cpu/amd.c | 10 + arch/x86/kernel/cpu/common.c | 6 +- arch/x86/kernel/cpu/intel.c | 15 + arch/x86/kernel/cpu/mcheck/mce.c | 5 +- arch/x86/kernel/cpu/mshyperv.c | 1 + arch/x86/kernel/cpu/perf_event.c | 3 + arch/x86/kernel/cpu/perf_event_amd_ibs.c | 53 +- arch/x86/kernel/cpu/perf_event_intel.c | 9 + arch/x86/kernel/crash.c | 2 +- arch/x86/kernel/dumpstack_64.c | 1 - arch/x86/kernel/entry_32.S | 30 +- arch/x86/kernel/entry_64.S | 101 +- arch/x86/kernel/espfix_64.c | 208 +++ arch/x86/kernel/head_64.S | 8 + arch/x86/kernel/i387.c | 13 +- arch/x86/kernel/kprobes.c | 20 +- arch/x86/kernel/kvm.c | 9 +- arch/x86/kernel/kvmclock.c | 1 - arch/x86/kernel/ldt.c | 266 ++-- arch/x86/kernel/microcode_amd.c | 2 +- arch/x86/kernel/paravirt_patch_64.c | 2 - arch/x86/kernel/process_64.c | 171 ++- arch/x86/kernel/quirks.c | 2 +- arch/x86/kernel/reboot.c | 29 +- arch/x86/kernel/signal.c | 17 +- arch/x86/kernel/smpboot.c | 10 + arch/x86/kernel/step.c | 61 +- arch/x86/kernel/sys_x86_64.c | 2 +- arch/x86/kernel/tls.c | 62 +- arch/x86/kernel/traps.c | 71 +- arch/x86/kernel/tsc.c | 22 +- arch/x86/kernel/verify_cpu.S | 12 +- arch/x86/kvm/emulate.c | 256 +++- arch/x86/kvm/i8254.c | 4 +- arch/x86/kvm/lapic.c | 32 +- arch/x86/kvm/lapic.h | 4 +- arch/x86/kvm/mmu.c | 7 +- arch/x86/kvm/svm.c | 36 +- arch/x86/kvm/trace.h | 1 + arch/x86/kvm/vmx.c | 68 +- arch/x86/kvm/x86.c | 85 +- arch/x86/kvm/x86.h | 20 +- arch/x86/math-emu/fpu_entry.c | 3 +- arch/x86/math-emu/fpu_system.h | 21 +- arch/x86/math-emu/get_address.c | 3 +- arch/x86/mm/dump_pagetables.c | 37 +- arch/x86/mm/fault.c | 2 + arch/x86/mm/ioremap.c | 26 +- arch/x86/mm/mmap.c | 12 +- arch/x86/net/bpf_jit.S | 2 +- arch/x86/net/bpf_jit_comp.c | 7 +- arch/x86/pci/acpi.c | 11 + arch/x86/platform/efi/efi.c | 113 +- arch/x86/power/cpu.c | 3 +- arch/x86/syscalls/syscall_64.tbl | 6 +- arch/x86/um/sys_call_table_32.c | 2 +- arch/x86/um/sys_call_table_64.c | 2 +- arch/x86/vdso/vdso32/sigreturn.S | 1 + arch/x86/vdso/vma.c | 36 +- arch/x86/xen/enlighten.c | 46 +- arch/x86/xen/setup.c | 2 +- arch/x86/xen/smp.c | 2 + arch/xtensa/include/asm/ioctls.h | 19 +- arch/xtensa/include/asm/pgtable.h | 7 +- arch/xtensa/include/asm/unistd.h | 3 +- arch/xtensa/kernel/entry.S | 14 +- arch/xtensa/kernel/pci-dma.c | 12 +- arch/xtensa/kernel/signal.c | 2 +- arch/xtensa/mm/fault.c | 2 + block/blk-core.c | 9 +- block/blk-exec.c | 12 +- block/blk-lib.c | 8 + block/blk-settings.c | 5 +- block/blk-sysfs.c | 2 + block/blk-tag.c | 33 +- block/blk-timeout.c | 3 +- block/elevator.c | 16 +- block/genhd.c | 42 +- block/partition-generic.c | 2 +- block/partitions/mac.c | 10 +- block/scsi_ioctl.c | 8 +- crypto/ablkcipher.c | 16 +- crypto/aead.c | 9 +- crypto/af_alg.c | 5 + crypto/ahash.c | 5 +- crypto/algapi.c | 5 +- crypto/algif_hash.c | 15 +- crypto/algif_skcipher.c | 3 + crypto/api.c | 6 +- crypto/authenc.c | 7 +- crypto/blkcipher.c | 8 +- crypto/ccm.c | 3 +- crypto/cryptd.c | 11 +- crypto/crypto_user.c | 22 +- crypto/crypto_wq.c | 2 +- crypto/gcm.c | 17 +- crypto/pcompress.c | 3 +- crypto/rng.c | 2 +- crypto/shash.c | 3 +- crypto/testmgr.h | 38 +- drivers/acpi/ac.c | 4 +- drivers/acpi/acpi_ipmi.c | 24 +- drivers/acpi/acpi_memhotplug.c | 1 + drivers/acpi/acpi_pad.c | 7 +- drivers/acpi/acpica/exfldio.c | 14 +- drivers/acpi/acpica/exoparg1.c | 50 +- drivers/acpi/acpica/exstore.c | 155 ++- drivers/acpi/acpica/hwsleep.c | 22 - drivers/acpi/acpica/nspredef.c | 2 +- drivers/acpi/acpica/tbxface.c | 1 + drivers/acpi/acpica/utxface.c | 10 +- drivers/acpi/apei/apei-base.c | 22 +- drivers/acpi/apei/apei-internal.h | 9 + drivers/acpi/apei/ghes.c | 6 +- drivers/acpi/battery.c | 116 +- drivers/acpi/blacklist.c | 13 + drivers/acpi/bus.c | 24 +- drivers/acpi/ec.c | 42 +- drivers/acpi/osl.c | 11 +- drivers/acpi/pci_root.c | 4 +- drivers/acpi/power.c | 36 +- drivers/acpi/processor_core.c | 6 +- drivers/acpi/processor_driver.c | 3 +- drivers/acpi/processor_idle.c | 8 +- drivers/acpi/processor_throttling.c | 69 +- drivers/acpi/scan.c | 9 +- drivers/acpi/sleep.c | 352 ++--- drivers/acpi/sysfs.c | 4 +- drivers/acpi/video.c | 83 +- drivers/acpi/video_detect.c | 45 + drivers/ata/Kconfig | 2 +- drivers/ata/ahci.c | 185 ++- drivers/ata/ahci.h | 1 + drivers/ata/ata_piix.c | 118 +- drivers/ata/libahci.c | 34 +- drivers/ata/libata-core.c | 94 +- drivers/ata/libata-eh.c | 10 +- drivers/ata/libata-pmp.c | 59 +- drivers/ata/libata-scsi.c | 9 +- drivers/ata/libata-sff.c | 32 +- drivers/ata/libata-transport.c | 16 +- drivers/ata/pata_at91.c | 11 +- drivers/ata/pata_scc.c | 15 +- drivers/ata/pata_serverworks.c | 13 +- drivers/ata/sata_dwc_460ex.c | 26 +- drivers/ata/sata_fsl.c | 2 +- drivers/ata/sata_inic162x.c | 14 + drivers/ata/sata_promise.c | 15 +- drivers/ata/sata_sil.c | 4 + drivers/ata/sata_sil24.c | 2 +- drivers/ata/sata_svw.c | 35 + drivers/atm/ambassador.c | 2 +- drivers/atm/idt77252.c | 4 +- drivers/atm/iphase.h | 146 +-- drivers/atm/solos-pci.c | 9 +- drivers/auxdisplay/ks0108.c | 1 + drivers/base/bus.c | 12 +- drivers/base/core.c | 121 +- drivers/base/dd.c | 19 + drivers/base/devres.c | 4 +- drivers/base/firmware_class.c | 3 + drivers/base/memory.c | 2 + drivers/base/platform.c | 8 +- drivers/base/power/main.c | 2 +- drivers/base/power/qos.c | 2 +- drivers/base/power/runtime.c | 5 +- drivers/base/regmap/regcache-rbtree.c | 2 +- drivers/base/regmap/regmap-debugfs.c | 14 +- drivers/base/regmap/regmap.c | 11 +- drivers/bcma/driver_chipcommon_pmu.c | 4 +- drivers/bcma/driver_mips.c | 2 +- drivers/bcma/main.c | 5 +- drivers/bcma/sprom.c | 4 +- drivers/block/aoe/aoe.h | 2 +- drivers/block/aoe/aoeblk.c | 5 - drivers/block/aoe/aoecmd.c | 4 +- drivers/block/brd.c | 6 +- drivers/block/cciss.c | 33 +- drivers/block/cciss_scsi.c | 12 +- drivers/block/cpqarray.c | 1 + drivers/block/drbd/drbd_receiver.c | 1 - drivers/block/drbd/drbd_req.c | 2 + drivers/block/floppy.c | 23 +- drivers/block/loop.c | 39 +- drivers/block/nbd.c | 37 +- drivers/block/nvme.c | 2 +- drivers/block/rbd.c | 324 ++--- drivers/block/sunvdc.c | 2 +- drivers/block/umem.c | 40 + drivers/block/virtio_blk.c | 29 +- drivers/block/xen-blkback/blkback.c | 71 +- drivers/block/xen-blkback/common.h | 37 +- drivers/block/xen-blkback/xenbus.c | 51 +- drivers/block/xen-blkfront.c | 8 +- drivers/bluetooth/ath3k.c | 78 ++ drivers/bluetooth/btusb.c | 76 +- drivers/bluetooth/hci_ldisc.c | 25 +- drivers/bluetooth/hci_uart.h | 2 + drivers/cdrom/cdrom.c | 2 +- drivers/char/agp/intel-agp.c | 1 + drivers/char/agp/intel-agp.h | 1 + drivers/char/agp/intel-gtt.c | 2 +- drivers/char/applicom.c | 1 - drivers/char/hpet.c | 14 +- drivers/char/hw_random/atmel-rng.c | 9 +- drivers/char/hw_random/core.c | 19 +- drivers/char/hw_random/virtio-rng.c | 13 +- drivers/char/i8k.c | 7 + drivers/char/ipmi/ipmi_bt_sm.c | 6 +- drivers/char/ipmi/ipmi_devintf.c | 14 +- drivers/char/ipmi/ipmi_kcs_sm.c | 5 +- drivers/char/ipmi/ipmi_si_intf.c | 48 +- drivers/char/mspec.c | 2 +- drivers/char/random.c | 387 ++++-- drivers/char/raw.c | 2 +- drivers/char/tpm/tpm.c | 33 +- drivers/char/ttyprintk.c | 2 +- drivers/char/virtio_console.c | 93 +- drivers/clk/clk.c | 37 +- drivers/connector/cn_proc.c | 90 +- drivers/connector/connector.c | 7 +- drivers/cpufreq/cpufreq.c | 23 +- drivers/cpufreq/longhaul.c | 10 +- drivers/cpufreq/powernow-k6.c | 149 ++- drivers/cpufreq/powernow-k8.c | 56 +- drivers/cpufreq/speedstep-lib.c | 3 + drivers/cpufreq/speedstep-smi.c | 12 + drivers/crypto/caam/error.c | 10 +- drivers/crypto/ixp4xx_crypto.c | 1 - drivers/crypto/talitos.c | 1 + drivers/dca/dca-core.c | 5 + drivers/dma/Kconfig | 1 + drivers/dma/at_hdmac.c | 13 +- drivers/dma/dmaengine.c | 2 +- drivers/dma/imx-dma.c | 27 +- drivers/dma/ioat/dma_v3.c | 2 +- drivers/dma/mv_xor.c | 72 +- drivers/dma/mv_xor.h | 1 + drivers/dma/pch_dma.c | 2 +- drivers/dma/pl330.c | 27 +- drivers/dma/sirf-dma.c | 4 +- drivers/dma/ste_dma40.c | 4 +- drivers/edac/amd64_edac.c | 11 +- drivers/edac/e752x_edac.c | 4 +- drivers/edac/edac_pci_sysfs.c | 2 +- drivers/edac/i7300_edac.c | 46 +- drivers/edac/i7core_edac.c | 24 +- drivers/edac/i82975x_edac.c | 11 +- drivers/edac/mpc85xx_edac.c | 3 +- drivers/edac/ppc4xx_edac.c | 2 +- drivers/edac/sb_edac.c | 55 +- drivers/eisa/pci_eisa.c | 69 +- drivers/firewire/core-cdev.c | 10 +- drivers/firewire/core-device.c | 26 +- drivers/firewire/net.c | 19 +- drivers/firewire/ohci.c | 15 +- drivers/firewire/sbp2.c | 17 +- drivers/firmware/Kconfig | 18 + drivers/firmware/dmi_scan.c | 82 +- drivers/firmware/efivars.c | 370 ++++-- drivers/firmware/iscsi_ibft_find.c | 2 +- drivers/firmware/pcdp.c | 4 +- drivers/gpio/gpio-lpc32xx.c | 5 + drivers/gpio/gpio-mpc8xxx.c | 11 +- drivers/gpio/gpio-mxs.c | 3 +- drivers/gpio/gpio-timberdale.c | 4 +- drivers/gpio/gpio-tps65912.c | 14 +- drivers/gpio/gpio-wm8994.c | 5 +- drivers/gpio/gpiolib.c | 155 ++- drivers/gpu/drm/drm_crtc.c | 22 +- drivers/gpu/drm/drm_crtc_helper.c | 4 +- drivers/gpu/drm/drm_drv.c | 9 +- drivers/gpu/drm/drm_edid.c | 41 +- drivers/gpu/drm/drm_fops.c | 5 +- drivers/gpu/drm/drm_irq.c | 6 +- drivers/gpu/drm/drm_mm.c | 34 +- drivers/gpu/drm/drm_usb.c | 2 +- drivers/gpu/drm/gma500/cdv_intel_display.c | 14 + drivers/gpu/drm/gma500/framebuffer.c | 4 +- drivers/gpu/drm/gma500/psb_device.c | 6 +- drivers/gpu/drm/gma500/psb_drv.c | 2 +- drivers/gpu/drm/gma500/psb_intel_display.c | 14 + drivers/gpu/drm/i915/i915_debugfs.c | 8 +- drivers/gpu/drm/i915/i915_dma.c | 37 +- drivers/gpu/drm/i915/i915_drv.c | 10 + drivers/gpu/drm/i915/i915_drv.h | 14 +- drivers/gpu/drm/i915/i915_gem.c | 46 +- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 32 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 2 +- drivers/gpu/drm/i915/i915_irq.c | 114 +- drivers/gpu/drm/i915/i915_reg.h | 45 +- drivers/gpu/drm/i915/i915_suspend.c | 5 +- drivers/gpu/drm/i915/intel_bios.c | 49 +- drivers/gpu/drm/i915/intel_crt.c | 46 +- drivers/gpu/drm/i915/intel_display.c | 412 ++++-- drivers/gpu/drm/i915/intel_dp.c | 54 +- drivers/gpu/drm/i915/intel_drv.h | 11 +- drivers/gpu/drm/i915/intel_dvo.c | 13 +- drivers/gpu/drm/i915/intel_hdmi.c | 13 +- drivers/gpu/drm/i915/intel_lvds.c | 72 +- drivers/gpu/drm/i915/intel_modes.c | 31 +- drivers/gpu/drm/i915/intel_opregion.c | 25 +- drivers/gpu/drm/i915/intel_overlay.c | 14 +- drivers/gpu/drm/i915/intel_panel.c | 31 +- drivers/gpu/drm/i915/intel_ringbuffer.c | 39 +- drivers/gpu/drm/i915/intel_sdvo.c | 143 ++- drivers/gpu/drm/i915/intel_sdvo_regs.h | 7 + drivers/gpu/drm/i915/intel_tv.c | 53 + drivers/gpu/drm/nouveau/nouveau_acpi.c | 3 - drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +- drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +- drivers/gpu/drm/nouveau/nouveau_display.c | 2 +- drivers/gpu/drm/nouveau/nouveau_drv.c | 20 +- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 2 +- drivers/gpu/drm/nouveau/nouveau_gem.c | 8 +- drivers/gpu/drm/nouveau/nouveau_state.c | 4 +- drivers/gpu/drm/nouveau/nv04_dac.c | 8 +- drivers/gpu/drm/nouveau/nv04_dfp.c | 8 +- drivers/gpu/drm/nouveau/nv04_tv.c | 4 +- drivers/gpu/drm/nouveau/nva3_copy.fuc | 4 +- drivers/gpu/drm/nouveau/nva3_copy.fuc.h | 94 +- drivers/gpu/drm/nouveau/nvc0_copy.fuc.h | 87 +- drivers/gpu/drm/nouveau/nvd0_display.c | 2 +- drivers/gpu/drm/radeon/atom.c | 11 +- drivers/gpu/drm/radeon/atombios_crtc.c | 140 +- drivers/gpu/drm/radeon/atombios_dp.c | 57 +- drivers/gpu/drm/radeon/atombios_encoders.c | 160 ++- drivers/gpu/drm/radeon/atombios_i2c.c | 4 +- drivers/gpu/drm/radeon/evergreen.c | 398 +++--- drivers/gpu/drm/radeon/evergreen_cs.c | 59 +- drivers/gpu/drm/radeon/evergreen_reg.h | 4 + drivers/gpu/drm/radeon/evergreend.h | 17 + drivers/gpu/drm/radeon/ni.c | 86 +- drivers/gpu/drm/radeon/nid.h | 4 + drivers/gpu/drm/radeon/r100.c | 13 +- drivers/gpu/drm/radeon/r300.c | 9 +- drivers/gpu/drm/radeon/r300_cmdbuf.c | 2 +- drivers/gpu/drm/radeon/r420.c | 10 +- drivers/gpu/drm/radeon/r520.c | 9 +- drivers/gpu/drm/radeon/r600.c | 30 +- drivers/gpu/drm/radeon/r600_audio.c | 5 +- drivers/gpu/drm/radeon/r600_cs.c | 5 +- drivers/gpu/drm/radeon/r600_hdmi.c | 4 +- drivers/gpu/drm/radeon/r600d.h | 2 + drivers/gpu/drm/radeon/radeon.h | 15 - drivers/gpu/drm/radeon/radeon_agp.c | 5 +- drivers/gpu/drm/radeon/radeon_asic.h | 9 +- drivers/gpu/drm/radeon/radeon_atombios.c | 51 +- drivers/gpu/drm/radeon/radeon_atpx_handler.c | 63 +- drivers/gpu/drm/radeon/radeon_benchmark.c | 16 +- drivers/gpu/drm/radeon/radeon_bios.c | 148 ++- drivers/gpu/drm/radeon/radeon_combios.c | 304 +++-- drivers/gpu/drm/radeon/radeon_connectors.c | 84 +- drivers/gpu/drm/radeon/radeon_cs.c | 39 +- drivers/gpu/drm/radeon/radeon_cursor.c | 11 +- drivers/gpu/drm/radeon/radeon_device.c | 39 +- drivers/gpu/drm/radeon/radeon_display.c | 25 +- drivers/gpu/drm/radeon/radeon_drv.c | 3 +- drivers/gpu/drm/radeon/radeon_gart.c | 32 +- drivers/gpu/drm/radeon/radeon_i2c.c | 13 +- drivers/gpu/drm/radeon/radeon_irq_kms.c | 17 + drivers/gpu/drm/radeon/radeon_kms.c | 6 + drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 32 + .../gpu/drm/radeon/radeon_legacy_encoders.c | 15 +- drivers/gpu/drm/radeon/radeon_mode.h | 5 +- drivers/gpu/drm/radeon/radeon_pm.c | 20 +- drivers/gpu/drm/radeon/radeon_ring.c | 3 + drivers/gpu/drm/radeon/radeon_ttm.c | 4 +- drivers/gpu/drm/radeon/reg_srcs/cayman | 1 + drivers/gpu/drm/radeon/rs400.c | 18 +- drivers/gpu/drm/radeon/rs600.c | 19 +- drivers/gpu/drm/radeon/rs690.c | 9 +- drivers/gpu/drm/radeon/rv515.c | 22 +- drivers/gpu/drm/radeon/rv770.c | 28 +- drivers/gpu/drm/radeon/rv770d.h | 4 + drivers/gpu/drm/radeon/si.c | 56 +- drivers/gpu/drm/radeon/sid.h | 9 +- drivers/gpu/drm/savage/savage_bci.c | 2 + drivers/gpu/drm/sis/sis_drv.c | 2 +- drivers/gpu/drm/ttm/ttm_bo.c | 54 +- drivers/gpu/drm/ttm/ttm_bo_util.c | 4 +- drivers/gpu/drm/ttm/ttm_page_alloc.c | 5 +- drivers/gpu/drm/ttm/ttm_tt.c | 2 +- drivers/gpu/drm/udl/udl_connector.c | 28 +- drivers/gpu/drm/udl/udl_drv.c | 15 +- drivers/gpu/drm/udl/udl_drv.h | 4 +- drivers/gpu/drm/udl/udl_fb.c | 58 +- drivers/gpu/drm/udl/udl_transfer.c | 5 +- drivers/gpu/drm/via/via_map.c | 3 +- drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 57 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 10 + drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 40 +- drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 3 +- drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | 58 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 22 +- drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 73 ++ drivers/gpu/vga/vga_switcheroo.c | 3 + drivers/gpu/vga/vgaarb.c | 6 +- drivers/hid/hid-apple.c | 31 + drivers/hid/hid-chicony.c | 1 + drivers/hid/hid-core.c | 59 +- drivers/hid/hid-cypress.c | 2 + drivers/hid/hid-ids.h | 37 + drivers/hid/hid-input.c | 27 +- drivers/hid/hid-lg.c | 2 +- drivers/hid/hid-lg2ff.c | 19 +- drivers/hid/hid-lg3ff.c | 29 +- drivers/hid/hid-lg4ff.c | 20 +- drivers/hid/hid-lgff.c | 17 +- drivers/hid/hid-logitech-dj.c | 146 ++- drivers/hid/hid-logitech-dj.h | 2 + drivers/hid/hid-microsoft.c | 18 +- drivers/hid/hid-multitouch.c | 67 +- drivers/hid/hid-roccat-kovaplus.c | 4 + drivers/hid/hid-roccat-pyra.c | 7 + drivers/hid/hid-sony.c | 18 +- drivers/hid/hid-speedlink.c | 11 +- drivers/hid/hid-wiimote-core.c | 16 +- drivers/hid/hid-wiimote-ext.c | 8 +- drivers/hid/hidraw.c | 98 +- drivers/hid/usbhid/hid-core.c | 61 +- drivers/hid/usbhid/hid-quirks.c | 9 + drivers/hv/channel.c | 74 +- drivers/hv/channel_mgmt.c | 12 +- drivers/hv/connection.c | 17 +- drivers/hv/ring_buffer.c | 4 +- drivers/hv/vmbus_drv.c | 10 +- drivers/hwmon/abituguru.c | 16 +- drivers/hwmon/ad7314.c | 8 + drivers/hwmon/adm1021.c | 58 +- drivers/hwmon/adm1029.c | 3 + drivers/hwmon/ads7871.c | 9 + drivers/hwmon/adt7470.c | 2 +- drivers/hwmon/amc6821.c | 2 +- drivers/hwmon/applesmc.c | 28 +- drivers/hwmon/asus_atk0110.c | 6 + drivers/hwmon/coretemp.c | 40 +- drivers/hwmon/emc1403.c | 4 +- drivers/hwmon/fam15h_power.c | 19 +- drivers/hwmon/it87.c | 2 +- drivers/hwmon/lineage-pem.c | 2 + drivers/hwmon/lm73.c | 16 +- drivers/hwmon/lm78.c | 2 + drivers/hwmon/lm90.c | 11 +- drivers/hwmon/max1668.c | 2 +- drivers/hwmon/pmbus/ltc2978.c | 40 +- drivers/hwmon/sht15.c | 8 +- drivers/hwmon/sis5595.c | 2 + drivers/hwmon/twl4030-madc-hwmon.c | 9 +- drivers/hwmon/vt8231.c | 2 +- drivers/hwmon/w83627ehf.c | 1 + drivers/hwmon/w83l786ng.c | 13 +- drivers/hwspinlock/hwspinlock_core.c | 6 +- drivers/i2c/busses/Kconfig | 8 + drivers/i2c/busses/Makefile | 5 +- drivers/i2c/busses/i2c-davinci.c | 10 +- drivers/i2c/busses/i2c-designware-core.c | 17 +- drivers/i2c/busses/i2c-i801.c | 6 + drivers/i2c/busses/i2c-piix4.c | 3 +- drivers/i2c/busses/i2c-tegra.c | 26 +- drivers/i2c/busses/i2c-xiic.c | 6 +- drivers/idle/intel_idle.c | 48 +- drivers/infiniband/core/cm.c | 10 +- drivers/infiniband/core/cma.c | 30 +- drivers/infiniband/core/netlink.c | 1 + drivers/infiniband/core/umem.c | 13 +- drivers/infiniband/core/user_mad.c | 75 +- drivers/infiniband/core/uverbs.h | 3 +- drivers/infiniband/core/uverbs_cmd.c | 10 +- drivers/infiniband/core/uverbs_main.c | 44 +- drivers/infiniband/hw/cxgb4/cm.c | 13 +- drivers/infiniband/hw/ehca/ehca_cq.c | 1 + drivers/infiniband/hw/ipath/ipath_diag.c | 70 +- drivers/infiniband/hw/ipath/ipath_user_sdma.c | 7 +- drivers/infiniband/hw/mlx4/ah.c | 6 +- drivers/infiniband/hw/mlx4/mad.c | 20 +- drivers/infiniband/hw/mlx4/qp.c | 3 +- drivers/infiniband/hw/mthca/mthca_provider.c | 1 + drivers/infiniband/hw/nes/nes.h | 1 + drivers/infiniband/hw/nes/nes_hw.c | 9 +- drivers/infiniband/hw/nes/nes_verbs.c | 11 +- drivers/infiniband/hw/qib/qib.h | 13 +- drivers/infiniband/hw/qib/qib_eeprom.c | 181 --- drivers/infiniband/hw/qib/qib_iba6120.c | 2 - drivers/infiniband/hw/qib/qib_iba7220.c | 2 - drivers/infiniband/hw/qib/qib_iba7322.c | 7 +- drivers/infiniband/hw/qib/qib_init.c | 1 - drivers/infiniband/hw/qib/qib_keys.c | 4 + drivers/infiniband/hw/qib/qib_mad.c | 2 +- drivers/infiniband/hw/qib/qib_sysfs.c | 24 - drivers/infiniband/hw/qib/qib_ud.c | 9 +- drivers/infiniband/hw/qib/qib_user_sdma.c | 6 +- drivers/infiniband/hw/qib/qib_verbs.c | 14 +- drivers/infiniband/hw/qib/qib_verbs.h | 2 + drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +- .../infiniband/ulp/ipoib/ipoib_multicast.c | 19 +- drivers/infiniband/ulp/srp/ib_srp.c | 94 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 38 +- drivers/input/Kconfig | 2 +- drivers/input/input.c | 4 + drivers/input/joystick/walkera0701.c | 7 +- drivers/input/joystick/xpad.c | 22 +- drivers/input/keyboard/Kconfig | 4 +- drivers/input/mouse/alps.c | 11 +- drivers/input/mouse/bcm5974.c | 20 + drivers/input/mouse/elantech.c | 97 +- drivers/input/mouse/elantech.h | 1 + drivers/input/mouse/sentelic.c | 2 +- drivers/input/mouse/synaptics.c | 254 +++- drivers/input/mouse/synaptics.h | 7 + drivers/input/serio/Kconfig | 6 +- drivers/input/serio/i8042-x86ia64io.h | 107 ++ drivers/input/serio/i8042.c | 14 + drivers/input/serio/serport.c | 47 +- drivers/input/tablet/wacom_wac.c | 2 +- drivers/input/touchscreen/cyttsp_core.c | 2 +- drivers/input/touchscreen/eeti_ts.c | 21 +- drivers/input/touchscreen/tsc40.c | 1 - drivers/input/touchscreen/usbtouchscreen.c | 25 +- drivers/iommu/amd_iommu.c | 187 ++- drivers/iommu/amd_iommu_init.c | 60 +- drivers/iommu/amd_iommu_types.h | 5 + drivers/iommu/amd_iommu_v2.c | 2 + drivers/iommu/dmar.c | 15 +- drivers/iommu/intel-iommu.c | 207 ++- drivers/iommu/intr_remapping.c | 18 +- drivers/iommu/tegra-smmu.c | 6 +- drivers/isdn/gigaset/bas-gigaset.c | 19 +- drivers/isdn/gigaset/capi.c | 28 +- drivers/isdn/gigaset/ev-layer.c | 4 +- drivers/isdn/gigaset/ser-gigaset.c | 10 +- drivers/isdn/hardware/mISDN/mISDNipac.c | 7 +- drivers/isdn/i4l/isdn_ppp.c | 12 +- drivers/isdn/isdnloop/isdnloop.c | 43 +- drivers/isdn/mISDN/socket.c | 13 +- drivers/leds/leds-lp5521.c | 12 +- drivers/leds/leds-ot200.c | 14 +- drivers/lguest/core.c | 2 +- drivers/macintosh/windfarm_core.c | 2 +- drivers/md/Kconfig | 6 +- drivers/md/Makefile | 1 + drivers/md/dm-bufio.c | 42 +- drivers/md/dm-builtin.c | 50 + drivers/md/dm-crypt.c | 69 +- drivers/md/dm-delay.c | 29 +- drivers/md/dm-flakey.c | 5 +- drivers/md/dm-io.c | 14 +- drivers/md/dm-ioctl.c | 26 +- drivers/md/dm-linear.c | 5 +- drivers/md/dm-log-userspace-transfer.c | 2 +- drivers/md/dm-mpath.c | 24 +- drivers/md/dm-raid.c | 17 +- drivers/md/dm-raid1.c | 18 +- drivers/md/dm-region-hash.c | 5 +- drivers/md/dm-snap-persistent.c | 2 +- drivers/md/dm-snap.c | 95 +- drivers/md/dm-stripe.c | 5 +- drivers/md/dm-sysfs.c | 5 +- drivers/md/dm-table.c | 49 +- drivers/md/dm-thin.c | 109 +- drivers/md/dm-verity.c | 19 +- drivers/md/dm.c | 112 +- drivers/md/dm.h | 17 + drivers/md/md.c | 124 +- .../md/persistent-data/dm-btree-internal.h | 22 +- drivers/md/persistent-data/dm-btree-remove.c | 113 +- drivers/md/persistent-data/dm-btree-spine.c | 43 +- drivers/md/persistent-data/dm-btree.c | 53 +- .../md/persistent-data/dm-space-map-checker.c | 54 +- .../md/persistent-data/dm-space-map-common.c | 6 +- .../md/persistent-data/dm-space-map-disk.c | 11 +- .../persistent-data/dm-transaction-manager.c | 11 +- drivers/md/raid0.c | 60 +- drivers/md/raid1.c | 112 +- drivers/md/raid1.h | 5 + drivers/md/raid10.c | 230 ++-- drivers/md/raid10.h | 8 +- drivers/md/raid5.c | 131 +- drivers/md/raid5.h | 1 + drivers/media/dvb/dvb-core/dvbdev.c | 1 + drivers/media/dvb/mantis/mantis_dvb.c | 6 +- drivers/media/dvb/siano/smsusb.c | 6 +- drivers/media/rc/ene_ir.c | 3 +- drivers/media/rc/ite-cir.c | 2 +- drivers/media/rc/rc-main.c | 8 +- drivers/media/video/au0828/au0828-video.c | 12 +- drivers/media/video/cx231xx/cx231xx-audio.c | 4 +- drivers/media/video/cx231xx/cx231xx-vbi.c | 2 +- drivers/media/video/cx25821/cx25821-core.c | 3 - drivers/media/video/cx25821/cx25821.h | 2 +- drivers/media/video/gspca/gspca.c | 4 +- drivers/media/video/gspca/jl2005bcd.c | 2 +- drivers/media/video/gspca/kinect.c | 1 + drivers/media/video/gspca/pac7302.c | 1 + drivers/media/video/gspca/spca506.c | 2 +- drivers/media/video/hdpvr/hdpvr-core.c | 22 +- drivers/media/video/omap/omap_vout.c | 12 +- drivers/media/video/saa7134/saa7134-alsa.c | 2 + drivers/media/video/saa7164/saa7164-core.c | 4 +- drivers/media/video/uvc/uvc_queue.c | 1 + drivers/media/video/uvc/uvc_v4l2.c | 2 +- drivers/media/video/v4l2-device.c | 30 +- drivers/memstick/core/mspro_block.c | 3 +- drivers/mfd/ab3100-core.c | 5 - drivers/mfd/adp5520.c | 8 +- drivers/mfd/ezx-pcap.c | 2 +- drivers/mfd/max8925-core.c | 10 + drivers/mfd/max8925-i2c.c | 9 + drivers/mfd/max8997.c | 18 + drivers/mfd/max8998.c | 4 + drivers/mfd/mfd-core.c | 15 +- drivers/mfd/tc6393xb.c | 13 +- drivers/mfd/wm831x-otp.c | 8 + drivers/mfd/wm8994-core.c | 1 + drivers/misc/enclosure.c | 7 + drivers/misc/hpilo.c | 11 +- drivers/misc/sgi-xp/xpc_main.c | 34 +- drivers/misc/sgi-xp/xpc_uv.c | 84 +- drivers/mmc/card/block.c | 69 +- drivers/mmc/core/core.c | 1 + drivers/mmc/core/mmc.c | 2 +- drivers/mmc/host/Kconfig | 10 - drivers/mmc/host/atmel-mci.c | 38 +- drivers/mmc/host/mxs-mmc.c | 12 +- drivers/mmc/host/omap_hsmmc.c | 5 +- drivers/mmc/host/sdhci-esdhc-imx.c | 19 +- drivers/mmc/host/sdhci-esdhc.h | 6 +- drivers/mmc/host/sdhci-pci.c | 1 + drivers/mmc/host/sdhci-s3c.c | 2 +- drivers/mmc/host/sh_mmcif.c | 4 +- drivers/mmc/host/tmio_mmc_dma.c | 4 +- drivers/mtd/Kconfig | 2 +- drivers/mtd/devices/block2mtd.c | 1 - drivers/mtd/devices/m25p80.c | 19 +- drivers/mtd/devices/slram.c | 2 +- drivers/mtd/maps/autcpu12-nvram.c | 19 +- drivers/mtd/maps/dc21285.c | 4 +- drivers/mtd/mtd_blkdevs.c | 5 + drivers/mtd/mtdchar.c | 38 +- drivers/mtd/mtdpart.c | 9 +- drivers/mtd/nand/cafe_nand.c | 2 +- drivers/mtd/nand/cs553x_nand.c | 3 +- drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 9 + drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 4 +- drivers/mtd/nand/mxc_nand.c | 13 +- drivers/mtd/nand/nand_base.c | 24 +- drivers/mtd/nand/nand_bbt.c | 3 +- drivers/mtd/nand/nandsim.c | 13 +- drivers/mtd/nand/nuc900_nand.c | 2 +- drivers/mtd/nand/omap2.c | 3 +- drivers/mtd/nand/pxa3xx_nand.c | 4 +- drivers/mtd/ofpart.c | 2 +- drivers/mtd/sm_ftl.c | 11 +- drivers/mtd/ubi/build.c | 5 + drivers/mtd/ubi/cdev.c | 2 +- drivers/mtd/ubi/eba.c | 3 +- drivers/mtd/ubi/io.c | 5 + drivers/mtd/ubi/misc.c | 2 + drivers/mtd/ubi/scan.c | 2 +- drivers/mtd/ubi/upd.c | 10 +- drivers/mtd/ubi/vtbl.c | 5 +- drivers/mtd/ubi/wl.c | 3 +- drivers/net/arcnet/arcnet.c | 2 +- drivers/net/bonding/bond_3ad.c | 6 +- drivers/net/bonding/bond_3ad.h | 1 + drivers/net/bonding/bond_alb.c | 6 + drivers/net/bonding/bond_debugfs.c | 2 +- drivers/net/bonding/bond_main.c | 154 ++- drivers/net/bonding/bond_sysfs.c | 134 +- drivers/net/bonding/bonding.h | 13 + drivers/net/caif/caif_serial.c | 3 + drivers/net/can/at91_can.c | 8 +- drivers/net/can/c_can/c_can.c | 36 +- drivers/net/can/c_can/c_can.h | 1 + drivers/net/can/dev.c | 28 +- drivers/net/can/flexcan.c | 63 +- drivers/net/can/janz-ican3.c | 4 +- drivers/net/can/mcp251x.c | 26 +- drivers/net/can/mscan/mpc5xxx_can.c | 4 +- drivers/net/can/pch_can.c | 2 +- drivers/net/can/sja1000/peak_pci.c | 14 +- drivers/net/can/sja1000/plx_pci.c | 4 +- drivers/net/can/sja1000/sja1000.c | 26 +- drivers/net/can/sja1000/sja1000.h | 2 +- drivers/net/can/sja1000/sja1000_of_platform.c | 31 +- drivers/net/can/ti_hecc.c | 6 +- drivers/net/can/usb/esd_usb2.c | 1 + drivers/net/can/usb/peak_usb/pcan_usb.c | 10 +- drivers/net/can/usb/peak_usb/pcan_usb_core.c | 17 +- drivers/net/can/usb/peak_usb/pcan_usb_pro.c | 11 +- drivers/net/dummy.c | 8 +- drivers/net/ethernet/3com/3c509.c | 2 + drivers/net/ethernet/3com/3c59x.c | 27 +- drivers/net/ethernet/8390/ne.c | 1 + drivers/net/ethernet/amd/pcnet32.c | 31 +- .../net/ethernet/atheros/atl1c/atl1c_main.c | 1 - drivers/net/ethernet/atheros/atl1e/atl1e.h | 3 +- .../net/ethernet/atheros/atl1e/atl1e_main.c | 73 +- drivers/net/ethernet/broadcom/bnx2.c | 6 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 15 - .../net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 51 +- .../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 15 +- .../net/ethernet/broadcom/bnx2x/bnx2x_sp.c | 3 - .../net/ethernet/broadcom/bnx2x/bnx2x_stats.h | 3 +- drivers/net/ethernet/broadcom/tg3.c | 180 ++- drivers/net/ethernet/broadcom/tg3.h | 14 +- drivers/net/ethernet/calxeda/xgmac.c | 6 +- drivers/net/ethernet/davicom/dm9000.c | 214 ++-- drivers/net/ethernet/davicom/dm9000.h | 11 +- drivers/net/ethernet/emulex/benet/be.h | 5 + drivers/net/ethernet/emulex/benet/be_main.c | 65 +- drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +- drivers/net/ethernet/freescale/gianfar.c | 20 +- drivers/net/ethernet/freescale/gianfar.h | 11 +- drivers/net/ethernet/freescale/gianfar_ptp.c | 4 +- drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +- drivers/net/ethernet/ibm/ibmveth.c | 67 +- drivers/net/ethernet/intel/e1000/e1000_main.c | 10 +- drivers/net/ethernet/intel/e1000e/82571.c | 10 +- drivers/net/ethernet/intel/e1000e/defines.h | 1 + drivers/net/ethernet/intel/e1000e/e1000.h | 7 +- drivers/net/ethernet/intel/e1000e/ethtool.c | 6 +- drivers/net/ethernet/intel/e1000e/mac.c | 2 +- drivers/net/ethernet/intel/e1000e/netdev.c | 139 +- drivers/net/ethernet/intel/e1000e/phy.c | 8 +- drivers/net/ethernet/intel/igb/igb_main.c | 30 +- drivers/net/ethernet/intel/igbvf/ethtool.c | 31 +- drivers/net/ethernet/intel/ixgbe/ixgbe.h | 4 +- .../net/ethernet/intel/ixgbe/ixgbe_common.c | 1 + .../ethernet/intel/ixgbe/ixgbe_dcb_82598.c | 3 +- .../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 1 + drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 33 +- drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 1 + .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 12 - drivers/net/ethernet/marvell/mv643xx_eth.c | 6 +- drivers/net/ethernet/marvell/skge.c | 7 + drivers/net/ethernet/marvell/sky2.c | 16 +- drivers/net/ethernet/marvell/sky2.h | 2 +- drivers/net/ethernet/mellanox/mlx4/en_cq.c | 1 - .../net/ethernet/mellanox/mlx4/en_netdev.c | 6 +- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 13 +- drivers/net/ethernet/mellanox/mlx4/main.c | 193 +-- drivers/net/ethernet/mellanox/mlx4/mlx4.h | 7 + drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 - drivers/net/ethernet/micrel/ks8851.c | 2 +- drivers/net/ethernet/nxp/lpc_eth.c | 12 +- .../ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 4 +- .../ethernet/qlogic/netxen/netxen_nic_init.c | 2 +- .../ethernet/qlogic/netxen/netxen_nic_main.c | 6 + drivers/net/ethernet/realtek/8139cp.c | 51 +- drivers/net/ethernet/realtek/r8169.c | 148 ++- drivers/net/ethernet/renesas/sh_eth.c | 20 +- drivers/net/ethernet/renesas/sh_eth.h | 2 +- drivers/net/ethernet/sfc/bitfield.h | 22 +- drivers/net/ethernet/sfc/efx.c | 59 +- drivers/net/ethernet/sfc/efx.h | 27 +- drivers/net/ethernet/sfc/ethtool.c | 20 +- drivers/net/ethernet/sfc/falcon.c | 37 +- drivers/net/ethernet/sfc/mcdi.c | 35 +- drivers/net/ethernet/sfc/mcdi.h | 6 +- drivers/net/ethernet/sfc/net_driver.h | 14 +- drivers/net/ethernet/sfc/nic.c | 65 +- drivers/net/ethernet/sfc/nic.h | 2 + drivers/net/ethernet/sfc/rx.c | 28 +- drivers/net/ethernet/sfc/selftest.c | 64 +- drivers/net/ethernet/sfc/siena.c | 44 +- drivers/net/ethernet/sfc/siena_sriov.c | 13 +- drivers/net/ethernet/sfc/tx.c | 19 + drivers/net/ethernet/smsc/smc91x.h | 36 +- drivers/net/ethernet/stmicro/stmmac/descs.h | 2 + .../net/ethernet/stmicro/stmmac/enh_desc.c | 4 +- .../net/ethernet/stmicro/stmmac/norm_desc.c | 4 +- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 21 +- drivers/net/ethernet/sun/niu.c | 16 +- drivers/net/ethernet/sun/sunvnet.c | 20 + drivers/net/ethernet/tehuti/tehuti.c | 1 - drivers/net/ethernet/ti/cpsw.c | 2 +- drivers/net/ethernet/ti/davinci_cpdma.c | 1 + drivers/net/ethernet/ti/davinci_emac.c | 5 +- drivers/net/ethernet/via/via-rhine.c | 18 +- drivers/net/ethernet/xilinx/ll_temac_main.c | 8 +- .../net/ethernet/xilinx/xilinx_axienet_main.c | 2 +- drivers/net/hamradio/hdlcdrv.c | 2 + drivers/net/hyperv/netvsc_drv.c | 1 - drivers/net/ifb.c | 8 +- drivers/net/irda/sir_dev.c | 2 +- drivers/net/loopback.c | 5 + drivers/net/macvlan.c | 14 +- drivers/net/macvtap.c | 123 +- drivers/net/netconsole.c | 21 +- drivers/net/phy/broadcom.c | 2 +- drivers/net/ppp/ppp_generic.c | 8 +- drivers/net/ppp/pppoe.c | 6 +- drivers/net/ppp/pptp.c | 6 +- drivers/net/rionet.c | 20 +- drivers/net/slip/slhc.c | 12 +- drivers/net/slip/slip.c | 2 +- drivers/net/team/team.c | 11 +- drivers/net/team/team_mode_roundrobin.c | 2 + drivers/net/tun.c | 25 +- drivers/net/usb/asix.c | 4 + drivers/net/usb/cdc_ether.c | 5 + drivers/net/usb/dm9601.c | 36 +- drivers/net/usb/gl620a.c | 4 + drivers/net/usb/ipheth.c | 10 + drivers/net/usb/kaweth.c | 2 +- drivers/net/usb/mcs7830.c | 5 +- drivers/net/usb/net1080.c | 4 + drivers/net/usb/qmi_wwan.c | 305 ++++- drivers/net/usb/rndis_host.c | 4 + drivers/net/usb/sierra_net.c | 16 +- drivers/net/usb/smsc75xx.c | 28 +- drivers/net/usb/smsc95xx.c | 4 + drivers/net/usb/usbnet.c | 25 +- drivers/net/virtio_net.c | 12 +- drivers/net/vmxnet3/vmxnet3_drv.c | 19 +- drivers/net/wan/dlci.c | 26 +- drivers/net/wan/farsync.c | 1 + drivers/net/wan/ixp4xx_hss.c | 1 + drivers/net/wan/x25_asy.c | 6 +- drivers/net/wimax/i2400m/i2400m-usb.h | 3 + drivers/net/wimax/i2400m/usb-rx.c | 2 +- drivers/net/wimax/i2400m/usb.c | 6 + drivers/net/wireless/ath/ath.h | 1 + drivers/net/wireless/ath/ath5k/base.c | 4 +- drivers/net/wireless/ath/ath5k/mac80211-ops.c | 2 +- drivers/net/wireless/ath/ath5k/qcu.c | 8 +- drivers/net/wireless/ath/ath5k/reset.c | 2 +- drivers/net/wireless/ath/ath9k/Kconfig | 10 +- drivers/net/wireless/ath/ath9k/Makefile | 2 +- drivers/net/wireless/ath/ath9k/ar9002_mac.c | 52 +- .../wireless/ath/ath9k/ar9003_2p2_initvals.h | 182 +-- drivers/net/wireless/ath/ath9k/ar9003_calib.c | 6 + .../net/wireless/ath/ath9k/ar9003_eeprom.c | 8 +- .../net/wireless/ath/ath9k/ar9003_eeprom.h | 6 +- drivers/net/wireless/ath/ath9k/ar9003_hw.c | 15 +- drivers/net/wireless/ath/ath9k/ar9003_phy.c | 33 +- drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 + .../wireless/ath/ath9k/ar9462_2p0_initvals.h | 4 +- .../wireless/ath/ath9k/ar9580_1p0_initvals.h | 2 +- drivers/net/wireless/ath/ath9k/ath9k.h | 6 +- drivers/net/wireless/ath/ath9k/beacon.c | 3 +- drivers/net/wireless/ath/ath9k/calib.c | 3 +- drivers/net/wireless/ath/ath9k/calib.h | 3 + drivers/net/wireless/ath/ath9k/common.h | 2 +- drivers/net/wireless/ath/ath9k/htc.h | 1 + drivers/net/wireless/ath/ath9k/htc_drv_init.c | 3 +- drivers/net/wireless/ath/ath9k/htc_drv_main.c | 30 +- drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 28 +- drivers/net/wireless/ath/ath9k/htc_hst.c | 2 + drivers/net/wireless/ath/ath9k/hw.c | 24 +- drivers/net/wireless/ath/ath9k/hw.h | 7 +- drivers/net/wireless/ath/ath9k/init.c | 8 +- drivers/net/wireless/ath/ath9k/mac.c | 9 +- drivers/net/wireless/ath/ath9k/main.c | 51 +- drivers/net/wireless/ath/ath9k/pci.c | 6 +- drivers/net/wireless/ath/ath9k/rc.h | 2 +- drivers/net/wireless/ath/ath9k/recv.c | 36 +- drivers/net/wireless/ath/ath9k/xmit.c | 89 +- drivers/net/wireless/ath/key.c | 4 + drivers/net/wireless/b43/Kconfig | 4 +- drivers/net/wireless/b43/b43.h | 5 + drivers/net/wireless/b43/dma.c | 91 +- drivers/net/wireless/b43/dma.h | 6 +- drivers/net/wireless/b43/main.c | 128 +- drivers/net/wireless/b43/main.h | 5 +- drivers/net/wireless/b43/phy_n.c | 25 +- drivers/net/wireless/b43/pio.c | 4 +- drivers/net/wireless/b43/xmit.c | 14 +- drivers/net/wireless/b43legacy/b43legacy.h | 5 + drivers/net/wireless/b43legacy/main.c | 42 +- .../wireless/brcm80211/brcmfmac/dhd_common.c | 26 +- .../wireless/brcm80211/brcmfmac/wl_cfg80211.c | 6 +- drivers/net/wireless/brcm80211/brcmsmac/dma.c | 15 +- .../wireless/brcm80211/brcmsmac/mac80211_if.c | 7 +- drivers/net/wireless/hostap/hostap_ioctl.c | 4 +- drivers/net/wireless/ipw2x00/ipw2100.c | 4 + drivers/net/wireless/ipw2x00/ipw2200.c | 6 +- drivers/net/wireless/iwlegacy/4965-mac.c | 22 +- drivers/net/wireless/iwlegacy/common.c | 50 +- drivers/net/wireless/iwlwifi/iwl-2000.c | 4 +- drivers/net/wireless/iwlwifi/iwl-6000.c | 68 +- drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 2 +- drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 14 +- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 3 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +- drivers/net/wireless/iwlwifi/iwl-cfg.h | 1 + drivers/net/wireless/iwlwifi/iwl-core.c | 5 +- drivers/net/wireless/iwlwifi/iwl-debugfs.c | 3 + drivers/net/wireless/iwlwifi/iwl-eeprom.c | 18 +- drivers/net/wireless/iwlwifi/iwl-mac80211.c | 15 + drivers/net/wireless/iwlwifi/iwl-pci.c | 10 + drivers/net/wireless/iwlwifi/iwl-prph.h | 1 + .../net/wireless/iwlwifi/iwl-trans-pcie-int.h | 13 +- .../net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 37 +- .../net/wireless/iwlwifi/iwl-trans-pcie-tx.c | 92 +- drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 42 +- drivers/net/wireless/libertas/debugfs.c | 6 +- drivers/net/wireless/mwifiex/11n.c | 3 +- drivers/net/wireless/mwifiex/11n_rxreorder.c | 5 +- drivers/net/wireless/mwifiex/11n_rxreorder.h | 7 + drivers/net/wireless/mwifiex/cfg80211.c | 25 +- drivers/net/wireless/mwifiex/cmdevt.c | 12 +- drivers/net/wireless/mwifiex/debugfs.c | 14 +- drivers/net/wireless/mwifiex/join.c | 7 +- drivers/net/wireless/mwifiex/main.c | 1 + drivers/net/wireless/mwifiex/pcie.c | 8 +- drivers/net/wireless/mwifiex/sdio.c | 18 +- drivers/net/wireless/mwifiex/sta_ioctl.c | 42 +- drivers/net/wireless/mwifiex/wmm.c | 3 + drivers/net/wireless/p54/p54usb.c | 7 +- drivers/net/wireless/p54/txrx.c | 2 +- drivers/net/wireless/prism54/islpci_dev.c | 7 +- drivers/net/wireless/rndis_wlan.c | 6 +- drivers/net/wireless/rt2x00/rt2400pci.c | 11 +- drivers/net/wireless/rt2x00/rt2400pci.h | 1 + drivers/net/wireless/rt2x00/rt2500pci.c | 16 +- drivers/net/wireless/rt2x00/rt2500usb.c | 13 +- drivers/net/wireless/rt2x00/rt2500usb.h | 17 +- drivers/net/wireless/rt2x00/rt2800.h | 2 +- drivers/net/wireless/rt2x00/rt2800lib.c | 13 +- drivers/net/wireless/rt2x00/rt2800pci.c | 9 + drivers/net/wireless/rt2x00/rt2800usb.c | 66 +- drivers/net/wireless/rt2x00/rt2x00.h | 4 +- drivers/net/wireless/rt2x00/rt2x00dev.c | 28 +- drivers/net/wireless/rt2x00/rt2x00mac.c | 28 +- drivers/net/wireless/rt2x00/rt2x00pci.c | 4 +- drivers/net/wireless/rt2x00/rt2x00queue.c | 93 +- drivers/net/wireless/rt2x00/rt2x00usb.c | 2 +- drivers/net/wireless/rt2x00/rt61pci.c | 15 +- drivers/net/wireless/rt2x00/rt61pci.h | 1 + drivers/net/wireless/rt2x00/rt73usb.c | 13 +- drivers/net/wireless/rt2x00/rt73usb.h | 3 + drivers/net/wireless/rtl818x/rtl8187/dev.c | 2 +- drivers/net/wireless/rtl818x/rtl8187/leds.c | 2 +- .../net/wireless/rtl818x/rtl8187/rtl8187.h | 10 +- drivers/net/wireless/rtlwifi/base.c | 86 +- drivers/net/wireless/rtlwifi/core.c | 1 + drivers/net/wireless/rtlwifi/pci.c | 4 +- drivers/net/wireless/rtlwifi/ps.c | 2 +- .../net/wireless/rtlwifi/rtl8192c/dm_common.c | 3 + drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 1 + drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 30 +- drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 6 +- drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 122 +- drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 6 +- drivers/net/wireless/rtlwifi/rtl8192cu/rf.c | 31 +- drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 9 + drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 11 +- drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 6 +- drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 2 +- drivers/net/wireless/rtlwifi/rtl8192se/hw.c | 27 +- drivers/net/wireless/rtlwifi/rtl8192se/phy.c | 3 + drivers/net/wireless/rtlwifi/rtl8192se/rf.c | 2 +- drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 2 +- drivers/net/wireless/rtlwifi/usb.c | 74 +- drivers/net/wireless/rtlwifi/wifi.h | 9 +- drivers/net/wireless/wl1251/sdio.c | 2 +- drivers/net/wireless/wl1251/spi.c | 3 +- drivers/net/wireless/zd1201.c | 4 +- drivers/net/xen-netback/common.h | 4 + drivers/net/xen-netback/interface.c | 29 +- drivers/net/xen-netback/netback.c | 441 +++++-- drivers/net/xen-netback/xenbus.c | 33 +- drivers/net/xen-netfront.c | 25 +- drivers/nfc/pn533.c | 16 +- drivers/of/address.c | 25 +- drivers/of/base.c | 89 +- drivers/of/fdt.c | 2 + drivers/of/selftest.c | 66 +- drivers/oprofile/oprofile_perf.c | 2 +- drivers/parisc/iommu-helpers.h | 15 +- drivers/parport/parport_pc.c | 10 +- drivers/pci/access.c | 61 +- drivers/pci/hotplug.c | 2 +- drivers/pci/hotplug/acpiphp_glue.c | 13 +- drivers/pci/hotplug/pciehp.h | 2 +- drivers/pci/hotplug/pciehp_core.c | 18 +- drivers/pci/hotplug/pciehp_ctrl.c | 8 +- drivers/pci/hotplug/pciehp_hpc.c | 11 +- drivers/pci/hotplug/shpchp.h | 3 +- drivers/pci/hotplug/shpchp_core.c | 36 +- drivers/pci/hotplug/shpchp_ctrl.c | 10 +- drivers/pci/pci-driver.c | 23 + drivers/pci/pci-sysfs.c | 2 +- drivers/pci/pci.c | 28 +- drivers/pci/pcie/aer/aerdrv_core.c | 1 + drivers/pci/pcie/aspm.c | 6 + drivers/pci/pcie/portdrv_pci.c | 1 - drivers/pci/probe.c | 41 +- drivers/pci/quirks.c | 91 +- drivers/pci/remove.c | 2 + drivers/pci/rom.c | 9 +- drivers/pci/setup-bus.c | 14 +- drivers/pci/setup-res.c | 5 +- drivers/pcmcia/at91_cf.c | 4 +- drivers/pcmcia/i82092.c | 2 +- drivers/pcmcia/pxa2xx_sharpsl.c | 2 +- drivers/pcmcia/topic.h | 16 + drivers/pcmcia/vrc4171_card.c | 1 + drivers/pcmcia/yenta_socket.c | 6 +- drivers/pinctrl/pinctrl-tegra.c | 2 +- drivers/pinctrl/pinctrl-tegra30.c | 24 +- drivers/platform/x86/acer-wmi.c | 11 + drivers/platform/x86/asus-laptop.c | 21 +- drivers/platform/x86/asus-nb-wmi.c | 4 + drivers/platform/x86/asus-wmi.c | 7 +- drivers/platform/x86/compal-laptop.c | 8 +- drivers/platform/x86/dell-laptop.c | 8 +- drivers/platform/x86/hp_accel.c | 5 +- drivers/platform/x86/ibm_rtl.c | 2 +- drivers/platform/x86/ideapad-laptop.c | 3 +- drivers/platform/x86/intel_ips.c | 22 + drivers/platform/x86/msi-wmi.c | 4 +- drivers/platform/x86/samsung-laptop.c | 24 + drivers/platform/x86/thinkpad_acpi.c | 9 +- drivers/pnp/pnpacpi/core.c | 5 +- drivers/power/ab8500_btemp.c | 2 +- drivers/power/abx500_chargalg.c | 2 +- drivers/power/charger-manager.c | 7 +- drivers/power/max17040_battery.c | 5 +- drivers/power/wm831x_power.c | 6 +- drivers/pps/clients/pps-ldisc.c | 10 +- drivers/pps/pps.c | 47 +- drivers/rapidio/devices/tsi721.c | 23 +- drivers/regulator/core.c | 6 +- drivers/regulator/max8997.c | 36 +- drivers/regulator/max8998.c | 2 +- drivers/regulator/twl-regulator.c | 4 +- drivers/regulator/wm831x-dcdc.c | 2 +- drivers/remoteproc/Kconfig | 3 + drivers/remoteproc/omap_remoteproc.c | 2 +- drivers/remoteproc/remoteproc_core.c | 32 +- drivers/rpmsg/virtio_rpmsg_bus.c | 57 +- drivers/rtc/rtc-ab8500.c | 2 +- drivers/rtc/rtc-at91rm9200.c | 2 + drivers/rtc/rtc-cmos.c | 56 +- drivers/rtc/rtc-imxdi.c | 2 + drivers/rtc/rtc-isl1208.c | 3 + drivers/rtc/rtc-mxc.c | 5 +- drivers/rtc/rtc-pcf2123.c | 1 + drivers/rtc/rtc-pl031.c | 10 +- drivers/rtc/rtc-rs5c348.c | 7 +- drivers/rtc/rtc-rv3029c2.c | 2 +- drivers/rtc/rtc-spear.c | 2 +- drivers/rtc/rtc-twl.c | 6 + drivers/rtc/rtc-vt8500.c | 11 +- drivers/rtc/rtc-wm831x.c | 24 +- drivers/s390/char/con3215.c | 20 +- drivers/s390/char/sclp_cmd.c | 4 +- drivers/s390/cio/device_pgid.c | 10 +- drivers/s390/kvm/kvm_virtio.c | 38 +- drivers/s390/net/qeth_core_main.c | 6 +- drivers/s390/net/qeth_l3_main.c | 4 + drivers/s390/scsi/zfcp_aux.c | 6 +- drivers/s390/scsi/zfcp_ccw.c | 87 +- drivers/s390/scsi/zfcp_cfdc.c | 2 +- drivers/s390/scsi/zfcp_dbf.c | 22 +- drivers/s390/scsi/zfcp_dbf.h | 1 + drivers/s390/scsi/zfcp_def.h | 2 + drivers/s390/scsi/zfcp_erp.c | 29 +- drivers/s390/scsi/zfcp_ext.h | 2 + drivers/s390/scsi/zfcp_fsf.c | 80 +- drivers/s390/scsi/zfcp_qdio.c | 24 +- drivers/s390/scsi/zfcp_scsi.c | 10 +- drivers/s390/scsi/zfcp_sysfs.c | 18 +- drivers/s390/scsi/zfcp_unit.c | 36 +- drivers/sbus/char/bbc_envctrl.c | 6 + drivers/sbus/char/bbc_i2c.c | 11 +- drivers/scsi/3w-9xxx.c | 57 +- drivers/scsi/3w-9xxx.h | 5 - drivers/scsi/3w-sas.c | 50 +- drivers/scsi/3w-sas.h | 4 - drivers/scsi/3w-xxxx.c | 42 +- drivers/scsi/3w-xxxx.h | 5 - drivers/scsi/NCR5380.c | 12 +- drivers/scsi/aacraid/commctrl.c | 3 +- drivers/scsi/aacraid/linit.c | 2 + drivers/scsi/aha152x.c | 4 +- drivers/scsi/aha1740.c | 2 +- drivers/scsi/aic94xx/aic94xx_task.c | 2 +- drivers/scsi/arcmsr/arcmsr_hba.c | 7 +- drivers/scsi/atari_NCR5380.c | 2 +- drivers/scsi/atp870u.c | 11 +- drivers/scsi/be2iscsi/be_main.c | 3 +- drivers/scsi/bfa/bfad.c | 6 +- drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 7 + drivers/scsi/bnx2fc/bnx2fc_io.c | 2 +- drivers/scsi/bnx2i/bnx2i_hwi.c | 3 + drivers/scsi/dc395x.c | 2 +- drivers/scsi/device_handler/scsi_dh_alua.c | 3 +- drivers/scsi/esp_scsi.c | 14 +- drivers/scsi/esp_scsi.h | 1 + drivers/scsi/hosts.c | 7 +- drivers/scsi/hpsa.c | 134 +- drivers/scsi/hpsa.h | 2 + drivers/scsi/hpsa_cmd.h | 1 + drivers/scsi/ibmvscsi/ibmvscsi.c | 6 +- drivers/scsi/ipr.h | 2 +- drivers/scsi/isci/host.h | 5 +- drivers/scsi/isci/init.c | 5 +- drivers/scsi/isci/port_config.c | 7 - drivers/scsi/isci/probe_roms.c | 1 - drivers/scsi/isci/request.c | 2 +- drivers/scsi/isci/task.c | 11 +- drivers/scsi/libfc/fc_fcp.c | 19 +- drivers/scsi/libiscsi.c | 35 +- drivers/scsi/libsas/sas_ata.c | 14 +- drivers/scsi/libsas/sas_discover.c | 6 +- drivers/scsi/libsas/sas_expander.c | 59 +- drivers/scsi/lpfc/Makefile | 2 + drivers/scsi/megaraid.c | 8 +- drivers/scsi/megaraid/megaraid_mm.c | 2 + drivers/scsi/megaraid/megaraid_sas.h | 3 +- drivers/scsi/megaraid/megaraid_sas_base.c | 55 +- drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 +- drivers/scsi/mpt2sas/mpt2sas_base.c | 41 +- drivers/scsi/mpt2sas/mpt2sas_base.h | 3 + drivers/scsi/mpt2sas/mpt2sas_scsih.c | 133 +- drivers/scsi/mvsas/mv_94xx.h | 14 +- drivers/scsi/mvsas/mv_sas.c | 5 +- drivers/scsi/mvsas/mv_sas.h | 2 +- drivers/scsi/nsp32.c | 2 +- drivers/scsi/osd/osd_uld.c | 2 +- drivers/scsi/qla2xxx/qla_def.h | 3 +- drivers/scsi/qla2xxx/qla_iocb.c | 11 +- drivers/scsi/qla2xxx/qla_os.c | 4 +- drivers/scsi/scsi.c | 3 + drivers/scsi/scsi_debug.c | 2 +- drivers/scsi/scsi_devinfo.c | 1 + drivers/scsi/scsi_error.c | 37 +- drivers/scsi/scsi_lib.c | 71 +- drivers/scsi/scsi_priv.h | 1 - drivers/scsi/scsi_scan.c | 19 + drivers/scsi/scsi_sysfs.c | 51 +- drivers/scsi/scsi_wait_scan.c | 2 +- drivers/scsi/sd.c | 91 +- drivers/scsi/sd.h | 1 + drivers/scsi/ses.c | 30 +- drivers/scsi/sg.c | 6 +- drivers/scsi/st.c | 2 +- drivers/scsi/storvsc_drv.c | 33 +- drivers/scsi/sun3_NCR5380.c | 10 +- drivers/scsi/sym53c8xx_2/sym_glue.c | 5 +- drivers/scsi/sym53c8xx_2/sym_hipd.c | 4 + drivers/scsi/virtio_scsi.c | 2 +- drivers/spi/spi-dw-mid.c | 8 +- drivers/spi/spi-dw.c | 10 +- drivers/spi/spi-fsl-spi.c | 2 +- drivers/spi/spi-mpc512x-psc.c | 2 +- drivers/spi/spi-pl022.c | 7 +- drivers/spi/spi-pxa2xx.c | 4 + drivers/spi/spi-s3c64xx.c | 41 +- drivers/spi/spi.c | 5 +- drivers/spi/spidev.c | 5 +- drivers/ssb/driver_chipcommon_pmu.c | 29 + drivers/staging/android/binder.c | 2 +- drivers/staging/android/persistent_ram.c | 19 +- drivers/staging/bcm/Bcmchar.c | 1 + drivers/staging/bcm/InterfaceInit.c | 4 +- drivers/staging/bcm/InterfaceInit.h | 5 +- drivers/staging/comedi/Kconfig | 1 + drivers/staging/comedi/comedi_compat32.c | 12 +- drivers/staging/comedi/comedi_fops.c | 73 +- drivers/staging/comedi/comedidev.h | 1 + drivers/staging/comedi/drivers.c | 34 +- drivers/staging/comedi/drivers/amplc_pc236.c | 2 +- drivers/staging/comedi/drivers/cb_pcidas64.c | 123 +- drivers/staging/comedi/drivers/cb_pcidio.c | 21 +- drivers/staging/comedi/drivers/comedi_test.c | 2 +- drivers/staging/comedi/drivers/das08.c | 4 +- drivers/staging/comedi/drivers/dt282x.c | 3 +- drivers/staging/comedi/drivers/jr3_pci.c | 2 +- drivers/staging/comedi/drivers/ni_65xx.c | 26 +- drivers/staging/comedi/drivers/ni_labpc.c | 35 +- drivers/staging/comedi/drivers/ni_pcimio.c | 16 +- drivers/staging/comedi/drivers/pcmuio.c | 12 +- drivers/staging/comedi/drivers/s626.c | 4 +- drivers/staging/comedi/drivers/ssv_dnp.c | 6 +- drivers/staging/comedi/internal.h | 1 + drivers/staging/et131x/et131x.c | 78 +- drivers/staging/iio/adc/ad7606_core.c | 1 + drivers/staging/iio/adc/ad799x_core.c | 3 +- drivers/staging/iio/adc/lpc32xx_adc.c | 4 +- drivers/staging/iio/events.h | 2 +- .../staging/iio/impedance-analyzer/ad5933.c | 47 +- drivers/staging/iio/meter/ade7758_ring.c | 2 +- drivers/staging/line6/pcm.c | 5 +- drivers/staging/media/lirc/lirc_sir.c | 60 +- drivers/staging/media/lirc/lirc_zilog.c | 12 +- drivers/staging/octeon/ethernet-tx.c | 2 +- drivers/staging/ozwpan/ozcdev.c | 3 + drivers/staging/ozwpan/ozusbsvc1.c | 19 +- drivers/staging/panel/panel.c | 13 +- drivers/staging/rtl8712/recv_linux.c | 7 +- drivers/staging/rtl8712/rtl8712_recv.c | 8 +- drivers/staging/rtl8712/rtl871x_recv.c | 13 +- drivers/staging/rtl8712/usb_intf.c | 10 + drivers/staging/serqt_usb2/serqt_usb2.c | 2 +- drivers/staging/speakup/i18n.c | 12 +- drivers/staging/speakup/i18n.h | 12 +- drivers/staging/speakup/keyhelp.c | 36 +- drivers/staging/speakup/kobjects.c | 80 +- drivers/staging/speakup/main.c | 369 +++--- drivers/staging/speakup/selection.c | 52 +- drivers/staging/speakup/serialio.c | 6 +- drivers/staging/speakup/speakup.h | 73 +- drivers/staging/speakup/speakup_acntpc.c | 6 +- drivers/staging/speakup/speakup_acntsa.c | 2 +- drivers/staging/speakup/speakup_apollo.c | 8 +- drivers/staging/speakup/speakup_audptr.c | 2 +- drivers/staging/speakup/speakup_bns.c | 2 +- drivers/staging/speakup/speakup_decext.c | 6 +- drivers/staging/speakup/speakup_decpc.c | 4 +- drivers/staging/speakup/speakup_dectlk.c | 6 +- drivers/staging/speakup/speakup_dtlk.c | 4 +- drivers/staging/speakup/speakup_dummy.c | 2 +- drivers/staging/speakup/speakup_keypc.c | 6 +- drivers/staging/speakup/speakup_ltlk.c | 2 +- drivers/staging/speakup/speakup_soft.c | 15 +- drivers/staging/speakup/speakup_spkout.c | 2 +- drivers/staging/speakup/speakup_txprt.c | 2 +- drivers/staging/speakup/spk_priv.h | 8 +- drivers/staging/speakup/synth.c | 42 +- drivers/staging/speakup/thread.c | 4 +- drivers/staging/speakup/varhandlers.c | 66 +- drivers/staging/telephony/ixj.c | 24 +- drivers/staging/tidspbridge/Kconfig | 2 +- drivers/staging/tidspbridge/core/dsp-clock.c | 4 +- drivers/staging/vt6655/rf.c | 1 + drivers/staging/vt6656/baseband.c | 14 +- drivers/staging/vt6656/bssdb.h | 1 - drivers/staging/vt6656/dpc.c | 6 +- drivers/staging/vt6656/hostap.c | 2 +- drivers/staging/vt6656/int.h | 1 - drivers/staging/vt6656/iocmd.h | 33 +- drivers/staging/vt6656/iowpa.h | 8 +- drivers/staging/vt6656/key.c | 53 +- drivers/staging/vt6656/key.h | 8 +- drivers/staging/vt6656/mac.c | 6 +- drivers/staging/vt6656/main_usb.c | 9 +- drivers/staging/vt6656/rf.c | 3 + drivers/staging/vt6656/rndis.h | 1 + drivers/staging/vt6656/rxtx.c | 56 +- drivers/staging/vt6656/ttype.h | 16 +- drivers/staging/vt6656/usbpipe.c | 28 +- drivers/staging/vt6656/wcmd.c | 20 +- drivers/staging/vt6656/wpa2.h | 4 +- drivers/staging/winbond/wbusb.c | 2 +- drivers/staging/wlags49_h2/wl_priv.c | 9 +- drivers/staging/wlan-ng/prism2mgmt.c | 2 +- drivers/staging/zcache/zcache-main.c | 7 +- drivers/staging/zram/zram_sysfs.c | 240 ++++ drivers/target/iscsi/iscsi_target.c | 88 +- drivers/target/iscsi/iscsi_target_auth.c | 20 +- drivers/target/iscsi/iscsi_target_configfs.c | 2 +- drivers/target/iscsi/iscsi_target_core.h | 7 +- drivers/target/iscsi/iscsi_target_erl0.c | 4 +- drivers/target/iscsi/iscsi_target_erl1.c | 7 +- drivers/target/iscsi/iscsi_target_login.c | 69 +- drivers/target/iscsi/iscsi_target_nego.c | 12 +- .../target/iscsi/iscsi_target_parameters.c | 10 +- .../target/iscsi/iscsi_target_parameters.h | 4 +- drivers/target/iscsi/iscsi_target_tpg.c | 12 + drivers/target/iscsi/iscsi_target_tq.c | 28 +- drivers/target/iscsi/iscsi_target_util.c | 48 +- drivers/target/iscsi/iscsi_target_util.h | 1 + drivers/target/target_core_alua.c | 17 +- drivers/target/target_core_cdb.c | 54 +- drivers/target/target_core_configfs.c | 11 +- drivers/target/target_core_device.c | 40 +- drivers/target/target_core_fabric_configfs.c | 23 +- drivers/target/target_core_file.c | 90 +- drivers/target/target_core_file.h | 2 +- drivers/target/target_core_internal.h | 2 +- drivers/target/target_core_pr.c | 7 +- drivers/target/target_core_pscsi.c | 14 +- drivers/target/target_core_pscsi.h | 1 + drivers/target/target_core_rd.c | 2 +- drivers/target/target_core_tmr.c | 6 +- drivers/target/target_core_tpg.c | 11 +- drivers/target/target_core_transport.c | 35 +- drivers/target/tcm_fc/tfc_cmd.c | 2 + drivers/target/tcm_fc/tfc_io.c | 3 +- drivers/target/tcm_fc/tfc_sess.c | 18 +- drivers/thermal/thermal_sys.c | 1 + drivers/tty/hvc/hvc_console.c | 8 +- drivers/tty/hvc/hvc_xen.c | 55 +- drivers/tty/hvc/hvsi_lib.c | 4 +- drivers/tty/n_gsm.c | 157 ++- drivers/tty/n_tty.c | 17 +- drivers/tty/pty.c | 7 +- drivers/tty/serial/8250/8250.c | 45 +- drivers/tty/serial/8250/8250.h | 1 + drivers/tty/serial/8250/8250_dw.c | 2 +- drivers/tty/serial/8250/8250_pci.c | 109 +- drivers/tty/serial/Kconfig | 2 +- drivers/tty/serial/amba-pl011.c | 15 +- drivers/tty/serial/atmel_serial.c | 42 +- drivers/tty/serial/ifx6x60.c | 1 + drivers/tty/serial/imx.c | 30 +- drivers/tty/serial/mxs-auart.c | 40 +- drivers/tty/serial/of_serial.c | 7 +- drivers/tty/serial/pch_uart.c | 93 +- drivers/tty/serial/pmac_zilog.c | 15 +- drivers/tty/serial/samsung.c | 4 + drivers/tty/serial/serial_core.c | 7 +- drivers/tty/serial/sunsab.c | 9 + drivers/tty/serial/sunsu.c | 21 +- drivers/tty/serial/uartlite.c | 11 +- drivers/tty/serial/xilinx_uartps.c | 12 +- drivers/tty/tty_buffer.c | 14 +- drivers/tty/tty_io.c | 58 +- drivers/tty/tty_ioctl.c | 16 +- drivers/tty/vt/consolemap.c | 4 + drivers/tty/vt/keyboard.c | 3 - drivers/tty/vt/vc_screen.c | 6 +- drivers/tty/vt/vt.c | 153 ++- drivers/usb/atm/cxacru.c | 3 +- drivers/usb/class/cdc-acm.c | 248 +++- drivers/usb/class/cdc-acm.h | 2 +- drivers/usb/class/cdc-wdm.c | 110 +- drivers/usb/class/usblp.c | 2 +- drivers/usb/core/buffer.c | 26 +- drivers/usb/core/config.c | 29 +- drivers/usb/core/devices.c | 2 +- drivers/usb/core/devio.c | 63 +- drivers/usb/core/driver.c | 165 ++- drivers/usb/core/hcd-pci.c | 34 +- drivers/usb/core/hcd.c | 24 +- drivers/usb/core/hub.c | 537 +++++--- drivers/usb/core/inode.c | 6 +- drivers/usb/core/message.c | 59 +- drivers/usb/core/otg_whitelist.h | 5 - drivers/usb/core/quirks.c | 196 ++- drivers/usb/core/urb.c | 21 + drivers/usb/core/usb.c | 1 + drivers/usb/core/usb.h | 6 +- drivers/usb/dwc3/core.c | 4 +- drivers/usb/dwc3/core.h | 11 +- drivers/usb/dwc3/dwc3-pci.c | 4 + drivers/usb/dwc3/ep0.c | 5 +- drivers/usb/dwc3/gadget.c | 113 +- drivers/usb/dwc3/gadget.h | 2 +- drivers/usb/early/ehci-dbgp.c | 2 +- drivers/usb/gadget/at91_udc.c | 12 +- drivers/usb/gadget/composite.c | 1 + drivers/usb/gadget/dummy_hcd.c | 17 +- drivers/usb/gadget/f_ecm.c | 4 +- drivers/usb/gadget/f_eem.c | 5 +- drivers/usb/gadget/f_fs.c | 12 +- drivers/usb/gadget/f_mass_storage.c | 2 + drivers/usb/gadget/f_midi.c | 1 + drivers/usb/gadget/f_ncm.c | 4 +- drivers/usb/gadget/f_phonet.c | 8 +- drivers/usb/gadget/f_rndis.c | 4 +- drivers/usb/gadget/f_subset.c | 4 +- drivers/usb/gadget/f_uvc.c | 39 +- drivers/usb/gadget/fsl_udc_core.c | 2 + drivers/usb/gadget/inode.c | 17 +- drivers/usb/gadget/u_ether.c | 18 +- drivers/usb/gadget/udc-core.c | 2 +- drivers/usb/host/ehci-hcd.c | 2 + drivers/usb/host/ehci-hub.c | 6 +- drivers/usb/host/ehci-mxc.c | 2 +- drivers/usb/host/ehci-omap.c | 20 +- drivers/usb/host/ehci-pci.c | 15 +- drivers/usb/host/ehci-platform.c | 2 - drivers/usb/host/ehci-q.c | 16 +- drivers/usb/host/ehci-sched.c | 4 +- drivers/usb/host/ehci-sysfs.c | 8 +- drivers/usb/host/isp1760-hcd.c | 3 + drivers/usb/host/ohci-at91.c | 24 +- drivers/usb/host/ohci-pci.c | 2 +- drivers/usb/host/ohci-q.c | 19 + drivers/usb/host/pci-quirks.c | 130 +- drivers/usb/host/pci-quirks.h | 2 + drivers/usb/host/uhci-hcd.c | 15 +- drivers/usb/host/uhci-hub.c | 3 +- drivers/usb/host/uhci-pci.c | 2 +- drivers/usb/host/whci/qset.c | 4 + drivers/usb/host/xhci-hub.c | 192 ++- drivers/usb/host/xhci-mem.c | 116 +- drivers/usb/host/xhci-pci.c | 78 +- drivers/usb/host/xhci-plat.c | 4 +- drivers/usb/host/xhci-ring.c | 539 ++++++-- drivers/usb/host/xhci.c | 400 ++++-- drivers/usb/host/xhci.h | 59 +- drivers/usb/misc/adutux.c | 2 +- drivers/usb/misc/appledisplay.c | 1 + drivers/usb/misc/emi62.c | 2 +- drivers/usb/misc/sisusbvga/sisusb.c | 2 + drivers/usb/misc/usbtest.c | 57 +- drivers/usb/musb/cppi_dma.c | 1 + drivers/usb/musb/davinci.c | 1 + drivers/usb/musb/davinci.h | 4 +- drivers/usb/musb/musb_core.c | 79 +- drivers/usb/musb/musb_gadget.c | 23 +- drivers/usb/otg/gpio_vbus.c | 8 +- drivers/usb/otg/otg_fsm.c | 4 +- drivers/usb/renesas_usbhs/mod_gadget.c | 3 + drivers/usb/serial/ark3116.c | 12 +- drivers/usb/serial/bus.c | 13 +- drivers/usb/serial/ch341.c | 11 +- drivers/usb/serial/console.c | 15 +- drivers/usb/serial/cp210x.c | 52 +- drivers/usb/serial/cypress_m8.c | 32 +- drivers/usb/serial/cypress_m8.h | 6 +- drivers/usb/serial/ftdi_sio.c | 287 ++++- drivers/usb/serial/ftdi_sio_ids.h | 295 ++++- drivers/usb/serial/garmin_gps.c | 7 +- drivers/usb/serial/generic.c | 9 +- drivers/usb/serial/io_edgeport.c | 12 +- drivers/usb/serial/io_ti.c | 68 +- drivers/usb/serial/io_usbvend.h | 2 +- drivers/usb/serial/ipaq.c | 3 +- drivers/usb/serial/iuu_phoenix.c | 4 +- drivers/usb/serial/keyspan.c | 101 +- drivers/usb/serial/kobil_sct.c | 4 +- drivers/usb/serial/mct_u232.c | 62 +- drivers/usb/serial/metro-usb.c | 8 - drivers/usb/serial/mos7720.c | 46 +- drivers/usb/serial/mos7840.c | 136 +- drivers/usb/serial/opticon.c | 13 +- drivers/usb/serial/option.c | 1051 +++++++++++---- drivers/usb/serial/oti6858.c | 10 +- drivers/usb/serial/pl2303.c | 58 +- drivers/usb/serial/pl2303.h | 10 +- drivers/usb/serial/qcaux.c | 11 +- drivers/usb/serial/qcserial.c | 16 +- drivers/usb/serial/sierra.c | 103 +- drivers/usb/serial/spcp8x5.c | 49 +- drivers/usb/serial/ssu100.c | 42 +- drivers/usb/serial/ti_usb_3410_5052.c | 31 +- drivers/usb/serial/ti_usb_3410_5052.h | 5 +- drivers/usb/serial/usb-serial.c | 74 +- drivers/usb/serial/usb_wwan.c | 132 +- drivers/usb/serial/visor.c | 11 +- drivers/usb/serial/whiteheat.c | 41 +- drivers/usb/storage/Kconfig | 6 +- drivers/usb/storage/cypress_atacb.c | 16 +- drivers/usb/storage/scsiglue.c | 10 + drivers/usb/storage/shuttle_usbat.c | 2 +- drivers/usb/storage/transport.c | 26 + drivers/usb/storage/uas.c | 90 +- drivers/usb/storage/unusual_cypress.h | 2 +- drivers/usb/storage/unusual_devs.h | 126 ++ drivers/usb/storage/usb.c | 12 + drivers/usb/storage/usual-tables.c | 15 + drivers/usb/wusbcore/wa-rpipe.c | 5 +- drivers/usb/wusbcore/wa-xfer.c | 5 +- drivers/uwb/lc-dev.c | 13 +- drivers/vhost/net.c | 26 +- drivers/vhost/vhost.c | 3 +- drivers/video/arkfb.c | 2 +- drivers/video/atmel_lcdfb.c | 22 +- drivers/video/aty/mach64_accel.c | 3 +- drivers/video/aty/mach64_cursor.c | 22 +- drivers/video/au1200fb.c | 1 - drivers/video/backlight/adp8860_bl.c | 2 +- drivers/video/backlight/adp8870_bl.c | 2 +- drivers/video/backlight/atmel-pwm-bl.c | 7 +- drivers/video/cfbcopyarea.c | 153 +-- drivers/video/console/bitblit.c | 3 +- drivers/video/console/fbcon.c | 69 +- drivers/video/console/fbcon_ccw.c | 3 +- drivers/video/console/fbcon_cw.c | 3 +- drivers/video/console/fbcon_ud.c | 3 +- drivers/video/console/vgacon.c | 39 +- drivers/video/fbmem.c | 11 +- drivers/video/fbsysfs.c | 3 + drivers/video/fsl-diu-fb.c | 6 +- drivers/video/kyro/fbdev.c | 6 +- drivers/video/logo/logo.c | 17 +- drivers/video/matrox/matroxfb_accel.c | 38 +- drivers/video/matrox/matroxfb_base.h | 4 +- drivers/video/mxsfb.c | 3 +- drivers/video/omap2/dss/apply.c | 2 +- drivers/video/omap2/dss/dispc.c | 5 +- drivers/video/omap2/dss/dss.h | 3 +- drivers/video/omap2/omapfb/omapfb-main.c | 2 +- drivers/video/s3fb.c | 2 +- drivers/video/sh_mobile_lcdcfb.c | 5 +- drivers/video/sh_mobile_lcdcfb.h | 1 + drivers/video/smscufx.c | 2 +- drivers/video/tgafb.c | 289 +---- drivers/video/udlfb.c | 2 +- drivers/video/via/via_clock.c | 19 + drivers/video/vt8623fb.c | 2 +- drivers/virtio/virtio.c | 19 +- drivers/virtio/virtio_balloon.c | 6 + drivers/virtio/virtio_pci.c | 46 +- drivers/virtio/virtio_ring.c | 79 +- drivers/w1/w1.c | 3 +- drivers/w1/w1_netlink.c | 25 +- drivers/watchdog/hpwdt.c | 3 + drivers/watchdog/omap_wdt.c | 7 + drivers/watchdog/sc1200wdt.c | 3 +- drivers/watchdog/sp805_wdt.c | 4 +- drivers/watchdog/ts72xx_wdt.c | 3 +- drivers/xen/events.c | 53 +- drivers/xen/evtchn.c | 31 +- drivers/xen/gntdev.c | 41 +- drivers/xen/grant-table.c | 69 +- drivers/xen/manage.c | 7 - drivers/xen/swiotlb-xen.c | 2 +- drivers/xen/xen-pciback/conf_space.c | 6 +- drivers/xen/xen-pciback/conf_space.h | 2 + drivers/xen/xen-pciback/conf_space_header.c | 59 +- drivers/xen/xen-pciback/pci_stub.c | 8 +- drivers/xen/xen-pciback/pciback.h | 1 + drivers/xen/xen-pciback/pciback_ops.c | 98 +- firmware/ihex2fw.c | 1 + fs/9p/vfs_inode.c | 7 +- fs/9p/vfs_inode_dotl.c | 5 +- fs/affs/amigaffs.c | 2 +- fs/aio.c | 2 +- fs/attr.c | 5 + fs/autofs4/dev-ioctl.c | 11 +- fs/autofs4/expire.c | 19 +- fs/autofs4/root.c | 8 +- fs/binfmt_elf.c | 43 +- fs/binfmt_em86.c | 1 - fs/binfmt_misc.c | 11 +- fs/binfmt_script.c | 8 +- fs/bio.c | 20 +- fs/block_dev.c | 15 +- fs/btrfs/async-thread.c | 9 +- fs/btrfs/backref.c | 2 +- fs/btrfs/compression.c | 2 + fs/btrfs/disk-io.c | 6 - fs/btrfs/extent-tree.c | 79 +- fs/btrfs/extent_io.c | 36 +- fs/btrfs/extent_io.h | 2 + fs/btrfs/file-item.c | 2 +- fs/btrfs/inode-map.c | 2 +- fs/btrfs/inode.c | 32 +- fs/btrfs/ioctl.c | 15 +- fs/btrfs/relocation.c | 14 +- fs/btrfs/scrub.c | 3 +- fs/btrfs/tree-log.c | 54 +- fs/btrfs/volumes.c | 12 +- fs/btrfs/xattr.c | 50 +- fs/buffer.c | 65 +- fs/cachefiles/rdwr.c | 80 +- fs/ceph/addr.c | 57 +- fs/ceph/caps.c | 16 +- fs/ceph/debugfs.c | 1 + fs/ceph/dir.c | 8 +- fs/ceph/export.c | 18 +- fs/ceph/file.c | 4 +- fs/ceph/inode.c | 36 +- fs/ceph/locks.c | 73 +- fs/ceph/mds_client.c | 155 +-- fs/ceph/mds_client.h | 5 +- fs/ceph/snap.c | 2 +- fs/ceph/super.c | 17 +- fs/ceph/super.h | 11 +- fs/cifs/asn1.c | 53 +- fs/cifs/cifs_dfs_ref.c | 6 +- fs/cifs/cifs_unicode.c | 31 +- fs/cifs/cifs_unicode.h | 8 +- fs/cifs/cifsacl.c | 49 +- fs/cifs/cifsencrypt.c | 59 +- fs/cifs/cifsfs.c | 33 +- fs/cifs/cifsfs.h | 4 + fs/cifs/cifsglob.h | 2 + fs/cifs/cifsproto.h | 6 +- fs/cifs/cifssmb.c | 50 +- fs/cifs/connect.c | 102 +- fs/cifs/file.c | 103 +- fs/cifs/inode.c | 16 +- fs/cifs/readdir.c | 30 +- fs/cifs/sess.c | 6 +- fs/cifs/transport.c | 7 + fs/coda/cache.c | 2 +- fs/compat.c | 25 +- fs/compat_ioctl.c | 2 + fs/configfs/dir.c | 16 +- fs/dcache.c | 213 +-- fs/debugfs/inode.c | 105 +- fs/devpts/inode.c | 1 + fs/direct-io.c | 2 +- fs/ecryptfs/dentry.c | 32 +- fs/ecryptfs/file.c | 61 +- fs/ecryptfs/main.c | 16 +- fs/eventpoll.c | 22 +- fs/exec.c | 61 +- fs/exofs/ore.c | 59 +- fs/exofs/ore_raid.c | 67 +- fs/exofs/super.c | 2 +- fs/exportfs/expfs.c | 2 +- fs/ext2/inode.c | 2 + fs/ext2/xip.c | 1 + fs/ext3/dir.c | 167 ++- fs/ext3/ext3.h | 6 +- fs/ext3/hash.c | 4 +- fs/ext3/inode.c | 20 +- fs/ext3/namei.c | 7 +- fs/ext3/super.c | 11 +- fs/ext4/Kconfig | 3 +- fs/ext4/acl.c | 6 +- fs/ext4/balloc.c | 18 +- fs/ext4/bitmap.c | 12 +- fs/ext4/ext4.h | 68 +- fs/ext4/extents.c | 203 ++- fs/ext4/file.c | 2 +- fs/ext4/fsync.c | 5 +- fs/ext4/ialloc.c | 37 +- fs/ext4/indirect.c | 11 +- fs/ext4/inode.c | 156 ++- fs/ext4/ioctl.c | 14 +- fs/ext4/mballoc.c | 63 +- fs/ext4/mmp.c | 2 + fs/ext4/move_extent.c | 174 +-- fs/ext4/namei.c | 102 +- fs/ext4/page-io.c | 9 +- fs/ext4/resize.c | 61 +- fs/ext4/super.c | 283 ++-- fs/ext4/xattr.c | 43 +- fs/fat/inode.c | 15 +- fs/fifo.c | 9 +- fs/file.c | 2 +- fs/file_table.c | 130 -- fs/fs-writeback.c | 29 +- fs/fscache/netfs.c | 34 +- fs/fscache/page.c | 2 +- fs/fscache/stats.c | 2 +- fs/fuse/dev.c | 8 +- fs/fuse/dir.c | 23 +- fs/fuse/file.c | 15 +- fs/fuse/fuse_i.h | 12 + fs/fuse/inode.c | 23 +- fs/gfs2/aops.c | 30 + fs/gfs2/export.c | 4 + fs/gfs2/lops.c | 18 +- fs/gfs2/ops_fstype.c | 12 +- fs/gfs2/super.c | 6 +- fs/gfs2/trans.c | 8 + fs/hfs/bnode.c | 9 +- fs/hfs/brec.c | 20 +- fs/hfs/super.c | 4 +- fs/hfsplus/bnode.c | 3 - fs/hfsplus/brec.c | 20 +- fs/hfsplus/extents.c | 2 +- fs/hfsplus/ioctl.c | 9 +- fs/hfsplus/options.c | 4 +- fs/hfsplus/wrapper.c | 2 +- fs/hostfs/hostfs_kern.c | 2 +- fs/hpfs/dir.c | 10 +- fs/hpfs/file.c | 5 +- fs/hpfs/map.c | 3 +- fs/hpfs/namei.c | 25 +- fs/hpfs/super.c | 27 +- fs/hugetlbfs/inode.c | 20 +- fs/inode.c | 2 +- fs/internal.h | 3 - fs/ioprio.c | 14 +- fs/isofs/export.c | 3 +- fs/isofs/inode.c | 31 +- fs/isofs/isofs.h | 23 +- fs/isofs/rock.c | 48 +- fs/jbd/commit.c | 45 +- fs/jbd/transaction.c | 66 +- fs/jbd2/checkpoint.c | 46 +- fs/jbd2/commit.c | 2 +- fs/jbd2/journal.c | 91 +- fs/jbd2/transaction.c | 25 +- fs/jffs2/compr_rtime.c | 4 +- fs/jffs2/file.c | 41 +- fs/jffs2/nodelist.h | 2 +- fs/jffs2/nodemgmt.c | 20 +- fs/jffs2/scan.c | 5 + fs/jffs2/wbuf.c | 8 +- fs/jfs/inode.c | 2 +- fs/jfs/jfs_dtree.c | 35 +- fs/jfs/jfs_inode.c | 3 +- fs/jfs/jfs_logmgr.c | 3 +- fs/libfs.c | 12 +- fs/lockd/clntlock.c | 16 +- fs/lockd/clntxdr.c | 2 +- fs/lockd/mon.c | 10 +- fs/lockd/svc.c | 46 +- fs/lockd/svclock.c | 12 + fs/lockd/svcproc.c | 3 +- fs/locks.c | 15 +- fs/namei.c | 36 +- fs/namespace.c | 6 +- fs/ncpfs/dir.c | 11 +- fs/ncpfs/ioctl.c | 1 - fs/ncpfs/ncplib_kernel.h | 4 +- fs/nfs/blocklayout/blocklayout.c | 177 ++- fs/nfs/blocklayout/blocklayout.h | 1 + fs/nfs/blocklayout/blocklayoutdm.c | 4 +- fs/nfs/blocklayout/extents.c | 2 +- fs/nfs/callback.c | 20 +- fs/nfs/callback_xdr.c | 10 +- fs/nfs/client.c | 3 +- fs/nfs/delegation.c | 13 +- fs/nfs/dir.c | 15 +- fs/nfs/dns_resolve.c | 5 +- fs/nfs/file.c | 7 +- fs/nfs/getroot.c | 2 +- fs/nfs/idmap.c | 105 +- fs/nfs/inode.c | 12 +- fs/nfs/internal.h | 5 +- fs/nfs/mount_clnt.c | 2 +- fs/nfs/namespace.c | 39 +- fs/nfs/nfs3proc.c | 10 +- fs/nfs/nfs3xdr.c | 2 +- fs/nfs/nfs4filelayout.c | 1 - fs/nfs/nfs4namespace.c | 3 +- fs/nfs/nfs4proc.c | 256 ++-- fs/nfs/nfs4renewd.c | 12 +- fs/nfs/nfs4state.c | 53 +- fs/nfs/nfs4xdr.c | 50 +- fs/nfs/objlayout/objio_osd.c | 26 +- fs/nfs/pnfs.c | 58 +- fs/nfs/pnfs.h | 2 +- fs/nfs/proc.c | 43 - fs/nfs/super.c | 8 +- fs/nfs/unlink.c | 20 +- fs/nfs/write.c | 10 +- fs/nfsd/export.c | 6 +- fs/nfsd/nfs4acl.c | 17 +- fs/nfsd/nfs4callback.c | 8 +- fs/nfsd/nfs4idmap.c | 2 +- fs/nfsd/nfs4proc.c | 52 +- fs/nfsd/nfs4state.c | 51 +- fs/nfsd/nfs4xdr.c | 56 +- fs/nfsd/nfsctl.c | 86 +- fs/nfsd/nfsd.h | 17 +- fs/nfsd/nfssvc.c | 59 +- fs/nfsd/vfs.c | 200 +-- fs/nilfs2/btree.c | 47 +- fs/nilfs2/gcinode.c | 2 + fs/nilfs2/inode.c | 32 +- fs/nilfs2/ioctl.c | 9 +- fs/nilfs2/nilfs.h | 2 - fs/nilfs2/page.c | 2 + fs/nilfs2/segbuf.c | 5 +- fs/nilfs2/segment.c | 68 +- fs/nilfs2/segment.h | 5 + fs/nilfs2/super.c | 3 + fs/nilfs2/the_nilfs.c | 1 + fs/nilfs2/the_nilfs.h | 2 + fs/notify/fanotify/fanotify.c | 7 + fs/notify/fanotify/fanotify_user.c | 3 +- fs/notify/fsnotify.c | 4 +- fs/notify/inode_mark.c | 17 +- fs/notify/inotify/inotify_user.c | 10 +- fs/ocfs2/aops.c | 18 +- fs/ocfs2/buffer_head_io.c | 2 - fs/ocfs2/dcache.c | 2 +- fs/ocfs2/dlm/dlmmaster.c | 38 +- fs/ocfs2/dlm/dlmrecovery.c | 35 +- fs/ocfs2/dlmglue.c | 15 +- fs/ocfs2/extent_map.c | 3 +- fs/ocfs2/file.c | 28 +- fs/ocfs2/quota_global.c | 27 +- fs/ocfs2/quota_local.c | 4 - fs/ocfs2/resize.c | 15 +- fs/ocfs2/suballoc.c | 7 +- fs/ocfs2/suballoc.h | 2 +- fs/ocfs2/super.c | 4 +- fs/ocfs2/xattr.c | 12 +- fs/omfs/inode.c | 3 +- fs/open.c | 15 +- fs/pnode.c | 4 +- fs/posix_acl.c | 6 + fs/proc/array.c | 2 +- fs/proc/base.c | 18 +- fs/proc/inode.c | 12 +- fs/proc/page.c | 8 +- fs/proc/proc_sysctl.c | 5 +- fs/proc/stat.c | 16 +- fs/proc/task_mmu.c | 20 +- fs/pstore/platform.c | 35 +- fs/quota/dquot.c | 14 +- fs/ramfs/file-nommu.c | 1 + fs/reiserfs/dir.c | 6 +- fs/reiserfs/inode.c | 16 +- fs/reiserfs/stree.c | 4 + fs/reiserfs/super.c | 68 +- fs/reiserfs/xattr.c | 4 +- fs/select.c | 10 +- fs/splice.c | 67 +- fs/stat.c | 5 +- fs/statfs.c | 2 +- fs/super.c | 48 +- fs/sysfs/dir.c | 48 +- fs/sysv/inode.c | 10 +- fs/ubifs/commit.c | 10 +- fs/ubifs/debug.h | 2 +- fs/ubifs/dir.c | 56 +- fs/ubifs/find.c | 12 +- fs/ubifs/log.c | 19 +- fs/ubifs/lprops.c | 6 + fs/ubifs/master.c | 7 +- fs/ubifs/orphan.c | 5 +- fs/ubifs/sb.c | 8 +- fs/ubifs/shrinker.c | 1 - fs/ubifs/super.c | 13 +- fs/ubifs/ubifs.h | 7 +- fs/udf/dir.c | 3 +- fs/udf/file.c | 35 +- fs/udf/inode.c | 38 +- fs/udf/namei.c | 4 +- fs/udf/super.c | 103 +- fs/udf/symlink.c | 57 +- fs/udf/udf_sb.h | 2 +- fs/udf/udfdecl.h | 3 +- fs/udf/unicode.c | 28 +- fs/xfs/xfs_aops.c | 2 +- fs/xfs/xfs_buf.c | 14 +- fs/xfs/xfs_export.c | 3 + fs/xfs/xfs_ioctl.c | 3 +- fs/xfs/xfs_ioctl32.c | 3 +- fs/xfs/xfs_iops.c | 47 +- fs/xfs/xfs_log_recover.c | 2 +- fs/xfs/xfs_super.c | 4 +- include/acpi/actypes.h | 21 + include/acpi/platform/acenv.h | 1 + include/asm-generic/mutex-xchg.h | 11 +- include/asm-generic/pgtable.h | 42 +- include/asm-generic/signal.h | 4 + include/asm-generic/tlb.h | 9 + include/crypto/scatterwalk.h | 3 +- include/drm/drm_mem_util.h | 4 +- include/drm/drm_mode.h | 7 +- include/drm/drm_pciids.h | 43 +- include/linux/Kbuild | 2 + include/linux/acpi.h | 6 + include/linux/aio.h | 1 + include/linux/ata.h | 2 +- include/linux/audit.h | 4 +- include/linux/auto_fs.h | 25 +- include/linux/binfmts.h | 6 +- include/linux/bitops.h | 15 + include/linux/blk_types.h | 4 +- include/linux/blkdev.h | 5 +- include/linux/buffer_head.h | 54 +- include/linux/ceph/auth.h | 30 +- include/linux/ceph/libceph.h | 4 +- include/linux/ceph/messenger.h | 78 +- include/linux/ceph/mon_client.h | 2 +- include/linux/ceph/msgpool.h | 3 +- include/linux/ceph/osd_client.h | 13 +- include/linux/ceph/osdmap.h | 6 +- include/linux/cgroup.h | 53 +- include/linux/compiler-gcc.h | 6 + include/linux/compiler-gcc4.h | 16 + include/linux/compiler-gcc5.h | 66 + include/linux/compiler-intel.h | 9 +- include/linux/console.h | 2 + include/linux/cpu.h | 9 +- include/linux/cpuset.h | 4 +- include/linux/crush/crush.h | 7 +- include/linux/crush/mapper.h | 6 +- include/linux/dcache.h | 10 +- include/linux/device-mapper.h | 4 +- include/linux/device.h | 5 + include/linux/efi.h | 45 +- include/linux/enclosure.h | 4 + include/linux/firewire-cdev.h | 4 +- include/linux/firewire.h | 2 + include/linux/freezer.h | 50 +- include/linux/fs.h | 15 +- include/linux/fsnotify.h | 6 +- include/linux/ftrace.h | 5 +- include/linux/ftrace_event.h | 4 +- include/linux/hid.h | 2 +- include/linux/hidraw.h | 4 +- include/linux/highmem.h | 7 + include/linux/hrtimer.h | 10 +- include/linux/hugetlb.h | 31 +- include/linux/icmpv6.h | 2 + include/linux/idr.h | 11 + include/linux/if_cablemodem.h | 12 +- include/linux/if_pppox.h | 4 +- include/linux/if_team.h | 1 + include/linux/if_vlan.h | 14 +- include/linux/init_task.h | 14 +- include/linux/input/eeti_ts.h | 1 + include/linux/ipc_namespace.h | 2 +- include/linux/ipv6.h | 1 + include/linux/irqdesc.h | 5 +- include/linux/jbd2.h | 9 +- include/linux/jhash.h | 17 +- include/linux/jiffies.h | 20 +- include/linux/kernel-page-flags.h | 4 + include/linux/kernel.h | 3 +- include/linux/kernel_stat.h | 5 + include/linux/khugepaged.h | 17 +- include/linux/kobject.h | 2 +- include/linux/ktime.h | 7 - include/linux/kvm_host.h | 2 +- include/linux/kvm_types.h | 1 + include/linux/libata.h | 17 + include/linux/list.h | 16 + include/linux/lockd/bind.h | 4 +- include/linux/lzo.h | 15 +- include/linux/memblock.h | 5 +- include/linux/memory.h | 2 +- include/linux/mempolicy.h | 20 +- include/linux/mfd/ezx-pcap.h | 1 + include/linux/mm.h | 12 +- include/linux/mm_types.h | 11 + include/linux/mmu_notifier.h | 1 + include/linux/mmzone.h | 2 +- include/linux/moduleparam.h | 10 +- include/linux/mount.h | 4 +- include/linux/msg.h | 6 +- include/linux/mtd/map.h | 4 +- include/linux/mtd/nand.h | 3 - include/linux/mv643xx_eth.h | 2 + include/linux/nbd.h | 1 + include/linux/net.h | 57 +- include/linux/netdevice.h | 15 +- .../linux/netfilter/ipset/ip_set_timeout.h | 4 + include/linux/netlink.h | 21 +- include/linux/nfs_fs.h | 5 - include/linux/nfs_xdr.h | 2 +- include/linux/nilfs2_fs.h | 2 +- include/linux/of.h | 84 +- include/linux/oom.h | 4 + include/linux/page-flags.h | 8 +- include/linux/pci.h | 6 +- include/linux/pci_ids.h | 5 +- include/linux/perf_event.h | 25 +- include/linux/posix_types.h | 18 +- include/linux/pps_kernel.h | 17 +- include/linux/preempt.h | 20 +- include/linux/printk.h | 6 +- include/linux/pstore.h | 6 + include/linux/ptrace.h | 3 + include/linux/quota.h | 1 + include/linux/radix-tree.h | 5 +- include/linux/random.h | 13 +- include/linux/rculist.h | 18 + include/linux/rculist_nulls.h | 7 +- include/linux/rmap.h | 10 + include/linux/rpmsg.h | 6 + include/linux/sched.h | 74 +- include/linux/seq_file.h | 35 + include/linux/serial_core.h | 6 +- include/linux/skbuff.h | 66 +- include/linux/slab.h | 2 +- include/linux/snmp.h | 3 +- include/linux/socket.h | 6 +- include/linux/spinlock_up.h | 29 +- include/linux/splice.h | 8 +- include/linux/ssb/ssb_driver_chipcommon.h | 2 + include/linux/string.h | 4 +- include/linux/sunrpc/cache.h | 16 + include/linux/sunrpc/svc.h | 1 + include/linux/sunrpc/svcsock.h | 1 + include/linux/sunrpc/xprt.h | 3 + include/linux/swapops.h | 11 +- include/linux/sysfs.h | 9 + include/linux/syslog.h | 6 + include/linux/thermal.h | 2 +- include/linux/time.h | 50 +- include/linux/tracepoint.h | 6 + include/linux/unix_diag.h | 4 +- include/linux/usb.h | 40 + include/linux/usb/audio.h | 6 +- include/linux/usb/ch9.h | 6 + include/linux/usb/hcd.h | 6 +- include/linux/usb/quirks.h | 14 + include/linux/usb/serial.h | 2 + include/linux/usb_usual.h | 4 +- include/linux/virtio.h | 39 +- include/linux/virtio_console.h | 2 +- include/linux/vt_kern.h | 3 + include/linux/wait.h | 66 +- include/linux/writeback.h | 1 - include/linux/xfrm.h | 2 + include/media/v4l2-ctrls.h | 1 + include/net/addrconf.h | 3 + include/net/af_unix.h | 5 +- include/net/bluetooth/hci_core.h | 1 + include/net/bluetooth/mgmt.h | 3 + include/net/bluetooth/smp.h | 2 +- include/net/cfg80211.h | 9 + include/net/cipso_ipv4.h | 31 +- include/net/dst.h | 12 + include/net/inet6_hashtables.h | 8 +- include/net/inet_connection_sock.h | 1 + include/net/inet_frag.h | 9 + include/net/inet_sock.h | 1 + include/net/inetpeer.h | 26 +- include/net/ip.h | 35 +- include/net/ip6_fib.h | 3 +- include/net/ip6_route.h | 5 + include/net/ip_fib.h | 14 +- include/net/ip_vs.h | 2 +- include/net/ipip.h | 2 +- include/net/ipv6.h | 24 +- include/net/mac80211.h | 5 + include/net/ndisc.h | 2 + include/net/netfilter/nf_conntrack_ecache.h | 1 + include/net/ping.h | 2 +- include/net/regulatory.h | 2 +- include/net/sch_generic.h | 7 +- include/net/scm.h | 2 +- include/net/sctp/sctp.h | 5 + include/net/sctp/sm.h | 6 +- include/net/sctp/structs.h | 8 +- include/net/secure_seq.h | 2 - include/net/sock.h | 18 +- include/net/tcp.h | 2 + include/net/xfrm.h | 3 + include/rdma/rdma_netlink.h | 1 + include/scsi/libsas.h | 6 +- include/scsi/osd_ore.h | 1 + include/scsi/scsi_cmnd.h | 8 +- include/scsi/scsi_device.h | 1 + include/scsi/scsi_devinfo.h | 1 + include/sound/ak4113.h | 2 +- include/sound/ak4114.h | 2 +- include/sound/core.h | 3 + include/sound/emu10k1.h | 14 +- include/sound/memalloc.h | 2 +- include/sound/tlv.h | 24 +- include/sound/wm8904.h | 2 +- include/target/target_core_base.h | 5 + include/trace/events/block.h | 33 +- include/trace/events/kmem.h | 4 +- include/trace/events/module.h | 2 +- include/trace/events/random.h | 134 ++ include/trace/events/xen.h | 8 + include/trace/ftrace.h | 5 +- include/trace/syscall.h | 15 + include/video/atmel_lcdc.h | 1 + include/xen/events.h | 5 +- include/xen/grant_table.h | 3 +- include/xen/interface/io/blkif.h | 10 + include/xen/interface/io/netif.h | 19 + include/xen/interface/io/ring.h | 19 + init/Kconfig | 1 + init/main.c | 21 +- ipc/msg.c | 2 + ipc/msgutil.c | 12 +- ipc/sem.c | 23 +- ipc/shm.c | 6 +- ipc/util.h | 4 +- kernel/async.c | 13 +- kernel/audit.c | 7 +- kernel/audit_tree.c | 14 +- kernel/auditsc.c | 2 +- kernel/cgroup.c | 127 +- kernel/cgroup_freezer.c | 13 +- kernel/cpu.c | 55 +- kernel/cpuset.c | 42 +- kernel/debug/kdb/kdb_io.c | 33 +- kernel/debug/kdb/kdb_main.c | 2 +- kernel/events/core.c | 513 +++++--- kernel/events/hw_breakpoint.c | 4 +- kernel/events/internal.h | 4 + kernel/events/ring_buffer.c | 31 +- kernel/exit.c | 4 +- kernel/fork.c | 41 +- kernel/freezer.c | 3 + kernel/futex.c | 132 +- kernel/futex_compat.c | 2 - kernel/hrtimer.c | 101 +- kernel/irq/handle.c | 7 +- kernel/irq/internals.h | 8 + kernel/irq/irqdesc.c | 53 + kernel/irq/manage.c | 59 +- kernel/irq/pm.c | 2 +- kernel/irq/proc.c | 41 +- kernel/irq/spurious.c | 113 +- kernel/kmod.c | 5 + kernel/module.c | 42 +- kernel/panic.c | 12 +- kernel/posix-cpu-timers.c | 23 +- kernel/posix-timers.c | 8 + kernel/power/hibernate.c | 14 +- kernel/power/process.c | 41 +- kernel/power/snapshot.c | 6 +- kernel/power/suspend.c | 3 + kernel/power/swap.c | 62 +- kernel/printk.c | 20 +- kernel/ptrace.c | 23 +- kernel/rcutiny.c | 5 + kernel/rcutree.c | 15 +- kernel/relay.c | 5 +- kernel/resource.c | 50 +- kernel/rtmutex-debug.h | 5 + kernel/rtmutex.c | 252 +++- kernel/rtmutex.h | 5 + kernel/sched/auto_group.c | 4 - kernel/sched/auto_group.h | 5 - kernel/sched/clock.c | 26 + kernel/sched/core.c | 543 +++++--- kernel/sched/cpupri.c | 3 +- kernel/sched/debug.c | 8 + kernel/sched/fair.c | 78 +- kernel/sched/idle_task.c | 1 - kernel/sched/rt.c | 52 +- kernel/sched/sched.h | 34 +- kernel/sched/stop_task.c | 22 +- kernel/signal.c | 2 +- kernel/smp.c | 13 +- kernel/softirq.c | 22 +- kernel/sys.c | 29 +- kernel/sysctl.c | 6 + kernel/sysctl_binary.c | 3 +- kernel/time.c | 58 +- kernel/time/alarmtimer.c | 64 +- kernel/time/clockevents.c | 77 +- kernel/time/clocksource.c | 2 +- kernel/time/jiffies.c | 6 + kernel/time/ntp.c | 58 +- kernel/time/tick-broadcast.c | 17 +- kernel/time/tick-common.c | 1 + kernel/time/tick-sched.c | 10 +- kernel/time/timekeeping.c | 141 +- kernel/timeconst.pl | 376 ++++++ kernel/timer.c | 20 +- kernel/trace/Kconfig | 24 +- kernel/trace/blktrace.c | 20 +- kernel/trace/ftrace.c | 375 ++++-- kernel/trace/ring_buffer.c | 26 +- kernel/trace/ring_buffer_benchmark.c | 2 +- kernel/trace/trace.c | 151 ++- kernel/trace/trace.h | 7 + kernel/trace/trace_event_perf.c | 2 +- kernel/trace/trace_events.c | 10 + kernel/trace/trace_events_filter.c | 22 +- kernel/trace/trace_irqsoff.c | 19 +- kernel/trace/trace_sched_wakeup.c | 18 +- kernel/trace/trace_selftest.c | 9 +- kernel/trace/trace_stack.c | 78 +- kernel/trace/trace_stat.c | 2 + kernel/trace/trace_syscalls.c | 21 +- kernel/tracepoint.c | 13 +- kernel/watchdog.c | 20 +- kernel/workqueue.c | 167 ++- lib/Makefile | 1 + lib/atomic64.c | 17 +- lib/bitmap.c | 25 +- lib/btree.c | 5 +- lib/checksum.c | 12 +- lib/decompress_unlzo.c | 2 +- lib/devres.c | 2 +- lib/digsig.c | 10 +- lib/dynamic_queue_limits.c | 18 +- lib/gcd.c | 3 + lib/idr.c | 36 +- lib/kobject.c | 9 +- lib/lzo/Makefile | 2 +- lib/lzo/lzo1x_compress.c | 349 ++--- lib/lzo/lzo1x_decompress.c | 255 ---- lib/lzo/lzo1x_decompress_safe.c | 268 ++++ lib/lzo/lzodefs.h | 38 +- lib/mpi/longlong.h | 19 +- lib/nlattr.c | 15 +- lib/radix-tree.c | 3 + lib/random32.c | 14 +- lib/scatterlist.c | 3 +- lib/show_mem.c | 3 + lib/string.c | 16 + lib/vsprintf.c | 36 +- mm/backing-dev.c | 19 +- mm/bootmem.c | 8 +- mm/fadvise.c | 18 +- mm/filemap.c | 9 +- mm/highmem.c | 13 + mm/huge_memory.c | 23 +- mm/hugetlb.c | 273 +++- mm/internal.h | 1 + mm/kmemleak.c | 23 +- mm/ksm.c | 2 +- mm/memblock.c | 147 ++- mm/memcontrol.c | 29 +- mm/memory-failure.c | 94 +- mm/memory.c | 95 +- mm/memory_hotplug.c | 62 +- mm/mempolicy.c | 267 ++-- mm/migrate.c | 30 +- mm/mmap.c | 113 +- mm/mmu_notifier.c | 144 ++- mm/nobootmem.c | 36 +- mm/nommu.c | 14 +- mm/oom_kill.c | 25 +- mm/page-writeback.c | 67 +- mm/page_alloc.c | 85 +- mm/page_cgroup.c | 1 + mm/pagewalk.c | 72 +- mm/percpu-vm.c | 22 +- mm/percpu.c | 2 +- mm/process_vm_access.c | 8 - mm/rmap.c | 84 +- mm/shmem.c | 200 ++- mm/slab.c | 14 +- mm/slub.c | 67 +- mm/sparse.c | 13 +- mm/swap.c | 84 +- mm/swap_state.c | 18 +- mm/swapfile.c | 12 +- mm/truncate.c | 89 +- mm/vmalloc.c | 14 +- mm/vmscan.c | 14 +- mm/vmstat.c | 8 +- net/8021q/vlan.c | 17 +- net/8021q/vlan_core.c | 18 +- net/8021q/vlan_dev.c | 31 +- net/8021q/vlan_netlink.c | 2 +- net/9p/client.c | 3 +- net/9p/trans_common.c | 10 +- net/9p/trans_virtio.c | 5 +- net/appletalk/ddp.c | 19 +- net/atm/clip.c | 3 + net/atm/common.c | 1 + net/atm/pvc.c | 1 + net/ax25/af_ax25.c | 5 +- net/batman-adv/bat_iv_ogm.c | 2 +- net/batman-adv/routing.c | 2 + net/batman-adv/translation-table.c | 8 +- net/bluetooth/af_bluetooth.c | 4 - net/bluetooth/hci_conn.c | 4 + net/bluetooth/hci_core.c | 6 +- net/bluetooth/hci_event.c | 9 +- net/bluetooth/hci_sock.c | 2 - net/bluetooth/hidp/core.c | 2 +- net/bluetooth/l2cap_core.c | 121 +- net/bluetooth/l2cap_sock.c | 2 +- net/bluetooth/mgmt.c | 21 + net/bluetooth/rfcomm/sock.c | 6 +- net/bluetooth/rfcomm/tty.c | 2 +- net/bluetooth/sco.c | 1 + net/bluetooth/smp.c | 12 +- net/bridge/br_fdb.c | 6 +- net/bridge/br_if.c | 3 + net/bridge/br_ioctl.c | 2 - net/bridge/br_multicast.c | 32 +- net/bridge/br_netfilter.c | 7 +- net/bridge/br_netlink.c | 2 +- net/bridge/br_private.h | 2 + net/bridge/br_stp.c | 29 +- net/bridge/br_stp_bpdu.c | 2 + net/bridge/br_stp_if.c | 16 +- net/bridge/br_stp_timer.c | 2 +- net/bridge/netfilter/ebtables.c | 5 +- net/caif/caif_dev.c | 2 +- net/caif/caif_socket.c | 2 - net/caif/cfctrl.c | 3 +- net/caif/chnl_net.c | 1 - net/can/af_can.c | 3 + net/can/bcm.c | 3 + net/can/gw.c | 6 +- net/can/raw.c | 3 - net/ceph/auth.c | 117 +- net/ceph/auth_none.c | 15 +- net/ceph/auth_x.c | 289 +++-- net/ceph/auth_x.h | 1 + net/ceph/ceph_common.c | 31 +- net/ceph/crush/crush.c | 14 +- net/ceph/crush/mapper.c | 66 +- net/ceph/crypto.c | 170 ++- net/ceph/crypto.h | 3 +- net/ceph/debugfs.c | 4 + net/ceph/messenger.c | 1138 ++++++++++------- net/ceph/mon_client.c | 150 ++- net/ceph/msgpool.c | 7 +- net/ceph/osd_client.c | 292 +++-- net/ceph/osdmap.c | 71 +- net/compat.c | 39 +- net/core/datagram.c | 44 +- net/core/dev.c | 146 ++- net/core/dev_addr_lists.c | 9 +- net/core/drop_monitor.c | 103 +- net/core/dst.c | 3 +- net/core/ethtool.c | 2 +- net/core/fib_rules.c | 10 +- net/core/filter.c | 6 +- net/core/flow_dissector.c | 4 +- net/core/iovec.c | 7 +- net/core/neighbour.c | 50 +- net/core/net_namespace.c | 4 +- net/core/netpoll.c | 20 +- net/core/pktgen.c | 20 +- net/core/rtnetlink.c | 167 +-- net/core/secure_seq.c | 23 - net/core/skbuff.c | 46 +- net/core/sock.c | 29 +- net/core/sysctl_net_core.c | 21 +- net/dcb/dcbnl.c | 7 + net/dccp/ccid.h | 4 +- net/dccp/ccids/ccid3.c | 1 + net/dccp/ipv4.c | 4 +- net/dccp/ipv6.c | 3 +- net/dns_resolver/dns_query.c | 4 +- net/ieee802154/6lowpan.c | 4 +- net/ieee802154/6lowpan.h | 2 +- net/ipv4/af_inet.c | 12 +- net/ipv4/cipso_ipv4.c | 6 +- net/ipv4/datagram.c | 2 +- net/ipv4/esp4.c | 30 +- net/ipv4/fib_semantics.c | 2 +- net/ipv4/fib_trie.c | 5 +- net/ipv4/igmp.c | 18 +- net/ipv4/inet_connection_sock.c | 16 + net/ipv4/inet_diag.c | 179 ++- net/ipv4/inet_fragment.c | 20 +- net/ipv4/inet_hashtables.c | 2 +- net/ipv4/inetpeer.c | 34 +- net/ipv4/ip_fragment.c | 53 +- net/ipv4/ip_gre.c | 2 +- net/ipv4/ip_options.c | 9 +- net/ipv4/ip_output.c | 11 +- net/ipv4/ip_sockglue.c | 40 +- net/ipv4/ipip.c | 3 +- net/ipv4/ipmr.c | 23 +- net/ipv4/netfilter/arp_tables.c | 6 +- net/ipv4/netfilter/ip_tables.c | 6 +- net/ipv4/netfilter/nf_defrag_ipv4.c | 5 +- net/ipv4/netfilter/nf_nat_sip.c | 10 +- net/ipv4/netfilter/nf_nat_standalone.c | 6 +- net/ipv4/ping.c | 33 +- net/ipv4/proc.c | 3 +- net/ipv4/raw.c | 22 +- net/ipv4/route.c | 140 +- net/ipv4/syncookies.c | 4 +- net/ipv4/sysctl_net_ipv4.c | 25 +- net/ipv4/tcp.c | 28 +- net/ipv4/tcp_cong.c | 3 +- net/ipv4/tcp_cubic.c | 14 +- net/ipv4/tcp_illinois.c | 8 +- net/ipv4/tcp_input.c | 212 +-- net/ipv4/tcp_ipv4.c | 22 +- net/ipv4/tcp_output.c | 62 +- net/ipv4/tcp_vegas.c | 3 +- net/ipv4/tcp_veno.c | 2 +- net/ipv4/udp.c | 14 +- net/ipv4/xfrm4_mode_tunnel.c | 2 +- net/ipv6/Makefile | 2 +- net/ipv6/addrconf.c | 144 ++- net/ipv6/addrlabel.c | 2 +- net/ipv6/af_inet6.c | 9 + net/ipv6/datagram.c | 8 +- net/ipv6/esp6.c | 18 +- net/ipv6/icmp.c | 12 +- net/ipv6/inet6_hashtables.c | 2 +- net/ipv6/ip6_fib.c | 92 +- net/ipv6/ip6_input.c | 24 +- net/ipv6/ip6_output.c | 143 +-- net/ipv6/ip6_tunnel.c | 1 + net/ipv6/ip6mr.c | 29 +- net/ipv6/ipv6_sockglue.c | 1 + net/ipv6/mcast.c | 33 +- net/ipv6/mip6.c | 20 +- net/ipv6/ndisc.c | 41 +- net/ipv6/netfilter/ip6_tables.c | 6 +- net/ipv6/netfilter/nf_conntrack_reasm.c | 11 +- net/ipv6/output_core.c | 38 + net/ipv6/ping.c | 2 +- net/ipv6/raw.c | 29 +- net/ipv6/reassembly.c | 26 +- net/ipv6/route.c | 186 ++- net/ipv6/sit.c | 1 + net/ipv6/tcp_ipv6.c | 20 +- net/ipv6/tunnel6.c | 12 +- net/ipv6/udp.c | 24 +- net/ipv6/udp_impl.h | 2 + net/ipv6/udplite.c | 2 +- net/ipv6/xfrm6_output.c | 16 +- net/ipv6/xfrm6_policy.c | 4 +- net/ipx/af_ipx.c | 3 +- net/irda/af_irda.c | 11 +- net/irda/ircomm/ircomm_tty.c | 4 +- net/iucv/af_iucv.c | 1 - net/key/af_key.c | 54 +- net/l2tp/l2tp_core.c | 3 +- net/l2tp/l2tp_core.h | 1 + net/l2tp/l2tp_eth.c | 5 +- net/l2tp/l2tp_ip.c | 43 +- net/l2tp/l2tp_ppp.c | 21 +- net/llc/af_llc.c | 8 +- net/mac80211/agg-rx.c | 8 +- net/mac80211/cfg.c | 12 +- net/mac80211/debugfs_netdev.c | 7 +- net/mac80211/ibss.c | 19 +- net/mac80211/ieee80211_i.h | 41 +- net/mac80211/iface.c | 28 +- net/mac80211/mesh.c | 1 + net/mac80211/mesh_pathtbl.c | 8 +- net/mac80211/mlme.c | 40 +- net/mac80211/offchannel.c | 33 +- net/mac80211/rx.c | 118 +- net/mac80211/scan.c | 68 +- net/mac80211/sta_info.c | 21 +- net/mac80211/sta_info.h | 9 +- net/mac80211/status.c | 18 +- net/mac80211/tx.c | 35 +- net/mac80211/util.c | 55 +- net/mac80211/wep.c | 6 +- net/mac80211/work.c | 4 +- net/mac80211/wpa.c | 3 +- net/netfilter/ipvs/ip_vs_core.c | 32 +- net/netfilter/ipvs/ip_vs_ctl.c | 9 +- net/netfilter/ipvs/ip_vs_ftp.c | 10 +- net/netfilter/ipvs/ip_vs_pe_sip.c | 6 +- net/netfilter/ipvs/ip_vs_sync.c | 3 + net/netfilter/ipvs/ip_vs_xmit.c | 2 +- net/netfilter/nf_conntrack_core.c | 37 +- net/netfilter/nf_conntrack_expect.c | 32 +- net/netfilter/nf_conntrack_proto_tcp.c | 29 +- net/netfilter/nf_conntrack_sip.c | 2 +- net/netfilter/nf_queue.c | 2 +- net/netfilter/xt_hashlimit.c | 8 +- net/netfilter/xt_limit.c | 13 +- net/netfilter/xt_set.c | 17 +- net/netfilter/xt_socket.c | 21 +- net/netlabel/netlabel_domainhash.c | 69 + net/netlabel/netlabel_unlabeled.c | 27 +- net/netlink/af_netlink.c | 31 +- net/netlink/genetlink.c | 1 + net/netrom/af_netrom.c | 11 +- net/nfc/llcp/llcp.c | 2 +- net/nfc/llcp/sock.c | 2 + net/nfc/nci/ntf.c | 10 +- net/nfc/rawsock.c | 7 +- net/openvswitch/datapath.c | 6 +- net/openvswitch/vport-internal_dev.c | 8 + net/packet/af_packet.c | 197 ++- net/phonet/datagram.c | 9 +- net/rds/ib_rdma.c | 4 +- net/rds/ib_send.c | 5 +- net/rds/info.c | 2 +- net/rds/iw.c | 3 +- net/rds/message.c | 3 + net/rds/recv.c | 2 - net/rds/send.c | 2 +- net/rfkill/core.c | 6 +- net/rose/af_rose.c | 26 +- net/rxrpc/ar-recvmsg.c | 9 +- net/sched/act_gact.c | 14 +- net/sched/act_ipt.c | 33 +- net/sched/act_mirred.c | 11 +- net/sched/sch_atm.c | 1 + net/sched/sch_cbq.c | 11 +- net/sched/sch_htb.c | 4 +- net/sched/sch_netem.c | 42 +- net/sched/sch_qfq.c | 5 +- net/sched/sch_sfb.c | 2 + net/sctp/associola.c | 6 +- net/sctp/auth.c | 6 +- net/sctp/chunk.c | 20 +- net/sctp/endpointola.c | 5 + net/sctp/input.c | 7 +- net/sctp/ipv6.c | 42 +- net/sctp/output.c | 26 +- net/sctp/outqueue.c | 21 +- net/sctp/sm_make_chunk.c | 108 +- net/sctp/sm_sideeffect.c | 36 +- net/sctp/sm_statefuns.c | 33 +- net/sctp/socket.c | 153 ++- net/sctp/ulpevent.c | 122 +- net/socket.c | 136 +- net/sunrpc/backchannel_rqst.c | 2 +- net/sunrpc/cache.c | 6 +- net/sunrpc/clnt.c | 16 +- net/sunrpc/rpc_pipe.c | 19 +- net/sunrpc/rpcb_clnt.c | 16 +- net/sunrpc/sched.c | 54 +- net/sunrpc/svc.c | 26 +- net/sunrpc/svc_xprt.c | 25 +- net/sunrpc/svcsock.c | 45 +- net/sunrpc/xdr.c | 9 +- net/sunrpc/xprt.c | 60 +- net/sunrpc/xprtrdma/svc_rdma_sendto.c | 11 +- net/sunrpc/xprtrdma/transport.c | 4 +- net/sunrpc/xprtrdma/verbs.c | 8 +- net/sunrpc/xprtsock.c | 112 +- net/tipc/bcast.c | 1 + net/tipc/eth_media.c | 15 +- net/tipc/socket.c | 1 + net/unix/af_unix.c | 57 +- net/unix/diag.c | 1 + net/unix/garbage.c | 12 +- net/wanrouter/wanmain.c | 47 +- net/wireless/core.c | 8 +- net/wireless/core.h | 1 + net/wireless/nl80211.c | 24 +- net/wireless/radiotap.c | 11 +- net/wireless/reg.c | 17 +- net/wireless/sme.c | 3 + net/wireless/util.c | 40 +- net/x25/af_x25.c | 18 +- net/xfrm/xfrm_input.c | 2 +- net/xfrm/xfrm_output.c | 2 + net/xfrm/xfrm_policy.c | 5 +- net/xfrm/xfrm_replay.c | 15 + net/xfrm/xfrm_user.c | 57 +- scripts/Kbuild.include | 14 +- scripts/gcc-version.sh | 6 +- scripts/gcc-x86_32-has-stack-protector.sh | 2 +- scripts/gcc-x86_64-has-stack-protector.sh | 2 +- scripts/kconfig/check.sh | 2 +- scripts/kconfig/lxdialog/check-lxdialog.sh | 2 +- scripts/kconfig/streamline_config.pl | 4 +- scripts/kernel-doc | 3 + scripts/mod/file2alias.c | 4 +- scripts/mod/modpost.c | 8 +- scripts/package/builddeb | 9 +- scripts/package/buildtar | 2 +- scripts/recordmcount.c | 137 +- scripts/recordmcount.h | 6 +- scripts/recordmcount.pl | 1 - scripts/tags.sh | 10 +- security/integrity/evm/evm_crypto.c | 4 +- security/integrity/evm/evm_main.c | 15 +- security/integrity/ima/ima_policy.c | 1 - security/keys/compat.c | 4 +- security/keys/encrypted-keys/encrypted.c | 5 +- security/keys/keyctl.c | 4 +- security/keys/process_keys.c | 2 +- security/selinux/hooks.c | 186 ++- security/selinux/include/objsec.h | 4 +- security/selinux/include/xfrm.h | 13 +- security/selinux/netlabel.c | 6 +- security/selinux/netnode.c | 3 +- security/selinux/nlmsgtab.c | 6 + security/selinux/selinuxfs.c | 9 +- security/selinux/ss/policydb.c | 22 +- security/selinux/xfrm.c | 55 +- security/smack/smack.h | 10 + security/smack/smack_lsm.c | 24 +- security/yama/yama_lsm.c | 2 +- sound/arm/Kconfig | 15 +- sound/arm/pxa2xx-ac97-lib.c | 26 +- sound/arm/pxa2xx-pcm-lib.c | 2 + sound/core/compress_offload.c | 10 +- sound/core/control.c | 9 + sound/core/hwdep.c | 12 +- sound/core/init.c | 50 +- sound/core/oss/mixer_oss.c | 11 +- sound/core/oss/pcm_oss.c | 7 + sound/core/pcm.c | 18 +- sound/core/pcm_compat.c | 2 + sound/core/pcm_lib.c | 10 +- sound/core/pcm_native.c | 51 +- sound/core/rawmidi.c | 26 +- sound/core/seq/seq_dummy.c | 31 - sound/core/seq/seq_timer.c | 8 +- sound/core/sound.c | 11 +- sound/core/sound_oss.c | 10 +- sound/core/vmaster.c | 5 +- sound/drivers/aloop.c | 11 +- sound/drivers/mpu401/mpu401_uart.c | 1 + sound/drivers/pcsp/pcsp.c | 2 +- sound/i2c/other/ak4113.c | 17 +- sound/i2c/other/ak4114.c | 18 +- sound/i2c/other/ak4xxx-adda.c | 2 +- sound/isa/msnd/msnd_pinnacle.c | 4 +- sound/isa/opti9xx/opti92x-ad1848.c | 8 +- sound/oss/Kconfig | 1 + sound/pci/Kconfig | 12 + sound/pci/ac97/ac97_codec.c | 2 + sound/pci/ali5451/ali5451.c | 2 +- sound/pci/asihpi/asihpi.c | 3 + sound/pci/atiixp.c | 2 + sound/pci/atiixp_modem.c | 2 + sound/pci/emu10k1/emu10k1.c | 6 +- sound/pci/emu10k1/emu10k1_callback.c | 10 +- sound/pci/emu10k1/emu10k1_main.c | 30 +- sound/pci/emu10k1/emupcm.c | 2 +- sound/pci/emu10k1/emuproc.c | 12 - sound/pci/emu10k1/memory.c | 11 +- sound/pci/hda/hda_codec.c | 32 +- sound/pci/hda/hda_eld.c | 2 +- sound/pci/hda/hda_intel.c | 57 +- sound/pci/hda/hda_proc.c | 2 +- sound/pci/hda/patch_analog.c | 1 + sound/pci/hda/patch_ca0132.c | 8 + sound/pci/hda/patch_cirrus.c | 23 +- sound/pci/hda/patch_conexant.c | 155 ++- sound/pci/hda/patch_hdmi.c | 64 +- sound/pci/hda/patch_realtek.c | 142 +- sound/pci/hda/patch_sigmatel.c | 36 +- sound/pci/hda/patch_via.c | 32 +- sound/pci/ice1712/ice1712.c | 17 +- sound/pci/ice1712/prodigy_hifi.c | 3 +- sound/pci/oxygen/xonar_dg.c | 12 +- sound/pci/riptide/riptide.c | 27 +- sound/pci/rme32.c | 2 +- sound/pci/rme96.c | 41 +- sound/pci/rme9652/hdspm.c | 6 + sound/pci/rme9652/rme9652.c | 2 +- sound/soc/Makefile | 5 +- sound/soc/atmel/atmel_ssc_dai.c | 18 +- sound/soc/blackfin/bf5xx-i2s.c | 1 + sound/soc/codecs/88pm860x-codec.c | 3 + sound/soc/codecs/adau1701.c | 2 +- sound/soc/codecs/adav80x.c | 4 +- sound/soc/codecs/ak4641.c | 4 +- sound/soc/codecs/ak4642.c | 2 +- sound/soc/codecs/cs4271.c | 8 +- sound/soc/codecs/cs42l73.c | 6 +- sound/soc/codecs/max98088.c | 4 +- sound/soc/codecs/max98095.c | 4 +- sound/soc/codecs/sgtl5000.c | 16 +- sound/soc/codecs/sgtl5000.h | 4 +- sound/soc/codecs/sigmadsp.c | 9 +- sound/soc/codecs/sta32x.c | 74 +- sound/soc/codecs/tlv320aic3x.c | 4 +- sound/soc/codecs/tlv320aic3x.h | 1 + sound/soc/codecs/wm2000.c | 14 +- sound/soc/codecs/wm2200.c | 19 +- sound/soc/codecs/wm5100.c | 6 - sound/soc/codecs/wm8731.c | 8 +- sound/soc/codecs/wm8737.c | 6 +- sound/soc/codecs/wm8741.c | 8 +- sound/soc/codecs/wm8770.c | 4 +- sound/soc/codecs/wm8903.c | 6 +- sound/soc/codecs/wm8903.h | 2 +- sound/soc/codecs/wm8904.c | 19 +- sound/soc/codecs/wm8955.c | 6 +- sound/soc/codecs/wm8958-dsp2.c | 2 +- sound/soc/codecs/wm8960.c | 16 +- sound/soc/codecs/wm8962.c | 51 +- sound/soc/codecs/wm8962.h | 4 + sound/soc/codecs/wm8978.c | 2 +- sound/soc/codecs/wm8990.c | 2 + sound/soc/codecs/wm8994.c | 110 +- sound/soc/codecs/wm9712.c | 21 +- sound/soc/codecs/wm_hubs.c | 1 + sound/soc/imx/imx-ssi.c | 5 + sound/soc/omap/mcbsp.c | 2 +- sound/soc/omap/omap-abe-twl6040.c | 2 +- sound/soc/omap/omap-pcm.c | 4 +- sound/soc/pxa/Kconfig | 2 - sound/soc/pxa/pxa-ssp.c | 4 +- sound/soc/s6000/s6000-pcm.c | 2 + sound/soc/samsung/dma.c | 8 +- sound/soc/samsung/i2s.c | 2 +- sound/soc/sh/dma-sh7760.c | 4 +- sound/soc/sh/fsi.c | 18 +- sound/soc/soc-dapm.c | 14 +- sound/soc/tegra/tegra_alc5632.c | 1 - sound/synth/emux/emux_oss.c | 14 +- sound/synth/emux/emux_seq.c | 29 +- sound/usb/6fire/chip.c | 2 +- sound/usb/6fire/comm.c | 38 +- sound/usb/6fire/comm.h | 2 +- sound/usb/6fire/midi.c | 16 +- sound/usb/6fire/midi.h | 6 +- sound/usb/6fire/pcm.c | 55 +- sound/usb/6fire/pcm.h | 2 +- sound/usb/caiaq/device.c | 2 +- sound/usb/card.c | 49 +- sound/usb/card.h | 2 + sound/usb/clock.c | 3 +- sound/usb/endpoint.c | 6 +- sound/usb/midi.c | 126 +- sound/usb/misc/ua101.c | 14 +- sound/usb/mixer.c | 127 +- sound/usb/mixer_maps.c | 35 + sound/usb/mixer_quirks.c | 79 +- sound/usb/mixer_quirks.h | 4 + sound/usb/pcm.c | 38 +- sound/usb/proc.c | 4 +- sound/usb/quirks-table.h | 208 ++- sound/usb/quirks.c | 12 +- sound/usb/stream.c | 8 + sound/usb/usbaudio.h | 3 +- sound/usb/usx2y/usbusx2yaudio.c | 26 +- sound/usb/usx2y/usx2yhwdeppcm.c | 7 +- tools/hv/hv_kvp_daemon.c | 59 +- tools/lguest/lguest.c | 1 + tools/perf/Makefile | 10 +- tools/perf/builtin-test.c | 38 +- tools/perf/scripts/python/net_dropmonitor.py | 8 +- tools/perf/util/header.c | 22 +- tools/perf/util/map.c | 4 +- tools/perf/util/parse-events.c | 2 +- tools/perf/util/parse-events.y | 1 - tools/perf/util/pmu.y | 1 - tools/power/cpupower/Makefile | 2 +- tools/power/cpupower/utils/cpupower-set.c | 6 +- tools/power/x86/turbostat/turbostat.c | 11 +- tools/usb/ffs-test.c | 6 +- tools/vm/page-types.c | 28 +- usr/gen_init_cpio.c | 39 +- virt/kvm/coalesced_mmio.c | 8 +- virt/kvm/ioapic.c | 7 +- virt/kvm/iommu.c | 4 + virt/kvm/irq_comm.c | 1 + virt/kvm/kvm_main.c | 92 +- 3036 files changed, 50479 insertions(+), 23994 deletions(-) create mode 100644 Documentation/lzo.txt delete mode 100644 arch/arm/include/asm/a.out-core.h delete mode 100644 arch/arm/include/asm/a.out.h create mode 100644 arch/arm/mach-pxa/pxa_cplds_irqs.c create mode 100644 arch/x86/include/asm/espfix.h create mode 100644 arch/x86/kernel/espfix_64.c create mode 100644 drivers/md/dm-builtin.c create mode 100644 drivers/staging/zram/zram_sysfs.c create mode 100644 include/linux/compiler-gcc5.h create mode 100644 include/trace/events/random.h create mode 100644 kernel/timeconst.pl delete mode 100644 lib/lzo/lzo1x_decompress.c create mode 100644 lib/lzo/lzo1x_decompress_safe.c create mode 100644 net/ipv6/output_core.c diff --git a/Documentation/ABI/testing/sysfs-bus-rbd b/Documentation/ABI/testing/sysfs-bus-rbd index dbedafb095e..eb781c624a7 100644 --- a/Documentation/ABI/testing/sysfs-bus-rbd +++ b/Documentation/ABI/testing/sysfs-bus-rbd @@ -51,12 +51,6 @@ current_snap The current snapshot for which the device is mapped. -create_snap - - Create a snapshot: - - $ echo > /sys/bus/rbd/devices//snap_create - snap_* A directory per each snapshot diff --git a/Documentation/HOWTO b/Documentation/HOWTO index f7ade3b3b40..59c080f084e 100644 --- a/Documentation/HOWTO +++ b/Documentation/HOWTO @@ -218,16 +218,16 @@ The development process Linux kernel development process currently consists of a few different main kernel "branches" and lots of different subsystem-specific kernel branches. These different branches are: - - main 2.6.x kernel tree - - 2.6.x.y -stable kernel tree - - 2.6.x -git kernel patches + - main 3.x kernel tree + - 3.x.y -stable kernel tree + - 3.x -git kernel patches - subsystem specific kernel trees and patches - - the 2.6.x -next kernel tree for integration tests + - the 3.x -next kernel tree for integration tests -2.6.x kernel tree +3.x kernel tree ----------------- -2.6.x kernels are maintained by Linus Torvalds, and can be found on -kernel.org in the pub/linux/kernel/v2.6/ directory. Its development +3.x kernels are maintained by Linus Torvalds, and can be found on +kernel.org in the pub/linux/kernel/v3.x/ directory. Its development process is as follows: - As soon as a new kernel is released a two weeks window is open, during this period of time maintainers can submit big diffs to @@ -262,20 +262,20 @@ mailing list about kernel releases: released according to perceived bug status, not according to a preconceived timeline." -2.6.x.y -stable kernel tree +3.x.y -stable kernel tree --------------------------- -Kernels with 4-part versions are -stable kernels. They contain +Kernels with 3-part versions are -stable kernels. They contain relatively small and critical fixes for security problems or significant -regressions discovered in a given 2.6.x kernel. +regressions discovered in a given 3.x kernel. This is the recommended branch for users who want the most recent stable kernel and are not interested in helping test development/experimental versions. -If no 2.6.x.y kernel is available, then the highest numbered 2.6.x +If no 3.x.y kernel is available, then the highest numbered 3.x kernel is the current stable kernel. -2.6.x.y are maintained by the "stable" team , and +3.x.y are maintained by the "stable" team , and are released as needs dictate. The normal release period is approximately two weeks, but it can be longer if there are no pressing problems. A security-related problem, instead, can cause a release to happen almost @@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree documents what kinds of changes are acceptable for the -stable tree, and how the release process works. -2.6.x -git patches +3.x -git patches ------------------ These are daily snapshots of Linus' kernel tree which are managed in a git repository (hence the name.) These patches are usually released @@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review, accepted, or rejected. Most of these patchwork sites are listed at http://patchwork.kernel.org/. -2.6.x -next kernel tree for integration tests +3.x -next kernel tree for integration tests --------------------------------------------- -Before updates from subsystem trees are merged into the mainline 2.6.x +Before updates from subsystem trees are merged into the mainline 3.x tree, they need to be integration-tested. For this purpose, a special testing repository exists into which virtually all subsystem trees are pulled on an almost daily basis: - http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git + http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git http://linux.f-seidel.de/linux-next/pmwiki/ This way, the -next kernel gives a summary outlook onto what will be diff --git a/Documentation/cgroups/cpusets.txt b/Documentation/cgroups/cpusets.txt index cefd3d8bbd1..a52a39f8a8d 100644 --- a/Documentation/cgroups/cpusets.txt +++ b/Documentation/cgroups/cpusets.txt @@ -345,14 +345,14 @@ the named feature on. The implementation is simple. Setting the flag 'cpuset.memory_spread_page' turns on a per-process flag -PF_SPREAD_PAGE for each task that is in that cpuset or subsequently +PFA_SPREAD_PAGE for each task that is in that cpuset or subsequently joins that cpuset. The page allocation calls for the page cache -is modified to perform an inline check for this PF_SPREAD_PAGE task +is modified to perform an inline check for this PFA_SPREAD_PAGE task flag, and if set, a call to a new routine cpuset_mem_spread_node() returns the node to prefer for the allocation. Similarly, setting 'cpuset.memory_spread_slab' turns on the flag -PF_SPREAD_SLAB, and appropriately marked slab caches will allocate +PFA_SPREAD_SLAB, and appropriately marked slab caches will allocate pages from the node returned by cpuset_mem_spread_node(). The cpuset_mem_spread_node() routine is also simple. It uses the diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index 9b1067afb22..68c5411d70a 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt @@ -466,6 +466,10 @@ Note: 5.3 swappiness Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only. +Please note that unlike the global swappiness, memcg knob set to 0 +really prevents from any swapping even if there is a swap storage +available. This might lead to memcg OOM killer if there are no file +pages to reclaim. Following cgroups' swappiness can't be changed. - root cgroup (uses /proc/sys/vm/swappiness). diff --git a/Documentation/device-mapper/verity.txt b/Documentation/device-mapper/verity.txt index 32e48797a14..9884681535e 100644 --- a/Documentation/device-mapper/verity.txt +++ b/Documentation/device-mapper/verity.txt @@ -7,39 +7,39 @@ This target is read-only. Construction Parameters ======================= - + - This is the version number of the on-disk format. + This is the type of the on-disk hash format. 0 is the original format used in the Chromium OS. - The salt is appended when hashing, digests are stored continuously and - the rest of the block is padded with zeros. + The salt is appended when hashing, digests are stored continuously and + the rest of the block is padded with zeros. 1 is the current format that should be used for new devices. - The salt is prepended when hashing and each digest is - padded with zeros to the power of two. + The salt is prepended when hashing and each digest is + padded with zeros to the power of two. - This is the device containing the data the integrity of which needs to be + This is the device containing data, the integrity of which needs to be checked. It may be specified as a path, like /dev/sdaX, or a device number, :. - This is the device that that supplies the hash tree data. It may be + This is the device that supplies the hash tree data. It may be specified similarly to the device path and may be the same device. If the - same device is used, the hash_start should be outside of the dm-verity - configured device size. + same device is used, the hash_start should be outside the configured + dm-verity device. - The block size on a data device. Each block corresponds to one digest on - the hash device. + The block size on a data device in bytes. + Each block corresponds to one digest on the hash device. - The size of a hash block. + The size of a hash block in bytes. The number of data blocks on the data device. Additional blocks are @@ -65,7 +65,7 @@ Construction Parameters Theory of operation =================== -dm-verity is meant to be setup as part of a verified boot path. This +dm-verity is meant to be set up as part of a verified boot path. This may be anything ranging from a boot using tboot or trustedgrub to just booting from a known-good device (like a USB drive or CD). @@ -73,20 +73,20 @@ When a dm-verity device is configured, it is expected that the caller has been authenticated in some way (cryptographic signatures, etc). After instantiation, all hashes will be verified on-demand during disk access. If they cannot be verified up to the root node of the -tree, the root hash, then the I/O will fail. This should identify +tree, the root hash, then the I/O will fail. This should detect tampering with any data on the device and the hash data. Cryptographic hashes are used to assert the integrity of the device on a -per-block basis. This allows for a lightweight hash computation on first read -into the page cache. Block hashes are stored linearly-aligned to the nearest -block the size of a page. +per-block basis. This allows for a lightweight hash computation on first read +into the page cache. Block hashes are stored linearly, aligned to the nearest +block size. Hash Tree --------- Each node in the tree is a cryptographic hash. If it is a leaf node, the hash -is of some block data on disk. If it is an intermediary node, then the hash is -of a number of child nodes. +of some data block on disk is calculated. If it is an intermediary node, +the hash of a number of child nodes is calculated. Each entry in the tree is a collection of neighboring nodes that fit in one block. The number is determined based on block_size and the size of the @@ -110,63 +110,23 @@ alg = sha256, num_blocks = 32768, block_size = 4096 On-disk format ============== -Below is the recommended on-disk format. The verity kernel code does not -read the on-disk header. It only reads the hash blocks which directly -follow the header. It is expected that a user-space tool will verify the -integrity of the verity_header and then call dmsetup with the correct -parameters. Alternatively, the header can be omitted and the dmsetup -parameters can be passed via the kernel command-line in a rooted chain -of trust where the command-line is verified. +The verity kernel code does not read the verity metadata on-disk header. +It only reads the hash blocks which directly follow the header. +It is expected that a user-space tool will verify the integrity of the +verity header. -The on-disk format is especially useful in cases where the hash blocks -are on a separate partition. The magic number allows easy identification -of the partition contents. Alternatively, the hash blocks can be stored -in the same partition as the data to be verified. In such a configuration -the filesystem on the partition would be sized a little smaller than -the full-partition, leaving room for the hash blocks. - -struct superblock { - uint8_t signature[8] - "verity\0\0"; - - uint8_t version; - 1 - current format - - uint8_t data_block_bits; - log2(data block size) - - uint8_t hash_block_bits; - log2(hash block size) - - uint8_t pad1[1]; - zero padding - - uint16_t salt_size; - big-endian salt size - - uint8_t pad2[2]; - zero padding - - uint32_t data_blocks_hi; - big-endian high 32 bits of the 64-bit number of data blocks - - uint32_t data_blocks_lo; - big-endian low 32 bits of the 64-bit number of data blocks - - uint8_t algorithm[16]; - cryptographic algorithm - - uint8_t salt[384]; - salt (the salt size is specified above) - - uint8_t pad3[88]; - zero padding to 512-byte boundary -} +Alternatively, the header can be omitted and the dmsetup parameters can +be passed via the kernel command-line in a rooted chain of trust where +the command-line is verified. Directly following the header (and with sector number padded to the next hash block boundary) are the hash blocks which are stored a depth at a time (starting from the root), sorted in order of increasing index. +The full specification of kernel parameters and on-disk metadata format +is available at the cryptsetup project's wiki page + http://code.google.com/p/cryptsetup/wiki/DMVerity + Status ====== V (for Valid) is returned if every check performed so far was valid. @@ -174,21 +134,22 @@ If any check failed, C (for Corruption) is returned. Example ======= - -Setup a device: - dmsetup create vroot --table \ - "0 2097152 "\ - "verity 1 /dev/sda1 /dev/sda2 4096 4096 2097152 1 "\ +Set up a device: + # dmsetup create vroot --readonly --table \ + "0 2097152 verity 1 /dev/sda1 /dev/sda2 4096 4096 262144 1 sha256 "\ "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\ "1234000000000000000000000000000000000000000000000000000000000000" A command line tool veritysetup is available to compute or verify -the hash tree or activate the kernel driver. This is available from -the LVM2 upstream repository and may be supplied as a package called -device-mapper-verity-tools: - git://sources.redhat.com/git/lvm2 - http://sourceware.org/git/?p=lvm2.git - http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/verity?cvsroot=lvm2 +the hash tree or activate the kernel device. This is available from +the cryptsetup upstream repository http://code.google.com/p/cryptsetup/ +(as a libcryptsetup extension). -veritysetup -a vroot /dev/sda1 /dev/sda2 \ - 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 +Create hash on the device: + # veritysetup format /dev/sda1 /dev/sda2 + ... + Root hash: 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 + +Activate the device: + # veritysetup create vroot /dev/sda1 /dev/sda2 \ + 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt index ecc81e36871..d187e9f7cf1 100644 --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt @@ -8,7 +8,7 @@ PIT Timer required properties: shared across all System Controller members. TC/TCLIB Timer required properties: -- compatible: Should be "atmel,-pit". +- compatible: Should be "atmel,-tcb". can be "at91rm9200" or "at91sam9x5" - reg: Should contain registers location and length - interrupts: Should contain all interrupts for the TC block diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt index ab22fe6e73a..e39a0c0d6da 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt @@ -10,8 +10,8 @@ Required properties: Optional properties: - fsl,card-wired : Indicate the card is wired to host permanently -- fsl,cd-internal : Indicate to use controller internal card detection -- fsl,wp-internal : Indicate to use controller internal write protection +- fsl,cd-controller : Indicate to use controller internal card detection +- fsl,wp-controller : Indicate to use controller internal write protection - cd-gpios : Specify GPIOs for card detection - wp-gpios : Specify GPIOs for write protection @@ -21,8 +21,8 @@ esdhc@70004000 { compatible = "fsl,imx51-esdhc"; reg = <0x70004000 0x4000>; interrupts = <1>; - fsl,cd-internal; - fsl,wp-internal; + fsl,cd-controller; + fsl,wp-controller; }; esdhc@70008000 { diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/tty/serial/of-serial.txt index b8b27b0aca1..3f89cbdc60b 100644 --- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/tty/serial/of-serial.txt @@ -10,6 +10,9 @@ Required properties: - "ns16850" - "nvidia,tegra20-uart" - "ibm,qpace-nwp-serial" + - "altr,16550-FIFO32" + - "altr,16550-FIFO64" + - "altr,16550-FIFO128" - "serial" if the port type is unknown. - reg : offset and length of the register set for the device. - interrupts : should contain uart interrupt. diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index d1d4a179a38..b361e08570f 100755 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware @@ -115,7 +115,7 @@ sub tda10045 { sub tda10046 { my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip"; - my $url = "http://www.tt-download.com/download/updates/219/$sourcefile"; + my $url = "http://technotrend.com.ua/download/software/219/$sourcefile"; my $hash = "6a7e1e2f2644b162ff0502367553c72d"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp index 84d46c0c71a..eb5502e4af6 100644 --- a/Documentation/hwmon/coretemp +++ b/Documentation/hwmon/coretemp @@ -6,7 +6,9 @@ Supported chips: Prefix: 'coretemp' CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm), 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm), - 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield) + 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield), + 0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom), + 0x36 (Cedar Trail Atom) Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide http://softwarecommunity.intel.com/Wiki/Mobility/720.htm @@ -65,6 +67,11 @@ Process Processor TjMax(C) U3400 105 P4505/P4500 90 +32nm Atom Processors + Z2460 90 + D2700/2550/2500 100 + N2850/2800/2650/2600 100 + 45nm Xeon Processors 5400 Quad-Core X5492, X5482, X5472, X5470, X5460, X5450 85 E5472, E5462, E5450/40/30/20/10/05 85 @@ -85,6 +92,9 @@ Process Processor TjMax(C) N475/470/455/450 100 N280/270 90 330/230 125 + E680/660/640/620 90 + E680T/660T/640T/620T 110 + CE4170/4150/4110 110 45nm Core2 Processors Solo ULV SU3500/3300 100 diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801 index 71f55bbcefc..8bb57d7c12e 100644 --- a/Documentation/i2c/busses/i2c-i801 +++ b/Documentation/i2c/busses/i2c-i801 @@ -21,6 +21,8 @@ Supported adapters: * Intel DH89xxCC (PCH) * Intel Panther Point (PCH) * Intel Lynx Point (PCH) + * Intel Lynx Point-LP (PCH) + * Intel Avoton (SOC) Datasheets: Publicly available at the Intel website On Intel Patsburg and later chipsets, both the normal host SMBus controller diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4 index 475bb4ae072..65da15796ed 100644 --- a/Documentation/i2c/busses/i2c-piix4 +++ b/Documentation/i2c/busses/i2c-piix4 @@ -8,7 +8,7 @@ Supported adapters: Datasheet: Only available via NDA from ServerWorks * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges Datasheet: Not publicly available - * AMD Hudson-2 + * AMD Hudson-2, CZ Datasheet: Not publicly available * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge Datasheet: Publicly available at the SMSC website http://www.smsc.com diff --git a/Documentation/ja_JP/HOWTO b/Documentation/ja_JP/HOWTO index 050d37fe6d4..46ed7359346 100644 --- a/Documentation/ja_JP/HOWTO +++ b/Documentation/ja_JP/HOWTO @@ -315,7 +315,7 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー もし、2.6.x.y カーネルが存在しない場合には、番号が一番大きい 2.6.x が 最新の安定版カーネルです。 -2.6.x.y は "stable" チーム でメンテされており、必 +2.6.x.y は "stable" チーム でメンテされており、必 要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差し迫っ た問題がなければもう少し長くなることもあります。セキュリティ関連の問題 の場合はこれに対してだいたいの場合、すぐにリリースがされます。 diff --git a/Documentation/ja_JP/stable_kernel_rules.txt b/Documentation/ja_JP/stable_kernel_rules.txt index 14265837c4c..9dbda9b5d21 100644 --- a/Documentation/ja_JP/stable_kernel_rules.txt +++ b/Documentation/ja_JP/stable_kernel_rules.txt @@ -50,16 +50,16 @@ linux-2.6.29/Documentation/stable_kernel_rules.txt -stable ツリーにパッチを送付する手続き- - - 上記の規則に従っているかを確認した後に、stable@kernel.org にパッチ + - 上記の規則に従っているかを確認した後に、stable@vger.kernel.org にパッチ を送る。 - 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合 には NAK を受け取る。この反応は開発者たちのスケジュールによって、数 日かかる場合がある。 - もし受け取られたら、パッチは他の開発者たちと関連するサブシステムの メンテナーによるレビューのために -stable キューに追加される。 - - パッチに stable@kernel.org のアドレスが付加されているときには、それ + - パッチに stable@vger.kernel.org のアドレスが付加されているときには、それ が Linus のツリーに入る時に自動的に stable チームに email される。 - - セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ + - セキュリティパッチはこのエイリアス (stable@vger.kernel.org) に送られるべ きではなく、代わりに security@kernel.org のアドレスに送られる。 レビューサイクル- diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index a5fac8095e4..b524935539b 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -566,6 +566,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. UART at the specified I/O port or MMIO address, switching to the matching ttyS device later. The options are the same as for ttyS, above. + hvc Use the hypervisor console device . This is for + both Xen and PowerPC hypervisors. If the device connected to the port is not a TTY but a braille device, prepend "brl," before the device type, for instance @@ -751,6 +753,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. earlyprintk= [X86,SH,BLACKFIN] earlyprintk=vga + earlyprintk=xen earlyprintk=serial[,ttySn[,baudrate]] earlyprintk=ttySn[,baudrate] earlyprintk=dbgp[debugController#] @@ -768,6 +771,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. The VGA output is eventually overwritten by the real console. + The xen output can only be used by Xen PV guests. + ekgdboc= [X86,KGDB] Allow early kernel console debugging ekgdboc=kbd @@ -777,6 +782,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. edd= [EDD] Format: {"off" | "on" | "skip[mbr]"} + efi_no_storage_paranoia [EFI; X86] + Using this parameter you can use more than 50% of + your efi variable storage. Use this parameter only if + you are really sure that your UEFI does sane gc and + fulfills the spec otherwise your board may brick. + eisa_irq_edge= [PARISC,HW] See header of drivers/parisc/eisa.c. @@ -977,6 +988,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. i8042.notimeout [HW] Ignore timeout condition signalled by controller i8042.reset [HW] Reset the controller during init and cleanup i8042.unlock [HW] Unlock (ignore) the keylock + i8042.kbdreset [HW] Reset device connected to KBD port i810= [HW,DRM] @@ -991,6 +1003,20 @@ bytes respectively. Such letter suffixes can also be entirely omitted. i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN capability is set. + i915.invert_brightness= + [DRM] Invert the sense of the variable that is used to + set the brightness of the panel backlight. Normally a + brightness value of 0 indicates backlight switched off, + and the maximum of the brightness value sets the backlight + to maximum brightness. If this parameter is set to 0 + (default) and the machine requires it, or this parameter + is set to 1, a brightness value of 0 sets the backlight + to maximum brightness, and the maximum of the brightness + value switches the backlight off. + -1 -- never invert brightness + 0 -- machine default + 1 -- force brightness inversion + icn= [HW,ISDN] Format: [,[,[,]]] diff --git a/Documentation/lzo.txt b/Documentation/lzo.txt new file mode 100644 index 00000000000..ea45dd3901e --- /dev/null +++ b/Documentation/lzo.txt @@ -0,0 +1,164 @@ + +LZO stream format as understood by Linux's LZO decompressor +=========================================================== + +Introduction + + This is not a specification. No specification seems to be publicly available + for the LZO stream format. This document describes what input format the LZO + decompressor as implemented in the Linux kernel understands. The file subject + of this analysis is lib/lzo/lzo1x_decompress_safe.c. No analysis was made on + the compressor nor on any other implementations though it seems likely that + the format matches the standard one. The purpose of this document is to + better understand what the code does in order to propose more efficient fixes + for future bug reports. + +Description + + The stream is composed of a series of instructions, operands, and data. The + instructions consist in a few bits representing an opcode, and bits forming + the operands for the instruction, whose size and position depend on the + opcode and on the number of literals copied by previous instruction. The + operands are used to indicate : + + - a distance when copying data from the dictionary (past output buffer) + - a length (number of bytes to copy from dictionary) + - the number of literals to copy, which is retained in variable "state" + as a piece of information for next instructions. + + Optionally depending on the opcode and operands, extra data may follow. These + extra data can be a complement for the operand (eg: a length or a distance + encoded on larger values), or a literal to be copied to the output buffer. + + The first byte of the block follows a different encoding from other bytes, it + seems to be optimized for literal use only, since there is no dictionary yet + prior to that byte. + + Lengths are always encoded on a variable size starting with a small number + of bits in the operand. If the number of bits isn't enough to represent the + length, up to 255 may be added in increments by consuming more bytes with a + rate of at most 255 per extra byte (thus the compression ratio cannot exceed + around 255:1). The variable length encoding using #bits is always the same : + + length = byte & ((1 << #bits) - 1) + if (!length) { + length = ((1 << #bits) - 1) + length += 255*(number of zero bytes) + length += first-non-zero-byte + } + length += constant (generally 2 or 3) + + For references to the dictionary, distances are relative to the output + pointer. Distances are encoded using very few bits belonging to certain + ranges, resulting in multiple copy instructions using different encodings. + Certain encodings involve one extra byte, others involve two extra bytes + forming a little-endian 16-bit quantity (marked LE16 below). + + After any instruction except the large literal copy, 0, 1, 2 or 3 literals + are copied before starting the next instruction. The number of literals that + were copied may change the meaning and behaviour of the next instruction. In + practice, only one instruction needs to know whether 0, less than 4, or more + literals were copied. This is the information stored in the variable + in this implementation. This number of immediate literals to be copied is + generally encoded in the last two bits of the instruction but may also be + taken from the last two bits of an extra operand (eg: distance). + + End of stream is declared when a block copy of distance 0 is seen. Only one + instruction may encode this distance (0001HLLL), it takes one LE16 operand + for the distance, thus requiring 3 bytes. + + IMPORTANT NOTE : in the code some length checks are missing because certain + instructions are called under the assumption that a certain number of bytes + follow because it has already been garanteed before parsing the instructions. + They just have to "refill" this credit if they consume extra bytes. This is + an implementation design choice independant on the algorithm or encoding. + +Byte sequences + + First byte encoding : + + 0..17 : follow regular instruction encoding, see below. It is worth + noting that codes 16 and 17 will represent a block copy from + the dictionary which is empty, and that they will always be + invalid at this place. + + 18..21 : copy 0..3 literals + state = (byte - 17) = 0..3 [ copy literals ] + skip byte + + 22..255 : copy literal string + length = (byte - 17) = 4..238 + state = 4 [ don't copy extra literals ] + skip byte + + Instruction encoding : + + 0 0 0 0 X X X X (0..15) + Depends on the number of literals copied by the last instruction. + If last instruction did not copy any literal (state == 0), this + encoding will be a copy of 4 or more literal, and must be interpreted + like this : + + 0 0 0 0 L L L L (0..15) : copy long literal string + length = 3 + (L ?: 15 + (zero_bytes * 255) + non_zero_byte) + state = 4 (no extra literals are copied) + + If last instruction used to copy between 1 to 3 literals (encoded in + the instruction's opcode or distance), the instruction is a copy of a + 2-byte block from the dictionary within a 1kB distance. It is worth + noting that this instruction provides little savings since it uses 2 + bytes to encode a copy of 2 other bytes but it encodes the number of + following literals for free. It must be interpreted like this : + + 0 0 0 0 D D S S (0..15) : copy 2 bytes from <= 1kB distance + length = 2 + state = S (copy S literals after this block) + Always followed by exactly one byte : H H H H H H H H + distance = (H << 2) + D + 1 + + If last instruction used to copy 4 or more literals (as detected by + state == 4), the instruction becomes a copy of a 3-byte block from the + dictionary from a 2..3kB distance, and must be interpreted like this : + + 0 0 0 0 D D S S (0..15) : copy 3 bytes from 2..3 kB distance + length = 3 + state = S (copy S literals after this block) + Always followed by exactly one byte : H H H H H H H H + distance = (H << 2) + D + 2049 + + 0 0 0 1 H L L L (16..31) + Copy of a block within 16..48kB distance (preferably less than 10B) + length = 2 + (L ?: 7 + (zero_bytes * 255) + non_zero_byte) + Always followed by exactly one LE16 : D D D D D D D D : D D D D D D S S + distance = 16384 + (H << 14) + D + state = S (copy S literals after this block) + End of stream is reached if distance == 16384 + + 0 0 1 L L L L L (32..63) + Copy of small block within 16kB distance (preferably less than 34B) + length = 2 + (L ?: 31 + (zero_bytes * 255) + non_zero_byte) + Always followed by exactly one LE16 : D D D D D D D D : D D D D D D S S + distance = D + 1 + state = S (copy S literals after this block) + + 0 1 L D D D S S (64..127) + Copy 3-4 bytes from block within 2kB distance + state = S (copy S literals after this block) + length = 3 + L + Always followed by exactly one byte : H H H H H H H H + distance = (H << 3) + D + 1 + + 1 L L D D D S S (128..255) + Copy 5-8 bytes from block within 2kB distance + state = S (copy S literals after this block) + length = 5 + L + Always followed by exactly one byte : H H H H H H H H + distance = (H << 3) + D + 1 + +Authors + + This document was written by Willy Tarreau on 2014/07/19 during an + analysis of the decompression code available in Linux 3.16-rc5. The code is + tricky, it is possible that this document contains mistakes or that a few + corner cases were overlooked. In any case, please report any doubt, fix, or + proposed updates to the author(s) so that the document can be updated. diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index e37b645f646..aef2354436e 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt @@ -544,6 +544,11 @@ tcp_thin_dupack - BOOLEAN Documentation/networking/tcp-thin.txt Default: 0 +tcp_challenge_ack_limit - INTEGER + Limits number of Challenge ACK sent per second, as recommended + in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) + Default: 100 + UDP variables: udp_mem - vector of 3 INTEGERs: min, pressure, max diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 75e4fd708cc..a03239c4163 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt @@ -24,17 +24,33 @@ For monitoring and control pktgen creates: /proc/net/pktgen/ethX -Viewing threads -=============== -/proc/net/pktgen/kpktgend_0 -Name: kpktgend_0 max_before_softirq: 10000 -Running: -Stopped: eth1 -Result: OK: max_before_softirq=10000 +Kernel threads +============== +Pktgen creates a thread for each CPU with affinity to that CPU. +Which is controlled through procfile /proc/net/pktgen/kpktgend_X. -Most important the devices assigned to thread. Note! A device can only belong -to one thread. +Example: /proc/net/pktgen/kpktgend_0 + Running: + Stopped: eth4@0 + Result: OK: add_device=eth4@0 + +Most important are the devices assigned to the thread. + +The two basic thread commands are: + * add_device DEVICE@NAME -- adds a single device + * rem_device_all -- remove all associated devices + +When adding a device to a thread, a corrosponding procfile is created +which is used for configuring this device. Thus, device names need to +be unique. + +To support adding the same device to multiple threads, which is useful +with multi queue NICs, a the device naming scheme is extended with "@": + device@something + +The part after "@" can be anything, but it is custom to use the thread +number. Viewing devices =============== @@ -42,29 +58,32 @@ Viewing devices Parm section holds configured info. Current hold running stats. Result is printed after run or after interruption. Example: -/proc/net/pktgen/eth1 +/proc/net/pktgen/eth4@0 -Params: count 10000000 min_pkt_size: 60 max_pkt_size: 60 - frags: 0 delay: 0 clone_skb: 1000000 ifname: eth1 + Params: count 100000 min_pkt_size: 60 max_pkt_size: 60 + frags: 0 delay: 0 clone_skb: 64 ifname: eth4@0 flows: 0 flowlen: 0 - dst_min: 10.10.11.2 dst_max: - src_min: src_max: - src_mac: 00:00:00:00:00:00 dst_mac: 00:04:23:AC:FD:82 - udp_src_min: 9 udp_src_max: 9 udp_dst_min: 9 udp_dst_max: 9 - src_mac_count: 0 dst_mac_count: 0 - Flags: -Current: - pkts-sofar: 10000000 errors: 39664 - started: 1103053986245187us stopped: 1103053999346329us idle: 880401us - seq_num: 10000011 cur_dst_mac_offset: 0 cur_src_mac_offset: 0 - cur_saddr: 0x10a0a0a cur_daddr: 0x20b0a0a - cur_udp_dst: 9 cur_udp_src: 9 + queue_map_min: 0 queue_map_max: 0 + dst_min: 192.168.81.2 dst_max: + src_min: src_max: + src_mac: 90:e2:ba:0a:56:b4 dst_mac: 00:1b:21:3c:9d:f8 + udp_src_min: 9 udp_src_max: 109 udp_dst_min: 9 udp_dst_max: 9 + src_mac_count: 0 dst_mac_count: 0 + Flags: UDPSRC_RND NO_TIMESTAMP QUEUE_MAP_CPU + Current: + pkts-sofar: 100000 errors: 0 + started: 623913381008us stopped: 623913396439us idle: 25us + seq_num: 100001 cur_dst_mac_offset: 0 cur_src_mac_offset: 0 + cur_saddr: 192.168.8.3 cur_daddr: 192.168.81.2 + cur_udp_dst: 9 cur_udp_src: 42 + cur_queue_map: flows: 0 -Result: OK: 13101142(c12220741+d880401) usec, 10000000 (60byte,0frags) - 763292pps 390Mb/sec (390805504bps) errors: 39664 + Result: OK: 15430(c15405d25) usec, 100000 (60byte,0frags) + 6480562pps 3110Mb/sec (3110669760bps) errors: 0 -Configuring threads and devices -================================ + +Configuring devices +=================== This is done via the /proc interface easiest done via pgset in the scripts Examples: @@ -177,6 +196,8 @@ Note when adding devices to a specific CPU there good idea to also assign /proc/irq/XX/smp_affinity so the TX-interrupts gets bound to the same CPU. as this reduces cache bouncing when freeing skb's. +Plus using the device flag QUEUE_MAP_CPU, which maps the SKBs TX queue +to the running threads CPU (directly from smp_processor_id()). Current commands and configuration options ========================================== diff --git a/Documentation/networking/rds.txt b/Documentation/networking/rds.txt index c67077cbeb8..e1a3d59bbe0 100644 --- a/Documentation/networking/rds.txt +++ b/Documentation/networking/rds.txt @@ -62,11 +62,10 @@ Socket Interface ================ AF_RDS, PF_RDS, SOL_RDS - These constants haven't been assigned yet, because RDS isn't in - mainline yet. Currently, the kernel module assigns some constant - and publishes it to user space through two sysctl files - /proc/sys/net/rds/pf_rds - /proc/sys/net/rds/sol_rds + AF_RDS and PF_RDS are the domain type to be used with socket(2) + to create RDS sockets. SOL_RDS is the socket-level to be used + with setsockopt(2) and getsockopt(2) for RDS specific socket + options. fd = socket(PF_RDS, SOCK_SEQPACKET, 0); This creates a new, unbound RDS socket. diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt index e454a6acdca..82518aebb07 100644 --- a/Documentation/pinctrl.txt +++ b/Documentation/pinctrl.txt @@ -72,7 +72,6 @@ static struct pinctrl_desc foo_desc = { .name = "foo", .pins = foo_pins, .npins = ARRAY_SIZE(foo_pins), - .maxpin = 63, .owner = THIS_MODULE, }; @@ -164,8 +163,8 @@ static const char *foo_get_group_name(struct pinctrl_dev *pctldev, } static int foo_get_group_pins(struct pinctrl_dev *pctldev, unsigned selector, - unsigned ** const pins, - unsigned * const num_pins) + const unsigned **pins, + unsigned *num_pins) { *pins = (unsigned *) foo_groups[selector].pins; *num_pins = foo_groups[selector].num_pins; @@ -1060,7 +1059,7 @@ The semantics of the pinctrl APIs are: Usually the pin control core handled the get/put pair and call out to the device drivers bookkeeping operations, like checking available functions and -the associated pins, whereas the enable/disable pass on to the pin controller +the associated pins, whereas select_state pass on to the pin controller driver which takes care of activating and/or deactivating the mux setting by quickly poking some registers. @@ -1157,8 +1156,9 @@ function, but with different named in the mapping as described under "Advanced mapping" above. So that for an SPI device, we have two states named "pos-A" and "pos-B". -This snippet first muxes the function in the pins defined by group A, enables -it, disables and releases it, and muxes it in on the pins defined by group B: +This snippet first initializes a state object for both groups (in foo_probe()), +then muxes the function in the pins defined by group A, and finally muxes it in +on the pins defined by group B: #include diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 03f7897c641..82dd174396d 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt @@ -21,10 +21,11 @@ ALC267/268 ========== N/A -ALC269 +ALC269/270/275/276/280/282 ====== laptop-amic Laptops with analog-mic input laptop-dmic Laptops with digital-mic input + lenovo-dock Enables docking station I/O for some Lenovos ALC662/663/272 ============== @@ -46,6 +47,7 @@ ALC882/883/885/888/889 acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G acer-aspire-8930g Acer Aspire 8330G/6935G acer-aspire Acer Aspire others + no-primary-hp VAIO Z workaround (for fixed speaker DAC) ALC861/660 ========== diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt index f0ab5cf28fc..8dfb6a5f427 100644 --- a/Documentation/stable_kernel_rules.txt +++ b/Documentation/stable_kernel_rules.txt @@ -1,4 +1,4 @@ -Everything you ever wanted to know about Linux 2.6 -stable releases. +Everything you ever wanted to know about Linux -stable releases. Rules on what kind of patches are accepted, and which ones are not, into the "-stable" tree: @@ -12,6 +12,12 @@ Rules on what kind of patches are accepted, and which ones are not, into the marked CONFIG_BROKEN), an oops, a hang, data corruption, a real security issue, or some "oh, that's not good" issue. In short, something critical. + - Serious issues as reported by a user of a distribution kernel may also + be considered if they fix a notable performance or interactivity issue. + As these fixes are not as obvious and have a higher risk of a subtle + regression they should only be submitted by a distribution kernel + maintainer and include an addendum linking to a bugzilla entry if it + exists and additional information on the user-visible impact. - New device IDs and quirks are also accepted. - No "theoretical race condition" issues, unless an explanation of how the race can be exploited is also provided. @@ -23,6 +29,9 @@ Rules on what kind of patches are accepted, and which ones are not, into the Procedure for submitting patches to the -stable tree: + - If the patch covers files in net/ or drivers/net please follow netdev stable + submission guidelines as described in + Documentation/networking/netdev-FAQ.txt - Send the patch, after verifying that it follows the above rules, to stable@vger.kernel.org. You must note the upstream commit ID in the changelog of your submission, as well as the kernel version you wish @@ -36,10 +45,10 @@ Procedure for submitting patches to the -stable tree: cherry-picked than this can be specified in the following format in the sign-off area: - Cc: # .32.x: a1f84a3: sched: Check for idle - Cc: # .32.x: 1b9508f: sched: Rate-limit newidle - Cc: # .32.x: fd21073: sched: Fix affinity logic - Cc: # .32.x + Cc: # 3.3.x: a1f84a3: sched: Check for idle + Cc: # 3.3.x: 1b9508f: sched: Rate-limit newidle + Cc: # 3.3.x: fd21073: sched: Fix affinity logic + Cc: # 3.3.x Signed-off-by: Ingo Molnar The tag sequence has the meaning of: @@ -73,6 +82,15 @@ Review cycle: security kernel team, and not go through the normal review cycle. Contact the kernel security team for more details on this procedure. +Trees: + + - The queues of patches, for both completed versions and in progress + versions can be found at: + http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git + - The finalized and tagged releases of all stable kernels can be found + in separate branches per version at: + http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git + Review committee: diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 93f3a279147..c42f0fe0f02 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -310,13 +310,24 @@ Default value is "/sbin/hotplug". kptr_restrict: This toggle indicates whether restrictions are placed on -exposing kernel addresses via /proc and other interfaces. When -kptr_restrict is set to (0), there are no restrictions. When -kptr_restrict is set to (1), the default, kernel pointers -printed using the %pK format specifier will be replaced with 0's -unless the user has CAP_SYSLOG. When kptr_restrict is set to -(2), kernel pointers printed using %pK will be replaced with 0's -regardless of privileges. +exposing kernel addresses via /proc and other interfaces. + +When kptr_restrict is set to (0), the default, there are no restrictions. + +When kptr_restrict is set to (1), kernel pointers printed using the %pK +format specifier will be replaced with 0's unless the user has CAP_SYSLOG +and effective user and group ids are equal to the real ids. This is +because %pK checks are done at read() time rather than open() time, so +if permissions are elevated between the open() and the read() (e.g via +a setuid binary) then %pK will not leak kernel pointers to unprivileged +users. Note, this is a temporary solution only. The correct long-term +solution is to do the permission checks at open() time. Consider removing +world read permissions from files that use %pK, and using dmesg_restrict +to protect against uses of %pK in dmesg(8) if leaking kernel pointer +values to unprivileged users is a concern. + +When kptr_restrict is set to (2), kernel pointers printed using +%pK will be replaced with 0's regardless of privileges. ============================================================== diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt index d6498e3cd71..f33a9369e35 100644 --- a/Documentation/x86/x86_64/mm.txt +++ b/Documentation/x86/x86_64/mm.txt @@ -12,6 +12,8 @@ ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) ... unused hole ... +ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks +... unused hole ... ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 ffffffffa0000000 - fffffffffff00000 (=1536 MB) module mapping space diff --git a/Documentation/zh_CN/HOWTO b/Documentation/zh_CN/HOWTO index 7fba5aab9ef..7599eb38b76 100644 --- a/Documentation/zh_CN/HOWTO +++ b/Documentation/zh_CN/HOWTO @@ -237,7 +237,7 @@ kernel.org网站的pub/linux/kernel/v2.6/目录下找到它。它的开发遵循 如果没有2.6.x.y版本内核存在,那么最新的2.6.x版本内核就相当于是当前的稳定 版内核。 -2.6.x.y版本由“稳定版”小组(邮件地址)维护,一般隔周发 +2.6.x.y版本由“稳定版”小组(邮件地址)维护,一般隔周发 布新版本。 内核源码中的Documentation/stable_kernel_rules.txt文件具体描述了可被稳定 diff --git a/Documentation/zh_CN/stable_kernel_rules.txt b/Documentation/zh_CN/stable_kernel_rules.txt index b5b9b0ab02f..26ea5ed7cd9 100644 --- a/Documentation/zh_CN/stable_kernel_rules.txt +++ b/Documentation/zh_CN/stable_kernel_rules.txt @@ -42,7 +42,7 @@ Documentation/stable_kernel_rules.txt 的中文翻译 向稳定版代码树提交补丁的过程: - - 在确认了补丁符合以上的规则后,将补丁发送到stable@kernel.org。 + - 在确认了补丁符合以上的规则后,将补丁发送到stable@vger.kernel.org。 - 如果补丁被接受到队列里,发送者会收到一个ACK回复,如果没有被接受,收 到的是NAK回复。回复需要几天的时间,这取决于开发者的时间安排。 - 被接受的补丁会被加到稳定版本队列里,等待其他开发者的审查。 diff --git a/MAINTAINERS b/MAINTAINERS index 66c947e2404..c9ae62c2f4c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2627,7 +2627,7 @@ S: Maintained F: drivers/net/ethernet/i825xx/eexpress.* ETHERNET BRIDGE -M: Stephen Hemminger +M: Stephen Hemminger L: bridge@lists.linux-foundation.org L: netdev@vger.kernel.org W: http://www.linuxfoundation.org/en/Net:Bridge @@ -4319,7 +4319,7 @@ S: Maintained MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) M: Mirko Lindner -M: Stephen Hemminger +M: Stephen Hemminger L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/marvell/sk* @@ -4570,7 +4570,7 @@ S: Supported F: drivers/infiniband/hw/nes/ NETEM NETWORK EMULATOR -M: Stephen Hemminger +M: Stephen Hemminger L: netem@lists.linux-foundation.org S: Maintained F: net/sched/sch_netem.c @@ -5573,7 +5573,7 @@ F: Documentation/blockdev/ramdisk.txt F: drivers/block/brd.c RANDOM NUMBER DRIVER -M: Matt Mackall +M: Theodore Ts'o" S: Maintained F: drivers/char/random.c @@ -6397,6 +6397,7 @@ STABLE BRANCH M: Greg Kroah-Hartman L: stable@vger.kernel.org S: Supported +F: Documentation/stable_kernel_rules.txt STAGING SUBSYSTEM M: Greg Kroah-Hartman diff --git a/Makefile b/Makefile index 54a2e35ed13..7d1a2867a72 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 4 -SUBLEVEL = 0 +SUBLEVEL = 113 EXTRAVERSION = NAME = Saber-toothed Squirrel @@ -599,6 +599,8 @@ KBUILD_CFLAGS += -fomit-frame-pointer endif endif +KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) + ifdef CONFIG_DEBUG_INFO KBUILD_CFLAGS += -g KBUILD_AFLAGS += -gdwarf-2 diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h index 7a3d38d5ed6..5ebab5895ed 100644 --- a/arch/alpha/include/asm/io.h +++ b/arch/alpha/include/asm/io.h @@ -489,6 +489,11 @@ extern inline void writeq(u64 b, volatile void __iomem *addr) } #endif +#define ioread16be(p) be16_to_cpu(ioread16(p)) +#define ioread32be(p) be32_to_cpu(ioread32(p)) +#define iowrite16be(v,p) iowrite16(cpu_to_be16(v), (p)) +#define iowrite32be(v,p) iowrite32(cpu_to_be32(v), (p)) + #define inb_p inb #define inw_p inw #define inl_p inl diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c index 53649c7d006..1a333558f65 100644 --- a/arch/alpha/kernel/pci-sysfs.c +++ b/arch/alpha/kernel/pci-sysfs.c @@ -84,7 +84,7 @@ static int pci_mmap_resource(struct kobject *kobj, if (iomem_is_exclusive(res->start)) return -EINVAL; - pcibios_resource_to_bus(pdev, &bar, res); + pcibios_resource_to_bus(pdev->bus, &bar, res); vma->vm_pgoff += bar.start >> (PAGE_SHIFT - (sparse ? 5 : 0)); mmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io; @@ -140,7 +140,7 @@ static int sparse_mem_mmap_fits(struct pci_dev *pdev, int num) long dense_offset; unsigned long sparse_size; - pcibios_resource_to_bus(pdev, &bar, &pdev->resource[num]); + pcibios_resource_to_bus(pdev->bus, &bar, &pdev->resource[num]); /* All core logic chips have 4G sparse address space, except CIA which has 16G (see xxx_SPARSE_MEM and xxx_DENSE_MEM diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index 5eecab1a84e..f153733fb93 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -149,6 +149,8 @@ do_page_fault(unsigned long address, unsigned long mmcsr, if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) goto out_of_memory; + else if (fault & VM_FAULT_SIGSEGV) + goto bad_area; else if (fault & VM_FAULT_SIGBUS) goto do_sigbus; BUG(); diff --git a/arch/alpha/oprofile/common.c b/arch/alpha/oprofile/common.c index a0a5d27aa21..b8ce18f485d 100644 --- a/arch/alpha/oprofile/common.c +++ b/arch/alpha/oprofile/common.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "op_impl.h" diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9c693e15cad..18ca1d5422a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1,7 +1,6 @@ config ARM bool default y - select HAVE_AOUT select HAVE_DMA_API_DEBUG select HAVE_IDE if PCI || ISA || PCMCIA select HAVE_DMA_CONTIGUOUS if (CPU_V6 || CPU_V6K || CPU_V7) @@ -619,7 +618,7 @@ config ARCH_IXP4XX select ARCH_HAS_DMA_SET_COHERENT_MASK select CLKSRC_MMIO select CPU_XSCALE - select GENERIC_GPIO + select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select MIGHT_HAVE_PCI select NEED_MACH_IO_H @@ -642,6 +641,7 @@ config ARCH_KIRKWOOD bool "Marvell Kirkwood" select CPU_FEROCEON select PCI + select PCI_QUIRKS select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select NEED_MACH_IO_H @@ -1498,6 +1498,16 @@ config KSAPI Scorpion processor supported hardware performance counters on a per thread basis or AXI counters on an overall system basis. +config ARM_ERRATA_775420 + bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock" + depends on CPU_V7 + help + This option enables the workaround for the 775420 Cortex-A9 (r2p2, + r2p6,r2p8,r2p10,r3p0) erratum. In case a date cache maintenance + operation aborts with MMU exception, it might cause the processor + to deadlock. This workaround puts DSB before executing ISB if + an abort may occur on cache maintenance. + endmenu source "arch/arm/common/Kconfig" @@ -2294,6 +2304,7 @@ source "drivers/cpufreq/Kconfig" config CPU_FREQ_IMX tristate "CPUfreq driver for i.MX CPUs" depends on ARCH_MXC && CPU_FREQ + select CPU_FREQ_TABLE help This enables the CPUfreq driver for i.MX CPUs. diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 95f906187a7..b94b834877a 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -53,6 +53,14 @@ endif comma = , +# +# The Scalar Replacement of Aggregates (SRA) optimization pass in GCC 4.9 and +# later may result in code being generated that handles signed short and signed +# char struct members incorrectly. So disable it. +# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932) +# +KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra) + # This selects which instruction set is used. # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 9f4ca960371..d4736a411af 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -131,7 +131,6 @@ KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) endif ccflags-y := -fpic -fno-builtin -I$(obj) -asflags-y := -Wa,-march=all # Supply kernel BSS size to the decompressor via a linker symbol. KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S index 6179d94dd5c..3115e313d9f 100644 --- a/arch/arm/boot/compressed/head-sa1100.S +++ b/arch/arm/boot/compressed/head-sa1100.S @@ -11,6 +11,7 @@ #include .section ".start", "ax" + .arch armv4 __SA1100_start: diff --git a/arch/arm/boot/compressed/head-shark.S b/arch/arm/boot/compressed/head-shark.S index 089c560e07f..92b56897ed6 100644 --- a/arch/arm/boot/compressed/head-shark.S +++ b/arch/arm/boot/compressed/head-shark.S @@ -18,6 +18,7 @@ .section ".start", "ax" + .arch armv4 b __beginning __ofw_data: .long 0 @ the number of memory blocks diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index f38bd848977..91bd6c51572 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -10,6 +10,7 @@ */ #include + .arch armv7-a /* * Debugging stuff * @@ -699,6 +700,7 @@ __armv7_mmu_cache_on: mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs #endif mrc p15, 0, r0, c1, c0, 0 @ read control reg + bic r0, r0, #1 << 28 @ clear SCTLR.TRE orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement orr r0, r0, #0x003c @ write buffer #ifdef CONFIG_MMU diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi index bc5e7d5ddd5..9cc8ed2310e 100644 --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi @@ -208,7 +208,7 @@ fec: fec@1002b000 { compatible = "fsl,imx27-fec"; - reg = <0x1002b000 0x4000>; + reg = <0x1002b000 0x1000>; interrupts = <50>; status = "disabled"; }; diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts index 9949e6060de..6b34b23dbfb 100644 --- a/arch/arm/boot/dts/imx51-babbage.dts +++ b/arch/arm/boot/dts/imx51-babbage.dts @@ -29,8 +29,8 @@ aips@70000000 { /* aips-1 */ spba@70000000 { esdhc@70004000 { /* ESDHC1 */ - fsl,cd-internal; - fsl,wp-internal; + fsl,cd-controller; + fsl,wp-controller; status = "okay"; }; diff --git a/arch/arm/include/asm/a.out-core.h b/arch/arm/include/asm/a.out-core.h deleted file mode 100644 index 92f10cb5c70..00000000000 --- a/arch/arm/include/asm/a.out-core.h +++ /dev/null @@ -1,45 +0,0 @@ -/* a.out coredump register dumper - * - * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. - * Written by David Howells (dhowells@redhat.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public Licence - * as published by the Free Software Foundation; either version - * 2 of the Licence, or (at your option) any later version. - */ - -#ifndef _ASM_A_OUT_CORE_H -#define _ASM_A_OUT_CORE_H - -#ifdef __KERNEL__ - -#include -#include - -/* - * fill in the user structure for an a.out core dump - */ -static inline void aout_dump_thread(struct pt_regs *regs, struct user *dump) -{ - struct task_struct *tsk = current; - - dump->magic = CMAGIC; - dump->start_code = tsk->mm->start_code; - dump->start_stack = regs->ARM_sp & ~(PAGE_SIZE - 1); - - dump->u_tsize = (tsk->mm->end_code - tsk->mm->start_code) >> PAGE_SHIFT; - dump->u_dsize = (tsk->mm->brk - tsk->mm->start_data + PAGE_SIZE - 1) >> PAGE_SHIFT; - dump->u_ssize = 0; - - memset(dump->u_debugreg, 0, sizeof(dump->u_debugreg)); - - if (dump->start_stack < 0x04000000) - dump->u_ssize = (0x04000000 - dump->start_stack) >> PAGE_SHIFT; - - dump->regs = *regs; - dump->u_fpvalid = dump_fpu (regs, &dump->u_fp); -} - -#endif /* __KERNEL__ */ -#endif /* _ASM_A_OUT_CORE_H */ diff --git a/arch/arm/include/asm/a.out.h b/arch/arm/include/asm/a.out.h deleted file mode 100644 index 083894b2e3b..00000000000 --- a/arch/arm/include/asm/a.out.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __ARM_A_OUT_H__ -#define __ARM_A_OUT_H__ - -#include -#include - -struct exec -{ - __u32 a_info; /* Use macros N_MAGIC, etc for access */ - __u32 a_text; /* length of text, in bytes */ - __u32 a_data; /* length of data, in bytes */ - __u32 a_bss; /* length of uninitialized data area for file, in bytes */ - __u32 a_syms; /* length of symbol table data in file, in bytes */ - __u32 a_entry; /* start address */ - __u32 a_trsize; /* length of relocation info for text, in bytes */ - __u32 a_drsize; /* length of relocation info for data, in bytes */ -}; - -/* - * This is always the same - */ -#define N_TXTADDR(a) (0x00008000) - -#define N_TRSIZE(a) ((a).a_trsize) -#define N_DRSIZE(a) ((a).a_drsize) -#define N_SYMSIZE(a) ((a).a_syms) - -#define M_ARM 103 - -#ifndef LIBRARY_START_TEXT -#define LIBRARY_START_TEXT (0x00c00000) -#endif - -#endif /* __A_OUT_GNU_H__ */ diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 0fd319138be..591b4b7e48b 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h @@ -233,6 +233,7 @@ extern void copy_to_user_page(struct vm_area_struct *, struct page *, static inline void __flush_icache_all(void) { __flush_icache_preferred(); + dsb(); } /* @@ -251,7 +252,9 @@ static inline void vivt_flush_cache_mm(struct mm_struct *mm) static inline void vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), vma->vm_flags); } @@ -259,7 +262,9 @@ vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned static inline void vivt_flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { unsigned long addr = user_addr & PAGE_MASK; __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); } @@ -337,9 +342,7 @@ static inline void flush_anon_page(struct vm_area_struct *vma, } #define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE -static inline void flush_kernel_dcache_page(struct page *page) -{ -} +extern void flush_kernel_dcache_page(struct page *); #define flush_dcache_mmap_lock(mapping) \ spin_lock_irq(&(mapping)->tree_lock) diff --git a/arch/arm/include/asm/div64.h b/arch/arm/include/asm/div64.h index fe92ccf1d0b..a66061aef29 100644 --- a/arch/arm/include/asm/div64.h +++ b/arch/arm/include/asm/div64.h @@ -156,7 +156,7 @@ /* Select the best insn combination to perform the */ \ /* actual __m * __n / (__p << 64) operation. */ \ if (!__c) { \ - asm ( "umull %Q0, %R0, %1, %Q2\n\t" \ + asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" \ "mov %Q0, #0" \ : "=&r" (__res) \ : "r" (__m), "r" (__n) \ diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index 56211f2084e..ce6e30628cc 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h @@ -116,7 +116,7 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); the loader. We need to make sure that it is out of the way of the program that it will "exec", and that there is sufficient room for the brk. */ -#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) /* When the program starts, a1 contains a pointer to a function to be registered with atexit, as per the SVR4 ABI. A value of 0 means we diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h index ec3f3bb7d4c..7303106e2d5 100644 --- a/arch/arm/include/asm/hwcap.h +++ b/arch/arm/include/asm/hwcap.h @@ -18,11 +18,12 @@ #define HWCAP_THUMBEE (1 << 11) #define HWCAP_NEON (1 << 12) #define HWCAP_VFPv3 (1 << 13) -#define HWCAP_VFPv3D16 (1 << 14) +#define HWCAP_VFPv3D16 (1 << 14) /* also set for VFPv4-D16 */ #define HWCAP_TLS (1 << 15) #define HWCAP_VFPv4 (1 << 16) #define HWCAP_IDIVA (1 << 17) #define HWCAP_IDIVT (1 << 18) +#define HWCAP_VFPD32 (1 << 19) /* set if VFP has 32 regs (not 16) */ #define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) #define HWCAP_LPAE (1 << 20) #define HWCAP_EVTSTRM (1 << 21) diff --git a/arch/arm/include/asm/mutex.h b/arch/arm/include/asm/mutex.h index fd3f17ef94a..b1479fd04a9 100644 --- a/arch/arm/include/asm/mutex.h +++ b/arch/arm/include/asm/mutex.h @@ -7,129 +7,10 @@ */ #ifndef _ASM_MUTEX_H #define _ASM_MUTEX_H - -#if __LINUX_ARM_ARCH__ < 6 -/* On pre-ARMv6 hardware the swp based implementation is the most efficient. */ -# include -#else - /* - * Attempting to lock a mutex on ARMv6+ can be done with a bastardized - * atomic decrement (it is not a reliable atomic decrement but it satisfies - * the defined semantics for our purpose, while being smaller and faster - * than a real atomic decrement or atomic swap. The idea is to attempt - * decrementing the lock value only once. If once decremented it isn't zero, - * or if its store-back fails due to a dispute on the exclusive store, we - * simply bail out immediately through the slow path where the lock will be - * reattempted until it succeeds. + * On pre-ARMv6 hardware this results in a swp-based implementation, + * which is the most efficient. For ARMv6+, we emit a pair of exclusive + * accesses instead. */ -static inline void -__mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - fail_fn(count); - else - smp_rmb(); -} - -static inline int -__mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - __res = fail_fn(count); - else - smp_rmb(); - - return __res; -} - -/* - * Same trick is used for the unlock fast path. However the original value, - * rather than the result, is used to test for success in order to have - * better generated assembly. - */ -static inline void -__mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - smp_wmb(); - __asm__ ( - - "ldrex %0, [%3] \n\t" - "add %1, %0, #1 \n\t" - "strex %2, %1, [%3] " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __orig |= __ex_flag; - if (unlikely(__orig != 0)) - fail_fn(count); -} - -/* - * If the unlock was done on a contended lock, or if the unlock simply fails - * then the mutex remains locked. - */ -#define __mutex_slowpath_needs_to_unlock() 1 - -/* - * For __mutex_fastpath_trylock we use another construct which could be - * described as a "single value cmpxchg". - * - * This provides the needed trylock semantics like cmpxchg would, but it is - * lighter and less generic than a true cmpxchg implementation. - */ -static inline int -__mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - __asm__ ( - - "1: ldrex %0, [%3] \n\t" - "subs %1, %0, #1 \n\t" - "strexeq %2, %1, [%3] \n\t" - "movlt %0, #0 \n\t" - "cmpeq %2, #0 \n\t" - "bgt 1b " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&count->counter) - : "cc", "memory" ); - if (__orig) - smp_rmb(); - - return __orig; -} - -#endif +#include #endif diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h index 12f71a19042..f94784f0e3a 100644 --- a/arch/arm/include/asm/outercache.h +++ b/arch/arm/include/asm/outercache.h @@ -37,10 +37,10 @@ struct outer_cache_fns { void (*resume)(void); }; -#ifdef CONFIG_OUTER_CACHE - extern struct outer_cache_fns outer_cache; +#ifdef CONFIG_OUTER_CACHE + static inline void outer_inv_range(phys_addr_t start, phys_addr_t end) { if (outer_cache.inv_range) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index ff818f4faae..0064756a8b7 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -60,6 +60,15 @@ extern void __pgd_error(const char *file, int line, pgd_t); */ #define FIRST_USER_ADDRESS PAGE_SIZE +/* + * Use TASK_SIZE as the ceiling argument for free_pgtables() and + * free_pgd_range() to avoid freeing the modules pmd when LPAE is enabled (pmd + * page shared between user and kernel). + */ +#ifdef CONFIG_ARM_LPAE +#define USER_PGTABLES_CEILING TASK_SIZE +#endif + /* * The pgprot_* and protection_map entries will be fixed up in runtime * to include the cachable and bufferable bits based on memory policy, @@ -212,6 +221,18 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) #define timal2group_pte_clear(mm,addr,ptep,tima_l2group_entry_ptr) cpu_v7_timal2group_set_pte_ext(ptep, __pte(0), 0, tima_l2group_entry_ptr) #endif /* CONFIG_TIMA_RKP_L2_GROUP */ +#define pte_none(pte) (!pte_val(pte)) +#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) +#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) +#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) +#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) +#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) +#define pte_special(pte) (0) + +#define pte_present_user(pte) \ + ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ + (L_PTE_PRESENT | L_PTE_USER)) + #if __LINUX_ARM_ARCH__ < 6 static inline void __sync_icache_dcache(pte_t pteval) { @@ -223,12 +244,13 @@ extern void __sync_icache_dcache(pte_t pteval); static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval) { - if (addr >= TASK_SIZE) - set_pte_ext(ptep, pteval, 0); - else { + unsigned long ext = 0; + + if (addr < TASK_SIZE && pte_present_user(pteval)) { __sync_icache_dcache(pteval); - set_pte_ext(ptep, pteval, PTE_EXT_NG); + ext |= PTE_EXT_NG; } + set_pte_ext(ptep, pteval, ext); } #ifdef CONFIG_TIMA_RKP_L2_GROUP @@ -256,18 +278,6 @@ static inline void timal2group_set_pte_commit(void *tima_l2group_entry_ptr, } #endif /* CONFIG_TIMA_RKP_L2_GROUP */ -#define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) -#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) -#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) -#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) -#define pte_special(pte) (0) - -#define pte_present_user(pte) \ - ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ - (L_PTE_PRESENT | L_PTE_USER)) - #define PTE_BIT_FUNC(fn,op) \ static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } @@ -295,13 +305,13 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - * <--------------- offset --------------------> <- type --> 0 0 0 + * <--------------- offset ----------------------> < type -> 0 0 0 * - * This gives us up to 63 swap files and 32GB per swap file. Note that + * This gives us up to 31 swap files and 64GB per swap file. Note that * the offset field is always non-zero. */ #define __SWP_TYPE_SHIFT 3 -#define __SWP_TYPE_BITS 6 +#define __SWP_TYPE_BITS 5 #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index 3a2cd22504e..a587d4f124e 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h @@ -57,7 +57,6 @@ struct thread_struct { #define start_thread(regs,pc,sp) \ ({ \ - unsigned long *stack = (unsigned long *)sp; \ memset(regs->uregs, 0, sizeof(regs->uregs)); \ if (current->personality & ADDR_LIMIT_32BIT) \ regs->ARM_cpsr = USR_MODE; \ @@ -68,9 +67,6 @@ struct thread_struct { regs->ARM_cpsr |= PSR_ENDSTATE; \ regs->ARM_pc = pc & ~1; /* pc */ \ regs->ARM_sp = sp; /* sp */ \ - regs->ARM_r2 = stack[2]; /* r2 (envp) */ \ - regs->ARM_r1 = stack[1]; /* r1 (argv) */ \ - regs->ARM_r0 = stack[0]; /* r0 (argc) */ \ nommu_start_thread(regs); \ }) diff --git a/arch/arm/include/asm/signal.h b/arch/arm/include/asm/signal.h index 43ba0fb1c8a..559ee24c956 100644 --- a/arch/arm/include/asm/signal.h +++ b/arch/arm/include/asm/signal.h @@ -127,6 +127,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 0a070e98625..b04850fdeb5 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -158,8 +158,9 @@ extern int __put_user_8(void *, unsigned long long); #define put_user(x,p) \ ({ \ unsigned long __limit = current_thread_info()->addr_limit - 1; \ + const typeof(*(p)) __user *__tmp_p = (p); \ register const typeof(*(p)) __r2 asm("r2") = (x); \ - register const typeof(*(p)) __user *__p asm("r0") = (p);\ + register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \ register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h index 3d5fc41ae8d..c49c8f778b5 100644 --- a/arch/arm/include/asm/vfpmacros.h +++ b/arch/arm/include/asm/vfpmacros.h @@ -27,9 +27,9 @@ #if __LINUX_ARM_ARCH__ <= 6 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} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field @@ -51,9 +51,9 @@ #if __LINUX_ARM_ARCH__ <= 6 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} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field diff --git a/arch/arm/kernel/crash_dump.c b/arch/arm/kernel/crash_dump.c index 90c50d4b43f..5d1286d5115 100644 --- a/arch/arm/kernel/crash_dump.c +++ b/arch/arm/kernel/crash_dump.c @@ -39,7 +39,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, if (!csize) return 0; - vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE); + vaddr = ioremap(__pfn_to_phys(pfn), PAGE_SIZE); if (!vaddr) return -ENOMEM; diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 9054e6eb5db..a8c3a297104 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -244,6 +244,19 @@ svc_preempt: b 1b #endif +__und_fault: + @ Correct the PC such that it is pointing at the instruction + @ which caused the fault. If the faulting instruction was ARM + @ the PC will be pointing at the next instruction, and have to + @ subtract 4. Otherwise, it is Thumb, and the PC will be + @ pointing at the second half of the Thumb instruction. We + @ have to subtract 2. + ldr r2, [r0, #S_PC] + sub r2, r2, r1 + str r2, [r0, #S_PC] + b do_undefinstr +ENDPROC(__und_fault) + .align 5 __und_svc: #ifdef CONFIG_KPROBES @@ -261,25 +274,32 @@ __und_svc: @ @ r0 - instruction @ -#ifndef CONFIG_THUMB2_KERNEL +#ifndef CONFIG_THUMB2_KERNEL ldr r0, [r4, #-4] #else + mov r1, #2 ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2 cmp r0, #0xe800 @ 32-bit instruction if xx >= 0 - ldrhhs r9, [r4] @ bottom 16 bits - orrhs r0, r9, r0, lsl #16 + blo __und_svc_fault + ldrh r9, [r4] @ bottom 16 bits + add r4, r4, #2 + str r4, [sp, #S_PC] + orr r0, r9, r0, lsl #16 #endif - adr r9, BSYM(1f) + adr r9, BSYM(__und_svc_finish) mov r2, r4 bl call_fpe + mov r1, #4 @ PC correction to apply +__und_svc_fault: mov r0, sp @ struct pt_regs *regs - bl do_undefinstr + bl __und_fault @ @ IRQs off again before pulling preserved data off the stack @ -1: disable_irq_notrace +__und_svc_finish: + disable_irq_notrace @ @ restore SPSR and restart the instruction @@ -423,31 +443,33 @@ __und_usr: mov r2, r4 mov r3, r5 + @ r2 = regs->ARM_pc, which is either 2 or 4 bytes ahead of the + @ faulting instruction depending on Thumb mode. + @ r3 = regs->ARM_cpsr @ - @ fall through to the emulation code, which returns using r9 if - @ it has emulated the instruction, or the more conventional lr - @ if we are to treat this as a real undefined instruction - @ - @ r0 - instruction + @ The emulation code returns using r9 if it has emulated the + @ instruction, or the more conventional lr if we are to treat + @ this as a real undefined instruction @ adr r9, BSYM(ret_from_exception) - @ IRQs must be enabled before attempting to read the instruction from - @ user space since that could cause a page/translation fault if the - @ page table was modified by another CPU. - enable_irq - - adr lr, BSYM(__und_usr_unknown) tst r3, #PSR_T_BIT @ Thumb mode? - itet eq @ explicit IT needed for the 1f label - subeq r4, r2, #4 @ ARM instr at LR - 4 - subne r4, r2, #2 @ Thumb instr at LR - 2 -1: ldreqt r0, [r4] + bne __und_usr_thumb + sub r4, r2, #4 @ ARM instr at LR - 4 +1: ldrt r0, [r4] #ifdef CONFIG_CPU_ENDIAN_BE8 - reveq r0, r0 @ little endian instruction + rev r0, r0 @ little endian instruction #endif - beq call_fpe + @ r0 = 32-bit ARM instruction which caused the exception + @ r2 = PC value for the following instruction (:= regs->ARM_pc) + @ r4 = PC value for the faulting instruction + @ lr = 32-bit undefined instruction function + adr lr, BSYM(__und_usr_fault_32) + b call_fpe + +__und_usr_thumb: @ Thumb instruction + sub r4, r2, #2 @ First half of thumb instr at LR - 2 #if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7 /* * Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms @@ -461,7 +483,7 @@ __und_usr: ldr r5, .LCcpu_architecture ldr r5, [r5] cmp r5, #CPU_ARCH_ARMv7 - blo __und_usr_unknown + blo __und_usr_fault_16 @ 16bit undefined instruction /* * The following code won't get run unless the running CPU really is v7, so * coding round the lack of ldrht on older arches is pointless. Temporarily @@ -469,15 +491,18 @@ __und_usr: */ .arch armv6t2 #endif -2: - ARM( ldrht r5, [r4], #2 ) - THUMB( ldrht r5, [r4] ) - THUMB( add r4, r4, #2 ) +2: ldrht r5, [r4] cmp r5, #0xe800 @ 32bit instruction if xx != 0 - blo __und_usr_unknown -3: ldrht r0, [r4] + blo __und_usr_fault_16 @ 16bit undefined instruction +3: ldrht r0, [r2] add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 + str r2, [sp, #S_PC] @ it's a 2x16bit instr, update orr r0, r0, r5, lsl #16 + adr lr, BSYM(__und_usr_fault_32) + @ r0 = the two 16-bit Thumb instructions which caused the exception + @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc) + @ r4 = PC value for the first 16-bit Thumb instruction + @ lr = 32bit undefined instruction function #if __LINUX_ARM_ARCH__ < 7 /* If the target arch was overridden, change it back: */ @@ -488,17 +513,13 @@ __und_usr: #endif #endif /* __LINUX_ARM_ARCH__ < 7 */ #else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */ - b __und_usr_unknown + b __und_usr_fault_16 #endif - UNWIND(.fnend ) + UNWIND(.fnend) ENDPROC(__und_usr) - @ - @ fallthrough to call_fpe - @ - /* - * The out of line fixup for the ldrt above. + * The out of line fixup for the ldrt instructions above. */ .pushsection .fixup, "ax" 4: mov pc, r9 @@ -529,11 +550,12 @@ ENDPROC(__und_usr) * NEON handler code. * * Emulators may wish to make use of the following registers: - * r0 = instruction opcode. - * r2 = PC+4 + * r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) + * r2 = PC value to resume execution after successful emulation * r9 = normal "successful" return address - * r10 = this threads thread_info structure. + * r10 = this threads thread_info structure * lr = unrecognised instruction return address + * IRQs disabled, FIQs enabled. */ @ @ Fall-through from Thumb-2 __und_usr @@ -667,11 +689,17 @@ ENTRY(no_fp) mov pc, lr ENDPROC(no_fp) -__und_usr_unknown: +__und_usr_fault_32: + mov r1, #4 + b 1f +__und_usr_fault_16: + mov r1, #2 +1: enable_irq mov r0, sp adr lr, BSYM(ret_from_exception) - b do_undefinstr -ENDPROC(__und_usr_unknown) + b __und_fault +ENDPROC(__und_usr_fault_32) +ENDPROC(__und_usr_fault_16) .align 5 __pabt_usr: diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 9a8531eadd3..9d95a46b25f 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S @@ -76,26 +76,21 @@ #ifndef CONFIG_THUMB2_KERNEL .macro svc_exit, rpsr msr spsr_cxsf, \rpsr -#if defined(CONFIG_CPU_V6) - ldr r0, [sp] - strex r1, r2, [sp] @ clear the exclusive monitor - ldmib sp, {r1 - pc}^ @ load r1 - pc, cpsr -#elif defined(CONFIG_CPU_32v6K) - clrex @ clear the exclusive monitor - ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr -#else - ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K) + @ We must avoid clrex due to Cortex-A15 erratum #830321 + sub r0, sp, #4 @ uninhabited address + strex r1, r2, [r0] @ clear the exclusive monitor #endif + ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr .endm .macro restore_user_regs, fast = 0, offset = 0 ldr r1, [sp, #\offset + S_PSR] @ get calling cpsr ldr lr, [sp, #\offset + S_PC]! @ get pc msr spsr_cxsf, r1 @ save in spsr_svc -#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K) + @ We must avoid clrex due to Cortex-A15 erratum #830321 strex r1, r2, [sp] @ clear the exclusive monitor -#elif defined(CONFIG_CPU_32v6K) - clrex @ clear the exclusive monitor #endif .if \fast ldmdb sp, {r1 - lr}^ @ get calling r1 - lr @@ -123,7 +118,10 @@ .macro svc_exit, rpsr ldr lr, [sp, #S_SP] @ top of the stack ldrd r0, r1, [sp, #S_LR] @ calling lr and pc - clrex @ clear the exclusive monitor + + @ We must avoid clrex due to Cortex-A15 erratum #830321 + strex r2, r1, [sp, #S_LR] @ clear the exclusive monitor + stmdb lr!, {r0, r1, \rpsr} @ calling lr and rfe context ldmia sp, {r0 - r12} mov sp, lr @@ -132,13 +130,16 @@ .endm .macro restore_user_regs, fast = 0, offset = 0 - clrex @ clear the exclusive monitor mov r2, sp load_user_sp_lr r2, r3, \offset + S_SP @ calling sp, lr ldr r1, [sp, #\offset + S_PSR] @ get calling cpsr ldr lr, [sp, #\offset + S_PC] @ get pc add sp, sp, #\offset + S_SP msr spsr_cxsf, r1 @ save in spsr_svc + + @ We must avoid clrex due to Cortex-A15 erratum #830321 + strex r1, r2, [sp] @ clear the exclusive monitor + .if \fast ldmdb sp, {r1 - r12} @ get calling r1 - r12 .else diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 4906c7c8f0f..a4022ee1b94 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -254,6 +254,7 @@ __create_page_tables: /* * Then map boot params address in r2 or the first 1MB (2MB with LPAE) * of ram if boot params address is not specified. + * We map 2 sections in case the ATAGs/DTB crosses a section boundary. */ mov r0, r2, lsr #SECTION_SHIFT movs r0, r0, lsl #SECTION_SHIFT @@ -262,6 +263,8 @@ __create_page_tables: add r3, r3, #PAGE_OFFSET add r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) orr r6, r7, r0 + str r6, [r3], #1 << PMD_ORDER + add r6, r6, #1 << SECTION_SHIFT str r6, [r3] #ifdef CONFIG_DEBUG_LL diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index 16921299efb..b27b96e141a 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c @@ -159,6 +159,12 @@ static int debug_arch_supported(void) arch >= ARM_DEBUG_ARCH_V7_1; } +/* Can we determine the watchpoint access type from the fsr? */ +static int debug_exception_updates_fsr(void) +{ + return 0; +} + /* Determine number of WRP registers available. */ static int get_num_wrp_resources(void) { @@ -631,18 +637,35 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp) info->address &= ~alignment_mask; info->ctrl.len <<= offset; - /* - * Currently we rely on an overflow handler to take - * care of single-stepping the breakpoint when it fires. - * In the case of userspace breakpoints on a core with V7 debug, - * we can use the mismatch feature as a poor-man's hardware - * single-step, but this only works for per-task breakpoints. - */ - if (!bp->overflow_handler && (arch_check_bp_in_kernelspace(bp) || - !core_has_mismatch_brps() || !bp->hw.bp_target)) { - pr_warning("overflow handler required but none found\n"); - ret = -EINVAL; + if (!bp->overflow_handler) { + /* + * Mismatch breakpoints are required for single-stepping + * breakpoints. + */ + if (!core_has_mismatch_brps()) + return -EINVAL; + + /* We don't allow mismatch breakpoints in kernel space. */ + if (arch_check_bp_in_kernelspace(bp)) + return -EPERM; + + /* + * Per-cpu breakpoints are not supported by our stepping + * mechanism. + */ + if (!bp->hw.bp_target) + return -EINVAL; + + /* + * We only support specific access types if the fsr + * reports them. + */ + if (!debug_exception_updates_fsr() && + (info->ctrl.type == ARM_BREAKPOINT_LOAD || + info->ctrl.type == ARM_BREAKPOINT_STORE)) + return -EINVAL; } + out: return ret; } @@ -718,10 +741,12 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr, goto unlock; /* Check that the access type matches. */ - access = (fsr & ARM_FSR_ACCESS_MASK) ? HW_BREAKPOINT_W : - HW_BREAKPOINT_R; - if (!(access & hw_breakpoint_type(wp))) - goto unlock; + if (debug_exception_updates_fsr()) { + access = (fsr & ARM_FSR_ACCESS_MASK) ? + HW_BREAKPOINT_W : HW_BREAKPOINT_R; + if (!(access & hw_breakpoint_type(wp))) + goto unlock; + } /* We have a winner. */ info->trigger = addr; diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index c355aebdf2d..2daf338b0d9 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c @@ -139,3 +139,10 @@ void machine_kexec(struct kimage *image) soft_restart(reboot_code_buffer_phys); } + +void arch_crash_save_vmcoreinfo(void) +{ +#ifdef CONFIG_ARM_LPAE + VMCOREINFO_CONFIG(ARM_LPAE); +#endif +} diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index cb741226b8c..2d108bee044 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c @@ -361,7 +361,10 @@ validate_event(struct pmu *pmu, struct pmu_hw_events *hw_events, if (event->pmu != pmu) return 0; - if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) + if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF) + return 1; + + if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) return 1; armpmu = to_arm_pmu(event->pmu); @@ -1156,6 +1159,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) struct frame_tail __user *tail; + perf_callchain_store(entry, regs->ARM_pc); tail = (struct frame_tail __user *)regs->ARM_fp - 1; while ((entry->nr < PERF_MAX_STACK_DEPTH) && diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index 7c7a9d1754e..50785d42e18 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c @@ -775,7 +775,7 @@ static unsigned armv7_a7_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] /* * PMXEVTYPER: Event selection reg */ -#define ARMV7_EVTYPE_MASK 0xc00000ff /* Mask for writable bits */ +#define ARMV7_EVTYPE_MASK 0xc80000ff /* Mask for writable bits */ #define ARMV7_EVTYPE_EVENT 0xff /* Mask for EVENT bits */ /* diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 0267e2c2e37..6d51a10230f 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -316,6 +316,7 @@ void machine_shutdown(void) void machine_halt(void) { machine_shutdown(); + local_irq_disable(); while (1); } @@ -341,6 +342,7 @@ void machine_restart(char *cmd) /* Whoops - the platform was unable to reboot. Tell the user! */ printk("Reboot failed -- System halted\n"); + local_irq_disable(); while (1); } @@ -662,6 +664,7 @@ EXPORT_SYMBOL(kernel_thread); unsigned long get_wchan(struct task_struct *p) { struct stackframe frame; + unsigned long stack_page; int count = 0; if (!p || p == current || p->state == TASK_RUNNING) return 0; @@ -670,9 +673,11 @@ unsigned long get_wchan(struct task_struct *p) frame.sp = thread_saved_sp(p); frame.lr = 0; /* recovered from the stack */ frame.pc = thread_saved_pc(p); + stack_page = (unsigned long)task_stack_page(p); do { - int ret = unwind_frame(&frame); - if (ret < 0) + if (frame.sp < stack_page || + frame.sp >= stack_page + THREAD_SIZE || + unwind_frame(&frame) < 0) return 0; if (!in_sched_functions(frame.pc)) return frame.pc; diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index c6dd37c08b1..de697fbede2 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -440,12 +440,17 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, */ thumb = handler & 1; -#if __LINUX_ARM_ARCH__ >= 7 +#if __LINUX_ARM_ARCH__ >= 6 /* - * Clear the If-Then Thumb-2 execution state - * ARM spec requires this to be all 000s in ARM mode - * Snapdragon S4/Krait misbehaves on a Thumb=>ARM - * signal transition without this. + * Clear the If-Then Thumb-2 execution state. ARM spec + * requires this to be all 000s in ARM mode. Snapdragon + * S4/Krait misbehaves on a Thumb=>ARM signal transition + * without this. + * + * We must do this whenever we are running on a Thumb-2 + * capable CPU, which includes ARMv6T2. However, we elect + * to do this whenever we're on an ARMv6 or later CPU for + * simplicity. */ cpsr &= ~PSR_IT_MASK; #endif diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index dfcc30505fe..8fbdb0e4573 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -313,18 +313,24 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid) asmlinkage void __cpuinit secondary_start_kernel(void) { struct mm_struct *mm = &init_mm; - unsigned int cpu = smp_processor_id(); + unsigned int cpu; + + /* + * The identity mapping is uncached (strongly ordered), so + * switch away from it before attempting any exclusive accesses. + */ + cpu_switch_mm(mm->pgd, mm); + enter_lazy_tlb(mm, current); + local_flush_tlb_all(); /* * All kernel threads share the same mm context; grab a * reference and switch to it. */ + cpu = smp_processor_id(); atomic_inc(&mm->mm_count); current->active_mm = mm; cpumask_set_cpu(cpu, mm_cpumask(mm)); - cpu_switch_mm(mm->pgd, mm); - enter_lazy_tlb(mm, current); - local_flush_tlb_all(); pr_debug("CPU%u: Booted secondary processor\n", cpu); diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 00f79e59985..6582c4adc18 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c @@ -31,7 +31,7 @@ int notrace unwind_frame(struct stackframe *frame) high = ALIGN(low, THREAD_SIZE); /* check current frame pointer is within bounds */ - if (fp < (low + 12) || fp + 4 >= high) + if (fp < low + 12 || fp > high - 4) return -EINVAL; /* restore the registers from the stack frame */ @@ -83,13 +83,16 @@ static int save_trace(struct stackframe *frame, void *d) return trace->nr_entries >= trace->max_entries; } -void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) +/* This must be noinline to so that our skip calculation works correctly */ +static noinline void __save_stack_trace(struct task_struct *tsk, + struct stack_trace *trace, unsigned int nosched) { struct stack_trace_data data; struct stackframe frame; data.trace = trace; data.skip = trace->skip; + data.no_sched_functions = nosched; if (tsk != current) { #ifdef CONFIG_SMP @@ -102,7 +105,6 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) trace->entries[trace->nr_entries++] = ULONG_MAX; return; #else - data.no_sched_functions = 1; frame.fp = thread_saved_fp(tsk); frame.sp = thread_saved_sp(tsk); frame.lr = 0; /* recovered from the stack */ @@ -111,11 +113,12 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) } else { register unsigned long current_sp asm ("sp"); - data.no_sched_functions = 0; + /* We don't want this function nor the caller */ + data.skip += 2; frame.fp = (unsigned long)__builtin_frame_address(0); frame.sp = current_sp; frame.lr = (unsigned long)__builtin_return_address(0); - frame.pc = (unsigned long)save_stack_trace_tsk; + frame.pc = (unsigned long)__save_stack_trace; } walk_stackframe(&frame, save_trace, &data); @@ -123,9 +126,14 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) trace->entries[trace->nr_entries++] = ULONG_MAX; } +void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) +{ + __save_stack_trace(tsk, trace, 1); +} + void save_stack_trace(struct stack_trace *trace) { - save_stack_trace_tsk(current, trace); + __save_stack_trace(current, trace, 0); } EXPORT_SYMBOL_GPL(save_stack_trace); #endif diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c index 5d144851288..dd5ba5e7b6f 100644 --- a/arch/arm/kernel/swp_emulate.c +++ b/arch/arm/kernel/swp_emulate.c @@ -109,10 +109,12 @@ static void set_segfault(struct pt_regs *regs, unsigned long addr) { siginfo_t info; + down_read(¤t->mm->mmap_sem); if (find_vma(current->mm, addr) == NULL) info.si_code = SEGV_MAPERR; else info.si_code = SEGV_ACCERR; + up_read(¤t->mm->mmap_sem); info.si_signo = SIGSEGV; info.si_errno = 0; diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c index 8200deaa14f..140c817b9bf 100644 --- a/arch/arm/kernel/topology.c +++ b/arch/arm/kernel/topology.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -42,6 +43,7 @@ #define MPIDR_LEVEL2_SHIFT 16 struct cputopo_arm cpu_topology[NR_CPUS]; +EXPORT_SYMBOL_GPL(cpu_topology); const struct cpumask *cpu_coregroup_mask(int cpu) { diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 3f812ea23ba..dbf3d729955 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -43,7 +43,13 @@ #include -static const char *handler[]= { "prefetch abort", "data abort", "address exception", "interrupt" }; +static const char *handler[]= { + "prefetch abort", + "data abort", + "address exception", + "interrupt", + "undefined instruction", +}; void *vectors_page; @@ -397,18 +403,10 @@ static int call_undef_hook(struct pt_regs *regs, unsigned int instr) asmlinkage void __exception do_undefinstr(struct pt_regs *regs) { - unsigned int correction = thumb_mode(regs) ? 2 : 4; unsigned int instr; siginfo_t info; void __user *pc; - /* - * According to the ARM ARM, PC is 2 or 4 bytes ahead, - * depending whether we're in Thumb mode or not. - * Correct this offset. - */ - regs->ARM_pc -= correction; - pc = (void __user *)instruction_pointer(regs); if (processor_mode(regs) == SVC_MODE) { @@ -423,15 +421,17 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) #endif instr = *(u32 *) pc; } else if (thumb_mode(regs)) { - get_user(instr, (u16 __user *)pc); + if (get_user(instr, (u16 __user *)pc)) + goto die_sig; if (is_wide_instruction(instr)) { unsigned int instr2; - get_user(instr2, (u16 __user *)pc+1); + if (get_user(instr2, (u16 __user *)pc+1)) + goto die_sig; instr <<= 16; instr |= instr2; } - } else { - get_user(instr, (u32 __user *)pc); + } else if (get_user(instr, (u32 __user *)pc)) { + goto die_sig; } if (call_undef_hook(regs, instr) == 0) @@ -439,6 +439,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) trace_undef_instr(regs, (void *)pc); +die_sig: #ifdef CONFIG_DEBUG_USER if (user_debug & UDBG_UNDEFINED) { printk(KERN_INFO "%s (%d): undefined instruction: pc=%p\n", diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 05774e5b1cb..3b0c719f9fe 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c @@ -463,7 +463,7 @@ static struct i2c_gpio_platform_data pdata = { static struct platform_device at91rm9200_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 5652dde4bbe..151fec4ccf2 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c @@ -468,7 +468,7 @@ static struct i2c_gpio_platform_data pdata = { static struct platform_device at91sam9260_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 4db961a9308..8a29c6cbe08 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c @@ -285,7 +285,7 @@ static struct i2c_gpio_platform_data pdata = { static struct platform_device at91sam9261_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index fe99206de88..8d443225266 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c @@ -542,7 +542,7 @@ static struct i2c_gpio_platform_data pdata = { static struct platform_device at91sam9263_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index fe4ae22e856..b8d4114ea22 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c @@ -314,7 +314,7 @@ static struct i2c_gpio_platform_data pdata = { static struct platform_device at91sam9rl_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h index 89f56f3a802..8c3f8e89d2a 100644 --- a/arch/arm/mach-at91/pm.h +++ b/arch/arm/mach-at91/pm.h @@ -38,7 +38,7 @@ static inline void at91rm9200_standby(void) " mcr p15, 0, %0, c7, c0, 4\n\t" " str %5, [%1, %2]" : - : "r" (0), "r" (AT91_BASE_SYS), "r" (AT91RM9200_SDRAMC_LPR), + : "r" (0), "r" (at91_ramc_base[0]), "r" (AT91RM9200_SDRAMC_LPR), "r" (1), "r" (AT91RM9200_SDRAMC_SRR), "r" (lpr)); } diff --git a/arch/arm/mach-at91/sam9_smc.c b/arch/arm/mach-at91/sam9_smc.c index 99a0a1d2b7d..b26156bf15d 100644 --- a/arch/arm/mach-at91/sam9_smc.c +++ b/arch/arm/mach-at91/sam9_smc.c @@ -101,7 +101,7 @@ static void sam9_smc_cs_read(void __iomem *base, /* Pulse register */ val = __raw_readl(base + AT91_SMC_PULSE); - config->nwe_setup = val & AT91_SMC_NWEPULSE; + config->nwe_pulse = val & AT91_SMC_NWEPULSE; config->ncs_write_pulse = (val & AT91_SMC_NCS_WRPULSE) >> 8; config->nrd_pulse = (val & AT91_SMC_NRDPULSE) >> 16; config->ncs_read_pulse = (val & AT91_SMC_NCS_RDPULSE) >> 24; diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index f44a2e7272e..5db5174c4a5 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c @@ -104,6 +104,8 @@ static void __init soc_detect(u32 dbgu_base) switch (socid) { case ARCH_ID_AT91RM9200: at91_soc_initdata.type = AT91_SOC_RM9200; + if (at91_soc_initdata.subtype == AT91_SOC_SUBTYPE_NONE) + at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA; at91_boot_soc = at91rm9200_soc; break; @@ -146,7 +148,7 @@ static void __init soc_detect(u32 dbgu_base) } /* at91sam9g10 */ - if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) { + if ((socid & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) { at91_soc_initdata.type = AT91_SOC_SAM9G10; at91_boot_soc = at91sam9261_soc; } @@ -324,7 +326,7 @@ static void at91_dt_rstc(void) of_id = of_match_node(rstc_ids, np); if (!of_id) - panic("AT91: rtsc no restart function availlable\n"); + panic("AT91: rtsc no restart function available\n"); arm_pm_restart = of_id->data; diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c index 031805b1428..7f26faf37da 100644 --- a/arch/arm/mach-cns3xxx/core.c +++ b/arch/arm/mach-cns3xxx/core.c @@ -22,19 +22,9 @@ static struct map_desc cns3xxx_io_desc[] __initdata = { { - .virtual = CNS3XXX_TC11MP_TWD_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_TWD_BASE), - .length = SZ_4K, - .type = MT_DEVICE, - }, { - .virtual = CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_GIC_CPU_BASE), - .length = SZ_4K, - .type = MT_DEVICE, - }, { - .virtual = CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_GIC_DIST_BASE), - .length = SZ_4K, + .virtual = CNS3XXX_TC11MP_SCU_BASE_VIRT, + .pfn = __phys_to_pfn(CNS3XXX_TC11MP_SCU_BASE), + .length = SZ_8K, .type = MT_DEVICE, }, { .virtual = CNS3XXX_TIMER1_2_3_BASE_VIRT, diff --git a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h b/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h index 191c8e57f28..b1021aafa48 100644 --- a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h +++ b/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h @@ -94,10 +94,10 @@ #define RTC_INTR_STS_OFFSET 0x34 #define CNS3XXX_MISC_BASE 0x76000000 /* Misc Control */ -#define CNS3XXX_MISC_BASE_VIRT 0xFFF07000 /* Misc Control */ +#define CNS3XXX_MISC_BASE_VIRT 0xFB000000 /* Misc Control */ #define CNS3XXX_PM_BASE 0x77000000 /* Power Management Control */ -#define CNS3XXX_PM_BASE_VIRT 0xFFF08000 +#define CNS3XXX_PM_BASE_VIRT 0xFB001000 #define PM_CLK_GATE_OFFSET 0x00 #define PM_SOFT_RST_OFFSET 0x04 @@ -109,7 +109,7 @@ #define PM_PLL_HM_PD_OFFSET 0x1C #define CNS3XXX_UART0_BASE 0x78000000 /* UART 0 */ -#define CNS3XXX_UART0_BASE_VIRT 0xFFF09000 +#define CNS3XXX_UART0_BASE_VIRT 0xFB002000 #define CNS3XXX_UART1_BASE 0x78400000 /* UART 1 */ #define CNS3XXX_UART1_BASE_VIRT 0xFFF0A000 @@ -130,7 +130,7 @@ #define CNS3XXX_I2S_BASE_VIRT 0xFFF10000 #define CNS3XXX_TIMER1_2_3_BASE 0x7C800000 /* Timer */ -#define CNS3XXX_TIMER1_2_3_BASE_VIRT 0xFFF10800 +#define CNS3XXX_TIMER1_2_3_BASE_VIRT 0xFB003000 #define TIMER1_COUNTER_OFFSET 0x00 #define TIMER1_AUTO_RELOAD_OFFSET 0x04 @@ -227,16 +227,16 @@ * Testchip peripheral and fpga gic regions */ #define CNS3XXX_TC11MP_SCU_BASE 0x90000000 /* IRQ, Test chip */ -#define CNS3XXX_TC11MP_SCU_BASE_VIRT 0xFF000000 +#define CNS3XXX_TC11MP_SCU_BASE_VIRT 0xFB004000 #define CNS3XXX_TC11MP_GIC_CPU_BASE 0x90000100 /* Test chip interrupt controller CPU interface */ -#define CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT 0xFF000100 +#define CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x100) #define CNS3XXX_TC11MP_TWD_BASE 0x90000600 -#define CNS3XXX_TC11MP_TWD_BASE_VIRT 0xFF000600 +#define CNS3XXX_TC11MP_TWD_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x600) #define CNS3XXX_TC11MP_GIC_DIST_BASE 0x90001000 /* Test chip interrupt controller distributor */ -#define CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT 0xFF001000 +#define CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x1000) #define CNS3XXX_TC11MP_L220_BASE 0x92002000 /* L220 registers */ #define CNS3XXX_TC11MP_L220_BASE_VIRT 0xFF002000 diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c index bda7aca04ca..18f9e710dc5 100644 --- a/arch/arm/mach-dove/common.c +++ b/arch/arm/mach-dove/common.c @@ -90,7 +90,7 @@ void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data) { orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE, IRQ_DOVE_GE00_SUM, - 0, get_tclk()); + 0, get_tclk(), 1600); } /***************************************************************************** diff --git a/arch/arm/mach-dove/include/mach/bridge-regs.h b/arch/arm/mach-dove/include/mach/bridge-regs.h index 226949dc4ac..f953bb54aa9 100644 --- a/arch/arm/mach-dove/include/mach/bridge-regs.h +++ b/arch/arm/mach-dove/include/mach/bridge-regs.h @@ -50,5 +50,6 @@ #define POWER_MANAGEMENT (BRIDGE_VIRT_BASE | 0x011c) #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) +#define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE | 0x0300) #endif diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h index ad1165d488c..d52b0ef313b 100644 --- a/arch/arm/mach-dove/include/mach/dove.h +++ b/arch/arm/mach-dove/include/mach/dove.h @@ -78,6 +78,7 @@ /* North-South Bridge */ #define BRIDGE_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x20000) +#define BRIDGE_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x20000) /* Cryptographic Engine */ #define DOVE_CRYPT_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x30000) diff --git a/arch/arm/mach-dove/include/mach/pm.h b/arch/arm/mach-dove/include/mach/pm.h index 3ad9f946a9e..11799c33475 100644 --- a/arch/arm/mach-dove/include/mach/pm.h +++ b/arch/arm/mach-dove/include/mach/pm.h @@ -45,7 +45,7 @@ static inline int pmu_to_irq(int pin) static inline int irq_to_pmu(int irq) { - if (IRQ_DOVE_PMU_START < irq && irq < NR_IRQS) + if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS) return irq - IRQ_DOVE_PMU_START; return -EINVAL; diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c index f07fd16e0c9..9f2fd100174 100644 --- a/arch/arm/mach-dove/irq.c +++ b/arch/arm/mach-dove/irq.c @@ -61,8 +61,20 @@ static void pmu_irq_ack(struct irq_data *d) int pin = irq_to_pmu(d->irq); u32 u; + /* + * The PMU mask register is not RW0C: it is RW. This means that + * the bits take whatever value is written to them; if you write + * a '1', you will set the interrupt. + * + * Unfortunately this means there is NO race free way to clear + * these interrupts. + * + * So, let's structure the code so that the window is as small as + * possible. + */ u = ~(1 << (pin & 31)); - writel(u, PMU_INTERRUPT_CAUSE); + u &= readl_relaxed(PMU_INTERRUPT_CAUSE); + writel_relaxed(u, PMU_INTERRUPT_CAUSE); } static struct irq_chip pmu_irq_chip = { diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c index 3e6aaa6361d..909e866a687 100644 --- a/arch/arm/mach-footbridge/common.c +++ b/arch/arm/mach-footbridge/common.c @@ -15,6 +15,7 @@ #include #include #include +#include