Merge branch 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Apr 2015 15:42:49 +0000 (11:42 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Apr 2015 15:42:49 +0000 (11:42 -0400)
Pull PMEM driver from Ingo Molnar:
 "This is the initial support for the pmem block device driver:
  persistent non-volatile memory space mapped into the system's physical
  memory space as large physical memory regions.

  The driver is based on Intel code, written by Ross Zwisler, with fixes
  by Boaz Harrosh, integrated with x86 e820 memory resource management
  and tidied up by Christoph Hellwig.

  Note that there were two other separate pmem driver submissions to
  lkml: but apparently all parties (Ross Zwisler, Boaz Harrosh) are
  reasonably happy with this initial version.

  This version enables minimal support that enables persistent memory
  devices out in the wild to work as block devices, identified through a
  magic (non-standard) e820 flag and auto-discovered if
  CONFIG_X86_PMEM_LEGACY=y, or added explicitly through manipulating the
  memory maps via the "memmap=..." boot option with the new, special '!'
  modifier character.

  Limitations: this is a regular block device, and since the pmem areas
  are not struct page backed, they are invisible to the rest of the
  system (other than the block IO device), so direct IO to/from pmem
  areas, direct mmap() or XIP is not possible yet.  The page cache will
  also shadow and double buffer pmem contents, etc.

  Initial support is for x86"

* 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  drivers/block/pmem: Fix 32-bit build warning in pmem_alloc()
  drivers/block/pmem: Add a driver for persistent memory
  x86/mm: Add support for the non-standard protected e820 type

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
arch/x86/Kconfig
arch/x86/kernel/Makefile
arch/x86/kernel/e820.c

index 5bc92d2f4716d52e7bbbf95fc178ec3775596cc3,c87122dd790fcd0621d16b91c5a0ab1747438bcf..274252f205b7073ad909d19e2628e466b6b76c0e
@@@ -928,12 -928,6 +928,12 @@@ bytes respectively. Such letter suffixe
                        Enable debug messages at boot time.  See
                        Documentation/dynamic-debug-howto.txt for details.
  
 +      eagerfpu=       [X86]
 +                      on      enable eager fpu restore
 +                      off     disable eager fpu restore
 +                      auto    selects the default scheme, which automatically
 +                              enables eagerfpu restore for xsaveopt.
 +
        early_ioremap_debug [KNL]
                        Enable debug messages in early_ioremap support. This
                        is useful for tracking down temporary early mappings
                        Format: {"off" | "on" | "skip[mbr]"}
  
        efi=            [EFI]
 -                      Format: { "old_map", "nochunk", "noruntime" }
 +                      Format: { "old_map", "nochunk", "noruntime", "debug" }
                        old_map [X86-64]: switch to the old ioremap-based EFI
                        runtime services mapping. 32-bit still uses this one by
                        default.
                        boot stub, as chunking can cause problems with some
                        firmware implementations.
                        noruntime : disable EFI runtime services support
 +                      debug: enable misc debug output
  
        efi_no_storage_paranoia [EFI; X86]
                        Using this parameter you can use more than 50% of
                                 or
                                 memmap=0x10000$0x18690000
  
+       memmap=nn[KMG]!ss[KMG]
+                       [KNL,X86] Mark specific memory as protected.
+                       Region of memory to be used, from ss to ss+nn.
+                       The memory region may be marked as e820 type 12 (0xc)
+                       and is NVDIMM or ADR memory.
        memory_corruption_check=0/1 [X86]
                        Some BIOSes seem to corrupt the first 64k of
                        memory when doing things like suspend/resume.
                        seconds.  Use this parameter to check at some
                        other rate.  0 disables periodic checking.
  
 -      memtest=        [KNL,X86] Enable memtest
 +      memtest=        [KNL,X86,ARM] Enable memtest
                        Format: <integer>
                        default : 0 <disable>
                        Specifies the number of memtest passes to be
  
        nmi_watchdog=   [KNL,BUGS=X86] Debugging features for SMP kernels
                        Format: [panic,][nopanic,][num]
 -                      Valid num: 0
 +                      Valid num: 0 or 1
                        0 - turn nmi_watchdog off
 +                      1 - turn nmi_watchdog on
                        When panic is specified, panic when an NMI watchdog
                        timeout occurs (or 'nopanic' to override the opposite
                        default).
                        noexec32=off: disable non-executable mappings
                                read implies executable mappings
  
 -      nofpu           [SH] Disable hardware FPU at boot time.
 +      nofpu           [MIPS,SH] Disable hardware FPU at boot time.
  
        nofxsr          [BUGS=X86-32] Disables x86 floating point extended
                        register save and restore. The kernel will only save
                        legacy floating-point registers on task switch.
  
 +      nohugeiomap     [KNL,x86] Disable kernel huge I/O mappings.
 +
        noxsave         [BUGS=X86] Disables x86 extended register state save
                        and restore using xsave. The kernel will fallback to
                        enabling legacy floating-point and sse state.
                        parameter, xsave area per process might occupy more
                        memory on xsaves enabled systems.
  
 -      eagerfpu=       [X86]
 -                      on      enable eager fpu restore
 -                      off     disable eager fpu restore
 -                      auto    selects the default scheme, which automatically
 -                              enables eagerfpu restore for xsaveopt.
 -
        nohlt           [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or
                        wfi(ARM) instruction doesn't work correctly and not to
                        use it. This is also useful when using JTAG debugger.
  
        nousb           [USB] Disable the USB subsystem
  
 -      nowatchdog      [KNL] Disable the lockup detector (NMI watchdog).
 +      nowatchdog      [KNL] Disable both lockup detectors, i.e.
 +                        soft-lockup and NMI watchdog (hard-lockup).
  
        nowb            [ARM]
  
                        Set maximum number of finished RCU callbacks to
                        process in one batch.
  
 +      rcutree.gp_init_delay=  [KNL]
 +                      Set the number of jiffies to delay each step of
 +                      RCU grace-period initialization.  This only has
 +                      effect when CONFIG_RCU_TORTURE_TEST_SLOW_INIT is
 +                      set.
 +
        rcutree.rcu_fanout_leaf= [KNL]
                        Increase the number of CPUs assigned to each
                        leaf rcu_node structure.  Useful for very large
                        value is one, and maximum value is HZ.
  
        rcutree.kthread_prio=    [KNL,BOOT]
 -                      Set the SCHED_FIFO priority of the RCU
 -                      per-CPU kthreads (rcuc/N). This value is also
 -                      used for the priority of the RCU boost threads
 -                      (rcub/N). Valid values are 1-99 and the default
 -                      is 1 (the least-favored priority).
 +                      Set the SCHED_FIFO priority of the RCU per-CPU
 +                      kthreads (rcuc/N). This value is also used for
 +                      the priority of the RCU boost threads (rcub/N)
 +                      and for the RCU grace-period kthreads (rcu_bh,
 +                      rcu_preempt, and rcu_sched). If RCU_BOOST is
 +                      set, valid values are 1-99 and the default is 1
 +                      (the least-favored priority).  Otherwise, when
 +                      RCU_BOOST is not set, valid values are 0-99 and
 +                      the default is zero (non-realtime operation).
  
        rcutree.rcu_nocb_leader_stride= [KNL]
                        Set the number of NOCB kthread groups, which
                        improve throughput, but will also increase the
                        amount of memory reserved for use by the client.
  
 +      suspend.pm_test_delay=
 +                      [SUSPEND]
 +                      Sets the number of seconds to remain in a suspend test
 +                      mode before resuming the system (see
 +                      /sys/power/pm_test). Only available when CONFIG_PM_DEBUG
 +                      is set. Default value is 5.
 +
        swapaccount=[0|1]
                        [KNL] Enable accounting of swap in memory resource
                        controller if no parameter or 1 is given or disable
diff --combined MAINTAINERS
index dcd43465eae1ba17efe788fcca995ca979791d9d,4517613dc638eb2ca002cd1a8c2436de282199ea..db335f98cad02316e89c29b72ec89aa0860a8947
@@@ -569,12 -569,6 +569,12 @@@ L:       nios2-dev@lists.rocketboards.org (mo
  S:    Maintained
  F:    drivers/mailbox/mailbox-altera.c
  
 +ALTERA PIO DRIVER
 +M:    Tien Hock Loh <thloh@altera.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-altera.c
 +
  ALTERA TRIPLE SPEED ETHERNET DRIVER
  M:    Vince Bridgers <vbridger@opensource.altera.com>
  L:    netdev@vger.kernel.org
@@@ -631,19 -625,20 +631,19 @@@ F:      drivers/iommu/amd_iommu*.[ch
  F:    include/linux/amd-iommu.h
  
  AMD KFD
 -M:      Oded Gabbay <oded.gabbay@amd.com>
 -L:      dri-devel@lists.freedesktop.org
 -T:      git git://people.freedesktop.org/~gabbayo/linux.git
 -S:      Supported
 -F:      drivers/gpu/drm/amd/amdkfd/
 +M:    Oded Gabbay <oded.gabbay@amd.com>
 +L:    dri-devel@lists.freedesktop.org
 +T:    git git://people.freedesktop.org/~gabbayo/linux.git
 +S:    Supported
 +F:    drivers/gpu/drm/amd/amdkfd/
  F:    drivers/gpu/drm/amd/include/cik_structs.h
  F:    drivers/gpu/drm/amd/include/kgd_kfd_interface.h
 -F:      drivers/gpu/drm/radeon/radeon_kfd.c
 -F:      drivers/gpu/drm/radeon/radeon_kfd.h
 -F:      include/uapi/linux/kfd_ioctl.h
 +F:    drivers/gpu/drm/radeon/radeon_kfd.c
 +F:    drivers/gpu/drm/radeon/radeon_kfd.h
 +F:    include/uapi/linux/kfd_ioctl.h
  
  AMD MICROCODE UPDATE SUPPORT
 -M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
 -L:    amd64-microcode@amd64.org
 +M:    Borislav Petkov <bp@alien8.de>
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/amd*
  
@@@ -730,7 -725,7 +730,7 @@@ F: staging/iio/trigger/iio-trig-bfin-ti
  
  ANDROID DRIVERS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -M:    Arve Hjønnevåg <arve@android.com>
 +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
  L:    devel@driverdev.osuosl.org
@@@ -1221,7 -1216,6 +1221,7 @@@ F:      arch/arm/mach-orion5x/ts78xx-
  ARM/Mediatek SoC support
  M:    Matthias Brugger <matthias.bgg@gmail.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:    arch/arm/boot/dts/mt6*
  F:    arch/arm/boot/dts/mt8*
@@@ -1475,8 -1469,6 +1475,8 @@@ F:      drivers/clocksource/arm_global_timer
  F:    drivers/i2c/busses/i2c-st.c
  F:    drivers/media/rc/st_rc.c
  F:    drivers/mmc/host/sdhci-st.c
 +F:    drivers/phy/phy-miphy28lp.c
 +F:    drivers/phy/phy-miphy365x.c
  F:    drivers/phy/phy-stih407-usb.c
  F:    drivers/phy/phy-stih41x-usb.c
  F:    drivers/pinctrl/pinctrl-st.c
@@@ -1771,7 -1763,7 +1771,7 @@@ S:      Supporte
  F:    drivers/tty/serial/atmel_serial.c
  
  ATMEL Audio ALSA driver
 -M:    Bo Shen <voice.shen@atmel.com>
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/atmel
@@@ -1922,14 -1914,16 +1922,14 @@@ S:   Maintaine
  F:    drivers/media/radio/radio-aztech*
  
  B43 WIRELESS DRIVER
 -M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/net/wireless/b43/
  
  B43LEGACY WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
 -M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
@@@ -1972,10 -1966,10 +1972,10 @@@ F:   Documentation/filesystems/befs.tx
  F:    fs/befs/
  
  BECKHOFF CX5020 ETHERCAT MASTER DRIVER
 -M: Dariusz Marcinkiewicz <reksio@newterm.pl>
 -L: netdev@vger.kernel.org
 -S: Maintained
 -F: drivers/net/ethernet/ec_bhf.c
 +M:    Dariusz Marcinkiewicz <reksio@newterm.pl>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/ec_bhf.c
  
  BFS FILE SYSTEM
  M:    "Tigran A. Aivazian" <tigran@aivazian.fsnet.co.uk>
@@@ -2525,18 -2519,11 +2525,18 @@@ F:   Documentation/zh_CN
  
  CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
  M:    Peter Chen <Peter.Chen@freescale.com>
 -T:    git git://github.com/hzpeterchen/linux-usb.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    drivers/usb/chipidea/
  
 +CHIPONE ICN8318 I2C TOUCHSCREEN DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/input/touchscreen/chipone_icn8318.txt
 +F:    drivers/input/touchscreen/chipone_icn8318.c
 +
  CHROME HARDWARE PLATFORM SUPPORT
  M:    Olof Johansson <olof@lixom.net>
  S:    Maintained
@@@ -2830,7 -2817,6 +2830,7 @@@ L:      linux-crypto@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
  S:    Maintained
  F:    Documentation/crypto/
 +F:    Documentation/DocBook/crypto-API.tmpl
  F:    arch/*/crypto/
  F:    crypto/
  F:    drivers/crypto/
@@@ -2901,11 -2887,11 +2901,11 @@@ S:   Supporte
  F:    drivers/net/ethernet/chelsio/cxgb3/
  
  CXGB3 ISCSI DRIVER (CXGB3I)
 -M:      Karen Xie <kxie@chelsio.com>
 -L:      linux-scsi@vger.kernel.org
 -W:      http://www.chelsio.com
 -S:      Supported
 -F:      drivers/scsi/cxgbi/cxgb3i
 +M:    Karen Xie <kxie@chelsio.com>
 +L:    linux-scsi@vger.kernel.org
 +W:    http://www.chelsio.com
 +S:    Supported
 +F:    drivers/scsi/cxgbi/cxgb3i
  
  CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
  M:    Steve Wise <swise@chelsio.com>
@@@ -2922,11 -2908,11 +2922,11 @@@ S:   Supporte
  F:    drivers/net/ethernet/chelsio/cxgb4/
  
  CXGB4 ISCSI DRIVER (CXGB4I)
 -M:      Karen Xie <kxie@chelsio.com>
 -L:      linux-scsi@vger.kernel.org
 -W:      http://www.chelsio.com
 -S:      Supported
 -F:      drivers/scsi/cxgbi/cxgb4i
 +M:    Karen Xie <kxie@chelsio.com>
 +L:    linux-scsi@vger.kernel.org
 +W:    http://www.chelsio.com
 +S:    Supported
 +F:    drivers/scsi/cxgbi/cxgb4i
  
  CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
  M:    Steve Wise <swise@chelsio.com>
@@@ -3152,15 -3138,12 +3152,15 @@@ S:   Supporte
  F:    Documentation/hwmon/da90??
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
 +F:    drivers/iio/adc/da91??-*.c
  F:    drivers/input/misc/da90??_onkey.c
  F:    drivers/input/touchscreen/da9052_tsi.c
  F:    drivers/leds/leds-da90??.c
  F:    drivers/mfd/da903x.c
  F:    drivers/mfd/da90??-*.c
 +F:    drivers/mfd/da91??-*.c
  F:    drivers/power/da9052-battery.c
 +F:    drivers/power/da91??-*.c
  F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
  F:    drivers/rtc/rtc-da90??.c
@@@ -3170,7 -3153,6 +3170,7 @@@ F:      include/linux/mfd/da903x.
  F:    include/linux/mfd/da9052/
  F:    include/linux/mfd/da9055/
  F:    include/linux/mfd/da9063/
 +F:    include/linux/mfd/da9150/
  F:    include/sound/da[79]*.h
  F:    sound/soc/codecs/da[79]*.[ch]
  
@@@ -3291,9 -3273,7 +3291,9 @@@ S:      Maintaine
  F:    Documentation/
  X:    Documentation/ABI/
  X:    Documentation/devicetree/
 -X:    Documentation/[a-z][a-z]_[A-Z][A-Z]/
 +X:    Documentation/acpi
 +X:    Documentation/power
 +X:    Documentation/spi
  T:    git git://git.lwn.net/linux-2.6.git docs-next
  
  DOUBLETALK DRIVER
@@@ -4184,12 -4164,6 +4184,12 @@@ F:    sound/soc/fsl/fsl
  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>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/fsl-mc/
 +
  FREEVXFS FILESYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
  W:    ftp://ftp.openlinux.org/pub/people/hch/vxfs
@@@ -4339,15 -4313,6 +4339,15 @@@ S:    Supporte
  F:    drivers/phy/
  F:    include/linux/phy/
  
 +GENERIC PM DOMAINS
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
 +M:    Kevin Hilman <khilman@kernel.org>
 +M:    Ulf Hansson <ulf.hansson@linaro.org>
 +L:    linux-pm@vger.kernel.org
 +S:    Supported
 +F:    drivers/base/power/domain*.c
 +F:    include/linux/pm_domain.h
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -4361,10 -4326,10 +4361,10 @@@ F:   scripts/get_maintainer.p
  
  GFS2 FILE SYSTEM
  M:    Steven Whitehouse <swhiteho@redhat.com>
 +M:    Bob Peterson <rpeterso@redhat.com>
  L:    cluster-devel@redhat.com
  W:    http://sources.redhat.com/cluster/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
  S:    Supported
  F:    Documentation/filesystems/gfs2*.txt
  F:    fs/gfs2/
@@@ -4984,7 -4949,6 +4984,7 @@@ S:      Maintaine
  F:    drivers/iio/
  F:    drivers/staging/iio/
  F:    include/linux/iio/
 +F:    tools/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
  M:    Matthieu Castet <castet.matthieu@free.fr>
@@@ -5131,7 -5095,7 +5131,7 @@@ S:      Supporte
  F:    drivers/platform/x86/intel_menlow.c
  
  INTEL IA32 MICROCODE UPDATE SUPPORT
 -M:    Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
 +M:    Borislav Petkov <bp@alien8.de>
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/core*
  F:    arch/x86/kernel/cpu/microcode/intel*
@@@ -5172,21 -5136,22 +5172,21 @@@ M:   Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/fm10k/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
 +INTEL ETHERNET DRIVERS
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
 -M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
 -M:    Bruce Allan <bruce.w.allan@intel.com>
 -M:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 -M:    Don Skidmore <donald.c.skidmore@intel.com>
 -M:    Greg Rose <gregory.v.rose@intel.com>
 -M:    Matthew Vick <matthew.vick@intel.com>
 -M:    John Ronciak <john.ronciak@intel.com>
 -M:    Mitch Williams <mitch.a.williams@intel.com>
 -M:    Linux NICS <linux.nics@intel.com>
 -L:    e1000-devel@lists.sourceforge.net
 +R:    Jesse Brandeburg <jesse.brandeburg@intel.com>
 +R:    Shannon Nelson <shannon.nelson@intel.com>
 +R:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 +R:    Don Skidmore <donald.c.skidmore@intel.com>
 +R:    Matthew Vick <matthew.vick@intel.com>
 +R:    John Ronciak <john.ronciak@intel.com>
 +R:    Mitch Williams <mitch.a.williams@intel.com>
 +L:    intel-wired-lan@lists.osuosl.org
  W:    http://www.intel.com/support/feedback.htm
  W:    http://e1000.sourceforge.net/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
 +Q:    http://patchwork.ozlabs.org/project/intel-wired-lan/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
  S:    Supported
  F:    Documentation/networking/e100.txt
  F:    Documentation/networking/e1000.txt
@@@ -5230,7 -5195,7 +5230,7 @@@ F:      arch/x86/kernel/tboot.
  INTEL WIRELESS WIMAX CONNECTION 2400
  M:    Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  M:    linux-wimax@intel.com
 -L:     wimax@linuxwimax.org (subscribers-only)
 +L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
  F:    Documentation/wimax/README.i2400m
@@@ -5308,13 -5273,6 +5308,13 @@@ F:    drivers/char/ipmi
  F:    include/linux/ipmi*
  F:    include/uapi/linux/ipmi*
  
 +QCOM AUDIO (ASoC) DRIVERS
 +M:    Patrick Lai <plai@codeaurora.org>
 +M:    Banajit Goswami <bgoswami@codeaurora.org>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Supported
 +F:    sound/soc/qcom/
 +
  IPS SCSI RAID DRIVER
  M:    Adaptec OEM Raid Solutions <aacraid@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5635,8 -5593,6 +5635,8 @@@ S:      Supporte
  F:    Documentation/*/kvm*.txt
  F:    Documentation/virtual/kvm/
  F:    arch/*/kvm/
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
  F:    arch/*/include/asm/kvm*
  F:    include/linux/kvm*
  F:    include/uapi/linux/kvm*
@@@ -5933,7 -5889,7 +5933,7 @@@ F:      arch/powerpc/platforms/512x
  F:    arch/powerpc/platforms/52xx/
  
  LINUX FOR POWERPC EMBEDDED PPC4XX
 -M:  Alistair Popple <alistair@popple.id.au>
 +M:    Alistair Popple <alistair@popple.id.au>
  M:    Matt Porter <mporter@kernel.crashing.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -6368,7 -6324,6 +6368,7 @@@ F:      drivers/scsi/megaraid
  
  MELLANOX ETHERNET DRIVER (mlx4_en)
  M:    Amir Vadai <amirv@mellanox.com>
 +M:    Ido Shamay <idos@mellanox.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  W:    http://www.mellanox.com
@@@ -6406,7 -6361,7 +6406,7 @@@ S:      Supporte
  F:    drivers/watchdog/mena21_wdt.c
  
  MEN CHAMELEON BUS (mcb)
 -M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 +M:    Johannes Thumshirn <johannes.thumshirn@men.de>
  S:    Supported
  F:    drivers/mcb/
  F:    include/linux/mcb.h
@@@ -6611,8 -6566,10 +6611,8 @@@ F:     drivers/mfd
  F:    include/linux/mfd/
  
  MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
 -M:    Chris Ball <chris@printf.net>
  M:    Ulf Hansson <ulf.hansson@linaro.org>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
  T:    git git://git.linaro.org/people/ulf.hansson/mmc.git
  S:    Maintained
  F:    drivers/mmc/
@@@ -6988,13 -6945,6 +6988,13 @@@ S:    Supporte
  F:    drivers/block/nvme*
  F:    include/linux/nvme.h
  
 +NXP-NCI NFC DRIVER
 +M:    Clément Perrochaud <clement.perrochaud@effinnov.com>
 +R:    Charles Gorand <charles.gorand@effinnov.com>
 +L:    linux-nfc@lists.01.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/nfc/nxp-nci
 +
  NXP TDA998X DRM DRIVER
  M:    Russell King <rmk+kernel@arm.linux.org.uk>
  S:    Supported
@@@ -7245,15 -7195,6 +7245,15 @@@ F:    Documentation/devicetree
  F:    arch/*/boot/dts/
  F:    include/dt-bindings/
  
 +OPEN FIRMWARE AND DEVICE TREE OVERLAYS
 +M:    Pantelis Antoniou <pantelis.antoniou@konsulko.com>
 +L:    devicetree@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/dynamic-resolution-notes.txt
 +F:    Documentation/devicetree/overlay-notes.txt
 +F:    drivers/of/overlay.c
 +F:    drivers/of/resolver.c
 +
  OPENRISC ARCHITECTURE
  M:    Jonas Bonn <jonas@southpole.se>
  W:    http://openrisc.net
@@@ -7971,10 -7912,10 +7971,10 @@@ L:   rtc-linux@googlegroups.co
  S:    Maintained
  
  QAT DRIVER
 -M:      Tadeusz Struk <tadeusz.struk@intel.com>
 -L:      qat-linux@intel.com
 -S:      Supported
 -F:      drivers/crypto/qat/
 +M:    Tadeusz Struk <tadeusz.struk@intel.com>
 +L:    qat-linux@intel.com
 +S:    Supported
 +F:    drivers/crypto/qat/
  
  QIB DRIVER
  M:    Mike Marciniszyn <infinipath@intel.com>
@@@ -8125,11 -8066,17 +8125,17 @@@ S:   Maintaine
  F:    drivers/net/wireless/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
 -M:    Nick Piggin <npiggin@kernel.dk>
 +M:    Jens Axboe <axboe@kernel.dk>
  S:    Maintained
  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
@@@ -8201,7 -8148,6 +8207,7 @@@ X:      kernel/torture.
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
 +M:    Alexandre Belloni <alexandre.belloni@free-electrons.com>
  L:    rtc-linux@googlegroups.com
  Q:    http://patchwork.ozlabs.org/project/rtc-linux/list/
  S:    Maintained
@@@ -8413,6 -8359,7 +8419,6 @@@ F:      block/partitions/ibm.
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    Frank Blaschka <blaschka@linux.vnet.ibm.com>
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -8620,7 -8567,6 +8626,7 @@@ F:      include/uapi/linux/timex.
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
  F:    kernel/time/ntp.c
 +F:    tools/testing/selftests/timers/
  
  SC1200 WDT DRIVER
  M:    Zwane Mwaikambo <zwanem@gmail.com>
@@@ -8672,9 -8618,11 +8678,9 @@@ F:     drivers/scsi/sg.
  F:    include/scsi/sg.h
  
  SCSI SUBSYSTEM
 -M:    "James E.J. Bottomley" <JBottomley@parallels.com>
 +M:    "James E.J. Bottomley" <JBottomley@odin.com>
  L:    linux-scsi@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
  S:    Maintained
  F:    drivers/scsi/
  F:    include/scsi/
@@@ -8727,8 -8675,10 +8733,8 @@@ S:     Maintaine
  F:    drivers/mmc/host/sdricoh_cs.c
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
 -M:    Chris Ball <chris@printf.net>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/mmc/host/sdhci.*
  F:    drivers/mmc/host/sdhci-pltfm.[ch]
  
@@@ -8744,12 -8694,18 +8750,12 @@@ F:   include/linux/seccomp.
  K:    \bsecure_computing
  K:    \bTIF_SECCOMP\b
  
 -SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
 -M:    Anton Vorontsov <anton@enomsg.org>
 -L:    linuxppc-dev@lists.ozlabs.org
 -L:    linux-mmc@vger.kernel.org
 -S:    Maintained
 -F:    drivers/mmc/host/sdhci-pltfm.[ch]
 -
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
  M:    Ben Dooks <ben-linux@fluff.org>
 +M:    Jaehoon Chung <jh80.chung@samsung.com>
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
 -F:    drivers/mmc/host/sdhci-s3c.c
 +F:    drivers/mmc/host/sdhci-s3c*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
  M:    Viresh Kumar <viresh.linux@gmail.com>
@@@ -9416,14 -9372,6 +9422,14 @@@ L:    linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/sm7xxfb/
  
 +STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
 +M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 +M:    Teddy Wang <teddy.wang@siliconmotion.com>
 +M:    Sudip Mukherjee <sudip@vectorindia.org>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/sm750fb/
 +
  STAGING - SLICOSS
  M:    Lior Dotan <liodot@gmail.com>
  M:    Christopher Harrer <charrer@alacritech.com>
@@@ -9886,7 -9834,7 +9892,7 @@@ F:      include/linux/wl12xx.
  
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
 -M:    Allan Stephens <allan.stephens@windriver.com>
 +M:    Ying Xue <ying.xue@windriver.com>
  L:    netdev@vger.kernel.org (core kernel code)
  L:    tipc-discussion@lists.sourceforge.net (user apps, general discussion)
  W:    http://tipc.sourceforge.net/
@@@ -9990,7 -9938,6 +9996,7 @@@ F:      drivers/media/pci/tw68
  TPM DEVICE DRIVER
  M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Marcel Selhorst <tpmdd@selhorst.net>
 +R:    Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
  W:    http://tpmdd.sourceforge.net
  L:    tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
  Q:    git git://github.com/PeterHuewe/linux-tpmdd.git
@@@ -10144,11 -10091,11 +10150,11 @@@ F:        include/linux/cdrom.
  F:    include/uapi/linux/cdrom.h
  
  UNISYS S-PAR DRIVERS
 -M:     Benjamin Romer <benjamin.romer@unisys.com>
 -M:     David Kershner <david.kershner@unisys.com>
 -L:     sparmaintainer@unisys.com (Unisys internal)
 -S:     Supported
 -F:     drivers/staging/unisys/
 +M:    Benjamin Romer <benjamin.romer@unisys.com>
 +M:    David Kershner <david.kershner@unisys.com>
 +L:    sparmaintainer@unisys.com (Unisys internal)
 +S:    Supported
 +F:    drivers/staging/unisys/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
  M:    Vinayak Holikatti <vinholikatti@gmail.com>
@@@ -10196,12 -10143,6 +10202,12 @@@ S: Maintaine
  F:    drivers/net/usb/cdc_*.c
  F:    include/uapi/linux/usb/cdc.h
  
 +USB CHAOSKEY DRIVER
 +M:    Keith Packard <keithp@keithp.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/misc/chaoskey.c
 +
  USB CYPRESS C67X00 DRIVER
  M:    Peter Korsgaard <jacmet@sunsite.dk>
  L:    linux-usb@vger.kernel.org
@@@ -10282,7 -10223,7 +10288,7 @@@ F:   drivers/usb/host/ohci
  
  USB OTG FSM (Finite State Machine)
  M:    Peter Chen <Peter.Chen@freescale.com>
 -T:    git git://github.com/hzpeterchen/linux-usb.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    drivers/usb/common/usb-otg-fsm.c
@@@ -10705,7 -10646,7 +10711,7 @@@ F:   drivers/media/rc/winbond-cir.
  WIMAX STACK
  M:    Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  M:    linux-wimax@intel.com
 -L:     wimax@linuxwimax.org (subscribers-only)
 +L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
  F:    Documentation/wimax/README.wimax
@@@ -10996,7 -10937,6 +11002,7 @@@ L:   linux-mm@kvack.or
  S:    Maintained
  F:    mm/zsmalloc.c
  F:    include/linux/zsmalloc.h
 +F:    Documentation/vm/zsmalloc.txt
  
  ZSWAP COMPRESSED SWAP CACHING
  M:    Seth Jennings <sjennings@variantweb.net>
diff --combined arch/x86/Kconfig
index 937812b8e0b97248779a0a92b2fcae26ceb48a43,9e3bcd6f4a483d0e1d1aeff5eb729edd5b2115e7..6049d587599ed5b39d3e5fb9b32c27b8cc859a37
@@@ -87,7 -87,7 +87,7 @@@ config X8
        select HAVE_ARCH_KMEMCHECK
        select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP
        select HAVE_USER_RETURN_NOTIFIER
 -      select ARCH_BINFMT_ELF_RANDOMIZE_PIE
 +      select ARCH_HAS_ELF_RANDOMIZE
        select HAVE_ARCH_JUMP_LABEL
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select SPARSE_IRQ
@@@ -99,7 -99,6 +99,7 @@@
        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
@@@ -178,7 -177,7 +178,7 @@@ config SBU
  
  config NEED_DMA_MAP_STATE
        def_bool y
 -      depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG
 +      depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB
  
  config NEED_SG_DMA_LENGTH
        def_bool y
@@@ -236,10 -235,12 +236,10 @@@ config ARCH_WANT_GENERAL_HUGETL
        def_bool y
  
  config ZONE_DMA32
 -      bool
 -      default X86_64
 +      def_bool y if X86_64
  
  config AUDIT_ARCH
 -      bool
 -      default X86_64
 +      def_bool y if X86_64
  
  config ARCH_SUPPORTS_OPTIMIZED_INLINING
        def_bool y
@@@ -278,12 -279,6 +278,12 @@@ config ARCH_SUPPORTS_UPROBE
  config FIX_EARLYCON_MEM
        def_bool y
  
 +config PGTABLE_LEVELS
 +      int
 +      default 4 if X86_64
 +      default 3 if X86_PAE
 +      default 2
 +
  source "init/Kconfig"
  source "kernel/Kconfig.freezer"
  
@@@ -721,6 -716,17 +721,6 @@@ endif #HYPERVISOR_GUES
  config NO_BOOTMEM
        def_bool y
  
 -config MEMTEST
 -      bool "Memtest"
 -      ---help---
 -        This option adds a kernel parameter 'memtest', which allows memtest
 -        to be set.
 -              memtest=0, mean disabled; -- default
 -              memtest=1, mean do 1 test pattern;
 -              ...
 -              memtest=4, mean do 4 test patterns.
 -        If you are unsure how to answer this question, answer N.
 -
  source "arch/x86/Kconfig.cpu"
  
  config HPET_TIMER
@@@ -885,8 -891,7 +885,8 @@@ config UP_LATE_INI
         depends on !SMP && X86_LOCAL_APIC
  
  config X86_UP_APIC
 -      bool "Local APIC support on uniprocessors"
 +      bool "Local APIC support on uniprocessors" if !PCI_MSI
 +      default PCI_MSI
        depends on X86_32 && !SMP && !X86_32_NON_STANDARD
        ---help---
          A local APIC (Advanced Programmable Interrupt Controller) is an
          performance counters), and the NMI watchdog which detects hard
          lockups.
  
 -config X86_UP_APIC_MSI
 -      def_bool y
 -      select X86_UP_APIC if X86_32 && !SMP && !X86_32_NON_STANDARD && PCI_MSI
 -
  config X86_UP_IOAPIC
        bool "IO-APIC support on uniprocessors"
        depends on X86_UP_APIC
@@@ -916,8 -925,8 +916,8 @@@ config X86_LOCAL_API
        select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
  
  config X86_IO_APIC
 -      def_bool X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC
 -      depends on X86_LOCAL_APIC
 +      def_bool y
 +      depends on X86_LOCAL_APIC || X86_UP_IOAPIC
        select IRQ_DOMAIN
  
  config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
@@@ -1136,10 -1145,10 +1136,10 @@@ config MICROCODE_OLD_INTERFAC
        depends on MICROCODE
  
  config MICROCODE_INTEL_EARLY
 -      def_bool n
 +      bool
  
  config MICROCODE_AMD_EARLY
 -      def_bool n
 +      bool
  
  config MICROCODE_EARLY
        bool "Early load microcode"
@@@ -1291,14 -1300,14 +1291,14 @@@ config ARCH_DMA_ADDR_T_64BI
        def_bool y
        depends on X86_64 || HIGHMEM64G
  
 -config DIRECT_GBPAGES
 -      bool "Enable 1GB pages for kernel pagetables" if EXPERT
 -      default y
 -      depends on X86_64
 +config X86_DIRECT_GBPAGES
 +      def_bool y
 +      depends on X86_64 && !DEBUG_PAGEALLOC && !KMEMCHECK
        ---help---
 -        Allow the kernel linear mapping to use 1GB pages on CPUs that
 -        support it. This can improve the kernel's performance a tiny bit by
 -        reducing TLB pressure. If in doubt, say "Y".
 +        Certain kernel features effectively disable kernel
 +        linear 1 GB mappings (even if the CPU otherwise
 +        supports them), so don't confuse the user by printing
 +        that we have them enabled.
  
  # Common NUMA Features
  config NUMA
@@@ -1421,6 -1430,16 +1421,16 @@@ config ILLEGAL_POINTER_VALU
  
  source "mm/Kconfig"
  
+ config X86_PMEM_LEGACY
+       bool "Support non-standard NVDIMMs and ADR protected memory"
+       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.
+         The kernel will offer these regions to the 'pmem' driver so
+         they can be used for persistent storage.
+         Say Y if unsure.
  config HIGHPTE
        bool "Allocate 3rd-level pagetables from highmem"
        depends on HIGHMEM
@@@ -1738,11 -1757,14 +1748,11 @@@ config KEXEC_VERIFY_SI
        depends on KEXEC_FILE
        ---help---
          This option makes kernel signature verification mandatory for
 -        kexec_file_load() syscall. If kernel is signature can not be
 -        verified, kexec_file_load() will fail.
 -
 -        This option enforces signature verification at generic level.
 -        One needs to enable signature verification for type of kernel
 -        image being loaded to make sure it works. For example, enable
 -        bzImage signature verification option to be able to load and
 -        verify signatures of bzImage. Otherwise kernel loading will fail.
 +        the kexec_file_load() syscall.
 +
 +        In addition to that option, you need to enable signature
 +        verification for the corresponding kernel image type being
 +        loaded in order for this to work.
  
  config KEXEC_BZIMAGE_VERIFY_SIG
        bool "Enable bzImage signature verification support"
diff --combined arch/x86/kernel/Makefile
index c887cd944f0c18e849fda278ec50dbee6b731919,971f18cd9ca0d8d122ead0d627a2a943f91b4286..9bcd0b56ca1775aa82a9dee3a47614461bb7a881
@@@ -32,7 -32,6 +32,7 @@@ obj-$(CONFIG_X86_32)  += i386_ksyms_32.
  obj-$(CONFIG_X86_64)  += sys_x86_64.o x8664_ksyms_64.o
  obj-$(CONFIG_X86_64)  += mcount_64.o
  obj-y                 += syscall_$(BITS).o vsyscall_gtod.o
 +obj-$(CONFIG_IA32_EMULATION)  += syscall_32.o
  obj-$(CONFIG_X86_VSYSCALL_EMULATION)  += vsyscall_64.o vsyscall_emu_64.o
  obj-$(CONFIG_X86_ESPFIX64)    += espfix_64.o
  obj-$(CONFIG_SYSFS)   += ksysfs.o
@@@ -95,6 -94,7 +95,7 @@@ obj-$(CONFIG_KVM_GUEST)               += kvm.o kvmcl
  obj-$(CONFIG_PARAVIRT)                += paravirt.o paravirt_patch_$(BITS).o
  obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o
  obj-$(CONFIG_PARAVIRT_CLOCK)  += pvclock.o
+ obj-$(CONFIG_X86_PMEM_LEGACY) += pmem.o
  
  obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeaker.o
  
diff --combined arch/x86/kernel/e820.c
index 7d46bb2603346b41dfb924eee28975cd76e704f3,11cc7d54ec3f0cfeeb4d62db1fc14e3b6082cd79..e2ce85db228303b61d1afd80e9c0656e2c343423
@@@ -149,6 -149,9 +149,9 @@@ static void __init e820_print_type(u32 
        case E820_UNUSABLE:
                printk(KERN_CONT "unusable");
                break;
+       case E820_PRAM:
+               printk(KERN_CONT "persistent (type %u)", type);
+               break;
        default:
                printk(KERN_CONT "type %u", type);
                break;
@@@ -343,7 -346,7 +346,7 @@@ int __init sanitize_e820_map(struct e82
                 * continue building up new bios map based on this
                 * information
                 */
-               if (current_type != last_type {
+               if (current_type != last_type || current_type == E820_PRAM) {
                        if (last_type != 0)      {
                                new_bios[new_bios_entry].size =
                                        change_point[chgidx]->addr - last_addr;
@@@ -661,7 -664,7 +664,7 @@@ void __init parse_e820_ext(u64 phys_add
        extmap = (struct e820entry *)(sdata->data);
        __append_e820_map(extmap, entries);
        sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
 -      early_iounmap(sdata, data_len);
 +      early_memunmap(sdata, data_len);
        printk(KERN_INFO "e820: extended physical RAM map:\n");
        e820_print_map("extended");
  }
@@@ -688,6 -691,7 +691,7 @@@ void __init e820_mark_nosave_regions(un
                        register_nosave_region(pfn, PFN_UP(ei->addr));
  
                pfn = PFN_DOWN(ei->addr + ei->size);
                if (ei->type != E820_RAM && ei->type != E820_RESERVED_KERN)
                        register_nosave_region(PFN_UP(ei->addr), pfn);
  
@@@ -748,7 -752,7 +752,7 @@@ u64 __init early_reserve_e820(u64 size
  /*
   * Find the highest page frame number we have available
   */
- static unsigned long __init e820_end_pfn(unsigned long limit_pfn, unsigned type)
+ static unsigned long __init e820_end_pfn(unsigned long limit_pfn)
  {
        int i;
        unsigned long last_pfn = 0;
                unsigned long start_pfn;
                unsigned long end_pfn;
  
-               if (ei->type != type)
+               /*
+                * Persistent memory is accounted as ram for purposes of
+                * establishing max_pfn and mem_map.
+                */
+               if (ei->type != E820_RAM && ei->type != E820_PRAM)
                        continue;
  
                start_pfn = ei->addr >> PAGE_SHIFT;
  }
  unsigned long __init e820_end_of_ram_pfn(void)
  {
-       return e820_end_pfn(MAX_ARCH_PFN, E820_RAM);
+       return e820_end_pfn(MAX_ARCH_PFN);
  }
  
  unsigned long __init e820_end_of_low_ram_pfn(void)
  {
-       return e820_end_pfn(1UL<<(32 - PAGE_SHIFT), E820_RAM);
+       return e820_end_pfn(1UL << (32-PAGE_SHIFT));
  }
  
  static void early_panic(char *msg)
@@@ -866,6 -874,9 +874,9 @@@ static int __init parse_memmap_one(cha
        } else if (*p == '$') {
                start_at = memparse(p+1, &p);
                e820_add_region(start_at, mem_size, E820_RESERVED);
+       } else if (*p == '!') {
+               start_at = memparse(p+1, &p);
+               e820_add_region(start_at, mem_size, E820_PRAM);
        } else
                e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
  
@@@ -907,6 -918,7 +918,7 @@@ 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";
        default:        return "reserved";
        }
  }
@@@ -940,7 -952,9 +952,9 @@@ 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 || res->start < (1ULL<<20)) {
+               if (((e820.map[i].type != E820_RESERVED) &&
+                    (e820.map[i].type != E820_PRAM)) ||
+                    res->start < (1ULL<<20)) {
                        res->flags |= IORESOURCE_BUSY;
                        insert_resource(&iomem_resource, res);
                }