[GIT PULL] libnvdimm for 4.9

From: Williams, Dan J
Date: Tue Oct 11 2016 - 02:47:56 EST

Hi Linus, please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-4.9

...to receive the libnvdimm update for 4.9.

Aside from the recently added pmem sub-division support these have been
in -next for several releases with no reported issues. +AKA-The sub-
division support was included in next-20161010 with no reported issues.
+AKA-It passes all unit tests including new tests for all the new
functionality below.

The following changes since commit 595c73071e6641e59b83911fbb4026e767471000:

libnvdimm, region: fix flush hint table thinko (2016-09-24 11:45:38 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-4.9

for you to fetch changes up to e476f94482fc20a23b7b33b3d8e50f1953f71828:

Merge branch 'for-4.9/dax' into libnvdimm-for-next (2016-10-07 16:46:30 -0700)

libnvdimm for 4.9

+ACo- PMEM sub-division support: Allow a single PMEM region to be divided
into multiple namespaces. Originally, +AH4-2 years ago, it was thought that
partitions of a /dev/pmemX block device could handle sub-allocations of
persistent memory for different use cases. With the decision to not
support DAX mappings of raw block-devices, and the genesis of
device-dax, the need for having multiple pmem-namespace per region has

+ACo- Device-DAX unified inode: In support of dynamic-resizing of a
device-dax instance the kernel arranges for all mappings of a
device-dax node to share the same inode. This allows unmap / truncate /
invalidation events to affect all instances of the device similar to the
behavior of mmap on block devices.

+ACo- Hardware error scrubbing reworks: The original address-range-scrub +-
badblocks tracking solution allowed clearing entries at the individual
namespace level, but it failed to clear the internal list of media
errors maintained at the bus level. The result was that the next scrub
or namespace disable/re-enable event would restore the cleared
badblocks, but now that is fixed. The v4.8 kernel introduced an
auto-scrub-on-machine-check behavior to repopulate the badblocks list.
Now, in v4.9, the auto-scrub behavior can be disabled and simply arrange
for the error reported in the machine-check to be added to the list.

+ACo- DIMM health-event notification support: ACPI 6.1 defines a
notification event code that can be send to ACPI NVDIMM devices. A
poll(2) capable file descriptor for these events can be obtained from
the nmemX/nfit/flags sysfs-attribute of a libnvdimm memory device.

+ACo- Miscellaneous fixes: NVDIMM-N probe error, device-dax build error, and
a change to dedup the flush hint list to not flush the memory controller
more than necessary.

Arnd Bergmann (1):
dax: use correct dev+AF8-t value

Dan Williams (31):
libnvdimm: fix SMART Health DSM payload definition
tools/testing/nvdimm: unit test for acpi+AF8-nfit+AF8-notify()
dax: cleanup needlessly global symbol warnings
dax: reorder dax+AF8-fops function definitions
dax: rename fops from dax+AF8-dev+AF8- to dax+AF8-
dax: embed a struct device in dax+AF8-dev
dax: convert to the cdev api
dax: define a unified inode/address+AF8-space for device-dax mappings
dax: unmap/truncate on device shutdown
dax: check resource alignment at dax region/device create
acpi, nfit: add dimm device notification support
tools/testing/nvdimm: unit test for acpi+AF8-nvdimm+AF8-notify()
tools/testing/nvdimm: test get+AF8-config+AF8-size DSM failures
libnvdimm, namespace: debug invalid interleave-set-cookie values
libnvdimm, region: move region-mapping input-paramters to nd+AF8-mapping+AF8-desc
libnvdimm, label: convert label tracking to a linked list
libnvdimm, namespace: refactor uuid+AF8-show() into a namespace+AF8-to+AF8-uuid() helper
libnvdimm, namespace: unify blk and pmem label scanning
tools/testing/nvdimm: support for sub-dividing a pmem region
libnvdimm, namespace: allow multiple pmem-namespaces per region at scan time
libnvdimm, namespace: sort namespaces by dpa at init
libnvdimm, region: update nd+AF8-region+AF8-available+AF8-dpa() for multi-pmem support
libnvdimm, namespace: expand pmem device naming scheme for multi-pmem
libnvdimm, namespace: update label implementation for multi-pmem
libnvdimm, namespace: enable allocation of multiple pmem namespaces
libnvdimm, namespace: filter out of range labels in scan+AF8-labels()
libnvdimm, namespace: lift single pmem limit in scan+AF8-labels()
libnvdimm, namespace: allow creation of multiple pmem-namespaces per region
dax: convert devm+AF8-create+AF8-dax+AF8-dev to PTR+AF8-ERR
Merge branch 'for-4.9/libnvdimm' into libnvdimm-for-next
Merge branch 'for-4.9/dax' into libnvdimm-for-next

Dave Jiang (2):
nvdimm: remove duplicate nd+AF8-mapping declaration
nvdimm: reduce duplicated wpq flushes

Geert Uytterhoeven (1):
nvdimm: Spelling s/unacknoweldged/unacknowledged/

Ross Zwisler (1):
/dev/dax: fix Kconfig dependency build breakage

Toshi Kani (1):
libnvdimm: Fix nvdimm+AF8-probe error on NVDIMM-N

Vishal Verma (4):
acpi, nfit: check for the correct event code in notifications
nfit: don't start a full scrub by default for an MCE
pmem: reduce kmap+AF8-atomic sections to the memcpys only
libnvdimm: clear the internal poison+AF8-list when clearing badblocks

drivers/acpi/nfit/core.c +AHw- 210 +-+-+-+-+-+-+---
drivers/acpi/nfit/mce.c +AHw- 24 +--
drivers/acpi/nfit/nfit.h +AHw- 17 +-
drivers/dax/Kconfig +AHw- 5 +-
drivers/dax/dax.c +AHw- 577 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----------
drivers/dax/dax.h +AHw- 5 +--
drivers/dax/pmem.c +AHw- 7 +--
drivers/nvdimm/Kconfig +AHw- 2 +--
drivers/nvdimm/bus.c +AHw- 2 +-
drivers/nvdimm/core.c +AHw- 73 +-+-+--
drivers/nvdimm/dimm.c +AHw- 11 +-
drivers/nvdimm/dimm+AF8-devs.c +AHw- 226 +-+-+-+-+-+-+----
drivers/nvdimm/label.c +AHw- 192 +-+-+-+-+-----
drivers/nvdimm/namespace+AF8-devs.c +AHw- 792 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+------------
drivers/nvdimm/nd-core.h +AHw- 24 +--
drivers/nvdimm/nd.h +AHw- 29 +--
drivers/nvdimm/pmem.c +AHw- 28 +--
drivers/nvdimm/region+AF8-devs.c +AHw- 75 +-+-+--
fs/char+AF8-dev.c +AHw- 1 +-
include/linux/libnvdimm.h +AHw- 28 +--
include/linux/nd.h +AHw- 8 +--
include/uapi/linux/magic.h +AHw- 1 +-
include/uapi/linux/ndctl.h +AHw- 30 +--
tools/testing/nvdimm/Kbuild +AHw- 1 +-
tools/testing/nvdimm/test/iomap.c +AHw- 151 +-+-+-+-+---
tools/testing/nvdimm/test/nfit.c +AHw- 160 +-+-+-+-+-+--
tools/testing/nvdimm/test/nfit+AF8-test.h +AHw- 12 +--
27 files changed, 1940 insertions(+-), 751 deletions(-)