Merge tag 'libnvdimm-for-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Jun 2015 17:34:42 +0000 (10:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Jun 2015 17:34:42 +0000 (10:34 -0700)
Pull libnvdimm subsystem from Dan Williams:
 "The libnvdimm sub-system introduces, in addition to the
  libnvdimm-core, 4 drivers / enabling modules:

  NFIT:
    Instantiates an "nvdimm bus" with the core and registers memory
    devices (NVDIMMs) enumerated by the ACPI 6.0 NFIT (NVDIMM Firmware
    Interface table).

    After registering NVDIMMs the NFIT driver then registers "region"
    devices.  A libnvdimm-region defines an access mode and the
    boundaries of persistent memory media.  A region may span multiple
    NVDIMMs that are interleaved by the hardware memory controller.  In
    turn, a libnvdimm-region can be carved into a "namespace" device and
    bound to the PMEM or BLK driver which will attach a Linux block
    device (disk) interface to the memory.

  PMEM:
    Initially merged in v4.1 this driver for contiguous spans of
    persistent memory address ranges is re-worked to drive
    PMEM-namespaces emitted by the libnvdimm-core.

    In this update the PMEM driver, on x86, gains the ability to assert
    that writes to persistent memory have been flushed all the way
    through the caches and buffers in the platform to persistent media.
    See memcpy_to_pmem() and wmb_pmem().

  BLK:
    This new driver enables access to persistent memory media through
    "Block Data Windows" as defined by the NFIT.  The primary difference
    of this driver to PMEM is that only a small window of persistent
    memory is mapped into system address space at any given point in
    time.

    Per-NVDIMM windows are reprogrammed at run time, per-I/O, to access
    different portions of the media.  BLK-mode, by definition, does not
    support DAX.

  BTT:
    This is a library, optionally consumed by either PMEM or BLK, that
    converts a byte-accessible namespace into a disk with atomic sector
    update semantics (prevents sector tearing on crash or power loss).

    The sinister aspect of sector tearing is that most applications do
    not know they have a atomic sector dependency.  At least today's
    disk's rarely ever tear sectors and if they do one almost certainly
    gets a CRC error on access.  NVDIMMs will always tear and always
    silently.  Until an application is audited to be robust in the
    presence of sector-tearing the usage of BTT is recommended.

  Thanks to: Ross Zwisler, Jeff Moyer, Vishal Verma, Christoph Hellwig,
  Ingo Molnar, Neil Brown, Boaz Harrosh, Robert Elliott, Matthew Wilcox,
  Andy Rudoff, Linda Knippers, Toshi Kani, Nicholas Moulin, Rafael
  Wysocki, and Bob Moore"

* tag 'libnvdimm-for-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm: (33 commits)
  arch, x86: pmem api for ensuring durability of persistent memory updates
  libnvdimm: Add sysfs numa_node to NVDIMM devices
  libnvdimm: Set numa_node to NVDIMM devices
  acpi: Add acpi_map_pxm_to_online_node()
  libnvdimm, nfit: handle unarmed dimms, mark namespaces read-only
  pmem: flag pmem block devices as non-rotational
  libnvdimm: enable iostat
  pmem: make_request cleanups
  libnvdimm, pmem: fix up max_hw_sectors
  libnvdimm, blk: add support for blk integrity
  libnvdimm, btt: add support for blk integrity
  fs/block_dev.c: skip rw_page if bdev has integrity
  libnvdimm: Non-Volatile Devices
  tools/testing/nvdimm: libnvdimm unit test infrastructure
  libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory
  nd_btt: atomic sector updates
  libnvdimm: infrastructure for btt devices
  libnvdimm: write blk label set
  libnvdimm: write pmem label set
  libnvdimm: blk labels and namespace instantiation
  ...

17 files changed:
1  2 
MAINTAINERS
arch/ia64/kernel/efi.c
arch/x86/Kconfig
arch/x86/include/asm/cacheflush.h
arch/x86/include/asm/io.h
arch/x86/kernel/e820.c
arch/x86/platform/efi/efi.c
drivers/Makefile
drivers/acpi/Kconfig
drivers/acpi/Makefile
fs/block_dev.c
include/linux/acpi.h
include/linux/compiler.h
include/linux/efi.h
include/linux/pmem.h
include/uapi/linux/Kbuild
lib/Kconfig

diff --combined MAINTAINERS
@@@ -51,9 -51,9 +51,9 @@@ trivial patch so apply some common sens
        or does something very odd once a month document it.
  
        PLEASE remember that submissions must be made under the terms
 -      of the OSDL certificate of contribution and should include a
 -      Signed-off-by: line.  The current version of this "Developer's
 -      Certificate of Origin" (DCO) is listed in the file
 +      of the Linux Foundation certificate of contribution and should
 +      include a Signed-off-by: line.  The current version of this
 +      "Developer's Certificate of Origin" (DCO) is listed in the file
        Documentation/SubmittingPatches.
  
  6.    Make sure you have the right to send any changes you make. If you
@@@ -259,7 -259,7 +259,7 @@@ S: Maintaine
  F:    drivers/platform/x86/acer-wmi.c
  
  ACPI
 -M:    Rafael J. Wysocki <rjw@rjwysocki.net>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Len Brown <lenb@kernel.org>
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
@@@ -280,7 -280,7 +280,7 @@@ F: tools/power/acpi
  ACPI COMPONENT ARCHITECTURE (ACPICA)
  M:    Robert Moore <robert.moore@intel.com>
  M:    Lv Zheng <lv.zheng@intel.com>
 -M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 +M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  L:    linux-acpi@vger.kernel.org
  L:    devel@acpica.org
  W:    https://acpica.org/
@@@ -445,7 -445,6 +445,7 @@@ F: drivers/input/misc/adxl34x.
  
  ADVANSYS SCSI DRIVER
  M:    Matthew Wilcox <matthew@wil.cx>
 +M:    Hannes Reinecke <hare@suse.de>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/scsi/advansys.txt
