web-dev-qa-db-fra.com

Comprendre le message du noyau "serial8250: trop de travail pour irq4"

dmesg montre beaucoup de messages de serial8250:

$ dmesg | grep -i serial
[    0.884481] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    6.584431] systemd[1]: Created slice system-serial\x2dgetty.slice.
[633232.317222] serial8250: too much work for irq4
[633232.453355] serial8250: too much work for irq4
[633248.378343] serial8250: too much work for irq4
...

Je n'ai jamais vu ce message auparavant. Qu'est-ce que cela signifie généralement? Devrais-je m'inquiéter?

(D'après mes recherches, ce n'est pas spécifique à la distribution, mais si c'est pertinent, je vois les messages sur une instance EC2 exécutant Ubuntu 16.04.)

17
Philipp Claßen

Il n'y a rien de mal avec vos pilotes de noyau ou de périphérique. Le problème vient du matériel de votre machine. Le problème est que c'est du matériel impossible.

Il s'agit d'une erreur dans plusieurs plates-formes de virtualisation (y compris au moins XEN, QEMU et VirtualBox) qui tourmentent les gens depuis au moins une décennie. Le problème est que le matériel UART qui est émulé par diverses marques de machine virtuelle se comporte de manière incroyable, envoyant des caractères à une vitesse de ligne incroyablement rapide. Pour le noyau, cela ne se distingue pas d'un défaut réel UART matériel qui déclenche continuellement une interruption pour un tampon de sortie vide/tampon d'entrée plein. (De tels matériels réels défectueux existent, et vous trouverez également des personnes Linux embarquées discutant également de ce sujet). problème ici et là.) Le noyau pousse les données/extrait les données, et le UART déclenche immédiatement une interruption en disant qu'il est prêt pour plus.

H. Peter Anvin a fourni un correctif pour corriger QEMU en 2008. Vous devrez demander à Amazon quand EC2 va rattraper son retard.

Lectures complémentaires

21
JdeBP

Juste pour ajouter un point de données à l'appui de JdeBP : je l'ai vu dans mes machines virtuelles XEN, et je ne l'ai vu que lorsque j'exécute dmesg. Je suppose que lorsque j'exécute dmesg, je surcharge le UART (et manifeste le bogue décrit ci-dessus) virtuel, car dmesg crache tout un tas de choses à la fois. Dans tous les cas, ce n'est pas un problème pour moi, juste un hareng rouge.

2
pdelong