diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2008-10-20 10:20:03 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-12-31 15:51:47 +0100 |
commit | cc6e462cd54e64858ea25816df87d033229efe56 (patch) | |
tree | 3f34b8be2ec3eb63e06c223b1d75d7068a717318 /arch/x86/kvm/i8254.c | |
parent | KVM: x86: Fix and refactor NMI watchdog emulation (diff) | |
download | linux-cc6e462cd54e64858ea25816df87d033229efe56.tar.xz linux-cc6e462cd54e64858ea25816df87d033229efe56.zip |
KVM: x86: Optimize NMI watchdog delivery
As suggested by Avi, this patch introduces a counter of VCPUs that have
LVT0 set to NMI mode. Only if the counter > 0, we push the PIT ticks via
all LAPIC LVT0 lines to enable NMI watchdog support.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/i8254.c')
-rw-r--r-- | arch/x86/kvm/i8254.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index b6fcf5a9e502..e665d1c623ca 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c @@ -620,11 +620,12 @@ static void __inject_pit_timer_intr(struct kvm *kvm) * LVT0 to NMI delivery. Other PIC interrupts are just sent to * VCPU0, and only if its LVT0 is in EXTINT mode. */ - for (i = 0; i < KVM_MAX_VCPUS; ++i) { - vcpu = kvm->vcpus[i]; - if (vcpu) - kvm_apic_nmi_wd_deliver(vcpu); - } + if (kvm->arch.vapics_in_nmi_mode > 0) + for (i = 0; i < KVM_MAX_VCPUS; ++i) { + vcpu = kvm->vcpus[i]; + if (vcpu) + kvm_apic_nmi_wd_deliver(vcpu); + } } void kvm_inject_pit_timer_irqs(struct kvm_vcpu *vcpu) |