Hi Linus, please pull from: git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm libnvdimm-fixes ...to receive: 1/ Fixes for a handful of smatch reports (Thanks Dan C.!) and minor bug fixes (patches 1-6) 2/ Correctness fixes to the BLK-mode nvdimm driver (patches 7-10). Granted these are slightly large for a -rc update. They have been out for review in one form or another since the end of May and were deferred from the merge window while we settled on the "PMEM API" for the PMEM-mode nvdimm driver (i.e. memremap_pmem, memcpy_to_pmem, and wmb_pmem). Now that those apis are merged we implement them in the BLK driver to guarantee that mmio aperture moves stay ordered with respect to incoming read/write requests, and that writes are flushed through those mmio-windows and platform-buffers to be persistent on media. These pass the sub-system unit tests with the updates to tools/testing/nvdimm, and have received a successful build-report from the kbuild robot (468 configs). Full git log below with acks from Rafael for the touches to drivers/acpi/. [PATCH 01/10] sparse: fix misplaced __pmem definition [PATCH 02/10] libnvdimm: smatch cleanups in __nd_ioctl [PATCH 03/10] nvdimm: Fix return value of nvdimm_bus_init() if class_create() fails [PATCH 04/10] nfit: fix smatch "use after null check" report [PATCH 05/10] pmem: add maintainer for include/linux/pmem.h [PATCH 06/10] tools/testing/nvdimm: mock ioremap_wt [PATCH 07/10] tools/testing/nvdimm: fix return code for unimplemented commands [PATCH 08/10] tools/testing/nvdimm: add mock acpi_nfit_flush_address entries to nfit_test [PATCH 09/10] nfit: update block I/O path to use PMEM API [PATCH 10/10] nfit: add support for NVDIMM "latch" flag The following changes since commit 88793e5c774ec69351ef6b5200bb59f532e41bca: Merge tag 'libnvdimm-for-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm (2015-06-29 10:34:42 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm libnvdimm-fixes for you to fetch changes up to f0f2c072cf530d5b8890be5051cc8b36b0c54cce: nfit: add support for NVDIMM "latch" flag (2015-07-10 14:43:50 -0400) ---------------------------------------------------------------- Axel Lin (1): nvdimm: Fix return value of nvdimm_bus_init() if class_create() fails Dan Williams (6): sparse: fix misplaced __pmem definition libnvdimm: smatch cleanups in __nd_ioctl nfit: fix smatch "use after null check" report tools/testing/nvdimm: mock ioremap_wt tools/testing/nvdimm: fix return code for unimplemented commands tools/testing/nvdimm: add mock acpi_nfit_flush_address entries to nfit_test Ross Zwisler (3): pmem: add maintainer for include/linux/pmem.h nfit: update block I/O path to use PMEM API nfit: add support for NVDIMM "latch" flag MAINTAINERS | 1 + drivers/acpi/nfit.c | 134 ++++++++++++++++++++++++++++++++++---- drivers/acpi/nfit.h | 20 +++++- drivers/nvdimm/bus.c | 11 +--- include/linux/compiler.h | 2 +- tools/testing/nvdimm/Kbuild | 3 + tools/testing/nvdimm/test/iomap.c | 27 ++++++++ tools/testing/nvdimm/test/nfit.c | 52 ++++++++++++++- 8 files changed, 223 insertions(+), 27 deletions(-) commit 31f02455455d405320e2f749696bef4e02903b35 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Tue Jun 30 12:07:17 2015 -0400 sparse: fix misplaced __pmem definition Move the definition of __pmem outside of CONFIG_SPARSE_RCU_POINTER to fix: drivers/nvdimm/pmem.c:198:17: sparse: too many arguments for function __builtin_expect drivers/nvdimm/pmem.c:36:33: sparse: expected ; at end of declaration drivers/nvdimm/pmem.c:48:21: sparse: void declaration ...due to __pmem failing to be defined in some configurations when CONFIG_SPARSE_RCU_POINTER=y. Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit af834d457d9ed69e14836b63d0da198fdd2ec706 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Tue Jun 30 14:10:09 2015 -0400 libnvdimm: smatch cleanups in __nd_ioctl Drop use of access_ok() since we are already using copy_{to|from}_user() which do their own access_ok(). Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit daa1dee405d7d3d3e816b84a692e838a5647a02a Author: Axel Lin <axel.lin@xxxxxxxxxx> Date: Sun Jun 28 17:00:57 2015 +0800 nvdimm: Fix return value of nvdimm_bus_init() if class_create() fails Return proper error if class_create() fails. Signed-off-by: Axel Lin <axel.lin@xxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit 193ccca43850d2355e7690a93ab9d7d78d38f905 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Tue Jun 30 16:09:39 2015 -0400 nfit: fix smatch "use after null check" report drivers/acpi/nfit.c:1224 acpi_nfit_blk_region_enable() error: we previously assumed 'nfit_mem' could be null (see line 1223) drivers/acpi/nfit.c 1222 nfit_mem = nvdimm_provider_data(nvdimm); 1223 if (!nfit_mem || !nfit_mem->dcr || !nfit_mem->bdw) { ^^^^^^^^ Check. 1224 dev_dbg(dev, "%s: missing%s%s%s\n", __func__, 1225 nfit_mem ? "" : " nfit_mem", 1226 nfit_mem->dcr ? "" : " dcr", ^^^^^^^^^^^^^ Unchecked dereference. Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Acked-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit b864bc17f1c326783f2388057e15d3e153125ab9 Author: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Date: Fri Jul 10 11:06:10 2015 -0600 pmem: add maintainer for include/linux/pmem.h The file include/linux/pmem.h was recently created to hold the PMEM API, and is logically part of the PMEM driver. Add an entry for this file to MAINTAINERS. Signed-off-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit b1b2e6235a44174151fa3bb22657f74972635618 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Fri Jul 10 11:06:11 2015 -0600 tools/testing/nvdimm: mock ioremap_wt In the 4.2-rc1 merge the default_memremap_pmem() implementation switched from ioremap_nocache() to ioremap_wt(). Add it to the list of mocked routines to restore the ability to run the unit tests. Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit f7ec83684af020c961d7fab801f8e3ef7ce5de33 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Fri Jul 10 11:06:12 2015 -0600 tools/testing/nvdimm: fix return code for unimplemented commands The implementation for the new "DIMM Flags" DSM relies on the -ENOTTY return code to indicate that the flags are unimplimented and to fall back to a safe default. As is the -ENXIO error code erroneoously indicates to fail enabling a BLK region. Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit 9d27a87ec9e1317d368b1e5e3f4808078baa8c4c Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Fri Jul 10 14:07:03 2015 -0400 tools/testing/nvdimm: add mock acpi_nfit_flush_address entries to nfit_test In preparation for fixing the BLK path to properly use "directed pcommit" enable the unit test infrastructure to emit mock "flush" tables. Writes to these flush addresses trigger a memory controller to flush its internal buffers to persistent media, similar to the x86 "pcommit" instruction. Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit c2ad29540cb913bd9e526fae77c35c7fb45f24a3 Author: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Date: Fri Jul 10 11:06:13 2015 -0600 nfit: update block I/O path to use PMEM API Update the nfit block I/O path to use the new PMEM API and to adhere to the read/write flows outlined in the "NVDIMM Block Window Driver Writer's Guide": http://pmem.io/documents/NVDIMM_Driver_Writers_Guide.pdf This includes adding support for targeted NVDIMM flushes called "flush hints" in the ACPI 6.0 specification: http://www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf For performance and media durability the mapping for a BLK aperture is moved to a write-combining mapping which is consistent with memcpy_to_pmem() and wmb_blk(). Signed-off-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> commit f0f2c072cf530d5b8890be5051cc8b36b0c54cce Author: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Date: Fri Jul 10 11:06:14 2015 -0600 nfit: add support for NVDIMM "latch" flag Add support in the NFIT BLK I/O path for the "latch" flag defined in the "Get Block NVDIMM Flags" _DSM function: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf This flag requires the driver to read back the command register after it is written in the block I/O path. This ensures that the hardware has fully processed the new command and moved the aperture appropriately. Signed-off-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> ��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f