aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2015-08-01 02:16:37 -0400
committerDan Williams <dan.j.williams@intel.com>2015-08-28 23:40:04 -0400
commit32ab0a3f51701cb37ab960635254d5f84ec3de0a (patch)
tree5e6ff1b400f4f1c42c7aecc76234f007d70e6a25 /tools
parente1455744b27c9e6115c3508a7b2902157c2c4347 (diff)
libnvdimm, pmem: 'struct page' for pmem
Enable the pmem driver to handle PFN device instances. Attaching a pmem namespace to a pfn device triggers the driver to allocate and initialize struct page entries for pmem. Memory capacity for this allocation comes exclusively from RAM for now which is suitable for low PMEM to RAM ratios. This mechanism will be expanded later for setting an "allocate from PMEM" policy. Cc: Boaz Harrosh <boaz@plexistor.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/nvdimm/Kbuild1
-rw-r--r--tools/testing/nvdimm/test/iomap.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/tools/testing/nvdimm/Kbuild b/tools/testing/nvdimm/Kbuild
index 99e70f0729be..38b00ecb2ed5 100644
--- a/tools/testing/nvdimm/Kbuild
+++ b/tools/testing/nvdimm/Kbuild
@@ -2,6 +2,7 @@ ldflags-y += --wrap=ioremap_wc
2ldflags-y += --wrap=memremap 2ldflags-y += --wrap=memremap
3ldflags-y += --wrap=devm_ioremap_nocache 3ldflags-y += --wrap=devm_ioremap_nocache
4ldflags-y += --wrap=devm_memremap 4ldflags-y += --wrap=devm_memremap
5ldflags-y += --wrap=devm_memunmap
5ldflags-y += --wrap=ioremap_nocache 6ldflags-y += --wrap=ioremap_nocache
6ldflags-y += --wrap=iounmap 7ldflags-y += --wrap=iounmap
7ldflags-y += --wrap=memunmap 8ldflags-y += --wrap=memunmap
diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
index 179d2289f3a8..b7251314bbc0 100644
--- a/tools/testing/nvdimm/test/iomap.c
+++ b/tools/testing/nvdimm/test/iomap.c
@@ -108,6 +108,19 @@ void *__wrap_memremap(resource_size_t offset, size_t size,
108} 108}
109EXPORT_SYMBOL(__wrap_memremap); 109EXPORT_SYMBOL(__wrap_memremap);
110 110
111void __wrap_devm_memunmap(struct device *dev, void *addr)
112{
113 struct nfit_test_resource *nfit_res;
114
115 rcu_read_lock();
116 nfit_res = get_nfit_res((unsigned long) addr);
117 rcu_read_unlock();
118 if (nfit_res)
119 return;
120 return devm_memunmap(dev, addr);
121}
122EXPORT_SYMBOL(__wrap_devm_memunmap);
123
111void __iomem *__wrap_ioremap_nocache(resource_size_t offset, unsigned long size) 124void __iomem *__wrap_ioremap_nocache(resource_size_t offset, unsigned long size)
112{ 125{
113 return __nfit_test_ioremap(offset, size, ioremap_nocache); 126 return __nfit_test_ioremap(offset, size, ioremap_nocache);