Lines Matching +full:activate +full:- +full:to +full:- +full:activate

1 // SPDX-License-Identifier: GPL-2.0
17 return sprintf(buf, "%s\n", acpi_desc->fwa_noidle ? "Y" : "N"); in firmware_activate_noidle_show()
32 if (val != acpi_desc->fwa_noidle) in firmware_activate_noidle_store()
33 acpi_desc->fwa_cap = NVDIMM_FWA_CAP_INVALID; in firmware_activate_noidle_store()
34 acpi_desc->fwa_noidle = val; in firmware_activate_noidle_store()
45 if (!test_bit(NVDIMM_BUS_FAMILY_INTEL, &nd_desc->bus_family_mask)) in intel_fwa_supported()
48 mask = &acpi_desc->family_dsm_mask[NVDIMM_BUS_FAMILY_INTEL]; in intel_fwa_supported()
72 if (!test_bit(NVDIMM_INTEL_GET_SECURITY_STATE, &nfit_mem->dsm_mask)) in intel_security_flags()
135 if (!test_bit(NVDIMM_INTEL_FREEZE_LOCK, &nfit_mem->dsm_mask)) in intel_security_freeze()
136 return -ENOTTY; in intel_security_freeze()
142 return -EIO; in intel_security_freeze()
169 if (!test_bit(cmd, &nfit_mem->dsm_mask)) in intel_security_change_key()
170 return -ENOTTY; in intel_security_change_key()
172 memcpy(nd_cmd.cmd.old_pass, old_data->data, in intel_security_change_key()
174 memcpy(nd_cmd.cmd.new_pass, new_data->data, in intel_security_change_key()
184 return -EINVAL; in intel_security_change_key()
186 return -EOPNOTSUPP; in intel_security_change_key()
189 return -EIO; in intel_security_change_key()
213 if (!test_bit(NVDIMM_INTEL_UNLOCK_UNIT, &nfit_mem->dsm_mask)) in intel_security_unlock()
214 return -ENOTTY; in intel_security_unlock()
216 memcpy(nd_cmd.cmd.passphrase, key_data->data, in intel_security_unlock()
225 return -EINVAL; in intel_security_unlock()
227 return -EIO; in intel_security_unlock()
254 if (!test_bit(NVDIMM_INTEL_DISABLE_PASSPHRASE, &nfit_mem->dsm_mask)) in intel_security_disable()
255 return -ENOTTY; in intel_security_disable()
257 memcpy(nd_cmd.cmd.passphrase, key_data->data, in intel_security_disable()
267 return -EINVAL; in intel_security_disable()
270 return -ENXIO; in intel_security_disable()
297 if (!test_bit(cmd, &nfit_mem->dsm_mask)) in intel_security_erase()
298 return -ENOTTY; in intel_security_erase()
302 memcpy(nd_cmd.cmd.passphrase, key->data, in intel_security_erase()
312 return -EOPNOTSUPP; in intel_security_erase()
314 return -EINVAL; in intel_security_erase()
317 return -ENXIO; in intel_security_erase()
341 if (!test_bit(NVDIMM_INTEL_QUERY_OVERWRITE, &nfit_mem->dsm_mask)) in intel_security_query_overwrite()
342 return -ENOTTY; in intel_security_query_overwrite()
352 return -EBUSY; in intel_security_query_overwrite()
354 return -ENXIO; in intel_security_query_overwrite()
380 if (!test_bit(NVDIMM_INTEL_OVERWRITE, &nfit_mem->dsm_mask)) in intel_security_overwrite()
381 return -ENOTTY; in intel_security_overwrite()
385 memcpy(nd_cmd.cmd.passphrase, nkey->data, in intel_security_overwrite()
395 return -ENOTSUPP; in intel_security_overwrite()
397 return -EINVAL; in intel_security_overwrite()
400 return -ENXIO; in intel_security_overwrite()
453 rc = nd_desc->ndctl(nd_desc, NULL, ND_CMD_CALL, &nd_cmd, sizeof(nd_cmd), in intel_bus_fwa_businfo()
459 /* The fw_ops expect to be called with the nvdimm_bus_lock() held */
465 struct device *dev = acpi_desc->dev; in intel_bus_fwa_state()
470 * It should not be possible for platform firmware to return in intel_bus_fwa_state()
471 * busy because activate is a synchronous operation. Treat it in intel_bus_fwa_state()
472 * similar to invalid, i.e. always refresh / poll the status. in intel_bus_fwa_state()
474 switch (acpi_desc->fwa_state) { in intel_bus_fwa_state()
479 /* check if capability needs to be refreshed */ in intel_bus_fwa_state()
480 if (acpi_desc->fwa_cap == NVDIMM_FWA_CAP_INVALID) in intel_bus_fwa_state()
482 return acpi_desc->fwa_state; in intel_bus_fwa_state()
504 dev_err_once(dev, "invalid firmware activate state %d\n", in intel_bus_fwa_state()
511 * is expected to be static. in intel_bus_fwa_state()
513 if (acpi_desc->fwa_cap == NVDIMM_FWA_CAP_INVALID) { in intel_bus_fwa_state()
515 acpi_desc->fwa_cap = NVDIMM_FWA_CAP_QUIESCE; in intel_bus_fwa_state()
519 * indicates that it does not need devices to be in intel_bus_fwa_state()
522 acpi_desc->fwa_cap = NVDIMM_FWA_CAP_LIVE; in intel_bus_fwa_state()
524 acpi_desc->fwa_cap = NVDIMM_FWA_CAP_NONE; in intel_bus_fwa_state()
527 acpi_desc->fwa_state = state; in intel_bus_fwa_state()
537 if (acpi_desc->fwa_cap > NVDIMM_FWA_CAP_INVALID) in intel_bus_fwa_capability()
538 return acpi_desc->fwa_cap; in intel_bus_fwa_capability()
541 return acpi_desc->fwa_cap; in intel_bus_fwa_capability()
563 * Even though activate is run from a suspended context, in intel_bus_fwa_activate()
564 * for safety, still ask platform firmware to force in intel_bus_fwa_activate()
569 .iodev_state = acpi_desc->fwa_noidle in intel_bus_fwa_activate()
581 return -ENXIO; in intel_bus_fwa_activate()
584 rc = nd_desc->ndctl(nd_desc, NULL, ND_CMD_CALL, &nd_cmd, sizeof(nd_cmd), in intel_bus_fwa_activate()
589 * for the result needs to query the DIMMs individually. in intel_bus_fwa_activate()
590 * Increment the activation count to invalidate all the DIMM in intel_bus_fwa_activate()
591 * states at once (it's otherwise not possible to take in intel_bus_fwa_activate()
592 * acpi_desc->init_mutex in this context) in intel_bus_fwa_activate()
594 acpi_desc->fwa_state = NVDIMM_FWA_INVALID; in intel_bus_fwa_activate()
595 acpi_desc->fwa_count++; in intel_bus_fwa_activate()
597 dev_dbg(acpi_desc->dev, "result: %d\n", rc); in intel_bus_fwa_activate()
605 .activate = intel_bus_fwa_activate,
636 struct acpi_nfit_desc *acpi_desc = nfit_mem->acpi_desc; in intel_fwa_state()
641 * Similar to the bus state, since activate is synchronous the in intel_fwa_state()
642 * busy state should resolve within the context of 'activate'. in intel_fwa_state()
644 switch (nfit_mem->fwa_state) { in intel_fwa_state()
650 if (nfit_mem->fwa_count == acpi_desc->fwa_count) in intel_fwa_state()
651 return nfit_mem->fwa_state; in intel_fwa_state()
660 nfit_mem->fwa_state = NVDIMM_FWA_IDLE; in intel_fwa_state()
663 nfit_mem->fwa_state = NVDIMM_FWA_BUSY; in intel_fwa_state()
666 nfit_mem->fwa_state = NVDIMM_FWA_ARMED; in intel_fwa_state()
669 nfit_mem->fwa_state = NVDIMM_FWA_INVALID; in intel_fwa_state()
675 nfit_mem->fwa_result = NVDIMM_FWA_RESULT_NONE; in intel_fwa_state()
678 nfit_mem->fwa_result = NVDIMM_FWA_RESULT_SUCCESS; in intel_fwa_state()
681 nfit_mem->fwa_result = NVDIMM_FWA_RESULT_NOTSTAGED; in intel_fwa_state()
684 nfit_mem->fwa_result = NVDIMM_FWA_RESULT_NEEDRESET; in intel_fwa_state()
691 nfit_mem->fwa_result = NVDIMM_FWA_RESULT_FAIL; in intel_fwa_state()
695 nfit_mem->fwa_count = acpi_desc->fwa_count; in intel_fwa_state()
697 return nfit_mem->fwa_state; in intel_fwa_state()
703 struct acpi_nfit_desc *acpi_desc = nfit_mem->acpi_desc; in intel_fwa_result()
705 if (nfit_mem->fwa_count == acpi_desc->fwa_count in intel_fwa_result()
706 && nfit_mem->fwa_result > NVDIMM_FWA_RESULT_INVALID) in intel_fwa_result()
707 return nfit_mem->fwa_result; in intel_fwa_result()
710 return nfit_mem->fwa_result; in intel_fwa_result()
718 struct acpi_nfit_desc *acpi_desc = nfit_mem->acpi_desc; in intel_fwa_arm()
742 return -ENXIO; in intel_fwa_arm()
744 return -EBUSY; in intel_fwa_arm()
754 return -ENXIO; in intel_fwa_arm()
758 * Invalidate the bus-level state, now that we're committed to in intel_fwa_arm()
761 acpi_desc->fwa_state = NVDIMM_FWA_INVALID; in intel_fwa_arm()
762 nfit_mem->fwa_state = NVDIMM_FWA_INVALID; in intel_fwa_arm()
766 dev_dbg(acpi_desc->dev, "%s result: %d\n", arm == NVDIMM_FWA_ARM in intel_fwa_arm()