linux/drivers/nvdimm
Dan Williams a3e9af95f7 libnvdimm: restore "libnvdimm: band aid btt vs clear poison locking"
This continues the 4.11 status quo of disabling of error clearing from
the BTT I/O path. Toshi found that even though we have eliminated all
the libnvdimm sources of sleeping-while-atomic triggers, we still have
sleeping operations that will occur in the path to send the ACPI DSM to
the DIMM to clear the error:

 BUG: sleeping function called from invalid context at mm/slab.h:432
 in_atomic(): 1, irqs_disabled(): 0, pid: 13353, name: dd
 Call Trace:
  dump_stack+0x86/0xc3
  ___might_sleep+0x17d/0x250
  __might_sleep+0x4a/0x80
  __kmalloc+0x1c0/0x2e0
  acpi_os_allocate_zeroed+0x2d/0x2f
  acpi_evaluate_object+0x59/0x3b1
  acpi_evaluate_dsm+0xbd/0x10c
  acpi_nfit_ctl+0x1ef/0x7c0 [nfit]
  ? nsio_rw_bytes+0x152/0x280
  nvdimm_clear_poison+0x77/0x140
  nsio_rw_bytes+0x18f/0x280
  btt_write_pg+0x1d4/0x3d0 [nd_btt]
  btt_make_request+0x119/0x2d0 [nd_btt]

A solution for tracking and handling media errors natively in the BTT is
needed.

Cc: Jeff Moyer <jmoyer@redhat.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Vishal Verma <vishal.l.verma@intel.com>
Reported-by: Toshi Kani <toshi.kani@hpe.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2017-05-01 10:00:02 -07:00
..
Kconfig Linux 4.9-rc4 2016-11-18 16:13:41 -07:00
Makefile libnvdimm, dax: introduce device-dax infrastructure 2016-05-09 15:35:42 -07:00
blk.c libnvdimm for 4.8 2016-07-28 17:38:16 -07:00
btt.c nvdimm, btt: add a size attribute for BTTs 2016-08-08 09:26:14 -07:00
btt.h libnvdimm, btt: consolidate arena validation 2015-08-14 13:43:04 -04:00
btt_devs.c libnvdimm: fix nvdimm_bus_lock() vs device_lock() ordering 2017-05-01 08:29:37 -07:00
bus.c libnvdimm: rework region badblocks clearing 2017-04-29 15:24:03 -07:00
claim.c libnvdimm: restore "libnvdimm: band aid btt vs clear poison locking" 2017-05-01 10:00:02 -07:00
core.c libnvdimm: fix clear poison locking with spinlock and GFP_NOWAIT allocation 2017-04-13 14:23:51 -07:00
dax_devs.c libnvdimm: fix nvdimm_bus_lock() vs device_lock() ordering 2017-05-01 08:29:37 -07:00
dimm.c libnvdimm: allow a platform to force enable label support 2016-10-19 08:57:33 -07:00
dimm_devs.c libnvdimm: fix blk free space accounting 2017-04-04 15:08:36 -07:00
e820.c libnvdimm, e820: use module_platform_driver 2016-12-05 08:52:21 -08:00
label.c nvdimm: use the right length of "pmem" 2016-11-11 20:37:42 -08:00
label.h libnvdimm: write blk label set 2015-06-24 21:24:10 -04:00
namespace_devs.c nfit, libnvdimm: fix interleave set cookie calculation 2017-03-01 00:49:42 -08:00
nd-core.h libnvdimm: fix clear poison locking with spinlock and GFP_NOWAIT allocation 2017-04-13 14:23:51 -07:00
nd.h libnvdimm: add mechanism to publish badblocks at the region level 2017-04-12 21:56:42 -07:00
pfn.h libnvdimm, dax: autodetect support 2016-05-20 22:02:57 -07:00
pfn_devs.c libnvdimm: fix nvdimm_bus_lock() vs device_lock() ordering 2017-05-01 08:29:37 -07:00
pmem.c libnvdimm, pmem: fix a NULL pointer BUG in nd_pmem_notify 2017-04-28 12:46:47 -07:00
pmem.h pmem: kill __pmem address space 2016-07-12 19:25:38 -07:00
region.c libnvdimm: rework region badblocks clearing 2017-04-29 15:24:03 -07:00
region_devs.c libnvdimm: rework region badblocks clearing 2017-04-29 15:24:03 -07:00