Lines Matching refs:ndd

31 static int __validate_dimm(struct nvdimm_drvdata *ndd)  in __validate_dimm()  argument
35 if (!ndd) in __validate_dimm()
38 nvdimm = to_nvdimm(ndd->dev); in __validate_dimm()
48 static int validate_dimm(struct nvdimm_drvdata *ndd) in validate_dimm() argument
50 int rc = __validate_dimm(ndd); in validate_dimm()
52 if (rc && ndd) in validate_dimm()
53 dev_dbg(ndd->dev, "%pf: %s error: %d\n", in validate_dimm()
62 int nvdimm_init_nsarea(struct nvdimm_drvdata *ndd) in nvdimm_init_nsarea() argument
64 struct nd_cmd_get_config_size *cmd = &ndd->nsarea; in nvdimm_init_nsarea()
65 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(ndd->dev); in nvdimm_init_nsarea()
67 int rc = validate_dimm(ndd); in nvdimm_init_nsarea()
77 return nd_desc->ndctl(nd_desc, to_nvdimm(ndd->dev), in nvdimm_init_nsarea()
81 int nvdimm_init_config_data(struct nvdimm_drvdata *ndd) in nvdimm_init_config_data() argument
83 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(ndd->dev); in nvdimm_init_config_data()
86 int rc = validate_dimm(ndd); in nvdimm_init_config_data()
93 if (ndd->data) in nvdimm_init_config_data()
96 if (ndd->nsarea.status || ndd->nsarea.max_xfer == 0 in nvdimm_init_config_data()
97 || ndd->nsarea.config_size < ND_LABEL_MIN_SIZE) { in nvdimm_init_config_data()
98 dev_dbg(ndd->dev, "failed to init config data area: (%d:%d)\n", in nvdimm_init_config_data()
99 ndd->nsarea.max_xfer, ndd->nsarea.config_size); in nvdimm_init_config_data()
103 ndd->data = kmalloc(ndd->nsarea.config_size, GFP_KERNEL); in nvdimm_init_config_data()
104 if (!ndd->data) in nvdimm_init_config_data()
105 ndd->data = vmalloc(ndd->nsarea.config_size); in nvdimm_init_config_data()
107 if (!ndd->data) in nvdimm_init_config_data()
110 max_cmd_size = min_t(u32, PAGE_SIZE, ndd->nsarea.max_xfer); in nvdimm_init_config_data()
116 for (config_size = ndd->nsarea.config_size, offset = 0; in nvdimm_init_config_data()
121 rc = nd_desc->ndctl(nd_desc, to_nvdimm(ndd->dev), in nvdimm_init_config_data()
128 memcpy(ndd->data + offset, cmd->out_buf, cmd->in_length); in nvdimm_init_config_data()
130 dev_dbg(ndd->dev, "%s: len: %zu rc: %d\n", __func__, offset, rc); in nvdimm_init_config_data()
136 int nvdimm_set_config_data(struct nvdimm_drvdata *ndd, size_t offset, in nvdimm_set_config_data() argument
139 int rc = validate_dimm(ndd); in nvdimm_set_config_data()
142 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(ndd->dev); in nvdimm_set_config_data()
148 if (!ndd->data) in nvdimm_set_config_data()
151 if (offset + len > ndd->nsarea.config_size) in nvdimm_set_config_data()
155 max_cmd_size = min_t(u32, max_cmd_size, ndd->nsarea.max_xfer); in nvdimm_set_config_data()
173 rc = nd_desc->ndctl(nd_desc, to_nvdimm(ndd->dev), in nvdimm_set_config_data()
233 struct nvdimm_drvdata *ndd = container_of(kref, typeof(*ndd), kref); in nvdimm_drvdata_release() local
234 struct device *dev = ndd->dev; in nvdimm_drvdata_release()
240 for_each_dpa_resource_safe(ndd, res, _r) in nvdimm_drvdata_release()
241 nvdimm_free_dpa(ndd, res); in nvdimm_drvdata_release()
244 kvfree(ndd->data); in nvdimm_drvdata_release()
245 kfree(ndd); in nvdimm_drvdata_release()
249 void get_ndd(struct nvdimm_drvdata *ndd) in get_ndd() argument
251 kref_get(&ndd->kref); in get_ndd()
254 void put_ndd(struct nvdimm_drvdata *ndd) in put_ndd() argument
256 if (ndd) in put_ndd()
257 kref_put(&ndd->kref, nvdimm_drvdata_release); in put_ndd()
309 struct nvdimm_drvdata *ndd = dev_get_drvdata(dev); in available_slots_show() local
313 if (!ndd) in available_slots_show()
317 nfree = nd_label_nfree(ndd); in available_slots_show()
380 struct nvdimm_drvdata *ndd = to_ndd(nd_mapping); in nd_blk_available_dpa() local
384 if (!ndd) in nd_blk_available_dpa()
388 for_each_dpa_resource(ndd, res) in nd_blk_available_dpa()
427 struct nvdimm_drvdata *ndd = to_ndd(nd_mapping); in nd_pmem_available_dpa() local
431 if (!ndd) in nd_pmem_available_dpa()
437 for_each_dpa_resource(ndd, res) in nd_pmem_available_dpa()
481 nd_dbg_dpa(nd_region, ndd, res, "%s\n", reason); in nd_pmem_available_dpa()
485 void nvdimm_free_dpa(struct nvdimm_drvdata *ndd, struct resource *res) in nvdimm_free_dpa() argument
487 WARN_ON_ONCE(!is_nvdimm_bus_locked(ndd->dev)); in nvdimm_free_dpa()
489 __release_region(&ndd->dpa, res->start, resource_size(res)); in nvdimm_free_dpa()
492 struct resource *nvdimm_allocate_dpa(struct nvdimm_drvdata *ndd, in nvdimm_allocate_dpa() argument
502 WARN_ON_ONCE(!is_nvdimm_bus_locked(ndd->dev)); in nvdimm_allocate_dpa()
503 res = __request_region(&ndd->dpa, start, n, name, 0); in nvdimm_allocate_dpa()
514 resource_size_t nvdimm_allocated_dpa(struct nvdimm_drvdata *ndd, in nvdimm_allocated_dpa() argument
520 for_each_dpa_resource(ndd, res) in nvdimm_allocated_dpa()