@@@ -632,7 -631,7 +632,7 @@@ F: drivers/iommu/amd_iommu*.[ch
  F:    include/linux/amd-iommu.h
  
  AMD KFD
 -M:    Oded Gabbay <oded.gabbay@amd.com>
 +M:    Oded Gabbay <oded.gabbay@gmail.com>
  L:    dri-devel@lists.freedesktop.org
  T:    git git://people.freedesktop.org/~gabbayo/linux.git
  S:    Supported
@@@ -653,6 -652,7 +653,6 @@@ M: Tom Lendacky <thomas.lendacky@amd.co
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/amd/xgbe/
 -F:    drivers/net/phy/amd-xgbe-phy.c
  
  AMS (Apple Motion Sensor) DRIVER
  M:    Michael Hanselmann <linux-kernel@hansmi.ch>
@@@ -732,7 -732,7 +732,7 @@@ ANDROID DRIVER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  M:    Arve Hjønnevåg <arve@android.com>
  M:    Riley Andrews <riandrews@android.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/gregkh/staging.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
  L:    devel@driverdev.osuosl.org
  S:    Supported
  F:    drivers/android/
@@@ -922,13 -922,6 +922,13 @@@ M:       Krzysztof Halasa <khalasa@piap.pl
  S:    Maintained
  F:    arch/arm/mach-cns3xxx/
  
 +ARM/CAVIUM THUNDER NETWORK DRIVER
 +M:    Sunil Goutham <sgoutham@cavium.com>
 +M:    Robert Richter <rric@kernel.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/net/ethernet/cavium/
 +
  ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
  M:    Alexander Shiyan <shc_work@mail.ru>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -981,10 -974,9 +981,10 @@@ S:       Maintaine
  ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
  M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -T:    git git://git.berlios.de/gemini-board
 +T:    git git://github.com/ulli-kroll/linux.git
  S:    Maintained
  F:    arch/arm/mach-gemini/
 +F:    drivers/rtc/rtc-gemini.c
  
  ARM/CSR SIRFPRIMA2 MACHINE SUPPORT
  M:    Barry Song <baohua@kernel.org>
@@@ -1043,7 -1035,7 +1043,7 @@@ F:      arch/arm/include/asm/hardware/dec212
  F:    arch/arm/mach-footbridge/
  
  ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
 -M:    Shawn Guo <shawn.guo@linaro.org>
 +M:    Shawn Guo <shawnguo@kernel.org>
  M:    Sascha Hauer <kernel@pengutronix.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1052,11 -1044,9 +1052,11 @@@ F:    arch/arm/mach-imx
  F:    arch/arm/mach-mxs/
  F:    arch/arm/boot/dts/imx*
  F:    arch/arm/configs/imx*_defconfig
 +F:    drivers/clk/imx/
 +F:    include/soc/imx/
  
  ARM/FREESCALE VYBRID ARM ARCHITECTURE
 -M:    Shawn Guo <shawn.guo@linaro.org>
 +M:    Shawn Guo <shawnguo@kernel.org>
  M:    Sascha Hauer <kernel@pengutronix.de>
  R:    Stefan Agner <stefan@agner.ch>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1199,17 -1189,11 +1199,17 @@@ M:   Lennert Buytenhek <kernel@wantstofly
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 +ARM/LPC18XX ARCHITECTURE
 +M:    Joachim Eastwood <manabian@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +N:    lpc18xx
 +
  ARM/MAGICIAN MACHINE SUPPORT
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
 -ARM/Marvell Armada 370 and Armada XP SOC support
 +ARM/Marvell Kirkwood and Armada 370, 375, 38x, XP SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Gregory Clement <gregory.clement@free-electrons.com>
@@@ -1218,17 -1202,12 +1218,17 @@@ L:   linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-mvebu/
  F:    drivers/rtc/rtc-armada38x.c
 +F:    arch/arm/boot/dts/armada*
 +F:    arch/arm/boot/dts/kirkwood*
 +
  
  ARM/Marvell Berlin SoC support
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-berlin/
 +F:    arch/arm/boot/dts/berlin*
 +
  
  ARM/Marvell Dove/MV78xx0/Orion SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
@@@ -1241,9 -1220,6 +1241,9 @@@ F:      arch/arm/mach-dove
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
  F:    arch/arm/plat-orion/
 +F:    arch/arm/boot/dts/dove*
 +F:    arch/arm/boot/dts/orion5x*
 +
  
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <alex@digriz.org.uk>
@@@ -1252,13 -1228,6 +1252,13 @@@ W:    http://www.digriz.org.uk/ts78xx/kern
  S:    Maintained
  F:    arch/arm/mach-orion5x/ts78xx-*
  
 +ARM/Mediatek RTC DRIVER
 +M:    Eddie Huang <eddie.huang@mediatek.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/rtc/rtc-mt6397.c
 +
  ARM/Mediatek SoC support
  M:    Matthias Brugger <matthias.bgg@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1402,13 -1371,11 +1402,13 @@@ N:   rockchi
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene@kernel.org>
 +M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/s3c*
  F:    arch/arm/boot/dts/exynos*
 +F:    arch/arm64/boot/dts/exynos/
  F:    arch/arm/plat-samsung/
  F:    arch/arm/mach-s3c24*/
  F:    arch/arm/mach-s3c64xx/
@@@ -1512,22 -1479,12 +1512,22 @@@ F:   drivers/phy/phy-stih407-usb.
  F:    drivers/phy/phy-stih41x-usb.c
  F:    drivers/pinctrl/pinctrl-st.c
  F:    drivers/reset/sti/
 +F:    drivers/rtc/rtc-st-lpc.c
  F:    drivers/tty/serial/st-asc.c
  F:    drivers/usb/dwc3/dwc3-st.c
  F:    drivers/usb/host/ehci-st.c
  F:    drivers/usb/host/ohci-st.c
 +F:    drivers/watchdog/st_lpc_wdt.c
  F:    drivers/ata/ahci_st.c
  
 +ARM/STM32 ARCHITECTURE
 +M:    Maxime Coquelin <mcoquelin.stm32@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mcoquelin/stm32.git
 +N:    stm32
 +F:    drivers/clocksource/armv7m_systick.c
 +
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1574,13 -1531,6 +1574,13 @@@ F:    drivers/rtc/rtc-ab3100.
  F:    drivers/rtc/rtc-coh901331.c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
  
 +ARM/UNIPHIER ARCHITECTURE
 +M:    Masahiro Yamada <yamada.masahiro@socionext.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-uniphier/
 +N:    uniphier
 +
  ARM/Ux500 ARM ARCHITECTURE
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1658,15 -1608,6 +1658,15 @@@ S:    Maintaine
  F:    arch/arm/mach-pxa/z2.c
  F:    arch/arm/mach-pxa/include/mach/z2.h
  
 +ARM/ZTE ARCHITECTURE
 +M:    Jun Nie <jun.nie@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-zx/
 +F:    drivers/clk/zte/
 +F:    Documentation/devicetree/bindings/arm/zte.txt
 +F:    Documentation/devicetree/bindings/clock/zx296702-clk.txt
 +
  ARM/ZYNQ ARCHITECTURE
  M:    Michal Simek <michal.simek@xilinx.com>
  R:    Sören Brinkmann <soren.brinkmann@xilinx.com>
@@@ -1684,12 -1625,11 +1684,12 @@@ F:   drivers/i2c/busses/i2c-cadence.
  F:    drivers/mmc/host/sdhci-of-arasan.c
  F:    drivers/edac/synopsys_edac.c
  
 -ARM SMMU DRIVER
 +ARM SMMU DRIVERS
  M:    Will Deacon <will.deacon@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/iommu/arm-smmu.c
 +F:    drivers/iommu/arm-smmu-v3.c
  F:    drivers/iommu/io-pgtable-arm.c
  
  ARM64 PORT (AARCH64 ARCHITECTURE)
@@@ -1920,14 -1860,6 +1920,14 @@@ W:    http://www.attotech.co
  S:    Supported
  F:    drivers/scsi/esas2r
  
 +ATUSB IEEE 802.15.4 RADIO DRIVER
 +M:    Stefan Schmidt <stefan@osg.samsung.com>
 +L:    linux-wpan@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ieee802154/atusb.c
 +F:    drivers/net/ieee802154/atusb.h
 +F:    drivers/net/ieee802154/at86rf230.h
 +
  AUDIT SUBSYSTEM
  M:    Paul Moore <paul@paul-moore.com>
  M:    Eric Paris <eparis@redhat.com>
@@@ -2003,7 -1935,7 +2003,7 @@@ S:      Maintaine
  F:    drivers/net/wireless/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
 -M:    Jingoo Han <jg1.han@samsung.com>
 +M:    Jingoo Han <jingoohan1@gmail.com>
  M:    Lee Jones <lee.jones@linaro.org>
  S:    Maintained
  F:    drivers/video/backlight/
@@@ -2032,14 -1964,6 +2032,14 @@@ W:    http://bcache.evilpiepirate.or
  S:    Maintained:
  F:    drivers/md/bcache/
  
 +BDISP ST MEDIA DRIVER
 +M:    Fabien Dessenne <fabien.dessenne@st.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Supported
 +F:    drivers/media/platform/sti/bdisp
 +
  BEFS FILE SYSTEM
  S:    Orphan
  F:    Documentation/filesystems/befs.txt
@@@ -2124,7 -2048,6 +2124,7 @@@ M:      Jens Axboe <axboe@kernel.dk
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
  S:    Maintained
  F:    block/
 +F:    kernel/trace/blktrace.c
  
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
@@@ -2229,14 -2152,6 +2229,14 @@@ F:    arch/mips/bcm3384/
  F:    arch/mips/include/asm/mach-bcm3384/*
  F:    arch/mips/kernel/*bmips*
  
 +BROADCOM BCM47XX MIPS ARCHITECTURE
 +M:    Hauke Mehrtens <hauke@hauke-m.de>
 +M:    Rafał Miłecki <zajec5@gmail.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    arch/mips/bcm47xx/*
 +F:    arch/mips/include/asm/mach-bcm47xx/*
 +
  BROADCOM BCM5301X ARM ARCHITECTURE
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  L:    linux-arm-kernel@lists.infradead.org
@@@ -2269,7 -2184,6 +2269,7 @@@ S:      Maintaine
  F:    arch/arm/mach-bcm/*brcmstb*
  F:    arch/arm/boot/dts/bcm7*.dts*
  F:    drivers/bus/brcmstb_gisb.c
 +N:    brcmstb
  
  BROADCOM BMIPS MIPS ARCHITECTURE
  M:    Kevin Cernekee <cernekee@gmail.com>
@@@ -2327,13 -2241,6 +2327,13 @@@ N:    bcm9583
  N:    bcm583*
  N:    bcm113*
  
 +BROADCOM BRCMSTB GPIO DRIVER
 +M:    Gregory Fong <gregory.0xf0@gmail.com>
 +L:    bcm-kernel-feedback-list@broadcom.com>
 +S:    Supported
 +F:    drivers/gpio/gpio-brcmstb.c
 +F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
 +
  BROADCOM KONA GPIO DRIVER
  M:    Ray Jui <rjui@broadcom.com>
  L:    bcm-kernel-feedback-list@broadcom.com
@@@ -2341,18 -2248,6 +2341,18 @@@ S:    Supporte
  F:    drivers/gpio/gpio-bcm-kona.c
  F:    Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
  
 +BROADCOM NVRAM DRIVER
 +M:    Rafał Miłecki <zajec5@gmail.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    drivers/firmware/broadcom/*
 +
 +BROADCOM STB NAND FLASH DRIVER
 +M:    Brian Norris <computersforpeace@gmail.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/brcmnand/
 +
  BROADCOM SPECIFIC AMBA DRIVER (BCMA)
  M:    Rafał Miłecki <zajec5@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -2523,6 -2418,7 +2523,6 @@@ L:      linux-security-module@vger.kernel.or
  S:    Supported
  F:    include/linux/capability.h
  F:    include/uapi/linux/capability.h
 -F:    security/capability.c
  F:    security/commoncap.c
  F:    kernel/capability.c
  
@@@ -2532,17 -2428,6 +2532,17 @@@ S:    Maintaine
  F:    drivers/iio/light/cm*
  F:    Documentation/devicetree/bindings/i2c/trivial-devices.txt
  
 +CAVIUM LIQUIDIO NETWORK DRIVER
 +M:     Derek Chickles <derek.chickles@caviumnetworks.com>
 +M:     Satanand Burla <satananda.burla@caviumnetworks.com>
 +M:     Felix Manlunas <felix.manlunas@caviumnetworks.com>
 +M:     Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
 +L:     netdev@vger.kernel.org
 +W:     http://www.cavium.com
 +S:     Supported
 +F:     drivers/net/ethernet/cavium/
 +F:     drivers/net/ethernet/cavium/liquidio/
 +
  CC2520 IEEE-802.15.4 RADIO DRIVER
  M:    Varka Bhadram <varkabhadram@gmail.com>
  L:    linux-wpan@vger.kernel.org
@@@ -2554,6 -2439,7 +2554,6 @@@ F:      Documentation/devicetree/bindings/ne
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
  L:    linuxppc-dev@lists.ozlabs.org
 -L:    cbe-oss-dev@lists.ozlabs.org
  W:    http://www.ibm.com/developerworks/power/cell/
  S:    Supported
  F:    arch/powerpc/include/asm/cell*.h
@@@ -2563,7 -2449,7 +2563,7 @@@ F:      arch/powerpc/oprofile/*cell
  F:    arch/powerpc/platforms/cell/
  
  CEPH DISTRIBUTED FILE SYSTEM CLIENT
 -M:    Yan, Zheng <zyan@redhat.com>
 +M:    "Yan, Zheng" <zyan@redhat.com>
  M:    Sage Weil <sage@redhat.com>
  L:    ceph-devel@vger.kernel.org
  W:    http://ceph.com/
@@@ -2709,13 -2595,6 +2709,13 @@@ L:    linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/fnic/
  
 +CISCO SCSI HBA DRIVER
 +M:    Narsimhulu Musini <nmusini@cisco.com>
 +M:    Sesidhar Baddela <sebaddel@cisco.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/snic/
 +
  CMPC ACPI DRIVER
  M:    Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
  M:    Daniel Oliveira Nascimento <don@syst.com.br>
@@@ -2723,14 -2602,6 +2723,14 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Supported
  F:    drivers/platform/x86/classmate-laptop.c
  
 +COBALT MEDIA DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Supported
 +F:    drivers/media/pci/cobalt/
 +
  COCCINELLE/Semantic Patches (SmPL)
  M:    Julia Lawall <Julia.Lawall@lip6.fr>
  M:    Gilles Muller <Gilles.Muller@lip6.fr>
@@@ -2830,7 -2701,6 +2830,7 @@@ F:      drivers/connector
  CONTROL GROUP (CGROUP)
  M:    Tejun Heo <tj@kernel.org>
  M:    Li Zefan <lizefan@huawei.com>
 +M:    Johannes Weiner <hannes@cmpxchg.org>
  L:    cgroups@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
  S:    Maintained
@@@ -2878,7 -2748,7 +2878,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
 -M:    Rafael J. Wysocki <rjw@rjwysocki.net>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -2917,7 -2787,7 +2917,7 @@@ F:      drivers/cpuidle/cpuidle-exynos.
  F:    arch/arm/mach-exynos/pm.c
  
  CPUIDLE DRIVERS
 -M:    Rafael J. Wysocki <rjw@rjwysocki.net>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -3003,15 -2873,6 +3003,15 @@@ S:    Maintaine
  F:    drivers/media/common/cx2341x*
  F:    include/media/cx2341x*
  
 +CX24120 MEDIA DRIVER
 +M:    Jemma Denson <jdenson@gmail.com>
 +M:    Patrick Boettcher <patrick.boettcher@posteo.de>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/cx24120*
 +
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
@@@ -3086,7 -2947,7 +3086,7 @@@ M:      Michael Neuling <mikey@neuling.org
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    drivers/misc/cxl/
 -F:    include/misc/cxl.h
 +F:    include/misc/cxl*
  F:    include/uapi/misc/cxl.h
  F:    Documentation/powerpc/cxl.txt
  F:    Documentation/powerpc/cxl.txt
@@@ -3222,9 -3083,9 +3222,9 @@@ S:      Maintaine
  F:    drivers/platform/x86/dell-smo8800.c
  
  DELL LAPTOP SMM DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 +M:    Pali Rohár <pali.rohar@gmail.com>
  S:    Maintained
 -F:    drivers/char/i8k.c
 +F:    drivers/hwmon/dell-smm-hwmon.c
  F:    include/uapi/linux/i8k.h
  
  DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
@@@ -3419,8 -3280,6 +3419,8 @@@ F:      drivers/hwmon/dme1737.
  DMI/SMBIOS SUPPORT
  M:    Jean Delvare <jdelvare@suse.de>
  S:    Maintained
 +T:    quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
 +F:    Documentation/ABI/testing/sysfs-firmware-dmi-tables
  F:    drivers/firmware/dmi-id.c
  F:    drivers/firmware/dmi_scan.c
  F:    include/linux/dmi.h
@@@ -3465,17 -3324,16 +3465,17 @@@ F:   drivers/block/drbd
  F:    lib/lru_cache.c
  F:    Documentation/blockdev/drbd/
  
 -DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
 +DRIVER CORE, KOBJECTS, DEBUGFS, KERNFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
  S:    Supported
  F:    Documentation/kobject.txt
  F:    drivers/base/
 -F:    fs/sysfs/
  F:    fs/debugfs/
 -F:    include/linux/kobj*
 +F:    fs/kernfs/
 +F:    fs/sysfs/
  F:    include/linux/debugfs.h
 +F:    include/linux/kobj*
  F:    lib/kobj*
  
  DRM DRIVERS
@@@ -3581,14 -3439,6 +3581,14 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/wan/dscc4.c
  
 +DT3155 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/pci/dt3155/
 +
  DVB_USB_AF9015 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -3871,7 -3721,7 +3871,7 @@@ S:      Maintaine
  F:    drivers/edac/ie31200_edac.c
  
  EDAC-MPC85XX
 -M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 +M:    Johannes Thumshirn <morbidrsa@gmail.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3898,13 -3748,6 +3898,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  
 +EDAC-XGENE
 +APPLIED MICRO (APM) X-GENE SOC EDAC
 +M:     Loc Ho <lho@apm.com>
 +S:     Supported
 +F:     drivers/edac/xgene_edac.c
 +F:     Documentation/devicetree/bindings/edac/apm-xgene-edac.txt
 +
  EDIROL UA-101/UA-1000 DRIVER
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -3973,11 -3816,10 +3973,11 @@@ M:   David Woodhouse <dwmw2@infradead.org
  L:    linux-embedded@vger.kernel.org
  S:    Maintained
  
 -EMULEX LPFC FC SCSI DRIVER
 -M:    James Smart <james.smart@emulex.com>
 +EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
 +M:    James Smart <james.smart@avagotech.com>
 +M:    Dick Kennedy <dick.kennedy@avagotech.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://sourceforge.net/projects/lpfcxxxx
 +W:    http://www.avagotech.com
  S:    Supported
  F:    drivers/scsi/lpfc/
  
@@@ -4076,7 -3918,7 +4076,7 @@@ F:      drivers/extcon
  F:    Documentation/extcon/
  
  EXYNOS DP DRIVER
 -M:    Jingoo Han <jg1.han@samsung.com>
 +M:    Jingoo Han <jingoohan1@gmail.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  F:    drivers/gpu/drm/exynos/exynos_dp*
@@@ -4153,7 -3995,7 +4153,7 @@@ F:      include/uapi/scsi/fc
  
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <jlayton@poochiereds.net>
 -M:    J. Bruce Fields <bfields@fieldses.org>
 +M:    "J. Bruce Fields" <bfields@fieldses.org>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    include/linux/fcntl.h
@@@ -4349,7 -4191,7 +4349,7 @@@ F:      sound/soc/fsl/imx
  F:    sound/soc/fsl/mpc8610_hpcd.c
  
  FREESCALE QORIQ MANAGEMENT COMPLEX DRIVER
 -M:    J. German Rivera <German.Rivera@freescale.com>
 +M:    "J. German Rivera" <German.Rivera@freescale.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/fsl-mc/
@@@ -4535,10 -4377,11 +4535,10 @@@ F:   fs/gfs2
  F:    include/uapi/linux/gfs2_ondisk.h
  
  GIGASET ISDN DRIVERS
 -M:    Hansjoerg Lipp <hjlipp@web.de>
 -M:    Tilman Schmidt <tilman@imap.cc>
 +M:    Paul Bolle <pebolle@tiscali.nl>
  L:    gigaset307x-common@lists.sourceforge.net
  W:    http://gigaset307x.sourceforge.net/
 -S:    Maintained
 +S:    Odd Fixes
  F:    Documentation/isdn/README.gigaset
  F:    drivers/isdn/gigaset/
  F:    include/uapi/linux/gigaset_dev.h
@@@ -4631,7 -4474,7 +4631,7 @@@ S:      Maintaine
  F:    drivers/media/usb/gspca/
  
  GUID PARTITION TABLE (GPT)
 -M:    Davidlohr Bueso <davidlohr@hp.com>
 +M:    Davidlohr Bueso <dave@stgolabs.net>
  L:    linux-efi@vger.kernel.org
  S:    Maintained
  F:    block/partitions/efi.*
@@@ -4643,17 -4486,6 +4643,17 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/stk1160/
  
 +H8/300 ARCHITECTURE
 +M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 +L:    uclinux-h8-devel@lists.sourceforge.jp
 +W:    http://uclinux-h8.sourceforge.jp
 +T:    git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
 +S:    Maintained
 +F:    arch/h8300/
 +F:    drivers/clocksource/h8300_*.c
 +F:    drivers/clk/h8300/
 +F:    drivers/irqchip/irq-renesas-h8*.c
 +
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
  M:    Frank Seidel <frank@f-seidel.de>
  L:    platform-driver-x86@vger.kernel.org
@@@ -4696,7 -4528,7 +4696,7 @@@ M:      Jean Delvare <jdelvare@suse.de
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    lm-sensors@lm-sensors.org
  W:    http://www.lm-sensors.org/
 -T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/
 +T:    quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
  S:    Maintained
  F:    Documentation/hwmon/
@@@ -4803,18 -4635,6 +4803,18 @@@ F:    drivers/hid
  F:    include/linux/hid*
  F:    include/uapi/linux/hid*
  
 +HID SENSOR HUB DRIVERS
 +M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jonathan Cameron <jic23@kernel.org>
 +M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
 +L:    linux-input@vger.kernel.org
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hid/hid-sensor*
 +F:    drivers/hid/hid-sensor-*
 +F:    drivers/iio/*/hid-*
 +F:    include/linux/hid-sensor-*
 +
  HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
@@@ -4921,7 -4741,7 +4921,7 @@@ S:      Maintaine
  F:    fs/hugetlbfs/
  
  Hyper-V CORE AND DRIVERS
 -M:    K. Y. Srinivasan <kys@microsoft.com>
 +M:    "K. Y. Srinivasan" <kys@microsoft.com>
  M:    Haiyang Zhang <haiyangz@microsoft.com>
  L:    devel@linuxdriverproject.org
  S:    Maintained
@@@ -5051,23 -4871,13 +5051,23 @@@ M:   Marcelo Henrique Cerri <mhcerri@linu
  M:    Fionnuala Gunter <fin@linux.vnet.ibm.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
 -F:    drivers/crypto/nx/
 +F:    drivers/crypto/nx/Makefile
 +F:    drivers/crypto/nx/Kconfig
 +F:    drivers/crypto/nx/nx-aes*
 +F:    drivers/crypto/nx/nx-sha*
 +F:    drivers/crypto/nx/nx.*
 +F:    drivers/crypto/nx/nx_csbcpb.h
 +F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
  M:    Dan Streetman <ddstreet@us.ibm.com>
  S:    Supported
 -F:    drivers/crypto/nx/nx-842.c
 -F:    include/linux/nx842.h
 +F:    drivers/crypto/nx/Makefile
 +F:    drivers/crypto/nx/Kconfig
 +F:    drivers/crypto/nx/nx-842*
 +F:    include/linux/sw842.h
 +F:    crypto/842.c
 +F:    lib/842/
  
  IBM Power Linux RAID adapter
  M:    Brian King <brking@us.ibm.com>
@@@ -5244,7 -5054,7 +5244,7 @@@ M:      Hal Rosenstock <hal.rosenstock@gmail
  L:    linux-rdma@vger.kernel.org
  W:    http://www.openfabrics.org/
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
 -T:    git git://github.com/dledford/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
  S:    Supported
  F:    Documentation/infiniband/
  F:    drivers/infiniband/
@@@ -5276,6 -5086,7 +5276,6 @@@ F:      include/linux/input
  INPUT MULTITOUCH (MT) PROTOCOL
  M:    Henrik Rydberg <rydberg@bitmath.org>
  L:    linux-input@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git
  S:    Odd fixes
  F:    Documentation/input/multi-touch-protocol.txt
  F:    drivers/input/input-mt.c
@@@ -5283,7 -5094,7 +5283,7 @@@ K:      \b(ABS|SYN)_MT
  
  INTEL ASoC BDW/HSW DRIVERS
  M:    Jie Yang <yang.jie@linux.intel.com>
 -L:    alsa-devel@alsa-project.org
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/intel/sst-haswell*
  F:    sound/soc/intel/sst-dsp*
@@@ -5460,7 -5271,6 +5460,7 @@@ M:      Tomas Winkler <tomas.winkler@intel.c
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    include/uapi/linux/mei.h
 +F:    include/linux/mei_cl_bus.h
  F:    drivers/misc/mei/*
  F:    Documentation/misc-devices/mei/*
  
@@@ -6102,6 -5912,39 +6102,39 @@@ M:    Sasha Levin <sasha.levin@oracle.com
  S:    Maintained
  F:    tools/lib/lockdep/
  
+ LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
+ M:    Dan Williams <dan.j.williams@intel.com>
+ L:    linux-nvdimm@lists.01.org
+ Q:    https://patchwork.kernel.org/project/linux-nvdimm/list/
+ S:    Supported
+ F:    drivers/nvdimm/*
+ F:    include/linux/nd.h
+ F:    include/linux/libnvdimm.h
+ F:    include/uapi/linux/ndctl.h
+ LIBNVDIMM BLK: MMIO-APERTURE DRIVER
+ M:    Ross Zwisler <ross.zwisler@linux.intel.com>
+ L:    linux-nvdimm@lists.01.org
+ Q:    https://patchwork.kernel.org/project/linux-nvdimm/list/
+ S:    Supported
+ F:    drivers/nvdimm/blk.c
+ F:    drivers/nvdimm/region_devs.c
+ F:    drivers/acpi/nfit*
+ LIBNVDIMM BTT: BLOCK TRANSLATION TABLE
+ M:    Vishal Verma <vishal.l.verma@intel.com>
+ L:    linux-nvdimm@lists.01.org
+ Q:    https://patchwork.kernel.org/project/linux-nvdimm/list/
+ S:    Supported
+ F:    drivers/nvdimm/btt*
+ LIBNVDIMM PMEM: PERSISTENT MEMORY DRIVER
+ M:    Ross Zwisler <ross.zwisler@linux.intel.com>
+ L:    linux-nvdimm@lists.01.org
+ Q:    https://patchwork.kernel.org/project/linux-nvdimm/list/
+ S:    Supported
+ F:    drivers/nvdimm/pmem.c
  LINUX FOR IBM pSERIES (RS/6000)
  M:    Paul Mackerras <paulus@au.ibm.com>
  W:    http://www.ibm.com/linux/ltc/projects/ppc
@@@ -6526,15 -6369,6 +6559,15 @@@ W:    http://linuxtv.or
  S:    Maintained
  F:    drivers/media/radio/radio-maxiradio*
  
 +MEDIA DRIVERS FOR RENESAS - VSP1
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +L:    linux-sh@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/media/renesas,vsp1.txt
 +F:    drivers/media/platform/vsp1/
 +
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
@@@ -6557,12 -6391,6 +6590,12 @@@ F:    include/uapi/linux/meye.
  F:    include/uapi/linux/ivtv*
  F:    include/uapi/linux/uvcvideo.h
  
 +MEDIATEK MT7601U WIRELESS LAN DRIVER
 +M:    Jakub Kicinski <kubakici@wp.pl>
 +L:    linux-wireless@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/wireless/mediatek/mt7601u/
 +
  MEGARAID SCSI/SAS DRIVERS
  M:    Kashyap Desai <kashyap.desai@avagotech.com>
  M:    Sumit Saxena <sumit.saxena@avagotech.com>
@@@ -6609,14 -6437,14 +6642,14 @@@ F:   include/linux/mtd
  F:    include/uapi/mtd/
  
  MEN A21 WATCHDOG DRIVER
 -M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 +M:    Johannes Thumshirn <morbidrsa@gmail.com>
  L:    linux-watchdog@vger.kernel.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/watchdog/mena21_wdt.c
  
  MEN CHAMELEON BUS (mcb)
 -M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 -S:    Supported
 +M:    Johannes Thumshirn <morbidrsa@gmail.com>
 +S:    Maintained
  F:    drivers/mcb/
  F:    include/linux/mcb.h
  
@@@ -6876,7 -6704,7 +6909,7 @@@ F:      drivers/net/ethernet/natsemi/natsemi
  NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER
  M:    Daniel Mack <zonque@gmail.com>
  S:    Maintained
 -L:    alsa-devel@alsa-project.org
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://www.native-instruments.com
  F:    sound/usb/caiaq/
  
@@@ -7164,17 -6992,6 +7197,17 @@@ T:    git git://git.rocketboards.org/linux
  S:    Maintained
  F:    arch/nios2/
  
 +NOKIA N900 POWER SUPPLY DRIVERS
 +M:    Pali Rohár <pali.rohar@gmail.com>
 +S:    Maintained
 +F:    include/linux/power/bq2415x_charger.h
 +F:    include/linux/power/bq27x00_battery.h
 +F:    include/linux/power/isp1704_charger.h
 +F:    drivers/power/bq2415x_charger.c
 +F:    drivers/power/bq27x00_battery.c
 +F:    drivers/power/isp1704_charger.c
 +F:    drivers/power/rx51_battery.c
 +
  NTB DRIVER
  M:    Jon Mason <jdmason@kudzu.us>
  M:    Dave Jiang <dave.jiang@intel.com>
@@@ -7294,7 -7111,7 +7327,7 @@@ F:      arch/arm/mach-omap2/prm
  OMAP AUDIO SUPPORT
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  M:    Jarkko Nikula <jarkko.nikula@bitmer.com>
 -L:    alsa-devel@alsa-project.org (subscribers-only)
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linux-omap@vger.kernel.org
  S:    Maintained
  F:    sound/soc/omap/
@@@ -7589,16 -7406,13 +7622,16 @@@ S:   Maintaine
  F:    Documentation/mn10300/
  F:    arch/mn10300/
  
 -PARALLEL PORT SUPPORT
 +PARALLEL PORT SUBSYSTEM
 +M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 +M:    Sudip Mukherjee <sudip@vectorindia.org>
  L:    linux-parport@lists.infradead.org (subscribers-only)
 -S:    Orphan
 +S:    Maintained
  F:    drivers/parport/
  F:    include/linux/parport*.h
  F:    drivers/char/ppdev.c
  F:    include/uapi/linux/ppdev.h
 +F:    Documentation/parport*.txt
  
  PARAVIRT_OPS INTERFACE
  M:    Jeremy Fitzhardinge <jeremy@goop.org>
@@@ -7766,7 -7580,7 +7799,7 @@@ S:      Maintaine
  F:    drivers/pci/host/*rcar*
  
  PCI DRIVER FOR SAMSUNG EXYNOS
 -M:    Jingoo Han <jg1.han@samsung.com>
 +M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
@@@ -7774,8 -7588,7 +7807,8 @@@ S:      Maintaine
  F:    drivers/pci/host/pci-exynos.c
  
  PCI DRIVER FOR SYNOPSIS DESIGNWARE
 -M:    Jingoo Han <jg1.han@samsung.com>
 +M:    Jingoo Han <jingoohan1@gmail.com>
 +M:    Pratyush Anand <pratyush.anand@gmail.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    drivers/pci/host/*designware*
@@@ -7789,19 -7602,10 +7822,19 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/host/pci-host-generic.c
  
  PCIE DRIVER FOR ST SPEAR13XX
 +M:    Pratyush Anand <pratyush.anand@gmail.com>
  L:    linux-pci@vger.kernel.org
 -S:    Orphan
 +S:    Maintained
  F:    drivers/pci/host/*spear*
  
 +PCI MSI DRIVER FOR APPLIEDMICRO XGENE
 +M:    Duc Dang <dhdang@apm.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/xgene-pci-msi.txt
 +F:    drivers/pci/host/pci-xgene-msi.c
 +
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -7842,6 -7646,7 +7875,6 @@@ F:      kernel/delayacct.
  
  PERFORMANCE EVENTS SUBSYSTEM
  M:    Peter Zijlstra <a.p.zijlstra@chello.nl>
 -M:    Paul Mackerras <paulus@samba.org>
  M:    Ingo Molnar <mingo@redhat.com>
  M:    Arnaldo Carvalho de Melo <acme@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -7999,7 -7804,7 +8032,7 @@@ F:      include/linux/power_supply.
  F:    drivers/power/
  
  PNP SUPPORT
 -M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 +M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  S:    Maintained
  F:    drivers/pnp/
  
@@@ -8068,13 -7873,14 +8101,13 @@@ F:   drivers/net/wireless/prism54
  PS3 NETWORK SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
  L:    netdev@vger.kernel.org
 -L:    cbe-oss-dev@lists.ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/net/ethernet/toshiba/ps3_gelic_net.*
  
  PS3 PLATFORM SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
  L:    linuxppc-dev@lists.ozlabs.org
 -L:    cbe-oss-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/boot/ps3*
  F:    arch/powerpc/include/asm/lv1call.h
@@@ -8088,8 -7894,7 +8121,8 @@@ F:      sound/ppc/snd_ps3
  
  PS3VRAM DRIVER
  M:    Jim Paris <jim@jtan.com>
 -L:    cbe-oss-dev@lists.ozlabs.org
 +M:    Geoff Levand <geoff@infradead.org>
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/block/ps3vram.c
  
@@@ -8174,7 -7979,6 +8207,7 @@@ T:      git git://github.com/hzhuang1/linux.
  T:    git git://github.com/rjarzmik/linux.git
  S:    Maintained
  F:    arch/arm/mach-pxa/
 +F:    drivers/dma/pxa*
  F:    drivers/pcmcia/pxa2xx*
  F:    drivers/spi/spi-pxa2xx*
  F:    drivers/usb/gadget/udc/pxa2*
@@@ -8354,6 -8158,8 +8387,6 @@@ P:      rt2x00 projec
  M:    Stanislaw Gruszka <sgruszka@redhat.com>
  M:    Helmut Schaa <helmut.schaa@googlemail.com>
  L:    linux-wireless@vger.kernel.org
 -L:    users@rt2x00.serialmonkey.com (moderated for non-subscribers)
 -W:    http://rt2x00.serialmonkey.com/
  S:    Maintained
  F:    drivers/net/wireless/rt2x00/
  
@@@ -8363,12 -8169,6 +8396,6 @@@ S:     Maintaine
  F:    Documentation/blockdev/ramdisk.txt
  F:    drivers/block/brd.c
  
- PERSISTENT MEMORY DRIVER
- M:    Ross Zwisler <ross.zwisler@linux.intel.com>
- L:    linux-nvdimm@lists.01.org
- S:    Supported
- F:    drivers/block/pmem.c
  RANDOM NUMBER DRIVER
  M:    "Theodore Ts'o" <tytso@mit.edu>
  S:    Maintained
@@@ -8443,7 -8243,6 +8470,7 @@@ M:      Alessandro Zummo <a.zummo@towertech.
  M:    Alexandre Belloni <alexandre.belloni@free-electrons.com>
  L:    rtc-linux@googlegroups.com
  Q:    http://patchwork.ozlabs.org/project/rtc-linux/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
  S:    Maintained
  F:    Documentation/rtc.txt
  F:    drivers/rtc/
@@@ -8739,25 -8538,19 +8766,25 @@@ S:   Supporte
  F:    sound/soc/samsung/
  
  SAMSUNG FRAMEBUFFER DRIVER
 -M:    Jingoo Han <jg1.han@samsung.com>
 +M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    drivers/video/fbdev/s3c-fb.c
  
 -SAMSUNG MULTIFUNCTION DEVICE DRIVERS
 +SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Sangbeom Kim <sbkim73@samsung.com>
 +M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
  L:    linux-kernel@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
  F:    drivers/mfd/sec*.c
  F:    drivers/regulator/s2m*.c
  F:    drivers/regulator/s5m*.c
 +F:    drivers/clk/clk-s2mps11.c
 +F:    drivers/rtc/rtc-s5m.c
  F:    include/linux/mfd/samsung/
 +F:    Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt
 +F:    Documentation/devicetree/bindings/mfd/s2mp*.txt
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -8987,7 -8780,6 +9014,7 @@@ S:      Supporte
  F:    kernel/seccomp.c
  F:    include/uapi/linux/seccomp.h
  F:    include/linux/seccomp.h
 +F:    tools/testing/selftests/seccomp/*
  K:    \bsecure_computing
  K:    \bTIF_SECCOMP\b
  
@@@ -9007,7 -8799,7 +9034,7 @@@ F:      drivers/mmc/host/sdhci-spear.
  
  SECURITY SUBSYSTEM
  M:    James Morris <james.l.morris@oracle.com>
 -M:    Serge E. Hallyn <serge@hallyn.com>
 +M:    "Serge E. Hallyn" <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
  W:    http://kernsec.org/
@@@ -9045,19 -8837,16 +9072,19 @@@ F:   drivers/misc/phantom.
  F:    include/uapi/linux/phantom.h
  
  SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
 -M:    Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
 +M:    Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
 +M:    Minh Tran <minh.tran@avagotech.com>
 +M:    John Soni Jose <sony.john-n@avagotech.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.emulex.com
 +W:    http://www.avagotech.com
  S:    Supported
  F:    drivers/scsi/be2iscsi/
  
 -SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
 -M:    Sathya Perla <sathya.perla@emulex.com>
 -M:    Subbu Seetharaman <subbu.seetharaman@emulex.com>
 -M:    Ajit Khaparde <ajit.khaparde@emulex.com>
 +Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER
 +M:    Sathya Perla <sathya.perla@avagotech.com>
 +M:    Ajit Khaparde <ajit.khaparde@avagotech.com>
 +M:    Padmanabh Ratnakar <padmanabh.ratnakar@avagotech.com>
 +M:    Sriharsha Basavapatna <sriharsha.basavapatna@avagotech.com>
  L:    netdev@vger.kernel.org
  W:    http://www.emulex.com
  S:    Supported
@@@ -9227,7 -9016,7 +9254,7 @@@ F:      arch/arm/mach-davinci
  F:    drivers/i2c/busses/i2c-davinci.c
  
  TI DAVINCI SERIES MEDIA DRIVER
 -M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
 +M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9237,7 -9026,7 +9264,7 @@@ F:      drivers/media/platform/davinci
  F:    include/media/davinci/
  
  TI AM437X VPFE DRIVER
 -M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
 +M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9246,7 -9035,7 +9273,7 @@@ S:      Maintaine
  F:    drivers/media/platform/am437x/
  
  OV2659 OMNIVISION SENSOR DRIVER
 -M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
 +M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9575,6 -9364,7 +9602,6 @@@ F:      drivers/net/ethernet/toshiba/spider_
  SPU FILE SYSTEM
  M:    Jeremy Kerr <jk@ozlabs.org>
  L:    linuxppc-dev@lists.ozlabs.org
 -L:    cbe-oss-dev@lists.ozlabs.org
  W:    http://www.ibm.com/developerworks/power/cell/
  S:    Supported
  F:    Documentation/filesystems/spufs.txt
@@@ -9713,15 -9503,6 +9740,15 @@@ M:    Forest Bond <forest@alittletooquiet.
  S:    Odd Fixes
  F:    drivers/staging/vt665?/
  
 +STAGING - WILC1000 WIFI DRIVER
 +M:    Johnny Kim <johnny.kim@atmel.com>
 +M:    Rachel Kim <rachel.kim@atmel.com>
 +M:    Dean Lee <dean.lee@atmel.com>
 +M:    Chris Park <chris.park@atmel.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Supported
 +F:    drivers/staging/wilc1000/
 +
  STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
  M:    Arnaud Patard <arnaud.patard@rtp-net.org>
  S:    Odd Fixes
@@@ -9805,13 -9586,6 +9832,13 @@@ F:    arch/arc
  F:    Documentation/devicetree/bindings/arc/
  F:    drivers/tty/serial/arc_uart.c
  
 +SYSTEM CONFIGURATION (SYSCON)
 +M:    Lee Jones <lee.jones@linaro.org>
 +M:    Arnd Bergmann <arnd@arndb.de>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
 +S:    Supported
 +F:    drivers/mfd/syscon.c
 +
  SYSV FILESYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
  S:    Maintained
@@@ -9820,7 -9594,7 +9847,7 @@@ F:      fs/sysv
  F:    include/linux/sysv_fs.h
  
  TARGET SUBSYSTEM
 -M:    Nicholas A. Bellinger <nab@linux-iscsi.org>
 +M:    "Nicholas A. Bellinger" <nab@linux-iscsi.org>
  L:    linux-scsi@vger.kernel.org
  L:    target-devel@vger.kernel.org
  W:    http://www.linux-iscsi.org
@@@ -9962,7 -9736,7 +9989,7 @@@ F:      include/linux/if_team.
  F:    include/uapi/linux/if_team.h
  
  TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
 -M:    Savoir-faire Linux Inc. <kernel@savoirfairelinux.com>
 +M:    "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com>
  S:    Maintained
  F:    arch/x86/platform/ts5500/
  
@@@ -10153,12 -9927,6 +10180,12 @@@ L:  netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/ti/netcp*
  
 +TI TAS571X FAMILY ASoC CODEC DRIVER
 +M:    Kevin Cernekee <cernekee@chromium.org>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    sound/soc/codecs/tas571x*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -10252,7 -10020,7 +10279,7 @@@ F:   include/linux/toshiba.
  F:    include/uapi/linux/toshiba.h
  
  TMIO MMC DRIVER
 -M:    Ian Molton <ian.molton@codethink.co.uk>
 +M:    Ian Molton <ian@mnementh.co.uk>
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
  F:    drivers/mmc/host/tmio_mmc*
@@@ -10333,7 -10101,6 +10360,7 @@@ M:   Greg Kroah-Hartman <gregkh@linuxfoun
  M:    Jiri Slaby <jslaby@suse.cz>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
 +F:    Documentation/serial/
  F:    drivers/tty/
  F:    drivers/tty/serial/serial_core.c
  F:    include/linux/serial_core.h
@@@ -10391,15 -10158,11 +10418,15 @@@ S:        Maintaine
  F:    Documentation/filesystems/ubifs.txt
  F:    fs/ubifs/
  
 -UCLINUX (AND M68KNOMMU)
 +UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <gerg@uclinux.org>
  W:    http://www.uclinux.org/
 +L:    linux-m68k@lists.linux-m68k.org
  L:    uclinux-dev@uclinux.org  (subscribers-only)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu.git
  S:    Maintained
 +F:    arch/m68k/coldfire/
 +F:    arch/m68k/68*/
  F:    arch/m68k/*/*_no.*
  F:    arch/m68k/include/asm/*_no.*
  
@@@ -10733,13 -10496,6 +10760,13 @@@ S: Maintaine
  F:    Documentation/video4linux/zr364xx.txt
  F:    drivers/media/usb/zr364xx/
  
 +ULPI BUS
 +M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/common/ulpi.c
 +F:    include/linux/ulpi/
 +
  USER-MODE LINUX (UML)
  M:    Jeff Dike <jdike@addtoit.com>
  M:    Richard Weinberger <richard@nod.at>
@@@ -10792,12 -10548,6 +10819,12 @@@ F: drivers/vfio
  F:    include/linux/vfio.h
  F:    include/uapi/linux/vfio.h
  
 +VFIO PLATFORM DRIVER
 +M:    Baptiste Reynal <b.reynal@virtualopensystems.com>
 +L:    kvm@vger.kernel.org
 +S:    Maintained
 +F:    drivers/vfio/platform/
 +
  VIDEOBUF2 FRAMEWORK
  M:    Pawel Osciak <pawel@osciak.com>
  M:    Marek Szyprowski <m.szyprowski@samsung.com>
@@@ -10826,15 -10576,6 +10853,15 @@@ F: drivers/block/virtio_blk.
  F:    include/linux/virtio_*.h
  F:    include/uapi/linux/virtio_*.h
  
 +VIRTIO GPU DRIVER
 +M:    David Airlie <airlied@linux.ie>
 +M:    Gerd Hoffmann <kraxel@redhat.com>
 +L:    dri-devel@lists.freedesktop.org
 +L:    virtualization@lists.linux-foundation.org
 +S:    Maintained
 +F:    drivers/gpu/drm/virtio/
 +F:    include/uapi/linux/virtio_gpu.h
 +
  VIRTIO HOST (VHOST)
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -10851,7 -10592,8 +10878,7 @@@ F:   drivers/virtio/virtio_input.
  F:    include/uapi/linux/virtio_input.h
  
  VIA RHINE NETWORK DRIVER
 -M:    Roger Luethi <rl@hellgate.ch>
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/ethernet/via/via-rhine.c
  
  VIA SD/MMC CARD CONTROLLER DRIVER
@@@ -11157,7 -10899,7 +11184,7 @@@ M:   Andy Lutomirski <luto@amacapital.net
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/vdso
  S:    Maintained
 -F:    arch/x86/vdso/
 +F:    arch/x86/entry/vdso/
  
  XC2028/3028 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
diff --combined arch/ia64/kernel/efi.c
@@@ -464,6 -464,7 +464,6 @@@ efi_map_pal_code (void
                 GRANULEROUNDDOWN((unsigned long) pal_vaddr),
                 pte_val(pfn_pte(__pa(pal_vaddr) >> PAGE_SHIFT, PAGE_KERNEL)),
                 IA64_GRANULE_SHIFT);
 -      paravirt_dv_serialize_data();
        ia64_set_psr(psr);              /* restore psr */
  }
  
