Push to branch refs/heads/master:
82be55ad861ae44a1d1748a61af02b8ff1d56d53 -->
  c843f6a022e07cd5a679d7f7c3e8434d17b87108

 .../ABI/testing/sysfs-bus-iio-proximity-as3935     |   2 +-
 Documentation/DocBook/gpu.tmpl                     |   6 +
 Documentation/cpu-freq/pcc-cpufreq.txt             |   4 +-
 .../devicetree/bindings/clock/imx35-clock.txt      |   1 +
 Documentation/filesystems/00-INDEX                 |   3 +
 Documentation/filesystems/wrapfs.txt               | 172 ++++++
 Documentation/scsi/scsi_eh.txt                     |   8 +-
 Documentation/serial/tty.txt                       |   3 -
 Documentation/x86/pat.txt                          |  32 ++
 MAINTAINERS                                        |   9 +
 Makefile                                           |   9 +-
 arch/arc/Makefile                                  |   2 -
 arch/arc/kernel/stacktrace.c                       |   2 +-
 arch/arm/boot/dts/armada-385-linksys.dtsi          |  10 +-
 arch/arm/boot/dts/armada-xp-linksys-mamba.dts      |   4 +-
 arch/arm/boot/dts/exynos4210-trats.dts             |   2 +
 arch/arm/boot/dts/sama5d2-pinfunc.h                |   4 +-
 arch/arm/boot/dts/sun4i-a10.dtsi                   |   2 +-
 arch/arm/boot/dts/sun5i-r8-chip.dts                |   2 +-
 arch/arm/boot/dts/sun6i-a31s-primo81.dts           |   2 -
 .../dts/sun6i-a31s-yones-toptech-bs1078-v2.dts     |   2 -
 arch/arm/boot/dts/sun7i-a20.dtsi                   |   5 +-
 arch/arm/include/asm/pgtable-2level.h              |   1 +
 arch/arm/include/asm/pgtable-3level.h              |   5 +-
 arch/arm/include/asm/pgtable.h                     |   1 -
 arch/arm/kernel/ptrace.c                           |   2 +-
 arch/arm/kernel/sys_oabi-compat.c                  |   8 +-
 arch/arm/kvm/arm.c                                 |   1 +
 arch/arm/kvm/mmu.c                                 |  17 +-
 arch/arm/mach-imx/mach-imx6ul.c                    |   2 +-
 arch/arm/mach-mvebu/coherency.c                    |  22 +-
 arch/arm64/include/asm/elf.h                       |   4 +-
 arch/arm64/include/asm/pgtable-hwdef.h             |   1 -
 arch/arm64/include/asm/pgtable.h                   |  25 +-
 arch/arm64/include/asm/ptrace.h                    |   2 +
 arch/arm64/kernel/asm-offsets.c                    |   1 +
 arch/arm64/kernel/cpuinfo.c                        |  11 +-
 arch/arm64/kernel/entry.S                          |  19 +-
 arch/arm64/kernel/traps.c                          |  26 +-
 arch/arm64/kvm/hyp/vgic-v3-sr.c                    |   7 +-
 arch/arm64/kvm/inject_fault.c                      |   2 +-
 arch/arm64/mm/fault.c                              |  53 +-
 arch/arm64/mm/flush.c                              |   4 -
 arch/mips/ath79/early_printk.c                     |   6 +-
 arch/mips/include/asm/asmmacro.h                   |  40 +-
 arch/mips/include/asm/cacheflush.h                 |   6 -
 arch/mips/include/asm/kvm_host.h                   |   3 +-
 arch/mips/include/asm/mips-cm.h                    |   5 +-
 arch/mips/include/asm/msa.h                        |  13 +
 arch/mips/include/asm/pgtable.h                    |  26 +-
 arch/mips/include/asm/switch_to.h                  |   2 +-
 arch/mips/include/asm/watch.h                      |  10 +-
 arch/mips/include/uapi/asm/siginfo.h               |  22 +-
 arch/mips/kernel/mips-r2-to-r6-emul.c              | 105 ++--
 arch/mips/kernel/pm.c                              |   2 +-
 arch/mips/kernel/process.c                         |  46 +-
 arch/mips/kernel/ptrace.c                          |  27 +-
 arch/mips/kernel/r4k_fpu.S                         |  10 +-
 arch/mips/kernel/scall64-n32.S                     |   2 +-
 arch/mips/kernel/scall64-o32.S                     |   2 +-
 arch/mips/kernel/setup.c                           |   3 +
 arch/mips/kernel/signal.c                          |  15 +-
 arch/mips/kernel/traps.c                           |   8 +-
 arch/mips/kernel/watch.c                           |   5 +-
 arch/mips/kvm/emulate.c                            |  89 ++--
 arch/mips/kvm/interrupt.h                          |   1 +
 arch/mips/kvm/locore.S                             |   1 +
 arch/mips/kvm/mips.c                               |  11 +-
 arch/mips/kvm/trap_emul.c                          |   2 +-
 arch/mips/lib/ashldi3.c                            |   2 +-
 arch/mips/lib/ashrdi3.c                            |   2 +-
 arch/mips/lib/bswapdi.c                            |   2 +-
 arch/mips/lib/bswapsi.c                            |   2 +-
 arch/mips/lib/cmpdi2.c                             |   2 +-
 arch/mips/lib/lshrdi3.c                            |   2 +-
 arch/mips/lib/ucmpdi2.c                            |   2 +-
 arch/mips/loongson64/Platform                      |   2 +-
 arch/mips/loongson64/loongson-3/numa.c             |   6 +-
 arch/mips/math-emu/cp1emu.c                        |   8 +-
 arch/mips/mm/cache.c                               |  41 +-
 arch/mips/vdso/Makefile                            |   4 +-
 arch/parisc/kernel/unaligned.c                     |  10 +-
 arch/powerpc/Kconfig                               |   2 +-
 arch/powerpc/include/asm/reg.h                     |   6 +-
 arch/powerpc/kernel/eeh.c                          |   2 +-
 arch/powerpc/kernel/eeh_driver.c                   |  33 +-
 arch/powerpc/kernel/exceptions-64s.S               |  16 +-
 arch/powerpc/kernel/process.c                      |  10 +
 arch/powerpc/kernel/prom_init.c                    |   3 +-
 arch/powerpc/kvm/book3s_hv.c                       |   1 +
 arch/powerpc/mm/hash_utils_64.c                    |  22 +-
 arch/powerpc/platforms/pseries/eeh_pseries.c       |  51 +-
 arch/powerpc/platforms/pseries/iommu.c             |  24 +-
 arch/s390/include/asm/fpu/api.h                    |   2 +-
 arch/s390/kernel/ipl.c                             |   7 -
 arch/s390/mm/pgtable.c                             |   2 +-
 arch/s390/net/bpf_jit.h                            |   4 +-
 arch/s390/net/bpf_jit_comp.c                       |   4 +-
 arch/sparc/include/asm/head_64.h                   |   4 +
 arch/sparc/include/asm/pgtable_64.h                |  43 +-
 arch/sparc/include/asm/tlbflush_64.h               |   3 +-
 arch/sparc/include/asm/ttable.h                    |   8 +-
 arch/sparc/kernel/Makefile                         |   1 +
 arch/sparc/kernel/rtrap_64.S                       |  57 +-
 arch/sparc/kernel/signal32.c                       |  46 +-
 arch/sparc/kernel/signal_32.c                      |  41 +-
 arch/sparc/kernel/signal_64.c                      |  31 +-
 arch/sparc/kernel/sigutil_32.c                     |   9 +-
 arch/sparc/kernel/sigutil_64.c                     |  10 +-
 arch/sparc/kernel/urtt_fill.S                      |  98 ++++
 arch/sparc/mm/hugetlbpage.c                        |  33 +-
 arch/sparc/mm/init_64.c                            |  22 +-
 arch/sparc/mm/tlb.c                                |  25 +-
 arch/sparc/mm/tsb.c                                |  32 +-
 arch/x86/boot/Makefile                             |   3 +
 arch/x86/crypto/sha-mb/sha1_x8_avx2.S              |  13 +-
 arch/x86/entry/syscalls/syscall_32.tbl             |   2 +-
 arch/x86/events/core.c                             |  11 +-
 arch/x86/events/intel/rapl.c                       |   2 +-
 arch/x86/events/intel/uncore.c                     |   2 +-
 arch/x86/include/asm/cpufeature.h                  |  12 +-
 arch/x86/include/asm/disabled-features.h           |   6 +-
 arch/x86/include/asm/microcode.h                   |   2 -
 arch/x86/include/asm/msr.h                         |   4 +-
 arch/x86/include/asm/mtrr.h                        |   6 +-
 arch/x86/include/asm/pat.h                         |   2 +-
 arch/x86/include/asm/pvclock.h                     |   2 +
 arch/x86/kernel/amd_nb.c                           |   4 +-
 arch/x86/kernel/cpu/common.c                       |   4 +
 arch/x86/kernel/cpu/microcode/core.c               |   3 +-
 arch/x86/kernel/cpu/mtrr/generic.c                 |  24 +-
 arch/x86/kernel/cpu/mtrr/main.c                    |  13 +-
 arch/x86/kernel/cpu/mtrr/mtrr.h                    |   1 +
 arch/x86/kernel/early-quirks.c                     | 105 +++-
 arch/x86/kernel/kprobes/core.c                     |  12 +
 arch/x86/kernel/pvclock.c                          |   4 +
 arch/x86/kernel/traps.c                            |  20 +-
 arch/x86/kvm/mtrr.c                                |   2 -
 arch/x86/kvm/vmx.c                                 |  40 +-
 arch/x86/kvm/x86.c                                 |   5 +
 arch/x86/mm/init.c                                 |   7 -
 arch/x86/mm/pat.c                                  | 109 ++--
 arch/x86/pci/xen.c                                 |   7 +-
 arch/x86/power/hibernate_asm_64.S                  |   4 +-
 arch/x86/xen/enlighten.c                           |   9 -
 arch/x86/xen/setup.c                               |  65 +--
 block/genhd.c                                      |   1 +
 block/ioprio.c                                     |   2 +
 crypto/asymmetric_keys/Kconfig                     |   1 +
 crypto/asymmetric_keys/pkcs7_parser.c              |   1 +
 crypto/crypto_user.c                               |   1 +
 crypto/gcm.c                                       |   4 +-
 crypto/rsa-pkcs1pad.c                              |   4 +-
 crypto/scatterwalk.c                               |   3 +-
 drivers/acpi/device_pm.c                           |   1 +
 drivers/acpi/osl.c                                 |  16 +-
 drivers/ata/libata-core.c                          |   6 +
 drivers/ata/libata-eh.c                            |   2 +-
 drivers/base/module.c                              |   8 +-
 drivers/base/power/main.c                          |   5 +-
 drivers/base/power/runtime.c                       |   9 +-
 drivers/bcma/bcma_private.h                        |   2 -
 drivers/block/xen-blkfront.c                       | 126 +++--
 drivers/bluetooth/hci_vhci.c                       |  28 +-
 drivers/char/hw_random/exynos-rng.c                |  10 +-
 drivers/char/ipmi/ipmi_msghandler.c                |   8 +-
 drivers/char/random.c                              |  13 +-
 drivers/clk/at91/clk-h32mx.c                       |   2 +-
 drivers/clk/at91/clk-programmable.c                |   2 +-
 drivers/clk/bcm/clk-bcm2835.c                      |  62 ++-
 drivers/clk/imx/clk-imx35.c                        |   4 +-
 drivers/clk/qcom/gcc-msm8916.c                     |   2 +
 drivers/clk/rockchip/clk-mmc-phase.c               |   1 +
 drivers/cpufreq/cpufreq.c                          |   4 +
 drivers/cpufreq/pcc-cpufreq.c                      |   2 -
 drivers/cpuidle/cpuidle.c                          |   4 +-
 drivers/crypto/caam/jr.c                           |   2 +-
 drivers/crypto/ccp/ccp-crypto-aes-xts.c            |  17 +-
 drivers/crypto/qat/qat_common/Makefile             |   1 +
 drivers/crypto/sunxi-ss/sun4i-ss-cipher.c          |  10 +-
 drivers/crypto/talitos.c                           |  64 +++
 drivers/crypto/ux500/hash/hash_core.c              |   4 +-
 drivers/crypto/vmx/aes_cbc.c                       |   2 +-
 drivers/crypto/vmx/aes_ctr.c                       |   2 +-
 drivers/dma/at_xdmac.c                             |  82 ++-
 drivers/edac/edac_mc.c                             |   3 +-
 drivers/edac/sb_edac.c                             |  13 +-
 drivers/extcon/extcon-palmas.c                     |   2 +
 drivers/gpio/gpio-bcm-kona.c                       |   4 +-
 drivers/gpio/gpio-sch.c                            |  21 +-
 drivers/gpio/gpio-zynq.c                           |  11 +-
 drivers/gpio/gpiolib-legacy.c                      |   8 +-
 drivers/gpio/gpiolib.c                             |  90 ++--
 drivers/gpu/drm/Makefile                           |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c            |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c     |  10 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c            |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c            |   3 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c              |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_process.c           |  70 ++-
 .../gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c  |   6 +-
 drivers/gpu/drm/amd/powerplay/hwmgr/pp_acpi.c      |  18 +-
 drivers/gpu/drm/amd/powerplay/hwmgr/tonga_hwmgr.c  |   2 +-
 .../amd/powerplay/hwmgr/tonga_processpptables.c    |   2 +-
 drivers/gpu/drm/amd/powerplay/inc/pp_acpi.h        |   1 +
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c    |   2 +
 drivers/gpu/drm/drm_atomic.c                       |  32 +-
 drivers/gpu/drm/drm_crtc.c                         |  62 ++-
 drivers/gpu/drm/drm_dp_dual_mode_helper.c          | 366 +++++++++++++
 drivers/gpu/drm/drm_dp_mst_topology.c              |   8 +-
 drivers/gpu/drm/drm_fb_cma_helper.c                |   2 +-
 drivers/gpu/drm/drm_fb_helper.c                    |   5 +-
 drivers/gpu/drm/drm_gem_cma_helper.c               |  12 +-
 drivers/gpu/drm/drm_modes.c                        |   2 +
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c          |   3 +-
 drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.c      |   2 +-
 drivers/gpu/drm/i915/i915_gem_shrinker.c           |   2 +-
 drivers/gpu/drm/i915/i915_irq.c                    |   4 +-
 drivers/gpu/drm/i915/intel_atomic.c                |   3 +-
 drivers/gpu/drm/i915/intel_atomic_plane.c          |   4 +-
 drivers/gpu/drm/i915/intel_ddi.c                   |  12 +
 drivers/gpu/drm/i915/intel_display.c               |  85 ++-
 drivers/gpu/drm/i915/intel_dp.c                    |  11 +-
 drivers/gpu/drm/i915/intel_dp_link_training.c      |  25 +-
 drivers/gpu/drm/i915/intel_drv.h                   |  10 +-
 drivers/gpu/drm/i915/intel_fbc.c                   |   3 +-
 drivers/gpu/drm/i915/intel_fbdev.c                 |   6 +-
 drivers/gpu/drm/i915/intel_hdmi.c                  |  78 ++-
 drivers/gpu/drm/i915/intel_pm.c                    |   2 +
 drivers/gpu/drm/i915/intel_psr.c                   |  55 +-
 drivers/gpu/drm/imx/imx-drm-core.c                 |   8 +
 drivers/gpu/drm/imx/ipuv3-crtc.c                   |   2 +-
 drivers/gpu/drm/mgag200/mgag200_mode.c             |  10 +-
 drivers/gpu/drm/msm/msm_drv.c                      |   1 -
 .../drm/nouveau/include/nvkm/subdev/bios/disp.h    |   5 +-
 drivers/gpu/drm/nouveau/nouveau_fbcon.c            |   2 +
 drivers/gpu/drm/nouveau/nv04_fbcon.c               |   7 +-
 drivers/gpu/drm/nouveau/nv50_fbcon.c               |   6 +-
 drivers/gpu/drm/nouveau/nvc0_fbcon.c               |   6 +-
 drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c   |   2 +-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild    |   1 +
 drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c   |  13 +-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c   |   2 +-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c    |  12 +-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h  |   9 +-
 .../gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c    |   6 +-
 .../gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c    |  53 ++
 .../gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c    |  15 +-
 drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c     |  37 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.c    |   8 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c    |   6 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.c    |   2 +-
 drivers/gpu/drm/radeon/radeon_device.c             |  21 +
 drivers/gpu/drm/ttm/ttm_bo.c                       |   7 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c             |  25 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c                |  13 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h                |   2 +
 drivers/gpu/drm/vmwgfx/vmwgfx_fb.c                 |  47 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                |  37 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c               |   3 +
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c               |  11 +-
 drivers/gpu/ipu-v3/ipu-common.c                    |   5 +-
 drivers/hid/hid-elo.c                              |   2 +-
 drivers/hid/hid-multitouch.c                       |  21 +-
 drivers/hid/usbhid/hiddev.c                        |  10 +-
 drivers/hwmon/ads7828.c                            |  10 +
 drivers/hwmon/dell-smm-hwmon.c                     |  80 ++-
 drivers/hwtracing/intel_th/core.c                  |  35 +-
 drivers/hwtracing/intel_th/intel_th.h              |   3 +
 drivers/hwtracing/intel_th/pci.c                   |   5 +
 drivers/i2c/busses/i2c-i801.c                      | 103 +++-
 drivers/i2c/busses/i2c-qup.c                       |   2 +
 drivers/i2c/muxes/i2c-mux-reg.c                    |   2 +-
 drivers/iio/accel/kxsd9.c                          |   4 +-
 drivers/iio/adc/ad7266.c                           |   7 +-
 drivers/iio/humidity/hdc100x.c                     |  20 +-
 drivers/iio/industrialio-trigger.c                 |  23 +-
 drivers/iio/light/apds9960.c                       |   1 +
 drivers/iio/pressure/st_pressure_core.c            |  80 +--
 drivers/iio/proximity/as3935.c                     |  17 +-
 drivers/infiniband/core/cm.c                       |   4 +-
 drivers/infiniband/hw/mlx4/ah.c                    |   2 +-
 drivers/infiniband/sw/rdmavt/qp.c                  |   4 +-
 drivers/infiniband/ulp/srp/ib_srp.c                |  16 +-
 drivers/input/joystick/xpad.c                      |  32 +-
 drivers/input/misc/pwm-beeper.c                    |  69 ++-
 drivers/input/misc/uinput.c                        |   6 +
 drivers/input/mouse/elantech.c                     |   8 +-
 drivers/input/mouse/vmmouse.c                      |  22 +-
 drivers/input/rmi4/rmi_f12.c                       |   9 +-
 drivers/input/touchscreen/tsc2004.c                |   7 +-
 drivers/input/touchscreen/tsc2005.c                |   7 +-
 drivers/input/touchscreen/tsc200x-core.c           |  15 +-
 drivers/input/touchscreen/tsc200x-core.h           |   2 +-
 drivers/input/touchscreen/wacom_w8001.c            |  14 +-
 drivers/iommu/amd_iommu_init.c                     |  14 +-
 drivers/iommu/arm-smmu-v3.c                        |   1 +
 drivers/iommu/intel-iommu.c                        |  17 +-
 drivers/iommu/rockchip-iommu.c                     |   2 +-
 drivers/irqchip/irq-gic-v3.c                       |  19 +
 drivers/irqchip/irq-gic.c                          |   8 +
 drivers/irqchip/irq-mips-gic.c                     |  16 +-
 drivers/mcb/mcb-parse.c                            |   2 +-
 drivers/md/md.c                                    |   2 +-
 drivers/media/i2c/adv7604.c                        |  46 +-
 drivers/media/usb/airspy/airspy.c                  |   3 +-
 drivers/media/usb/uvc/uvc_v4l2.c                   |  39 +-
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c      |   3 +-
 drivers/memory/omap-gpmc.c                         |   2 +-
 drivers/mfd/intel-lpss.c                           |  19 +-
 drivers/mfd/intel_quark_i2c_gpio.c                 |  25 +-
 drivers/mfd/intel_soc_pmic_core.c                  |   1 +
 drivers/mfd/omap-usb-tll.c                         |  13 +-
 drivers/misc/mei/amthif.c                          |   4 +-
 drivers/misc/mei/bus.c                             |  15 +-
 drivers/misc/mei/client.c                          |   4 +
 drivers/misc/mei/hbm.c                             |   3 +-
 drivers/misc/mei/interrupt.c                       |   6 +-
 drivers/misc/mei/mei_dev.h                         |   2 +
 drivers/misc/mic/vop/vop_vringh.c                  |   5 +
 drivers/mmc/card/block.c                           |  21 +-
 drivers/mmc/core/core.c                            |   4 +-
 drivers/mmc/core/mmc.c                             |   7 +
 drivers/mmc/host/sdhci-acpi.c                      |  13 +-
 drivers/mmc/host/sdhci-pci-core.c                  |   5 +-
 drivers/mtd/ubi/eba.c                              |  43 +-
 drivers/mtd/ubi/fastmap.c                          |   1 +
 drivers/mtd/ubi/ubi.h                              |   2 +
 drivers/net/bonding/bond_netlink.c                 |   6 +-
 drivers/net/can/at91_can.c                         |   5 +-
 drivers/net/can/c_can/c_can.c                      |  38 +-
 drivers/net/can/dev.c                              |  65 ++-
 drivers/net/can/m_can/m_can.c                      |   2 +-
 drivers/net/ethernet/atheros/alx/alx.h             |   4 +
 drivers/net/ethernet/atheros/alx/main.c            |  48 +-
 drivers/net/ethernet/broadcom/bgmac.c              |   2 +-
 drivers/net/ethernet/ezchip/nps_enet.c             |   4 +-
 drivers/net/ethernet/marvell/mvneta.c              |   2 +-
 drivers/net/ethernet/marvell/mvneta_bm.c           |   1 +
 drivers/net/ethernet/qlogic/qed/qed_spq.c          |   7 +-
 drivers/net/ethernet/rocker/rocker_ofdpa.c         |   4 +-
 drivers/net/ethernet/sfc/ef10.c                    |  16 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c  |   2 +-
 drivers/net/geneve.c                               |  19 +-
 drivers/net/macsec.c                               |   8 +-
 drivers/net/ppp/ppp_generic.c                      |   5 +-
 drivers/net/team/team.c                            |   9 +-
 drivers/net/tun.c                                  |   6 +-
 drivers/net/usb/asix_common.c                      |   2 +-
 drivers/net/usb/cdc_ncm.c                          |   7 +
 drivers/net/vxlan.c                                |   7 +-
 drivers/net/wireless/ath/ath10k/core.c             |   8 +-
 drivers/net/wireless/ath/ath10k/debug.c            |   7 +-
 drivers/net/wireless/ath/ath10k/mac.c              |  13 +-
 drivers/net/wireless/ath/ath5k/led.c               |   2 +-
 drivers/net/wireless/ath/ath9k/init.c              |   7 +
 drivers/net/wireless/ath/ath9k/pci.c               |  10 +
 drivers/net/wireless/mac80211_hwsim.c              |   1 +
 drivers/net/wireless/realtek/rtlwifi/base.c        |   4 +-
 .../realtek/rtlwifi/btcoexist/halbtc8723b2ant.c    |   9 +-
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       |  27 +-
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |   2 +-
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   |   5 +-
 drivers/net/wireless/realtek/rtlwifi/core.c        |   6 +-
 drivers/net/wireless/realtek/rtlwifi/pci.c         |   2 +-
 .../net/wireless/realtek/rtlwifi/rtl8723be/hw.c    |   5 +
 .../net/wireless/realtek/rtlwifi/rtl8723be/sw.c    |   3 +
 drivers/net/wireless/realtek/rtlwifi/wifi.h        |   3 +
 drivers/nfc/st21nfca/i2c.c                         |   6 +-
 drivers/nvdimm/pfn.h                               |   4 +-
 drivers/nvdimm/pfn_devs.c                          |  53 +-
 drivers/nvdimm/pmem.c                              |   4 +-
 drivers/of/irq.c                                   |  19 +-
 drivers/pci/probe.c                                |   6 +-
 drivers/pci/vc.c                                   |   4 +-
 drivers/perf/arm_pmu.c                             |   6 +-
 drivers/pinctrl/freescale/pinctrl-imx.c            |   4 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c      |   5 +-
 drivers/pinctrl/pinctrl-single.c                   |   3 +
 drivers/pinctrl/samsung/pinctrl-exynos5440.c       |  15 +-
 drivers/platform/chrome/cros_ec_dev.c              |   8 +-
 drivers/platform/x86/dell-rbtn.c                   |  56 ++
 drivers/power/power_supply_core.c                  |  27 +-
 drivers/pps/clients/pps_parport.c                  |   2 +-
 drivers/regulator/core.c                           |  17 +-
 drivers/regulator/qcom_smd-regulator.c             |  13 +-
 drivers/s390/net/qeth_l2_main.c                    |   1 +
 drivers/s390/net/qeth_l3_main.c                    |   1 +
 drivers/scsi/53c700.c                              |   4 +-
 drivers/scsi/aacraid/aacraid.h                     |   1 +
 drivers/scsi/aacraid/comminit.c                    |  24 +
 drivers/scsi/aacraid/commsup.c                     |  12 +-
 drivers/scsi/aacraid/linit.c                       |   2 +-
 drivers/scsi/ipr.c                                 |   1 +
 drivers/scsi/lpfc/lpfc_mem.c                       |   6 +-
 drivers/scsi/qla2xxx/qla_isr.c                     |   2 +-
 drivers/scsi/scsi_devinfo.c                        |  11 +-
 drivers/scsi/scsi_error.c                          |   4 +-
 drivers/scsi/scsi_lib.c                            |   7 +-
 drivers/scsi/scsi_scan.c                           |   1 +
 drivers/scsi/scsi_sysfs.c                          |   6 +-
 drivers/scsi/sd.c                                  |   8 +-
 drivers/scsi/sd.h                                  |   5 +
 drivers/spi/spi-rockchip.c                         |   4 +-
 drivers/spi/spi-sun4i.c                            |  23 +-
 drivers/spi/spi-sun6i.c                            |  10 +-
 drivers/staging/comedi/drivers/das1800.c           |  22 +-
 drivers/staging/iio/accel/sca3000_core.c           |   2 +-
 drivers/staging/rdma/hfi1/qp.c                     |   5 +-
 drivers/staging/rdma/hfi1/ud.c                     |  23 +-
 drivers/staging/rdma/hfi1/verbs_txreq.c            |   4 +-
 drivers/staging/rdma/hfi1/verbs_txreq.h            |   1 +
 drivers/thermal/cpu_cooling.c                      |  16 +-
 drivers/thunderbolt/eeprom.c                       |   1 +
 drivers/tty/n_gsm.c                                |   4 +-
 drivers/tty/n_hdlc.c                               |   4 +-
 drivers/tty/n_tty.c                                |  70 ++-
 drivers/tty/pty.c                                  |  11 +-
 drivers/tty/serial/8250/8250_mid.c                 |  35 +-
 drivers/tty/serial/8250/8250_pci.c                 |   3 +
 drivers/tty/serial/atmel_serial.c                  |  14 +-
 drivers/tty/serial/mvebu-uart.c                    |   2 +
 drivers/tty/serial/samsung.c                       |   4 +-
 drivers/tty/serial/ucc_uart.c                      |   3 +
 drivers/tty/tty_buffer.c                           |  34 +-
 drivers/tty/vt/keyboard.c                          |  30 +-
 drivers/tty/vt/vt.c                                |   6 +-
 drivers/usb/common/usb-otg-fsm.c                   |   2 +
 drivers/usb/core/driver.c                          |  40 +-
 drivers/usb/core/hcd.c                             |  26 +-
 drivers/usb/core/hub.c                             |   8 +-
 drivers/usb/core/quirks.c                          |  23 +-
 drivers/usb/dwc2/core.h                            |  27 +
 drivers/usb/dwc3/dwc3-exynos.c                     |  19 +-
 drivers/usb/gadget/function/f_fs.c                 |   2 +-
 drivers/usb/gadget/function/f_mass_storage.c       |  36 +-
 drivers/usb/gadget/function/f_mass_storage.h       |   2 -
 drivers/usb/gadget/legacy/acm_ms.c                 |   4 -
 drivers/usb/gadget/legacy/inode.c                  |  17 +-
 drivers/usb/gadget/legacy/mass_storage.c           |   4 -
 drivers/usb/gadget/legacy/multi.c                  |  12 -
 drivers/usb/gadget/legacy/nokia.c                  |   7 -
 drivers/usb/gadget/udc/udc-core.c                  |   2 +-
 drivers/usb/host/Kconfig                           |   3 +-
 drivers/usb/host/ehci-tegra.c                      |   2 +-
 drivers/usb/host/ohci-q.c                          |   3 +-
 drivers/usb/host/xhci-pci.c                        |   5 +
 drivers/usb/host/xhci-plat.c                       |   3 +
 drivers/usb/host/xhci-ring.c                       |  30 +-
 drivers/usb/host/xhci.c                            |  27 +-
 drivers/usb/misc/usbtest.c                         |   4 +-
 drivers/usb/musb/musb_core.c                       |   3 +-
 drivers/usb/musb/musb_host.c                       |  23 +-
 drivers/usb/serial/cp210x.c                        |   3 +-
 drivers/usb/serial/io_edgeport.c                   |  56 +-
 drivers/usb/serial/keyspan.c                       |   4 +
 drivers/usb/serial/mos7720.c                       |   1 +
 drivers/usb/serial/mxuport.c                       |  10 +
 drivers/usb/serial/option.c                        | 155 +++++-
 drivers/usb/serial/quatech2.c                      |   1 +
 drivers/usb/storage/uas.c                          |   1 +
 drivers/virtio/virtio_balloon.c                    |  20 +-
 drivers/watchdog/sp5100_tco.c                      |  15 +-
 drivers/watchdog/watchdog_dev.c                    |   1 -
 drivers/xen/balloon.c                              |  28 +-
 drivers/xen/events/events_base.c                   |   6 +-
 drivers/xen/xen-acpi-processor.c                   |  35 +-
 drivers/xen/xen-pciback/conf_space.c               |   6 +-
 drivers/xen/xenbus/xenbus_dev_frontend.c           |  14 +-
 drivers/xen/xenbus/xenbus_xs.c                     |   3 -
 fs/9p/vfs_file.c                                   |   6 +-
 fs/Kconfig                                         |   1 +
 fs/Makefile                                        |   1 +
 fs/affs/super.c                                    |   5 +-
 fs/btrfs/ctree.c                                   |   5 +-
 fs/btrfs/ctree.h                                   |   1 +
 fs/btrfs/extent-tree.c                             |   2 +-
 fs/btrfs/file.c                                    |  29 +-
 fs/btrfs/inode.c                                   |   2 +-
 fs/btrfs/ioctl.c                                   |  21 +
 fs/btrfs/super.c                                   |   2 +-
 fs/btrfs/transaction.h                             |   2 +-
 fs/cifs/cifs_unicode.c                             |  33 +-
 fs/cifs/cifs_unicode.h                             |   2 +
 fs/cifs/connect.c                                  |   4 +-
 fs/cifs/ntlmssp.h                                  |   2 +-
 fs/cifs/sess.c                                     | 203 ++++---
 fs/cifs/smb2glob.h                                 |   1 +
 fs/cifs/smb2inode.c                                |   8 +-
 fs/cifs/smb2pdu.c                                  |  53 +-
 fs/cifs/smb2proto.h                                |   2 +
 fs/crypto/keyinfo.c                                | 120 +++--
 fs/dcache.c                                        |  11 +-
 fs/ecryptfs/file.c                                 |  15 +-
 fs/ext4/balloc.c                                   |   3 +
 fs/ext4/extents.c                                  |  12 +-
 fs/ext4/ialloc.c                                   |  59 +--
 fs/ext4/inode.c                                    |  59 ++-
 fs/ext4/ioctl.c                                    |   2 +-
 fs/ext4/mballoc.c                                  |  27 +-
 fs/ext4/namei.c                                    |   2 +-
 fs/ext4/super.c                                    |  17 +
 fs/f2fs/data.c                                     |   3 +-
 fs/f2fs/f2fs.h                                     |   8 +
 fs/f2fs/super.c                                    |  13 +
 fs/fuse/file.c                                     |  24 +
 fs/fuse/inode.c                                    |   2 +-
 fs/hpfs/super.c                                    |  42 +-
 fs/inode.c                                         |   8 +-
 fs/ioctl.c                                         |   1 +
 fs/lockd/svc.c                                     |  13 +-
 fs/locks.c                                         |   2 +-
 fs/namei.c                                         |   8 +-
 fs/namespace.c                                     |  11 +-
 fs/nfs/callback_proc.c                             |   6 +-
 fs/nfs/dir.c                                       |   2 +-
 fs/nfs/nfs4proc.c                                  |   5 +-
 fs/nfs/pnfs_nfs.c                                  |  36 ++
 fs/nfs/read.c                                      |   4 +-
 fs/nfs/write.c                                     |   4 +
 fs/nfsd/nfs2acl.c                                  |  20 +-
 fs/nfsd/nfs3acl.c                                  |  16 +-
 fs/nfsd/nfs4acl.c                                  |  16 +-
 fs/nfsd/nfs4callback.c                             |  18 +-
 fs/nfsd/nfs4state.c                                |  50 +-
 fs/nfsd/state.h                                    |   2 +-
 fs/nilfs2/the_nilfs.c                              |   2 +-
 fs/overlayfs/dir.c                                 |  54 +-
 fs/overlayfs/inode.c                               |  35 +-
 fs/overlayfs/overlayfs.h                           |   1 +
 fs/overlayfs/super.c                               |  21 +-
 fs/posix_acl.c                                     |  42 +-
 fs/proc/root.c                                     |   7 +
 fs/ubifs/file.c                                    |  24 +
 fs/udf/super.c                                     |  67 ++-
 fs/wrapfs/Kconfig                                  |   8 +
 fs/wrapfs/Makefile                                 |   7 +
 fs/wrapfs/dentry.c                                 |  49 ++
 fs/wrapfs/file.c                                   | 381 ++++++++++++++
 fs/wrapfs/inode.c                                  | 586 +++++++++++++++++++++
 fs/wrapfs/lookup.c                                 | 325 ++++++++++++
 fs/wrapfs/main.c                                   | 176 +++++++
 fs/wrapfs/mmap.c                                   |  93 ++++
 fs/wrapfs/super.c                                  | 208 ++++++++
 fs/wrapfs/wrapfs.h                                 | 207 ++++++++
 fs/xfs/xfs_fsops.c                                 |   4 +-
 fs/xfs/xfs_inode.c                                 |  26 +-
 fs/xfs/xfs_super.c                                 |  38 +-
 include/asm-generic/qspinlock.h                    |  32 +-
 include/asm-generic/siginfo.h                      |  15 -
 include/asm-generic/vmlinux.lds.h                  |   4 +
 include/drm/drm_dp_dual_mode_helper.h              |  92 ++++
 include/drm/ttm/ttm_bo_api.h                       |  14 +
 include/linux/bcma/bcma.h                          |   1 +
 include/linux/bpf.h                                |   4 +
 include/linux/can/dev.h                            |  22 +-
 include/linux/cpuidle.h                            |   3 +
 include/linux/dcache.h                             |  12 +
 include/linux/fscrypto.h                           |   1 +
 include/linux/irqchip/arm-gic-v3.h                 |   2 +-
 include/linux/jump_label.h                         |  16 +-
 include/linux/memcontrol.h                         |  25 +-
 include/linux/mm.h                                 |   2 +-
 include/linux/namei.h                              |   2 +
 include/linux/net.h                                |   3 +-
 include/linux/netdevice.h                          |   7 +
 include/linux/netfilter/x_tables.h                 |  12 +-
 include/linux/radix-tree.h                         |   1 +
 include/linux/rmap.h                               |   2 +-
 include/linux/signal.h                             |  15 +
 include/linux/skbuff.h                             |  20 +
 include/linux/sock_diag.h                          |   6 +
 include/linux/sunrpc/clnt.h                        |   2 -
 include/linux/sunrpc/svc_xprt.h                    |   1 +
 include/linux/sunrpc/xprt.h                        |   1 +
 include/linux/tty.h                                |   2 +-
 include/linux/usb.h                                |   5 +-
 include/linux/usb/ehci_def.h                       |   4 +-
 include/linux/usb/hcd.h                            |   1 +
 include/net/switchdev.h                            |   2 +-
 include/rdma/ib_verbs.h                            |   2 +-
 include/rdma/rdma_vt.h                             |   4 +-
 include/scsi/scsi_device.h                         |   1 +
 include/uapi/linux/Kbuild                          |   1 +
 include/uapi/linux/libc-compat.h                   |   2 +-
 include/uapi/linux/magic.h                         |   2 +
 include/video/imx-ipu-v3.h                         |   2 +
 init/Kconfig                                       |   1 +
 ipc/msg.c                                          |   2 +-
 ipc/sem.c                                          |  12 +-
 kernel/bpf/inode.c                                 |   3 +-
 kernel/cgroup.c                                    | 148 +++---
 kernel/cpu.c                                       |   2 +
 kernel/events/core.c                               |   2 +-
 kernel/exit.c                                      |  29 +-
 kernel/futex.c                                     |  14 +-
 kernel/jump_label.c                                |  36 +-
 kernel/locking/mutex.c                             |   9 +-
 kernel/locking/qspinlock.c                         |  60 +++
 kernel/sched/core.c                                |   9 +-
 kernel/sched/fair.c                                |  50 +-
 kernel/sched/idle.c                                |   2 +-
 kernel/sched/loadavg.c                             |  11 +-
 kernel/time/posix-cpu-timers.c                     |   1 +
 kernel/trace/bpf_trace.c                           |   4 +-
 kernel/trace/ring_buffer.c                         |  35 +-
 kernel/trace/trace_printk.c                        |   7 +-
 lib/dma-debug.c                                    |   2 +-
 lib/radix-tree.c                                   |  14 +-
 mm/compaction.c                                    |  65 ++-
 mm/hugetlb.c                                       |   2 +-
 mm/internal.h                                      |   3 +-
 mm/memcontrol.c                                    | 148 +++++-
 mm/memory.c                                        |   3 +-
 mm/mempool.c                                       |  18 +-
 mm/migrate.c                                       |   2 +
 mm/page-writeback.c                                |  21 +-
 mm/page_alloc.c                                    |   8 +-
 mm/percpu.c                                        |  73 ++-
 mm/rmap.c                                          |   7 +-
 mm/shmem.c                                         |   8 +-
 mm/slab_common.c                                   |   4 +-
 mm/swap.c                                          |  11 +-
 mm/swap_state.c                                    |   5 +-
 net/8021q/vlan_dev.c                               |  10 +-
 net/8021q/vlan_netlink.c                           |   7 +-
 net/ax25/af_ax25.c                                 |   3 +-
 net/ax25/ax25_ds_timer.c                           |   5 +-
 net/ax25/ax25_std_timer.c                          |   5 +-
 net/ax25/ax25_subr.c                               |   3 +-
 net/batman-adv/bat_v_ogm.c                         |   4 +-
 net/bluetooth/6lowpan.c                            |  11 +-
 net/bridge/br_fdb.c                                |   2 +
 net/bridge/br_input.c                              |  18 +
 net/bridge/br_multicast.c                          |   4 +
 net/bridge/br_private.h                            |  23 +-
 net/ceph/osdmap.c                                  | 156 ++++--
 net/core/flow_dissector.c                          |  43 ++
 net/core/hwbm.c                                    |   3 +
 net/core/neighbour.c                               |   6 +-
 net/core/skbuff.c                                  |  18 -
 net/ipv4/af_inet.c                                 |   8 +
 net/ipv4/esp4.c                                    |  52 +-
 net/ipv4/ipmr.c                                    |   4 +-
 net/ipv4/netfilter/arp_tables.c                    | 293 ++++-------
 net/ipv4/netfilter/ip_tables.c                     | 318 +++--------
 net/ipv4/sysctl_net_ipv4.c                         |   4 -
 net/ipv4/tcp_input.c                               |  54 +-
 net/ipv4/tcp_output.c                              |   3 +-
 net/ipv4/udp.c                                     |   2 +-
 net/ipv6/addrconf.c                                |   4 +
 net/ipv6/ip6_fib.c                                 |   1 +
 net/ipv6/ip6_output.c                              |  11 +-
 net/ipv6/ip6mr.c                                   |   1 +
 net/ipv6/netfilter/ip6_tables.c                    | 311 +++--------
 net/ipv6/sit.c                                     |   4 +-
 net/ipv6/tcp_ipv6.c                                |   4 +-
 net/ipv6/udp.c                                     |   2 +-
 net/irda/af_irda.c                                 |   7 +-
 net/kcm/kcmproc.c                                  |   1 +
 net/l2tp/l2tp_core.c                               |   2 +-
 net/mac80211/mesh.c                                |  11 +-
 net/mac80211/sta_info.h                            |   2 +-
 net/netfilter/x_tables.c                           | 245 ++++++++-
 net/netlink/af_netlink.c                           |   7 +-
 net/packet/af_packet.c                             |   2 +-
 net/rds/tcp.c                                      |   5 +-
 net/sched/act_ipt.c                                |   7 +-
 net/sched/act_mirred.c                             |   2 +-
 net/sched/sch_fifo.c                               |   4 +
 net/sched/sch_netem.c                              |  12 +-
 net/sunrpc/auth_gss/svcauth_gss.c                  |   4 +-
 net/sunrpc/clnt.c                                  |  31 +-
 net/sunrpc/svc_xprt.c                              |   2 +
 net/sunrpc/xprtsock.c                              |   1 +
 net/switchdev/switchdev.c                          |   6 +-
 net/tipc/netlink_compat.c                          |   2 +-
 net/tipc/socket.c                                  |   3 +
 net/unix/af_unix.c                                 |   6 +-
 net/wireless/core.c                                |   2 -
 net/wireless/util.c                                |   4 +-
 net/wireless/wext-core.c                           |  25 +-
 scripts/Makefile.extrawarn                         |   1 +
 scripts/mod/file2alias.c                           |   2 +-
 scripts/package/Makefile                           |   4 +-
 security/apparmor/apparmorfs.c                     |   1 +
 security/apparmor/lsm.c                            |  36 +-
 security/keys/key.c                                |   2 +-
 sound/core/control.c                               |   2 +
 sound/core/pcm.c                                   |  14 +-
 sound/core/timer.c                                 |   5 +-
 sound/drivers/dummy.c                              |   1 +
 sound/hda/hdac_regmap.c                            |   4 +-
 sound/pci/au88x0/au88x0_core.c                     |   5 +-
 sound/pci/echoaudio/echoaudio.c                    |   4 +-
 sound/pci/hda/hda_generic.c                        |   2 +
 sound/pci/hda/hda_intel.c                          |  21 +-
 sound/pci/hda/patch_realtek.c                      | 126 ++++-
 sound/soc/codecs/ak4642.c                          |   3 +
 sound/usb/card.c                                   |   2 +-
 tools/objtool/Makefile                             |   4 +
 tools/objtool/elf.h                                |   5 +
 virt/kvm/arm/hyp/vgic-v2-sr.c                      |   7 +-
 virt/kvm/irqchip.c                                 |   2 +-
 virt/kvm/kvm_main.c                                |   2 +-
 705 files changed, 9779 insertions(+), 3767 deletions(-)

