Lines Matching refs:nd_region
27 struct nd_region *nd_region = to_nd_region(dev); in nd_region_release() local
30 for (i = 0; i < nd_region->ndr_mappings; i++) { in nd_region_release()
31 struct nd_mapping *nd_mapping = &nd_region->mapping[i]; in nd_region_release()
36 free_percpu(nd_region->lane); in nd_region_release()
37 ida_simple_remove(®ion_ida, nd_region->id); in nd_region_release()
41 kfree(nd_region); in nd_region_release()
69 struct nd_region *to_nd_region(struct device *dev) in to_nd_region()
71 struct nd_region *nd_region = container_of(dev, struct nd_region, dev); in to_nd_region() local
74 return nd_region; in to_nd_region()
80 struct nd_region *nd_region = to_nd_region(dev); in to_nd_blk_region() local
83 return container_of(nd_region, struct nd_blk_region, nd_region); in to_nd_blk_region()
87 void *nd_region_provider_data(struct nd_region *nd_region) in nd_region_provider_data() argument
89 return nd_region->provider_data; in nd_region_provider_data()
113 int nd_region_to_nstype(struct nd_region *nd_region) in nd_region_to_nstype() argument
115 if (is_nd_pmem(&nd_region->dev)) { in nd_region_to_nstype()
118 for (i = 0, alias = 0; i < nd_region->ndr_mappings; i++) { in nd_region_to_nstype()
119 struct nd_mapping *nd_mapping = &nd_region->mapping[i]; in nd_region_to_nstype()
129 } else if (is_nd_blk(&nd_region->dev)) { in nd_region_to_nstype()
140 struct nd_region *nd_region = to_nd_region(dev); in size_show() local
144 size = nd_region->ndr_size; in size_show()
145 } else if (nd_region->ndr_mappings == 1) { in size_show()
146 struct nd_mapping *nd_mapping = &nd_region->mapping[0]; in size_show()
158 struct nd_region *nd_region = to_nd_region(dev); in mappings_show() local
160 return sprintf(buf, "%d\n", nd_region->ndr_mappings); in mappings_show()
167 struct nd_region *nd_region = to_nd_region(dev); in nstype_show() local
169 return sprintf(buf, "%d\n", nd_region_to_nstype(nd_region)); in nstype_show()
176 struct nd_region *nd_region = to_nd_region(dev); in set_cookie_show() local
177 struct nd_interleave_set *nd_set = nd_region->nd_set; in set_cookie_show()
188 resource_size_t nd_region_available_dpa(struct nd_region *nd_region) in nd_region_available_dpa() argument
193 WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev)); in nd_region_available_dpa()
198 for (i = 0; i < nd_region->ndr_mappings; i++) { in nd_region_available_dpa()
199 struct nd_mapping *nd_mapping = &nd_region->mapping[i]; in nd_region_available_dpa()
206 if (is_nd_pmem(&nd_region->dev)) { in nd_region_available_dpa()
207 available += nd_pmem_available_dpa(nd_region, in nd_region_available_dpa()
213 } else if (is_nd_blk(&nd_region->dev)) { in nd_region_available_dpa()
224 struct nd_region *nd_region = to_nd_region(dev); in available_size_show() local
235 available = nd_region_available_dpa(nd_region); in available_size_show()
262 struct nd_region *nd_region = to_nd_region(dev); in namespace_seed_show() local
266 if (nd_region->ns_seed) in namespace_seed_show()
267 rc = sprintf(buf, "%s\n", dev_name(nd_region->ns_seed)); in namespace_seed_show()
278 struct nd_region *nd_region = to_nd_region(dev); in btt_seed_show() local
282 if (nd_region->btt_seed) in btt_seed_show()
283 rc = sprintf(buf, "%s\n", dev_name(nd_region->btt_seed)); in btt_seed_show()
295 struct nd_region *nd_region = to_nd_region(dev); in pfn_seed_show() local
299 if (nd_region->pfn_seed) in pfn_seed_show()
300 rc = sprintf(buf, "%s\n", dev_name(nd_region->pfn_seed)); in pfn_seed_show()
312 struct nd_region *nd_region = to_nd_region(dev); in read_only_show() local
314 return sprintf(buf, "%d\n", nd_region->ro); in read_only_show()
322 struct nd_region *nd_region = to_nd_region(dev); in read_only_store() local
327 nd_region->ro = ro; in read_only_store()
349 struct nd_region *nd_region = to_nd_region(dev); in region_visible() local
350 struct nd_interleave_set *nd_set = nd_region->nd_set; in region_visible()
351 int type = nd_region_to_nstype(nd_region); in region_visible()
373 u64 nd_region_interleave_set_cookie(struct nd_region *nd_region) in nd_region_interleave_set_cookie() argument
375 struct nd_interleave_set *nd_set = nd_region->nd_set; in nd_region_interleave_set_cookie()
391 struct nd_region *nd_region; in nd_region_notify_driver_action() local
396 nd_region = to_nd_region(dev); in nd_region_notify_driver_action()
397 for (i = 0; i < nd_region->ndr_mappings; i++) { in nd_region_notify_driver_action()
398 struct nd_mapping *nd_mapping = &nd_region->mapping[i]; in nd_region_notify_driver_action()
416 nd_region = to_nd_region(dev->parent); in nd_region_notify_driver_action()
418 if (nd_region->ns_seed == dev) in nd_region_notify_driver_action()
419 nd_region_create_blk_seed(nd_region); in nd_region_notify_driver_action()
425 nd_region = to_nd_region(dev->parent); in nd_region_notify_driver_action()
427 if (nd_region->btt_seed == dev) in nd_region_notify_driver_action()
428 nd_region_create_btt_seed(nd_region); in nd_region_notify_driver_action()
429 if (nd_region->ns_seed == &nd_btt->ndns->dev && in nd_region_notify_driver_action()
431 nd_region_create_blk_seed(nd_region); in nd_region_notify_driver_action()
448 struct nd_region *nd_region = to_nd_region(dev); in mappingN() local
452 if (n >= nd_region->ndr_mappings) in mappingN()
454 nd_mapping = &nd_region->mapping[n]; in mappingN()
509 struct nd_region *nd_region = to_nd_region(dev); in mapping_visible() local
511 if (n < nd_region->ndr_mappings) in mapping_visible()
558 int nd_blk_region_init(struct nd_region *nd_region) in nd_blk_region_init() argument
560 struct device *dev = &nd_region->dev; in nd_blk_region_init()
566 if (nd_region->ndr_mappings < 1) { in nd_blk_region_init()
591 unsigned int nd_region_acquire_lane(struct nd_region *nd_region) in nd_region_acquire_lane() argument
596 if (nd_region->num_lanes < nr_cpu_ids) { in nd_region_acquire_lane()
599 lane = cpu % nd_region->num_lanes; in nd_region_acquire_lane()
600 ndl_count = per_cpu_ptr(nd_region->lane, cpu); in nd_region_acquire_lane()
601 ndl_lock = per_cpu_ptr(nd_region->lane, lane); in nd_region_acquire_lane()
611 void nd_region_release_lane(struct nd_region *nd_region, unsigned int lane) in nd_region_release_lane() argument
613 if (nd_region->num_lanes < nr_cpu_ids) { in nd_region_release_lane()
617 ndl_count = per_cpu_ptr(nd_region->lane, cpu); in nd_region_release_lane()
618 ndl_lock = per_cpu_ptr(nd_region->lane, lane); in nd_region_release_lane()
627 static struct nd_region *nd_region_create(struct nvdimm_bus *nvdimm_bus, in nd_region_create()
631 struct nd_region *nd_region; in nd_region_create() local
661 nd_region = &ndbr->nd_region; in nd_region_create()
668 nd_region = kzalloc(sizeof(struct nd_region) in nd_region_create()
672 region_buf = nd_region; in nd_region_create()
677 nd_region->id = ida_simple_get(®ion_ida, 0, 0, GFP_KERNEL); in nd_region_create()
678 if (nd_region->id < 0) in nd_region_create()
681 nd_region->lane = alloc_percpu(struct nd_percpu_lane); in nd_region_create()
682 if (!nd_region->lane) in nd_region_create()
688 ndl = per_cpu_ptr(nd_region->lane, i); in nd_region_create()
693 memcpy(nd_region->mapping, ndr_desc->nd_mapping, in nd_region_create()
701 nd_region->ndr_mappings = ndr_desc->num_mappings; in nd_region_create()
702 nd_region->provider_data = ndr_desc->provider_data; in nd_region_create()
703 nd_region->nd_set = ndr_desc->nd_set; in nd_region_create()
704 nd_region->num_lanes = ndr_desc->num_lanes; in nd_region_create()
705 nd_region->flags = ndr_desc->flags; in nd_region_create()
706 nd_region->ro = ro; in nd_region_create()
707 nd_region->numa_node = ndr_desc->numa_node; in nd_region_create()
708 ida_init(&nd_region->ns_ida); in nd_region_create()
709 ida_init(&nd_region->btt_ida); in nd_region_create()
710 ida_init(&nd_region->pfn_ida); in nd_region_create()
711 dev = &nd_region->dev; in nd_region_create()
712 dev_set_name(dev, "region%d", nd_region->id); in nd_region_create()
716 nd_region->ndr_size = resource_size(ndr_desc->res); in nd_region_create()
717 nd_region->ndr_start = ndr_desc->res->start; in nd_region_create()
720 return nd_region; in nd_region_create()
723 ida_simple_remove(®ion_ida, nd_region->id); in nd_region_create()
729 struct nd_region *nvdimm_pmem_region_create(struct nvdimm_bus *nvdimm_bus, in nvdimm_pmem_region_create()
738 struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus, in nvdimm_blk_region_create()
749 struct nd_region *nvdimm_volatile_region_create(struct nvdimm_bus *nvdimm_bus, in nvdimm_volatile_region_create()