Lines Matching refs:nvdimm

27 	struct nvdimm *nvdimm = to_nvdimm(dev);
29 if (!nvdimm->cmd_mask ||
30 !test_bit(ND_CMD_GET_CONFIG_DATA, &nvdimm->cmd_mask)) {
31 if (test_bit(NDD_LABELING, &nvdimm->flags))
56 * @nvdimm: dimm to initialize
174 struct nvdimm *nvdimm = to_nvdimm(dev);
176 set_bit(NDD_LABELING, &nvdimm->flags);
181 struct nvdimm *nvdimm = to_nvdimm(dev);
183 set_bit(NDD_LOCKED, &nvdimm->flags);
188 struct nvdimm *nvdimm = to_nvdimm(dev);
190 clear_bit(NDD_LOCKED, &nvdimm->flags);
195 struct nvdimm *nvdimm = to_nvdimm(dev);
197 ida_simple_remove(&dimm_ida, nvdimm->id);
198 kfree(nvdimm);
201 struct nvdimm *to_nvdimm(struct device *dev)
203 struct nvdimm *nvdimm = container_of(dev, struct nvdimm, dev);
206 return nvdimm;
212 struct nvdimm *nvdimm = nd_mapping->nvdimm;
214 WARN_ON_ONCE(!is_nvdimm_bus_locked(&nvdimm->dev));
216 return dev_get_drvdata(&nvdimm->dev);
248 const char *nvdimm_name(struct nvdimm *nvdimm)
250 return dev_name(&nvdimm->dev);
254 struct kobject *nvdimm_kobj(struct nvdimm *nvdimm)
256 return &nvdimm->dev.kobj;
260 unsigned long nvdimm_cmd_mask(struct nvdimm *nvdimm)
262 return nvdimm->cmd_mask;
266 void *nvdimm_provider_data(struct nvdimm *nvdimm)
268 if (nvdimm)
269 return nvdimm->provider_data;
277 struct nvdimm *nvdimm = to_nvdimm(dev);
280 if (!nvdimm->cmd_mask)
283 for_each_set_bit(cmd, &nvdimm->cmd_mask, BITS_PER_LONG)
293 struct nvdimm *nvdimm = to_nvdimm(dev);
296 test_bit(NDD_LABELING, &nvdimm->flags) ? "label " : "",
297 test_bit(NDD_LOCKED, &nvdimm->flags) ? "lock " : "");
304 struct nvdimm *nvdimm = to_nvdimm(dev);
312 return sprintf(buf, "%s\n", atomic_read(&nvdimm->busy)
355 struct nvdimm *nvdimm = to_nvdimm(dev);
362 nvdimm->sec.flags = nvdimm_security_flags(nvdimm, NVDIMM_USER);
364 if (test_bit(NVDIMM_SECURITY_OVERWRITE, &nvdimm->sec.flags))
366 if (test_bit(NVDIMM_SECURITY_DISABLED, &nvdimm->sec.flags))
368 if (test_bit(NVDIMM_SECURITY_UNLOCKED, &nvdimm->sec.flags))
370 if (test_bit(NVDIMM_SECURITY_LOCKED, &nvdimm->sec.flags))
378 struct nvdimm *nvdimm = to_nvdimm(dev);
381 &nvdimm->sec.flags));
420 struct nvdimm *nvdimm = to_nvdimm(dev);
424 if (!nvdimm->sec.flags)
429 if (nvdimm->sec.ops->freeze || nvdimm->sec.ops->disable
430 || nvdimm->sec.ops->change_key
431 || nvdimm->sec.ops->erase
432 || nvdimm->sec.ops->overwrite)
437 if (nvdimm->sec.ops->freeze)
449 struct nvdimm *nvdimm = to_nvdimm(dev);
452 if (!nvdimm->fw_ops)
456 result = nvdimm->fw_ops->activate_result(nvdimm);
478 struct nvdimm *nvdimm = to_nvdimm(dev);
481 if (!nvdimm->fw_ops)
485 state = nvdimm->fw_ops->activate_state(nvdimm);
503 struct nvdimm *nvdimm = to_nvdimm(dev);
507 if (!nvdimm->fw_ops)
518 rc = nvdimm->fw_ops->arm(nvdimm, arg);
538 struct nvdimm *nvdimm = to_nvdimm(dev);
543 if (!nvdimm->fw_ops)
570 .name = "nvdimm",
582 struct nvdimm *__nvdimm_create(struct nvdimm_bus *nvdimm_bus,
589 struct nvdimm *nvdimm = kzalloc(sizeof(*nvdimm), GFP_KERNEL);
592 if (!nvdimm)
595 nvdimm->id = ida_simple_get(&dimm_ida, 0, 0, GFP_KERNEL);
596 if (nvdimm->id < 0) {
597 kfree(nvdimm);
601 nvdimm->dimm_id = dimm_id;
602 nvdimm->provider_data = provider_data;
603 nvdimm->flags = flags;
604 nvdimm->cmd_mask = cmd_mask;
605 nvdimm->num_flush = num_flush;
606 nvdimm->flush_wpq = flush_wpq;
607 atomic_set(&nvdimm->busy, 0);
608 dev = &nvdimm->dev;
609 dev_set_name(dev, "nmem%d", nvdimm->id);
612 dev->devt = MKDEV(nvdimm_major, nvdimm->id);
614 nvdimm->sec.ops = sec_ops;
615 nvdimm->fw_ops = fw_ops;
616 nvdimm->sec.overwrite_tmo = 0;
617 INIT_DELAYED_WORK(&nvdimm->dwork, nvdimm_security_overwrite_query);
623 nvdimm->sec.flags = nvdimm_security_flags(nvdimm, NVDIMM_USER);
624 nvdimm->sec.ext_flags = nvdimm_security_flags(nvdimm, NVDIMM_MASTER);
632 return nvdimm;
636 void nvdimm_delete(struct nvdimm *nvdimm)
638 struct device *dev = &nvdimm->dev;
643 set_bit(NVDIMM_SECURITY_FROZEN, &nvdimm->sec.flags);
644 if (test_and_clear_bit(NDD_WORK_PENDING, &nvdimm->flags))
647 cancel_delayed_work_sync(&nvdimm->dwork);
656 struct nvdimm *nvdimm = data;
658 sysfs_put(nvdimm->sec.overwrite_state);
663 struct nvdimm *nvdimm = to_nvdimm(dev);
665 if (!nvdimm->sec.flags || !nvdimm->sec.ops
666 || !nvdimm->sec.ops->overwrite)
668 nvdimm->sec.overwrite_state = sysfs_get_dirent(dev->kobj.sd, "security");
669 if (!nvdimm->sec.overwrite_state)
672 return devm_add_action_or_reset(dev, shutdown_security_notify, nvdimm);
676 int nvdimm_in_overwrite(struct nvdimm *nvdimm)
678 return test_bit(NDD_SECURITY_OVERWRITE, &nvdimm->flags);
682 int nvdimm_security_freeze(struct nvdimm *nvdimm)
686 WARN_ON_ONCE(!is_nvdimm_bus_locked(&nvdimm->dev));
688 if (!nvdimm->sec.ops || !nvdimm->sec.ops->freeze)
691 if (!nvdimm->sec.flags)
694 if (test_bit(NDD_SECURITY_OVERWRITE, &nvdimm->flags)) {
695 dev_warn(&nvdimm->dev, "Overwrite operation in progress.\n");
699 rc = nvdimm->sec.ops->freeze(nvdimm);
700 nvdimm->sec.flags = nvdimm_security_flags(nvdimm, NVDIMM_USER);
744 if (__reserve_free_pmem(&nd_region->dev, nd_mapping->nvdimm))
839 * @nvdimm: container of dpa-resource-root + labels