From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933212AbdDZSYQ (ORCPT ); Wed, 26 Apr 2017 14:24:16 -0400 Received: from mail-lf0-f52.google.com ([209.85.215.52]:33292 "EHLO mail-lf0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933178AbdDZSYJ (ORCPT ); Wed, 26 Apr 2017 14:24:09 -0400 Date: Wed, 26 Apr 2017 21:23:19 +0300 From: Alexey Dobriyan To: x86@kernel.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/5] x86_64: use REP MOVSB in copy_page() Message-ID: <20170426182318.GA5069@avx2> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On my Broadwell-era Xeon copying page with REP MOVSB is ~7.8% faster than with REP MOVSQ. Choose REP MOVSB copy_page() at runtime with alternatives. Signed-off-by: Alexey Dobriyan --- arch/x86/lib/copy_page_64.S | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) --- a/arch/x86/lib/copy_page_64.S +++ b/arch/x86/lib/copy_page_64.S @@ -13,13 +13,21 @@ */ ALIGN ENTRY(copy_page) - ALTERNATIVE "jmp copy_page_regs", "", X86_FEATURE_REP_GOOD + ALTERNATIVE_2 "jmp copy_page_regs", \ + "", X86_FEATURE_REP_GOOD, \ + "jmp copy_page_rep_movsb", X86_FEATURE_ERMS movl $4096/8, %ecx rep movsq ret ENDPROC(copy_page) EXPORT_SYMBOL(copy_page) +ENTRY(copy_page_rep_movsb) + mov $4096, %ecx + rep movsb + ret +ENDPROC(copy_page_rep_movsb) + ENTRY(copy_page_regs) subq $2*8, %rsp movq %rbx, (%rsp)