inappropriate x86 IOMMU timeout detection / handling IOMMUs process commands issued to them in parallel with the operation of the CPU(s) issuing such commands. In the current implementation in Xen, asynchronous notification of the completion of such commands is not used. Instead, the issuing CPU spin-waits for the completion of the most recently issued command(s). Some of these waiting loops try to apply a timeout to fail overly-slow commands. The course of action upon a perceived timeout actually being detected is inappropriate: - on Intel hardware guests which did not originally cause the timeout may be marked as crashed, - on AMD hardware higher layer callers would not be notified of the issue, making them continue as if the IOMMU operation succeeded.
Una detección/manipulación inapropiada del tiempo de espera de la IOMMU x86 Las IOMMUs procesan los comandos emitidos a ellas en paralelo con la operación de la(s) CPU(s) que emiten dichos comandos. En la implementación actual en Xen, la notificación asíncrona de la finalización de dichos comandos no es usada. En su lugar, la CPU emisora espera la finalización de la(s) última(s) orden(es) emitida(s). Algunos de estos bucles de espera intentan aplicar un tiempo de espera para crear un fallo en los comandos demasiado lentos. El curso de acción cuando se detecta un tiempo de espera es inapropiado: - en el hardware de Intel los huéspedes que no causaron originalmente el tiempo de espera pueden ser marcados como bloqueados, - en el hardware de AMD los llamadores de la capa superior no serían notificados del problema, haciéndolos continuar como si la operación de IOMMU tuviera éxito