aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/nvdimm/test/iomap.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2015-07-10 14:07:03 -0400
committerDan Williams <dan.j.williams@intel.com>2015-07-10 14:07:03 -0400
commit9d27a87ec9e1317d368b1e5e3f4808078baa8c4c (patch)
tree8b1bfc29445dadd61368385dcd1a16add9e3bbb7 /tools/testing/nvdimm/test/iomap.c
parenttools/testing/nvdimm: fix return code for unimplemented commands (diff)
downloadlinux-dev-9d27a87ec9e1317d368b1e5e3f4808078baa8c4c.tar.xz
linux-dev-9d27a87ec9e1317d368b1e5e3f4808078baa8c4c.zip
tools/testing/nvdimm: add mock acpi_nfit_flush_address entries to nfit_test
In preparation for fixing the BLK path to properly use "directed pcommit" enable the unit test infrastructure to emit mock "flush" tables. Writes to these flush addresses trigger a memory controller to flush its internal buffers to persistent media, similar to the x86 "pcommit" instruction. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to '')
-rw-r--r--tools/testing/nvdimm/test/iomap.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
index 9f21b150396b..64bfaa50831c 100644
--- a/tools/testing/nvdimm/test/iomap.c
+++ b/tools/testing/nvdimm/test/iomap.c
@@ -65,6 +65,21 @@ void __iomem *__nfit_test_ioremap(resource_size_t offset, unsigned long size,
return fallback_fn(offset, size);
}
+void __iomem *__wrap_devm_ioremap_nocache(struct device *dev,
+ resource_size_t offset, unsigned long size)
+{
+ struct nfit_test_resource *nfit_res;
+
+ rcu_read_lock();
+ nfit_res = get_nfit_res(offset);
+ rcu_read_unlock();
+ if (nfit_res)
+ return (void __iomem *) nfit_res->buf + offset
+ - nfit_res->res->start;
+ return devm_ioremap_nocache(dev, offset, size);
+}
+EXPORT_SYMBOL(__wrap_devm_ioremap_nocache);
+
void __iomem *__wrap_ioremap_cache(resource_size_t offset, unsigned long size)
{
return __nfit_test_ioremap(offset, size, ioremap_cache);
@@ -83,6 +98,12 @@ void __iomem *__wrap_ioremap_wt(resource_size_t offset, unsigned long size)
}
EXPORT_SYMBOL(__wrap_ioremap_wt);
+void __iomem *__wrap_ioremap_wc(resource_size_t offset, unsigned long size)
+{
+ return __nfit_test_ioremap(offset, size, ioremap_wc);
+}
+EXPORT_SYMBOL(__wrap_ioremap_wc);
+
void __wrap_iounmap(volatile void __iomem *addr)
{
struct nfit_test_resource *nfit_res;