Push to branch refs/heads/master:
6c1e5234447a9cbeea16bebb450a35959fe459c6 -->
  3eee5116d9afc04d6333ef63da493ee285e89303

 .../devicetree/bindings/arm/omap/omap.txt          |   1 +
 Documentation/filesystems/00-INDEX                 |   3 +
 Documentation/filesystems/efivarfs.txt             |   7 +
 Documentation/filesystems/wrapfs.txt               | 172 ++++++
 Documentation/kernel-parameters.txt                |   2 +
 Documentation/virtual/kvm/mmu.txt                  |   3 +-
 MAINTAINERS                                        |  13 +-
 Makefile                                           |   2 +-
 arch/arm/boot/dts/armada-375.dtsi                  |   2 +-
 arch/arm/boot/dts/dra7.dtsi                        |  10 +
 arch/arm/include/asm/psci.h                        |   2 +-
 arch/arm/mach-omap2/omap_hwmod.c                   |  83 +--
 arch/arm/mach-omap2/omap_hwmod.h                   |   6 +
 arch/arm/mach-omap2/sleep34xx.S                    |  12 +-
 arch/arm64/Makefile                                |   2 +
 arch/arm64/include/asm/pgtable.h                   |   6 +-
 arch/arm64/kernel/debug-monitors.c                 |  42 +-
 arch/arm64/mm/init.c                               |   4 +-
 arch/avr32/mach-at32ap/at32ap700x.c                |  16 +
 arch/mips/Kconfig                                  |  13 +-
 arch/mips/kernel/smp.c                             |   1 +
 arch/parisc/include/asm/uaccess.h                  |   1 +
 arch/parisc/kernel/asm-offsets.c                   |   1 +
 arch/parisc/kernel/parisc_ksyms.c                  |  10 +-
 arch/parisc/kernel/traps.c                         |   3 +
 arch/parisc/lib/fixup.S                            |   6 +
 arch/parisc/mm/fault.c                             |   1 +
 arch/powerpc/include/uapi/asm/cputable.h           |   1 +
 arch/powerpc/kernel/module_64.c                    |   2 +-
 arch/powerpc/kernel/prom.c                         |  19 +-
 arch/powerpc/kvm/book3s_hv_rmhandlers.S            |  14 +
 arch/s390/include/asm/hugetlb.h                    |   1 +
 arch/s390/include/asm/mmu_context.h                |  16 +-
 arch/s390/include/asm/pci.h                        |   3 +-
 arch/s390/include/asm/pgalloc.h                    |  24 +-
 arch/s390/pci/pci.c                                |   5 +-
 arch/um/drivers/mconsole_kern.c                    |   2 +-
 arch/x86/crypto/sha-mb/sha1_mb.c                   |   4 +-
 arch/x86/ia32/ia32entry.S                          |   1 +
 arch/x86/include/asm/apic.h                        |   2 +-
 arch/x86/include/asm/hugetlb.h                     |   1 +
 arch/x86/include/asm/perf_event.h                  |   8 +
 arch/x86/include/asm/xen/hypervisor.h              |   2 +
 arch/x86/include/uapi/asm/msr-index.h              |   6 +
 arch/x86/kernel/ioport.c                           |  12 +-
 arch/x86/kernel/process_64.c                       |  12 +
 arch/x86/kvm/i8254.c                               |  12 +-
 arch/x86/kvm/vmx.c                                 |  44 +-
 arch/x86/kvm/x86.c                                 |  42 +-
 arch/x86/pci/fixup.c                               |   7 +
 arch/x86/xen/enlighten.c                           |   2 +-
 arch/xtensa/kernel/head.S                          |   2 +-
 arch/xtensa/mm/cache.c                             |   8 +-
 arch/xtensa/platforms/iss/console.c                |  10 +-
 block/blk-core.c                                   |   2 +-
 crypto/asymmetric_keys/Makefile                    |   8 +-
 crypto/asymmetric_keys/pkcs7_trust.c               |   4 +-
 crypto/asymmetric_keys/pkcs7_verify.c              |  12 +-
 crypto/asymmetric_keys/x509_akid.asn1              |  35 ++
 crypto/asymmetric_keys/x509_cert_parser.c          | 229 +++++---
 crypto/asymmetric_keys/x509_parser.h               |  12 +-
 crypto/asymmetric_keys/x509_public_key.c           |  17 +-
 drivers/acpi/video_detect.c                        |   8 -
 drivers/block/mtip32xx/mtip32xx.c                  | 224 ++++----
 drivers/block/mtip32xx/mtip32xx.h                  |   1 +
 drivers/block/rbd.c                                |   6 +-
 drivers/bluetooth/ath3k.c                          |   8 +
 drivers/bluetooth/btusb.c                          |   4 +
 drivers/bus/imx-weim.c                             |   2 +-
 drivers/char/tpm/tpm_crb.c                         |   4 +-
 drivers/clk/rockchip/clk-rk3188.c                  |   3 +
 drivers/crypto/atmel-sha.c                         |   7 -
 drivers/crypto/ccp/ccp-crypto-aes-cmac.c           |  39 ++
 drivers/crypto/ccp/ccp-crypto-sha.c                |  43 ++
 drivers/crypto/ccp/ccp-crypto.h                    |  22 +
 drivers/dma/at_xdmac.c                             |  42 +-
 drivers/dma/dw/core.c                              |  34 +-
 drivers/dma/hsu/hsu.c                              |   2 +-
 drivers/dma/hsu/hsu.h                              |   3 +
 drivers/edac/amd64_edac.c                          |   2 +-
 drivers/edac/sb_edac.c                             |  28 +-
 drivers/firmware/efi/efivars.c                     |  46 +-
 drivers/firmware/efi/vars.c                        | 144 +++--
 drivers/gpio/gpio-pca953x.c                        |   3 +-
 drivers/gpu/drm/drm_dp_mst_topology.c              | 174 ++++--
 drivers/gpu/drm/gma500/gem.c                       |   2 +-
 drivers/gpu/drm/i915/intel_display.c               |  11 -
 drivers/gpu/drm/i915/intel_dp_mst.c                |  17 +-
 drivers/gpu/drm/i915/intel_uncore.c                |   6 +-
 drivers/gpu/drm/qxl/qxl_display.c                  |  13 +-
 drivers/gpu/drm/qxl/qxl_drv.h                      |   2 +
 drivers/gpu/drm/radeon/atombios_dp.c               | 118 ++---
 drivers/gpu/drm/radeon/atombios_encoders.c         |   6 +-
 drivers/gpu/drm/radeon/radeon_connectors.c         |   7 +-
 drivers/gpu/drm/radeon/radeon_device.c             |   1 -
 drivers/gpu/drm/radeon/radeon_dp_mst.c             |  12 +-
 drivers/gpu/drm/radeon/radeon_fb.c                 |  19 +-
 drivers/gpu/drm/radeon/radeon_mode.h               |   6 +-
 drivers/gpu/drm/radeon/radeon_pm.c                 |   5 +-
 drivers/gpu/drm/radeon/radeon_ttm.c                |   2 +
 drivers/gpu/drm/radeon/si_dpm.c                    |   4 +
 drivers/hid/hid-core.c                             |   7 +-
 drivers/hid/hid-multitouch.c                       |  15 +-
 drivers/hid/i2c-hid/i2c-hid.c                      |  16 +-
 drivers/hid/usbhid/hid-core.c                      |  77 +--
 drivers/iio/dac/mcp4725.c                          |   1 +
 drivers/iio/imu/adis_buffer.c                      |   2 +-
 drivers/iio/pressure/mpl115.c                      |   2 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c              |   4 +-
 drivers/infiniband/ulp/isert/ib_isert.c            |  21 +-
 drivers/infiniband/ulp/isert/ib_isert.h            |   1 +
 drivers/infiniband/ulp/srpt/ib_srpt.c              |  59 +--
 drivers/input/misc/ati_remote2.c                   |  36 +-
 drivers/input/misc/ims-pcu.c                       |   4 +
 drivers/input/misc/powermate.c                     |   3 +
 drivers/input/mouse/synaptics.c                    |   5 +-
 drivers/input/tablet/gtco.c                        |  10 +-
 drivers/irqchip/irq-omap-intc.c                    |  52 +-
 drivers/md/bcache/super.c                          |  46 +-
 drivers/md/dm-thin-metadata.c                      |   5 +-
 drivers/md/dm.c                                    |  13 +-
 drivers/md/multipath.c                             |   4 +-
 drivers/md/raid5.c                                 |  24 +-
 drivers/md/raid5.h                                 |   2 +
 drivers/media/i2c/adv7511.c                        |  21 +-
 drivers/media/pci/bt8xx/bttv-driver.c              |  26 +-
 drivers/media/pci/saa7134/saa7134-video.c          |  18 +-
 drivers/media/tuners/si2157.c                      |   1 +
 drivers/media/usb/au0828/au0828-core.c             |   2 +-
 drivers/media/usb/au0828/au0828-input.c            |   4 +-
 drivers/media/usb/au0828/au0828-video.c            |  63 ++-
 drivers/media/usb/au0828/au0828.h                  |   9 +-
 drivers/media/usb/pwc/pwc-if.c                     |   6 +
 drivers/media/usb/usbvision/usbvision-video.c      |  16 +-
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c      |  21 +-
 drivers/mmc/host/atmel-mci.c                       |  17 +
 drivers/mmc/host/mmc_spi.c                         |   6 +
 drivers/mmc/host/sdhci-pxav3.c                     |   6 +-
 drivers/mmc/host/sdhci.c                           |  23 +-
 drivers/mtd/onenand/onenand_base.c                 |   3 +-
 drivers/net/can/usb/gs_usb.c                       |  24 +-
 drivers/net/ethernet/marvell/mvneta.c              |   2 +-
 drivers/net/irda/irtty-sir.c                       |  10 -
 drivers/net/rionet.c                               |   4 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c    |   4 +-
 drivers/net/wireless/iwlwifi/mvm/tx.c              |   9 +
 drivers/of/of_reserved_mem.c                       |   4 +-
 drivers/pci/probe.c                                |  32 ++
 drivers/pinctrl/bcm/pinctrl-bcm2835.c              |   2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c      |   9 +-
 drivers/platform/x86/ideapad-laptop.c              |  14 +
 drivers/scsi/aacraid/aacraid.h                     |   2 +
 drivers/scsi/aacraid/commsup.c                     |  37 +-
 drivers/scsi/aacraid/src.c                         |  30 +-
 drivers/scsi/aic7xxx/aic7xxx_osm.c                 |   1 +
 drivers/scsi/be2iscsi/be_main.c                    |   1 +
 drivers/scsi/sd.c                                  |  23 +-
 drivers/scsi/sd.h                                  |   7 +-
 drivers/scsi/sg.c                                  |   3 +-
 drivers/staging/comedi/drivers/ni_mio_common.c     |  12 +-
 drivers/staging/comedi/drivers/ni_tiocmd.c         |   2 +-
 drivers/target/target_core_tmr.c                   |   1 -
 drivers/target/target_core_transport.c             |   2 -
 drivers/thermal/thermal_core.c                     |  13 +-
 drivers/usb/class/cdc-acm.c                        |   3 +
 drivers/usb/core/driver.c                          |   6 +-
 drivers/usb/core/hcd-pci.c                         |   9 +
 drivers/usb/core/hub.c                             |  16 +-
 drivers/usb/gadget/function/f_fs.c                 |   5 +-
 drivers/usb/host/xhci-mem.c                        |   6 +
 drivers/usb/host/xhci-pci.c                        |   5 +-
 drivers/usb/host/xhci-ring.c                       |   6 +-
 drivers/usb/host/xhci.c                            |  24 +-
 drivers/usb/host/xhci.h                            |   2 +
 drivers/usb/misc/iowarrior.c                       |   6 +
 drivers/usb/renesas_usbhs/fifo.c                   |   4 +-
 drivers/usb/renesas_usbhs/mod_gadget.c             |   6 +-
 drivers/usb/serial/cp210x.c                        |   1 +
 drivers/usb/serial/cypress_m8.c                    |  11 +-
 drivers/usb/serial/digi_acceleport.c               |  19 +
 drivers/usb/serial/ftdi_sio.c                      |   4 +
 drivers/usb/serial/ftdi_sio_ids.h                  |   8 +
 drivers/usb/serial/mct_u232.c                      |   9 +-
 drivers/usb/serial/option.c                        |   2 +
 drivers/usb/storage/uas.c                          |  16 +-
 drivers/usb/storage/unusual_uas.h                  |   7 +
 drivers/usb/storage/usb.c                          |   5 +-
 drivers/virtio/virtio_pci_modern.c                 |  11 +-
 drivers/watchdog/rc32434_wdt.c                     |   2 +-
 drivers/xen/events/events_base.c                   |  28 +-
 fs/Kconfig                                         |   1 +
 fs/Makefile                                        |   1 +
 fs/btrfs/async-thread.c                            |   2 +-
 fs/btrfs/disk-io.c                                 |  28 +
 fs/btrfs/extent-tree.c                             |   5 +
 fs/btrfs/inode-map.c                               |   9 +-
 fs/btrfs/inode-map.h                               |   1 +
 fs/btrfs/inode.c                                   |  27 +-
 fs/btrfs/ioctl.c                                   |   4 +
 fs/btrfs/send.c                                    |  16 +-
 fs/btrfs/super.c                                   |  24 +
 fs/btrfs/tree-log.c                                | 349 ++++++++++++
 fs/btrfs/volumes.c                                 |   1 +
 fs/coredump.c                                      |  38 +-
 fs/dax.c                                           |  21 +-
 fs/debugfs/inode.c                                 |   2 +-
 fs/efivarfs/file.c                                 |  70 +++
 fs/efivarfs/inode.c                                |  30 +-
 fs/efivarfs/internal.h                             |   3 +-
 fs/efivarfs/super.c                                |  16 +-
 fs/ext2/file.c                                     |   4 +-
 fs/ext4/ext4.h                                     |  36 ++
 fs/ext4/extents.c                                  |  89 ++--
 fs/ext4/file.c                                     |  18 +-
 fs/ext4/inode.c                                    | 116 +++-
 fs/ext4/move_extent.c                              |  12 +-
 fs/ext4/super.c                                    |  48 +-
 fs/ext4/truncate.h                                 |   2 +
 fs/fhandle.c                                       |   2 +-
 fs/fuse/cuse.c                                     |   4 +-
 fs/fuse/file.c                                     |  35 +-
 fs/fuse/fuse_i.h                                   |   9 +
 fs/jbd2/journal.c                                  |  17 +-
 fs/jffs2/dir.c                                     |  11 +-
 fs/ncpfs/dir.c                                     |   2 +-
 fs/nfsd/nfs4proc.c                                 |   1 +
 fs/nfsd/nfs4xdr.c                                  |  13 +-
 fs/ocfs2/dlm/dlmconvert.c                          |  24 +-
 fs/ocfs2/dlm/dlmrecovery.c                         |   1 -
 fs/open.c                                          |   6 +-
 fs/overlayfs/dir.c                                 |  10 +-
 fs/overlayfs/inode.c                               |  10 +-
 fs/overlayfs/super.c                               |  12 +-
 fs/proc/array.c                                    |   2 +-
 fs/proc/base.c                                     |  21 +-
 fs/proc/namespaces.c                               |   4 +-
 fs/proc_namespace.c                                |   2 +
 fs/quota/dquot.c                                   |   3 +-
 fs/splice.c                                        |   3 +
 fs/wrapfs/Kconfig                                  |   8 +
 fs/wrapfs/Makefile                                 |   7 +
 fs/wrapfs/dentry.c                                 |  49 ++
 fs/wrapfs/file.c                                   | 381 ++++++++++++++
 fs/wrapfs/inode.c                                  | 584 +++++++++++++++++++++
 fs/wrapfs/lookup.c                                 | 304 +++++++++++
 fs/wrapfs/main.c                                   | 174 ++++++
 fs/wrapfs/mmap.c                                   |  93 ++++
 fs/wrapfs/super.c                                  | 168 ++++++
 fs/wrapfs/wrapfs.h                                 | 205 ++++++++
 fs/xfs/xfs_attr_list.c                             |  19 +-
 include/asm-generic/bitops/lock.h                  |  14 +-
 include/drm/drm_cache.h                            |   2 +
 include/drm/drm_dp_mst_helper.h                    |  25 +-
 include/linux/atmel-mci.h                          |   2 +
 include/linux/compiler-gcc.h                       | 120 ++++-
 include/linux/compiler-gcc3.h                      |  23 -
 include/linux/compiler-gcc4.h                      |  91 ----
 include/linux/compiler-gcc5.h                      |  67 ---
 include/linux/efi.h                                |   5 +-
 include/linux/fs.h                                 |   8 +-
 include/linux/hugetlb.h                            |  17 +-
 include/linux/kernel.h                             |   6 +-
 include/linux/mm.h                                 |   5 +-
 include/linux/module.h                             |  17 +-
 include/linux/namei.h                              |   2 +
 include/linux/pageblock-flags.h                    |   2 +-
 include/linux/pci.h                                |   2 +
 include/linux/poison.h                             |   4 +-
 include/linux/ptrace.h                             |  24 +-
 include/linux/thermal.h                            |   2 +
 include/linux/tracepoint.h                         |  17 +-
 include/linux/tty.h                                |   2 +-
 include/linux/ucs2_string.h                        |   4 +
 include/linux/usb_usual.h                          |   2 +
 include/net/iw_handler.h                           |   6 +
 include/sound/hdaudio.h                            |  16 +-
 include/uapi/linux/magic.h                         |   2 +
 kernel/events/core.c                               |  22 +-
 kernel/futex.c                                     |  27 +-
 kernel/futex_compat.c                              |   2 +-
 kernel/kcmp.c                                      |   4 +-
 kernel/module.c                                    | 118 +++--
 kernel/ptrace.c                                    |  39 +-
 kernel/resource.c                                  |   5 +-
 kernel/sched/core.c                                |   2 +-
 kernel/sched/cputime.c                             |  14 +-
 kernel/sysctl_binary.c                             |   2 +-
 kernel/trace/trace.c                               |   5 +-
 kernel/trace/trace_printk.c                        |   3 +
 kernel/watchdog.c                                  |   9 +-
 lib/assoc_array.c                                  |   4 +-
 lib/lz4/lz4defs.h                                  |  21 +-
 lib/ucs2_string.c                                  |  62 +++
 mm/bootmem.c                                       |  13 +-
 mm/hugetlb.c                                       |  19 +-
 mm/internal.h                                      |   7 +-
 mm/memblock.c                                      |   2 +-
 mm/memcontrol.c                                    |   6 +
 mm/nobootmem.c                                     |   4 +-
 mm/page_alloc.c                                    |  74 ++-
 mm/process_vm_access.c                             |   2 +-
 net/ipv4/tcp_cubic.c                               |  22 +
 net/mac80211/agg-rx.c                              |   2 +-
 net/mac80211/ieee80211_i.h                         |   2 +-
 net/mac80211/rc80211_minstrel.c                    |   2 +-
 net/mac80211/rc80211_minstrel_ht.c                 |   5 +-
 net/mac80211/rx.c                                  |  37 +-
 net/mac80211/sta_info.c                            |  13 +-
 net/netlink/af_netlink.c                           |   2 +-
 net/wireless/core.c                                |   2 +
 net/wireless/nl80211.c                             |   2 +-
 net/wireless/wext-core.c                           |  52 +-
 scripts/coccinelle/iterators/use_after_iter.cocci  |   2 +-
 scripts/ld-version.sh                              |   2 +-
 security/commoncap.c                               |   7 +-
 security/keys/encrypted-keys/encrypted.c           |   2 +
 security/keys/trusted.c                            |   5 +-
 security/keys/user_defined.c                       |   5 +-
 security/smack/smack_lsm.c                         |   8 +-
 security/yama/yama_lsm.c                           |   4 +-
 sound/hda/hdac_device.c                            |  26 +-
 sound/hda/hdac_regmap.c                            |  10 +-
 sound/pci/hda/hda_generic.c                        |  87 ++-
 sound/pci/hda/hda_intel.c                          |  10 +
 sound/pci/hda/patch_cirrus.c                       |   8 +-
 sound/pci/hda/patch_conexant.c                     |   7 +-
 sound/pci/hda/patch_hdmi.c                         | 113 ++--
 sound/pci/hda/patch_realtek.c                      |  31 +-
 sound/pci/intel8x0.c                               |   1 +
 sound/pci/pcxhr/pcxhr_core.c                       |   1 +
 sound/soc/codecs/wm8958-dsp2.c                     |   8 +-
 sound/soc/codecs/wm8994.c                          |   4 +-
 sound/soc/codecs/wm_adsp.c                         |   8 +-
 sound/soc/samsung/i2s.c                            |  21 +-
 sound/soc/soc-dapm.c                               |   8 +-
 sound/usb/card.c                                   |  76 ++-
 sound/usb/clock.c                                  |   2 +
 sound/usb/endpoint.c                               |  13 +-
 sound/usb/mixer.c                                  |  96 ++--
 sound/usb/mixer.h                                  |   2 +
 sound/usb/mixer_maps.c                             |  14 +
 sound/usb/mixer_quirks.c                           | 130 ++---
 sound/usb/pcm.c                                    |  34 +-
 sound/usb/proc.c                                   |   4 +-
 sound/usb/quirks.c                                 |   9 +
 sound/usb/usbaudio.h                               |  10 +-
 tools/hv/Makefile                                  |   2 +
 tools/perf/util/pmu.c                              |  15 +-
 tools/testing/selftests/efivarfs/efivarfs.sh       |  19 +-
 tools/testing/selftests/efivarfs/open-unlink.c     |  72 ++-
 virt/kvm/kvm_main.c                                |  21 +-
 351 files changed, 6386 insertions(+), 1967 deletions(-)

