From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH v4] mk: fix scope of disabling AVX512F support Date: Mon, 14 Jan 2019 12:55:42 +0100 Message-ID: <1573462.QHEBVEx1sm@xps> References: <20190103162313.85623-1-ferruh.yigit@intel.com> <20190107164942.88785-1-ferruh.yigit@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org, John McNamara , Marko Kovacevic , stable@dpdk.org, Tom Barbette , Yongseok Koh , Konstantin Ananyev , Bruce Richardson , Vipin Varghese To: Ferruh Yigit Return-path: In-Reply-To: <20190107164942.88785-1-ferruh.yigit@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi, Few details reviewed below, 07/01/2019 17:49, Ferruh Yigit: > --- a/doc/guides/rel_notes/known_issues.rst > +++ b/doc/guides/rel_notes/known_issues.rst > +AVX-512 support disabled > +------------------------ > + > +**Description**: > + ``AVX-512`` support has been disabled on some conditions. > + This shouldn't be confused with ``CONFIG_RTE_ENABLE_AVX512`` config option which is already > + disabled by default. This config option defines if ``AVX-512`` specific implementations of > + some file to be used or not. What has been disabled is compiler feature to produce ``AVX-512`` > + instructions from any source code. > + > + On DPDK v18.11 ``AVX-512`` disabled for all ``GCC`` builds which reported to cause a performance > + drop. *is* disabled > + > + On DPDK v19.02 ``AVX-512`` disable scope reduced to ``GCC`` and ``binutils version 2.30`` based *is* reduced > + on information accured from the GCC community defect. > + > +**Reason**: > + Generated ``AVX-512`` code cause crash: > + https://bugs.dpdk.org/show_bug.cgi?id=97 > + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096 > + > +**Resolution/Workaround**: > + Update ``binutils`` to newer version than ``2.30``. > + Use different compiler, like ``clang`` for this case. These are 2 possible workarounds. Should we say "Or" ? > + > +**Affected Environment/Platform**: > + ``GCC`` and ``binutils version 2.30``. > --- a/doc/guides/rel_notes/release_19_02.rst > +++ b/doc/guides/rel_notes/release_19_02.rst > @@ -276,6 +276,19 @@ Known Issues > Also, make sure to start the actual text at the margin. > ========================================================= > > +* ``AVX-512`` support has been disabled for ``GCC`` builds when ``binutils 2.30`` > + is detected [1] because of a crash [2]. This can affect ``native`` machine type > + build targets on the platforms that support ``AVX512F`` like ``Intel Skylake`` > + processors, and can cause a possible performance drop. The immediate workaround > + is to use ``clang`` compiler on these platforms. > + Initial workaround in DPDK v18.11 was to disable ``AVX-512`` support for ``GCC`` > + completely, but based on information on defect submitted to GCC community [3], > + issue has been identified as ``binutils 2.30`` issue. Since currently only GCC > + generates ``AVX-512`` instructions, scope limited to ``GCC`` and ``binutils 2.30`` *the* scope *is* limited > + > + - [1]: Commit ("mk: fix scope of disabling AVX512F support") > + - [2]: https://bugs.dpdk.org/show_bug.cgi?id=97 > + - [3]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096 > Space missing here > Tested Platforms > ---------------- > --- a/mk/toolchain/gcc/rte.toolchain-compat.mk > +++ b/mk/toolchain/gcc/rte.toolchain-compat.mk > +LD_VERSION = $(shell $(LD) -v) > +# disable AVX512F support for GCC & binutils 2.30 as a workaround for Bug 97 > +ifneq ($(filter 2.30%,$(LD_VERSION)),) > +FORCE_DISABLE_AVX512 := y > +# print warning only once for librte_eal > +ifneq ($(filter %librte_eal,$(lastword $(CURDIR))),) Do we need lastword for CURDIR?