@@@ -1222,6 -1223,10 +1222,10 @@@ efi_initialize_iomem_resources(struct r
                                flags |= IORESOURCE_DISABLED;
                                break;
  
+                       case EFI_PERSISTENT_MEMORY:
+                               name = "Persistent Memory";
+                               break;
                        case EFI_RESERVED_TYPE:
                        case EFI_RUNTIME_SERVICES_CODE:
                        case EFI_RUNTIME_SERVICES_DATA:
diff --combined arch/x86/Kconfig
@@@ -9,143 -9,141 +9,144 @@@ config 64BI
  config X86_32
        def_bool y
        depends on !64BIT
 -      select CLKSRC_I8253
 -      select HAVE_UID16
  
  config X86_64
        def_bool y
        depends on 64BIT
 -      select X86_DEV_DMA_OPS
 -      select ARCH_USE_CMPXCHG_LOCKREF
 -      select HAVE_LIVEPATCH
  
  ### Arch settings
  config X86
        def_bool y
 -      select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
 -      select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
 +      select ACPI_LEGACY_TABLES_LOOKUP        if ACPI
 +      select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
 +      select ANON_INODES
 +      select ARCH_CLOCKSOURCE_DATA
 +      select ARCH_DISCARD_MEMBLOCK
 +      select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
 +      select ARCH_HAS_ELF_RANDOMIZE
        select ARCH_HAS_FAST_MULTIPLIER
        select ARCH_HAS_GCOV_PROFILE_ALL
+       select ARCH_HAS_PMEM_API
 +      select ARCH_HAS_SG_CHAIN
 +      select ARCH_HAVE_NMI_SAFE_CMPXCHG
 +      select ARCH_MIGHT_HAVE_ACPI_PDC         if ACPI
        select ARCH_MIGHT_HAVE_PC_PARPORT
        select ARCH_MIGHT_HAVE_PC_SERIO
 -      select HAVE_AOUT if X86_32
 -      select HAVE_UNSTABLE_SCHED_CLOCK
 -      select ARCH_SUPPORTS_NUMA_BALANCING if X86_64
 -      select ARCH_SUPPORTS_INT128 if X86_64
 -      select HAVE_IDE
 -      select HAVE_OPROFILE
 -      select HAVE_PCSPKR_PLATFORM
 -      select HAVE_PERF_EVENTS
 -      select HAVE_IOREMAP_PROT
 -      select HAVE_KPROBES
 -      select HAVE_MEMBLOCK
 -      select HAVE_MEMBLOCK_NODE_MAP
 -      select ARCH_DISCARD_MEMBLOCK
 -      select ARCH_WANT_OPTIONAL_GPIOLIB
 +      select ARCH_SUPPORTS_ATOMIC_RMW
 +      select ARCH_SUPPORTS_INT128             if X86_64
 +      select ARCH_SUPPORTS_NUMA_BALANCING     if X86_64
 +      select ARCH_USE_BUILTIN_BSWAP
 +      select ARCH_USE_CMPXCHG_LOCKREF         if X86_64
 +      select ARCH_USE_QUEUED_RWLOCKS
 +      select ARCH_USE_QUEUED_SPINLOCKS
        select ARCH_WANT_FRAME_POINTERS
 -      select HAVE_DMA_ATTRS
 -      select HAVE_DMA_CONTIGUOUS
 -      select HAVE_KRETPROBES
 +      select ARCH_WANT_IPC_PARSE_VERSION      if X86_32
 +      select ARCH_WANT_OPTIONAL_GPIOLIB
 +      select BUILDTIME_EXTABLE_SORT
 +      select CLKEVT_I8253
 +      select CLKSRC_I8253                     if X86_32
 +      select CLOCKSOURCE_VALIDATE_LAST_CYCLE
 +      select CLOCKSOURCE_WATCHDOG
 +      select CLONE_BACKWARDS                  if X86_32
 +      select COMPAT_OLD_SIGACTION             if IA32_EMULATION
 +      select DCACHE_WORD_ACCESS
 +      select EDAC_ATOMIC_SCRUB
 +      select EDAC_SUPPORT
 +      select GENERIC_CLOCKEVENTS
 +      select GENERIC_CLOCKEVENTS_BROADCAST    if X86_64 || (X86_32 && X86_LOCAL_APIC)
 +      select GENERIC_CLOCKEVENTS_MIN_ADJUST
 +      select GENERIC_CMOS_UPDATE
 +      select GENERIC_CPU_AUTOPROBE
        select GENERIC_EARLY_IOREMAP
 -      select HAVE_OPTPROBES
 -      select HAVE_KPROBES_ON_FTRACE
 -      select HAVE_FTRACE_MCOUNT_RECORD
 -      select HAVE_FENTRY if X86_64
 +      select GENERIC_FIND_FIRST_BIT
 +      select GENERIC_IOMAP
 +      select GENERIC_IRQ_PROBE
 +      select GENERIC_IRQ_SHOW
 +      select GENERIC_PENDING_IRQ              if SMP
 +      select GENERIC_SMP_IDLE_THREAD
 +      select GENERIC_STRNCPY_FROM_USER
 +      select GENERIC_STRNLEN_USER
 +      select GENERIC_TIME_VSYSCALL
 +      select HAVE_ACPI_APEI                   if ACPI
 +      select HAVE_ACPI_APEI_NMI               if ACPI
 +      select HAVE_ALIGNED_STRUCT_PAGE         if SLUB
 +      select HAVE_AOUT                        if X86_32
 +      select HAVE_ARCH_AUDITSYSCALL
 +      select HAVE_ARCH_HUGE_VMAP              if X86_64 || X86_PAE
 +      select HAVE_ARCH_JUMP_LABEL
 +      select HAVE_ARCH_KASAN                  if X86_64 && SPARSEMEM_VMEMMAP
 +      select HAVE_ARCH_KGDB
 +      select HAVE_ARCH_KMEMCHECK
 +      select HAVE_ARCH_SECCOMP_FILTER
 +      select HAVE_ARCH_SOFT_DIRTY             if X86_64
 +      select HAVE_ARCH_TRACEHOOK
 +      select HAVE_ARCH_TRANSPARENT_HUGEPAGE
 +      select HAVE_BPF_JIT                     if X86_64
 +      select HAVE_CC_STACKPROTECTOR
 +      select HAVE_CMPXCHG_DOUBLE
 +      select HAVE_CMPXCHG_LOCAL
 +      select HAVE_CONTEXT_TRACKING            if X86_64
        select HAVE_C_RECORDMCOUNT
 +      select HAVE_DEBUG_KMEMLEAK
 +      select HAVE_DEBUG_STACKOVERFLOW
 +      select HAVE_DMA_API_DEBUG
 +      select HAVE_DMA_ATTRS
 +      select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
 -      select HAVE_FUNCTION_TRACER
 -      select HAVE_FUNCTION_GRAPH_TRACER
 -      select HAVE_FUNCTION_GRAPH_FP_TEST
 -      select HAVE_SYSCALL_TRACEPOINTS
 -      select SYSCTL_EXCEPTION_TRACE
 -      select HAVE_KVM
 -      select HAVE_ARCH_KGDB
 -      select HAVE_ARCH_TRACEHOOK
 -      select HAVE_GENERIC_DMA_COHERENT if X86_32
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
 -      select USER_STACKTRACE_SUPPORT
 -      select HAVE_REGS_AND_STACK_ACCESS_API
 -      select HAVE_DMA_API_DEBUG
 -      select HAVE_KERNEL_GZIP
 +      select HAVE_FENTRY                      if X86_64
 +      select HAVE_FTRACE_MCOUNT_RECORD
 +      select HAVE_FUNCTION_GRAPH_FP_TEST
 +      select HAVE_FUNCTION_GRAPH_TRACER
 +      select HAVE_FUNCTION_TRACER
 +      select HAVE_GENERIC_DMA_COHERENT        if X86_32
 +      select HAVE_HW_BREAKPOINT
 +      select HAVE_IDE
 +      select HAVE_IOREMAP_PROT
 +      select HAVE_IRQ_EXIT_ON_IRQ_STACK       if X86_64
 +      select HAVE_IRQ_TIME_ACCOUNTING
        select HAVE_KERNEL_BZIP2
 +      select HAVE_KERNEL_GZIP
 +      select HAVE_KERNEL_LZ4
        select HAVE_KERNEL_LZMA
 -      select HAVE_KERNEL_XZ
        select HAVE_KERNEL_LZO
 -      select HAVE_KERNEL_LZ4
 -      select HAVE_HW_BREAKPOINT
 +      select HAVE_KERNEL_XZ
 +      select HAVE_KPROBES
 +      select HAVE_KPROBES_ON_FTRACE
 +      select HAVE_KRETPROBES
 +      select HAVE_KVM
 +      select HAVE_LIVEPATCH                   if X86_64
 +      select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
        select HAVE_MIXED_BREAKPOINTS_REGS
 -      select PERF_EVENTS
 +      select HAVE_OPROFILE
 +      select HAVE_OPTPROBES
 +      select HAVE_PCSPKR_PLATFORM
 +      select HAVE_PERF_EVENTS
        select HAVE_PERF_EVENTS_NMI
        select HAVE_PERF_REGS
        select HAVE_PERF_USER_STACK_DUMP
 -      select HAVE_DEBUG_KMEMLEAK
 -      select ANON_INODES
 -      select HAVE_ALIGNED_STRUCT_PAGE if SLUB
 -      select HAVE_CMPXCHG_LOCAL
 -      select HAVE_CMPXCHG_DOUBLE
 -      select HAVE_ARCH_KMEMCHECK
 -      select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP
 +      select HAVE_REGS_AND_STACK_ACCESS_API
 +      select HAVE_SYSCALL_TRACEPOINTS
 +      select HAVE_UID16                       if X86_32
 +      select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_USER_RETURN_NOTIFIER
 -      select ARCH_HAS_ELF_RANDOMIZE
 -      select HAVE_ARCH_JUMP_LABEL
 -      select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
 -      select SPARSE_IRQ
 -      select GENERIC_FIND_FIRST_BIT
 -      select GENERIC_IRQ_PROBE
 -      select GENERIC_PENDING_IRQ if SMP
 -      select GENERIC_IRQ_SHOW
 -      select GENERIC_CLOCKEVENTS_MIN_ADJUST
        select IRQ_FORCED_THREADING
 -      select HAVE_BPF_JIT if X86_64
 -      select HAVE_ARCH_TRANSPARENT_HUGEPAGE
 -      select HAVE_ARCH_HUGE_VMAP if X86_64 || (X86_32 && X86_PAE)
 -      select ARCH_HAS_SG_CHAIN
 -      select CLKEVT_I8253
 -      select ARCH_HAVE_NMI_SAFE_CMPXCHG
 -      select GENERIC_IOMAP
 -      select DCACHE_WORD_ACCESS
 -      select GENERIC_SMP_IDLE_THREAD
 -      select ARCH_WANT_IPC_PARSE_VERSION if X86_32
 -      select HAVE_ARCH_SECCOMP_FILTER
 -      select BUILDTIME_EXTABLE_SORT
 -      select GENERIC_CMOS_UPDATE
 -      select HAVE_ARCH_SOFT_DIRTY if X86_64
 -      select CLOCKSOURCE_WATCHDOG
 -      select GENERIC_CLOCKEVENTS
 -      select ARCH_CLOCKSOURCE_DATA
 -      select CLOCKSOURCE_VALIDATE_LAST_CYCLE
 -      select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC)
 -      select GENERIC_TIME_VSYSCALL
 -      select GENERIC_STRNCPY_FROM_USER
 -      select GENERIC_STRNLEN_USER
 -      select HAVE_CONTEXT_TRACKING if X86_64
 -      select HAVE_IRQ_TIME_ACCOUNTING
 -      select VIRT_TO_BUS
 -      select MODULES_USE_ELF_REL if X86_32
 -      select MODULES_USE_ELF_RELA if X86_64
 -      select CLONE_BACKWARDS if X86_32
 -      select ARCH_USE_BUILTIN_BSWAP
 -      select ARCH_USE_QUEUE_RWLOCK
 -      select OLD_SIGSUSPEND3 if X86_32 || IA32_EMULATION
 -      select OLD_SIGACTION if X86_32
 -      select COMPAT_OLD_SIGACTION if IA32_EMULATION
 +      select MODULES_USE_ELF_RELA             if X86_64
 +      select MODULES_USE_ELF_REL              if X86_32
 +      select OLD_SIGACTION                    if X86_32
 +      select OLD_SIGSUSPEND3                  if X86_32 || IA32_EMULATION
 +      select PERF_EVENTS
        select RTC_LIB
 -      select HAVE_DEBUG_STACKOVERFLOW
 -      select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
 -      select HAVE_CC_STACKPROTECTOR
 -      select GENERIC_CPU_AUTOPROBE
 -      select HAVE_ARCH_AUDITSYSCALL
 -      select ARCH_SUPPORTS_ATOMIC_RMW
 -      select HAVE_ACPI_APEI if ACPI
 -      select HAVE_ACPI_APEI_NMI if ACPI
 -      select ACPI_LEGACY_TABLES_LOOKUP if ACPI
 -      select X86_FEATURE_NAMES if PROC_FS
 +      select SPARSE_IRQ
        select SRCU
 +      select SYSCTL_EXCEPTION_TRACE
 +      select USER_STACKTRACE_SUPPORT
 +      select VIRT_TO_BUS
 +      select X86_DEV_DMA_OPS                  if X86_64
 +      select X86_FEATURE_NAMES                if PROC_FS
  
  config INSTRUCTION_DECODER
        def_bool y