commit 3eee5116d9afc04d6333ef63da493ee285e89303
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 3 21:31:17 2015 -0500

    Wrapfs: update copyright year to 2015

commit 6fc3f7e79f72dc28cd45efea3e1fd1df1ff5c8b5
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 3 21:31:17 2015 -0500

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

commit 46ec369ea7f13f4c2596669679222715d3ca338d
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 22:11:34 2015 -0400

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

commit 8514db718bfcd950dbc4a8a5946403ff5cade0d0
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 22:10:34 2015 -0400

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

commit 5141773c03f4b24143e5d635e7267cf3e7b4e9f4
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Fri Sep 4 22:09:34 2015 -0400

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

commit c99be09922d9c50a5d23d9a8c6e9c77379d3f893
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 84510905b78923c9e1c82b22c65e251ed8e779fb
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 4b1ad4e65c7445592b42b052bd2e28de75af682a
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 864c5da9c74a4b19067a672ce381409f687cde2c
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 1b346ea9a0dcf1c712aefd8911c153a412712a93
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 8722ed212af5b1dd4c4a14d51321ec6c9c37f6d6
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 0e3d3dd3c818c17b0e44a119b5a7eed470d43942
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 ea7257fb590e74c920bfbd5520736f044dee40ca
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 f670eed1f2a9526200e4f49a2f0996682cea4c23
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 a1a046d31f7a9e2bfea3ed09141c0b247d3c3736
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 ebccf79fb58956d6a541fd237527dc888578d63a
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 065ef0b723c548c86470b5b4e39b5d049d5cee3c
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 3c29df4f96ce709ae5845d4fe89cf6581be59aaf
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 b3e9378ca0a54591f9466ff53075b28d4e583e98
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 ea634693fdc16f2b8fe90546a918f0928768aadc
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 69ed32ea287e52d1cfb270bd10e929eb55cae675
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 a33cba8c3047f49ae52ff5ac9fd64c953b68d2f0
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 70b216ac5c6ac83df1ef7a864785e1a2dc1e77bf
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 761a12269c5d463f3b1cb036490b494ce1636b65
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 b3e066fd7d02e29e9ce9370f16ec0c2b5e82e67c
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 d824a41f2772c7820eb42daf3aa21cc63267a2db
Author: Erez Zadok <e...@cs.sunysb.edu>
Date:   Tue Nov 19 18:59:47 2013 -0500

    patch wrapfs-copyright-update.patch

