On Mon, Feb 06, 2017 at 12:16:44AM +0900, Minchan Kim wrote: > +static inline void zram_fill_page(char *ptr, unsigned long len, > + unsigned long value) > +{ > + int i; > + unsigned long *page = (unsigned long *)ptr; > + > + WARN_ON_ONCE(!IS_ALIGNED(len, sizeof(unsigned long))); > + > + if (likely(value == 0)) { > + memset(ptr, 0, len); > + } else { > + for (i = 0; i < len / sizeof(*page); i++) > + page[i] = value; > + } > +}
I've hacked up memset32/memset64 for both ARM and x86 here: http://git.infradead.org/users/willy/linux-dax.git/shortlog/refs/heads/memfill Can you do some performance testing and see if it makes a difference? At this point, I'd probably ask for the first 5 patches in that git branch to be included, and leave out memfill and the shoddy testsuite. I haven't actually tested either asm implementation ... only the C fallback.