@@@ -263,6 -261,10 +264,6 @@@ config X86_64_SM
        def_bool y
        depends on X86_64 && SMP
  
 -config X86_HT
 -      def_bool y
 -      depends on SMP
 -
  config X86_32_LAZY_GS
        def_bool y
        depends on X86_32 && !CC_STACKPROTECTOR
@@@ -340,7 -342,7 +341,7 @@@ config X86_FEATURE_NAME
  
  config X86_X2APIC
        bool "Support x2apic"
 -      depends on X86_LOCAL_APIC && X86_64 && IRQ_REMAP
 +      depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
        ---help---
          This enables x2apic support on CPUs that have this feature.
  
@@@ -440,7 -442,6 +441,7 @@@ config X86_U
        depends on X86_EXTENDED_PLATFORM
        depends on NUMA
        depends on X86_X2APIC
 +      depends on PCI
        ---help---
          This option is needed in order to support SGI Ultraviolet systems.
          If you don't have one of these, you should say N here.
@@@ -466,6 -467,7 +467,6 @@@ config X86_INTEL_C
        select X86_REBOOTFIXUPS
        select OF
        select OF_EARLY_FLATTREE
 -      select IRQ_DOMAIN
        ---help---
          Select for the Intel CE media processor (CE4100) SOC.
          This option compiles in support for the CE4100 SOC for settop
