kvm: x86: Catch and report failing IRQ and NMI injections
We do not need to abort, but the user should be notified that weird things go on. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
7a39fe5882
commit
ce377af399
@ -1442,11 +1442,17 @@ int kvm_arch_get_registers(CPUState *env)
|
||||
|
||||
void kvm_arch_pre_run(CPUState *env, struct kvm_run *run)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Inject NMI */
|
||||
if (env->interrupt_request & CPU_INTERRUPT_NMI) {
|
||||
env->interrupt_request &= ~CPU_INTERRUPT_NMI;
|
||||
DPRINTF("injected NMI\n");
|
||||
kvm_vcpu_ioctl(env, KVM_NMI);
|
||||
ret = kvm_vcpu_ioctl(env, KVM_NMI);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n",
|
||||
strerror(-ret));
|
||||
}
|
||||
}
|
||||
|
||||
if (!kvm_irqchip_in_kernel()) {
|
||||
@ -1467,9 +1473,13 @@ void kvm_arch_pre_run(CPUState *env, struct kvm_run *run)
|
||||
struct kvm_interrupt intr;
|
||||
|
||||
intr.irq = irq;
|
||||
/* FIXME: errors */
|
||||
DPRINTF("injected interrupt %d\n", irq);
|
||||
kvm_vcpu_ioctl(env, KVM_INTERRUPT, &intr);
|
||||
ret = kvm_vcpu_ioctl(env, KVM_INTERRUPT, &intr);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr,
|
||||
"KVM: injection failed, interrupt lost (%s)\n",
|
||||
strerror(-ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user