commit c843f6a022e07cd5a679d7f7c3e8434d17b87108
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat May 21 23:33:35 2016 -0400

    Wrapfs: support NFS exports
    
    Based on patch from Sandeep Joshi <sanjos...@gmail.com>.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit cb2921212f1bfc3778cecdd1c1b88d37dcf45a08
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat May 21 22:04:02 2016 -0400

    Wrapfs: use d_splice_alias
    
    Refactor interpose code to allow lookup to use d_splice_alias.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 2823edbc512d55afaaf2665f24df332b65ee1ef9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Apr 3 17:22:07 2016 -0400

    Wrapfs: use inode_un/lock helper macros
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit eafdf7bcf8cb9ab8fbad1868c7b9dc3d12f13089
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Apr 3 17:22:07 2016 -0400

    Wrapfs: use new get_link operation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 01efdcc5e4e50e7c9ba1ed0e22976d6b23cf8cc1
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 3 21:19:11 2015 -0500

    Wrapfs: update copyright year to 2015

commit c9841dbbab69a4443685e1e3dec55798fb9cb98e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 3 21:16:58 2015 -0500

    Wrapfs: use vfs xattr helpers
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1d2f1c106f9c8ffedfb09f42254918ebd0d27af0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 23:23:14 2015 -0400

    Wrapfs: update follow_link
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c8819b7d8b4596922ab05ba646ca6f4e303add01
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 23:13:21 2015 -0400

    Wrapfs: update ->direct_IO op prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4e252074654ac57b3505a47b49f0b63ead415202
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 23:12:21 2015 -0400

    Wrapfs: use d_inode macro
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a9c39afc98786174ff2e076418d02f38d8e771fa
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 23:11:21 2015 -0400

    Wrapfs: remove aio_read/write ops
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9afd098d7cbadbf7e18db87a53e57ca92a8ec7e6
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Aug 15 22:48:32 2014 -0400

    Wrapfs: properly copy meta-data after AIO operations from lower inode
    
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c9e7fec0b58c84d1176ceb80666a8e2d92e41928
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Aug 11 18:10:35 2014 -0400

    Wrapfs: leave placeholders for updating upper inode after AIO
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b9ed48f959f988a6787fdaebe4a9840a4cbf82f1
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Aug 10 00:40:56 2014 -0400

    Wrapfs: protect lower_file by ref-count during aio operation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>

