diff options
author | Dan Williams <dan.j.williams@intel.com> | 2015-08-27 19:40:26 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2015-08-27 19:40:26 -0400 |
commit | 4a9bf88a5caa8495b5eb2b738d5fb40924bbc538 (patch) | |
tree | 7c2901cb67a7dd7c863fee6924afe24be79cddab /tools | |
parent | a06a7576526e10a99ea7721533e7f2df3e26baad (diff) | |
parent | 67a3e8fe90156d41cd480d3dfbb40f3bc007c262 (diff) |
Merge branch 'pmem-api' into libnvdimm-for-next
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/nvdimm/Kbuild | 6 | ||||
-rw-r--r-- | tools/testing/nvdimm/test/iomap.c | 72 | ||||
-rw-r--r-- | tools/testing/nvdimm/test/nfit.c | 10 |
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 @@ | |||
1 | ldflags-y += --wrap=ioremap_wt | ||
2 | ldflags-y += --wrap=ioremap_wc | 1 | ldflags-y += --wrap=ioremap_wc |
2 | ldflags-y += --wrap=memremap | ||
3 | ldflags-y += --wrap=devm_ioremap_nocache | 3 | ldflags-y += --wrap=devm_ioremap_nocache |
4 | ldflags-y += --wrap=ioremap_cache | 4 | ldflags-y += --wrap=devm_memremap |
5 | ldflags-y += --wrap=ioremap_nocache | 5 | ldflags-y += --wrap=ioremap_nocache |
6 | ldflags-y += --wrap=iounmap | 6 | ldflags-y += --wrap=iounmap |
7 | ldflags-y += --wrap=memunmap | ||
8 | ldflags-y += --wrap=__devm_request_region | ||
7 | ldflags-y += --wrap=__request_region | 9 | ldflags-y += --wrap=__request_region |
8 | ldflags-y += --wrap=__release_region | 10 | ldflags-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 | } |
81 | EXPORT_SYMBOL(__wrap_devm_ioremap_nocache); | 81 | EXPORT_SYMBOL(__wrap_devm_ioremap_nocache); |
82 | 82 | ||
83 | void __iomem *__wrap_ioremap_cache(resource_size_t offset, unsigned long size) | 83 | void *__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 | } |
87 | EXPORT_SYMBOL(__wrap_ioremap_cache); | 95 | EXPORT_SYMBOL(__wrap_devm_memremap); |
88 | 96 | ||
89 | void __iomem *__wrap_ioremap_nocache(resource_size_t offset, unsigned long size) | 97 | void *__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 | } |
93 | EXPORT_SYMBOL(__wrap_ioremap_nocache); | 109 | EXPORT_SYMBOL(__wrap_memremap); |
94 | 110 | ||
95 | void __iomem *__wrap_ioremap_wt(resource_size_t offset, unsigned long size) | 111 | void __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 | } |
99 | EXPORT_SYMBOL(__wrap_ioremap_wt); | 115 | EXPORT_SYMBOL(__wrap_ioremap_nocache); |
100 | 116 | ||
101 | void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size) | 117 | void __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 | } |
118 | EXPORT_SYMBOL(__wrap_iounmap); | 134 | EXPORT_SYMBOL(__wrap_iounmap); |
119 | 135 | ||
120 | struct resource *__wrap___request_region(struct resource *parent, | 136 | void __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 | } | ||
147 | EXPORT_SYMBOL(__wrap_memunmap); | ||
148 | |||
149 | static 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 | |||
184 | struct 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 | } | ||
152 | EXPORT_SYMBOL(__wrap___request_region); | 190 | EXPORT_SYMBOL(__wrap___request_region); |
153 | 191 | ||
192 | struct 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 | } | ||
200 | EXPORT_SYMBOL(__wrap___devm_request_region); | ||
201 | |||
154 | void __wrap___release_region(struct resource *parent, resource_size_t start, | 202 | void __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; |