summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2015-08-27 19:40:26 -0400
committerDan Williams <dan.j.williams@intel.com>2015-08-27 19:40:26 -0400
commit4a9bf88a5caa8495b5eb2b738d5fb40924bbc538 (patch)
tree7c2901cb67a7dd7c863fee6924afe24be79cddab /tools
parenta06a7576526e10a99ea7721533e7f2df3e26baad (diff)
parent67a3e8fe90156d41cd480d3dfbb40f3bc007c262 (diff)
Merge branch 'pmem-api' into libnvdimm-for-next
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/nvdimm/Kbuild6
-rw-r--r--tools/testing/nvdimm/test/iomap.c72
-rw-r--r--tools/testing/nvdimm/test/nfit.c10
3 files changed, 71 insertions, 17 deletions
diff --git a/tools/testing/nvdimm/Kbuild b/tools/testing/nvdimm/Kbuild
index d7c136a96346..98f2881ba6a2 100644
--- a/tools/testing/nvdimm/Kbuild
+++ b/tools/testing/nvdimm/Kbuild
@@ -1,9 +1,11 @@
1ldflags-y += --wrap=ioremap_wt
2ldflags-y += --wrap=ioremap_wc 1ldflags-y += --wrap=ioremap_wc
2ldflags-y += --wrap=memremap
3ldflags-y += --wrap=devm_ioremap_nocache 3ldflags-y += --wrap=devm_ioremap_nocache
4ldflags-y += --wrap=ioremap_cache 4ldflags-y += --wrap=devm_memremap
5ldflags-y += --wrap=ioremap_nocache 5ldflags-y += --wrap=ioremap_nocache
6ldflags-y += --wrap=iounmap 6ldflags-y += --wrap=iounmap
7ldflags-y += --wrap=memunmap
8ldflags-y += --wrap=__devm_request_region
7ldflags-y += --wrap=__request_region 9ldflags-y += --wrap=__request_region
8ldflags-y += --wrap=__release_region 10ldflags-y += --wrap=__release_region
9 11
diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
index 64bfaa50831c..179d2289f3a8 100644
--- a/tools/testing/nvdimm/test/iomap.c
+++ b/tools/testing/nvdimm/test/iomap.c
@@ -80,23 +80,39 @@ void __iomem *__wrap_devm_ioremap_nocache(struct device *dev,
80} 80}
81EXPORT_SYMBOL(__wrap_devm_ioremap_nocache); 81EXPORT_SYMBOL(__wrap_devm_ioremap_nocache);
82 82
83void __iomem *__wrap_ioremap_cache(resource_size_t offset, unsigned long size) 83void *__wrap_devm_memremap(struct device *dev, resource_size_t offset,
84 size_t size, unsigned long flags)
84{ 85{
85 return __nfit_test_ioremap(offset, size, ioremap_cache); 86 struct nfit_test_resource *nfit_res;
87
88 rcu_read_lock();
89 nfit_res = get_nfit_res(offset);
90 rcu_read_unlock();
91 if (nfit_res)
92 return nfit_res->buf + offset - nfit_res->res->start;
93 return devm_memremap(dev, offset, size, flags);
86} 94}
87EXPORT_SYMBOL(__wrap_ioremap_cache); 95EXPORT_SYMBOL(__wrap_devm_memremap);
88 96
89void __iomem *__wrap_ioremap_nocache(resource_size_t offset, unsigned long size) 97void *__wrap_memremap(resource_size_t offset, size_t size,
98 unsigned long flags)
90{ 99{
91 return __nfit_test_ioremap(offset, size, ioremap_nocache); 100 struct nfit_test_resource *nfit_res;
101
102 rcu_read_lock();
103 nfit_res = get_nfit_res(offset);
104 rcu_read_unlock();
105 if (nfit_res)
106 return nfit_res->buf + offset - nfit_res->res->start;
107 return memremap(offset, size, flags);
92} 108}
93EXPORT_SYMBOL(__wrap_ioremap_nocache); 109EXPORT_SYMBOL(__wrap_memremap);
94 110
95void __iomem *__wrap_ioremap_wt(resource_size_t offset, unsigned long size) 111void __iomem *__wrap_ioremap_nocache(resource_size_t offset, unsigned long size)
96{ 112{
97 return __nfit_test_ioremap(offset, size, ioremap_wt); 113 return __nfit_test_ioremap(offset, size, ioremap_nocache);
98} 114}
99EXPORT_SYMBOL(__wrap_ioremap_wt); 115EXPORT_SYMBOL(__wrap_ioremap_nocache);
100 116
101void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size) 117void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size)
102{ 118{
@@ -117,9 +133,22 @@ void __wrap_iounmap(volatile void __iomem *addr)
117} 133}
118EXPORT_SYMBOL(__wrap_iounmap); 134EXPORT_SYMBOL(__wrap_iounmap);
119 135
120struct resource *__wrap___request_region(struct resource *parent, 136void __wrap_memunmap(void *addr)
121 resource_size_t start, resource_size_t n, const char *name, 137{
122 int flags) 138 struct nfit_test_resource *nfit_res;
139
140 rcu_read_lock();
141 nfit_res = get_nfit_res((unsigned long) addr);
142 rcu_read_unlock();
143 if (nfit_res)
144 return;
145 return memunmap(addr);
146}
147EXPORT_SYMBOL(__wrap_memunmap);
148
149static struct resource *nfit_test_request_region(struct device *dev,
150 struct resource *parent, resource_size_t start,
151 resource_size_t n, const char *name, int flags)
123{ 152{
124 struct nfit_test_resource *nfit_res; 153 struct nfit_test_resource *nfit_res;
125 154
@@ -147,10 +176,29 @@ struct resource *__wrap___request_region(struct resource *parent,
147 return res; 176 return res;
148 } 177 }
149 } 178 }
179 if (dev)
180 return __devm_request_region(dev, parent, start, n, name);
150 return __request_region(parent, start, n, name, flags); 181 return __request_region(parent, start, n, name, flags);
151} 182}
183
184struct resource *__wrap___request_region(struct resource *parent,
185 resource_size_t start, resource_size_t n, const char *name,
186 int flags)
187{
188 return nfit_test_request_region(NULL, parent, start, n, name, flags);
189}
152EXPORT_SYMBOL(__wrap___request_region); 190EXPORT_SYMBOL(__wrap___request_region);
153 191
192struct resource *__wrap___devm_request_region(struct device *dev,
193 struct resource *parent, resource_size_t start,
194 resource_size_t n, const char *name)
195{
196 if (!dev)
197 return NULL;
198 return nfit_test_request_region(dev, parent, start, n, name, 0);
199}
200EXPORT_SYMBOL(__wrap___devm_request_region);
201
154void __wrap___release_region(struct resource *parent, resource_size_t start, 202void __wrap___release_region(struct resource *parent, resource_size_t start,
155 resource_size_t n) 203 resource_size_t n)
156{ 204{
diff --git a/tools/testing/nvdimm/test/nfit.c b/tools/testing/nvdimm/test/nfit.c
index 28dba918524e..021e6f97f33e 100644
--- a/tools/testing/nvdimm/test/nfit.c
+++ b/tools/testing/nvdimm/test/nfit.c
@@ -1029,9 +1029,13 @@ static int nfit_test_blk_do_io(struct nd_blk_region *ndbr, resource_size_t dpa,
1029 1029
1030 lane = nd_region_acquire_lane(nd_region); 1030 lane = nd_region_acquire_lane(nd_region);
1031 if (rw) 1031 if (rw)
1032 memcpy(mmio->base + dpa, iobuf, len); 1032 memcpy(mmio->addr.base + dpa, iobuf, len);
1033 else 1033 else {
1034 memcpy(iobuf, mmio->base + dpa, len); 1034 memcpy(iobuf, mmio->addr.base + dpa, len);
1035
1036 /* give us some some coverage of the mmio_flush_range() API */
1037 mmio_flush_range(mmio->addr.base + dpa, len);
1038 }
1035 nd_region_release_lane(nd_region, lane); 1039 nd_region_release_lane(nd_region, lane);
1036 1040
1037 return 0; 1041 return 0;