commit 8ae35053b87e6318be15c253d2c131e36d130b10
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Aug 10 00:40:56 2014 -0400

    Wrapfs: add read_iter/write_iter opeations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>

commit 543e1bcc85e0d755333f3c53e53a594a68126830
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Aug 10 00:40:56 2014 -0400

    Wrapfs: update to new direct_IO interface
    
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 88fcf22c67efd0682eee4f296915adac9b8a6baa
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Jul 26 19:06:53 2014 -0400

    Wrapfs: update wrapfs_fsync
    
    In v3.16 generic_file_fsync will access ->i_sb->s_bdev->bd_disk, but
    s_bdev is NULL for wrapfs inode.  This will trigger a kernel panic in
    xfstests generic/075, generic/091, etc. as of  kernel v3.16-rc1.
    
    This patch fixes this issue by using __generic_file_fsync, a new
    interface introduced in v3.16.
    
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6e438a98169c321ad82952ad2854fcd96455aaaf
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Jun 25 22:37:16 2014 -0400

    Wrapfs: fix ->llseek to update upper and lower offsets
    
    Fixes bug: xfstests generic/257. f_pos consistently is required by and
    only by dir_ops->wrapfs_readdir, main_ops is not affected.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>

commit cc3be25d6740546bd4a9882745e8f60b1cedae52
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Jun 25 22:30:27 2014 -0400

     Wrapfs: support extended attributes (xattr) operations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>
    Signed-off-by: Mengyang Li <li.mengy...@stonybrook.edu>

