diff options
author | Robert Mustacchi <rm@joyent.com> | 2011-06-08 11:19:20 -0700 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2011-06-08 11:19:20 -0700 |
commit | 61fb51467810d037ab9be3080770923c3031998e (patch) | |
tree | 518e052f0f113fe4cc5da208a2a0aade5c52fda4 /kvm_lapic.c | |
parent | 3501ff7dbc891580ff7b1bf79a8b5c7eeb16dd30 (diff) | |
download | illumos-kvm-61fb51467810d037ab9be3080770923c3031998e.tar.gz |
HVM-332 XXX Triage in kvm_lapic.c
Diffstat (limited to 'kvm_lapic.c')
-rw-r--r-- | kvm_lapic.c | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/kvm_lapic.c b/kvm_lapic.c index 1c81a4b..3c7703f 100644 --- a/kvm_lapic.c +++ b/kvm_lapic.c @@ -19,6 +19,7 @@ * Copyright 2011 Joyent, Inc. All rights reserved. */ #include <sys/types.h> +#include <sys/atmoc.h> #include "kvm_bitops.h" #include "msr.h" @@ -743,12 +744,8 @@ apic_manage_nmi_watchdog(struct kvm_lapic *apic, uint32_t lvt0_val) int nmi_wd_enabled = apic_lvt_nmi_mode(apic_get_reg(apic, APIC_LVT0)); if (apic_lvt_nmi_mode(lvt0_val)) { - if (!nmi_wd_enabled) { - /* XXX - debug */ - cmn_err(CE_NOTE, "Receive NMI setting on APIC_LVT0 " - "for cpu %d\n", apic->vcpu->vcpu_id); + if (!nmi_wd_enabled) apic->vcpu->kvm->arch.vapics_in_nmi_mode++; - } } else if (nmi_wd_enabled) apic->vcpu->kvm->arch.vapics_in_nmi_mode--; } @@ -806,7 +803,6 @@ apic_reg_write(struct kvm_lapic *apic, uint32_t reg, uint32_t val) apic_set_reg(apic, APIC_LVTT + 0x10 * i, lvt_val | APIC_LVT_MASKED); } - /* XXX pending needs protection? */ apic->lapic_timer.pending = 0; } break; @@ -1015,12 +1011,8 @@ kvm_lapic_reset(struct kvm_vcpu *vcpu) } apic->irr_pending = 0; update_divide_count(apic); -#ifdef XXX - atomic_set(&apic->lapic_timer.pending, 0); -#else apic->lapic_timer.pending = 0; - XXX_KVM_PROBE; -#endif + if (kvm_vcpu_is_bsp(vcpu)) vcpu->arch.apic_base |= MSR_IA32_APICBASE_BSP; apic_update_ppr(apic); @@ -1061,14 +1053,8 @@ apic_has_pending_timer(struct kvm_vcpu *vcpu) { struct kvm_lapic *lapic = vcpu->arch.apic; -#ifdef XXX - if (lapic && apic_enabled(lapic) && apic_lvt_enabled(lapic, APIC_LVTT)) - return (atomic_read(&lapic->lapic_timer.pending)); -#else - XXX_KVM_SYNC_PROBE; if (lapic && apic_enabled(lapic) && apic_lvt_enabled(lapic, APIC_LVTT)) return (lapic->lapic_timer.pending); -#endif return (0); } @@ -1187,18 +1173,10 @@ kvm_inject_apic_timer_irqs(struct kvm_vcpu *vcpu) { struct kvm_lapic *apic = vcpu->arch.apic; -#ifdef XXX - if (apic && atomic_read(&apic->lapic_timer.pending) > 0) { - if (kvm_apic_local_deliver(apic, APIC_LVTT)) - atomic_dec(&apic->lapic_timer.pending); - } -#else - XXX_KVM_SYNC_PROBE; if (apic && apic->lapic_timer.pending > 0) { if (kvm_apic_local_deliver(apic, APIC_LVTT)) atomic_dec_32(&apic->lapic_timer.pending); } -#endif } int @@ -1264,11 +1242,6 @@ kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) data = *(uint32_t *)((uintptr_t)vapic + offset_in_page(vcpu->arch.apic->vapic_addr)); -#ifdef XXX - kunmap_atomic(vapic, KM_USER0); -#else - XXX_KVM_PROBE; -#endif apic_set_tpr(vcpu->arch.apic, data & 0xff); } @@ -1298,11 +1271,6 @@ kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu) *(uint32_t *)((uintptr_t)vapic + offset_in_page(vcpu->arch.apic->vapic_addr)) = data; -#ifdef XXX - kunmap_atomic(vapic, KM_USER0); -#else - XXX_KVM_PROBE; -#endif } int |