commit fbac16e68d15cb88940793277200faff12a987c1
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 67b0193ca80e5bc3783015546e1887b42529f541
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 e790bb79dee8b0e5e551407effefb26d67311db9
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 bb52b29fe2f3d8866490a6a6405a28e4efe66961
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 3b4111332dac0cc636f93e890b1638567ec655c4
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 ab448ed19bfafd3319b5df61c3e64cf60473ec01
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 abc797fe073622a6ad602671cf5ff6f0443d67d3
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 cffa2d1f11e26a06b97a3bd6b3a95cbdaeb68551
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 db8b13ef5b2a0d9d60e0c6d794679c12c01780c9
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 f56de4ce5715fa8d84a3ae26b6df691e8e089d64
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 3e0009626cb58b1e4ccbc0bd6d5a932a0d218d3a
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 cca2e338037ec47583178391442bac6959a26c82
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 ec544d8ab20ccbe8d8e87eabe1d360ce628153f7
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 a428491482995551817ac6772de413e1d64f6bd5
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 53fa2b10553fa2d06f83776887906d6973b6ba31
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 d9d7564257b7f2227f9b0b8622f6f5791ee55c5f
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 12be8f91e3eda74720c7ea0b28b691620fc9f84f
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 b0fe5a62a094e24f2e135cb1ba5bb7b3b4081819
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 9e98cde39b62810f4aa920fa004fae8825a5400c
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 63734c4aa145cbc93e0910c641b244e157fc0769
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 31ad7db444448853ad76a54209d8ea11ecdff0f2
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 d7f33e2648413b885977c86c361cc6eef123f59c
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 98caa5f970a0a8fe48f5d71ca1f45d2f45eee231
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 b4e0b55b4add440d459943f9d2d0e9e76ac85e80
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 efc90a2a996cddd5db5ef84c46c030485ad91dc7
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 b842a0b45e656afe19ab6af768a5fa299b6e3056
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 ea51bd95699cbfe978a788213008b66480bd030a
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 060112d094b43e05ad3791667730e7eee48337af
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 5061837881fadfe50465941336af9d8900b88b39
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 6866f2874c604aaeb8ef64d074be829e8bbb6bed
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 93d7aa0534d9b80d8c9b0d55cd05c76b63652640
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 6c0b468fb6a8f280c7ac571d1e89b6a13636f013
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 c56411e459e8f091fa87c0e8589aafc2c46cd2ec
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 eef7eeb99ab0034385e085a8d8a3ed67f64c2773
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 7905be628b39d2c3a3fb23180c970dc202ebe197
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 9e26e2049a631718151c1eb423cd9e5a8e69f37f
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 77ebb583a1325bd1ad3024ef241232a0b69f535b
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 6f24fa1c56cebe823386ad3e7d19e44e467af995
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 551da929a2dc47dee37ff784272a377a6da999b0
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 51858621b1b875ae02f775f8d3265afe124a1a6c
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 4835de59addd6b984facefb9b0d335226abc7d5b
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 befb51047d72574b94111960a57df6332a9a8297
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 9bb868738b53df07b7da12955947b36e5ac8853b
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 9b6c4829e642262a19817543d477acf608924a9b
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 d9d9ec35837e305029a54d18616a5ded8d327d39
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 789039fd4289286a8e14cf5e27e2eda92552a4e9
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 8b830377d643f72f77b3bd70a89c253ce22d63ef
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 82f56ade7f53a06d23527d736998fde18e4fa57c
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 c4a7d48eb6b104daeba2dda6132781b82b05970c
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 71e7a4201ab8aa24683418f243efc19ee33c96f6
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 5720f5a924c798e530d18dfeecda218b51a76450
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 5010e4357d793208bb0a771f35498d7d9d3bd05a
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 76a0579c1beae36db8d50604de3a0579ad98999b
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 bbfbef71d7b27e68cd480d42cae795d7db4229c5
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 cfab2d55f717681187f15d4dec4c2c6aad655ad4
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 76528e2d673a72cc656180a7d38e31876183e651
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 172df233fd332b6d2e32d9bfdcad17c4507b4a1f
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 384af2c3c97d6e3bc319de50f31160bf03f3352e
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 5cda9396b66f27563175c3071e277df10cf50ad5
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 24c5f6670184c250101aa534c0f40357418ff7b8
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 0fa41f6913bda5c0121e4f2393bf5909fe27a7aa
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 e62f4225b398f1a1d2208bac18b7c415ef6b6abe
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 7845f5e25669106ecf4c7a3c4483432a315c8764
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 dee0781719faf741ef30e930a6db5e803df393b6
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 f63afba3565ccddda4e3df5a57c422b886e2afbb
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 2af91bc8177bf310eb46ccd31dc0eccb049c6633
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 f64d0b3445fda3ee1f557f34f0b49538a15db990
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 648d744eff1aedea4ffe49dfca07aa465669e1f4
Author: Sasha Levin <sasha.le...@oracle.com>
Date:   Wed May 11 00:10:35 2016 -0400

    Linux 4.1.24
    
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit 8e8ad4a07714556769f0bc5496b69c63b0fc902d
Author: Tony Luck <tony.l...@intel.com>
Date:   Thu Apr 14 10:21:52 2016 -0700

    x86 EDAC, sb_edac.c: Repair damage introduced when "fixing" channel address
    
    [ Upstream commit ff15e95c82768d589957dbb17d7eb7dba7904659 ]
    
    In commit:
    
      eb1af3b71f9d ("Fix computation of channel address")
    
    I switched the "sck_way" variable from holding the log2 value read
    from the h/w to instead be the actual number. Unfortunately it
    is needed in log2 form when used to shift the address.
    
    Tested-by: Patrick Geary <patri...@supermicro.com>
    Signed-off-by: Tony Luck <tony.l...@intel.com>
    Acked-by: Mauro Carvalho Chehab <mche...@osg.samsung.com>
    Cc: Aristeu Rozanski <aroza...@redhat.com>
    Cc: Borislav Petkov <b...@alien8.de>
    Cc: Linus Torvalds <torva...@linux-foundation.org>
    Cc: Peter Zijlstra <pet...@infradead.org>
    Cc: Thomas Gleixner <t...@linutronix.de>
    Cc: linux-e...@vger.kernel.org
    Cc: sta...@vger.kernel.org
    Fixes: eb1af3b71f9d ("Fix computation of channel address")
    Signed-off-by: Ingo Molnar <mi...@kernel.org>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit 936d0871135e41fba0dc15095319ca106f55a584
