nfit: do an ARS scrub on hitting a latent media error
authorVishal Verma <vishal.l.verma@intel.com>
Sun, 24 Jul 2016 04:51:21 +0000 (21:51 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 24 Jul 2016 15:04:04 +0000 (08:04 -0700)
commit6839a6d96f4ea0254266d60208c1fbbd53ade546
treeb1be166d2e7028ce5185e7ad642b5f1598a0cb07
parentbdf97013ced5f263da0dc9d559f5c09e922d8423
nfit: do an ARS scrub on hitting a latent media error

When a latent (unknown to 'badblocks') error is encountered, it will
trigger a machine check exception. On a system with machine check
recovery, this will only SIGBUS the process(es) which had the bad page
mapped (as opposed to a kernel panic on platforms without machine
check recovery features). In the former case, we want to trigger a full
rescan of that nvdimm bus. This will allow any additional, new errors
to be captured in the block devices' badblocks lists, and offending
operations on them can be trapped early, avoiding machine checks.

This is done by registering a callback function with the
x86_mce_decoder_chain and calling the new ars_rescan functionality with
the address in the mce notificatiion.

Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/acpi/nfit/Makefile
drivers/acpi/nfit/core.c
drivers/acpi/nfit/mce.c [new file with mode: 0644]
drivers/acpi/nfit/nfit.h
tools/testing/nvdimm/Kbuild