Pasar al contenido

IOMMU

Referencia de arquitecturaFeex

Una IOMMU traduce y restringe los accesos a la memoria originados por dispositivos. Su comportamiento de protección y de paso directo (passthrough) depende de la topología de la plataforma, el firmware, el SO y la configuración de los controladores.

Lo que necesita saber

Una IOMMU traduce y restringe los accesos a la memoria originados por dispositivos. Su comportamiento de protección y de paso directo (passthrough) depende de la topología de la plataforma, el firmware, el SO y la configuración de los controladores.

Cómo funciona

Un dispositivo emite transacciones DMA empleando direcciones interpretadas por una unidad de traducción de E/S. El SO o el hipervisor configuran dominios y asignaciones que asocian esas solicitudes con la memoria permitida del sistema. Las identidades de los dispositivos, los límites de traducción compartidos y el tratamiento de interrupciones afectan al aislamiento práctico.

Dónde resulta útil

Una VM puede recibir un dispositivo admitido mediante un marco de trabajo que aplique su grupo de aislamiento de IOMMU. Los dispositivos que comparten un grupo pueden requerir asignarse juntos porque la plataforma no puede establecer un aislamiento independiente en el límite deseado.

Cómo comprobar la compatibilidad y la habilitación

Inspeccione la descripción de la IOMMU de la plataforma y el estado habilitado, los grupos y los requisitos de asignación de dispositivos del SO/hipervisor. En Intel, examine VT-d; en AMD, utilice las funciones documentadas de virtualización de E/S de AMD. Compruebe el comportamiento exacto de restablecimiento y de los controladores del dispositivo.

Un despliegue virtualizado consta de varios niveles: capacidad física, permisos del firmware, hipervisor anfitrión activo, capacidades expuestas al huésped y compatibilidad con el sistema operativo huésped. Compruebe el nivel donde se ejecuta realmente la operación, incluida la virtualización anidada cuando corresponda.

Lo que la función no establece

Un indicador de IOMMU no demuestra que cada periférico esté aislado de forma independiente ni que la protección esté activa. Las protecciones de las tablas de páginas de la CPU por sí solas no limitan todo el DMA del dispositivo. Las anulaciones de topología no admitidas pueden debilitar el aislamiento y no constituyen una solución rutinaria de compatibilidad.

Compatibilidad y rendimiento en la práctica

La ejecución de la CPU, la traducción de memoria del huésped y la reasignación DMA de dispositivos son mecanismos independientes. No deduzca el passthrough o el aislamiento a partir de un único campo de virtualización. Utilice las herramientas de diagnóstico compatibles del hipervisor y los requisitos exactos de la plataforma/dispositivo.

Lista de comprobación práctica para la verificación

  1. Registre el modelo exacto de procesador o plataforma, así como las versiones de la aplicación, el sistema operativo y el entorno de ejecución involucrados. Conserve la redacción del error o requisito real.
  2. Consulte la referencia del fabricante para ese modelo exacto y, a continuación, inspeccione la capacidad efectiva y el estado habilitado en el entorno donde se ejecuta el programa.
  3. Compare cada requisito del binario o backend seleccionado. Una función con nombre similar, un alias o una etiqueta de tecnología general no son suficientes.
  4. Confirme que la aplicación haya seleccionado la implementación prevista. Utilice sus diagnósticos documentados y una alternativa compatible cuando no se cumplan los requisitos.
  5. Realice un cambio admitido a la vez y repita la misma carga de trabajo. Mantenga disponibles la configuración original y la vía de recuperación.

Si la función aparece listada pero el software no puede usarla

Comience con el componente exacto que falla. Una base de datos de hardware describe la capacidad registrada; el sistema operativo o el hipervisor pueden exponer un entorno efectivo diferente. Un error de instrucción no válida también requiere investigar la instrucción que generó el fallo y la compilación del binario en sí, ya que la corrupción o una instrucción no compatible no relacionada pueden producir un síntoma similar.

Instale la versión de la aplicación, controlador o entorno de ejecución compatible con la plataforma exacta, y utilice la compilación de referencia o de contingencia documentada por el fabricante si es necesario. Una actualización de software no puede crear una instrucción de la que el procesador carece. Los cambios de firmware y directivas de seguridad deben seguir el procedimiento del fabricante del sistema y un plan de recuperación, en lugar de una fórmula de optimización genérica.

Fuentes y alcance de esta explicación

Intel Virtualization Technology for Directed I/O Architecture Specification · Kernel de Linux: acceso a dispositivos mediante VFIO y grupos de IOMMU

Estas referencias establecen el comportamiento arquitectónico y los requisitos de software. No verifican de forma independiente cada valor de función en la página de un modelo de hardware vinculado. Para conocer la compatibilidad de un modelo, consulte las pruebas del fabricante en dicha página y compruebe la configuración efectiva del sistema. Este artículo no proporciona una prueba de rendimiento, certificación ni fecha de revisión independiente.

Fuentes y verificación

Titularidad editorial: Feex. No se registra ninguna fecha de revisión independiente. Cómo investigamos.

¿Fue útil este artículo?

Un sí o un no es suficiente. Elija un motivo si lo desea o agregue una breve nota.

¿Fue útil este artículo?