diff options
author | Dan Williams <dan.j.williams@intel.com> | 2017-10-29 15:13:07 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2017-10-29 15:13:07 -0400 |
commit | b9b1504d3c6d6831c822cd785e095fc5fb155346 (patch) | |
tree | 3eb270e7ff9197a92df20f93ada3bbdb658bc7df | |
parent | 0a3ff78699d1817e711441715d22665475466036 (diff) |
acpi, nfit: hide unknown commands from nmemX/commands
For vendor specific commands that do not have a common kernel
translation, hide them from nmemX/commands. For example, the following
results from new enabling to probe for support of the new
NVDIMM_FAMILY_INTEL DSMs specified in v1.6 of the command specification
[1]:
# cat /sys/bus/nd/devices/nmem0/commands
smart smart_thresh flags get_size get_data set_data effect_size
effect_log vendor cmd_call unknown unknown unknown unknown unknown
unknown unknown unknown
[1]: https://pmem.io/documents/NVDIMM_DSM_Interface-V1.6.pdf
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/acpi/nfit/core.c | 10 | ||||
-rw-r--r-- | drivers/acpi/nfit/nfit.h | 6 |
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index ebe0857ac346..444832b372ec 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c | |||
@@ -1769,8 +1769,14 @@ static int acpi_nfit_register_dimms(struct acpi_nfit_desc *acpi_desc) | |||
1769 | * userspace interface. | 1769 | * userspace interface. |
1770 | */ | 1770 | */ |
1771 | cmd_mask = 1UL << ND_CMD_CALL; | 1771 | cmd_mask = 1UL << ND_CMD_CALL; |
1772 | if (nfit_mem->family == NVDIMM_FAMILY_INTEL) | 1772 | if (nfit_mem->family == NVDIMM_FAMILY_INTEL) { |
1773 | cmd_mask |= nfit_mem->dsm_mask; | 1773 | /* |
1774 | * These commands have a 1:1 correspondence | ||
1775 | * between DSM payload and libnvdimm ioctl | ||
1776 | * payload format. | ||
1777 | */ | ||
1778 | cmd_mask |= nfit_mem->dsm_mask & NVDIMM_STANDARD_CMDMASK; | ||
1779 | } | ||
1774 | 1780 | ||
1775 | if (nfit_mem->has_lsi) | 1781 | if (nfit_mem->has_lsi) |
1776 | set_bit(ND_CMD_GET_CONFIG_SIZE, &cmd_mask); | 1782 | set_bit(ND_CMD_GET_CONFIG_SIZE, &cmd_mask); |
diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h index 3976d649f27c..b987196bf132 100644 --- a/drivers/acpi/nfit/nfit.h +++ b/drivers/acpi/nfit/nfit.h | |||
@@ -38,6 +38,12 @@ | |||
38 | | ACPI_NFIT_MEM_RESTORE_FAILED | ACPI_NFIT_MEM_FLUSH_FAILED \ | 38 | | ACPI_NFIT_MEM_RESTORE_FAILED | ACPI_NFIT_MEM_FLUSH_FAILED \ |
39 | | ACPI_NFIT_MEM_NOT_ARMED | ACPI_NFIT_MEM_MAP_FAILED) | 39 | | ACPI_NFIT_MEM_NOT_ARMED | ACPI_NFIT_MEM_MAP_FAILED) |
40 | 40 | ||
41 | #define NVDIMM_STANDARD_CMDMASK \ | ||
42 | (1 << ND_CMD_SMART | 1 << ND_CMD_SMART_THRESHOLD | 1 << ND_CMD_DIMM_FLAGS \ | ||
43 | | 1 << ND_CMD_GET_CONFIG_SIZE | 1 << ND_CMD_GET_CONFIG_DATA \ | ||
44 | | 1 << ND_CMD_SET_CONFIG_DATA | 1 << ND_CMD_VENDOR_EFFECT_LOG_SIZE \ | ||
45 | | 1 << ND_CMD_VENDOR_EFFECT_LOG | 1 << ND_CMD_VENDOR) | ||
46 | |||
41 | enum nfit_uuids { | 47 | enum nfit_uuids { |
42 | /* for simplicity alias the uuid index with the family id */ | 48 | /* for simplicity alias the uuid index with the family id */ |
43 | NFIT_DEV_DIMM = NVDIMM_FAMILY_INTEL, | 49 | NFIT_DEV_DIMM = NVDIMM_FAMILY_INTEL, |