Author: Jan Beulich <jbeul...@suse.com>
Date:   Thu Apr 21 00:27:04 2016 -0600

    x86/mm/xen: Suppress hugetlbfs in PV guests
    
    [ Upstream commit 103f6112f253017d7062cd74d17f4a514ed4485c ]
    
    Huge pages are not normally available to PV guests. Not suppressing
    hugetlbfs use results in an endless loop of page faults when user mode
    code tries to access a hugetlbfs mapped area (since the hypervisor
    denies such PTEs to be created, but error indications can't be
    propagated out of xen_set_pte_at(), just like for various of its
    siblings), and - once killed in an oops like this:
    
      kernel BUG at .../fs/hugetlbfs/inode.c:428!
      invalid opcode: 0000 [#1] SMP
      ...
      RIP: e030:[<ffffffff811c333b>]  [<ffffffff811c333b>] 
remove_inode_hugepages+0x25b/0x320
      ...
      Call Trace:
       [<ffffffff811c3415>] hugetlbfs_evict_inode+0x15/0x40
       [<ffffffff81167b3d>] evict+0xbd/0x1b0
       [<ffffffff8116514a>] __dentry_kill+0x19a/0x1f0
       [<ffffffff81165b0e>] dput+0x1fe/0x220
       [<ffffffff81150535>] __fput+0x155/0x200
       [<ffffffff81079fc0>] task_work_run+0x60/0xa0
       [<ffffffff81063510>] do_exit+0x160/0x400
       [<ffffffff810637eb>] do_group_exit+0x3b/0xa0
       [<ffffffff8106e8bd>] get_signal+0x1ed/0x470
       [<ffffffff8100f854>] do_signal+0x14/0x110
       [<ffffffff810030e9>] prepare_exit_to_usermode+0xe9/0xf0
       [<ffffffff814178a5>] retint_user+0x8/0x13
    
    This is CVE-2016-3961 / XSA-174.
    
    Reported-by: Vitaly Kuznetsov <vkuzn...@redhat.com>
    Signed-off-by: Jan Beulich <jbeul...@suse.com>
    Cc: Andrew Morton <a...@linux-foundation.org>
    Cc: Andy Lutomirski <l...@amacapital.net>
    Cc: Boris Ostrovsky <boris.ostrov...@oracle.com>
    Cc: Borislav Petkov <b...@alien8.de>
    Cc: Brian Gerst <brge...@gmail.com>
    Cc: David Vrabel <david.vra...@citrix.com>
    Cc: Denys Vlasenko <dvlas...@redhat.com>
    Cc: H. Peter Anvin <h...@zytor.com>
    Cc: Juergen Gross <jgr...@suse.com>
    Cc: Linus Torvalds <torva...@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcg...@suse.com>
    Cc: Peter Zijlstra <pet...@infradead.org>
    Cc: Thomas Gleixner <t...@linutronix.de>
    Cc: Toshi Kani <toshi.k...@hp.com>
    Cc: sta...@vger.kernel.org
    Cc: xen-devel <xen-de...@lists.xenproject.org>
    Link: 
http://lkml.kernel.org/r/57188ed802000078000e4...@prv-mh.provo.novell.com
    Signed-off-by: Ingo Molnar <mi...@kernel.org>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit 5a1b27489677535af7cf2ef082d0521f32fa145b
Author: Dominik Dingel <din...@linux.vnet.ibm.com>
Date:   Fri Jul 17 16:23:39 2015 -0700

    s390/hugetlb: add hugepages_supported define
    
    [ Upstream commit 7f9be77555bb2e52de84e9dddf7b4eb20cc6e171 ]
    
    On s390 we only can enable hugepages if the underlying hardware/hypervisor
    also does support this.  Common code now would assume this to be
    signaled by setting HPAGE_SHIFT to 0.  But on s390, where we only
    support one hugepage size, there is a link between HPAGE_SHIFT and
    pageblock_order.
    
    So instead of setting HPAGE_SHIFT to 0, we will implement the check for
    the hardware capability.
    
    Signed-off-by: Dominik Dingel <din...@linux.vnet.ibm.com>
    Acked-by: Martin Schwidefsky <schwidef...@de.ibm.com>
    Cc: Heiko Carstens <heiko.carst...@de.ibm.com>
    Cc: Christian Borntraeger <borntrae...@de.ibm.com>
    Cc: Michael Holzheu <holz...@linux.vnet.ibm.com>
    Cc: Gerald Schaefer <gerald.schae...@de.ibm.com>
    Signed-off-by: Andrew Morton <a...@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit ec8d85066c3a598ba747f578232d3dc89b33fa13
Author: Dominik Dingel <din...@linux.vnet.ibm.com>
Date:   Fri Jul 17 16:23:37 2015 -0700

    mm: hugetlb: allow hugepages_supported to be architecture specific
    
    [ Upstream commit 2531c8cf56a640cd7d17057df8484e570716a450 ]
    
    s390 has a constant hugepage size, by setting HPAGE_SHIFT we also change
    e.g. the pageblock_order, which should be independent in respect to
    hugepage support.
    
    With this patch every architecture is free to define how to check
    for hugepage support.
    
    Signed-off-by: Dominik Dingel <din...@linux.vnet.ibm.com>
    Acked-by: Martin Schwidefsky <schwidef...@de.ibm.com>
    Cc: Heiko Carstens <heiko.carst...@de.ibm.com>
    Cc: Christian Borntraeger <borntrae...@de.ibm.com>
    Cc: Michael Holzheu <holz...@linux.vnet.ibm.com>
    Cc: Gerald Schaefer <gerald.schae...@de.ibm.com>
    Signed-off-by: Andrew Morton <a...@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit b9a11c92d2060b6bafa8babb890d9e711e8b0f5e
Author: Huacai Chen <che...@lemote.com>
Date:   Tue Apr 19 19:19:11 2016 +0800

    drm: Loongson-3 doesn't fully support wc memory
    
    [ Upstream commit 221004c66a58949a0f25c937a6789c0839feb530 ]
    
    Signed-off-by: Huacai Chen <che...@lemote.com>
    Cc: sta...@vger.kernel.org
    Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
    Signed-off-by: Dave Airlie <airl...@redhat.com>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

commit 2719d3c05d4c93054e7c5838cc5b1906f72b465e
Author: Jérôme Glisse <jgli...@redhat.com>
Date:   Tue Apr 19 09:07:50 2016 -0400

    drm/radeon: forbid mapping of userptr bo through radeon device file
    
    [ Upstream commit b5dcec693f87cb8475f2291c0075b2422addd3d6 ]
    
    Allowing userptr bo which are basicly a list of page from some vma
    (so either anonymous page or file backed page) would lead to serious
    corruption of kernel structures and counters (because we overwrite
    the page->mapping field when mapping buffer).
    
    This will already block if the buffer was populated before anyone does
    try to mmap it because then TTM_PAGE_FLAG_SG would be set in in the
    ttm_tt flags. But that flag is check before ttm_tt_populate in the ttm
    vm fault handler.
    
    So to be safe just add a check to verify_access() callback.
    
    Reviewed-by: Christian König <christian.koe...@amd.com>
    Signed-off-by: Jérôme Glisse <jgli...@redhat.com>
    Cc: <sta...@vger.kernel.org>
    Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
    Signed-off-by: Sasha Levin <sasha.le...@oracle.com>

diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt 
b/Documentation/devicetree/bindings/arm/omap/omap.txt
index 4f6a82c..cbe35b3 100644
--- a/Documentation/devicetree/bindings/arm/omap/omap.txt
+++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
@@ -23,6 +23,7 @@ Optional properties:
   during suspend.
 - ti,no-reset-on-init: When present, the module should not be reset at init
 - ti,no-idle-on-init: When present, the module should not be idled at init
+- ti,no-idle: When present, the module is never allowed to idle.
 
 Example:
 
diff --git a/Documentation/filesystems/efivarfs.txt 
b/Documentation/filesystems/efivarfs.txt
index c477af0..686a64b 100644
--- a/Documentation/filesystems/efivarfs.txt
+++ b/Documentation/filesystems/efivarfs.txt
@@ -14,3 +14,10 @@ filesystem.
 efivarfs is typically mounted like this,
 
        mount -t efivarfs none /sys/firmware/efi/efivars
+
+Due to the presence of numerous firmware bugs where removing non-standard
+UEFI variables causes the system firmware to fail to POST, efivarfs
+files that are not well-known standardized variables are created
+as immutable files.  This doesn't prevent removal - "chattr -i" will work -
+but it does prevent this kind of failure from being accomplished
+accidentally.
diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index cd03a0f..7bcd7a2 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3808,6 +3808,8 @@ bytes respectively. Such letter suffixes can also be 
entirely omitted.
                                        sector if the number is odd);
                                i = IGNORE_DEVICE (don't bind to this
                                        device);
