mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 03:59:52 +00:00
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)
|
void kvm_arch_pre_run(CPUState *env, struct kvm_run *run)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Inject NMI */
|
/* Inject NMI */
|
||||||
if (env->interrupt_request & CPU_INTERRUPT_NMI) {
|
if (env->interrupt_request & CPU_INTERRUPT_NMI) {
|
||||||
env->interrupt_request &= ~CPU_INTERRUPT_NMI;
|
env->interrupt_request &= ~CPU_INTERRUPT_NMI;
|
||||||
DPRINTF("injected NMI\n");
|
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()) {
|
if (!kvm_irqchip_in_kernel()) {
|
||||||
@ -1467,9 +1473,13 @@ void kvm_arch_pre_run(CPUState *env, struct kvm_run *run)
|
|||||||
struct kvm_interrupt intr;
|
struct kvm_interrupt intr;
|
||||||
|
|
||||||
intr.irq = irq;
|
intr.irq = irq;
|
||||||
/* FIXME: errors */
|
|
||||||
DPRINTF("injected interrupt %d\n", irq);
|
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