diff options
author | Vishal Verma <vishal.l.verma@intel.com> | 2015-07-09 13:25:36 -0600 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2015-07-27 22:53:19 -0400 |
commit | 39c686b862cdb2049b90e095b6c6c727b2a7ab60 (patch) | |
tree | 4858a38b3c4441bad3e9599ff8cf0de01be13817 /drivers/acpi | |
parent | ec92777f2ba93c00387b8fe53780c25adc57c744 (diff) | |
download | talos-obmc-linux-39c686b862cdb2049b90e095b6c6c727b2a7ab60.tar.gz talos-obmc-linux-39c686b862cdb2049b90e095b6c6c727b2a7ab60.zip |
libnvdimm: Add DSM support for Address Range Scrub commands
Add support for the three ARS DSM commands:
- Query ARS Capabilities - Queries the firmware to check if a given
range supports scrub, and if so, which type (persistent vs. volatile)
- Start ARS - Starts a scrub for a given range/type
- Query ARS Status - Checks status of a previously started scrub, and
provides the error logs if any.
The commands are described by the example DSM spec at:
http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
Also add these commands to the nfit_test test framework, and return
canned data.
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/nfit.c | 1 | ||||
-rw-r--r-- | drivers/acpi/nfit.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c index 628a42c41ab1..ef8a664db254 100644 --- a/drivers/acpi/nfit.c +++ b/drivers/acpi/nfit.c @@ -868,6 +868,7 @@ static void acpi_nfit_init_dsms(struct acpi_nfit_desc *acpi_desc) struct acpi_device *adev; int i; + nd_desc->dsm_mask = acpi_desc->bus_dsm_force_en; adev = to_acpi_dev(acpi_desc); if (!adev) return; diff --git a/drivers/acpi/nfit.h b/drivers/acpi/nfit.h index 79b6d83875c1..f2c2bb751882 100644 --- a/drivers/acpi/nfit.h +++ b/drivers/acpi/nfit.h @@ -107,6 +107,7 @@ struct acpi_nfit_desc { struct nvdimm_bus *nvdimm_bus; struct device *dev; unsigned long dimm_dsm_force_en; + unsigned long bus_dsm_force_en; int (*blk_do_io)(struct nd_blk_region *ndbr, resource_size_t dpa, void *iobuf, u64 len, int rw); }; |