Reinicios aleatorios en Linux: cómo el DPC mató mi sistema de archivos
El sistema reiniciaba sin previo aviso, sin kernel panic visible, sin patrón claro de horario ni carga.
Después de analizar kern.log, syslog y la salida de lspci -vvv,
encontramos la causa raíz.
El culpable: PCIe AER + DPC con Trigger:1
El SSD NVMe ADATA Falcon usa un controlador Realtek 10ec:5763, conocido por generar
errores corregibles de capa física (RxErr) durante transiciones de estado de energía
(ASPM). Estos errores aparecen en el log así:
pcieport 0000:00:1d.0: AER: Corrected error message received pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID) pcieport 0000:00:1d.0: [ 0] RxErr
El problema real no es el error en sí — es que el puerto PCIe tenía DPC (Downstream Port Containment)
configurado con Trigger:1:
DpcCtl: Trigger:1 Cmpl- INT+ ErrCor- ...
Con Trigger:1, el DPC se dispara ante cualquier error corregible.
Al dispararse, desconecta el puerto PCIe — y con él, el NVMe donde vive el sistema de archivos raíz.
El kernel pierde / en pleno vuelo: reinicio inmediato, sin log, sin aviso.
Datos del SMART que confunden (pero no mienten)
| Campo | Valor | Interpretación |
|---|---|---|
| media_errors | 0 | El SSD físicamente está sano |
| num_err_log_entries | 871 | Entradas de log, NO errores reales |
| unsafe_shutdowns | 260 / 2554 ciclos | 1 de cada 10 apagados fue abrupto — síntoma, no causa |
| percentage_used | 1% | SSD prácticamente nuevo en desgaste |
num_err_log_entries es el contador de entradas del log NVMe, no un contador de errores reales.
El nvme error-log mostraba todas las entradas en SUCCESS.
La solución
Deshabilitar ASPM en el bus PCIe evita que el controlador Realtek entre en estados de bajo consumo y genere los RxErr al despertar:
# 1. Editar GRUB sudo nano /etc/default/grub # Modificar esta línea: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=0 pcie_aspm=off" # 2. Aplicar y reiniciar sudo update-grub && sudo reboot
Verificar que no haya más errores tras el reinicio:
sudo journalctl -b -k | grep -i "RxErr\|AER.*Corrected\|DPC.*Trigger"
Diagnóstico rápido para el mismo problema
Si tu sistema reinicia aleatoriamente sin kernel panic visible, verificá:
# ¿Hay RxErr en el kernel actual? sudo journalctl -b -k | grep -i "RxErr\|AER.*Corrected" # ¿El DPC está en Trigger:1? sudo lspci -vvv -s 00:1d.0 | grep "DpcCtl" # ¿Qué controlador NVMe tenés? sudo lspci -n | grep "0108"
Hardware: AORUS (Gigabyte) · Intel Comet Lake (10th gen) · ADATA Falcon 512GB (Realtek 10ec:5763) · Linux Mint · Kernel 5.15.0-174
No hay comentarios:
Publicar un comentario