Lines Matching defs:dax_region

134 static bool is_static(struct dax_region *dax_region)
136 return (dax_region->res.flags & IORESOURCE_DAX_STATIC) != 0;
156 struct dax_region *dax_region = dev_dax->region;
164 if (rc || is_static(dax_region))
171 if (dax_region->seed == dev)
172 dax_region->seed = NULL;
216 struct dax_region *dax_region = dev_get_drvdata(dev);
218 return sprintf(buf, "%d\n", dax_region->id);
225 struct dax_region *dax_region = dev_get_drvdata(dev);
228 resource_size(&dax_region->res));
236 struct dax_region *dax_region = dev_get_drvdata(dev);
238 return sprintf(buf, "%u\n", dax_region->align);
243 #define for_each_dax_region_resource(dax_region, res) \
244 for (res = (dax_region)->res.child; res; res = res->sibling)
246 static unsigned long long dax_region_avail_size(struct dax_region *dax_region)
248 resource_size_t size = resource_size(&dax_region->res);
251 device_lock_assert(dax_region->dev);
253 for_each_dax_region_resource(dax_region, res)
261 struct dax_region *dax_region = dev_get_drvdata(dev);
265 size = dax_region_avail_size(dax_region);
275 struct dax_region *dax_region = dev_get_drvdata(dev);
279 if (is_static(dax_region))
283 seed = dax_region->seed;
294 struct dax_region *dax_region = dev_get_drvdata(dev);
298 if (is_static(dax_region))
302 youngest = dax_region->youngest;
312 struct dax_region *dax_region = dev_get_drvdata(dev);
317 if (is_static(dax_region))
327 avail = dax_region_avail_size(dax_region);
332 .dax_region = dax_region,
348 if (!dax_region->seed)
349 dax_region->seed = &dev_dax->dev;
350 dax_region->youngest = &dev_dax->dev;
374 struct dax_region *dax_region = dev_dax->region;
376 device_lock_assert(dax_region->dev);
381 __release_region(&dax_region->res, range->start, range_len(range));
408 struct dax_region *dax_region;
410 dax_region = container_of(kref, struct dax_region, kref);
411 kfree(dax_region);
414 void dax_region_put(struct dax_region *dax_region)
416 kref_put(&dax_region->kref, dax_region_free);
424 struct dax_region *dax_region;
431 dax_region = dev_dax->region;
432 ida_free(&dax_region->ida, dev_dax->id);
433 dax_region_put(dax_region);
451 struct dax_region *dax_region = dev_dax->region;
454 id = ida_alloc(&dax_region->ida, GFP_KERNEL);
457 kref_get(&dax_region->kref);
466 struct dax_region *dax_region = dev_get_drvdata(dev);
472 if (is_static(dax_region))
475 victim = device_find_child_by_name(dax_region->dev, buf);
489 * dax_region is registered.
494 if (dax_region->seed == victim)
495 dax_region->seed = NULL;
496 if (dax_region->youngest == victim)
497 dax_region->youngest = NULL;
517 struct dax_region *dax_region = dev_get_drvdata(dev);
519 if (is_static(dax_region))
540 .name = "dax_region",
552 struct dax_region *dax_region = region;
554 sysfs_remove_groups(&dax_region->dev->kobj,
556 dax_region_put(dax_region);
559 struct dax_region *alloc_dax_region(struct device *parent, int region_id,
563 struct dax_region *dax_region;
579 dax_region = kzalloc(sizeof(*dax_region), GFP_KERNEL);
580 if (!dax_region)
583 dev_set_drvdata(parent, dax_region);
584 kref_init(&dax_region->kref);
585 dax_region->id = region_id;
586 dax_region->align = align;
587 dax_region->dev = parent;
588 dax_region->target_node = target_node;
589 ida_init(&dax_region->ida);
590 dax_region->res = (struct resource) {
597 kfree(dax_region);
601 kref_get(&dax_region->kref);
602 if (devm_add_action_or_reset(parent, dax_region_unregister, dax_region))
604 return dax_region;
624 struct dax_region *dax_region = dev_dax->region;
628 device_lock_assert(dax_region->dev);
641 struct dax_region *dax_region = dev_dax->region;
643 device_lock(dax_region->dev);
645 device_unlock(dax_region->dev);
656 struct dax_region *dax_region = dev_dax->region;
658 device_unlock(dax_region->dev);
732 struct dax_region *dax_region = dev_dax->region;
737 device_lock_assert(dax_region->dev);
739 if (dev_WARN_ONCE(&dev_dax->dev, !dax_region->dev->driver,
765 rc = devm_add_action_or_reset(dax_region->dev, unregister_dax_mapping,
775 struct dax_region *dax_region = dev_dax->region;
776 struct resource *res = &dax_region->res;
783 device_lock_assert(dax_region->dev);
845 struct dax_region *dax_region = dev_dax->region;
851 device_lock_assert(dax_region->dev);
897 struct dax_region *dax_region = dev_dax->region;
909 devm_release_action(dax_region->dev,
918 for_each_dax_region_resource(dax_region, res)
960 static ssize_t dev_dax_resize(struct dax_region *dax_region,
963 resource_size_t avail = dax_region_avail_size(dax_region), to_alloc;
965 struct resource *region_res = &dax_region->res;
993 return alloc_dev_dax_range(dev_dax, dax_region->res.start, to_alloc);
1000 if (res == first && res->start > dax_region->res.start) {
1001 alloc = min(res->start - dax_region->res.start, to_alloc);
1002 rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, alloc);
1039 struct dax_region *dax_region = dev_dax->region;
1050 device_lock(dax_region->dev);
1051 if (!dax_region->dev->driver) {
1052 device_unlock(dax_region->dev);
1056 rc = dev_dax_resize(dax_region, dev_dax, val);
1058 device_unlock(dax_region->dev);
1098 struct dax_region *dax_region = dev_dax->region;
1108 device_lock(dax_region->dev);
1109 if (!dax_region->dev->driver) {
1110 device_unlock(dax_region->dev);
1119 device_unlock(dax_region->dev);
1162 struct dax_region *dax_region = dev_dax->region;
1173 device_lock(dax_region->dev);
1174 if (!dax_region->dev->driver) {
1175 device_unlock(dax_region->dev);
1192 device_unlock(dax_region->dev);
1199 struct dax_region *dax_region = dev_dax->region;
1201 return dax_region->target_node;
1217 struct dax_region *dax_region = dev_dax->region;
1221 start = dax_region->res.start;
1251 struct dax_region *dax_region = dev_dax->region;
1257 if (a == &dev_attr_mapping.attr && is_static(dax_region))
1260 a == &dev_attr_size.attr) && is_static(dax_region))
1304 struct dax_region *dax_region = data->dax_region;
1305 struct device *parent = dax_region->dev;
1316 dev_dax->region = dax_region;
1317 if (is_static(dax_region)) {
1339 dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
1341 rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, data->size);
1346 dev_WARN_ONCE(parent, !is_static(dax_region),
1347 "custom dev_pagemap requires a static dax_region\n");
1371 dev_dax->target_node = dax_region->target_node;
1372 dev_dax->align = dax_region->align;
1391 rc = devm_add_action_or_reset(dax_region->dev, unregister_dev_dax, dev);