@@@ -665,7 -667,7 +666,7 @@@ config PARAVIRT_DEBU
  config PARAVIRT_SPINLOCKS
        bool "Paravirtualization layer for spinlocks"
        depends on PARAVIRT && SMP
 -      select UNINLINE_SPIN_UNLOCK
 +      select UNINLINE_SPIN_UNLOCK if !QUEUED_SPINLOCKS
        ---help---
          Paravirtualized spinlocks allow a pvops backend to replace the
          spinlock implementation with something virtualization-friendly
@@@ -850,12 -852,11 +851,12 @@@ config NR_CPU
        default "1" if !SMP
        default "8192" if MAXSMP
        default "32" if SMP && X86_BIGSMP
 -      default "8" if SMP
 +      default "8" if SMP && X86_32
 +      default "64" if SMP
        ---help---
          This allows you to specify the maximum number of CPUs which this
          kernel will support.  If CPUMASK_OFFSTACK is enabled, the maximum
 -        supported value is 4096, otherwise the maximum value is 512.  The
 +        supported value is 8192, otherwise the maximum value is 512.  The
          minimum value which makes sense is 2.
  
          This is purely to save memory - each supported CPU adds
  
  config SCHED_SMT
        bool "SMT (Hyperthreading) scheduler support"
 -      depends on X86_HT
 +      depends on SMP
        ---help---
          SMT scheduler support improves the CPU scheduler's decision making
          when dealing with Intel Pentium 4 chips with HyperThreading at a
  config SCHED_MC
        def_bool y
        prompt "Multi-core scheduler support"
 -      depends on X86_HT
 +      depends on SMP
        ---help---
          Multi-core scheduler support improves the CPU scheduler's decision
          making when dealing with multi-core CPU chips at a cost of slightly
