Message ID | 1432940350-1802-13-git-send-email-toshi.kani@hp.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Fri, May 29, 2015 at 3:59 PM, Toshi Kani <toshi.kani@hp.com> wrote: > From: Toshi Kani <toshi.kani@hp.com> > > The pmem driver maps NVDIMM with ioremap_nocache() as we cannot > write back the contents of the CPU caches in case of a crash. > > This patch changes to use ioremap_wt(), which provides uncached > writes but cached reads, for improving read performance. > > Signed-off-by: Toshi Kani <toshi.kani@hp.com> Acked-by: Dan Williams <dan.j.williams@intel.com> ...with the caveat that I'm going to follow in behind this series with generic ioremap_cache() enabling and converting pmem to use persistent_copy() / persistent_sync() when the arch/cpu has persistent memory synchronization instructions. After the conversion ioremap_wt() will still be there for the non-persistent_sync() capable case.
diff --git a/drivers/block/pmem.c b/drivers/block/pmem.c index eabf4a8..095dfaa 100644 --- a/drivers/block/pmem.c +++ b/drivers/block/pmem.c @@ -139,11 +139,11 @@ static struct pmem_device *pmem_alloc(struct device *dev, struct resource *res) } /* - * Map the memory as non-cachable, as we can't write back the contents + * Map the memory as write-through, as we can't write back the contents * of the CPU caches in case of a crash. */ err = -ENOMEM; - pmem->virt_addr = ioremap_nocache(pmem->phys_addr, pmem->size); + pmem->virt_addr = ioremap_wt(pmem->phys_addr, pmem->size); if (!pmem->virt_addr) goto out_release_region;