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: sta...@dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yi...@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.richard...@intel.com>

Reply via email to