On Fri 09-06-17 13:24:24, Dan Williams wrote: > The clear_pmem() helper simply combines a memset() plus a cache flush. > Now that the flush routine is optionally provided by the dax device > driver we can avoid unnecessary cache management on dax devices fronting > volatile memory. > > With clear_pmem() gone we can follow on with a patch to make pmem cache > management completely defined within the pmem driver. > > Cc: <x86@xxxxxxxxxx> > Cc: Jan Kara <jack@xxxxxxx> > Cc: Jeff Moyer <jmoyer@xxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> > Cc: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> Looks good to me. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > arch/x86/include/asm/pmem.h | 13 ------------- > fs/dax.c | 3 ++- > include/linux/pmem.h | 21 --------------------- > 3 files changed, 2 insertions(+), 35 deletions(-) > > diff --git a/arch/x86/include/asm/pmem.h b/arch/x86/include/asm/pmem.h > index 60e8edbe0205..f4c119d253f3 100644 > --- a/arch/x86/include/asm/pmem.h > +++ b/arch/x86/include/asm/pmem.h > @@ -65,19 +65,6 @@ static inline void arch_wb_cache_pmem(void *addr, size_t size) > clwb(p); > } > > -/** > - * arch_clear_pmem - zero a PMEM memory range > - * @addr: virtual start address > - * @size: number of bytes to zero > - * > - * Write zeros into the memory range starting at 'addr' for 'size' bytes. > - */ > -static inline void arch_clear_pmem(void *addr, size_t size) > -{ > - memset(addr, 0, size); > - arch_wb_cache_pmem(addr, size); > -} > - > static inline void arch_invalidate_pmem(void *addr, size_t size) > { > clflush_cache_range(addr, size); > diff --git a/fs/dax.c b/fs/dax.c > index 0933fc460ada..554b8e7d921c 100644 > --- a/fs/dax.c > +++ b/fs/dax.c > @@ -975,7 +975,8 @@ int __dax_zero_page_range(struct block_device *bdev, > dax_read_unlock(id); > return rc; > } > - clear_pmem(kaddr + offset, size); > + memset(kaddr + offset, 0, size); > + dax_flush(dax_dev, pgoff, kaddr + offset, size); > dax_read_unlock(id); > } > return 0; > diff --git a/include/linux/pmem.h b/include/linux/pmem.h > index 9d542a5600e4..772bd02a5b52 100644 > --- a/include/linux/pmem.h > +++ b/include/linux/pmem.h > @@ -31,11 +31,6 @@ static inline void arch_memcpy_to_pmem(void *dst, const void *src, size_t n) > BUG(); > } > > -static inline void arch_clear_pmem(void *addr, size_t size) > -{ > - BUG(); > -} > - > static inline void arch_wb_cache_pmem(void *addr, size_t size) > { > BUG(); > @@ -73,22 +68,6 @@ static inline void memcpy_to_pmem(void *dst, const void *src, size_t n) > } > > /** > - * clear_pmem - zero a PMEM memory range > - * @addr: virtual start address > - * @size: number of bytes to zero > - * > - * Write zeros into the memory range starting at 'addr' for 'size' bytes. > - * See blkdev_issue_flush() note for memcpy_to_pmem(). > - */ > -static inline void clear_pmem(void *addr, size_t size) > -{ > - if (arch_has_pmem_api()) > - arch_clear_pmem(addr, size); > - else > - memset(addr, 0, size); > -} > - > -/** > * invalidate_pmem - flush a pmem range from the cache hierarchy > * @addr: virtual start address > * @size: bytes to invalidate (internally aligned to cache line size) > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel