From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965110AbdGTSqZ (ORCPT ); Thu, 20 Jul 2017 14:46:25 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:56909 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934748AbdGTSpz (ORCPT ); Thu, 20 Jul 2017 14:45:55 -0400 From: Matthew Wilcox To: linux-kernel@vger.kernel.org Cc: minchan@kernel.org, Matthew Wilcox , akpm@linuxfoundation.org, mpe@ellerman.id.au Subject: [PATCH v4 0/8] Multibyte memset variations Date: Thu, 20 Jul 2017 11:45:31 -0700 Message-Id: <20170720184539.31609-1-willy@infradead.org> X-Mailer: git-send-email 2.9.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthew Wilcox 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