commit 4e136345bef34f675afcc027134cbf3c59511cd8
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Jun 20 19:40:04 2014 -0400

    Wrapfs: support asynchronous-IO (AIO) operations
    
    Signed-off-by: Li Mengyang <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit adfd48d8014129cbda47c6963e69a56a7c7972a8
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Jun 20 19:39:40 2014 -0400

    Wrapfs: support direct-IO (DIO) operations
    
    Signed-off-by: Li Mengyang <li.mengy...@stonybrook.edu>
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4a64869bd570d1611d9d0766cde6f9eb582490ab
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed May 14 23:45:28 2014 -0400

    Wrapfs: implement vm_ops->page_mkwrite
    
    Some file systems (e.g., ext4) require it.  Reported by Ted Ts'o.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ab4aa1636034955542ed379b07560533918d2c32
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Apr 26 22:43:20 2014 -0400

    Wrapfs: use new vfs_rename prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit beee262e47628b70a7d56befc3bce842ffdee5c0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Apr 3 13:24:28 2014 -0400

    Wrapfs: update documentation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b975e64b088faa36c4693de1e6e2c2849ea32ec1
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Apr 3 13:17:55 2014 -0400

    Wrapfs: update maintainers
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 131749e92904980c97e9454627bc78a944efe919
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jan 21 03:03:00 2014 -0500

    Wrapfs: update documentation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a0ff72199a2339826e8f1ce3126de93caf4f45b2
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jan 21 01:25:54 2014 -0500

    Wrapfs: 2014 Copyright update
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e3786b24a98e75bd3f30be3297954f39c9985d6e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 23:05:22 2013 -0500

    Wrapfs: use generic put_link helper
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1be3b5137ef14fa48776ea9e9d3a6cb3cd27bc88
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 26 23:03:46 2013 -0500

    Wrapfs: remove unnecessary initializations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f8e346338e9315001dbe22081e9e19c5724a4663
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Nov 24 11:12:07 2013 -0500

    Wrapfs: remove deprecated init_lower_nd
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 5c243342bb3313ba7c2bcf291e7af0799b6d427d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 19:00:00 2013 -0500

    Wrapfs: update MAINTAINERS info
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 984e64efa37449edd159de89c931648e0e14b730
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 18:59:47 2013 -0500

    patch wrapfs-copyright-update.patch

