On Wed, 7 Oct 2026 at 15:01, Bruce Richardson <[email protected]> wrote: > > On Tue, Oct 06, 2026 at 08:20:56AM +0000, Dragos Tarcatu wrote: > > rte_cpu_get_flag_enabled() reads only the CPUID feature bits. CPUID > > tells what the CPU implements, not what the OS enables. If the OS does > > not enable the related state components in XCR0, the first AVX or AVX512 > > instruction raises #UD. > > > > CPUID can report AVX512 while XCR0 has no AVX512 state. Old kernels > > without AVX512 state support leave XCR0 at 0x7. A kernel booted with > > clearcpuid=avx512f removes the AVX512 state from XCR0, but CPUID still > > reports AVX512F. Similarly, gather_data_sampling=force removes the AVX > > state. > > > > On such a system, the rte_net_crc constructor selects the AVX512 code > > from CPUID alone. The dynamic loader runs this constructor before main(), > > so the application gets SIGILL before EAL can parse any argument. > > > > For the AVX-class and AVX512-class flags, also read XCR0 with XGETBV. > > Report the flag only when the OS has enabled the related state. Use > > XGETBV only when CPUID reports OSXSAVE, because the instruction faults > > otherwise. > > > > This change also affects rte_cpu_is_supported(). If DPDK is built for > > AVX512 and the OS does not enable AVX512 state, EAL can now stop with an > > error that names the missing flag. This is possible only if no AVX512 > > instruction executes before rte_eal_init(), for example in a constructor. > > > > Fixes: 3934bb741354 ("eal/x86: identify AVX512 CPU flag") Cc: > > [email protected] > > > > Signed-off-by: Dragos Tarcatu <[email protected]> --- > Tested-by: Bruce Richardson <[email protected]> > Acked-by: Bruce Richardson <[email protected]>
Applied, thanks. -- David Marchand

