[PATCH v4 0/8] Multibyte memset variations

From: Matthew Wilcox
Date: Thu Jul 20 2017 - 14:47:55 EST


From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>

A relatively common idiom we're missing is a function to fill an area
of memory with a pattern which is larger than a single byte. I first
noticed this with a zram patch which wanted to fill a page with an
'unsigned long' value. There turn out to be quite a few places in
the kernel which can benefit from using an optimised function rather
than a loop; sometimes text size, sometimes speed, and sometimes both.
The optimised PowerPC version (not included here) improves performance
by about 30% on POWER8 on just the raw memset_l().

Most of the extra lines of code come from the three testcases I added.

Matthew Wilcox (8):
Add multibyte memset functions
Add testcases for memset16/32/64
x86: Implement memset16, memset32 & memset64
ARM: Implement memset32 & memset64
alpha: Add support for memset16
zram: Convert to using memset_l
sym53c8xx_2: Convert to use memset32
vga: Optimise console scrolling

arch/alpha/include/asm/string.h | 15 +--
arch/alpha/include/asm/vga.h | 2 +-
arch/alpha/lib/memset.S | 10 +-
arch/arm/include/asm/string.h | 14 +++
arch/arm/kernel/armksyms.c | 2 +
arch/arm/lib/memset.S | 24 +++--
arch/mips/include/asm/vga.h | 7 ++
arch/powerpc/include/asm/vga.h | 8 ++
arch/sparc/include/asm/vga.h | 25 +++++
arch/x86/include/asm/string_32.h | 24 +++++
arch/x86/include/asm/string_64.h | 36 +++++++
drivers/block/zram/zram_drv.c | 13 +--
drivers/scsi/sym53c8xx_2/sym_hipd.c | 11 +-
include/linux/string.h | 30 ++++++
include/linux/vt_buffer.h | 12 +++
lib/Kconfig | 3 +
lib/string.c | 196 ++++++++++++++++++++++++++++++++++++
17 files changed, 394 insertions(+), 38 deletions(-)

--
2.13.2