History

nfit: add Microsoft NVDIMM DSM command set to white list

Add the Microsoft _DSM command set to the white list of NVDIMM command sets. This command set is documented at: https://msdn.microsoft.com/library/windows/hardware/mt604741

stuart hayes committed 10 years ago

Commit e02fb721 parent 6b0a57e3 files · +12 −4Browse files

Unified · Split

3 files
  1. drivers/acpi/nfit.c +7 −4
  2. drivers/acpi/nfit.h +4 −0
  3. include/uapi/linux/ndctl.h +1 −0
drivers/acpi/nfit.c+7−4
@@ -1130,11 +1130,11 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, · 1129 unmodified lines
11301130 }
11311131
11321132 /*
1133− * Until standardization materializes we need to consider up to 3
1133+ * Until standardization materializes we need to consider 4
11341134 * different command sets. Note, that checking for function0 (bit0)
11351135 * tells us if any commands are reachable through this uuid.
11361136 */
1137− for (i = NVDIMM_FAMILY_INTEL; i <= NVDIMM_FAMILY_HPE2; i++)
1137+ for (i = NVDIMM_FAMILY_INTEL; i <= NVDIMM_FAMILY_MSFT; i++)
11381138 if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 1))
11391139 break;
11401140
@@ -1144,12 +1144,14 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, · 3 unmodified lines
11441144 dsm_mask = 0x3fe;
11451145 if (disable_vendor_specific)
11461146 dsm_mask &= ~(1 << ND_CMD_VENDOR);
1147− } else if (nfit_mem->family == NVDIMM_FAMILY_HPE1)
1147+ } else if (nfit_mem->family == NVDIMM_FAMILY_HPE1) {
11481148 dsm_mask = 0x1c3c76;
1149− else if (nfit_mem->family == NVDIMM_FAMILY_HPE2) {
1149+ } else if (nfit_mem->family == NVDIMM_FAMILY_HPE2) {
11501150 dsm_mask = 0x1fe;
11511151 if (disable_vendor_specific)
11521152 dsm_mask &= ~(1 << 8);
1153+ } else if (nfit_mem->family == NVDIMM_FAMILY_MSFT) {
1154+ dsm_mask = 0xffffffff;
11531155 } else {
11541156 dev_err(dev, "unknown dimm command family\n");
11551157 nfit_mem->family = -1;
@@ -2692,6 +2694,7 @@ static __init int nfit_init(void) · 1536 unmodified lines
26922694 acpi_str_to_uuid(UUID_NFIT_DIMM, nfit_uuid[NFIT_DEV_DIMM]);
26932695 acpi_str_to_uuid(UUID_NFIT_DIMM_N_HPE1, nfit_uuid[NFIT_DEV_DIMM_N_HPE1]);
26942696 acpi_str_to_uuid(UUID_NFIT_DIMM_N_HPE2, nfit_uuid[NFIT_DEV_DIMM_N_HPE2]);
2697+ acpi_str_to_uuid(UUID_NFIT_DIMM_N_MSFT, nfit_uuid[NFIT_DEV_DIMM_N_MSFT]);
26952698
26962699 nfit_wq = create_singlethread_workqueue("nfit");
26972700 if (!nfit_wq)
drivers/acpi/nfit.h+4−0
@@ -31,6 +31,9 @@ · 30 unmodified lines
3131 #define UUID_NFIT_DIMM_N_HPE1 "9002c334-acf3-4c0e-9642-a235f0d53bc6"
3232 #define UUID_NFIT_DIMM_N_HPE2 "5008664b-b758-41a0-a03c-27c2f2d04f7e"
3333
34+/* https://msdn.microsoft.com/library/windows/hardware/mt604741 */
35+#define UUID_NFIT_DIMM_N_MSFT "1ee68b36-d4bd-4a1a-9a16-4f8e53d46e05"
36+
3437 #define ACPI_NFIT_MEM_FAILED_MASK (ACPI_NFIT_MEM_SAVE_FAILED \
3538 | ACPI_NFIT_MEM_RESTORE_FAILED | ACPI_NFIT_MEM_FLUSH_FAILED \
3639 | ACPI_NFIT_MEM_NOT_ARMED)
@@ -40,6 +43,7 @@ enum nfit_uuids { · 3 unmodified lines
4043 NFIT_DEV_DIMM = NVDIMM_FAMILY_INTEL,
4144 NFIT_DEV_DIMM_N_HPE1 = NVDIMM_FAMILY_HPE1,
4245 NFIT_DEV_DIMM_N_HPE2 = NVDIMM_FAMILY_HPE2,
46+ NFIT_DEV_DIMM_N_MSFT = NVDIMM_FAMILY_MSFT,
4347 NFIT_SPA_VOLATILE,
4448 NFIT_SPA_PM,
4549 NFIT_SPA_DCR,
include/uapi/linux/ndctl.h+1−0
@@ -298,6 +298,7 @@ struct nd_cmd_pkg { · 297 unmodified lines
298298 #define NVDIMM_FAMILY_INTEL 0
299299 #define NVDIMM_FAMILY_HPE1 1
300300 #define NVDIMM_FAMILY_HPE2 2
301+#define NVDIMM_FAMILY_MSFT 3
301302
302303 #define ND_IOCTL_CALL _IOWR(ND_IOCTL, ND_CMD_CALL,\
303304 struct nd_cmd_pkg)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t