28.07.2021 00:09, Paolo Bonzini пишет:
Once an exception has been injected, any side effects related to the exception (such as setting CR2 or DR6) have been taked place. Therefore, once KVM sets the VM-entry interruption information field or the AMD EVENTINJ field, the next VM-entry must deliver that exception.
Pending interrupts are processed after injected exceptions, so in theory it would not be a problem to use KVM_INTERRUPT when an injected exception is present. However, DOSEMU is using run->ready_for_interrupt_injection to detect interrupt windows and then using KVM_SET_SREGS/KVM_SET_REGS to inject the interrupt manually. For this to work, the interrupt window must be delayed after the completion of the previous event injection.
Cc: stable@vger.kernel.org Reported-by: Stas Sergeev stsp2@yandex.ru Tested-by: Stas Sergeev stsp2@yandex.ru
Acked-by: stsp2@yandex.ru