+                               j = NO_REPORT_LUNS (don't use report luns
+                                       command, uas only);
                                l = NOT_LOCKABLE (don't try to lock and
                                        unlock ejectable media);
                                m = MAX_SECTORS_64 (don't transfer more
diff --git a/Documentation/virtual/kvm/mmu.txt 
b/Documentation/virtual/kvm/mmu.txt
index c59bd9b..4176ab0 100644
--- a/Documentation/virtual/kvm/mmu.txt
+++ b/Documentation/virtual/kvm/mmu.txt
@@ -352,7 +352,8 @@ In the first case there are two additional complications:
 - if CR4.SMEP is enabled: since we've turned the page into a kernel page,
   the kernel may now execute it.  We handle this by also setting spte.nx.
   If we get a user fetch or read fault, we'll change spte.u=1 and
-  spte.nx=gpte.nx back.
+  spte.nx=gpte.nx back.  For this to work, KVM forces EFER.NX to 1 when
+  shadow paging is in use.
 - if CR4.SMAP is disabled: since the page has been changed to a kernel
   page, it can not be reused when CR4.SMAP is enabled. We set
   CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note,
diff --git a/MAINTAINERS b/MAINTAINERS
index 5e24680..326fac8 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9533,9 +9533,11 @@ S:       Maintained
 F:     drivers/net/ethernet/dlink/sundance.c
 
 SUPERH
+M:     Yoshinori Sato <ys...@users.sourceforge.jp>
+M:     Rich Felker <dal...@libc.org>
 L:     linux...@vger.kernel.org
 Q:     http://patchwork.kernel.org/project/linux-sh/list/
-S:     Orphan
+S:     Maintained
 F:     Documentation/sh/
 F:     arch/sh/
 F:     drivers/sh/
diff --git a/Makefile b/Makefile
index 39be1bb..df1d8b1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 1
-SUBLEVEL = 20
+SUBLEVEL = 24
 EXTRAVERSION =
 NAME = Series 4800
 
diff --git a/arch/arm/boot/dts/armada-375.dtsi 
b/arch/arm/boot/dts/armada-375.dtsi
index f076ff8..07f61bb 100644
--- a/arch/arm/boot/dts/armada-375.dtsi
+++ b/arch/arm/boot/dts/armada-375.dtsi
@@ -508,7 +508,7 @@
                        };
 
                        sata@a0000 {
-                               compatible = "marvell,orion-sata";
+                               compatible = "marvell,armada-370-sata";
                                reg = <0xa0000 0x5000>;
                                interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gateclk 14>, <&gateclk 20>;
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index dfcc0dd..bc04b75 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1411,6 +1411,16 @@
                               0x48485200 0x2E00>;
                        #address-cells = <1>;
                        #size-cells = <1>;
+
+                       /*
+                        * Do not allow gating of cpsw clock as workaround
+                        * for errata i877. Keeping internal clock disabled
+                        * causes the device switching characteristics
+                        * to degrade over time and eventually fail to meet
+                        * the data manual delay time/skew specs.
+                        */
+                       ti,no-idle;
+
                        /*
                         * rx_thresh_pend
                         * rx_pend
diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
index c25ef3e..e3789fb 100644
--- a/arch/arm/include/asm/psci.h
+++ b/arch/arm/include/asm/psci.h
@@ -37,7 +37,7 @@ struct psci_operations {
 extern struct psci_operations psci_ops;
 extern struct smp_operations psci_smp_ops;
 
-#ifdef CONFIG_ARM_PSCI
+#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI)
 int psci_init(void);
 bool psci_smp_available(void);
 #else
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 5286e77..dee6831 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -876,6 +876,36 @@ static int _init_opt_clks(struct omap_hwmod *oh)
        return ret;
 }
 
+static void _enable_optional_clocks(struct omap_hwmod *oh)
+{
+       struct omap_hwmod_opt_clk *oc;
+       int i;
+
+       pr_debug("omap_hwmod: %s: enabling optional clocks\n", oh->name);
+
+       for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
+               if (oc->_clk) {
+                       pr_debug("omap_hwmod: enable %s:%s\n", oc->role,
+                                __clk_get_name(oc->_clk));
+                       clk_enable(oc->_clk);
+               }
+}
+
+static void _disable_optional_clocks(struct omap_hwmod *oh)
+{
+       struct omap_hwmod_opt_clk *oc;
+       int i;
+
+       pr_debug("omap_hwmod: %s: disabling optional clocks\n", oh->name);
+
+       for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
+               if (oc->_clk) {
+                       pr_debug("omap_hwmod: disable %s:%s\n", oc->role,
+                                __clk_get_name(oc->_clk));
+                       clk_disable(oc->_clk);
+               }
+}
+
 /**
  * _enable_clocks - enable hwmod main clock and interface clocks
  * @oh: struct omap_hwmod *
@@ -903,6 +933,9 @@ static int _enable_clocks(struct omap_hwmod *oh)
                        clk_enable(os->_clk);
        }
 
+       if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
+               _enable_optional_clocks(oh);
+
        /* The opt clocks are controlled by the device driver. */
 
        return 0;
@@ -934,41 +967,14 @@ static int _disable_clocks(struct omap_hwmod *oh)
                        clk_disable(os->_clk);
        }
 
+       if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
+               _disable_optional_clocks(oh);
+
        /* The opt clocks are controlled by the device driver. */
 
        return 0;
 }
 
