En la Documentación de kvm, esto es lo que se informa sobre cuándo se puede inyectar el interupt virtual. Aquí está el enlace http://os1a.cs.columbia.edu/lxr/source/Documentation/kvm/api.txt
mirada en la línea número 905.
La estructura struct kvm_run creo que da el control a la aplicación de cómo se hace la cscope behave.Use VM y la búsqueda de la request_interrupt_window cadena en el código fuente, comprenderán cómo el kvm ve cuándo ingresar al invitado para inyectar un interupt. También revisa el archivo api.txt, es muy útil.
Saludos
EDITADO
aquí está, un ejemplo del huésped inyectando interupts en el invitado.
Supongamos que hubo un error de página en el invitado de MV
- esto provoca una VMEXIT
- hipervisor/KVM se encarga de la VMEXIT
- Su ve la razón de VMEXIT través de la estructura de control VMCS y encontrar que no había error de página
- El anfitrión/KVM es responsable de la virtualización de la memoria, por lo que comprobar para ver si el error de página fue causado
- debido a que la página no se asignó a los huéspedes en cuyo caso se llama alloc_page en el núcleo de la máquina y hace un VMENTRY para reanudar la ejecución INVITADA.
- O el sistema operativo INVITADO quitó la asignación, en este caso el KVM utiliza una estructura de control VMCS como medio de comunicación inyecta un interupt virtual no 14 que hace que el núcleo INVITADO maneje el error de página.
Este es un ejemplo del huésped insertar interupt virtual. Por supuesto, hay muchas otras formas/razones para hacerlo.
De hecho, puede configurar el VMCS para hacer que el invitado haga una VMEXIT después de ejecutar CADA INSTRUCCIÓN esto se puede hacer utilizando la BANDEJA DE TRAMPA DE MONITOR.