Informe Técnico: Conflicto de Direccionamiento PCIe e IOMMU
- Fecha:
2026-04-26
- Host:
dev.raulvilchez.org
- Dispositivo Afectado:
NVMe Samsung SM961 (OS/Journal)
- Hardware Causante:
QNAP Dual-Port 2.5GbE (Intel I225-LM)
- Estado Final:
Estabilizado mediante Downgrade a TX-201
Contexto del Problema
Tras la instalación de una tarjeta de red QNAP de doble puerto, el sistema comenzó a experimentar corrupciones críticas en el Journal de systemd. El síntoma principal era la imposibilidad de escribir logs y el fallo de integridad del sistema de archivos, coincidiendo con la reserva de 16 GB de RAM en Hugepages.
Comandos de Diagnóstico y Mitigación
Para estabilizar y diagnosticar el sistema, se emplearon los siguientes comandos:
Verificación de Integridad:
journalctl --verify journalctl -p 3..0 -xb
Gestión de Configuración del Kernel (grubby):
# Desactivación de Hugepages y forzado de reasignación PCIe grubby --update-kernel=ALL --args="pci=realloc,assign-busses hugepages=0 nomodeset" # Intento de aislamiento de grupos IOMMU grubby --update-kernel=ALL --args="pcie_acs_override=downstream,multifunction,all"
Análisis de Topología de Bus y Grupos IOMMU:
# Identificar en qué dirección (Bus ID) ha quedado lspci -nn | grep -i "QNAP\|Ethernet\|Network" # Localización de BARs por encima de 4GB lspci -vv | grep -i "Region.*Memory at [0-9a-f]\{9,\}" # Mapeo de grupos IOMMU por dispositivo for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU Group %s ' "$n"; lspci -nns "${d##*/}"; done
Conclusiones Técnicas
El análisis reveló un conflicto de hardware insalvable en el Grupo IOMMU 16.
Hacinamiento del Bus: El slot PCIe utilizado cuelga de un switch ASMedia (Chipset) que agrupa en la misma unidad atómica de IOMMU al NVMe de sistema, la controladora Realtek integrada y la tarjeta QNAP.
Conflicto MMIO: La tarjeta QNAP dual-port reclama ventanas de direcciones (BARs) extensas. Al activarse los 16 GB de Hugepages, el mapa de memoria se satura, provocando que las transacciones DMA de la red “pisen” el espacio de memoria reservado para el controlador del NVMe.
Fallo de Aislamiento: A pesar de aplicar
pcie_acs_override=all, el hardware no permite el divorcio lógico de estos dispositivos, lo que garantiza que cualquier error de bus en la red corrompa el flujo de datos del disco.
Justificación del Downgrade a TX-201
Se ha determinado que la vuelta a la tarjeta TX-201 (Single Port) es la única vía para mantener los requisitos de rendimiento de la estación:
Estabilidad del Journal: La TX-201 posee una huella MMIO significativamente menor, reduciendo la probabilidad de colisión en el Grupo 16.
Prioridad de Virtualización: Permite mantener los 8192 Hugepages (2M) necesarios para
libvirtsin comprometer la integridad del sistema de archivos.Seguridad de Datos: Las pruebas con la TX-201 devuelven un estado de
PASSconstante en el Journal, confirmando que la convivencia en el bus es posible con una carga de registros reducida.
Estado Actual
El sistema opera con la TX-201, con el stack de baja latencia activo y los parámetros de diagnóstico (nomodeset, pci=realloc) retirados, recuperando la funcionalidad completa de la GPU y el entorno gráfico.