From: Matthew Wilcox <[email protected]> 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