@@@ -914,12 -915,12 +915,12 @@@ config X86_UP_IOAPI
  config X86_LOCAL_APIC
        def_bool y
        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
 -      select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
 +      select IRQ_DOMAIN_HIERARCHY
 +      select PCI_MSI_IRQ_DOMAIN if PCI_MSI
  
  config X86_IO_APIC
        def_bool y
        depends on X86_LOCAL_APIC || X86_UP_IOAPIC
 -      select IRQ_DOMAIN
  
  config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
        bool "Reroute for broken boot IRQs"
@@@ -1055,19 -1056,24 +1056,19 @@@ config TOSHIB
          Say N otherwise.
  
  config I8K
 -      tristate "Dell laptop support"
 +      tristate "Dell i8k legacy laptop support"
        select HWMON
 +      select SENSORS_DELL_SMM
        ---help---
 -        This adds a driver to safely access the System Management Mode
 -        of the CPU on the Dell Inspiron 8000. The System Management Mode
 -        is used to read cpu temperature and cooling fan status and to
 -        control the fans on the I8K portables.
 -
 -        This driver has been tested only on the Inspiron 8000 but it may
 -        also work with other Dell laptops. You can force loading on other
 -        models by passing the parameter `force=1' to the module. Use at
 -        your own risk.
 -
 -        For information on utilities to make use of this driver see the
 -        I8K Linux utilities web site at:
 -        <http://people.debian.org/~dz/i8k/>
 -
 -        Say Y if you intend to run this kernel on a Dell Inspiron 8000.
 +        This option enables legacy /proc/i8k userspace interface in hwmon
 +        dell-smm-hwmon driver. Character file /proc/i8k reports bios version,
 +        temperature and allows controlling fan speeds of Dell laptops via
 +        System Management Mode. For old Dell laptops (like Dell Inspiron 8000)
 +        it reports also power and hotkey status. For fan speed control is
 +        needed userspace package i8kutils.
 +
 +        Say Y if you intend to run this kernel on old Dell laptops or want to
 +        use userspace package i8kutils.
          Say N otherwise.
  
  config X86_REBOOTFIXUPS
@@@ -1419,6 -1425,9 +1420,9 @@@ source "mm/Kconfig
  
  config X86_PMEM_LEGACY
        bool "Support non-standard NVDIMMs and ADR protected memory"
+       depends on PHYS_ADDR_T_64BIT
+       depends on BLK_DEV
+       select LIBNVDIMM
        help
          Treat memory marked using the non-standard e820 type of 12 as used
          by the Intel Sandy Bridge-EP reference BIOS as protected memory.
@@@ -4,11 -4,12 +4,12 @@@
  /* Caches aren't brain-dead on the intel. */
  #include <asm-generic/cacheflush.h>
  #include <asm/special_insns.h>
+ #include <asm/uaccess.h>
  
  /*
   * The set_memory_* API can be used to change various attributes of a virtual
   * address range. The attributes include:
 - * Cachability   : UnCached, WriteCombining, WriteBack
 + * Cachability   : UnCached, WriteCombining, WriteThrough, WriteBack
   * Executability : eXeutable, NoteXecutable
   * Read/Write    : ReadOnly, ReadWrite
   * Presence      : NotPresent
  
  int _set_memory_uc(unsigned long addr, int numpages);
  int _set_memory_wc(unsigned long addr, int numpages);
 +int _set_memory_wt(unsigned long addr, int numpages);
  int _set_memory_wb(unsigned long addr, int numpages);
  int set_memory_uc(unsigned long addr, int numpages);
  int set_memory_wc(unsigned long addr, int numpages);
 +int set_memory_wt(unsigned long addr, int numpages);
  int set_memory_wb(unsigned long addr, int numpages);
  int set_memory_x(unsigned long addr, int numpages);
  int set_memory_nx(unsigned long addr, int numpages);
@@@ -50,12 -49,10 +51,12 @@@ int set_memory_4k(unsigned long addr, i
  
  int set_memory_array_uc(unsigned long *addr, int addrinarray);
  int set_memory_array_wc(unsigned long *addr, int addrinarray);
 +int set_memory_array_wt(unsigned long *addr, int addrinarray);
  int set_memory_array_wb(unsigned long *addr, int addrinarray);
  
  int set_pages_array_uc(struct page **pages, int addrinarray);
  int set_pages_array_wc(struct page **pages, int addrinarray);
 +int set_pages_array_wt(struct page **pages, int addrinarray);
  int set_pages_array_wb(struct page **pages, int addrinarray);
  
  /*
@@@ -108,4 -105,75 +109,75 @@@ static inline int rodata_test(void
  }
  #endif
  
+ #ifdef ARCH_HAS_NOCACHE_UACCESS
+ /**
+  * arch_memcpy_to_pmem - copy data to persistent memory
+  * @dst: destination buffer for the copy
+  * @src: source buffer for the copy
+  * @n: length of the copy in bytes
+  *
+  * Copy data to persistent memory media via non-temporal stores so that
+  * a subsequent arch_wmb_pmem() can flush cpu and memory controller
+  * write buffers to guarantee durability.
+  */
+ static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src,
+               size_t n)
+ {
+       int unwritten;
+       /*
+        * We are copying between two kernel buffers, if
+        * __copy_from_user_inatomic_nocache() returns an error (page
+        * fault) we would have already reported a general protection fault
+        * before the WARN+BUG.
+        */
+       unwritten = __copy_from_user_inatomic_nocache((void __force *) dst,
+                       (void __user *) src, n);
+       if (WARN(unwritten, "%s: fault copying %p <- %p unwritten: %d\n",
+                               __func__, dst, src, unwritten))
+               BUG();
+ }
+ /**
+  * arch_wmb_pmem - synchronize writes to persistent memory
+  *
+  * After a series of arch_memcpy_to_pmem() operations this drains data
+  * from cpu write buffers and any platform (memory controller) buffers
+  * to ensure that written data is durable on persistent memory media.
+  */
+ static inline void arch_wmb_pmem(void)
+ {
+       /*
+        * wmb() to 'sfence' all previous writes such that they are
+        * architecturally visible to 'pcommit'.  Note, that we've
+        * already arranged for pmem writes to avoid the cache via
+        * arch_memcpy_to_pmem().
+        */
+       wmb();
+       pcommit_sfence();
+ }
+ static inline bool __arch_has_wmb_pmem(void)
+ {
+ #ifdef CONFIG_X86_64
+       /*
+        * We require that wmb() be an 'sfence', that is only guaranteed on
+        * 64-bit builds
+        */
+       return static_cpu_has(X86_FEATURE_PCOMMIT);
+ #else
+       return false;
+ #endif
+ }
+ #else /* ARCH_HAS_NOCACHE_UACCESS i.e. ARCH=um */
+ extern void arch_memcpy_to_pmem(void __pmem *dst, const void *src, size_t n);
+ extern void arch_wmb_pmem(void);
+ static inline bool __arch_has_wmb_pmem(void)
+ {
+       return false;
+ }
+ #endif
  #endif /* _ASM_X86_CACHEFLUSH_H */
    */
  
  #define ARCH_HAS_IOREMAP_WC
 +#define ARCH_HAS_IOREMAP_WT
  
  #include <linux/string.h>
  #include <linux/compiler.h>
  #include <asm/page.h>
  #include <asm/early_ioremap.h>
 +#include <asm/pgtable_types.h>
  
  #define build_mmio_read(name, size, type, reg, barrier) \
  static inline type name(const volatile void __iomem *addr) \
@@@ -179,7 -177,6 +179,7 @@@ static inline unsigned int isa_virt_to_
   * look at pci_iomap().
   */
  extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
 +extern void __iomem *ioremap_uc(resource_size_t offset, unsigned long size);
  extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
  extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
                                unsigned long prot_val);
@@@ -200,6 -197,8 +200,6 @@@ extern void set_iounmap_nonlazy(void)
  
  #include <asm-generic/iomap.h>
  
 -#include <linux/vmalloc.h>
 -
  /*
   * Convert a virtual cached pointer to an uncached pointer
   */
@@@ -248,6 -247,12 +248,12 @@@ static inline void flush_write_buffers(
  #endif
  }
  
+ static inline void __pmem *arch_memremap_pmem(resource_size_t offset,
+       unsigned long size)
+ {
+       return (void __force __pmem *) ioremap_cache(offset, size);
+ }
  #endif /* __KERNEL__ */
  
  extern void native_io_delay(void);
@@@ -321,7 -326,6 +327,7 @@@ extern void unxlate_dev_mem_ptr(phys_ad
  extern int ioremap_change_attr(unsigned long vaddr, unsigned long size,
                                enum page_cache_mode pcm);
  extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
 +extern void __iomem *ioremap_wt(resource_size_t offset, unsigned long size);
  
  extern bool is_early_ioremap_ptep(pte_t *ptep);
  
@@@ -340,9 -344,6 +346,9 @@@ extern bool xen_biovec_phys_mergeable(c
  #define IO_SPACE_LIMIT 0xffff
  
  #ifdef CONFIG_MTRR
 +extern int __must_check arch_phys_wc_index(int handle);
 +#define arch_phys_wc_index arch_phys_wc_index
 +
  extern int __must_check arch_phys_wc_add(unsigned long base,
                                         unsigned long size);
  extern void arch_phys_wc_del(int handle);
diff --combined arch/x86/kernel/e820.c
@@@ -149,6 -149,7 +149,7 @@@ static void __init e820_print_type(u32 
        case E820_UNUSABLE:
                printk(KERN_CONT "unusable");
                break;
+       case E820_PMEM:
        case E820_PRAM:
                printk(KERN_CONT "persistent (type %u)", type);
                break;
@@@ -918,11 -919,32 +919,32 @@@ static inline const char *e820_type_to_
        case E820_ACPI: return "ACPI Tables";
        case E820_NVS:  return "ACPI Non-volatile Storage";
        case E820_UNUSABLE:     return "Unusable memory";
-       case E820_PRAM: return "Persistent RAM";
+       case E820_PRAM: return "Persistent Memory (legacy)";
+       case E820_PMEM: return "Persistent Memory";
        default:        return "reserved";
        }
  }
  
+ static bool do_mark_busy(u32 type, struct resource *res)
+ {
+       /* this is the legacy bios/dos rom-shadow + mmio region */
+       if (res->start < (1ULL<<20))
+               return true;
+       /*
+        * Treat persistent memory like device memory, i.e. reserve it
+        * for exclusive use of a driver
+        */
+       switch (type) {
+       case E820_RESERVED:
+       case E820_PRAM:
+       case E820_PMEM:
+               return false;
+       default:
+               return true;
+       }
+ }
  /*
   * Mark e820 reserved areas as busy for the resource manager.
   */
@@@ -952,9 -974,7 +974,7 @@@ void __init e820_reserve_resources(void
                 * pci device BAR resource and insert them later in
                 * pcibios_resource_survey()
                 */
-               if (((e820.map[i].type != E820_RESERVED) &&
-                    (e820.map[i].type != E820_PRAM)) ||
-                    res->start < (1ULL<<20)) {
+               if (do_mark_busy(e820.map[i].type, res)) {
                        res->flags |= IORESOURCE_BUSY;
                        insert_resource(&iomem_resource, res);
                }
@@@ -1123,8 -1143,7 +1143,8 @@@ void __init memblock_find_dma_reserve(v
                nr_pages += end_pfn - start_pfn;
        }
  
 -      for_each_free_mem_range(u, NUMA_NO_NODE, &start, &end, NULL) {
 +      for_each_free_mem_range(u, NUMA_NO_NODE, MEMBLOCK_NONE, &start, &end,
 +                              NULL) {
                start_pfn = min_t(unsigned long, PFN_UP(start), MAX_DMA_PFN);
                end_pfn = min_t(unsigned long, PFN_DOWN(end), MAX_DMA_PFN);
                if (start_pfn < end_pfn)
@@@ -117,27 -117,6 +117,27 @@@ void efi_get_time(struct timespec *now
        now->tv_nsec = 0;
  }
  
 +void __init efi_find_mirror(void)
 +{
 +      void *p;
 +      u64 mirror_size = 0, total_size = 0;
 +
 +      for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
 +              efi_memory_desc_t *md = p;
 +              unsigned long long start = md->phys_addr;
 +              unsigned long long size = md->num_pages << EFI_PAGE_SHIFT;
 +
 +              total_size += size;
 +              if (md->attribute & EFI_MEMORY_MORE_RELIABLE) {
 +                      memblock_mark_mirror(start, size);
 +                      mirror_size += size;
 +              }
 +      }
 +      if (mirror_size)
 +              pr_info("Memory: %lldM/%lldM mirrored memory\n",
 +                      mirror_size>>20, total_size>>20);
 +}
 +
  /*
   * Tell the kernel about the EFI memory map.  This might include
   * more than the max 128 entries that can fit in the e820 legacy
@@@ -174,6 -153,9 +174,9 @@@ static void __init do_add_efi_memmap(vo
                case EFI_UNUSABLE_MEMORY:
                        e820_type = E820_UNUSABLE;
                        break;
+               case EFI_PERSISTENT_MEMORY:
+                       e820_type = E820_PMEM;
+                       break;
                default:
                        /*
                         * EFI_RESERVED_TYPE EFI_RUNTIME_SERVICES_CODE
@@@ -522,8 -504,6 +525,8 @@@ void __init efi_init(void
  
        if (efi_enabled(EFI_DBG))
                print_efi_memmap();
 +
 +      efi_esrt_init();
  }
  
  void __init efi_late_init(void)
diff --combined drivers/Makefile
@@@ -64,6 -64,7 +64,7 @@@ obj-$(CONFIG_FB_INTEL)          += vide
  
  obj-$(CONFIG_PARPORT)         += parport/
  obj-y                         += base/ block/ misc/ mfd/ nfc/
+ obj-$(CONFIG_LIBNVDIMM)               += nvdimm/
  obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/
  obj-$(CONFIG_NUBUS)           += nubus/
  obj-y                         += macintosh/
@@@ -98,6 -99,7 +99,6 @@@ obj-$(CONFIG_USB_GADGET)      += usb
  obj-$(CONFIG_SERIO)           += input/serio/
  obj-$(CONFIG_GAMEPORT)                += input/gameport/
  obj-$(CONFIG_INPUT)           += input/
 -obj-$(CONFIG_I2O)             += message/
  obj-$(CONFIG_RTC_LIB)         += rtc/
  obj-y                         += i2c/ media/
  obj-$(CONFIG_PPS)             += pps/
diff --combined drivers/acpi/Kconfig
@@@ -54,9 -54,6 +54,9 @@@ config ACPI_GENERIC_GS
  config ACPI_SYSTEM_POWER_STATES_SUPPORT
        bool
  
 +config ACPI_CCA_REQUIRED
 +      bool
 +
  config ACPI_SLEEP
        bool
        depends on SUSPEND || HIBERNATION
@@@ -65,7 -62,7 +65,7 @@@
  
  config ACPI_PROCFS_POWER
        bool "Deprecated power /proc/acpi directories"
 -      depends on PROC_FS
 +      depends on X86 && PROC_FS
        help
          For backwards compatibility, this option allows
            deprecated power /proc/acpi/ directories to exist, even when
@@@ -386,6 -383,32 +386,32 @@@ config ACPI_REDUCED_HARDWARE_ONL
  
          If you are unsure what to do, do not enable this option.
  
+ config ACPI_NFIT
+       tristate "ACPI NVDIMM Firmware Interface Table (NFIT)"
+       depends on PHYS_ADDR_T_64BIT
+       depends on BLK_DEV
+       select LIBNVDIMM
+       help
+         Infrastructure to probe ACPI 6 compliant platforms for
+         NVDIMMs (NFIT) and register a libnvdimm device tree.  In
+         addition to storage devices this also enables libnvdimm to pass
+         ACPI._DSM messages for platform/dimm configuration.
+         To compile this driver as a module, choose M here:
+         the module will be called nfit.
+ config ACPI_NFIT_DEBUG
+       bool "NFIT DSM debug"
+       depends on ACPI_NFIT
+       depends on DYNAMIC_DEBUG
+       default n
+       help
+         Enabling this option causes the nfit driver to dump the
+         input and output buffers of _DSM operations on the ACPI0012
+         device and its children.  This can be very verbose, so leave
+         it disabled unless you are debugging a hardware / firmware
+         issue.
  source "drivers/acpi/apei/Kconfig"
  
  config ACPI_EXTLOG
diff --combined drivers/acpi/Makefile
@@@ -52,6 -52,9 +52,6 @@@ acpi-$(CONFIG_X86)            += acpi_cmos_rtc.
  acpi-$(CONFIG_DEBUG_FS)               += debugfs.o
  acpi-$(CONFIG_ACPI_NUMA)      += numa.o
  acpi-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o
 -ifdef CONFIG_ACPI_VIDEO
 -acpi-y                                += video_detect.o
 -endif
  acpi-y                                += acpi_lpat.o
  acpi-$(CONFIG_ACPI_GENERIC_GSI) += gsi.o
  
@@@ -68,6 -71,7 +68,7 @@@ obj-$(CONFIG_ACPI_PCI_SLOT)   += pci_slot
  obj-$(CONFIG_ACPI_PROCESSOR)  += processor.o
  obj-y                         += container.o
  obj-$(CONFIG_ACPI_THERMAL)    += thermal.o
+ obj-$(CONFIG_ACPI_NFIT)               += nfit.o
  obj-y                         += acpi_memhotplug.o
  obj-$(CONFIG_ACPI_HOTPLUG_IOAPIC) += ioapic.o
  obj-$(CONFIG_ACPI_BATTERY)    += battery.o
@@@ -92,5 -96,3 +93,5 @@@ obj-$(CONFIG_ACPI_EXTLOG)     += acpi_extlo
  obj-$(CONFIG_PMIC_OPREGION)   += pmic/intel_pmic.o
  obj-$(CONFIG_CRC_PMIC_OPREGION) += pmic/intel_pmic_crc.o
  obj-$(CONFIG_XPOWER_PMIC_OPREGION) += pmic/intel_pmic_xpower.o
 +
 +video-objs                    += acpi_video.o video_detect.o
diff --combined fs/block_dev.c
@@@ -14,7 -14,6 +14,7 @@@
  #include <linux/device_cgroup.h>
  #include <linux/highmem.h>
  #include <linux/blkdev.h>
 +#include <linux/backing-dev.h>
  #include <linux/module.h>
  #include <linux/blkpg.h>
  #include <linux/magic.h>
@@@ -377,7 -376,7 +377,7 @@@ int bdev_read_page(struct block_device 
                        struct page *page)
  {
        const struct block_device_operations *ops = bdev->bd_disk->fops;
-       if (!ops->rw_page)
+       if (!ops->rw_page || bdev_get_integrity(bdev))
                return -EOPNOTSUPP;
        return ops->rw_page(bdev, sector + get_start_sect(bdev), page, READ);
  }
@@@ -408,7 -407,7 +408,7 @@@ int bdev_write_page(struct block_devic
        int result;
        int rw = (wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : WRITE;
        const struct block_device_operations *ops = bdev->bd_disk->fops;
-       if (!ops->rw_page)
+       if (!ops->rw_page || bdev_get_integrity(bdev))
                return -EOPNOTSUPP;
        set_page_writeback(page);
        result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, rw);
@@@ -547,8 -546,7 +547,8 @@@ static struct file_system_type bd_type 
        .kill_sb        = kill_anon_super,
  };
  
 -static struct super_block *blockdev_superblock __read_mostly;
 +struct super_block *blockdev_superblock __read_mostly;
 +EXPORT_SYMBOL_GPL(blockdev_superblock);
  
  void __init bdev_cache_init(void)
  {
@@@ -689,6 -687,11 +689,6 @@@ static struct block_device *bd_acquire(
        return bdev;
  }
  
 -int sb_is_blkdev_sb(struct super_block *sb)
 -{
 -      return sb == blockdev_superblock;
 -}
 -
  /* Call when you free inode */
  
  void bd_forget(struct inode *inode)
diff --combined include/linux/acpi.h
@@@ -158,16 -158,6 +158,16 @@@ typedef u32 phys_cpuid_t
  #define PHYS_CPUID_INVALID (phys_cpuid_t)(-1)
  #endif
  
 +static inline bool invalid_logical_cpuid(u32 cpuid)
 +{
 +      return (int)cpuid < 0;
 +}
 +
 +static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id)
 +{
 +      return phys_id == PHYS_CPUID_INVALID;
 +}
 +
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  /* Arch dependent functions for cpu hotplug support */
  int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, int *pcpu);
@@@ -253,16 -243,59 +253,21 @@@ extern bool wmi_has_guid(const char *gu
  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR                0x0400
  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO         0x0800
  
 -#if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE)
 -
 -extern long acpi_video_get_capabilities(acpi_handle graphics_dev_handle);
 +extern char acpi_video_backlight_string[];
  extern long acpi_is_video_device(acpi_handle handle);
 -extern void acpi_video_dmi_promote_vendor(void);
 -extern void acpi_video_dmi_demote_vendor(void);
 -extern int acpi_video_backlight_support(void);
 -extern int acpi_video_display_switch_support(void);
 -
 -#else
 -
 -static inline long acpi_video_get_capabilities(acpi_handle graphics_dev_handle)
 -{
 -      return 0;
 -}
 -
 -static inline long acpi_is_video_device(acpi_handle handle)
 -{
 -      return 0;
 -}
 -
 -static inline void acpi_video_dmi_promote_vendor(void)
 -{
 -}
 -
 -static inline void acpi_video_dmi_demote_vendor(void)
 -{
 -}
 -
 -static inline int acpi_video_backlight_support(void)
 -{
 -      return 0;
 -}
 -
 -static inline int acpi_video_display_switch_support(void)
 -{
 -      return 0;
 -}
 -
 -#endif /* defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE) */
 -
  extern int acpi_blacklisted(void);
  extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d);
  extern void acpi_osi_setup(char *str);
 +extern bool acpi_osi_is_win8(void);
  
  #ifdef CONFIG_ACPI_NUMA
+ int acpi_map_pxm_to_online_node(int pxm);
  int acpi_get_node(acpi_handle handle);
  #else
+ static inline int acpi_map_pxm_to_online_node(int pxm)
+ {
+       return 0;
+ }
  static inline int acpi_get_node(acpi_handle handle)
  {
        return 0;
@@@ -304,9 -337,6 +309,9 @@@ int acpi_check_region(resource_size_t s
  
  int acpi_resources_are_enforced(void);
  
 +int acpi_reserve_region(u64 start, unsigned int length, u8 space_id,
 +                      unsigned long flags, char *desc);
 +
  #ifdef CONFIG_HIBERNATION
  void __init acpi_no_s4_hw_signature(void);
  #endif
@@@ -415,7 -445,6 +420,7 @@@ extern acpi_status acpi_pci_osc_control
  #define ACPI_OST_SC_INSERT_NOT_SUPPORTED      0x82
  
  extern void acpi_early_init(void);
 +extern void acpi_subsystem_init(void);
  
  extern int acpi_nvs_register(__u64 start, __u64 size);
  
@@@ -470,7 -499,6 +475,7 @@@ static inline const char *acpi_dev_name
  }
  
  static inline void acpi_early_init(void) { }
 +static inline void acpi_subsystem_init(void) { }
  
  static inline int early_acpi_boot_init(void)
  {
@@@ -502,13 -530,6 +507,13 @@@ static inline int acpi_check_region(res
        return 0;
  }
  
 +static inline int acpi_reserve_region(u64 start, unsigned int length,
 +                                    u8 space_id, unsigned long flags,
 +                                    char *desc)
 +{
 +      return -ENXIO;
 +}
 +
  struct acpi_table_header;
  static inline int acpi_table_parse(char *id,
                                int (*handler)(struct acpi_table_header *))
@@@ -553,11 -574,6 +558,11 @@@ static inline int acpi_device_modalias(
        return -ENODEV;
  }
  
 +static inline bool acpi_check_dma(struct acpi_device *adev, bool *coherent)
 +{
 +      return false;
 +}
 +
  #define ACPI_PTR(_ptr)        (NULL)
  
  #endif        /* !CONFIG_ACPI */
@@@ -710,8 -726,6 +715,8 @@@ static inline void acpi_dev_remove_driv
        if (adev)
                adev->driver_gpios = NULL;
  }
 +
 +int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index);
  #else
  static inline int acpi_dev_add_driver_gpios(struct acpi_device *adev,
                              const struct acpi_gpio_mapping *gpios)
        return -ENXIO;
  }
  static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev) {}
 +
 +static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
 +{
 +      return -ENXIO;
 +}
  #endif
  
  /* Device properties */
diff --combined include/linux/compiler.h
@@@ -21,6 -21,7 +21,7 @@@
  # define __rcu                __attribute__((noderef, address_space(4)))
  #else
  # define __rcu
+ # define __pmem               __attribute__((noderef, address_space(5)))
  #endif
  extern void __chk_user_ptr(const volatile void __user *);
  extern void __chk_io_ptr(const volatile void __iomem *);
@@@ -42,6 -43,7 +43,7 @@@
  # define __cond_lock(x,c) (c)
  # define __percpu
  # define __rcu
+ # define __pmem
  #endif
  
  /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
@@@ -250,23 -252,7 +252,23 @@@ static __always_inline void __write_onc
        ({ union { typeof(x) __val; char __c[1]; } __u; __read_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
  
  #define WRITE_ONCE(x, val) \
 -      ({ typeof(x) __val = (val); __write_once_size(&(x), &__val, sizeof(__val)); __val; })
 +      ({ union { typeof(x) __val; char __c[1]; } __u = { .__val = (val) }; __write_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
 +
 +/**
 + * READ_ONCE_CTRL - Read a value heading a control dependency
 + * @x: The value to be read, heading the control dependency
 + *
 + * Control dependencies are tricky.  See Documentation/memory-barriers.txt
 + * for important information on how to use them.  Note that in many cases,
 + * use of smp_load_acquire() will be much simpler.  Control dependencies
 + * should be avoided except on the hottest of hotpaths.
 + */
 +#define READ_ONCE_CTRL(x) \
 +({ \
 +      typeof(x) __val = READ_ONCE(x); \
 +      smp_read_barrier_depends(); /* Enforce control dependency. */ \
 +      __val; \
 +})
  
  #endif /* __KERNEL__ */
  
   * with an explicit memory barrier or atomic instruction that provides the
   * required ordering.
   *
 - * If possible use READ_ONCE/ASSIGN_ONCE instead.
 + * If possible use READ_ONCE()/WRITE_ONCE() instead.
   */
  #define __ACCESS_ONCE(x) ({ \
         __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \
diff --combined include/linux/efi.h
@@@ -85,7 -85,8 +85,8 @@@ typedef       struct 
  #define EFI_MEMORY_MAPPED_IO          11
  #define EFI_MEMORY_MAPPED_IO_PORT_SPACE       12
  #define EFI_PAL_CODE                  13
- #define EFI_MAX_MEMORY_TYPE           14
+ #define EFI_PERSISTENT_MEMORY         14
+ #define EFI_MAX_MEMORY_TYPE           15
  
  /* Attribute values: */
  #define EFI_MEMORY_UC         ((u64)0x0000000000000001ULL)    /* uncached */
@@@ -96,8 -97,6 +97,8 @@@
  #define EFI_MEMORY_WP         ((u64)0x0000000000001000ULL)    /* write-protect */
  #define EFI_MEMORY_RP         ((u64)0x0000000000002000ULL)    /* read-protect */
  #define EFI_MEMORY_XP         ((u64)0x0000000000004000ULL)    /* execute-protect */
 +#define EFI_MEMORY_MORE_RELIABLE \
 +                              ((u64)0x0000000000010000ULL)    /* higher reliability */
  #define EFI_MEMORY_RUNTIME    ((u64)0x8000000000000000ULL)    /* range requires runtime mapping */
  #define EFI_MEMORY_DESCRIPTOR_VERSION 1
  
@@@ -585,9 -584,6 +586,9 @@@ void efi_native_runtime_setup(void)
  #define EFI_FILE_INFO_ID \
      EFI_GUID(  0x9576e92, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
  
 +#define EFI_SYSTEM_RESOURCE_TABLE_GUID \
 +    EFI_GUID(  0xb122a263, 0x3661, 0x4f68, 0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 )
 +
  #define EFI_FILE_SYSTEM_GUID \
      EFI_GUID(  0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
  
@@@ -828,7 -824,6 +829,7 @@@ extern struct efi 
        unsigned long fw_vendor;        /* fw_vendor */
        unsigned long runtime;          /* runtime table */
        unsigned long config_table;     /* config tables */
 +      unsigned long esrt;             /* ESRT table */
        efi_get_time_t *get_time;
        efi_set_time_t *set_time;
        efi_get_wakeup_time_t *get_wakeup_time;
@@@ -870,7 -865,6 +871,7 @@@ extern void efi_enter_virtual_mode (voi
  extern void efi_late_init(void);
  extern void efi_free_boot_services(void);
  extern efi_status_t efi_query_variable_store(u32 attributes, unsigned long size);
 +extern void efi_find_mirror(void);
  #else
  static inline void efi_late_init(void) {}
  static inline void efi_free_boot_services(void) {}
@@@ -882,11 -876,6 +883,11 @@@ static inline efi_status_t efi_query_va
  #endif
  extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);
  extern int efi_config_init(efi_config_table_type_t *arch_tables);
 +#ifdef CONFIG_EFI_ESRT
 +extern void __init efi_esrt_init(void);
 +#else
 +static inline void efi_esrt_init(void) { }
 +#endif
  extern int efi_config_parse_tables(void *config_tables, int count, int sz,
                                   efi_config_table_type_t *arch_tables);
  extern u64 efi_get_iobase (void);
@@@ -894,15 -883,12 +895,15 @@@ extern u32 efi_mem_type (unsigned long 
  extern u64 efi_mem_attributes (unsigned long phys_addr);
  extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);
  extern int __init efi_uart_console_only (void);
 +extern u64 efi_mem_desc_end(efi_memory_desc_t *md);
 +extern int efi_mem_desc_lookup(u64 phys_addr, efi_memory_desc_t *out_md);
  extern void efi_initialize_iomem_resources(struct resource *code_resource,
                struct resource *data_resource, struct resource *bss_resource);
  extern void efi_get_time(struct timespec *now);
  extern void efi_reserve_boot_services(void);
  extern int efi_get_fdt_params(struct efi_fdt_params *params, int verbose);
  extern struct efi_memory_map memmap;
 +extern struct kobject *efi_kobj;
  
  extern int efi_reboot_quirk_mode;
  extern bool efi_poweroff_required(void);
diff --combined include/linux/pmem.h
index 0000000,f6481a0..d211404
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,153 +1,152 @@@
 -      /* TODO: convert to ioremap_wt() */
 -      return (void __pmem __force *)ioremap_nocache(offset, size);
+ /*
+  * Copyright(c) 2015 Intel Corporation. All rights reserved.
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of version 2 of the GNU General Public License as
+  * published by the Free Software Foundation.
+  *
+  * This program is distributed in the hope that it will be useful, but
+  * WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * General Public License for more details.
+  */
+ #ifndef __PMEM_H__
+ #define __PMEM_H__
+ #include <linux/io.h>
+ #ifdef CONFIG_ARCH_HAS_PMEM_API
+ #include <asm/cacheflush.h>
+ #else
+ static inline void arch_wmb_pmem(void)
+ {
+       BUG();
+ }
+ static inline bool __arch_has_wmb_pmem(void)
+ {
+       return false;
+ }
+ static inline void __pmem *arch_memremap_pmem(resource_size_t offset,
+               unsigned long size)
+ {
+       return NULL;
+ }
+ static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src,
+               size_t n)
+ {
+       BUG();
+ }
+ #endif
+ /*
+  * Architectures that define ARCH_HAS_PMEM_API must provide
+  * implementations for arch_memremap_pmem(), arch_memcpy_to_pmem(),
+  * arch_wmb_pmem(), and __arch_has_wmb_pmem().
+  */
+ static inline void memcpy_from_pmem(void *dst, void __pmem const *src, size_t size)
+ {
+       memcpy(dst, (void __force const *) src, size);
+ }
+ static inline void memunmap_pmem(void __pmem *addr)
+ {
+       iounmap((void __force __iomem *) addr);
+ }
+ /**
+  * arch_has_wmb_pmem - true if wmb_pmem() ensures durability
+  *
+  * For a given cpu implementation within an architecture it is possible
+  * that wmb_pmem() resolves to a nop.  In the case this returns
+  * false, pmem api users are unable to ensure durability and may want to
+  * fall back to a different data consistency model, or otherwise notify
+  * the user.
+  */
+ static inline bool arch_has_wmb_pmem(void)
+ {
+       if (IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API))
+               return __arch_has_wmb_pmem();
+       return false;
+ }
+ static inline bool arch_has_pmem_api(void)
+ {
+       return IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API) && arch_has_wmb_pmem();
+ }
+ /*
+  * These defaults seek to offer decent performance and minimize the
+  * window between i/o completion and writes being durable on media.
+  * However, it is undefined / architecture specific whether
+  * default_memremap_pmem + default_memcpy_to_pmem is sufficient for
+  * making data durable relative to i/o completion.
+  */
+ static void default_memcpy_to_pmem(void __pmem *dst, const void *src,
+               size_t size)
+ {
+       memcpy((void __force *) dst, src, size);
+ }
+ static void __pmem *default_memremap_pmem(resource_size_t offset,
+               unsigned long size)
+ {
++      return (void __pmem __force *)ioremap_wt(offset, size);
+ }
+ /**
+  * memremap_pmem - map physical persistent memory for pmem api
+  * @offset: physical address of persistent memory
+  * @size: size of the mapping
+  *
+  * Establish a mapping of the architecture specific memory type expected
+  * by memcpy_to_pmem() and wmb_pmem().  For example, it may be
+  * the case that an uncacheable or writethrough mapping is sufficient,
+  * or a writeback mapping provided memcpy_to_pmem() and
+  * wmb_pmem() arrange for the data to be written through the
+  * cache to persistent media.
+  */
+ static inline void __pmem *memremap_pmem(resource_size_t offset,
+               unsigned long size)
+ {
+       if (arch_has_pmem_api())
+               return arch_memremap_pmem(offset, size);
+       return default_memremap_pmem(offset, size);
+ }
+ /**
+  * memcpy_to_pmem - copy data to persistent memory
+  * @dst: destination buffer for the copy
+  * @src: source buffer for the copy
+  * @n: length of the copy in bytes
+  *
+  * Perform a memory copy that results in the destination of the copy
+  * being effectively evicted from, or never written to, the processor
+  * cache hierarchy after the copy completes.  After memcpy_to_pmem()
+  * data may still reside in cpu or platform buffers, so this operation
+  * must be followed by a wmb_pmem().
+  */
+ static inline void memcpy_to_pmem(void __pmem *dst, const void *src, size_t n)
+ {
+       if (arch_has_pmem_api())
+               arch_memcpy_to_pmem(dst, src, n);
+       else
+               default_memcpy_to_pmem(dst, src, n);
+ }
+ /**
+  * wmb_pmem - synchronize writes to persistent memory
+  *
+  * After a series of memcpy_to_pmem() operations this drains data from
+  * cpu write buffers and any platform (memory controller) buffers to
+  * ensure that written data is durable on persistent memory media.
+  */
+ static inline void wmb_pmem(void)
+ {
+       if (arch_has_pmem_api())
+               arch_wmb_pmem();
+ }
+ #endif /* __PMEM_H__ */
@@@ -138,7 -138,6 +138,7 @@@ header-y += genetlink.
  header-y += gen_stats.h
  header-y += gfs2_ondisk.h
  header-y += gigaset_dev.h
 +header-y += gsmmux.h
  header-y += hdlcdrv.h
  header-y += hdlc.h
  header-y += hdreg.h
@@@ -272,6 -271,7 +272,7 @@@ header-y += ncp_fs.
  header-y += ncp.h
  header-y += ncp_mount.h
  header-y += ncp_no.h
+ header-y += ndctl.h
  header-y += neighbour.h
  header-y += netconf.h
  header-y += netdevice.h
@@@ -353,7 -353,6 +354,7 @@@ header-y += rtc.
  header-y += rtnetlink.h
  header-y += scc.h
  header-y += sched.h
 +header-y += scif_ioctl.h
  header-y += screen_info.h
  header-y += sctp.h
  header-y += sdla.h
@@@ -432,7 -431,6 +433,7 @@@ header-y += virtio_balloon.
  header-y += virtio_blk.h
  header-y += virtio_config.h
  header-y += virtio_console.h
 +header-y += virtio_gpu.h
  header-y += virtio_ids.h
  header-y += virtio_input.h
  header-y += virtio_net.h
diff --combined lib/Kconfig
@@@ -212,12 -212,6 +212,12 @@@ config RANDOM32_SELFTES
  #
  # compression support is select'ed if needed
  #
 +config 842_COMPRESS
 +      tristate
 +
 +config 842_DECOMPRESS
 +      tristate
 +
  config ZLIB_INFLATE
        tristate
  
@@@ -528,4 -522,7 +528,7 @@@ source "lib/fonts/Kconfig
  config ARCH_HAS_SG_CHAIN
        def_bool n
  
+ config ARCH_HAS_PMEM_API
+       bool
  endmenu