Lines Matching defs:dax_region

179 static bool is_static(struct dax_region *dax_region)
181 return (dax_region->res.flags & IORESOURCE_DAX_STATIC) != 0;
207 struct dax_region *dax_region = dev_dax->region;
222 if (rc || is_static(dax_region))
229 if (dax_region->seed == dev)
230 dax_region->seed = NULL;
270 struct dax_region *dax_region = dev_get_drvdata(dev);
272 return sysfs_emit(buf, "%d\n", dax_region->id);
279 struct dax_region *dax_region = dev_get_drvdata(dev);
282 (unsigned long long)resource_size(&dax_region->res));
290 struct dax_region *dax_region = dev_get_drvdata(dev);
292 return sysfs_emit(buf, "%u\n", dax_region->align);
297 #define for_each_dax_region_resource(dax_region, res) \
298 for (res = (dax_region)->res.child; res; res = res->sibling)
300 static unsigned long long dax_region_avail_size(struct dax_region *dax_region)
302 resource_size_t size = resource_size(&dax_region->res);
307 for_each_dax_region_resource(dax_region, res)
315 struct dax_region *dax_region = dev_get_drvdata(dev);
322 size = dax_region_avail_size(dax_region);
332 struct dax_region *dax_region = dev_get_drvdata(dev);
336 if (is_static(dax_region))
342 seed = dax_region->seed;
353 struct dax_region *dax_region = dev_get_drvdata(dev);
357 if (is_static(dax_region))
363 youngest = dax_region->youngest;
375 struct dax_region *dax_region = dev_get_drvdata(dev);
380 if (is_static(dax_region))
392 avail = dax_region_avail_size(dax_region);
397 .dax_region = dax_region,
414 if (!dax_region->seed)
415 dax_region->seed = &dev_dax->dev;
416 dax_region->youngest = &dev_dax->dev;
448 struct dax_region *dax_region = dev_dax->region;
455 __release_region(&dax_region->res, range->start, range_len(range));
484 struct dax_region *dax_region;
486 dax_region = container_of(kref, struct dax_region, kref);
487 kfree(dax_region);
490 static void dax_region_put(struct dax_region *dax_region)
492 kref_put(&dax_region->kref, dax_region_free);
498 struct dax_region *dax_region;
505 dax_region = dev_dax->region;
506 ida_free(&dax_region->ida, dev_dax->id);
507 dax_region_put(dax_region);
526 struct dax_region *dax_region = dev_dax->region;
529 id = ida_alloc(&dax_region->ida, GFP_KERNEL);
532 kref_get(&dax_region->kref);
541 struct dax_region *dax_region = dev_get_drvdata(dev);
547 if (is_static(dax_region))
550 victim = device_find_child_by_name(dax_region->dev, buf);
565 * dax_region is registered.
570 if (dax_region->seed == victim)
571 dax_region->seed = NULL;
572 if (dax_region->youngest == victim)
573 dax_region->youngest = NULL;
594 struct dax_region *dax_region = dev_get_drvdata(dev);
596 if (is_static(dax_region))
617 .name = "dax_region",
629 struct dax_region *dax_region = region;
631 sysfs_remove_groups(&dax_region->dev->kobj,
633 dax_region_put(dax_region);
636 struct dax_region *alloc_dax_region(struct device *parent, int region_id,
640 struct dax_region *dax_region;
656 dax_region = kzalloc(sizeof(*dax_region), GFP_KERNEL);
657 if (!dax_region)
660 dev_set_drvdata(parent, dax_region);
661 kref_init(&dax_region->kref);
662 dax_region->id = region_id;
663 dax_region->align = align;
664 dax_region->dev = parent;
665 dax_region->target_node = target_node;
666 ida_init(&dax_region->ida);
667 dax_region->res = (struct resource) {
674 kfree(dax_region);
678 if (devm_add_action_or_reset(parent, dax_region_unregister, dax_region))
680 return dax_region;
802 struct dax_region *dax_region = dev_dax->region;
809 if (dev_WARN_ONCE(&dev_dax->dev, !dax_region->dev->driver,
835 rc = devm_add_action_or_reset(dax_region->dev, unregister_dax_mapping,
845 struct dax_region *dax_region = dev_dax->region;
846 struct resource *res = &dax_region->res;
961 struct dax_region *dax_region = dev_dax->region;
973 devm_release_action(dax_region->dev,
982 for_each_dax_region_resource(dax_region, res)
1024 static ssize_t dev_dax_resize(struct dax_region *dax_region,
1027 resource_size_t avail = dax_region_avail_size(dax_region), to_alloc;
1029 struct resource *region_res = &dax_region->res;
1057 return alloc_dev_dax_range(dev_dax, dax_region->res.start, to_alloc);
1064 if (res == first && res->start > dax_region->res.start) {
1065 alloc = min(res->start - dax_region->res.start, to_alloc);
1066 rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, alloc);
1103 struct dax_region *dax_region = dev_dax->region;
1117 if (!dax_region->dev->driver) {
1125 rc = dev_dax_resize(dax_region, dev_dax, val);
1172 struct dax_region *dax_region = dev_dax->region;
1184 if (!dax_region->dev->driver) {
1234 struct dax_region *dax_region = dev_dax->region;
1248 if (!dax_region->dev->driver) {
1277 struct dax_region *dax_region = dev_dax->region;
1279 return dax_region->target_node;
1295 struct dax_region *dax_region = dev_dax->region;
1299 start = dax_region->res.start;
1371 struct dax_region *dax_region = dev_dax->region;
1377 if (a == &dev_attr_mapping.attr && is_static(dax_region))
1380 a == &dev_attr_size.attr) && is_static(dax_region))
1425 struct dax_region *dax_region = data->dax_region;
1426 struct device *parent = dax_region->dev;
1437 dev_dax->region = dax_region;
1438 if (is_static(dax_region)) {
1460 dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
1462 rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, data->size);
1467 dev_WARN_ONCE(parent, !is_static(dax_region),
1468 "custom dev_pagemap requires a static dax_region\n");
1495 dev_dax->target_node = dax_region->target_node;
1496 dev_dax->align = dax_region->align;
1514 rc = devm_add_action_or_reset(dax_region->dev, unregister_dev_dax, dev);