[GIT PULL] libnvdimm fixes for 4.8-rc2

2016-08-12 Thread Williams, Dan J
Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes

...to receive:

- Fix for the nd_blk (NVDIMM Block Window Aperture) driver.  A spec
clarification requires the driver to mask off reserved bits in status
register. This is tagged for -stable back to the v4.2 kernel.

- Fix for a kernel crash in the nvdimm unit tests when module loading
is interrupted with SIGTERM. Tagged for -stable since validation
efforts external to Intel use the unit tests for qualifying backports.

- Add a new 'size' sysfs attribute for the BTT (NVDIMM Block
Translation Table) driver to make it symmetric with the other namespace
personality drivers (PFN and DAX) that provide a size attribute for
indicating how much namespace capacity is lost to metadata.

The BTT change arrived at the start of the merge window and has
appeared in a -next release.  It can technically wait for 4.9, but it
is small, fixes asymmetry in the libnvdimm-sysfs interface, and
something I would have squeezed into the v4.8 pull request had it
arrived a few days earlier.

---

The following changes since commit 29b4817d4018df78086157ea3a55c1d9424a7cfc:

  Linux 4.8-rc1 (2016-08-07 18:18:00 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes

for you to fetch changes up to d8d378fa1a0c98ecb50ca52c9bf3bc14e25aa2d2:

  tools/testing/nvdimm: fix SIGTERM vs hotplug crash (2016-08-10 15:59:09 -0700)


Dan Williams (1):
  tools/testing/nvdimm: fix SIGTERM vs hotplug crash

Ross Zwisler (1):
  libnvdimm, nd_blk: mask off reserved status bits

Vishal Verma (1):
  nvdimm, btt: add a size attribute for BTTs

 drivers/acpi/nfit/core.c |  3 ++-
 drivers/nvdimm/btt.c |  1 +
 drivers/nvdimm/btt_devs.c| 20 
 drivers/nvdimm/nd.h  |  1 +
 tools/testing/nvdimm/test/nfit.c |  2 ++
 5 files changed, 26 insertions(+), 1 deletion(-)

commit 68202c9f0ad6e16ee806fbadbc5838d55fe5aa5c
Author: Ross Zwisler 
Date:   Fri Jul 29 14:59:12 2016 -0600

libnvdimm, nd_blk: mask off reserved status bits

The "NVDIMM Block Window Driver Writer's Guide":

http://pmem.io/documents/NVDIMM_DriverWritersGuide-July-2016.pdf

...defines the layout of the block window status register.  For the July
2016 version of the spec linked to above, this happens in Figure 4 on
page 26.

The only bits defined in this spec are bits 31, 5, 4, 2, 1 and 0.  The
rest of the bits in the status register are reserved, and there is a
warning following the diagram that says:

Note: The driver cannot assume the value of the RESERVED bits in the
status register are zero. These reserved bits need to be masked off, and
the driver must avoid checking the state of those bits.

This change ensures that for hardware implementations that set these
reserved bits in the status register, the driver won't incorrectly fail the
block I/Os.

Cc:  #v4.2+
Reviewed-by: Lee, Chun-Yi 
Signed-off-by: Ross Zwisler 
Signed-off-by: Dan Williams 

commit abe8b4e3cef88b8202641d63f5ad58141b970b0f
Author: Vishal Verma 
Date:   Wed Jul 27 16:38:59 2016 -0600

nvdimm, btt: add a size attribute for BTTs

To be consistent with other namespaces, expose a 'size' attribute for
BTT devices also.

Cc: Dan Williams 
Reported-by: Linda Knippers 
Signed-off-by: Vishal Verma 
Signed-off-by: Dan Williams 

commit d8d378fa1a0c98ecb50ca52c9bf3bc14e25aa2d2
Author: Dan Williams 
Date:   Wed Aug 10 15:59:09 2016 -0700

tools/testing/nvdimm: fix SIGTERM vs hotplug crash

The unit tests crash when hotplug races the previous probe. This race
requires that the loading of the nfit_test module be terminated with
SIGTERM, and the module to be unloaded while the ars scan is still
running.

In contrast to the normal nfit driver, the unit test calls
acpi_nfit_init() twice to simulate hotplug, whereas the nominal case
goes through the acpi_nfit_notify() event handler.  The
acpi_nfit_notify() path is careful to flush the previous region
registration before servicing the hotplug event. The unit test was
missing this guarantee.

 BUG: unable to handle kernel NULL pointer dereference at   (null)
 IP: [] pwq_activate_delayed_work+0x47/0x170
 [..]
 Call Trace:
  [] pwq_dec_nr_in_flight+0x66/0xa0
  [] process_one_work+0x2d0/0x680
  [] ? process_one_work+0x171/0x680
  [] worker_thread+0x4e/0x480
  [] ? 

[GIT PULL] libnvdimm fixes for 4.8-rc2

2016-08-12 Thread Williams, Dan J
Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes

...to receive:

- Fix for the nd_blk (NVDIMM Block Window Aperture) driver.  A spec
clarification requires the driver to mask off reserved bits in status
register. This is tagged for -stable back to the v4.2 kernel.

- Fix for a kernel crash in the nvdimm unit tests when module loading
is interrupted with SIGTERM. Tagged for -stable since validation
efforts external to Intel use the unit tests for qualifying backports.

- Add a new 'size' sysfs attribute for the BTT (NVDIMM Block
Translation Table) driver to make it symmetric with the other namespace
personality drivers (PFN and DAX) that provide a size attribute for
indicating how much namespace capacity is lost to metadata.

The BTT change arrived at the start of the merge window and has
appeared in a -next release.  It can technically wait for 4.9, but it
is small, fixes asymmetry in the libnvdimm-sysfs interface, and
something I would have squeezed into the v4.8 pull request had it
arrived a few days earlier.

---

The following changes since commit 29b4817d4018df78086157ea3a55c1d9424a7cfc:

  Linux 4.8-rc1 (2016-08-07 18:18:00 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes

for you to fetch changes up to d8d378fa1a0c98ecb50ca52c9bf3bc14e25aa2d2:

  tools/testing/nvdimm: fix SIGTERM vs hotplug crash (2016-08-10 15:59:09 -0700)


Dan Williams (1):
  tools/testing/nvdimm: fix SIGTERM vs hotplug crash

Ross Zwisler (1):
  libnvdimm, nd_blk: mask off reserved status bits

Vishal Verma (1):
  nvdimm, btt: add a size attribute for BTTs

 drivers/acpi/nfit/core.c |  3 ++-
 drivers/nvdimm/btt.c |  1 +
 drivers/nvdimm/btt_devs.c| 20 
 drivers/nvdimm/nd.h  |  1 +
 tools/testing/nvdimm/test/nfit.c |  2 ++
 5 files changed, 26 insertions(+), 1 deletion(-)

commit 68202c9f0ad6e16ee806fbadbc5838d55fe5aa5c
Author: Ross Zwisler 
Date:   Fri Jul 29 14:59:12 2016 -0600

libnvdimm, nd_blk: mask off reserved status bits

The "NVDIMM Block Window Driver Writer's Guide":

http://pmem.io/documents/NVDIMM_DriverWritersGuide-July-2016.pdf

...defines the layout of the block window status register.  For the July
2016 version of the spec linked to above, this happens in Figure 4 on
page 26.

The only bits defined in this spec are bits 31, 5, 4, 2, 1 and 0.  The
rest of the bits in the status register are reserved, and there is a
warning following the diagram that says:

Note: The driver cannot assume the value of the RESERVED bits in the
status register are zero. These reserved bits need to be masked off, and
the driver must avoid checking the state of those bits.

This change ensures that for hardware implementations that set these
reserved bits in the status register, the driver won't incorrectly fail the
block I/Os.

Cc:  #v4.2+
Reviewed-by: Lee, Chun-Yi 
Signed-off-by: Ross Zwisler 
Signed-off-by: Dan Williams 

commit abe8b4e3cef88b8202641d63f5ad58141b970b0f
Author: Vishal Verma 
Date:   Wed Jul 27 16:38:59 2016 -0600

nvdimm, btt: add a size attribute for BTTs

To be consistent with other namespaces, expose a 'size' attribute for
BTT devices also.

Cc: Dan Williams 
Reported-by: Linda Knippers 
Signed-off-by: Vishal Verma 
Signed-off-by: Dan Williams 

commit d8d378fa1a0c98ecb50ca52c9bf3bc14e25aa2d2
Author: Dan Williams 
Date:   Wed Aug 10 15:59:09 2016 -0700

tools/testing/nvdimm: fix SIGTERM vs hotplug crash

The unit tests crash when hotplug races the previous probe. This race
requires that the loading of the nfit_test module be terminated with
SIGTERM, and the module to be unloaded while the ars scan is still
running.

In contrast to the normal nfit driver, the unit test calls
acpi_nfit_init() twice to simulate hotplug, whereas the nominal case
goes through the acpi_nfit_notify() event handler.  The
acpi_nfit_notify() path is careful to flush the previous region
registration before servicing the hotplug event. The unit test was
missing this guarantee.

 BUG: unable to handle kernel NULL pointer dereference at   (null)
 IP: [] pwq_activate_delayed_work+0x47/0x170
 [..]
 Call Trace:
  [] pwq_dec_nr_in_flight+0x66/0xa0
  [] process_one_work+0x2d0/0x680
  [] ? process_one_work+0x171/0x680
  [] worker_thread+0x4e/0x480
  [] ? process_one_work+0x680/0x680
  [] ? process_one_work+0x680/0x680
  [] kthread+0xf3/0x110
  [] ret_from_fork+0x1f/0x40
  [] ? kthread_create_on_node+0x230/0x230

Cc: 
Signed-off-by: Dan Williams