-static void _enable_optional_clocks(struct omap_hwmod *oh)
-{
-       struct omap_hwmod_opt_clk *oc;
-       int i;
-
-       pr_debug("omap_hwmod: %s: enabling optional clocks\n", oh->name);
-
-       for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
-               if (oc->_clk) {
-                       pr_debug("omap_hwmod: enable %s:%s\n", oc->role,
-                                __clk_get_name(oc->_clk));
-                       clk_enable(oc->_clk);
-               }
-}
-
-static void _disable_optional_clocks(struct omap_hwmod *oh)
-{
-       struct omap_hwmod_opt_clk *oc;
-       int i;
-
-       pr_debug("omap_hwmod: %s: disabling optional clocks\n", oh->name);
-
-       for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++)
-               if (oc->_clk) {
-                       pr_debug("omap_hwmod: disable %s:%s\n", oc->role,
-                                __clk_get_name(oc->_clk));
-                       clk_disable(oc->_clk);
-               }
-}
-
 /**
  * _omap4_enable_module - enable CLKCTRL modulemode on OMAP4
  * @oh: struct omap_hwmod *
@@ -1396,9 +1402,7 @@ static void _enable_sysc(struct omap_hwmod *oh)
            (sf & SYSC_HAS_CLOCKACTIVITY))
                _set_clockactivity(oh, oh->class->sysc->clockact, &v);
 
-       /* If the cached value is the same as the new value, skip the write */
-       if (oh->_sysc_cache != v)
-               _write_sysconfig(v, oh);
+       _write_sysconfig(v, oh);
 
        /*
         * Set the autoidle bit only after setting the smartidle bit
@@ -1461,7 +1465,9 @@ static void _idle_sysc(struct omap_hwmod *oh)
                _set_master_standbymode(oh, idlemode, &v);
        }
 
-       _write_sysconfig(v, oh);
+       /* If the cached value is the same as the new value, skip the write */
+       if (oh->_sysc_cache != v)
+               _write_sysconfig(v, oh);
 }
 
 /**
@@ -2180,6 +2186,11 @@ static int _enable(struct omap_hwmod *oh)
  */
 static int _idle(struct omap_hwmod *oh)
 {
+       if (oh->flags & HWMOD_NO_IDLE) {
+               oh->_int_flags |= _HWMOD_SKIP_ENABLE;
+               return 0;
+       }
+
        pr_debug("omap_hwmod: %s: idling\n", oh->name);
 
        if (oh->_state != _HWMOD_STATE_ENABLED) {
@@ -2484,6 +2495,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
                        oh->flags |= HWMOD_INIT_NO_RESET;
                if (of_find_property(np, "ti,no-idle-on-init", NULL))
                        oh->flags |= HWMOD_INIT_NO_IDLE;
+               if (of_find_property(np, "ti,no-idle", NULL))
+                       oh->flags |= HWMOD_NO_IDLE;
        }
 
        oh->_state = _HWMOD_STATE_INITIALIZED;
@@ -2610,7 +2623,7 @@ static void __init _setup_postsetup(struct omap_hwmod *oh)
         * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
         * it should be set by the core code as a runtime flag during startup
         */
-       if ((oh->flags & HWMOD_INIT_NO_IDLE) &&
+       if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
            (postsetup_state == _HWMOD_STATE_IDLE)) {
                oh->_int_flags |= _HWMOD_SKIP_ENABLE;
                postsetup_state = _HWMOD_STATE_ENABLED;
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
index 9611c91..ec289c5 100644
--- a/arch/arm/mach-omap2/omap_hwmod.h
+++ b/arch/arm/mach-omap2/omap_hwmod.h
@@ -517,6 +517,10 @@ struct omap_hwmod_omap4_prcm {
  * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up 
  *     events by calling _reconfigure_io_chain() when a device is enabled
  *     or idled.
+ * HWMOD_OPT_CLKS_NEEDED: The optional clocks are needed for the module to
+ *     operate and they need to be handled at the same time as the main_clk.
+ * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain
+ *     IPs like CPSW on DRA7, where clocks to this module cannot be disabled.
  */
 #define HWMOD_SWSUP_SIDLE                      (1 << 0)
 #define HWMOD_SWSUP_MSTANDBY                   (1 << 1)
@@ -532,6 +536,8 @@ struct omap_hwmod_omap4_prcm {
 #define HWMOD_FORCE_MSTANDBY                   (1 << 11)
 #define HWMOD_SWSUP_SIDLE_ACT                  (1 << 12)
 #define HWMOD_RECONFIG_IO_CHAIN                        (1 << 13)
+#define HWMOD_OPT_CLKS_NEEDED                  (1 << 14)
+#define HWMOD_NO_IDLE                          (1 << 15)
 
 /*
  * omap_hwmod._int_flags definitions
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
index 8e2a7ac..1b9f052 100644
--- a/arch/arm/mach-omap2/sleep34xx.S
+++ b/arch/arm/mach-omap2/sleep34xx.S
@@ -436,12 +436,14 @@ skipl2dis:
        and     r1, #0x700
        cmp     r1, #0x300
        beq     l2_inv_gp
+       adr     r0, l2_inv_api_params_offset
+       ldr     r3, [r0]
+       add     r3, r3, r0              @ r3 points to dummy parameters
        mov     r0, #40                 @ set service ID for PPA
        mov     r12, r0                 @ copy secure Service ID in r12
        mov     r1, #0                  @ set task id for ROM code in r1
        mov     r2, #4                  @ set some flags in r2, r6
        mov     r6, #0xff
-       adr     r3, l2_inv_api_params   @ r3 points to dummy parameters
        dsb                             @ data write barrier
        dmb                             @ data memory barrier
        smc     #1                      @ call SMI monitor (smi #1)
@@ -475,8 +477,8 @@ skipl2dis:
        b       logic_l1_restore
 
        .align
-l2_inv_api_params:
-       .word   0x1, 0x00
+l2_inv_api_params_offset:
+       .long   l2_inv_api_params - .
 l2_inv_gp:
        /* Execute smi to invalidate L2 cache */
        mov r12, #0x1                   @ set up to invalidate L2
@@ -531,6 +533,10 @@ l2dis_3630_offset:
 l2dis_3630:
        .word   0
 
+       .data
+l2_inv_api_params:
+       .word   0x1, 0x00
+
 /*
  * Internal functions
  */
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 3258174..f462e6e 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -18,6 +18,8 @@ GZFLAGS               :=-9
 KBUILD_DEFCONFIG := defconfig
 
 KBUILD_CFLAGS  += -mgeneral-regs-only
+KBUILD_CFLAGS  += $(call cc-option, -mpc-relative-literal-loads)
+
 ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
 KBUILD_CPPFLAGS        += -mbig-endian
 AS             += -EB
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index cf73194..526a9cb 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -33,7 +33,7 @@
 /*
  * VMALLOC and SPARSEMEM_VMEMMAP ranges.
  *
- * VMEMAP_SIZE: allows the whole VA space to be covered by a struct page array
+ * VMEMAP_SIZE: allows the whole linear region to be covered by a struct page 
array
  *     (rounded up to PUD_SIZE).
  * VMALLOC_START: beginning of the kernel VA space
  * VMALLOC_END: extends to the available space below vmmemmap, PCI I/O space,
@@ -43,7 +43,9 @@
 #define VMALLOC_START          (UL(0xffffffffffffffff) << VA_BITS)
 #define VMALLOC_END            (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K)
 
-#define vmemmap                        ((struct page *)(VMALLOC_END + SZ_64K))
+#define VMEMMAP_START          (VMALLOC_END + SZ_64K)
+#define vmemmap                        ((struct page *)VMEMMAP_START - \
+                                SECTION_ALIGN_DOWN(memstart_addr >> 
PAGE_SHIFT))
 
 #define FIRST_USER_ADDRESS     0UL
 
diff --git a/arch/arm64/kernel/debug-monitors.c 
b/arch/arm64/kernel/debug-monitors.c
index b056369..0d1d675 100644
--- a/arch/arm64/kernel/debug-monitors.c
+++ b/arch/arm64/kernel/debug-monitors.c
@@ -184,20 +184,21 @@ static void clear_regs_spsr_ss(struct pt_regs *regs)
 
 /* EL1 Single Step Handler hooks */
 static LIST_HEAD(step_hook);
-static DEFINE_RWLOCK(step_hook_lock);
+static DEFINE_SPINLOCK(step_hook_lock);
 
 void register_step_hook(struct step_hook *hook)
 {
-       write_lock(&step_hook_lock);
-       list_add(&hook->node, &step_hook);
-       write_unlock(&step_hook_lock);
+       spin_lock(&step_hook_lock);
+       list_add_rcu(&hook->node, &step_hook);
+       spin_unlock(&step_hook_lock);
 }
 
 void unregister_step_hook(struct step_hook *hook)
 {
-       write_lock(&step_hook_lock);
-       list_del(&hook->node);
-       write_unlock(&step_hook_lock);
+       spin_lock(&step_hook_lock);
+       list_del_rcu(&hook->node);
+       spin_unlock(&step_hook_lock);
+       synchronize_rcu();
 }
 
 /*
@@ -211,15 +212,15 @@ static int call_step_hook(struct pt_regs *regs, unsigned 
int esr)
        struct step_hook *hook;
        int retval = DBG_HOOK_ERROR;
 
-       read_lock(&step_hook_lock);
+       rcu_read_lock();
 
-       list_for_each_entry(hook, &step_hook, node)     {
+       list_for_each_entry_rcu(hook, &step_hook, node) {
                retval = hook->fn(regs, esr);
                if (retval == DBG_HOOK_HANDLED)
                        break;
        }
 
-       read_unlock(&step_hook_lock);
+       rcu_read_unlock();
 
        return retval;
 }
@@ -271,20 +272,21 @@ static int single_step_handler(unsigned long addr, 
unsigned int esr,
  * Use reader/writer locks instead of plain spinlock.
  */
 static LIST_HEAD(break_hook);
-static DEFINE_RWLOCK(break_hook_lock);
+static DEFINE_SPINLOCK(break_hook_lock);
 
 void register_break_hook(struct break_hook *hook)
 {
-       write_lock(&break_hook_lock);
-       list_add(&hook->node, &break_hook);
-       write_unlock(&break_hook_lock);
+       spin_lock(&break_hook_lock);
+       list_add_rcu(&hook->node, &break_hook);
+       spin_unlock(&break_hook_lock);
 }
 
 void unregister_break_hook(struct break_hook *hook)
 {
-       write_lock(&break_hook_lock);
-       list_del(&hook->node);
-       write_unlock(&break_hook_lock);
+       spin_lock(&break_hook_lock);
+       list_del_rcu(&hook->node);
+       spin_unlock(&break_hook_lock);
+       synchronize_rcu();
 }
 
 static int call_break_hook(struct pt_regs *regs, unsigned int esr)
@@ -292,11 +294,11 @@ static int call_break_hook(struct pt_regs *regs, unsigned 
int esr)
        struct break_hook *hook;
        int (*fn)(struct pt_regs *regs, unsigned int esr) = NULL;
 
-       read_lock(&break_hook_lock);
-       list_for_each_entry(hook, &break_hook, node)
+       rcu_read_lock();
+       list_for_each_entry_rcu(hook, &break_hook, node)
                if ((esr & hook->esr_mask) == hook->esr_val)
                        fn = hook->fn;
-       read_unlock(&break_hook_lock);
+       rcu_read_unlock();
 
        return fn ? fn(regs, esr) : DBG_HOOK_ERROR;
 }
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index ad87ce8..ae8f940 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -312,8 +312,8 @@ void __init mem_init(void)
                  "      .data : 0x%p" " - 0x%p" "   (%6ld KB)\n",
                  MLG(VMALLOC_START, VMALLOC_END),
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
-                 MLG((unsigned long)vmemmap,
-                     (unsigned long)vmemmap + VMEMMAP_SIZE),
+                 MLG(VMEMMAP_START,
+                     VMEMMAP_START + VMEMMAP_SIZE),
                  MLM((unsigned long)virt_to_page(PAGE_OFFSET),
                      (unsigned long)virt_to_page(high_memory)),
 #endif
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c 
b/arch/avr32/mach-at32ap/at32ap700x.c
index 1d8b147..bbf777c 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -1328,6 +1328,21 @@ static struct clk atmel_mci0_pclk = {
        .index          = 9,
 };
 
+static bool at32_mci_dma_filter(struct dma_chan *chan, void *pdata)
+{
+       struct mci_dma_data *sl = pdata;
+
+       if (!sl)
+               return false;
+
+       if (find_slave_dev(sl) == chan->device->dev) {
+               chan->private = slave_data_ptr(sl);
+               return true;
+       }
+
+       return false;
+}
+
 struct platform_device *__init
 at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
 {
@@ -1362,6 +1377,7 @@ at32_add_device_mci(unsigned int id, struct 
mci_platform_data *data)
        slave->sdata.dst_master = 0;
 
        data->dma_slave = slave;
+       data->dma_filter = at32_mci_dma_filter;
 
        if (platform_device_add_data(pdev, data,
                                sizeof(struct mci_platform_data)))
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index a3b1ffe..c99e8a3 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2103,11 +2103,11 @@ config CPU_R4K_CACHE_TLB
 
 config MIPS_MT_SMP
        bool "MIPS MT SMP support (1 TC on each available VPE)"
-       depends on SYS_SUPPORTS_MULTITHREADING
+       depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6
        select CPU_MIPSR2_IRQ_VI
        select CPU_MIPSR2_IRQ_EI
        select SYNC_R4K
-       select MIPS_GIC_IPI
+       select MIPS_GIC_IPI if MIPS_GIC
        select MIPS_MT
        select SMP
        select SMP_UP
@@ -2204,8 +2204,8 @@ config MIPS_VPE_APSP_API_MT
 
 config MIPS_CMP
        bool "MIPS CMP framework support (DEPRECATED)"
-       depends on SYS_SUPPORTS_MIPS_CMP
-       select MIPS_GIC_IPI
+       depends on SYS_SUPPORTS_MIPS_CMP && !CPU_MIPSR6
+       select MIPS_GIC_IPI if MIPS_GIC
        select SMP
        select SYNC_R4K
        select SYS_SUPPORTS_SMP
@@ -2221,11 +2221,11 @@ config MIPS_CMP
 
 config MIPS_CPS
        bool "MIPS Coherent Processing System support"
-       depends on SYS_SUPPORTS_MIPS_CPS && !64BIT
+       depends on SYS_SUPPORTS_MIPS_CPS && !CPU_MIPSR6
        select MIPS_CM
        select MIPS_CPC
        select MIPS_CPS_PM if HOTPLUG_CPU
-       select MIPS_GIC_IPI
+       select MIPS_GIC_IPI if MIPS_GIC
        select SMP
        select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
        select SYS_SUPPORTS_HOTPLUG_CPU
@@ -2244,6 +2244,7 @@ config MIPS_CPS_PM
        bool
 
 config MIPS_GIC_IPI
+       depends on MIPS_GIC
        bool
 
 config MIPS_CM
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index d0744cc..3cef551 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -120,6 +120,7 @@ static inline void calculate_cpu_foreign_map(void)
        cpumask_t temp_foreign_map;
 
        /* Re-calculate the mask */
+       cpumask_clear(&temp_foreign_map);
        for_each_online_cpu(i) {
                core_present = 0;
                for_each_cpu(k, &temp_foreign_map)
diff --git a/arch/parisc/include/asm/uaccess.h 
b/arch/parisc/include/asm/uaccess.h
index 0abdd4c..1960b87 100644
--- a/arch/parisc/include/asm/uaccess.h
+++ b/arch/parisc/include/asm/uaccess.h
@@ -76,6 +76,7 @@ struct exception_table_entry {
  */
 struct exception_data {
        unsigned long fault_ip;
+       unsigned long fault_gp;
        unsigned long fault_space;
        unsigned long fault_addr;
 };
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c
index 59001ce..c972e65 100644
--- a/arch/parisc/kernel/asm-offsets.c
+++ b/arch/parisc/kernel/asm-offsets.c
@@ -291,6 +291,7 @@ int main(void)
        DEFINE(ASM_PT_INITIAL, PT_INITIAL);
        BLANK();
        DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip));
+       DEFINE(EXCDATA_GP, offsetof(struct exception_data, fault_gp));
        DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space));
        DEFINE(EXCDATA_ADDR, offsetof(struct exception_data, fault_addr));
        BLANK();
diff --git a/arch/parisc/kernel/parisc_ksyms.c 
b/arch/parisc/kernel/parisc_ksyms.c
index 568b2c6..3cad8aa 100644
--- a/arch/parisc/kernel/parisc_ksyms.c
+++ b/arch/parisc/kernel/parisc_ksyms.c
@@ -47,11 +47,11 @@ EXPORT_SYMBOL(__cmpxchg_u64);
 EXPORT_SYMBOL(lclear_user);
 EXPORT_SYMBOL(lstrnlen_user);
 
-/* Global fixups */
-extern void fixup_get_user_skip_1(void);
-extern void fixup_get_user_skip_2(void);
-extern void fixup_put_user_skip_1(void);
-extern void fixup_put_user_skip_2(void);
+/* Global fixups - defined as int to avoid creation of function pointers */
+extern int fixup_get_user_skip_1;
+extern int fixup_get_user_skip_2;
+extern int fixup_put_user_skip_1;
+extern int fixup_put_user_skip_2;
 EXPORT_SYMBOL(fixup_get_user_skip_1);
 EXPORT_SYMBOL(fixup_get_user_skip_2);
 EXPORT_SYMBOL(fixup_put_user_skip_1);
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 7f67c4c..bbf2265 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -798,6 +798,9 @@ void notrace handle_interruption(int code, struct pt_regs 
*regs)
 
            if (fault_space == 0 && !in_atomic())
            {
+               /* Clean up and return if in exception table. */
+               if (fixup_exception(regs))
+                       return;
                pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC);
                parisc_terminate("Kernel Fault", regs, code, fault_address);
            }
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S
index 536ef66..1052b74 100644
--- a/arch/parisc/lib/fixup.S
+++ b/arch/parisc/lib/fixup.S
@@ -26,6 +26,7 @@
 
 #ifdef CONFIG_SMP
        .macro  get_fault_ip t1 t2
+       loadgp
        addil LT%__per_cpu_offset,%r27
        LDREG RT%__per_cpu_offset(%r1),\t1
        /* t2 = smp_processor_id() */
@@ -40,14 +41,19 @@
        LDREG RT%exception_data(%r1),\t1
        /* t1 = this_cpu_ptr(&exception_data) */
        add,l \t1,\t2,\t1
+       /* %r27 = t1->fault_gp - restore gp */
+       LDREG EXCDATA_GP(\t1), %r27
        /* t1 = t1->fault_ip */
        LDREG EXCDATA_IP(\t1), \t1
        .endm
 #else
        .macro  get_fault_ip t1 t2
+       loadgp
        /* t1 = this_cpu_ptr(&exception_data) */
        addil LT%exception_data,%r27
        LDREG RT%exception_data(%r1),\t2
+       /* %r27 = t2->fault_gp - restore gp */
+       LDREG EXCDATA_GP(\t2), %r27
        /* t1 = t2->fault_ip */
        LDREG EXCDATA_IP(\t2), \t1
        .endm
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index e5120e6..50d64a7 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -151,6 +151,7 @@ int fixup_exception(struct pt_regs *regs)
                struct exception_data *d;
                d = this_cpu_ptr(&exception_data);
                d->fault_ip = regs->iaoq[0];
+               d->fault_gp = regs->gr[27];
                d->fault_space = regs->isr;
                d->fault_addr = regs->ior;
 
diff --git a/arch/powerpc/include/uapi/asm/cputable.h 
b/arch/powerpc/include/uapi/asm/cputable.h
index de2c0e4..67de80a 100644
--- a/arch/powerpc/include/uapi/asm/cputable.h
+++ b/arch/powerpc/include/uapi/asm/cputable.h
@@ -31,6 +31,7 @@
 #define PPC_FEATURE_PSERIES_PERFMON_COMPAT \
                                        0x00000040
 
+/* Reserved - do not use               0x00000004 */
 #define PPC_FEATURE_TRUE_LE            0x00000002
 #define PPC_FEATURE_PPC_LE             0x00000001
 
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index 59663af..e4f7d4e 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -335,7 +335,7 @@ static void dedotify(Elf64_Sym *syms, unsigned int numsyms, 
char *strtab)
                if (syms[i].st_shndx == SHN_UNDEF) {
                        char *name = strtab + syms[i].st_name;
                        if (name[0] == '.')
-                               memmove(name, name+1, strlen(name));
+                               syms[i].st_name++;
                }
        }
 }
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 308c5e1..abe9cdc 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -149,23 +149,24 @@ static struct ibm_pa_feature {
        unsigned long   cpu_features;   /* CPU_FTR_xxx bit */
        unsigned long   mmu_features;   /* MMU_FTR_xxx bit */
        unsigned int    cpu_user_ftrs;  /* PPC_FEATURE_xxx bit */
+       unsigned int    cpu_user_ftrs2; /* PPC_FEATURE2_xxx bit */
        unsigned char   pabyte;         /* byte number in ibm,pa-features */
        unsigned char   pabit;          /* bit number (big-endian) */
        unsigned char   invert;         /* if 1, pa bit set => clear feature */
 } ibm_pa_features[] __initdata = {
-       {0, 0, PPC_FEATURE_HAS_MMU,     0, 0, 0},
-       {0, 0, PPC_FEATURE_HAS_FPU,     0, 1, 0},
-       {CPU_FTR_CTRL, 0, 0,            0, 3, 0},
-       {CPU_FTR_NOEXECUTE, 0, 0,       0, 6, 0},
-       {CPU_FTR_NODSISRALIGN, 0, 0,    1, 1, 1},
-       {0, MMU_FTR_CI_LARGE_PAGE, 0,   1, 2, 0},
-       {CPU_FTR_REAL_LE, PPC_FEATURE_TRUE_LE, 5, 0, 0},
+       {0, 0, PPC_FEATURE_HAS_MMU, 0,          0, 0, 0},
+       {0, 0, PPC_FEATURE_HAS_FPU, 0,          0, 1, 0},
+       {CPU_FTR_CTRL, 0, 0, 0,                 0, 3, 0},
+       {CPU_FTR_NOEXECUTE, 0, 0, 0,            0, 6, 0},
+       {CPU_FTR_NODSISRALIGN, 0, 0, 0,         1, 1, 1},
+       {0, MMU_FTR_CI_LARGE_PAGE, 0, 0,                1, 2, 0},
+       {CPU_FTR_REAL_LE, 0, PPC_FEATURE_TRUE_LE, 0, 5, 0, 0},
        /*
         * If the kernel doesn't support TM (ie. 
CONFIG_PPC_TRANSACTIONAL_MEM=n),
         * we don't want to turn on CPU_FTR_TM here, so we use CPU_FTR_TM_COMP
         * which is 0 if the kernel doesn't support TM.
         */
-       {CPU_FTR_TM_COMP, 0, 0,         22, 0, 0},
+       {CPU_FTR_TM_COMP, 0, 0, 0,              22, 0, 0},
 };
 
 static void __init scan_features(unsigned long node, const unsigned char *ftrs,
@@ -196,10 +197,12 @@ static void __init scan_features(unsigned long node, 
const unsigned char *ftrs,
                if (bit ^ fp->invert) {
                        cur_cpu_spec->cpu_features |= fp->cpu_features;
                        cur_cpu_spec->cpu_user_features |= fp->cpu_user_ftrs;
+                       cur_cpu_spec->cpu_user_features2 |= fp->cpu_user_ftrs2;
                        cur_cpu_spec->mmu_features |= fp->mmu_features;
                } else {
                        cur_cpu_spec->cpu_features &= ~fp->cpu_features;
                        cur_cpu_spec->cpu_user_features &= ~fp->cpu_user_ftrs;
+                       cur_cpu_spec->cpu_user_features2 &= ~fp->cpu_user_ftrs2;
                        cur_cpu_spec->mmu_features &= ~fp->mmu_features;
                }
        }
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S 
b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index f8338e6..a34e43e 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -1273,6 +1273,20 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
        std     r6, VCPU_ACOP(r9)
        stw     r7, VCPU_GUEST_PID(r9)
        std     r8, VCPU_WORT(r9)
+       /*
+        * Restore various registers to 0, where non-zero values
+        * set by the guest could disrupt the host.
+        */
+       li      r0, 0
+       mtspr   SPRN_IAMR, r0
+       mtspr   SPRN_CIABR, r0
+       mtspr   SPRN_DAWRX, r0
+       mtspr   SPRN_TCSCR, r0
+       mtspr   SPRN_WORT, r0
+       /* Set MMCRS to 1<<31 to freeze and disable the SPMC counters */
+       li      r0, 1
+       sldi    r0, r0, 31
+       mtspr   SPRN_MMCRS, r0
 8:
 
        /* Save and reset AMR and UAMOR before turning on the MMU */
diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h
index 11eae5f..9787b61 100644
--- a/arch/s390/include/asm/hugetlb.h
+++ b/arch/s390/include/asm/hugetlb.h
@@ -14,6 +14,7 @@
 
 #define is_hugepage_only_range(mm, addr, len)  0
 #define hugetlb_free_pgd_range                 free_pgd_range
+#define hugepages_supported()                  (MACHINE_HAS_HPAGE)
 
 void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
                     pte_t *ptep, pte_t pte);