commit 26d74fec6fd1aacdd9bf960eba206f7bc87bf4aa
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:23:31 2013 -0500

    Wrapfs: use DCACHE_OP_REVALIDATE flag in ->d_revalidate
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e4e7bbc70cbc4aebc7ad2cb62c2ae8d31cde4617
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:22:31 2013 -0500

    Wrapfs: implement ->getattr
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 53c3fc9c72fbe0bbc51f5415d06880e1e63326c0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:21:31 2013 -0500

    Wrapfs: use file_inode helper
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d2e2964480f4b542911b582abfc09c68c44ed965
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:20:31 2013 -0500

    Wrapfs: call filemap_write_and_wait in ->flush
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 2cc48ea8a5b2c82ca2a8f3bc1aefe4a5108d40de
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:19:31 2013 -0500

    Wrapfs: handle new VFS API with delegation support
    
    For now, wrapfs isn't supporting NFS delegations.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 354fe478d346cb9a943cd2aa9460de3ca5ea56c4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:18:31 2013 -0500

    VFS: export vfs_path_lookup
    
    In 3.12, this useful function was unexported: wrapfs needs a way to lookup
    relative to a struct path and use a proper vfsmount, unlike lookup_one_len.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 102336317bb4336ef64386f9c8ef360ad474da29
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 17:17:31 2013 -0500

    Wrapfs: ->readdir op now ->iterate
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 2156c85d7f64169f975f6270312e5241f98e651e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Jun 5 01:36:58 2013 -0400

    Wrapfs: copy lower inode attributes in ->ioctl
    
    Some ioctls (e.g., EXT2_IOC_SETFLAGS) can change inode attributes, so copy
    them from lower inode.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 954f5b2b17bc44d34e9158ccf7407b73d7dc8d41
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Wed Jun 5 01:36:58 2013 -0400

    Wrapfs: remove unnecessary call to vm_unmap in ->mmap
    
    Code is unnecessary and causes deadlocks in newer kernels.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 2a43cfba484ce607e09c05c50edfa6fbd1545fa4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:32 2013 -0400

    Wrapfs: declare MODULE_ALIAS_FS
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d8bd354f1f85a91ea7dfcff1d19854ba53b7d665
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:32 2013 -0400

    Wrapfs: don't use FS_REVAL_DOT in fs_flags
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6f16338e05600c076f43a03f8c84347c8d446a58
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:31 2013 -0400

    Wrapfs: remove dependency on now-defunct CONFIG_EXPERIMENTAL
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a5c79cd0914e5f3fdf8b5489d5c03d80bb92c449
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:31 2013 -0400

    Wrapfs: dentry_open() no longer does mntput/dput
    
    We need to grab a reference on the path before dentry_open, and drop it
    after.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6c15a21967be0f8babdd0eb28a2e7dcd8b65e88e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:30 2013 -0400

    Wrapfs: no need to call mnt_want_write any longer
    
    Apparently this is now being done by the VFS.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 35231a9035f7c7b01af709772914b10faea47256
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:30 2013 -0400

    Wrapfs: remove VM_CAN_NONLINEAR flag use in ->mmap
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 34f57177a4def0a536eb7d56744e286fce6db229
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:29 2013 -0400

    Wrapfs: ->lookup takes flags not a nameidata
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e4d05a17ac896a273156f659599b5eb5db82e221
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:29 2013 -0400

    Wrapfs: ->create no longer takes a nameidata, only a flag
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9bd03b0ff80b66dee1140311902e4e8ca352d074
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:29 2013 -0400

    Wrapfs: ->d_revalidate now takes namei flags, not nameidata
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d7e31285b7714a814e5baa26651b0735ba0f0afb
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:28 2013 -0400

    Wrapfs: struct nameidata no longer has an open-intent data
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d1b137faf5e8c0bc75b2dec0eae3cfe51c627565
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:28 2013 -0400

    Wrapfs: dentry_open now takes a struct path
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d81618941fe66ee28c26b9f44de8ca098a8f8de7
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:27 2013 -0400

    Wrapfs: use vm_munmap in ->mmap
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 480ec8727b91acca68d3deb57632659b2ea39b08
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:27 2013 -0400

    Wrapfs: use clear_inode in evict_inode
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 328617840dad983a3f69edc3df79d90b022ccfab
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jun 4 23:19:26 2013 -0400

    Wrapfs: use d_make_root
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit be8875978fa9cb613bab894ee9ad54c8aaf7d342
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jan 31 04:40:19 2012 -0500

    Wrapfs: use mode_t
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e554de86b7d7f502802f0f90ff9a505b5b3d6a05
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Jan 29 20:34:27 2012 -0500

    Wrapfs: use set_nlink()
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a62a6e2fe423fa954742c42f958efbc6de2e4890
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 9 00:47:49 2011 -0400

    Wrapfs: drop our dentry in ->rmdir
    
    Also clear nlinks on our inode.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 155a5e2c78b3c200db2d6b748e063dc5ddd40b99
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:32 2011 -0400

    Wrapfs: use d_alloc_root
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 3a54414a1ce6c13e0f7c44c14bc36bda5bc3078f
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:31 2011 -0400

    Wrapfs: use d_set_d_op
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 415389ba17e31f46a52de8a011b1de1aa823f69f
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:30 2011 -0400

    Wrapfs: use updated vfs_path_lookup prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ad04db287f0aff8f95bd6ccb77bf8bd1984922e9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:30 2011 -0400

    Wrapfs: ->fsync updates for new prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 115a92ac91d1615d2baff5a0d27293938fa5aa35
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:29 2011 -0400

    Wrapfs: support LOOKUP_RCU in ->d_revalidate
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit dfab3c6472a3a13e9a3f01d3df4d322e57055524
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Sep 6 00:10:28 2011 -0400

    Wrapfs: new ->permission prototype and fixes.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e8220a67b09ed4cd9fe4a6878c00d53d67087628
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon May 2 02:00:02 2011 -0400

    Wrapfs: lookup fixes
    
    Don't use lookup_one_len any longer (doesn't work for NFS).
    Initialize lower wrapfs_dentry_info so lower_path is NULL.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4ae2c287870ad1b1583547a58b1bc5ddb5b687d2
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Mar 18 13:14:28 2011 -0400

    Wrapfs: remove extra debug in rmdir
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 9561149d35ea87a3ece2e734f123b2dc2539cdd5
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Mar 18 12:38:01 2011 -0400

    Wrapfs: checkpatch fixes
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 283b940d1cf324b0ade5dba0926443b2d717a4a9
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Mar 18 00:45:17 2011 -0400

    Wrapfs: port to 2.6.39
    
    Remove lock/unlock_kernel in ->fasync.
    Convert from ->get_sb to ->mount op.
    Remove include to smp_lock.h, added sched.h.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 0d4ac7220da81a48be8e2b2f866a9b48d478fae0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Mar 17 23:21:55 2011 -0400

    Wrapfs: copyright update for 2011
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit b2de2be643de88951cacaffe4de8e946d263211e
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Mar 17 23:21:55 2011 -0400

    Wrapfs: better handling of NFS silly-renamed files
    
    In ->unlink, if we try to unlink an NFS silly-renamed file, NFS returns
    -EBUSY.  We have to treat it as a success and return 0 to the VFS.  NFS will
    remove silly-deleted files later on anyway.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 027b636c2626262c3ef1e4e45f4d44915c3a2e8c
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Mar 17 23:21:55 2011 -0400

    Wrapfs: update parent directory inode size in inode ops
    
    After ->unlink, ->rmdir, and ->rename, we need to copy the (possibly
    changed) inode size of the parent directory(ies) where the operation took
    place.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit c8b5785177bf19e7d60f1d8ef24d1e369351d7b2
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Thu Mar 17 23:21:55 2011 -0400

    Wrapfs: remove unnecessary calls to copy lower inode->n_links
    
    Removed from ->create, ->symlink, and ->mknod.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d79a7937da5c457b58038676fc6b020fbe3ddc5b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Mar 7 23:20:33 2011 -0500

    Wrapfs: ->setattr fixes
    
    Call inode_change_ok on our inode, not lower.
    Don't copy inode sizes (VFS does it).
    Pass lower file in struct iattr passed to notify_change on lower inode.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 7da6981545d7470189b6bcc389cbdbe74b95dc03
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sun Mar 6 16:23:16 2011 -0500

    Wrapfs: update ->permission prototye and code for new iperm flag
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit a0dcc5737b1a72daf06576ab2e460a9ba38f4a8b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Nov 12 18:15:05 2010 -0500

    Wrapfs: handle maxbytes properly
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e82902ce1a0a3fc14e718b90d8594c23e72f08dd
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Sat Sep 11 15:49:33 2010 -0400

    Wrapfs: support ->unlocked_ioctl and ->compat_ioctl
    
    Old ->ioctl was split into ->unlocked_ioctl and ->compat_ioctl.  Compat
    version doesn't need to lock_kernel any longer.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 8ed900c9684f872e98bd879b4c7d920013287355
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Aug 10 23:50:14 2010 -0400

    Wrapfs: new vfs_statfs and ->evict_inode prototypes
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit fda8f345157f5d73ba1937a0956a24163beeaa02
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Aug 6 23:37:29 2010 -0400

    Wrapfs: update ->fsync prototype
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 07eca8d07b294c2007631cb0c9ecba4eaceddc16
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Apr 20 21:22:02 2010 -0400

    Wrapfs: update documentation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6b53f9163dbdefd061d67d361c7407e9fb4c90a5
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Apr 20 15:32:09 2010 -0400

    Wrapfs: include slab.h
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit aee0676da7b7d8154d7486e68dfbcbe1846ed8b0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Apr 20 15:26:02 2010 -0400

    Wrapfs: avoid an extra path_get/put pair in wrapfs_open
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit ca948cb13b0fa21a40501b6ea118031a75bd3982
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Feb 26 03:18:04 2010 -0500

    Wrapfs: decrement nd_path on follow_link error
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6a3002d2bb0b9e9e600bb36d467096290927a10b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Jan 5 04:27:00 2010 -0500

    Wrapfs: don't mention kernel version in modload message
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1108021348703e47b7cec032e04be9a58a62d174
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Kconfig: hook to configure Wrapfs
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d51bff8b987413361a0d9ed73dea23d03117b9e3
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Makefile: hook to compile Wrapfs
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 99f1609604a21d2200475295d9375ebf583614d8
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: file system magic number
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 6e56003af81ff654d89b81ea17496b97b9f77552
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: Kconfig options
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4fa7c3dfc2dfab3e5580b864a6f4b41bbcdfd902
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: main Makefile
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 63f34f371379b8bc3b65aab01306b803c8fb7c77
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: vm_ops operations
    
    Includes necessary address_space workaround ops.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit e4fde3d86e9de4078a30693ac406c0049262ae18
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: mount-time and module-linkage functions
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit fc61c351b6b0e300bee341b20d4d8f83f43ef5ca
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: lookup-related functions
    
    Main lookup function, nameidata helpers, and stacking-interposition
    functions.
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 5c091050e5573b6813fdccdff00e9196333a7d13
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: file operations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit f01e7a833be85e035b4e1ca2acb5f6610e5d7a6f
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: dentry operations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 4404ee8f42acdfffd4cda611fb0c0ce4c60d3d6d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: inode operations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 45bfdca77af43b7bec9818f79f20872eb06e4063
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: superblock operations
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 1d7be7a41ecf92741a998d81c6a2b28ed945cc0a
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: main header file
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 579bcd643d9f3a59ce24da1f486b9a68af252486
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: Maintainers
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d523a561e1ddca3736710d7f6ed223f6dd22090b
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Documentation: index entry for Wrapfs
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit d06cbed4f0cb0348f90224a95d50caebdf1fbc08
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Mon Jan 4 20:45:06 2010 -0500

    Wrapfs: introduction and usage documentation
    
    Signed-off-by: Erez Zadok <e...@cs.sunysb.edu>

commit 096998b11906dd79df5af4d688c9974342dd09f2
Author: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Date:   Tue Aug 16 09:33:36 2016 +0200

    Linux 4.6.7

commit ce1afec0b14dc1cfb7b9777bec8833ffa216a6a8
Author: Vegard Nossum <vegard.nos...@oracle.com>
Date:   Thu Jul 14 23:02:47 2016 -0400

    ext4: fix reference counting bug on block allocation error
    
    commit 554a5ccc4e4a20c5f3ec859de0842db4b4b9c77e upstream.
    
    If we hit this error when mounted with errors=continue or
    errors=remount-ro:
    
        EXT4-fs error (device loop0): ext4_mb_mark_diskspace_used:2940: comm 
