# Post-mortem : freeze hard d'un nœud Proxmox AM5 — diagnostic et mitigation ## TL;DR Un nœud Proxmox/Ceph monté sur ASUS TUF X670E-Plus (Ryzen AM5) gelait sans trace, sans panic, sans rien dans les logs — reset manuel obligatoire. Cause : bug C-states profonds bien documenté sur AM5 sous Linux. Mitigation immédiate via `processor.max_cstate=2` au cmdline kernel. Correction durable : flash BIOS vers une AGESA récente. Bonus : découverte d'une install Proxmox EFI avec `grub-pc` à la place de `grub-efi-amd64` — silencieusement bancale depuis l'origine. ## Contexte - **Cluster** : 3 nœuds Proxmox/Ceph (gandalf, asgard, vishnu) - **Nœud problématique** : vishnu — ASUS TUF Gaming X670E-Plus WiFi, BIOS 3602, AMD Raphael/Granite Ridge, kernel `6.8.12-20-pve` - **Particularité** : seul nœud avec passthrough USB (stick FTDI 0403:6015 vers VM Home Assistant) - **Storage local** : 1 OSD HDD 9.1 TiB (LUKS), 1 OSD NVMe 1.8 TiB, NVMe 100 GiB pour DB - **Symptôme** : freeze hard récurrent, écran figé, plus aucune réponse réseau ni console, reset hardware obligatoire ## Symptômes — ce qui rend le cas difficile Le tableau clinique éliminait d'emblée plusieurs pistes classiques : - Aucun kernel panic à l'écran ou en pstore → pas de panic propre - Aucun message dans `journalctl -k -b -1 | tail -100` avant la coupure → kernel n'a pas eu le temps d'écrire - Le softdog watchdog présent (`soft_margin=60`) n'a jamais déclenché de reboot automatique → pas un soft lockup détectable - Pas de redémarrage seul, intervention manuelle obligatoire - HEALTH_WARN Ceph avec slow ops BlueStore — mais sur osd.4 et osd.5 (situés sur les **autres** nœuds), pas sur osd.3 (vishnu). Donc Ceph subissait le freeze, n'en était pas la cause. Bref : machine qui meurt instantanément, sans signal préalable. C'est le profil typique d'un blocage hardware ou d'un deadlock kernel total où plus aucune IRQ ne remonte. ## Hypothèses écartées en cours de diag | Hypothèse | Pourquoi écartée | |-----------|------------------| | Disque OSD mourant (slow ops BlueStore) | Slow ops sur OSD distants, pas sur celui de vishnu — symptôme, pas cause | | Quorum corosync perdu | Logs corosync sains, quorum stable, MTU PMTUD négocié à 1397 | | OOM / pression mémoire | Aucun message OOM dans les logs | | MCE matérielle | Aucune entrée MCE décodée par le kernel | | Bug VFIO / IOMMU groups sales | Vérifié — pas de PCI passthrough actif (uniquement USB par vendor:product) | ## L'indice qui a tout débloqué Trois faits convergents : 1. **Hardware AM5 récent** (Ryzen 7000/9000 sur X670E) 2. **Cmdline kernel nu** : `BOOT_IMAGE=/boot/vmlinuz-6.8.12-20-pve root=/dev/mapper/pve-root ro quiet` — aucune mitigation, aucun paramètre IOMMU, aucun ajustement idle 3. **Profil de freeze** : hard hang sans trace, propre à un seul nœud Cette combinaison correspond à un bug largement documenté de l'écosystème AM5 sous Linux : sous certaines conditions de charge, le CPU descend dans un état d'idle profond (C3/C6) duquel il ne se réveille pas correctement à l'arrivée d'une IRQ. Le core est physiquement gelé — pas de fenêtre pour écrire un panic, pour qu'un watchdog software se déclenche, ou pour que la console réagisse. C'est exactement ce que vishnu manifestait. ## La mitigation appliquée ### 1. Modification du cmdline kernel ```bash # Backup cp /etc/default/grub /etc/default/grub.bak.$(date +%Y%m%d) # Édition sed -i 's|^GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt processor.max_cstate=2"|' /etc/default/grub ``` Trois paramètres : - `processor.max_cstate=2` — la mitigation principale, bloque l'accès aux C-states ≥ C3 - `amd_iommu=on iommu=pt` — passage du mode DMA "Translated lazy" (défaut) au mode passthrough optimisé, recommandé dès qu'il y a virtualisation ### 2. Filets de sécurité pour les prochaines fois ```bash cat > /etc/sysctl.d/99-debug-freeze.conf </dev/null ls -la /boot/efi/EFI/ # Boot du dernier crash journalctl -k -b -1 | tail -100 journalctl -b -1 -p err ``` ## Références utiles - Proxmox Wiki — PCI(e) Passthrough : https://pve.proxmox.com/wiki/PCI(e)_Passthrough - Proxmox Wiki — Host Bootloader : https://pve.proxmox.com/wiki/Host_Bootloader - AMD AGESA changelog (par modèle de carte mère, sur le site du fabricant) — vérifier régulièrement les mentions "stability" --- *Post-mortem rédigé suite à un diagnostic du 29 avril 2026. Hardware : ASUS TUF Gaming X670E-Plus WiFi, BIOS 3602. Stack : Proxmox VE 8 / kernel 6.8.12-20-pve / Ceph Quincy.*