diff --git a/arch/s390/include/asm/mmu_context.h 
b/arch/s390/include/asm/mmu_context.h
index fb1b93e..e485817 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -15,17 +15,25 @@
 static inline int init_new_context(struct task_struct *tsk,
                                   struct mm_struct *mm)
 {
+       spin_lock_init(&mm->context.list_lock);
+       INIT_LIST_HEAD(&mm->context.pgtable_list);
+       INIT_LIST_HEAD(&mm->context.gmap_list);
        cpumask_clear(&mm->context.cpu_attach_mask);
        atomic_set(&mm->context.attach_count, 0);
        mm->context.flush_mm = 0;
-       mm->context.asce_bits = _ASCE_TABLE_LENGTH | _ASCE_USER_BITS;
-       mm->context.asce_bits |= _ASCE_TYPE_REGION3;
 #ifdef CONFIG_PGSTE
        mm->context.alloc_pgste = page_table_allocate_pgste;
        mm->context.has_pgste = 0;
        mm->context.use_skey = 0;
 #endif
-       mm->context.asce_limit = STACK_TOP_MAX;
+       if (mm->context.asce_limit == 0) {
+               /* context created by exec, set asce limit to 4TB */
+               mm->context.asce_bits = _ASCE_TABLE_LENGTH |
+                       _ASCE_USER_BITS | _ASCE_TYPE_REGION3;
+               mm->context.asce_limit = STACK_TOP_MAX;
+       } else if (mm->context.asce_limit == (1UL << 31)) {
+               mm_inc_nr_pmds(mm);
+       }
        crst_table_init((unsigned long *) mm->pgd, pgd_entry_type(mm));
        return 0;
 }
