[GIT PULL] libnvdimm for 4.8

From: Williams, Dan J
Date: Thu Jul 28 2016 - 01:33:19 EST


Hi Linus, please pull from:

+AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-4.8

...to receive the libnvdimm update for 4.8.

This has been in -next with the following reported conflicts:

1/ The +AF8AXw-pmem address space has been removed. +AKA-New usages of +AF8AXw-pmem
came in through the DM tree this cycle.

2/ A minor conflict in the pmem driver with the device+AF8-add+AF8-disk()
changes that came in through the block layer.

3/ The removal of pcommit collided with new enabling in KVM. +AKA-At the
time of writing you have not yet merged the KVM tree.

A test resolution for 1 and 2 is available here:

+AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-4.8-merge

Stephen's resolution of the KVM conflict is available here:

+AKA- https://lkml.org/lkml/2016/7/25/11

The pcommit removal in arch/x86/ has an ack from Ingo.

---

The following changes since commit a72255983f12f31f0c8d8275fb1a781546cfacb7:

+AKA- nfit: make DIMM DSMs optional (2016-07-19 12:32:39 -0700)

are available in the git repository at:

+AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-4.8

for you to fetch changes up to 0606263f24f3d64960de742c55894190b5df903b:

+AKA- Merge branch 'for-4.8/libnvdimm' into libnvdimm-for-next (2016-07-24 08:05:44 -0700)

----------------------------------------------------------------
libnvdimm for 4.8

1/ Replace pcommit with ADR / directed-flushing:
+AKAAoACg-The pcommit instruction, which has not shipped on any product, is
+AKAAoACg-deprecated. Instead, the requirement is that platforms implement either
+AKAAoACg-ADR, or provide one or more flush addresses per nvdimm. ADR
+AKAAoACg-(Asynchronous DRAM Refresh) flushes data in posted write buffers to the
+AKAAoACg-memory controller on a power-fail event. Flush addresses are defined in
+AKAAoACg-ACPI 6.x as an NVDIMM Firmware Interface Table (NFIT) sub-structure:
+AKAAoACgACI-Flush Hint Address Structure+ACI-. A flush hint is an mmio address that
+AKAAoACg-when written and fenced assures that all previous posted writes
+AKAAoACg-targeting a given dimm have been flushed to media.

2/ On-demand ARS (address range scrub):
+AKAAoACg-Linux uses the results of the ACPI ARS commands to track bad blocks
+AKAAoACg-in pmem devices.+AKAAoA-When latent errors are detected we re-scrub the media
+AKAAoACg-to refresh the bad block list, userspace can also request a re-scrub at
+AKAAoACg-any time.

3/ Support for the Microsoft DSM (device specific method) command format.

4/ Support for EDK2/OVMF virtual disk device memory ranges.

5/ Various fixes and cleanups across the subsystem.

