cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bus.c (36256B)


      1// SPDX-License-Identifier: GPL-2.0
      2/* Copyright(c) 2017-2018 Intel Corporation. All rights reserved. */
      3#include <linux/memremap.h>
      4#include <linux/device.h>
      5#include <linux/mutex.h>
      6#include <linux/list.h>
      7#include <linux/slab.h>
      8#include <linux/dax.h>
      9#include <linux/io.h>
     10#include "dax-private.h"
     11#include "bus.h"
     12
     13static DEFINE_MUTEX(dax_bus_lock);
     14
     15#define DAX_NAME_LEN 30
     16struct dax_id {
     17	struct list_head list;
     18	char dev_name[DAX_NAME_LEN];
     19};
     20
     21static int dax_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
     22{
     23	/*
     24	 * We only ever expect to handle device-dax instances, i.e. the
     25	 * @type argument to MODULE_ALIAS_DAX_DEVICE() is always zero
     26	 */
     27	return add_uevent_var(env, "MODALIAS=" DAX_DEVICE_MODALIAS_FMT, 0);
     28}
     29
     30static struct dax_device_driver *to_dax_drv(struct device_driver *drv)
     31{
     32	return container_of(drv, struct dax_device_driver, drv);
     33}
     34
     35static struct dax_id *__dax_match_id(struct dax_device_driver *dax_drv,
     36		const char *dev_name)
     37{
     38	struct dax_id *dax_id;
     39
     40	lockdep_assert_held(&dax_bus_lock);
     41
     42	list_for_each_entry(dax_id, &dax_drv->ids, list)
     43		if (sysfs_streq(dax_id->dev_name, dev_name))
     44			return dax_id;
     45	return NULL;
     46}
     47
     48static int dax_match_id(struct dax_device_driver *dax_drv, struct device *dev)
     49{
     50	int match;
     51
     52	mutex_lock(&dax_bus_lock);
     53	match = !!__dax_match_id(dax_drv, dev_name(dev));
     54	mutex_unlock(&dax_bus_lock);
     55
     56	return match;
     57}
     58
     59enum id_action {
     60	ID_REMOVE,
     61	ID_ADD,
     62};
     63
     64static ssize_t do_id_store(struct device_driver *drv, const char *buf,
     65		size_t count, enum id_action action)
     66{
     67	struct dax_device_driver *dax_drv = to_dax_drv(drv);
     68	unsigned int region_id, id;
     69	char devname[DAX_NAME_LEN];
     70	struct dax_id *dax_id;
     71	ssize_t rc = count;
     72	int fields;
     73
     74	fields = sscanf(buf, "dax%d.%d", &region_id, &id);
     75	if (fields != 2)
     76		return -EINVAL;
     77	sprintf(devname, "dax%d.%d", region_id, id);
     78	if (!sysfs_streq(buf, devname))
     79		return -EINVAL;
     80
     81	mutex_lock(&dax_bus_lock);
     82	dax_id = __dax_match_id(dax_drv, buf);
     83	if (!dax_id) {
     84		if (action == ID_ADD) {
     85			dax_id = kzalloc(sizeof(*dax_id), GFP_KERNEL);
     86			if (dax_id) {
     87				strncpy(dax_id->dev_name, buf, DAX_NAME_LEN);
     88				list_add(&dax_id->list, &dax_drv->ids);
     89			} else
     90				rc = -ENOMEM;
     91		}
     92	} else if (action == ID_REMOVE) {
     93		list_del(&dax_id->list);
     94		kfree(dax_id);
     95	}
     96	mutex_unlock(&dax_bus_lock);
     97
     98	if (rc < 0)
     99		return rc;
    100	if (action == ID_ADD)
    101		rc = driver_attach(drv);
    102	if (rc)
    103		return rc;
    104	return count;
    105}
    106
    107static ssize_t new_id_store(struct device_driver *drv, const char *buf,
    108		size_t count)
    109{
    110	return do_id_store(drv, buf, count, ID_ADD);
    111}
    112static DRIVER_ATTR_WO(new_id);
    113
    114static ssize_t remove_id_store(struct device_driver *drv, const char *buf,
    115		size_t count)
    116{
    117	return do_id_store(drv, buf, count, ID_REMOVE);
    118}
    119static DRIVER_ATTR_WO(remove_id);
    120
    121static struct attribute *dax_drv_attrs[] = {
    122	&driver_attr_new_id.attr,
    123	&driver_attr_remove_id.attr,
    124	NULL,
    125};
    126ATTRIBUTE_GROUPS(dax_drv);
    127
    128static int dax_bus_match(struct device *dev, struct device_driver *drv);
    129
    130/*
    131 * Static dax regions are regions created by an external subsystem
    132 * nvdimm where a single range is assigned. Its boundaries are by the external
    133 * subsystem and are usually limited to one physical memory range. For example,
    134 * for PMEM it is usually defined by NVDIMM Namespace boundaries (i.e. a
    135 * single contiguous range)
    136 *
    137 * On dynamic dax regions, the assigned region can be partitioned by dax core
    138 * into multiple subdivisions. A subdivision is represented into one
    139 * /dev/daxN.M device composed by one or more potentially discontiguous ranges.
    140 *
    141 * When allocating a dax region, drivers must set whether it's static
    142 * (IORESOURCE_DAX_STATIC).  On static dax devices, the @pgmap is pre-assigned
    143 * to dax core when calling devm_create_dev_dax(), whereas in dynamic dax
    144 * devices it is NULL but afterwards allocated by dax core on device ->probe().
    145 * Care is needed to make sure that dynamic dax devices are torn down with a
    146 * cleared @pgmap field (see kill_dev_dax()).
    147 */
    148static bool is_static(struct dax_region *dax_region)
    149{
    150	return (dax_region->res.flags & IORESOURCE_DAX_STATIC) != 0;
    151}
    152
    153bool static_dev_dax(struct dev_dax *dev_dax)
    154{
    155	return is_static(dev_dax->region);
    156}
    157EXPORT_SYMBOL_GPL(static_dev_dax);
    158
    159static u64 dev_dax_size(struct dev_dax *dev_dax)
    160{
    161	u64 size = 0;
    162	int i;
    163
    164	device_lock_assert(&dev_dax->dev);
    165
    166	for (i = 0; i < dev_dax->nr_range; i++)
    167		size += range_len(&dev_dax->ranges[i].range);
    168
    169	return size;
    170}
    171
    172static int dax_bus_probe(struct device *dev)
    173{
    174	struct dax_device_driver *dax_drv = to_dax_drv(dev->driver);
    175	struct dev_dax *dev_dax = to_dev_dax(dev);
    176	struct dax_region *dax_region = dev_dax->region;
    177	int rc;
    178
    179	if (dev_dax_size(dev_dax) == 0 || dev_dax->id < 0)
    180		return -ENXIO;
    181
    182	rc = dax_drv->probe(dev_dax);
    183
    184	if (rc || is_static(dax_region))
    185		return rc;
    186
    187	/*
    188	 * Track new seed creation only after successful probe of the
    189	 * previous seed.
    190	 */
    191	if (dax_region->seed == dev)
    192		dax_region->seed = NULL;
    193
    194	return 0;
    195}
    196
    197static void dax_bus_remove(struct device *dev)
    198{
    199	struct dax_device_driver *dax_drv = to_dax_drv(dev->driver);
    200	struct dev_dax *dev_dax = to_dev_dax(dev);
    201
    202	if (dax_drv->remove)
    203		dax_drv->remove(dev_dax);
    204}
    205
    206static struct bus_type dax_bus_type = {
    207	.name = "dax",
    208	.uevent = dax_bus_uevent,
    209	.match = dax_bus_match,
    210	.probe = dax_bus_probe,
    211	.remove = dax_bus_remove,
    212	.drv_groups = dax_drv_groups,
    213};
    214
    215static int dax_bus_match(struct device *dev, struct device_driver *drv)
    216{
    217	struct dax_device_driver *dax_drv = to_dax_drv(drv);
    218
    219	/*
    220	 * All but the 'device-dax' driver, which has 'match_always'
    221	 * set, requires an exact id match.
    222	 */
    223	if (dax_drv->match_always)
    224		return 1;
    225
    226	return dax_match_id(dax_drv, dev);
    227}
    228
    229/*
    230 * Rely on the fact that drvdata is set before the attributes are
    231 * registered, and that the attributes are unregistered before drvdata
    232 * is cleared to assume that drvdata is always valid.
    233 */
    234static ssize_t id_show(struct device *dev,
    235		struct device_attribute *attr, char *buf)
    236{
    237	struct dax_region *dax_region = dev_get_drvdata(dev);
    238
    239	return sprintf(buf, "%d\n", dax_region->id);
    240}
    241static DEVICE_ATTR_RO(id);
    242
    243static ssize_t region_size_show(struct device *dev,
    244		struct device_attribute *attr, char *buf)
    245{
    246	struct dax_region *dax_region = dev_get_drvdata(dev);
    247
    248	return sprintf(buf, "%llu\n", (unsigned long long)
    249			resource_size(&dax_region->res));
    250}
    251static struct device_attribute dev_attr_region_size = __ATTR(size, 0444,
    252		region_size_show, NULL);
    253
    254static ssize_t region_align_show(struct device *dev,
    255		struct device_attribute *attr, char *buf)
    256{
    257	struct dax_region *dax_region = dev_get_drvdata(dev);
    258
    259	return sprintf(buf, "%u\n", dax_region->align);
    260}
    261static struct device_attribute dev_attr_region_align =
    262		__ATTR(align, 0400, region_align_show, NULL);
    263
    264#define for_each_dax_region_resource(dax_region, res) \
    265	for (res = (dax_region)->res.child; res; res = res->sibling)
    266
    267static unsigned long long dax_region_avail_size(struct dax_region *dax_region)
    268{
    269	resource_size_t size = resource_size(&dax_region->res);
    270	struct resource *res;
    271
    272	device_lock_assert(dax_region->dev);
    273
    274	for_each_dax_region_resource(dax_region, res)
    275		size -= resource_size(res);
    276	return size;
    277}
    278
    279static ssize_t available_size_show(struct device *dev,
    280		struct device_attribute *attr, char *buf)
    281{
    282	struct dax_region *dax_region = dev_get_drvdata(dev);
    283	unsigned long long size;
    284
    285	device_lock(dev);
    286	size = dax_region_avail_size(dax_region);
    287	device_unlock(dev);
    288
    289	return sprintf(buf, "%llu\n", size);
    290}
    291static DEVICE_ATTR_RO(available_size);
    292
    293static ssize_t seed_show(struct device *dev,
    294		struct device_attribute *attr, char *buf)
    295{
    296	struct dax_region *dax_region = dev_get_drvdata(dev);
    297	struct device *seed;
    298	ssize_t rc;
    299
    300	if (is_static(dax_region))
    301		return -EINVAL;
    302
    303	device_lock(dev);
    304	seed = dax_region->seed;
    305	rc = sprintf(buf, "%s\n", seed ? dev_name(seed) : "");
    306	device_unlock(dev);
    307
    308	return rc;
    309}
    310static DEVICE_ATTR_RO(seed);
    311
    312static ssize_t create_show(struct device *dev,
    313		struct device_attribute *attr, char *buf)
    314{
    315	struct dax_region *dax_region = dev_get_drvdata(dev);
    316	struct device *youngest;
    317	ssize_t rc;
    318
    319	if (is_static(dax_region))
    320		return -EINVAL;
    321
    322	device_lock(dev);
    323	youngest = dax_region->youngest;
    324	rc = sprintf(buf, "%s\n", youngest ? dev_name(youngest) : "");
    325	device_unlock(dev);
    326
    327	return rc;
    328}
    329
    330static ssize_t create_store(struct device *dev, struct device_attribute *attr,
    331		const char *buf, size_t len)
    332{
    333	struct dax_region *dax_region = dev_get_drvdata(dev);
    334	unsigned long long avail;
    335	ssize_t rc;
    336	int val;
    337
    338	if (is_static(dax_region))
    339		return -EINVAL;
    340
    341	rc = kstrtoint(buf, 0, &val);
    342	if (rc)
    343		return rc;
    344	if (val != 1)
    345		return -EINVAL;
    346
    347	device_lock(dev);
    348	avail = dax_region_avail_size(dax_region);
    349	if (avail == 0)
    350		rc = -ENOSPC;
    351	else {
    352		struct dev_dax_data data = {
    353			.dax_region = dax_region,
    354			.size = 0,
    355			.id = -1,
    356		};
    357		struct dev_dax *dev_dax = devm_create_dev_dax(&data);
    358
    359		if (IS_ERR(dev_dax))
    360			rc = PTR_ERR(dev_dax);
    361		else {
    362			/*
    363			 * In support of crafting multiple new devices
    364			 * simultaneously multiple seeds can be created,
    365			 * but only the first one that has not been
    366			 * successfully bound is tracked as the region
    367			 * seed.
    368			 */
    369			if (!dax_region->seed)
    370				dax_region->seed = &dev_dax->dev;
    371			dax_region->youngest = &dev_dax->dev;
    372			rc = len;
    373		}
    374	}
    375	device_unlock(dev);
    376
    377	return rc;
    378}
    379static DEVICE_ATTR_RW(create);
    380
    381void kill_dev_dax(struct dev_dax *dev_dax)
    382{
    383	struct dax_device *dax_dev = dev_dax->dax_dev;
    384	struct inode *inode = dax_inode(dax_dev);
    385
    386	kill_dax(dax_dev);
    387	unmap_mapping_range(inode->i_mapping, 0, 0, 1);
    388
    389	/*
    390	 * Dynamic dax region have the pgmap allocated via dev_kzalloc()
    391	 * and thus freed by devm. Clear the pgmap to not have stale pgmap
    392	 * ranges on probe() from previous reconfigurations of region devices.
    393	 */
    394	if (!static_dev_dax(dev_dax))
    395		dev_dax->pgmap = NULL;
    396}
    397EXPORT_SYMBOL_GPL(kill_dev_dax);
    398
    399static void trim_dev_dax_range(struct dev_dax *dev_dax)
    400{
    401	int i = dev_dax->nr_range - 1;
    402	struct range *range = &dev_dax->ranges[i].range;
    403	struct dax_region *dax_region = dev_dax->region;
    404
    405	device_lock_assert(dax_region->dev);
    406	dev_dbg(&dev_dax->dev, "delete range[%d]: %#llx:%#llx\n", i,
    407		(unsigned long long)range->start,
    408		(unsigned long long)range->end);
    409
    410	__release_region(&dax_region->res, range->start, range_len(range));
    411	if (--dev_dax->nr_range == 0) {
    412		kfree(dev_dax->ranges);
    413		dev_dax->ranges = NULL;
    414	}
    415}
    416
    417static void free_dev_dax_ranges(struct dev_dax *dev_dax)
    418{
    419	while (dev_dax->nr_range)
    420		trim_dev_dax_range(dev_dax);
    421}
    422
    423static void unregister_dev_dax(void *dev)
    424{
    425	struct dev_dax *dev_dax = to_dev_dax(dev);
    426
    427	dev_dbg(dev, "%s\n", __func__);
    428
    429	kill_dev_dax(dev_dax);
    430	free_dev_dax_ranges(dev_dax);
    431	device_del(dev);
    432	put_device(dev);
    433}
    434
    435/* a return value >= 0 indicates this invocation invalidated the id */
    436static int __free_dev_dax_id(struct dev_dax *dev_dax)
    437{
    438	struct dax_region *dax_region = dev_dax->region;
    439	struct device *dev = &dev_dax->dev;
    440	int rc = dev_dax->id;
    441
    442	device_lock_assert(dev);
    443
    444	if (is_static(dax_region) || dev_dax->id < 0)
    445		return -1;
    446	ida_free(&dax_region->ida, dev_dax->id);
    447	dev_dax->id = -1;
    448	return rc;
    449}
    450
    451static int free_dev_dax_id(struct dev_dax *dev_dax)
    452{
    453	struct device *dev = &dev_dax->dev;
    454	int rc;
    455
    456	device_lock(dev);
    457	rc = __free_dev_dax_id(dev_dax);
    458	device_unlock(dev);
    459	return rc;
    460}
    461
    462static ssize_t delete_store(struct device *dev, struct device_attribute *attr,
    463		const char *buf, size_t len)
    464{
    465	struct dax_region *dax_region = dev_get_drvdata(dev);
    466	struct dev_dax *dev_dax;
    467	struct device *victim;
    468	bool do_del = false;
    469	int rc;
    470
    471	if (is_static(dax_region))
    472		return -EINVAL;
    473
    474	victim = device_find_child_by_name(dax_region->dev, buf);
    475	if (!victim)
    476		return -ENXIO;
    477
    478	device_lock(dev);
    479	device_lock(victim);
    480	dev_dax = to_dev_dax(victim);
    481	if (victim->driver || dev_dax_size(dev_dax))
    482		rc = -EBUSY;
    483	else {
    484		/*
    485		 * Invalidate the device so it does not become active
    486		 * again, but always preserve device-id-0 so that
    487		 * /sys/bus/dax/ is guaranteed to be populated while any
    488		 * dax_region is registered.
    489		 */
    490		if (dev_dax->id > 0) {
    491			do_del = __free_dev_dax_id(dev_dax) >= 0;
    492			rc = len;
    493			if (dax_region->seed == victim)
    494				dax_region->seed = NULL;
    495			if (dax_region->youngest == victim)
    496				dax_region->youngest = NULL;
    497		} else
    498			rc = -EBUSY;
    499	}
    500	device_unlock(victim);
    501
    502	/* won the race to invalidate the device, clean it up */
    503	if (do_del)
    504		devm_release_action(dev, unregister_dev_dax, victim);
    505	device_unlock(dev);
    506	put_device(victim);
    507
    508	return rc;
    509}
    510static DEVICE_ATTR_WO(delete);
    511
    512static umode_t dax_region_visible(struct kobject *kobj, struct attribute *a,
    513		int n)
    514{
    515	struct device *dev = container_of(kobj, struct device, kobj);
    516	struct dax_region *dax_region = dev_get_drvdata(dev);
    517
    518	if (is_static(dax_region))
    519		if (a == &dev_attr_available_size.attr
    520				|| a == &dev_attr_create.attr
    521				|| a == &dev_attr_seed.attr
    522				|| a == &dev_attr_delete.attr)
    523			return 0;
    524	return a->mode;
    525}
    526
    527static struct attribute *dax_region_attributes[] = {
    528	&dev_attr_available_size.attr,
    529	&dev_attr_region_size.attr,
    530	&dev_attr_region_align.attr,
    531	&dev_attr_create.attr,
    532	&dev_attr_seed.attr,
    533	&dev_attr_delete.attr,
    534	&dev_attr_id.attr,
    535	NULL,
    536};
    537
    538static const struct attribute_group dax_region_attribute_group = {
    539	.name = "dax_region",
    540	.attrs = dax_region_attributes,
    541	.is_visible = dax_region_visible,
    542};
    543
    544static const struct attribute_group *dax_region_attribute_groups[] = {
    545	&dax_region_attribute_group,
    546	NULL,
    547};
    548
    549static void dax_region_free(struct kref *kref)
    550{
    551	struct dax_region *dax_region;
    552
    553	dax_region = container_of(kref, struct dax_region, kref);
    554	kfree(dax_region);
    555}
    556
    557void dax_region_put(struct dax_region *dax_region)
    558{
    559	kref_put(&dax_region->kref, dax_region_free);
    560}
    561EXPORT_SYMBOL_GPL(dax_region_put);
    562
    563static void dax_region_unregister(void *region)
    564{
    565	struct dax_region *dax_region = region;
    566
    567	sysfs_remove_groups(&dax_region->dev->kobj,
    568			dax_region_attribute_groups);
    569	dax_region_put(dax_region);
    570}
    571
    572struct dax_region *alloc_dax_region(struct device *parent, int region_id,
    573		struct range *range, int target_node, unsigned int align,
    574		unsigned long flags)
    575{
    576	struct dax_region *dax_region;
    577
    578	/*
    579	 * The DAX core assumes that it can store its private data in
    580	 * parent->driver_data. This WARN is a reminder / safeguard for
    581	 * developers of device-dax drivers.
    582	 */
    583	if (dev_get_drvdata(parent)) {
    584		dev_WARN(parent, "dax core failed to setup private data\n");
    585		return NULL;
    586	}
    587
    588	if (!IS_ALIGNED(range->start, align)
    589			|| !IS_ALIGNED(range_len(range), align))
    590		return NULL;
    591
    592	dax_region = kzalloc(sizeof(*dax_region), GFP_KERNEL);
    593	if (!dax_region)
    594		return NULL;
    595
    596	dev_set_drvdata(parent, dax_region);
    597	kref_init(&dax_region->kref);
    598	dax_region->id = region_id;
    599	dax_region->align = align;
    600	dax_region->dev = parent;
    601	dax_region->target_node = target_node;
    602	ida_init(&dax_region->ida);
    603	dax_region->res = (struct resource) {
    604		.start = range->start,
    605		.end = range->end,
    606		.flags = IORESOURCE_MEM | flags,
    607	};
    608
    609	if (sysfs_create_groups(&parent->kobj, dax_region_attribute_groups)) {
    610		kfree(dax_region);
    611		return NULL;
    612	}
    613
    614	kref_get(&dax_region->kref);
    615	if (devm_add_action_or_reset(parent, dax_region_unregister, dax_region))
    616		return NULL;
    617	return dax_region;
    618}
    619EXPORT_SYMBOL_GPL(alloc_dax_region);
    620
    621static void dax_mapping_release(struct device *dev)
    622{
    623	struct dax_mapping *mapping = to_dax_mapping(dev);
    624	struct dev_dax *dev_dax = to_dev_dax(dev->parent);
    625
    626	ida_free(&dev_dax->ida, mapping->id);
    627	kfree(mapping);
    628}
    629
    630static void unregister_dax_mapping(void *data)
    631{
    632	struct device *dev = data;
    633	struct dax_mapping *mapping = to_dax_mapping(dev);
    634	struct dev_dax *dev_dax = to_dev_dax(dev->parent);
    635	struct dax_region *dax_region = dev_dax->region;
    636
    637	dev_dbg(dev, "%s\n", __func__);
    638
    639	device_lock_assert(dax_region->dev);
    640
    641	dev_dax->ranges[mapping->range_id].mapping = NULL;
    642	mapping->range_id = -1;
    643
    644	device_del(dev);
    645	put_device(dev);
    646}
    647
    648static struct dev_dax_range *get_dax_range(struct device *dev)
    649{
    650	struct dax_mapping *mapping = to_dax_mapping(dev);
    651	struct dev_dax *dev_dax = to_dev_dax(dev->parent);
    652	struct dax_region *dax_region = dev_dax->region;
    653
    654	device_lock(dax_region->dev);
    655	if (mapping->range_id < 0) {
    656		device_unlock(dax_region->dev);
    657		return NULL;
    658	}
    659
    660	return &dev_dax->ranges[mapping->range_id];
    661}
    662
    663static void put_dax_range(struct dev_dax_range *dax_range)
    664{
    665	struct dax_mapping *mapping = dax_range->mapping;
    666	struct dev_dax *dev_dax = to_dev_dax(mapping->dev.parent);
    667	struct dax_region *dax_region = dev_dax->region;
    668
    669	device_unlock(dax_region->dev);
    670}
    671
    672static ssize_t start_show(struct device *dev,
    673		struct device_attribute *attr, char *buf)
    674{
    675	struct dev_dax_range *dax_range;
    676	ssize_t rc;
    677
    678	dax_range = get_dax_range(dev);
    679	if (!dax_range)
    680		return -ENXIO;
    681	rc = sprintf(buf, "%#llx\n", dax_range->range.start);
    682	put_dax_range(dax_range);
    683
    684	return rc;
    685}
    686static DEVICE_ATTR(start, 0400, start_show, NULL);
    687
    688static ssize_t end_show(struct device *dev,
    689		struct device_attribute *attr, char *buf)
    690{
    691	struct dev_dax_range *dax_range;
    692	ssize_t rc;
    693
    694	dax_range = get_dax_range(dev);
    695	if (!dax_range)
    696		return -ENXIO;
    697	rc = sprintf(buf, "%#llx\n", dax_range->range.end);
    698	put_dax_range(dax_range);
    699
    700	return rc;
    701}
    702static DEVICE_ATTR(end, 0400, end_show, NULL);
    703
    704static ssize_t pgoff_show(struct device *dev,
    705		struct device_attribute *attr, char *buf)
    706{
    707	struct dev_dax_range *dax_range;
    708	ssize_t rc;
    709
    710	dax_range = get_dax_range(dev);
    711	if (!dax_range)
    712		return -ENXIO;
    713	rc = sprintf(buf, "%#lx\n", dax_range->pgoff);
    714	put_dax_range(dax_range);
    715
    716	return rc;
    717}
    718static DEVICE_ATTR(page_offset, 0400, pgoff_show, NULL);
    719
    720static struct attribute *dax_mapping_attributes[] = {
    721	&dev_attr_start.attr,
    722	&dev_attr_end.attr,
    723	&dev_attr_page_offset.attr,
    724	NULL,
    725};
    726
    727static const struct attribute_group dax_mapping_attribute_group = {
    728	.attrs = dax_mapping_attributes,
    729};
    730
    731static const struct attribute_group *dax_mapping_attribute_groups[] = {
    732	&dax_mapping_attribute_group,
    733	NULL,
    734};
    735
    736static struct device_type dax_mapping_type = {
    737	.release = dax_mapping_release,
    738	.groups = dax_mapping_attribute_groups,
    739};
    740
    741static int devm_register_dax_mapping(struct dev_dax *dev_dax, int range_id)
    742{
    743	struct dax_region *dax_region = dev_dax->region;
    744	struct dax_mapping *mapping;
    745	struct device *dev;
    746	int rc;
    747
    748	device_lock_assert(dax_region->dev);
    749
    750	if (dev_WARN_ONCE(&dev_dax->dev, !dax_region->dev->driver,
    751				"region disabled\n"))
    752		return -ENXIO;
    753
    754	mapping = kzalloc(sizeof(*mapping), GFP_KERNEL);
    755	if (!mapping)
    756		return -ENOMEM;
    757	mapping->range_id = range_id;
    758	mapping->id = ida_alloc(&dev_dax->ida, GFP_KERNEL);
    759	if (mapping->id < 0) {
    760		kfree(mapping);
    761		return -ENOMEM;
    762	}
    763	dev_dax->ranges[range_id].mapping = mapping;
    764	dev = &mapping->dev;
    765	device_initialize(dev);
    766	dev->parent = &dev_dax->dev;
    767	dev->type = &dax_mapping_type;
    768	dev_set_name(dev, "mapping%d", mapping->id);
    769	rc = device_add(dev);
    770	if (rc) {
    771		put_device(dev);
    772		return rc;
    773	}
    774
    775	rc = devm_add_action_or_reset(dax_region->dev, unregister_dax_mapping,
    776			dev);
    777	if (rc)
    778		return rc;
    779	return 0;
    780}
    781
    782static int alloc_dev_dax_range(struct dev_dax *dev_dax, u64 start,
    783		resource_size_t size)
    784{
    785	struct dax_region *dax_region = dev_dax->region;
    786	struct resource *res = &dax_region->res;
    787	struct device *dev = &dev_dax->dev;
    788	struct dev_dax_range *ranges;
    789	unsigned long pgoff = 0;
    790	struct resource *alloc;
    791	int i, rc;
    792
    793	device_lock_assert(dax_region->dev);
    794
    795	/* handle the seed alloc special case */
    796	if (!size) {
    797		if (dev_WARN_ONCE(dev, dev_dax->nr_range,
    798					"0-size allocation must be first\n"))
    799			return -EBUSY;
    800		/* nr_range == 0 is elsewhere special cased as 0-size device */
    801		return 0;
    802	}
    803
    804	alloc = __request_region(res, start, size, dev_name(dev), 0);
    805	if (!alloc)
    806		return -ENOMEM;
    807
    808	ranges = krealloc(dev_dax->ranges, sizeof(*ranges)
    809			* (dev_dax->nr_range + 1), GFP_KERNEL);
    810	if (!ranges) {
    811		__release_region(res, alloc->start, resource_size(alloc));
    812		return -ENOMEM;
    813	}
    814
    815	for (i = 0; i < dev_dax->nr_range; i++)
    816		pgoff += PHYS_PFN(range_len(&ranges[i].range));
    817	dev_dax->ranges = ranges;
    818	ranges[dev_dax->nr_range++] = (struct dev_dax_range) {
    819		.pgoff = pgoff,
    820		.range = {
    821			.start = alloc->start,
    822			.end = alloc->end,
    823		},
    824	};
    825
    826	dev_dbg(dev, "alloc range[%d]: %pa:%pa\n", dev_dax->nr_range - 1,
    827			&alloc->start, &alloc->end);
    828	/*
    829	 * A dev_dax instance must be registered before mapping device
    830	 * children can be added. Defer to devm_create_dev_dax() to add
    831	 * the initial mapping device.
    832	 */
    833	if (!device_is_registered(&dev_dax->dev))
    834		return 0;
    835
    836	rc = devm_register_dax_mapping(dev_dax, dev_dax->nr_range - 1);
    837	if (rc)
    838		trim_dev_dax_range(dev_dax);
    839
    840	return rc;
    841}
    842
    843static int adjust_dev_dax_range(struct dev_dax *dev_dax, struct resource *res, resource_size_t size)
    844{
    845	int last_range = dev_dax->nr_range - 1;
    846	struct dev_dax_range *dax_range = &dev_dax->ranges[last_range];
    847	struct dax_region *dax_region = dev_dax->region;
    848	bool is_shrink = resource_size(res) > size;
    849	struct range *range = &dax_range->range;
    850	struct device *dev = &dev_dax->dev;
    851	int rc;
    852
    853	device_lock_assert(dax_region->dev);
    854
    855	if (dev_WARN_ONCE(dev, !size, "deletion is handled by dev_dax_shrink\n"))
    856		return -EINVAL;
    857
    858	rc = adjust_resource(res, range->start, size);
    859	if (rc)
    860		return rc;
    861
    862	*range = (struct range) {
    863		.start = range->start,
    864		.end = range->start + size - 1,
    865	};
    866
    867	dev_dbg(dev, "%s range[%d]: %#llx:%#llx\n", is_shrink ? "shrink" : "extend",
    868			last_range, (unsigned long long) range->start,
    869			(unsigned long long) range->end);
    870
    871	return 0;
    872}
    873
    874static ssize_t size_show(struct device *dev,
    875		struct device_attribute *attr, char *buf)
    876{
    877	struct dev_dax *dev_dax = to_dev_dax(dev);
    878	unsigned long long size;
    879
    880	device_lock(dev);
    881	size = dev_dax_size(dev_dax);
    882	device_unlock(dev);
    883
    884	return sprintf(buf, "%llu\n", size);
    885}
    886
    887static bool alloc_is_aligned(struct dev_dax *dev_dax, resource_size_t size)
    888{
    889	/*
    890	 * The minimum mapping granularity for a device instance is a
    891	 * single subsection, unless the arch says otherwise.
    892	 */
    893	return IS_ALIGNED(size, max_t(unsigned long, dev_dax->align, memremap_compat_align()));
    894}
    895
    896static int dev_dax_shrink(struct dev_dax *dev_dax, resource_size_t size)
    897{
    898	resource_size_t to_shrink = dev_dax_size(dev_dax) - size;
    899	struct dax_region *dax_region = dev_dax->region;
    900	struct device *dev = &dev_dax->dev;
    901	int i;
    902
    903	for (i = dev_dax->nr_range - 1; i >= 0; i--) {
    904		struct range *range = &dev_dax->ranges[i].range;
    905		struct dax_mapping *mapping = dev_dax->ranges[i].mapping;
    906		struct resource *adjust = NULL, *res;
    907		resource_size_t shrink;
    908
    909		shrink = min_t(u64, to_shrink, range_len(range));
    910		if (shrink >= range_len(range)) {
    911			devm_release_action(dax_region->dev,
    912					unregister_dax_mapping, &mapping->dev);
    913			trim_dev_dax_range(dev_dax);
    914			to_shrink -= shrink;
    915			if (!to_shrink)
    916				break;
    917			continue;
    918		}
    919
    920		for_each_dax_region_resource(dax_region, res)
    921			if (strcmp(res->name, dev_name(dev)) == 0
    922					&& res->start == range->start) {
    923				adjust = res;
    924				break;
    925			}
    926
    927		if (dev_WARN_ONCE(dev, !adjust || i != dev_dax->nr_range - 1,
    928					"failed to find matching resource\n"))
    929			return -ENXIO;
    930		return adjust_dev_dax_range(dev_dax, adjust, range_len(range)
    931				- shrink);
    932	}
    933	return 0;
    934}
    935
    936/*
    937 * Only allow adjustments that preserve the relative pgoff of existing
    938 * allocations. I.e. the dev_dax->ranges array is ordered by increasing pgoff.
    939 */
    940static bool adjust_ok(struct dev_dax *dev_dax, struct resource *res)
    941{
    942	struct dev_dax_range *last;
    943	int i;
    944
    945	if (dev_dax->nr_range == 0)
    946		return false;
    947	if (strcmp(res->name, dev_name(&dev_dax->dev)) != 0)
    948		return false;
    949	last = &dev_dax->ranges[dev_dax->nr_range - 1];
    950	if (last->range.start != res->start || last->range.end != res->end)
    951		return false;
    952	for (i = 0; i < dev_dax->nr_range - 1; i++) {
    953		struct dev_dax_range *dax_range = &dev_dax->ranges[i];
    954
    955		if (dax_range->pgoff > last->pgoff)
    956			return false;
    957	}
    958
    959	return true;
    960}
    961
    962static ssize_t dev_dax_resize(struct dax_region *dax_region,
    963		struct dev_dax *dev_dax, resource_size_t size)
    964{
    965	resource_size_t avail = dax_region_avail_size(dax_region), to_alloc;
    966	resource_size_t dev_size = dev_dax_size(dev_dax);
    967	struct resource *region_res = &dax_region->res;
    968	struct device *dev = &dev_dax->dev;
    969	struct resource *res, *first;
    970	resource_size_t alloc = 0;
    971	int rc;
    972
    973	if (dev->driver)
    974		return -EBUSY;
    975	if (size == dev_size)
    976		return 0;
    977	if (size > dev_size && size - dev_size > avail)
    978		return -ENOSPC;
    979	if (size < dev_size)
    980		return dev_dax_shrink(dev_dax, size);
    981
    982	to_alloc = size - dev_size;
    983	if (dev_WARN_ONCE(dev, !alloc_is_aligned(dev_dax, to_alloc),
    984			"resize of %pa misaligned\n", &to_alloc))
    985		return -ENXIO;
    986
    987	/*
    988	 * Expand the device into the unused portion of the region. This
    989	 * may involve adjusting the end of an existing resource, or
    990	 * allocating a new resource.
    991	 */
    992retry:
    993	first = region_res->child;
    994	if (!first)
    995		return alloc_dev_dax_range(dev_dax, dax_region->res.start, to_alloc);
    996
    997	rc = -ENOSPC;
    998	for (res = first; res; res = res->sibling) {
    999		struct resource *next = res->sibling;
   1000
   1001		/* space at the beginning of the region */
   1002		if (res == first && res->start > dax_region->res.start) {
   1003			alloc = min(res->start - dax_region->res.start, to_alloc);
   1004			rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, alloc);
   1005			break;
   1006		}
   1007
   1008		alloc = 0;
   1009		/* space between allocations */
   1010		if (next && next->start > res->end + 1)
   1011			alloc = min(next->start - (res->end + 1), to_alloc);
   1012
   1013		/* space at the end of the region */
   1014		if (!alloc && !next && res->end < region_res->end)
   1015			alloc = min(region_res->end - res->end, to_alloc);
   1016
   1017		if (!alloc)
   1018			continue;
   1019
   1020		if (adjust_ok(dev_dax, res)) {
   1021			rc = adjust_dev_dax_range(dev_dax, res, resource_size(res) + alloc);
   1022			break;
   1023		}
   1024		rc = alloc_dev_dax_range(dev_dax, res->end + 1, alloc);
   1025		break;
   1026	}
   1027	if (rc)
   1028		return rc;
   1029	to_alloc -= alloc;
   1030	if (to_alloc)
   1031		goto retry;
   1032	return 0;
   1033}
   1034
   1035static ssize_t size_store(struct device *dev, struct device_attribute *attr,
   1036		const char *buf, size_t len)
   1037{
   1038	ssize_t rc;
   1039	unsigned long long val;
   1040	struct dev_dax *dev_dax = to_dev_dax(dev);
   1041	struct dax_region *dax_region = dev_dax->region;
   1042
   1043	rc = kstrtoull(buf, 0, &val);
   1044	if (rc)
   1045		return rc;
   1046
   1047	if (!alloc_is_aligned(dev_dax, val)) {
   1048		dev_dbg(dev, "%s: size: %lld misaligned\n", __func__, val);
   1049		return -EINVAL;
   1050	}
   1051
   1052	device_lock(dax_region->dev);
   1053	if (!dax_region->dev->driver) {
   1054		device_unlock(dax_region->dev);
   1055		return -ENXIO;
   1056	}
   1057	device_lock(dev);
   1058	rc = dev_dax_resize(dax_region, dev_dax, val);
   1059	device_unlock(dev);
   1060	device_unlock(dax_region->dev);
   1061
   1062	return rc == 0 ? len : rc;
   1063}
   1064static DEVICE_ATTR_RW(size);
   1065
   1066static ssize_t range_parse(const char *opt, size_t len, struct range *range)
   1067{
   1068	unsigned long long addr = 0;
   1069	char *start, *end, *str;
   1070	ssize_t rc = -EINVAL;
   1071
   1072	str = kstrdup(opt, GFP_KERNEL);
   1073	if (!str)
   1074		return rc;
   1075
   1076	end = str;
   1077	start = strsep(&end, "-");
   1078	if (!start || !end)
   1079		goto err;
   1080
   1081	rc = kstrtoull(start, 16, &addr);
   1082	if (rc)
   1083		goto err;
   1084	range->start = addr;
   1085
   1086	rc = kstrtoull(end, 16, &addr);
   1087	if (rc)
   1088		goto err;
   1089	range->end = addr;
   1090
   1091err:
   1092	kfree(str);
   1093	return rc;
   1094}
   1095
   1096static ssize_t mapping_store(struct device *dev, struct device_attribute *attr,
   1097		const char *buf, size_t len)
   1098{
   1099	struct dev_dax *dev_dax = to_dev_dax(dev);
   1100	struct dax_region *dax_region = dev_dax->region;
   1101	size_t to_alloc;
   1102	struct range r;
   1103	ssize_t rc;
   1104
   1105	rc = range_parse(buf, len, &r);
   1106	if (rc)
   1107		return rc;
   1108
   1109	rc = -ENXIO;
   1110	device_lock(dax_region->dev);
   1111	if (!dax_region->dev->driver) {
   1112		device_unlock(dax_region->dev);
   1113		return rc;
   1114	}
   1115	device_lock(dev);
   1116
   1117	to_alloc = range_len(&r);
   1118	if (alloc_is_aligned(dev_dax, to_alloc))
   1119		rc = alloc_dev_dax_range(dev_dax, r.start, to_alloc);
   1120	device_unlock(dev);
   1121	device_unlock(dax_region->dev);
   1122
   1123	return rc == 0 ? len : rc;
   1124}
   1125static DEVICE_ATTR_WO(mapping);
   1126
   1127static ssize_t align_show(struct device *dev,
   1128		struct device_attribute *attr, char *buf)
   1129{
   1130	struct dev_dax *dev_dax = to_dev_dax(dev);
   1131
   1132	return sprintf(buf, "%d\n", dev_dax->align);
   1133}
   1134
   1135static ssize_t dev_dax_validate_align(struct dev_dax *dev_dax)
   1136{
   1137	struct device *dev = &dev_dax->dev;
   1138	int i;
   1139
   1140	for (i = 0; i < dev_dax->nr_range; i++) {
   1141		size_t len = range_len(&dev_dax->ranges[i].range);
   1142
   1143		if (!alloc_is_aligned(dev_dax, len)) {
   1144			dev_dbg(dev, "%s: align %u invalid for range %d\n",
   1145				__func__, dev_dax->align, i);
   1146			return -EINVAL;
   1147		}
   1148	}
   1149
   1150	return 0;
   1151}
   1152
   1153static ssize_t align_store(struct device *dev, struct device_attribute *attr,
   1154		const char *buf, size_t len)
   1155{
   1156	struct dev_dax *dev_dax = to_dev_dax(dev);
   1157	struct dax_region *dax_region = dev_dax->region;
   1158	unsigned long val, align_save;
   1159	ssize_t rc;
   1160
   1161	rc = kstrtoul(buf, 0, &val);
   1162	if (rc)
   1163		return -ENXIO;
   1164
   1165	if (!dax_align_valid(val))
   1166		return -EINVAL;
   1167
   1168	device_lock(dax_region->dev);
   1169	if (!dax_region->dev->driver) {
   1170		device_unlock(dax_region->dev);
   1171		return -ENXIO;
   1172	}
   1173
   1174	device_lock(dev);
   1175	if (dev->driver) {
   1176		rc = -EBUSY;
   1177		goto out_unlock;
   1178	}
   1179
   1180	align_save = dev_dax->align;
   1181	dev_dax->align = val;
   1182	rc = dev_dax_validate_align(dev_dax);
   1183	if (rc)
   1184		dev_dax->align = align_save;
   1185out_unlock:
   1186	device_unlock(dev);
   1187	device_unlock(dax_region->dev);
   1188	return rc == 0 ? len : rc;
   1189}
   1190static DEVICE_ATTR_RW(align);
   1191
   1192static int dev_dax_target_node(struct dev_dax *dev_dax)
   1193{
   1194	struct dax_region *dax_region = dev_dax->region;
   1195
   1196	return dax_region->target_node;
   1197}
   1198
   1199static ssize_t target_node_show(struct device *dev,
   1200		struct device_attribute *attr, char *buf)
   1201{
   1202	struct dev_dax *dev_dax = to_dev_dax(dev);
   1203
   1204	return sprintf(buf, "%d\n", dev_dax_target_node(dev_dax));
   1205}
   1206static DEVICE_ATTR_RO(target_node);
   1207
   1208static ssize_t resource_show(struct device *dev,
   1209		struct device_attribute *attr, char *buf)
   1210{
   1211	struct dev_dax *dev_dax = to_dev_dax(dev);
   1212	struct dax_region *dax_region = dev_dax->region;
   1213	unsigned long long start;
   1214
   1215	if (dev_dax->nr_range < 1)
   1216		start = dax_region->res.start;
   1217	else
   1218		start = dev_dax->ranges[0].range.start;
   1219
   1220	return sprintf(buf, "%#llx\n", start);
   1221}
   1222static DEVICE_ATTR(resource, 0400, resource_show, NULL);
   1223
   1224static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
   1225		char *buf)
   1226{
   1227	/*
   1228	 * We only ever expect to handle device-dax instances, i.e. the
   1229	 * @type argument to MODULE_ALIAS_DAX_DEVICE() is always zero
   1230	 */
   1231	return sprintf(buf, DAX_DEVICE_MODALIAS_FMT "\n", 0);
   1232}
   1233static DEVICE_ATTR_RO(modalias);
   1234
   1235static ssize_t numa_node_show(struct device *dev,
   1236		struct device_attribute *attr, char *buf)
   1237{
   1238	return sprintf(buf, "%d\n", dev_to_node(dev));
   1239}
   1240static DEVICE_ATTR_RO(numa_node);
   1241
   1242static umode_t dev_dax_visible(struct kobject *kobj, struct attribute *a, int n)
   1243{
   1244	struct device *dev = container_of(kobj, struct device, kobj);
   1245	struct dev_dax *dev_dax = to_dev_dax(dev);
   1246	struct dax_region *dax_region = dev_dax->region;
   1247
   1248	if (a == &dev_attr_target_node.attr && dev_dax_target_node(dev_dax) < 0)
   1249		return 0;
   1250	if (a == &dev_attr_numa_node.attr && !IS_ENABLED(CONFIG_NUMA))
   1251		return 0;
   1252	if (a == &dev_attr_mapping.attr && is_static(dax_region))
   1253		return 0;
   1254	if ((a == &dev_attr_align.attr ||
   1255	     a == &dev_attr_size.attr) && is_static(dax_region))
   1256		return 0444;
   1257	return a->mode;
   1258}
   1259
   1260static struct attribute *dev_dax_attributes[] = {
   1261	&dev_attr_modalias.attr,
   1262	&dev_attr_size.attr,
   1263	&dev_attr_mapping.attr,
   1264	&dev_attr_target_node.attr,
   1265	&dev_attr_align.attr,
   1266	&dev_attr_resource.attr,
   1267	&dev_attr_numa_node.attr,
   1268	NULL,
   1269};
   1270
   1271static const struct attribute_group dev_dax_attribute_group = {
   1272	.attrs = dev_dax_attributes,
   1273	.is_visible = dev_dax_visible,
   1274};
   1275
   1276static const struct attribute_group *dax_attribute_groups[] = {
   1277	&dev_dax_attribute_group,
   1278	NULL,
   1279};
   1280
   1281static void dev_dax_release(struct device *dev)
   1282{
   1283	struct dev_dax *dev_dax = to_dev_dax(dev);
   1284	struct dax_region *dax_region = dev_dax->region;
   1285	struct dax_device *dax_dev = dev_dax->dax_dev;
   1286
   1287	put_dax(dax_dev);
   1288	free_dev_dax_id(dev_dax);
   1289	dax_region_put(dax_region);
   1290	kfree(dev_dax->pgmap);
   1291	kfree(dev_dax);
   1292}
   1293
   1294static const struct device_type dev_dax_type = {
   1295	.release = dev_dax_release,
   1296	.groups = dax_attribute_groups,
   1297};
   1298
   1299struct dev_dax *devm_create_dev_dax(struct dev_dax_data *data)
   1300{
   1301	struct dax_region *dax_region = data->dax_region;
   1302	struct device *parent = dax_region->dev;
   1303	struct dax_device *dax_dev;
   1304	struct dev_dax *dev_dax;
   1305	struct inode *inode;
   1306	struct device *dev;
   1307	int rc;
   1308
   1309	dev_dax = kzalloc(sizeof(*dev_dax), GFP_KERNEL);
   1310	if (!dev_dax)
   1311		return ERR_PTR(-ENOMEM);
   1312
   1313	if (is_static(dax_region)) {
   1314		if (dev_WARN_ONCE(parent, data->id < 0,
   1315				"dynamic id specified to static region\n")) {
   1316			rc = -EINVAL;
   1317			goto err_id;
   1318		}
   1319
   1320		dev_dax->id = data->id;
   1321	} else {
   1322		if (dev_WARN_ONCE(parent, data->id >= 0,
   1323				"static id specified to dynamic region\n")) {
   1324			rc = -EINVAL;
   1325			goto err_id;
   1326		}
   1327
   1328		rc = ida_alloc(&dax_region->ida, GFP_KERNEL);
   1329		if (rc < 0)
   1330			goto err_id;
   1331		dev_dax->id = rc;
   1332	}
   1333
   1334	dev_dax->region = dax_region;
   1335	dev = &dev_dax->dev;
   1336	device_initialize(dev);
   1337	dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
   1338
   1339	rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, data->size);
   1340	if (rc)
   1341		goto err_range;
   1342
   1343	if (data->pgmap) {
   1344		dev_WARN_ONCE(parent, !is_static(dax_region),
   1345			"custom dev_pagemap requires a static dax_region\n");
   1346
   1347		dev_dax->pgmap = kmemdup(data->pgmap,
   1348				sizeof(struct dev_pagemap), GFP_KERNEL);
   1349		if (!dev_dax->pgmap) {
   1350			rc = -ENOMEM;
   1351			goto err_pgmap;
   1352		}
   1353	}
   1354
   1355	/*
   1356	 * No dax_operations since there is no access to this device outside of
   1357	 * mmap of the resulting character device.
   1358	 */
   1359	dax_dev = alloc_dax(dev_dax, NULL);
   1360	if (IS_ERR(dax_dev)) {
   1361		rc = PTR_ERR(dax_dev);
   1362		goto err_alloc_dax;
   1363	}
   1364	set_dax_synchronous(dax_dev);
   1365	set_dax_nocache(dax_dev);
   1366	set_dax_nomc(dax_dev);
   1367
   1368	/* a device_dax instance is dead while the driver is not attached */
   1369	kill_dax(dax_dev);
   1370
   1371	dev_dax->dax_dev = dax_dev;
   1372	dev_dax->target_node = dax_region->target_node;
   1373	dev_dax->align = dax_region->align;
   1374	ida_init(&dev_dax->ida);
   1375	kref_get(&dax_region->kref);
   1376
   1377	inode = dax_inode(dax_dev);
   1378	dev->devt = inode->i_rdev;
   1379	dev->bus = &dax_bus_type;
   1380	dev->parent = parent;
   1381	dev->type = &dev_dax_type;
   1382
   1383	rc = device_add(dev);
   1384	if (rc) {
   1385		kill_dev_dax(dev_dax);
   1386		put_device(dev);
   1387		return ERR_PTR(rc);
   1388	}
   1389
   1390	rc = devm_add_action_or_reset(dax_region->dev, unregister_dev_dax, dev);
   1391	if (rc)
   1392		return ERR_PTR(rc);
   1393
   1394	/* register mapping device for the initial allocation range */
   1395	if (dev_dax->nr_range && range_len(&dev_dax->ranges[0].range)) {
   1396		rc = devm_register_dax_mapping(dev_dax, 0);
   1397		if (rc)
   1398			return ERR_PTR(rc);
   1399	}
   1400
   1401	return dev_dax;
   1402
   1403err_alloc_dax:
   1404	kfree(dev_dax->pgmap);
   1405err_pgmap:
   1406	free_dev_dax_ranges(dev_dax);
   1407err_range:
   1408	free_dev_dax_id(dev_dax);
   1409err_id:
   1410	kfree(dev_dax);
   1411
   1412	return ERR_PTR(rc);
   1413}
   1414EXPORT_SYMBOL_GPL(devm_create_dev_dax);
   1415
   1416static int match_always_count;
   1417
   1418int __dax_driver_register(struct dax_device_driver *dax_drv,
   1419		struct module *module, const char *mod_name)
   1420{
   1421	struct device_driver *drv = &dax_drv->drv;
   1422	int rc = 0;
   1423
   1424	/*
   1425	 * dax_bus_probe() calls dax_drv->probe() unconditionally.
   1426	 * So better be safe than sorry and ensure it is provided.
   1427	 */
   1428	if (!dax_drv->probe)
   1429		return -EINVAL;
   1430
   1431	INIT_LIST_HEAD(&dax_drv->ids);
   1432	drv->owner = module;
   1433	drv->name = mod_name;
   1434	drv->mod_name = mod_name;
   1435	drv->bus = &dax_bus_type;
   1436
   1437	/* there can only be one default driver */
   1438	mutex_lock(&dax_bus_lock);
   1439	match_always_count += dax_drv->match_always;
   1440	if (match_always_count > 1) {
   1441		match_always_count--;
   1442		WARN_ON(1);
   1443		rc = -EINVAL;
   1444	}
   1445	mutex_unlock(&dax_bus_lock);
   1446	if (rc)
   1447		return rc;
   1448
   1449	rc = driver_register(drv);
   1450	if (rc && dax_drv->match_always) {
   1451		mutex_lock(&dax_bus_lock);
   1452		match_always_count -= dax_drv->match_always;
   1453		mutex_unlock(&dax_bus_lock);
   1454	}
   1455
   1456	return rc;
   1457}
   1458EXPORT_SYMBOL_GPL(__dax_driver_register);
   1459
   1460void dax_driver_unregister(struct dax_device_driver *dax_drv)
   1461{
   1462	struct device_driver *drv = &dax_drv->drv;
   1463	struct dax_id *dax_id, *_id;
   1464
   1465	mutex_lock(&dax_bus_lock);
   1466	match_always_count -= dax_drv->match_always;
   1467	list_for_each_entry_safe(dax_id, _id, &dax_drv->ids, list) {
   1468		list_del(&dax_id->list);
   1469		kfree(dax_id);
   1470	}
   1471	mutex_unlock(&dax_bus_lock);
   1472	driver_unregister(drv);
   1473}
   1474EXPORT_SYMBOL_GPL(dax_driver_unregister);
   1475
   1476int __init dax_bus_init(void)
   1477{
   1478	return bus_register(&dax_bus_type);
   1479}
   1480
   1481void __exit dax_bus_exit(void)
   1482{
   1483	bus_unregister(&dax_bus_type);
   1484}