@@ -111,8 +119,6 @@ static inline void activate_mm(struct mm_struct *prev,
 static inline void arch_dup_mmap(struct mm_struct *oldmm,
                                 struct mm_struct *mm)
 {
-       if (oldmm->context.asce_limit < mm->context.asce_limit)
-               crst_table_downgrade(mm, oldmm->context.asce_limit);
 }
 
 static inline void arch_exit_mmap(struct mm_struct *mm)
diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
index a648338..5b7153b 100644
--- a/arch/s390/include/asm/pci.h
+++ b/arch/s390/include/asm/pci.h
@@ -45,7 +45,8 @@ struct zpci_fmb {
        u64 rpcit_ops;
        u64 dma_rbytes;
        u64 dma_wbytes;
-} __packed __aligned(16);
+       u64 pad[2];
+} __packed __aligned(128);
 
 enum zpci_state {
        ZPCI_FN_STATE_RESERVED,
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
index 7b7858f..d7cc79f 100644
--- a/arch/s390/include/asm/pgalloc.h
+++ b/arch/s390/include/asm/pgalloc.h
@@ -100,12 +100,26 @@ static inline void pud_populate(struct mm_struct *mm, 
pud_t *pud, pmd_t *pmd)
 
 static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 {
-       spin_lock_init(&mm->context.list_lock);
-       INIT_LIST_HEAD(&mm->context.pgtable_list);
-       INIT_LIST_HEAD(&mm->context.gmap_list);
-       return (pgd_t *) crst_table_alloc(mm);
+       unsigned long *table = crst_table_alloc(mm);
+
+       if (!table)
+               return NULL;
+       if (mm->context.asce_limit == (1UL << 31)) {
+               /* Forking a compat process with 2 page table levels */
+               if (!pgtable_pmd_page_ctor(virt_to_page(table))) {
+                       crst_table_free(mm, table);
+                       return NULL;
+               }
+       }
+       return (pgd_t *) table;
+}
+
+static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
+{
+       if (mm->context.asce_limit == (1UL << 31))
+               pgtable_pmd_page_dtor(virt_to_page(pgd));
+       crst_table_free(mm, (unsigned long *) pgd);
 }
-#define pgd_free(mm, pgd) crst_table_free(mm, (unsigned long *) pgd)
 
 static inline void pmd_populate(struct mm_struct *mm,
                                pmd_t *pmd, pgtable_t pte)
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c
index 598f023..50a79a5 100644
--- a/arch/s390/pci/pci.c
+++ b/arch/s390/pci/pci.c
@@ -871,8 +871,11 @@ static inline int barsize(u8 size)
 
 static int zpci_mem_init(void)
 {
+       BUILD_BUG_ON(!is_power_of_2(__alignof__(struct zpci_fmb)) ||
+                    __alignof__(struct zpci_fmb) < sizeof(struct zpci_fmb));
+
        zdev_fmb_cache = kmem_cache_create("PCI_FMB_cache", sizeof(struct 
zpci_fmb),
-                               16, 0, NULL);
+                                          __alignof__(struct zpci_fmb), 0, 
NULL);
        if (!zdev_fmb_cache)
                goto error_zdev;
 
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index 29880c9..e22e572 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -133,7 +133,7 @@ void mconsole_proc(struct mc_request *req)
        ptr += strlen("proc");
        ptr = skip_spaces(ptr);
 
-       file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY);
+       file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY, 0);
        if (IS_ERR(file)) {
                mconsole_reply(req, "Failed to open file", 1, 0);
                printk(KERN_ERR "open /proc/%s: %ld\n", ptr, PTR_ERR(file));
diff --git a/arch/x86/crypto/sha-mb/sha1_mb.c b/arch/x86/crypto/sha-mb/sha1_mb.c
index e510b1c..e5b79c1 100644
--- a/arch/x86/crypto/sha-mb/sha1_mb.c
+++ b/arch/x86/crypto/sha-mb/sha1_mb.c
@@ -456,10 +456,10 @@ static int sha_complete_job(struct 
mcryptd_hash_request_ctx *rctx,
 
                        req = cast_mcryptd_ctx_to_req(req_ctx);
                        if (irqs_disabled())
-                               rctx->complete(&req->base, ret);
+                               req_ctx->complete(&req->base, ret);
                        else {
                                local_bh_disable();
-                               rctx->complete(&req->base, ret);
+                               req_ctx->complete(&req->base, ret);
                                local_bh_enable();
                        }
                }
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 72bf268..27e5494 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -511,6 +511,7 @@ ENTRY(ia32_syscall)
         * it is too small to ever cause noticeable irq latency.
         */
        PARAVIRT_ADJUST_EXCEPTION_FRAME
+       ASM_CLAC                        /* Do this early to minimize exposure */
        SWAPGS
        ENABLE_INTERRUPTS(CLBR_NONE)
 
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 976b86a..a197e15 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -640,8 +640,8 @@ static inline void entering_irq(void)
 
 static inline void entering_ack_irq(void)
 {
-       ack_APIC_irq();
        entering_irq();
+       ack_APIC_irq();
 }
 
 static inline void exiting_irq(void)
diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
index 68c0539..7aadd3c 100644
--- a/arch/x86/include/asm/hugetlb.h
+++ b/arch/x86/include/asm/hugetlb.h
@@ -4,6 +4,7 @@
 #include <asm/page.h>
 #include <asm-generic/hugetlb.h>
 
+#define hugepages_supported() cpu_has_pse
 
 static inline int is_hugepage_only_range(struct mm_struct *mm,
                                         unsigned long addr,
diff --git a/arch/x86/include/asm/perf_event.h 
b/arch/x86/include/asm/perf_event.h
index dc0f6ed..5a2ed3e 100644
--- a/arch/x86/include/asm/perf_event.h
+++ b/arch/x86/include/asm/perf_event.h
@@ -159,6 +159,14 @@ struct x86_pmu_capability {
  */
 #define INTEL_PMC_IDX_FIXED_BTS                                
(INTEL_PMC_IDX_FIXED + 16)
 
+#define GLOBAL_STATUS_COND_CHG                         BIT_ULL(63)
+#define GLOBAL_STATUS_BUFFER_OVF                       BIT_ULL(62)
+#define GLOBAL_STATUS_UNC_OVF                          BIT_ULL(61)
+#define GLOBAL_STATUS_ASIF                             BIT_ULL(60)
+#define GLOBAL_STATUS_COUNTERS_FROZEN                  BIT_ULL(59)
+#define GLOBAL_STATUS_LBRS_FROZEN                      BIT_ULL(58)
+#define GLOBAL_STATUS_TRACE_TOPAPMI                    BIT_ULL(55)
+
 /*
  * IBS cpuid feature detection
  */

_______________________________________________
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