ext4.exe: Allocating blocks 5090-6081 which overlap fs metadata
    
    then ext4_mb_new_blocks() will call ext4_mb_release_context() and try to
    continue. However, ext4_mb_release_context() is the wrong thing to call
    here since we are still actually using the allocation context.
    
    Instead, just error out. We could retry the allocation, but there is a
    possibility of getting stuck in an infinite loop instead, so this seems
    safer.
    
    [ Fixed up so we don't return EAGAIN to userspace. --tytso ]
    
    Fixes: 8556e8f3b6 ("ext4: Don't allow new groups to be added during block 
allocation")
    Signed-off-by: Vegard Nossum <vegard.nos...@oracle.com>
    Signed-off-by: Theodore Ts'o <ty...@mit.edu>
    Cc: Aneesh Kumar K.V <aneesh.ku...@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

diff --git a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 
b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
index 6708c5e..33e96f7 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
+++ b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
@@ -1,4 +1,4 @@
-What           /sys/bus/iio/devices/iio:deviceX/in_proximity_raw
+What           /sys/bus/iio/devices/iio:deviceX/in_proximity_input
 Date:          March 2014
 KernelVersion: 3.15
 Contact:       Matt Ranostay <mranos...@gmail.com>
diff --git a/Documentation/DocBook/gpu.tmpl b/Documentation/DocBook/gpu.tmpl
index 1692c4d..ab037f6 100644
--- a/Documentation/DocBook/gpu.tmpl
+++ b/Documentation/DocBook/gpu.tmpl
@@ -1623,6 +1623,12 @@ void intel_crt_init(struct drm_device *dev)
 !Edrivers/gpu/drm/drm_dp_helper.c
     </sect2>
     <sect2>
+      <title>Display Port Dual Mode Adaptor Helper Functions Reference</title>
+!Pdrivers/gpu/drm/drm_dp_dual_mode_helper.c dp dual mode helpers
+!Iinclude/drm/drm_dp_dual_mode_helper.h
+!Edrivers/gpu/drm/drm_dp_dual_mode_helper.c
+    </sect2>
+    <sect2>
       <title>Display Port MST Helper Functions Reference</title>
 !Pdrivers/gpu/drm/drm_dp_mst_topology.c dp mst helper
 !Iinclude/drm/drm_dp_mst_helper.h
diff --git a/Documentation/cpu-freq/pcc-cpufreq.txt 
b/Documentation/cpu-freq/pcc-cpufreq.txt
index 0a94224..9e3c3b3 100644
--- a/Documentation/cpu-freq/pcc-cpufreq.txt
+++ b/Documentation/cpu-freq/pcc-cpufreq.txt
@@ -159,8 +159,8 @@ to be strictly associated with a P-state.
 
 2.2 cpuinfo_transition_latency:
 -------------------------------
-The cpuinfo_transition_latency field is CPUFREQ_ETERNAL. The PCC specification
-does not include a field to expose this value currently.
+The cpuinfo_transition_latency field is 0. The PCC specification does
+not include a field to expose this value currently.
 
 2.3 cpuinfo_cur_freq:
 ---------------------
diff --git a/Documentation/devicetree/bindings/clock/imx35-clock.txt 
b/Documentation/devicetree/bindings/clock/imx35-clock.txt
index a703564..f497832 100644
--- a/Documentation/devicetree/bindings/clock/imx35-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx35-clock.txt
@@ -94,6 +94,7 @@ clocks and IDs.
        csi_sel                 79
        iim_gate                80
        gpu2d_gate              81
+       ckli_gate               82
 
 Examples:
 
diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt
index 8638f61..37eca00 100644
--- a/Documentation/scsi/scsi_eh.txt
+++ b/Documentation/scsi/scsi_eh.txt
@@ -263,19 +263,23 @@ scmd->allowed.
 
  3. scmd recovered
     ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
-       - shost->host_failed--
        - clear scmd->eh_eflags
        - scsi_setup_cmd_retry()
        - move from local eh_work_q to local eh_done_q
     LOCKING: none
+    CONCURRENCY: at most one thread per separate eh_work_q to
+                keep queue manipulation lockless
 
  4. EH completes
     ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
-           layer of failure.
+           layer of failure. May be called concurrently but must have
+           a no more than one thread per separate eh_work_q to
+           manipulate the queue locklessly
        - scmd is removed from eh_done_q and scmd->eh_entry is cleared
        - if retry is necessary, scmd is requeued using
           scsi_queue_insert()
        - otherwise, scsi_finish_command() is invoked for scmd
+       - zero shost->host_failed
     LOCKING: queue or finish function performs appropriate locking
 
 
diff --git a/Documentation/serial/tty.txt b/Documentation/serial/tty.txt
index 798cba8..b487809 100644
--- a/Documentation/serial/tty.txt
+++ b/Documentation/serial/tty.txt
@@ -210,9 +210,6 @@ TTY_IO_ERROR                If set, causes all subsequent 
userspace read/write
 
 TTY_OTHER_CLOSED       Device is a pty and the other side has closed.
 
-TTY_OTHER_DONE         Device is a pty and the other side has closed and
-                       all pending input processing has been completed.
-
 TTY_NO_WRITE_SPLIT     Prevent driver from splitting up writes into
                        smaller chunks.
 
diff --git a/Documentation/x86/pat.txt b/Documentation/x86/pat.txt
index 54944c7..2a4ee63 100644
--- a/Documentation/x86/pat.txt
+++ b/Documentation/x86/pat.txt
@@ -196,3 +196,35 @@ Another, more verbose way of getting PAT related debug 
messages is with
 "debugpat" boot parameter. With this parameter, various debug messages are
 printed to dmesg log.
 
+PAT Initialization
+------------------
+
+The following table describes how PAT is initialized under various
+configurations. The PAT MSR must be updated by Linux in order to support WC
+and WT attributes. Otherwise, the PAT MSR has the value programmed in it
+by the firmware. Note, Xen enables WC attribute in the PAT MSR for guests.
+
+ MTRR PAT   Call Sequence               PAT State  PAT MSR
+ =========================================================
+ E    E     MTRR -> PAT init            Enabled    OS
+ E    D     MTRR -> PAT init            Disabled    -
+ D    E     MTRR -> PAT disable         Disabled   BIOS
+ D    D     MTRR -> PAT disable         Disabled    -
+ -    np/E  PAT  -> PAT disable         Disabled   BIOS
+ -    np/D  PAT  -> PAT disable         Disabled    -
+ E    !P/E  MTRR -> PAT init            Disabled   BIOS
+ D    !P/E  MTRR -> PAT disable         Disabled   BIOS
+ !M   !P/E  MTRR stub -> PAT disable    Disabled   BIOS
+
+ Legend
+ ------------------------------------------------
+ E         Feature enabled in CPU
+ D        Feature disabled/unsupported in CPU
+ np       "nopat" boot option specified
+ !P       CONFIG_X86_PAT option unset
+ !M       CONFIG_MTRR option unset
+ Enabled   PAT state set to enabled
+ Disabled  PAT state set to disabled
+ OS        PAT initializes PAT MSR with OS setting
+ BIOS      PAT keeps PAT MSR with BIOS setting
+
diff --git a/Makefile b/Makefile
index 0f9cb36..5fe9a7a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 6
-SUBLEVEL = 0
+SUBLEVEL = 7
 EXTRAVERSION =
 NAME = Charred Weasel
 
@@ -364,7 +364,7 @@ AFLAGS_MODULE   =
 LDFLAGS_MODULE  =
 CFLAGS_KERNEL  =
 AFLAGS_KERNEL  =
-CFLAGS_GCOV    = -fprofile-arcs -ftest-coverage
+CFLAGS_GCOV    = -fprofile-arcs -ftest-coverage -fno-tree-loop-im
 CFLAGS_KCOV    = -fsanitize-coverage=trace-pc
 
 
@@ -697,9 +697,10 @@ KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
 KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
 else
 
-# This warning generated too much noise in a regular build.
-# Use make W=1 to enable this warning (see scripts/Makefile.build)
+# These warnings generated too much noise in a regular build.
+# Use make W=1 to enable them (see scripts/Makefile.build)
 KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
 endif
 
 ifdef CONFIG_FRAME_POINTER
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index def69e3..f5add97 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -66,8 +66,6 @@ endif
 
 endif
 
-cflags-$(CONFIG_ARC_DW2_UNWIND)                += -fasynchronous-unwind-tables
-
 # By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
 ifeq ($(atleast_gcc48),y)
 cflags-$(CONFIG_ARC_DW2_UNWIND)                += -gdwarf-2
diff --git a/arch/arc/kernel/stacktrace.c b/arch/arc/kernel/stacktrace.c
index e0efff1..b9192a6 100644
--- a/arch/arc/kernel/stacktrace.c
+++ b/arch/arc/kernel/stacktrace.c
@@ -142,7 +142,7 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs 
*regs,
         * prelogue is setup (callee regs saved and then fp set and not other
         * way around
         */
-       pr_warn("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
+       pr_warn_once("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
        return 0;
 
 #endif
diff --git a/arch/arm/boot/dts/armada-385-linksys.dtsi 
b/arch/arm/boot/dts/armada-385-linksys.dtsi
index 85d2c37..22f7a13 100644
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
@@ -58,8 +58,8 @@
        soc {
                ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
                          MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
-                         MBUS_ID(0x09, 0x09) 0 0xf1100000 0x10000
-                         MBUS_ID(0x09, 0x05) 0 0xf1110000 0x10000>;
+                         MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
+                         MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
 
                internal-regs {
 
@@ -245,7 +245,7 @@
                button@2 {
                        label = "Factory Reset Button";
                        linux,code = <KEY_RESTART>;
-                       gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+                       gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
                };
        };
 
@@ -260,7 +260,7 @@
                };
 
                sata {
-                       gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+                       gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
                        default-state = "off";
                };
        };
@@ -313,7 +313,7 @@
 
 &pinctrl {
        keys_pin: keys-pin {
-               marvell,pins = "mpp24", "mpp47";
+               marvell,pins = "mpp24", "mpp29";
                marvell,function = "gpio";
        };
 
diff --git a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts 
b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
index b89e6cf..7a46154 100644
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
@@ -304,13 +304,13 @@
                button@1 {
                        label = "WPS";
                        linux,code = <KEY_WPS_BUTTON>;
-                       gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+                       gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
                };
 
                button@2 {
                        label = "Factory Reset Button";
                        linux,code = <KEY_RESTART>;
-                       gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+                       gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
                };
        };
 
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts 
b/arch/arm/boot/dts/exynos4210-trats.dts
index 1df2f0b..a9fae91 100644
--- a/arch/arm/boot/dts/exynos4210-trats.dts
+++ b/arch/arm/boot/dts/exynos4210-trats.dts
@@ -298,6 +298,8 @@
                compatible = "maxim,max8997-pmic";
 
                reg = <0x66>;
+               interrupt-parent = <&gpx0>;
+               interrupts = <7 0>;
 
                max8997,pmic-buck1-uses-gpio-dvs;
                max8997,pmic-buck2-uses-gpio-dvs;
diff --git a/arch/arm/boot/dts/sama5d2-pinfunc.h 
b/arch/arm/boot/dts/sama5d2-pinfunc.h
index b0c912fe..8a394f3 100644
--- a/arch/arm/boot/dts/sama5d2-pinfunc.h
+++ b/arch/arm/boot/dts/sama5d2-pinfunc.h
@@ -837,8 +837,8 @@
 #define PIN_PD23__ISC_FIELD            PINMUX_PIN(PIN_PD23, 6, 4)
 #define PIN_PD24                       120
 #define PIN_PD24__GPIO                 PINMUX_PIN(PIN_PD24, 0, 0)
-#define PIN_PD24__UTXD2                        PINMUX_PIN(PIN_PD23, 1, 2)
-#define PIN_PD24__FLEXCOM4_IO3         PINMUX_PIN(PIN_PD23, 3, 3)
+#define PIN_PD24__UTXD2                        PINMUX_PIN(PIN_PD24, 1, 2)
+#define PIN_PD24__FLEXCOM4_IO3         PINMUX_PIN(PIN_PD24, 3, 3)
 #define PIN_PD25                       121
 #define PIN_PD25__GPIO                 PINMUX_PIN(PIN_PD25, 0, 0)
 #define PIN_PD25__SPI1_SPCK            PINMUX_PIN(PIN_PD25, 1, 3)
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index 2c8f5e6..bf70d0a 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -96,7 +96,7 @@
                        allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
                        clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
                                 <&ahb_gates 44>, <&ahb_gates 46>,
-                                <&dram_gates 25>, <&dram_gates 26>;
+                                <&dram_gates 5>, <&dram_gates 25>, 
<&dram_gates 26>;
                        status = "disabled";
                };
        };
diff --git a/arch/arm/boot/dts/sun5i-r8-chip.dts 
b/arch/arm/boot/dts/sun5i-r8-chip.dts
index f6898c6..c937c85 100644
--- a/arch/arm/boot/dts/sun5i-r8-chip.dts
+++ b/arch/arm/boot/dts/sun5i-r8-chip.dts
@@ -52,7 +52,7 @@
 
 / {
        model = "NextThing C.H.I.P.";
-       compatible = "nextthing,chip", "allwinner,sun5i-r8";
+       compatible = "nextthing,chip", "allwinner,sun5i-r8", 
"allwinner,sun5i-a13";
 
        aliases {
                i2c0 = &i2c0;
diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts 
b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
index 68b479b..73c133f 100644
--- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -176,8 +176,6 @@
 };
 
 &reg_dc1sw {
-       regulator-min-microvolt = <3000000>;
-       regulator-max-microvolt = <3000000>;
        regulator-name = "vcc-lcd";
 };
 
diff --git a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts 
b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts
index 360adfb..d6ad619 100644
--- a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts
@@ -135,8 +135,6 @@
 
 &reg_dc1sw {
        regulator-name = "vcc-lcd-usb2";
-       regulator-min-microvolt = <3000000>;
-       regulator-max-microvolt = <3000000>;
 };
 
 &reg_dc5ldo {
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
index 0940a78..ee4e8e7 100644
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
@@ -85,8 +85,9 @@
                        compatible = "allwinner,simple-framebuffer",
                                     "simple-framebuffer";
                        allwinner,pipeline = "de_be0-lcd0-tve0";
-                       clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
-                                <&ahb_gates 44>, <&dram_gates 26>;
+                       clocks = <&pll5 1>,
+                                <&ahb_gates 34>, <&ahb_gates 36>, <&ahb_gates 
44>,
+                                <&dram_gates 5>, <&dram_gates 26>;
                        status = "disabled";
                };
        };
diff --git a/arch/arm/include/asm/pgtable-2level.h 
b/arch/arm/include/asm/pgtable-2level.h
index aeddd28..92fd2c8 100644
--- a/arch/arm/include/asm/pgtable-2level.h
+++ b/arch/arm/include/asm/pgtable-2level.h
@@ -193,6 +193,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long 
addr)
 
 #define pmd_large(pmd)         (pmd_val(pmd) & 2)
 #define pmd_bad(pmd)           (pmd_val(pmd) & 2)
+#define pmd_present(pmd)       (pmd_val(pmd))
 
 #define copy_pmd(pmdpd,pmdps)          \
        do {                            \
diff --git a/arch/arm/include/asm/pgtable-3level.h 
b/arch/arm/include/asm/pgtable-3level.h
index dc46398..7411466 100644
--- a/arch/arm/include/asm/pgtable-3level.h
+++ b/arch/arm/include/asm/pgtable-3level.h
@@ -211,6 +211,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long 
addr)
                                                : !!(pmd_val(pmd) & (val)))
 #define pmd_isclear(pmd, val)  (!(pmd_val(pmd) & (val)))
 
