[dpdk-dev] [PATCH v2 2/2] build: fix crash by disabling AVX512 with binutils 2.31
Bruce Richardson
bruce.richardson at intel.com
Tue Apr 16 17:47:10 CEST 2019
On Tue, Apr 16, 2019 at 04:39:32PM +0100, Ferruh Yigit wrote:
> On Skylake platform, with native build, KNI kernel module crashes
> because of the corrupted values passed to kernel module.
>
> The corruption occurs because the userspace kni library works
> unexpectedly. Compiler [1] is using AVX512 instructions and generated
> binary is wrong [2].
>
> It turned around gcc does its job correct, but gas is generating binary
> wrong. And expected binutils 2.30, 2.31 & 2.31.1 are affected. Issue has
> been fixed in binutils 2.32 with:
> Commit x86: don't mistakenly scale non-8-bit displacements
>
> AVX512 was already disabled with bintuils 2.30 [3], extending it to
> 2.31 & 2.31.1 too.
>
> [1] gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
>
> [2] gcc bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90028
>
> [3] Bugzilla ID 97 has the details.
>
> Bugzilla ID: 249
> Cc: stable at dpdk.org
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> ---
> v2:
> * Release notes "Known Issues" section updated
> ---
> config/x86/meson.build | 6 ++++++
> doc/guides/rel_notes/release_19_05.rst | 6 ++++++
> mk/toolchain/gcc/rte.toolchain-compat.mk | 9 ++++++++-
> 3 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/config/x86/meson.build b/config/x86/meson.build
> index 692aebe7a..9e9d5dc8c 100644
> --- a/config/x86/meson.build
> +++ b/config/x86/meson.build
> @@ -10,6 +10,12 @@ if host_machine.system() != 'windows'
> message('Binutils 2.30 detected, disabling AVX512 support as workaround for bug #97')
> endif
> endif
> + if ldver.contains('2.31')
> + if cc.has_argument('-mno-avx512f')
> + machine_args += '-mno-avx512f'
> + message('Binutils 2.31 detected, disabling AVX512 support as workaround for bug #249')
> + endif
> + endif
Is this not the same as the previous block just with a slightly different
error message? Should we merge the two, and print out both bug numbers?
If not merging, we can reduce the indentation by putting the second
cc.has_argument() condition on the same line as the previous check, i.e.
"if ldver.contains(...) and cc.has_argument(...)"
Apart from this nit:
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
More information about the dev
mailing list