Lines Matching refs:cxlmd

27 	struct cxl_memdev *cxlmd = to_cxl_memdev(dev);  in cxl_memdev_release()  local
29 ida_free(&cxl_memdev_ida, cxlmd->id); in cxl_memdev_release()
30 kfree(cxlmd); in cxl_memdev_release()
42 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in firmware_version_show() local
43 struct cxl_dev_state *cxlds = cxlmd->cxlds; in firmware_version_show()
55 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in payload_max_show() local
56 struct cxl_dev_state *cxlds = cxlmd->cxlds; in payload_max_show()
68 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in label_storage_size_show() local
69 struct cxl_dev_state *cxlds = cxlmd->cxlds; in label_storage_size_show()
89 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in ram_size_show() local
90 struct cxl_dev_state *cxlds = cxlmd->cxlds; in ram_size_show()
102 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in pmem_size_show() local
103 struct cxl_dev_state *cxlds = cxlmd->cxlds; in pmem_size_show()
115 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in serial_show() local
116 struct cxl_dev_state *cxlds = cxlmd->cxlds; in serial_show()
133 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in security_state_show() local
134 struct cxl_dev_state *cxlds = cxlmd->cxlds; in security_state_show()
166 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in security_sanitize_store() local
173 rc = cxl_mem_sanitize(cxlmd, CXL_MBOX_OP_SANITIZE); in security_sanitize_store()
186 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in security_erase_store() local
193 rc = cxl_mem_sanitize(cxlmd, CXL_MBOX_OP_SECURE_ERASE); in security_erase_store()
202 bool cxl_memdev_has_poison_cmd(struct cxl_memdev *cxlmd, in cxl_memdev_has_poison_cmd() argument
205 struct cxl_memdev_state *mds = to_cxl_memdev_state(cxlmd->cxlds); in cxl_memdev_has_poison_cmd()
213 static int cxl_get_poison_by_memdev(struct cxl_memdev *cxlmd) in cxl_get_poison_by_memdev() argument
215 struct cxl_dev_state *cxlds = cxlmd->cxlds; in cxl_get_poison_by_memdev()
225 rc = cxl_mem_get_poison(cxlmd, offset, length, NULL); in cxl_get_poison_by_memdev()
236 int cxl_trigger_poison_list(struct cxl_memdev *cxlmd) in cxl_trigger_poison_list() argument
241 port = cxlmd->endpoint; in cxl_trigger_poison_list()
255 rc = cxl_get_poison_by_memdev(cxlmd); in cxl_trigger_poison_list()
265 static int cxl_validate_poison_dpa(struct cxl_memdev *cxlmd, u64 dpa) in cxl_validate_poison_dpa() argument
267 struct cxl_dev_state *cxlds = cxlmd->cxlds; in cxl_validate_poison_dpa()
289 int cxl_inject_poison_locked(struct cxl_memdev *cxlmd, u64 dpa) in cxl_inject_poison_locked() argument
291 struct cxl_mailbox *cxl_mbox = &cxlmd->cxlds->cxl_mbox; in cxl_inject_poison_locked()
304 rc = cxl_validate_poison_dpa(cxlmd, dpa); in cxl_inject_poison_locked()
318 cxlr = cxl_dpa_to_region(cxlmd, dpa); in cxl_inject_poison_locked()
328 trace_cxl_poison(cxlmd, cxlr, &record, 0, 0, CXL_POISON_TRACE_INJECT); in cxl_inject_poison_locked()
333 int cxl_inject_poison(struct cxl_memdev *cxlmd, u64 dpa) in cxl_inject_poison() argument
345 return cxl_inject_poison_locked(cxlmd, dpa); in cxl_inject_poison()
349 int cxl_clear_poison_locked(struct cxl_memdev *cxlmd, u64 dpa) in cxl_clear_poison_locked() argument
351 struct cxl_mailbox *cxl_mbox = &cxlmd->cxlds->cxl_mbox; in cxl_clear_poison_locked()
364 rc = cxl_validate_poison_dpa(cxlmd, dpa); in cxl_clear_poison_locked()
387 cxlr = cxl_dpa_to_region(cxlmd, dpa); in cxl_clear_poison_locked()
397 trace_cxl_poison(cxlmd, cxlr, &record, 0, 0, CXL_POISON_TRACE_CLEAR); in cxl_clear_poison_locked()
402 int cxl_clear_poison(struct cxl_memdev *cxlmd, u64 dpa) in cxl_clear_poison() argument
414 return cxl_clear_poison_locked(cxlmd, dpa); in cxl_clear_poison()
438 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in pmem_qos_class_show() local
439 struct cxl_dev_state *cxlds = cxlmd->cxlds; in pmem_qos_class_show()
463 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in ram_qos_class_show() local
464 struct cxl_dev_state *cxlds = cxlmd->cxlds; in ram_qos_class_show()
501 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in cxl_ram_visible() local
502 struct cxl_dpa_perf *perf = to_ram_perf(cxlmd->cxlds); in cxl_ram_visible()
520 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in cxl_pmem_visible() local
521 struct cxl_dpa_perf *perf = to_pmem_perf(cxlmd->cxlds); in cxl_pmem_visible()
540 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in cxl_memdev_security_visible() local
541 struct cxl_memdev_state *mds = to_cxl_memdev_state(cxlmd->cxlds); in cxl_memdev_security_visible()
568 void cxl_memdev_update_perf(struct cxl_memdev *cxlmd) in cxl_memdev_update_perf() argument
570 sysfs_update_group(&cxlmd->dev.kobj, &cxl_memdev_ram_attribute_group); in cxl_memdev_update_perf()
571 sysfs_update_group(&cxlmd->dev.kobj, &cxl_memdev_pmem_attribute_group); in cxl_memdev_update_perf()
626 struct cxl_memdev *cxlmd = to_cxl_memdev(dev); in cxl_memdev_shutdown() local
629 cxlmd->cxlds = NULL; in cxl_memdev_shutdown()
634 struct cxl_memdev *cxlmd = _cxlmd; in cxl_memdev_unregister() local
635 struct device *dev = &cxlmd->dev; in cxl_memdev_unregister()
637 cdev_device_del(&cxlmd->cdev, dev); in cxl_memdev_unregister()
644 struct cxl_memdev *cxlmd; in detach_memdev() local
646 cxlmd = container_of(work, typeof(*cxlmd), detach_work); in detach_memdev()
653 if (cxlmd->attach) in detach_memdev()
654 device_release_driver(cxlmd->dev.parent); in detach_memdev()
656 device_release_driver(&cxlmd->dev); in detach_memdev()
657 put_device(&cxlmd->dev); in detach_memdev()
690 struct cxl_memdev *cxlmd; in cxl_memdev_alloc() local
695 cxlmd = kzalloc_obj(*cxlmd); in cxl_memdev_alloc()
696 if (!cxlmd) in cxl_memdev_alloc()
702 cxlmd->id = rc; in cxl_memdev_alloc()
703 cxlmd->depth = -1; in cxl_memdev_alloc()
704 cxlmd->attach = attach; in cxl_memdev_alloc()
705 cxlmd->endpoint = ERR_PTR(-ENXIO); in cxl_memdev_alloc()
707 dev = &cxlmd->dev; in cxl_memdev_alloc()
712 dev->devt = MKDEV(cxl_mem_major, cxlmd->id); in cxl_memdev_alloc()
715 INIT_WORK(&cxlmd->detach_work, detach_memdev); in cxl_memdev_alloc()
717 cdev = &cxlmd->cdev; in cxl_memdev_alloc()
719 return cxlmd; in cxl_memdev_alloc()
722 kfree(cxlmd); in cxl_memdev_alloc()
726 static long __cxl_memdev_ioctl(struct cxl_memdev *cxlmd, unsigned int cmd, in __cxl_memdev_ioctl() argument
729 struct cxl_memdev_state *mds = to_cxl_memdev_state(cxlmd->cxlds); in __cxl_memdev_ioctl()
745 struct cxl_memdev *cxlmd = file->private_data; in cxl_memdev_ioctl() local
749 cxlds = cxlmd->cxlds; in cxl_memdev_ioctl()
751 return __cxl_memdev_ioctl(cxlmd, cmd, arg); in cxl_memdev_ioctl()
758 struct cxl_memdev *cxlmd = in cxl_memdev_open() local
759 container_of(inode->i_cdev, typeof(*cxlmd), cdev); in cxl_memdev_open()
761 get_device(&cxlmd->dev); in cxl_memdev_open()
762 file->private_data = cxlmd; in cxl_memdev_open()
769 struct cxl_memdev *cxlmd = in cxl_memdev_release_file() local
770 container_of(inode->i_cdev, typeof(*cxlmd), cdev); in cxl_memdev_release_file()
772 put_device(&cxlmd->dev); in cxl_memdev_release_file()
892 struct cxl_memdev *cxlmd = cxlds->cxlmd; in cxl_fw_do_cancel() local
897 dev_err(&cxlmd->dev, "Error aborting FW transfer: %d\n", rc); in cxl_fw_do_cancel()
934 struct cxl_memdev *cxlmd = cxlds->cxlmd; in cxl_fw_write() local
945 dev_err(&cxlmd->dev, in cxl_fw_write()
1011 dev_dbg(&cxlmd->dev, "Activating firmware slot: %d\n", in cxl_fw_write()
1015 dev_err(&cxlmd->dev, "Error activating firmware: %d\n", in cxl_fw_write()
1069 struct device *dev = &cxlds->cxlmd->dev; in devm_cxl_setup_fw_upload()
1096 static int cxlmd_add(struct cxl_memdev *cxlmd, struct cxl_dev_state *cxlds) in cxlmd_add() argument
1100 cxlmd->cxlds = cxlds; in cxlmd_add()
1101 cxlds->cxlmd = cxlmd; in cxlmd_add()
1103 rc = cdev_device_add(&cxlmd->cdev, &cxlmd->dev); in cxlmd_add()
1109 cxl_memdev_shutdown(&cxlmd->dev); in cxlmd_add()
1119 static bool cxl_memdev_attach_failed(struct cxl_memdev *cxlmd) in cxl_memdev_attach_failed() argument
1127 guard(device)(&cxlmd->dev); in cxl_memdev_attach_failed()
1128 return (cxlmd->attach && !cxlmd->dev.driver); in cxl_memdev_attach_failed()
1131 static struct cxl_memdev *cxl_memdev_autoremove(struct cxl_memdev *cxlmd) in cxl_memdev_autoremove() argument
1135 if (cxl_memdev_attach_failed(cxlmd)) { in cxl_memdev_autoremove()
1136 cxl_memdev_unregister(cxlmd); in cxl_memdev_autoremove()
1140 rc = devm_add_action_or_reset(cxlmd->cxlds->dev, cxl_memdev_unregister, in cxl_memdev_autoremove()
1141 cxlmd); in cxl_memdev_autoremove()
1145 return cxlmd; in cxl_memdev_autoremove()
1158 struct cxl_memdev *cxlmd __free(put_cxlmd) = in __devm_cxl_add_memdev()
1160 if (IS_ERR(cxlmd)) in __devm_cxl_add_memdev()
1161 return cxlmd; in __devm_cxl_add_memdev()
1163 dev = &cxlmd->dev; in __devm_cxl_add_memdev()
1164 rc = dev_set_name(dev, "mem%d", cxlmd->id); in __devm_cxl_add_memdev()
1168 rc = cxlmd_add(cxlmd, cxlds); in __devm_cxl_add_memdev()
1172 return cxl_memdev_autoremove(no_free_ptr(cxlmd)); in __devm_cxl_add_memdev()
1196 struct cxl_memdev *cxlmd) in devm_cxl_sanitize_setup_notifier() argument
1198 struct cxl_dev_state *cxlds = cxlmd->cxlds; in devm_cxl_sanitize_setup_notifier()
1209 sec = sysfs_get_dirent(cxlmd->dev.kobj.sd, "security"); in devm_cxl_sanitize_setup_notifier()