----------------------------------------------------------------
Dan Williams (32):
+AKAAoACgAKAAoACg-libnvdimm: use devm+AF8-add+AF8-action+AF8-or+AF8-reset()
+AKAAoACgAKAAoACg-libnvdimm: IS+AF8-ERR() usage cleanup
+AKAAoACgAKAAoACg-tools/testing/nvdimm: add pfn device dependency
+AKAAoACgAKAAoACg-libnvdimm, pmem: allow nfit+AF8-test to override pmem+AF8-direct+AF8-access()
+AKAAoACgAKAAoACg-tools/testing/nvdimm: replace CONFIG+AF8-DMA+AF8-CMA dependency with vmalloc()
+AKAAoACgAKAAoACg-tools/testing/nvdimm: remove +AF8AXw-wrap+AF8-devm+AF8-memremap+AF8-pages placeholder
+AKAAoACgAKAAoACg-nfit: always associate flush hints
+AKAAoACgAKAAoACg-nfit: don't override return value of nfit+AF8-mem+AF8-init
+AKAAoACgAKAAoACg-libnvdimm: introduce devm+AF8-nvdimm+AF8-memremap(), convert nfit+AF8-spa+AF8-map() users
+AKAAoACgAKAAoACg-libnvdimm, nfit: remove nfit+AF8-spa+AF8-map() infrastructure
+AKAAoACgAKAAoACg-libnvdimm, nfit: move flush hint mapping to region-device driver-data
+AKAAoACgAKAAoACg-tools/testing/nvdimm: simulate multiple flush hints per-dimm
+AKAAoACgAKAAoACg-libnvdimm: keep region data alive over namespace removal
+AKAAoACgAKAAoACg-libnvdimm: introduce nvdimm+AF8-flush() and nvdimm+AF8-has+AF8-flush()
+AKAAoACgAKAAoACg-libnvdimm: cycle flush hints
+AKAAoACgAKAAoACg-libnvdimm, pmem: use REQ+AF8-FUA, REQ+AF8-FLUSH for nvdimm+AF8-flush()
+AKAAoACgAKAAoACg-libnvdimm, pmem: flush posted-write queues on shutdown
+AKAAoACgAKAAoACg-fs/dax: remove wmb+AF8-pmem()
+AKAAoACgAKAAoACg-libnvdimm, pmem: use nvdimm+AF8-flush() for namespace I/O writes
+AKAAoACgAKAAoACg-pmem: kill wmb+AF8-pmem()
+AKAAoACgAKAAoACg-pmem: kill +AF8AXw-pmem address space
+AKAAoACgAKAAoACg-tools/testing/nvdimm: add virtual ramdisk range
+AKAAoACgAKAAoACg-tools/testing/nvdimm: add manufacturing+AF8Aew-date+AHw-location+AH0- dimm properties
+AKAAoACgAKAAoACg-nfit: fix +AF8-FIT evaluation memory leak +- use after free
+AKAAoACgAKAAoACg-nfit: cleanup acpi+AF8-nfit+AF8-init calling convention
+AKAAoACgAKAAoACg-libnvdimm: move -+AD4-module to struct nvdimm+AF8-bus+AF8-descriptor
+AKAAoACgAKAAoACg-nfit, tools/testing/nvdimm/: unify shutdown paths
+AKAAoACgAKAAoACg-Revert +ACI-KVM: x86: add pcommit support+ACI-
+AKAAoACgAKAAoACg-x86/insn: remove pcommit
+AKAAoACgAKAAoACg-libnvdimm: register nvdimm+AF8-bus devices with an nd+AF8-bus driver
+AKAAoACgAKAAoACg-nfit: move to nfit/ sub-directory
+AKAAoACgAKAAoACg-Merge branch 'for-4.8/libnvdimm' into libnvdimm-for-next

Johannes Thumshirn (1):
+AKAAoACgAKAAoACg-libnvdimm: initialize struct blk+AF8-integrity with 0

Lee, Chun-Yi (1):
+AKAAoACgAKAAoACg-acpi, nfit: treat virtual ramdisk SPA as pmem region

Markus Elfring (1):
+AKAAoACgAKAAoACg-libnvdimm-btt: Delete an unnecessary check before the function call +ACIAXwBf-nd+AF8-device+AF8-register+ACI-

Sajjan, Vikas C (2):
+AKAAoACgAKAAoACg-nfit: use devm+AF8-add+AF8-action+AF8-or+AF8-reset()
+AKAAoACgAKAAoACg-dax: use devm+AF8-add+AF8-action+AF8-or+AF8-reset()

Vishal Verma (4):
+AKAAoACgAKAAoACg-libnvdimm, btt: update the usage section in Documentation
+AKAAoACgAKAAoACg-pmem: clarify a debug print in pmem+AF8-clear+AF8-poison
+AKAAoACgAKAAoACg-nfit, libnvdimm: allow an ARS scrub to be triggered on demand
+AKAAoACgAKAAoACg-nfit: do an ARS scrub on hitting a latent media error

stuart hayes (1):
+AKAAoACgAKAAoACg-nfit: add Microsoft NVDIMM DSM command set to white list

