| @@ -1130,11 +1130,11 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, · 1129 unmodified lines |
| 1130 | 1130 | } |
| 1131 | 1131 | |
| 1132 | 1132 | /* |
| 1133 | | − * Until standardization materializes we need to consider up to 3 |
| 1133 | + * Until standardization materializes we need to consider 4 |
| 1134 | 1134 | * different command sets. Note, that checking for function0 (bit0) |
| 1135 | 1135 | * tells us if any commands are reachable through this uuid. |
| 1136 | 1136 | */ |
| 1137 | | − for (i = NVDIMM_FAMILY_INTEL; i <= NVDIMM_FAMILY_HPE2; i++) |
| 1137 | + for (i = NVDIMM_FAMILY_INTEL; i <= NVDIMM_FAMILY_MSFT; i++) |
| 1138 | 1138 | if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 1)) |
| 1139 | 1139 | break; |
| 1140 | 1140 | |
| @@ -1144,12 +1144,14 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, · 3 unmodified lines |
| 1144 | 1144 | dsm_mask = 0x3fe; |
| 1145 | 1145 | if (disable_vendor_specific) |
| 1146 | 1146 | dsm_mask &= ~(1 << ND_CMD_VENDOR); |
| 1147 | | − } else if (nfit_mem->family == NVDIMM_FAMILY_HPE1) |
| 1147 | + } else if (nfit_mem->family == NVDIMM_FAMILY_HPE1) { |
| 1148 | 1148 | dsm_mask = 0x1c3c76; |
| 1149 | | − else if (nfit_mem->family == NVDIMM_FAMILY_HPE2) { |
| 1149 | + } else if (nfit_mem->family == NVDIMM_FAMILY_HPE2) { |
| 1150 | 1150 | dsm_mask = 0x1fe; |
| 1151 | 1151 | if (disable_vendor_specific) |
| 1152 | 1152 | dsm_mask &= ~(1 << 8); |
| 1153 | + } else if (nfit_mem->family == NVDIMM_FAMILY_MSFT) { |
| 1154 | + dsm_mask = 0xffffffff; |
| 1153 | 1155 | } else { |
| 1154 | 1156 | dev_err(dev, "unknown dimm command family\n"); |
| 1155 | 1157 | nfit_mem->family = -1; |
| @@ -2692,6 +2694,7 @@ static __init int nfit_init(void) · 1536 unmodified lines |
| 2692 | 2694 | acpi_str_to_uuid(UUID_NFIT_DIMM, nfit_uuid[NFIT_DEV_DIMM]); |
| 2693 | 2695 | acpi_str_to_uuid(UUID_NFIT_DIMM_N_HPE1, nfit_uuid[NFIT_DEV_DIMM_N_HPE1]); |
| 2694 | 2696 | 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]); |
| 2695 | 2698 | |
| 2696 | 2699 | nfit_wq = create_singlethread_workqueue("nfit"); |
| 2697 | 2700 | if (!nfit_wq) |