Linux 6.5: Interrupts were enabled early

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: Liste Guilde
Subject: Linux 6.5: Interrupts were enabled early
Bonjour la Guilde !

J'ai un petit problème pour lequel je pense que l'aide d'un guru du
noyau Linux pourrait m'être utile... Il s'agit d'un warning un peu
inquiétant que j'ai rencontré en bootant Linux 6.5 sur un système
embarqué. Le système marche, donc ça n'a pas l'air critique, mais
j'aimerais savoir si je dois quand-même m'inquiéter et, le cas échéant,
comment gérer ça.

Pour le contexte, j'ai un SoM Acme Acqua[1] qui marche bien avec
Buildroot 2023.08[2]. J'ai voulu tester le dernier noyau stable sur
cette carte et j'ai vu, vers le début du boot, ce message :

    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 0 at init/main.c:992 start_kernel+0x458/0x564
    Interrupts were enabled early
    CPU: 0 PID: 0 Comm: swapper Not tainted 6.5.2 #1
    Hardware name: Atmel SAMA5
     unwind_backtrace from show_stack+0x10/0x14
     show_stack from dump_stack_lvl+0x24/0x2c
     dump_stack_lvl from __warn+0x84/0xc4
     __warn from warn_slowpath_fmt+0x98/0xc8
     warn_slowpath_fmt from start_kernel+0x458/0x564
     start_kernel from 0x0
    ---[ end trace 0000000000000000 ]---


Je trouve ça inquiétant car voir un backtrace au boot n'est pas banal.
De plus, le commit du noyau qui permet à ce message d'être affiché
semble impliquer que la situation est à peu près aussi problématique
qu'un meurtre sanguinaire[3] :

    init: scream bloody murder if interrupts are enabled too early


Le problème ne semble pas spécifique à cette carte: je peux reproduire
le message avec un système virtuel basé sur qemu :

    wget https://buildroot.org/downloads/buildroot-2023.08.tar.xz
    tar -xJf buildroot-2023.08.tar.xz
    cd buildroot-2023.08
    sed -Ei -e 's/(LINUX_HEADERS_CUSTOM)_6_1=y/\1_6_5=y/' \
        -e 's/(KERNEL_CUSTOM_VERSION_VALUE)="6.1.26"/\1="6.5.3"/' \
        -e 's|(KERNEL_INTREE_DTS_NAME)="(versatile-pb)"|\1="arm/\2"|' \
        configs/qemu_arm_versatile_defconfig
    make qemu_arm_versatile_defconfig
    make
    output/images/start-qemu.sh --serial-only # arrêter avec Ctrl-a x


J'ai essayé un `git bisect` sur le noyau, et ça me dit que le coupable
est le commit cfeb6ae8bcb9[4], introduit entre v6.5-rc7 et v6.5 :

    maple_tree: disable mas_wr_append() when other readers are possible


Bizarrement, ça ne semble avoir aucun rapport avec les interruptions...

Questions :

1. Est-ce aussi inquiétant que ça en a l'air ?
2. Ai-je découvert un bogue du noyau ?
3. Le cas échéant, quel est le canal approprié pour le faire remonter ?

Merci à ceux qui m'ont lu jusqu'ici !

Edgar.

[1] https://www.acmesystems.it/acqua
[2] https://buildroot.org/
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f91eb62f71b3
[4] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cfeb6ae8bcb9