diff options
author | Dave Jiang <dave.jiang@intel.com> | 2017-04-08 00:33:36 +0200 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2017-04-13 06:56:43 +0200 |
commit | efebc711180f7fed701f6e23f23814fcfda7fbfc (patch) | |
tree | 87dfee7140b895c1d3331386a72c20cd83d8174d /drivers/dax/dax-private.h | |
parent | libnvdimm: add support for clear poison list and badblocks for device dax (diff) | |
download | linux-efebc711180f7fed701f6e23f23814fcfda7fbfc.tar.xz linux-efebc711180f7fed701f6e23f23814fcfda7fbfc.zip |
device-dax, tools/testing/nvdimm: enable device-dax with mock resources
Provide a replacement pgoff_to_phys() that translates an nfit_test
resource (allocated by vmalloc()) to a pfn.
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dax/dax-private.h')
-rw-r--r-- | drivers/dax/dax-private.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/drivers/dax/dax-private.h b/drivers/dax/dax-private.h new file mode 100644 index 000000000000..b1cd7a8e5ab9 --- /dev/null +++ b/drivers/dax/dax-private.h @@ -0,0 +1,61 @@ +/* + * Copyright(c) 2016 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ +#ifndef __DAX_PRIVATE_H__ +#define __DAX_PRIVATE_H__ + +#include <linux/device.h> +#include <linux/cdev.h> + +/** + * struct dax_region - mapping infrastructure for dax devices + * @id: kernel-wide unique region for a memory range + * @base: linear address corresponding to @res + * @kref: to pin while other agents have a need to do lookups + * @dev: parent device backing this region + * @align: allocation and mapping alignment for child dax devices + * @res: physical address range of the region + * @pfn_flags: identify whether the pfns are paged back or not + */ +struct dax_region { + int id; + struct ida ida; + void *base; + struct kref kref; + struct device *dev; + unsigned int align; + struct resource res; + unsigned long pfn_flags; +}; + +/** + * struct dax_dev - subdivision of a dax region + * @region - parent region + * @inode - inode + * @dev - device backing the character device + * @cdev - core chardev data + * @alive - !alive + srcu grace period == no new mappings can be established + * @id - child id in the region + * @num_resources - number of physical address extents in this device + * @res - array of physical address ranges + */ +struct dax_dev { + struct dax_region *region; + struct inode *inode; + struct device dev; + struct cdev cdev; + bool alive; + int id; + int num_resources; + struct resource res[0]; +}; +#endif |