mirror of https://gitee.com/openkylin/linux.git
device-dax: Kill dax_region ida
Commit bbb3be170a
"device-dax: fix sysfs duplicate warnings" arranged
for passing a dax instance-id to devm_create_dax_dev(), rather than
generating one internally. Remove the dax_region ida and related code.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
bfeffd1552
commit
21b9e97950
|
@ -28,7 +28,6 @@
|
||||||
*/
|
*/
|
||||||
struct dax_region {
|
struct dax_region {
|
||||||
int id;
|
int id;
|
||||||
struct ida ida;
|
|
||||||
void *base;
|
void *base;
|
||||||
struct kref kref;
|
struct kref kref;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -42,7 +41,6 @@ struct dax_region {
|
||||||
* @region - parent region
|
* @region - parent region
|
||||||
* @dax_dev - core dax functionality
|
* @dax_dev - core dax functionality
|
||||||
* @dev - device core
|
* @dev - device core
|
||||||
* @id - child id in the region
|
|
||||||
* @num_resources - number of physical address extents in this device
|
* @num_resources - number of physical address extents in this device
|
||||||
* @res - array of physical address ranges
|
* @res - array of physical address ranges
|
||||||
*/
|
*/
|
||||||
|
@ -50,7 +48,6 @@ struct dev_dax {
|
||||||
struct dax_region *region;
|
struct dax_region *region;
|
||||||
struct dax_device *dax_dev;
|
struct dax_device *dax_dev;
|
||||||
struct device dev;
|
struct device dev;
|
||||||
int id;
|
|
||||||
int num_resources;
|
int num_resources;
|
||||||
struct resource res[0];
|
struct resource res[0];
|
||||||
};
|
};
|
||||||
|
|
|
@ -128,7 +128,6 @@ struct dax_region *alloc_dax_region(struct device *parent, int region_id,
|
||||||
dax_region->pfn_flags = pfn_flags;
|
dax_region->pfn_flags = pfn_flags;
|
||||||
kref_init(&dax_region->kref);
|
kref_init(&dax_region->kref);
|
||||||
dax_region->id = region_id;
|
dax_region->id = region_id;
|
||||||
ida_init(&dax_region->ida);
|
|
||||||
dax_region->align = align;
|
dax_region->align = align;
|
||||||
dax_region->dev = parent;
|
dax_region->dev = parent;
|
||||||
dax_region->base = addr;
|
dax_region->base = addr;
|
||||||
|
@ -582,8 +581,6 @@ static void dev_dax_release(struct device *dev)
|
||||||
struct dax_region *dax_region = dev_dax->region;
|
struct dax_region *dax_region = dev_dax->region;
|
||||||
struct dax_device *dax_dev = dev_dax->dax_dev;
|
struct dax_device *dax_dev = dev_dax->dax_dev;
|
||||||
|
|
||||||
if (dev_dax->id >= 0)
|
|
||||||
ida_simple_remove(&dax_region->ida, dev_dax->id);
|
|
||||||
dax_region_put(dax_region);
|
dax_region_put(dax_region);
|
||||||
put_dax(dax_dev);
|
put_dax(dax_dev);
|
||||||
kfree(dev_dax);
|
kfree(dev_dax);
|
||||||
|
@ -642,19 +639,7 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i < count)
|
if (i < count)
|
||||||
goto err_id;
|
goto err;
|
||||||
|
|
||||||
if (id < 0) {
|
|
||||||
id = ida_simple_get(&dax_region->ida, 0, 0, GFP_KERNEL);
|
|
||||||
dev_dax->id = id;
|
|
||||||
if (id < 0) {
|
|
||||||
rc = id;
|
|
||||||
goto err_id;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* region provider owns @id lifetime */
|
|
||||||
dev_dax->id = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No 'host' or dax_operations since there is no access to this
|
* No 'host' or dax_operations since there is no access to this
|
||||||
|
@ -663,7 +648,7 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
|
||||||
dax_dev = alloc_dax(dev_dax, NULL, NULL);
|
dax_dev = alloc_dax(dev_dax, NULL, NULL);
|
||||||
if (!dax_dev) {
|
if (!dax_dev) {
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto err_dax;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* from here on we're committed to teardown via dax_dev_release() */
|
/* from here on we're committed to teardown via dax_dev_release() */
|
||||||
|
@ -700,10 +685,7 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
|
||||||
|
|
||||||
return dev_dax;
|
return dev_dax;
|
||||||
|
|
||||||
err_dax:
|
err:
|
||||||
if (dev_dax->id >= 0)
|
|
||||||
ida_simple_remove(&dax_region->ida, dev_dax->id);
|
|
||||||
err_id:
|
|
||||||
kfree(dev_dax);
|
kfree(dev_dax);
|
||||||
|
|
||||||
return ERR_PTR(rc);
|
return ERR_PTR(rc);
|
||||||
|
|
Loading…
Reference in New Issue