From owner-svn-src-all@freebsd.org Thu Mar 5 14:13:22 2020 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E3E0526AC4E; Thu, 5 Mar 2020 14:13:22 +0000 (UTC) (envelope-from alfredo@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48YCQV4GhCz4TbX; Thu, 5 Mar 2020 14:13:22 +0000 (UTC) (envelope-from alfredo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 826658659; Thu, 5 Mar 2020 14:13:22 +0000 (UTC) (envelope-from alfredo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 025EDMjm040458; Thu, 5 Mar 2020 14:13:22 GMT (envelope-from alfredo@FreeBSD.org) Received: (from alfredo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 025EDMC9040457; Thu, 5 Mar 2020 14:13:22 GMT (envelope-from alfredo@FreeBSD.org) Message-Id: <202003051413.025EDMC9040457@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: alfredo set sender to alfredo@FreeBSD.org using -f From: "Alfredo Dal'Ava Junior" Date: Thu, 5 Mar 2020 14:13:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r358672 - head/lib/libc/powerpc64/string X-SVN-Group: head X-SVN-Commit-Author: alfredo X-SVN-Commit-Paths: head/lib/libc/powerpc64/string X-SVN-Commit-Revision: 358672 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Mar 2020 14:13:23 -0000 Author: alfredo Date: Thu Mar 5 14:13:22 2020 New Revision: 358672 URL: https://svnweb.freebsd.org/changeset/base/358672 Log: [PowerPC64] restrict memcpy/bcopy optimization to POWER ISA >=V2.07 VSX instructions were added in POWER ISA V2.06 (POWER7), but it requires data to be word-aligned. Such requirement was removed in ISA V2.07B (POWER8). Since current memcpy/bcopy optimization relies on VSX instructions handling misalignment transparently, and kernel doesn't currently implement an alignment error handler, this optimzation should be restrict to ISA V2.07 onwards. SIGBUS on stxvd2x instruction was reproduced in POWER7+ CPU. Reviewed by: luporl, jhibbits, bdragon Approved by: jhibbits (mentor) Differential Revision: https://reviews.freebsd.org/D23958 Modified: head/lib/libc/powerpc64/string/bcopy_resolver.c Modified: head/lib/libc/powerpc64/string/bcopy_resolver.c ============================================================================== --- head/lib/libc/powerpc64/string/bcopy_resolver.c Thu Mar 5 14:05:22 2020 (r358671) +++ head/lib/libc/powerpc64/string/bcopy_resolver.c Thu Mar 5 14:13:22 2020 (r358672) @@ -61,7 +61,12 @@ FN_RET FN_NAME_VSX FN_PARAMS; DEFINE_UIFUNC(, FN_RET, FN_NAME, FN_PARAMS) { - if (cpu_features & PPC_FEATURE_HAS_VSX) + /* VSX instructions were added in POWER ISA 2.06, + * however it requires data to be word-aligned. + * Since POWER ISA 2.07B this is solved transparently + * by the hardware + */ + if (cpu_features2 & PPC_FEATURE2_ARCH_2_07) return (FN_NAME_VSX); else return (FN_NAME_NOVSX);