diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-08-22 22:23:25 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-09-01 21:20:14 -0400 |
commit | 231bf117aada289023fd6f3377461ce80792e273 (patch) | |
tree | 41d82c8a0789c714a97391f8186a86724605d13c /drivers/acpi | |
parent | ba9c8dd3c22275e46feef429f343b85e9cf3924c (diff) |
tools/testing/nvdimm: unit test for acpi_nvdimm_notify()
Trigger an nmemX/nfit/flags attribute to fire an event whenever a
smart-threshold DSM is received.
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/nfit/core.c | 10 | ||||
-rw-r--r-- | drivers/acpi/nfit/nfit.h | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index 4af1db1cb599..ceb6671ab355 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c | |||
@@ -1248,7 +1248,7 @@ static struct nvdimm *acpi_nfit_dimm_by_handle(struct acpi_nfit_desc *acpi_desc, | |||
1248 | return NULL; | 1248 | return NULL; |
1249 | } | 1249 | } |
1250 | 1250 | ||
1251 | static void __acpi_nvdimm_notify(struct device *dev, u32 event) | 1251 | void __acpi_nvdimm_notify(struct device *dev, u32 event) |
1252 | { | 1252 | { |
1253 | struct nfit_mem *nfit_mem; | 1253 | struct nfit_mem *nfit_mem; |
1254 | struct acpi_nfit_desc *acpi_desc; | 1254 | struct acpi_nfit_desc *acpi_desc; |
@@ -1274,6 +1274,7 @@ static void __acpi_nvdimm_notify(struct device *dev, u32 event) | |||
1274 | if (nfit_mem && nfit_mem->flags_attr) | 1274 | if (nfit_mem && nfit_mem->flags_attr) |
1275 | sysfs_notify_dirent(nfit_mem->flags_attr); | 1275 | sysfs_notify_dirent(nfit_mem->flags_attr); |
1276 | } | 1276 | } |
1277 | EXPORT_SYMBOL_GPL(__acpi_nvdimm_notify); | ||
1277 | 1278 | ||
1278 | static void acpi_nvdimm_notify(acpi_handle handle, u32 event, void *data) | 1279 | static void acpi_nvdimm_notify(acpi_handle handle, u32 event, void *data) |
1279 | { | 1280 | { |
@@ -1365,12 +1366,15 @@ static void shutdown_dimm_notify(void *data) | |||
1365 | * notifications. | 1366 | * notifications. |
1366 | */ | 1367 | */ |
1367 | list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) { | 1368 | list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) { |
1369 | struct acpi_device *adev_dimm = nfit_mem->adev; | ||
1370 | |||
1368 | if (nfit_mem->flags_attr) { | 1371 | if (nfit_mem->flags_attr) { |
1369 | sysfs_put(nfit_mem->flags_attr); | 1372 | sysfs_put(nfit_mem->flags_attr); |
1370 | nfit_mem->flags_attr = NULL; | 1373 | nfit_mem->flags_attr = NULL; |
1371 | } | 1374 | } |
1372 | acpi_remove_notify_handler(nfit_mem->adev->handle, | 1375 | if (adev_dimm) |
1373 | ACPI_DEVICE_NOTIFY, acpi_nvdimm_notify); | 1376 | acpi_remove_notify_handler(adev_dimm->handle, |
1377 | ACPI_DEVICE_NOTIFY, acpi_nvdimm_notify); | ||
1374 | } | 1378 | } |
1375 | mutex_unlock(&acpi_desc->init_mutex); | 1379 | mutex_unlock(&acpi_desc->init_mutex); |
1376 | } | 1380 | } |
diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h index 13195824778c..bb101170cd0b 100644 --- a/drivers/acpi/nfit/nfit.h +++ b/drivers/acpi/nfit/nfit.h | |||
@@ -233,5 +233,6 @@ static inline struct acpi_nfit_desc *to_acpi_desc( | |||
233 | const u8 *to_nfit_uuid(enum nfit_uuids id); | 233 | const u8 *to_nfit_uuid(enum nfit_uuids id); |
234 | int acpi_nfit_init(struct acpi_nfit_desc *acpi_desc, void *nfit, acpi_size sz); | 234 | int acpi_nfit_init(struct acpi_nfit_desc *acpi_desc, void *nfit, acpi_size sz); |
235 | void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event); | 235 | void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event); |
236 | void __acpi_nvdimm_notify(struct device *dev, u32 event); | ||
236 | void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev); | 237 | void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev); |
237 | #endif /* __NFIT_H__ */ | 238 | #endif /* __NFIT_H__ */ |