+#define pmd_present(pmd)       (pmd_isset((pmd), L_PMD_SECT_VALID))
 #define pmd_young(pmd)         (pmd_isset((pmd), PMD_SECT_AF))
 #define pte_special(pte)       (pte_isset((pte), L_PTE_SPECIAL))
 static inline pte_t pte_mkspecial(pte_t pte)
@@ -249,10 +250,10 @@ PMD_BIT_FUNC(mkyoung,   |= PMD_SECT_AF);
 #define pfn_pmd(pfn,prot)      (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | 
pgprot_val(prot)))
 #define mk_pmd(page,prot)      pfn_pmd(page_to_pfn(page),prot)
 
-/* represent a notpresent pmd by zero, this is used by pmdp_invalidate */
+/* represent a notpresent pmd by faulting entry, this is used by 
pmdp_invalidate */
 static inline pmd_t pmd_mknotpresent(pmd_t pmd)
 {
-       return __pmd(0);
+       return __pmd(pmd_val(pmd) & ~L_PMD_SECT_VALID);
 }
 
 static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index 348caab..d622040 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -182,7 +182,6 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
 #define pgd_offset_k(addr)     pgd_offset(&init_mm, addr)
 
 #define pmd_none(pmd)          (!pmd_val(pmd))
-#define pmd_present(pmd)       (pmd_val(pmd))
 
 static inline pte_t *pmd_page_vaddr(pmd_t pmd)
 {
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index ef9119f..4d93758 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -733,8 +733,8 @@ static int vfp_set(struct task_struct *target,
        if (ret)
                return ret;
 
-       vfp_flush_hwstate(thread);
        thread->vfpstate.hard = new_vfp;
+       vfp_flush_hwstate(thread);
 
        return 0;
 }
diff --git a/arch/arm/kernel/sys_oabi-compat.c 
b/arch/arm/kernel/sys_oabi-compat.c
index 087acb5..5f221ac 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -279,8 +279,12 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,
        mm_segment_t fs;
        long ret, err, i;
 
-       if (maxevents <= 0 || maxevents > (INT_MAX/sizeof(struct epoll_event)))
+       if (maxevents <= 0 ||
+                       maxevents > (INT_MAX/sizeof(*kbuf)) ||
+                       maxevents > (INT_MAX/sizeof(*events)))
                return -EINVAL;
+       if (!access_ok(VERIFY_WRITE, events, sizeof(*events) * maxevents))
+               return -EFAULT;
        kbuf = kmalloc(sizeof(*kbuf) * maxevents, GFP_KERNEL);
        if (!kbuf)
                return -ENOMEM;
@@ -317,6 +321,8 @@ asmlinkage long sys_oabi_semtimedop(int semid,
 
        if (nsops < 1 || nsops > SEMOPM)
                return -EINVAL;
+       if (!access_ok(VERIFY_READ, tsops, sizeof(*tsops) * nsops))
+               return -EFAULT;
        sops = kmalloc(sizeof(*sops) * nsops, GFP_KERNEL);
        if (!sops)
                return -ENOMEM;
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index dded1b7..72b11d9 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -267,6 +267,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)
        kvm_timer_vcpu_terminate(vcpu);
        kvm_vgic_vcpu_destroy(vcpu);
        kvm_pmu_vcpu_destroy(vcpu);
+       kvm_vcpu_uninit(vcpu);
        kmem_cache_free(kvm_vcpu_cache, vcpu);
 }
 
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index d6d4191..dea1452 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -893,11 +893,14 @@ static int stage2_set_pmd_huge(struct kvm *kvm, struct 
kvm_mmu_memory_cache
        VM_BUG_ON(pmd_present(*pmd) && pmd_pfn(*pmd) != pmd_pfn(*new_pmd));
 
        old_pmd = *pmd;
-       kvm_set_pmd(pmd, *new_pmd);
-       if (pmd_present(old_pmd))
+       if (pmd_present(old_pmd)) {
+               pmd_clear(pmd);
                kvm_tlb_flush_vmid_ipa(kvm, addr);
-       else
+       } else {
                get_page(virt_to_page(pmd));
+       }
+
+       kvm_set_pmd(pmd, *new_pmd);
        return 0;
 }
 
@@ -946,12 +949,14 @@ static int stage2_set_pte(struct kvm *kvm, struct 
kvm_mmu_memory_cache *cache,
 
        /* Create 2nd stage page table mapping - Level 3 */
        old_pte = *pte;
-       kvm_set_pte(pte, *new_pte);
-       if (pte_present(old_pte))
+       if (pte_present(old_pte)) {
+               kvm_set_pte(pte, __pte(0));
                kvm_tlb_flush_vmid_ipa(kvm, addr);
-       else
+       } else {
                get_page(virt_to_page(pte));
+       }
 
+       kvm_set_pte(pte, *new_pte);
        return 0;
 }
 
diff --git a/arch/arm/mach-imx/mach-imx6ul.c b/arch/arm/mach-imx/mach-imx6ul.c
index a38b16b..b56de4b 100644
--- a/arch/arm/mach-imx/mach-imx6ul.c
+++ b/arch/arm/mach-imx/mach-imx6ul.c
@@ -46,7 +46,7 @@ static int ksz8081_phy_fixup(struct phy_device *dev)
 static void __init imx6ul_enet_phy_init(void)
 {
        if (IS_BUILTIN(CONFIG_PHYLIB))
-               phy_register_fixup_for_uid(PHY_ID_KSZ8081, 0xffffffff,
+               phy_register_fixup_for_uid(PHY_ID_KSZ8081, MICREL_PHY_ID_MASK,
                                           ksz8081_phy_fixup);
 }
 
diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
index 7e989d6..474abff 100644
--- a/arch/arm/mach-mvebu/coherency.c
+++ b/arch/arm/mach-mvebu/coherency.c
@@ -162,22 +162,16 @@ exit:
 }
 
 /*
- * This ioremap hook is used on Armada 375/38x to ensure that PCIe
- * memory areas are mapped as MT_UNCACHED instead of MT_DEVICE. This
- * is needed as a workaround for a deadlock issue between the PCIe
- * interface and the cache controller.
+ * This ioremap hook is used on Armada 375/38x to ensure that all MMIO
+ * areas are mapped as MT_UNCACHED instead of MT_DEVICE. This is
+ * needed for the HW I/O coherency mechanism to work properly without
+ * deadlock.
  */
 static void __iomem *
-armada_pcie_wa_ioremap_caller(phys_addr_t phys_addr, size_t size,
-                             unsigned int mtype, void *caller)
+armada_wa_ioremap_caller(phys_addr_t phys_addr, size_t size,
+                        unsigned int mtype, void *caller)
 {
-       struct resource pcie_mem;
-
-       mvebu_mbus_get_pcie_mem_aperture(&pcie_mem);
-
-       if (pcie_mem.start <= phys_addr && (phys_addr + size) <= pcie_mem.end)
-               mtype = MT_UNCACHED;
-
+       mtype = MT_UNCACHED;
        return __arm_ioremap_caller(phys_addr, size, mtype, caller);
 }
 
@@ -186,7 +180,7 @@ static void __init armada_375_380_coherency_init(struct 
device_node *np)
        struct device_node *cache_dn;
 
        coherency_cpu_base = of_iomap(np, 0);
-       arch_ioremap_caller = armada_pcie_wa_ioremap_caller;
+       arch_ioremap_caller = armada_wa_ioremap_caller;
 
        /*
         * We should switch the PL310 to I/O coherency mode only if
diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
index 24ed037..83d48a5 100644
--- a/arch/arm64/include/asm/elf.h
+++ b/arch/arm64/include/asm/elf.h
@@ -160,14 +160,14 @@ extern int arch_setup_additional_pages(struct 
linux_binprm *bprm,
 #define STACK_RND_MASK                 (0x3ffff >> (PAGE_SHIFT - 12))
 #endif
 
-#ifdef CONFIG_COMPAT
-
 #ifdef __AARCH64EB__
 #define COMPAT_ELF_PLATFORM            ("v8b")
 #else
 #define COMPAT_ELF_PLATFORM            ("v8l")
 #endif
 
+#ifdef CONFIG_COMPAT
+
 #define COMPAT_ELF_ET_DYN_BASE         (2 * TASK_SIZE_32 / 3)
 
 /* AArch32 registers. */
diff --git a/arch/arm64/include/asm/pgtable-hwdef.h 
b/arch/arm64/include/asm/pgtable-hwdef.h
index 5c25b83..9786f77 100644
--- a/arch/arm64/include/asm/pgtable-hwdef.h
+++ b/arch/arm64/include/asm/pgtable-hwdef.h
@@ -133,7 +133,6 @@
  * Section
  */
 #define PMD_SECT_VALID         (_AT(pmdval_t, 1) << 0)
-#define PMD_SECT_PROT_NONE     (_AT(pmdval_t, 1) << 58)
 #define PMD_SECT_USER          (_AT(pmdval_t, 1) << 6)         /* AP[1] */
 #define PMD_SECT_RDONLY                (_AT(pmdval_t, 1) << 7)         /* 
AP[2] */
 #define PMD_SECT_S             (_AT(pmdval_t, 3) << 8)
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 989fef1..44430ce 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -280,6 +280,7 @@ static inline pgprot_t mk_sect_prot(pgprot_t prot)
 #define pmd_trans_huge(pmd)    (pmd_val(pmd) && !(pmd_val(pmd) & 
PMD_TABLE_BIT))
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
+#define pmd_present(pmd)       pte_present(pmd_pte(pmd))
 #define pmd_dirty(pmd)         pte_dirty(pmd_pte(pmd))
 #define pmd_young(pmd)         pte_young(pmd_pte(pmd))
 #define pmd_wrprotect(pmd)     pte_pmd(pte_wrprotect(pmd_pte(pmd)))
@@ -288,7 +289,7 @@ static inline pgprot_t mk_sect_prot(pgprot_t prot)
 #define pmd_mkclean(pmd)       pte_pmd(pte_mkclean(pmd_pte(pmd)))
 #define pmd_mkdirty(pmd)       pte_pmd(pte_mkdirty(pmd_pte(pmd)))
 #define pmd_mkyoung(pmd)       pte_pmd(pte_mkyoung(pmd_pte(pmd)))
-#define pmd_mknotpresent(pmd)  (__pmd(pmd_val(pmd) & ~PMD_TYPE_MASK))
+#define pmd_mknotpresent(pmd)  (__pmd(pmd_val(pmd) & ~PMD_SECT_VALID))
 
 #define __HAVE_ARCH_PMD_WRITE
 #define pmd_write(pmd)         pte_write(pmd_pte(pmd))
@@ -327,7 +328,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, 
unsigned long pfn,
                                     unsigned long size, pgprot_t vma_prot);
 
 #define pmd_none(pmd)          (!pmd_val(pmd))
-#define pmd_present(pmd)       (pmd_val(pmd))
 
 #define pmd_bad(pmd)           (!(pmd_val(pmd) & 2))
 
@@ -526,6 +526,21 @@ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
 }
 
 #ifdef CONFIG_ARM64_HW_AFDBM
+#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
+extern int ptep_set_access_flags(struct vm_area_struct *vma,
+                                unsigned long address, pte_t *ptep,
+                                pte_t entry, int dirty);
+
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+#define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
+static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
+                                       unsigned long address, pmd_t *pmdp,
+                                       pmd_t entry, int dirty)
+{
+       return ptep_set_access_flags(vma, address, (pte_t *)pmdp, 
pmd_pte(entry), dirty);
+}
+#endif
+
 /*
  * Atomic pte/pmd modifications.
  */
@@ -578,9 +593,9 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-#define __HAVE_ARCH_PMDP_GET_AND_CLEAR
-static inline pmd_t pmdp_get_and_clear(struct mm_struct *mm,
-                                      unsigned long address, pmd_t *pmdp)
+#define __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR
+static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
+                                           unsigned long address, pmd_t *pmdp)
 {
        return pte_pmd(ptep_get_and_clear(mm, address, (pte_t *)pmdp));
 }
diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
index a307eb6..7f94755 100644
--- a/arch/arm64/include/asm/ptrace.h
+++ b/arch/arm64/include/asm/ptrace.h
@@ -117,6 +117,8 @@ struct pt_regs {
        };
        u64 orig_x0;
        u64 syscallno;
+       u64 orig_addr_limit;
+       u64 unused;     // maintain 16 byte alignment
 };
 
 #define arch_has_single_step() (1)
diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
index 3ae6b31..1abcd88 100644
--- a/arch/arm64/kernel/asm-offsets.c
+++ b/arch/arm64/kernel/asm-offsets.c
@@ -59,6 +59,7 @@ int main(void)
   DEFINE(S_PC,                 offsetof(struct pt_regs, pc));
   DEFINE(S_ORIG_X0,            offsetof(struct pt_regs, orig_x0));
   DEFINE(S_SYSCALLNO,          offsetof(struct pt_regs, syscallno));
+  DEFINE(S_ORIG_ADDR_LIMIT,    offsetof(struct pt_regs, orig_addr_limit));
   DEFINE(S_FRAME_SIZE,         sizeof(struct pt_regs));
   BLANK();
   DEFINE(MM_CONTEXT_ID,                offsetof(struct mm_struct, 
context.id.counter));
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index 84c8684..2d2d7cb 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -22,6 +22,8 @@
 
 #include <linux/bitops.h>
 #include <linux/bug.h>
+#include <linux/compat.h>
+#include <linux/elf.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/personality.h>
@@ -87,7 +89,8 @@ static const char *const compat_hwcap_str[] = {
        "idivt",
        "vfpd32",
        "lpae",
-       "evtstrm"
+       "evtstrm",
+       NULL
 };
 
 static const char *const compat_hwcap2_str[] = {
@@ -103,6 +106,7 @@ static const char *const compat_hwcap2_str[] = {
 static int c_show(struct seq_file *m, void *v)
 {
        int i, j;
+       bool compat = personality(current->personality) == PER_LINUX32;
 
        for_each_online_cpu(i) {
                struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i);
@@ -114,6 +118,9 @@ static int c_show(struct seq_file *m, void *v)
                 * "processor".  Give glibc what it expects.
                 */
                seq_printf(m, "processor\t: %d\n", i);
+               if (compat)
+                       seq_printf(m, "model name\t: ARMv8 Processor rev %d 
(%s)\n",
+                                  MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
 
                seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
                           loops_per_jiffy / (500000UL/HZ),
@@ -126,7 +133,7 @@ static int c_show(struct seq_file *m, void *v)
                 * software which does already (at least for 32-bit).
                 */
                seq_puts(m, "Features\t:");
-               if (personality(current->personality) == PER_LINUX32) {
+               if (compat) {
 #ifdef CONFIG_COMPAT
                        for (j = 0; compat_hwcap_str[j]; j++)
                                if (compat_elf_hwcap & (1 << j))
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 12e8d2b..6c3b734 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -28,6 +28,7 @@
 #include <asm/errno.h>
 #include <asm/esr.h>
 #include <asm/irq.h>
+#include <asm/memory.h>
 #include <asm/thread_info.h>
 #include <asm/unistd.h>
 
@@ -97,7 +98,14 @@
        mov     x29, xzr                        // fp pointed to user-space
        .else
        add     x21, sp, #S_FRAME_SIZE
-       .endif
+       get_thread_info tsk
+       /* Save the task's original addr_limit and set USER_DS (TASK_SIZE_64) */
+       ldr     x20, [tsk, #TI_ADDR_LIMIT]
+       str     x20, [sp, #S_ORIG_ADDR_LIMIT]
+       mov     x20, #TASK_SIZE_64
+       str     x20, [tsk, #TI_ADDR_LIMIT]
+       ALTERNATIVE(nop, SET_PSTATE_UAO(0), ARM64_HAS_UAO, CONFIG_ARM64_UAO)
+       .endif /* \el == 0 */
        mrs     x22, elr_el1
        mrs     x23, spsr_el1
        stp     lr, x21, [sp, #S_LR]
@@ -128,6 +136,14 @@
        .endm
 
        .macro  kernel_exit, el
+       .if     \el != 0
+       /* Restore the task's original addr_limit. */
+       ldr     x20, [sp, #S_ORIG_ADDR_LIMIT]
+       str     x20, [tsk, #TI_ADDR_LIMIT]
+
+       /* No need to restore UAO, it will be restored from SPSR_EL1 */
+       .endif
+
        ldp     x21, x22, [sp, #S_PC]           // load ELR, SPSR
        .if     \el == 0
        ct_user_enter
@@ -406,7 +422,6 @@ el1_irq:
        bl      trace_hardirqs_off
 #endif
 
-       get_thread_info tsk
        irq_handler
 
 #ifdef CONFIG_PREEMPT
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index c539208..58651a9 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -64,8 +64,7 @@ static void dump_mem(const char *lvl, const char *str, 
unsigned long bottom,
 
        /*
         * We need to switch to kernel mode so that we can use __get_user
-        * to safely read from kernel space.  Note that we now dump the
-        * code first, just in case the backtrace kills us.
+        * to safely read from kernel space.
         */
        fs = get_fs();
        set_fs(KERNEL_DS);
@@ -111,21 +110,12 @@ static void dump_backtrace_entry(unsigned long where)
        print_ip_sym(where);
 }
 
-static void dump_instr(const char *lvl, struct pt_regs *regs)
+static void __dump_instr(const char *lvl, struct pt_regs *regs)
 {
        unsigned long addr = instruction_pointer(regs);
-       mm_segment_t fs;
        char str[sizeof("00000000 ") * 5 + 2 + 1], *p = str;
        int i;
 
-       /*
-        * We need to switch to kernel mode so that we can use __get_user
-        * to safely read from kernel space.  Note that we now dump the
-        * code first, just in case the backtrace kills us.
-        */
-       fs = get_fs();
-       set_fs(KERNEL_DS);
-
        for (i = -4; i < 1; i++) {
                unsigned int val, bad;
 
@@ -139,8 +129,18 @@ static void dump_instr(const char *lvl, struct pt_regs 
*regs)
                }
        }
        printk("%sCode: %s\n", lvl, str);
+}
 
-       set_fs(fs);
+static void dump_instr(const char *lvl, struct pt_regs *regs)
+{
+       if (!user_mode(regs)) {
+               mm_segment_t fs = get_fs();
+               set_fs(KERNEL_DS);
+               __dump_instr(lvl, regs);
+               set_fs(fs);
+       } else {
+               __dump_instr(lvl, regs);
+       }
 }
 
 static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
diff --git a/arch/arm64/kvm/hyp/vgic-v3-sr.c b/arch/arm64/kvm/hyp/vgic-v3-sr.c
index fff7cd4..3129df9 100644
--- a/arch/arm64/kvm/hyp/vgic-v3-sr.c
+++ b/arch/arm64/kvm/hyp/vgic-v3-sr.c
@@ -190,12 +190,11 @@ void __hyp_text __vgic_v3_save_state(struct kvm_vcpu 
*vcpu)
                        if (!(vcpu->arch.vgic_cpu.live_lrs & (1UL << i)))
                                continue;
 
-                       if (cpu_if->vgic_elrsr & (1 << i)) {
+                       if (cpu_if->vgic_elrsr & (1 << i))
                                cpu_if->vgic_lr[i] &= ~ICH_LR_STATE;
-                               continue;
-                       }
+                       else
+                               cpu_if->vgic_lr[i] = __gic_v3_get_lr(i);
 
-                       cpu_if->vgic_lr[i] = __gic_v3_get_lr(i);
                        __gic_v3_set_lr(0, i);
                }
 
diff --git a/arch/arm64/kvm/inject_fault.c b/arch/arm64/kvm/inject_fault.c
index 4d1ac81..e9e0e6d 100644
--- a/arch/arm64/kvm/inject_fault.c
+++ b/arch/arm64/kvm/inject_fault.c
@@ -162,7 +162,7 @@ static void inject_abt64(struct kvm_vcpu *vcpu, bool 
is_iabt, unsigned long addr
                esr |= (ESR_ELx_EC_IABT_CUR << ESR_ELx_EC_SHIFT);
 
        if (!is_iabt)
-               esr |= ESR_ELx_EC_DABT_LOW;
+               esr |= ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT;
 
        vcpu_sys_reg(vcpu, ESR_EL1) = esr | ESR_ELx_FSC_EXTABT;
 }
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 95df28b..e22849a9 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -81,6 +81,56 @@ void show_pte(struct mm_struct *mm, unsigned long addr)
        printk("\n");
 }
 
+#ifdef CONFIG_ARM64_HW_AFDBM
+/*
+ * This function sets the access flags (dirty, accessed), as well as write
+ * permission, and only to a more permissive setting.
+ *
+ * It needs to cope with hardware update of the accessed/dirty state by other
+ * agents in the system and can safely skip the __sync_icache_dcache() call as,
+ * like set_pte_at(), the PTE is never changed from no-exec to exec here.
+ *
+ * Returns whether or not the PTE actually changed.
+ */
+int ptep_set_access_flags(struct vm_area_struct *vma,
+                         unsigned long address, pte_t *ptep,
+                         pte_t entry, int dirty)
+{
+       pteval_t old_pteval;
+       unsigned int tmp;
+
+       if (pte_same(*ptep, entry))
+               return 0;
+
+       /* only preserve the access flags and write permission */
+       pte_val(entry) &= PTE_AF | PTE_WRITE | PTE_DIRTY;
+
+       /*
+        * PTE_RDONLY is cleared by default in the asm below, so set it in
+        * back if necessary (read-only or clean PTE).
+        */
+       if (!pte_write(entry) || !pte_sw_dirty(entry))
+               pte_val(entry) |= PTE_RDONLY;
+
+       /*
+        * Setting the flags must be done atomically to avoid racing with the
+        * hardware update of the access/dirty state.
+        */
+       asm volatile("//        ptep_set_access_flags\n"
+       "       prfm    pstl1strm, %2\n"
+       "1:     ldxr    %0, %2\n"
+       "       and     %0, %0, %3              // clear PTE_RDONLY\n"
+       "       orr     %0, %0, %4              // set flags\n"
+       "       stxr    %w1, %0, %2\n"
+       "       cbnz    %w1, 1b\n"
+       : "=&r" (old_pteval), "=&r" (tmp), "+Q" (pte_val(*ptep))
+       : "L" (~PTE_RDONLY), "r" (pte_val(entry)));
+
+       flush_tlb_fix_spurious_fault(vma, address);
+       return 1;
+}
+#endif
+
 /*
  * The kernel tried to access some page that wasn't present.
  */
@@ -234,7 +284,8 @@ static int __kprobes do_page_fault(unsigned long addr, 
unsigned int esr,
        }
 
        if (permission_fault(esr) && (addr < USER_DS)) {
-               if (get_fs() == KERNEL_DS)
+               /* regs->orig_addr_limit may be 0 if we entered from EL0 */
+               if (regs->orig_addr_limit == KERNEL_DS)
                        die("Accessing user space memory with fs=KERNEL_DS", 
regs, esr);
 
                if (!search_exception_tables(regs->pc))
diff --git a/arch/arm64/mm/flush.c b/arch/arm64/mm/flush.c
index dbd12ea..43a76b0 100644
--- a/arch/arm64/mm/flush.c
+++ b/arch/arm64/mm/flush.c
@@ -71,10 +71,6 @@ void __sync_icache_dcache(pte_t pte, unsigned long addr)
 {
        struct page *page = pte_page(pte);
 
-       /* no flushing needed for anonymous pages */
-       if (!page_mapping(page))
-               return;
-
        if (!test_and_set_bit(PG_dcache_clean, &page->flags))
                sync_icache_aliases(page_address(page),
                                    PAGE_SIZE << compound_order(page));
diff --git a/arch/mips/ath79/early_printk.c b/arch/mips/ath79/early_printk.c
index b955faf..d1adc59 100644
--- a/arch/mips/ath79/early_printk.c
+++ b/arch/mips/ath79/early_printk.c
@@ -31,13 +31,15 @@ static inline void prom_putchar_wait(void __iomem *reg, u32 
mask, u32 val)
        } while (1);
 }
 
+#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
+
 static void prom_putchar_ar71xx(unsigned char ch)
 {
        void __iomem *base = (void __iomem *)(KSEG1ADDR(AR71XX_UART_BASE));
 
-       prom_putchar_wait(base + UART_LSR * 4, UART_LSR_THRE, UART_LSR_THRE);
+       prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY);
        __raw_writel(ch, base + UART_TX * 4);
-       prom_putchar_wait(base + UART_LSR * 4, UART_LSR_THRE, UART_LSR_THRE);
+       prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY);
 }
 
 static void prom_putchar_ar933x(unsigned char ch)
diff --git a/arch/mips/include/asm/asmmacro.h b/arch/mips/include/asm/asmmacro.h
index 867f924..e689b89 100644
--- a/arch/mips/include/asm/asmmacro.h
+++ b/arch/mips/include/asm/asmmacro.h
@@ -298,21 +298,21 @@
        .set    pop
        .endm
 
-       .macro  copy_u_w        ws, n
+       .macro  copy_s_w        ws, n
        .set    push
        .set    mips32r2
        .set    fp=64
        .set    msa
-       copy_u.w $1, $w\ws[\n]
+       copy_s.w $1, $w\ws[\n]
        .set    pop
        .endm
 
-       .macro  copy_u_d        ws, n
+       .macro  copy_s_d        ws, n
        .set    push
        .set    mips64r2
        .set    fp=64
        .set    msa

_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
unionfs-cvs@fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to