+AKA-Documentation/filesystems/Locking+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-2 +--
+AKA-Documentation/nvdimm/btt.txt+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoA-28 +--
+AKA-arch/powerpc/sysdev/axonram.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-4 +--
+AKA-arch/x86/include/asm/cpufeatures.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-1 -
+AKA-arch/x86/include/asm/pmem.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-77 +---
+AKA-arch/x86/include/asm/special+AF8-insns.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-46 --
+AKA-arch/x86/include/asm/vmx.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-1 -
+AKA-arch/x86/include/uapi/asm/vmx.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-4 +--
+AKA-arch/x86/kvm/cpuid.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-2 +--
+AKA-arch/x86/kvm/cpuid.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-8 -
+AKA-arch/x86/kvm/vmx.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-32 +--
+AKA-arch/x86/lib/x86-opcode-map.txt+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-2 +--
+AKA-drivers/acpi/Kconfig+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKA-27 +--
+AKA-drivers/acpi/Makefile+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-2 +--
+AKA-drivers/acpi/nfit/Kconfig+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoA-26 +-
+AKA-drivers/acpi/nfit/Makefile+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-3 +-
+AKA-drivers/acpi/+AHs-nfit.c +AD0APg- nfit/core.c+AH0AoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfA- 647 +-+-+-+-+-+-+-+-+-+-+-+----------
+AKA-drivers/acpi/nfit/mce.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKA-89 +-+-+-
+AKA-drivers/acpi/+AHs- +AD0APg- nfit+AH0-/nfit.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-60 +--
+AKA-drivers/block/brd.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-4 +--
+AKA-drivers/dax/dax.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-6 +--
+AKA-drivers/dax/pmem.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-14 +--
+AKA-drivers/nvdimm/Kconfig+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-2 +--
+AKA-drivers/nvdimm/blk.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKA-11 +--
+AKA-drivers/nvdimm/btt+AF8-devs.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-3 +--
+AKA-drivers/nvdimm/bus.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfA- 212 +-+-+-+-+-+--
+AKA-drivers/nvdimm/claim.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-7 +--
+AKA-drivers/nvdimm/core.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHw- 253 +-+-+-+-----
+AKA-drivers/nvdimm/dimm+AF8-devs.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-5 +--
+AKA-drivers/nvdimm/e820.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-1 +-
+AKA-drivers/nvdimm/nd-core.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-5 +--
+AKA-drivers/nvdimm/nd.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoA-10 +--
+AKA-drivers/nvdimm/pmem.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-85 +---
+AKA-drivers/nvdimm/pmem.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-24 +-
+AKA-drivers/nvdimm/region.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKA-19 +--
+AKA-drivers/nvdimm/region+AF8-devs.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8- 154 +-+-+-+--
+AKA-drivers/s390/block/dcssblk.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-6 +--
+AKA-fs/dax.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKA-13 +--
+AKA-include/linux/blkdev.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-6 +--
+AKA-include/linux/compiler.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-2 -
+AKA-include/linux/libnvdimm.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoA-24 +--
+AKA-include/linux/nd.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-3 +--
+AKA-include/linux/pfn+AF8-t.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-5 +--
+AKA-include/linux/pmem.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfA- 117 +----
+AKA-include/uapi/linux/ndctl.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-1 +-
+AKA-kernel/memremap.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-6 -
+AKA-scripts/checkpatch.pl+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACgAKA-1 -
+AKA-tools/objtool/arch/x86/insn/x86-opcode-map.txt+AKAAoACgAKAAoAB8AKAAoACg-2 +--
+AKA-tools/perf/arch/x86/tests/insn-x86-dat-32.c+AKAAoACgAKAAoACgAKAAoAB8AKAAoACg-2 -
+AKA-tools/perf/arch/x86/tests/insn-x86-dat-64.c+AKAAoACgAKAAoACgAKAAoAB8AKAAoACg-2 -
+AKA-tools/perf/arch/x86/tests/insn-x86-dat-src.c+AKAAoACgAKAAoACgAKAAfACgAKAAoA-4 -
+AKA-.../perf/util/intel-pt-decoder/x86-opcode-map.txt+AKAAoAB8AKAAoACg-2 +--
+AKA-tools/testing/nvdimm/Kbuild+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-10 +--
+AKA-tools/testing/nvdimm/config+AF8-check.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-1 +-
+AKA-tools/testing/nvdimm/pmem-dax.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoA-54 +-+-
+AKA-tools/testing/nvdimm/test/Kbuild+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfACgAKAAoA-2 +--
+AKA-tools/testing/nvdimm/test/iomap.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAHwAoACg-38 +--
+AKA-tools/testing/nvdimm/test/nfit.c+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAfA- 199 +-+-+-----
+AKA-tools/testing/nvdimm/test/nfit+AF8-test.h+AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAB8AKAAoACg-2 +-
+AKA-59 files changed, 1369 insertions(+-), 1009 deletions(-)
+AKA-create mode 100644 drivers/acpi/nfit/Kconfig
+AKA-create mode 100644 drivers/acpi/nfit/Makefile
+AKA-rename drivers/acpi/+AHs-nfit.c +AD0APg- nfit/core.c+AH0- (87+ACU-)
+AKA-create mode 100644 drivers/acpi/nfit/mce.c
+AKA-rename drivers/acpi/+AHs- +AD0APg- nfit+AH0-/nfit.h (82+ACU-)
+AKA-create mode 100644 drivers/nvdimm/pmem.h
+AKA-create mode 100644 tools/testing/nvdimm/pmem-dax.c