SIGILL in rte_cpu_get_flag_enabled / RTE_CPUFLAG_RTM

David Marchand david.marchand at redhat.com
Mon Sep 25 11:53:30 CEST 2023


On Fri, Sep 22, 2023 at 7:48 PM Bernd Schubert
<bs_lists at aakef.fastmail.fm> wrote:
>
> I'm trying to compile our tools on an older lab system and get
>
> Program received signal SIGILL, Illegal instruction.
> 0x00007ffff434c766 in rte_cpu_get_flag_enabled (feature=feature at entry=RTE_CPUFLAG_RTM) at ../lib/eal/x86/rte_cpuflags.c:173
> 173             return (regs[feat->reg] >> feat->bit) & 1;
> (gdb) bt
> #0  0x00007ffff434c766 in rte_cpu_get_flag_enabled (feature=feature at entry=RTE_CPUFLAG_RTM) at ../lib/eal/x86/rte_cpuflags.c:173
> #1  0x00007ffff3ffb572 in rte_rtm_init () at ../lib/eal/x86/rte_spinlock.c:14
> ##2  0x00007ffff7fc947e in call_init (l=<optimized out>, argc=argc at entry=1, argv=argv at entry=0x7fffffffe088, env=env at entry=0x7fffffffe098)
>      at ./elf/dl-init.c:70
> #3  0x00007ffff7fc9568 in call_init (env=0x7fffffffe098, argv=0x7fffffffe088, argc=1, l=<optimized out>) at ./elf/dl-init.c:33
> #4  _dl_init (main_map=0x7ffff7ffe2e0, argc=1, argv=0x7fffffffe088, env=0x7fffffffe098) at ./elf/dl-init.c:117
> #5  0x00007ffff7fe32ea in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
>
>
> This already has been reported here
> https://inbox.dpdk.org/users/C7FF2508-D633-404E-95AF-5F604D8E8E4B@intel.com/t/
> but I don't see a solution there. It just ends up asking for the line numbers.
> Well, the line is
>
>
>       __cpuid_count(feat->leaf, feat->subleaf,
>               regs[RTE_REG_EAX], regs[RTE_REG_EBX],
>               regs[RTE_REG_ECX], regs[RTE_REG_EDX]);
>
>      /* check if the feature is enabled */
>      return (regs[feat->reg] >> feat->bit) & 1; ====> line 173
>
>
> Maybe this should catch SIGILL?

SIGILL is a sign that some unsupported instruction (for your old cpu)
has been executed.
Did you try building dpdk with -Dplatform=generic meson option?


-- 
David Marchand



More information about the dev mailing list