mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
nfit, libnvdimm: clear poison command support
Add the boiler-plate for a 'clear error' command based on section 9.20.7.6 "Function Index 4 - Clear Uncorrectable Error" from the ACPI 6.1 specification, and add a reference implementation in nfit_test. Reviewed-by: Vishal Verma <[email protected]> Signed-off-by: Dan Williams <[email protected]>
This commit is contained in:
parent
07accfa9d1
commit
d4f323672a
4 changed files with 72 additions and 1 deletions
|
|
@ -87,6 +87,7 @@ static struct acpi_device *to_acpi_dev(struct acpi_nfit_desc *acpi_desc)
|
|||
|
||||
static int xlat_status(void *buf, unsigned int cmd)
|
||||
{
|
||||
struct nd_cmd_clear_error *clear_err;
|
||||
struct nd_cmd_ars_status *ars_status;
|
||||
struct nd_cmd_ars_start *ars_start;
|
||||
struct nd_cmd_ars_cap *ars_cap;
|
||||
|
|
@ -149,6 +150,15 @@ static int xlat_status(void *buf, unsigned int cmd)
|
|||
if (ars_status->status >> 16)
|
||||
return -EIO;
|
||||
break;
|
||||
case ND_CMD_CLEAR_ERROR:
|
||||
clear_err = buf;
|
||||
if (clear_err->status & 0xffff)
|
||||
return -EIO;
|
||||
if (!clear_err->cleared)
|
||||
return -EIO;
|
||||
if (clear_err->length > clear_err->cleared)
|
||||
return clear_err->cleared;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -1002,7 +1012,7 @@ static void acpi_nfit_init_dsms(struct acpi_nfit_desc *acpi_desc)
|
|||
if (!adev)
|
||||
return;
|
||||
|
||||
for (i = ND_CMD_ARS_CAP; i <= ND_CMD_ARS_STATUS; i++)
|
||||
for (i = ND_CMD_ARS_CAP; i <= ND_CMD_CLEAR_ERROR; i++)
|
||||
if (acpi_check_dsm(adev->handle, uuid, 1, 1ULL << i))
|
||||
set_bit(i, &nd_desc->dsm_mask);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue