Loading arch/ia64/kvm/kvm-ia64.c +13 −13 Original line number Original line Diff line number Diff line Loading @@ -340,7 +340,7 @@ static int handle_ipi(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) regs->cr_iip = vcpu->kvm->arch.rdv_sal_data.boot_ip; regs->cr_iip = vcpu->kvm->arch.rdv_sal_data.boot_ip; regs->r1 = vcpu->kvm->arch.rdv_sal_data.boot_gp; regs->r1 = vcpu->kvm->arch.rdv_sal_data.boot_gp; target_vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; target_vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&target_vcpu->wq)) if (waitqueue_active(&target_vcpu->wq)) wake_up_interruptible(&target_vcpu->wq); wake_up_interruptible(&target_vcpu->wq); } else { } else { Loading Loading @@ -386,7 +386,7 @@ static int handle_global_purge(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) for (i = 0; i < KVM_MAX_VCPUS; i++) { for (i = 0; i < KVM_MAX_VCPUS; i++) { if (!kvm->vcpus[i] || kvm->vcpus[i]->arch.mp_state == if (!kvm->vcpus[i] || kvm->vcpus[i]->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED || KVM_MP_STATE_UNINITIALIZED || vcpu == kvm->vcpus[i]) vcpu == kvm->vcpus[i]) continue; continue; Loading Loading @@ -437,12 +437,12 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu) hrtimer_start(p_ht, kt, HRTIMER_MODE_ABS); hrtimer_start(p_ht, kt, HRTIMER_MODE_ABS); if (irqchip_in_kernel(vcpu->kvm)) { if (irqchip_in_kernel(vcpu->kvm)) { vcpu->arch.mp_state = VCPU_MP_STATE_HALTED; vcpu->arch.mp_state = KVM_MP_STATE_HALTED; kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); hrtimer_cancel(p_ht); hrtimer_cancel(p_ht); vcpu->arch.ht_active = 0; vcpu->arch.ht_active = 0; if (vcpu->arch.mp_state != VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state != KVM_MP_STATE_RUNNABLE) return -EINTR; return -EINTR; return 1; return 1; } else { } else { Loading Loading @@ -668,7 +668,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) vcpu_load(vcpu); vcpu_load(vcpu); if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) { kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); vcpu_put(vcpu); vcpu_put(vcpu); return -EAGAIN; return -EAGAIN; Loading Loading @@ -1127,12 +1127,12 @@ static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data) wait_queue_head_t *q; wait_queue_head_t *q; vcpu = container_of(data, struct kvm_vcpu, arch.hlt_timer); vcpu = container_of(data, struct kvm_vcpu, arch.hlt_timer); if (vcpu->arch.mp_state != VCPU_MP_STATE_HALTED) if (vcpu->arch.mp_state != KVM_MP_STATE_HALTED) goto out; goto out; q = &vcpu->wq; q = &vcpu->wq; if (waitqueue_active(q)) { if (waitqueue_active(q)) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(q); wake_up_interruptible(q); } } out: out: Loading @@ -1159,7 +1159,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) return PTR_ERR(vmm_vcpu); return PTR_ERR(vmm_vcpu); if (vcpu->vcpu_id == 0) { if (vcpu->vcpu_id == 0) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; /*Set entry address for first run.*/ /*Set entry address for first run.*/ regs->cr_iip = PALE_RESET_ENTRY; regs->cr_iip = PALE_RESET_ENTRY; Loading @@ -1172,7 +1172,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) v->arch.last_itc = 0; v->arch.last_itc = 0; } } } else } else vcpu->arch.mp_state = VCPU_MP_STATE_UNINITIALIZED; vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED; r = -ENOMEM; r = -ENOMEM; vcpu->arch.apic = kzalloc(sizeof(struct kvm_lapic), GFP_KERNEL); vcpu->arch.apic = kzalloc(sizeof(struct kvm_lapic), GFP_KERNEL); Loading Loading @@ -1704,10 +1704,10 @@ int kvm_apic_set_irq(struct kvm_vcpu *vcpu, u8 vec, u8 trig) if (!test_and_set_bit(vec, &vpd->irr[0])) { if (!test_and_set_bit(vec, &vpd->irr[0])) { vcpu->arch.irq_new_pending = 1; vcpu->arch.irq_new_pending = 1; if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); else if (vcpu->arch.mp_state == VCPU_MP_STATE_HALTED) { else if (vcpu->arch.mp_state == KVM_MP_STATE_HALTED) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading Loading @@ -1790,5 +1790,5 @@ gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) { { return vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE; return vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE; } } arch/x86/kvm/i8254.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -202,7 +202,7 @@ int __pit_timer_fn(struct kvm_kpit_state *ps) smp_mb__after_atomic_inc(); smp_mb__after_atomic_inc(); /* FIXME: handle case where the guest is in guest mode */ /* FIXME: handle case where the guest is in guest mode */ if (vcpu0 && waitqueue_active(&vcpu0->wq)) { if (vcpu0 && waitqueue_active(&vcpu0->wq)) { vcpu0->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu0->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(&vcpu0->wq); wake_up_interruptible(&vcpu0->wq); } } Loading arch/x86/kvm/lapic.c +8 −8 Original line number Original line Diff line number Diff line Loading @@ -338,10 +338,10 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, } else } else apic_clear_vector(vector, apic->regs + APIC_TMR); apic_clear_vector(vector, apic->regs + APIC_TMR); if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); else if (vcpu->arch.mp_state == VCPU_MP_STATE_HALTED) { else if (vcpu->arch.mp_state == KVM_MP_STATE_HALTED) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading @@ -362,11 +362,11 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, case APIC_DM_INIT: case APIC_DM_INIT: if (level) { if (level) { if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) printk(KERN_DEBUG printk(KERN_DEBUG "INIT on a runnable vcpu %d\n", "INIT on a runnable vcpu %d\n", vcpu->vcpu_id); vcpu->vcpu_id); vcpu->arch.mp_state = VCPU_MP_STATE_INIT_RECEIVED; vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED; kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); } else { } else { printk(KERN_DEBUG printk(KERN_DEBUG Loading @@ -379,9 +379,9 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, case APIC_DM_STARTUP: case APIC_DM_STARTUP: printk(KERN_DEBUG "SIPI to vcpu %d vector 0x%02x\n", printk(KERN_DEBUG "SIPI to vcpu %d vector 0x%02x\n", vcpu->vcpu_id, vector); vcpu->vcpu_id, vector); if (vcpu->arch.mp_state == VCPU_MP_STATE_INIT_RECEIVED) { if (vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED) { vcpu->arch.sipi_vector = vector; vcpu->arch.sipi_vector = vector; vcpu->arch.mp_state = VCPU_MP_STATE_SIPI_RECEIVED; vcpu->arch.mp_state = KVM_MP_STATE_SIPI_RECEIVED; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading Loading @@ -940,7 +940,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic) atomic_inc(&apic->timer.pending); atomic_inc(&apic->timer.pending); if (waitqueue_active(q)) { if (waitqueue_active(q)) { apic->vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; apic->vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(q); wake_up_interruptible(q); } } if (apic_lvtt_period(apic)) { if (apic_lvtt_period(apic)) { Loading arch/x86/kvm/x86.c +9 −9 Original line number Original line Diff line number Diff line Loading @@ -2433,11 +2433,11 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu) ++vcpu->stat.halt_exits; ++vcpu->stat.halt_exits; KVMTRACE_0D(HLT, vcpu, handler); KVMTRACE_0D(HLT, vcpu, handler); if (irqchip_in_kernel(vcpu->kvm)) { if (irqchip_in_kernel(vcpu->kvm)) { vcpu->arch.mp_state = VCPU_MP_STATE_HALTED; vcpu->arch.mp_state = KVM_MP_STATE_HALTED; up_read(&vcpu->kvm->slots_lock); up_read(&vcpu->kvm->slots_lock); kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); down_read(&vcpu->kvm->slots_lock); down_read(&vcpu->kvm->slots_lock); if (vcpu->arch.mp_state != VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state != KVM_MP_STATE_RUNNABLE) return -EINTR; return -EINTR; return 1; return 1; } else { } else { Loading Loading @@ -2726,14 +2726,14 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) { { int r; int r; if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_SIPI_RECEIVED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_SIPI_RECEIVED)) { pr_debug("vcpu %d received sipi with vector # %x\n", pr_debug("vcpu %d received sipi with vector # %x\n", vcpu->vcpu_id, vcpu->arch.sipi_vector); vcpu->vcpu_id, vcpu->arch.sipi_vector); kvm_lapic_reset(vcpu); kvm_lapic_reset(vcpu); r = kvm_x86_ops->vcpu_reset(vcpu); r = kvm_x86_ops->vcpu_reset(vcpu); if (r) if (r) return r; return r; vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; } } down_read(&vcpu->kvm->slots_lock); down_read(&vcpu->kvm->slots_lock); Loading Loading @@ -2891,7 +2891,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) vcpu_load(vcpu); vcpu_load(vcpu); if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) { kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); vcpu_put(vcpu); vcpu_put(vcpu); return -EAGAIN; return -EAGAIN; Loading Loading @@ -3794,9 +3794,9 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) vcpu->arch.mmu.root_hpa = INVALID_PAGE; vcpu->arch.mmu.root_hpa = INVALID_PAGE; if (!irqchip_in_kernel(kvm) || vcpu->vcpu_id == 0) if (!irqchip_in_kernel(kvm) || vcpu->vcpu_id == 0) vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; else else vcpu->arch.mp_state = VCPU_MP_STATE_UNINITIALIZED; vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED; page = alloc_page(GFP_KERNEL | __GFP_ZERO); page = alloc_page(GFP_KERNEL | __GFP_ZERO); if (!page) { if (!page) { Loading Loading @@ -3936,8 +3936,8 @@ int kvm_arch_set_memory_region(struct kvm *kvm, int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) { { return vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE return vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE || vcpu->arch.mp_state == VCPU_MP_STATE_SIPI_RECEIVED; || vcpu->arch.mp_state == KVM_MP_STATE_SIPI_RECEIVED; } } static void vcpu_kick_intr(void *info) static void vcpu_kick_intr(void *info) Loading include/asm-ia64/kvm_host.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -318,10 +318,10 @@ struct kvm_vcpu_arch { int vmm_tr_slot; int vmm_tr_slot; int vm_tr_slot; int vm_tr_slot; #define VCPU_MP_STATE_RUNNABLE 0 #define KVM_MP_STATE_RUNNABLE 0 #define VCPU_MP_STATE_UNINITIALIZED 1 #define KVM_MP_STATE_UNINITIALIZED 1 #define VCPU_MP_STATE_INIT_RECEIVED 2 #define KVM_MP_STATE_INIT_RECEIVED 2 #define VCPU_MP_STATE_HALTED 3 #define KVM_MP_STATE_HALTED 3 int mp_state; int mp_state; #define MAX_PTC_G_NUM 3 #define MAX_PTC_G_NUM 3 Loading Loading
arch/ia64/kvm/kvm-ia64.c +13 −13 Original line number Original line Diff line number Diff line Loading @@ -340,7 +340,7 @@ static int handle_ipi(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) regs->cr_iip = vcpu->kvm->arch.rdv_sal_data.boot_ip; regs->cr_iip = vcpu->kvm->arch.rdv_sal_data.boot_ip; regs->r1 = vcpu->kvm->arch.rdv_sal_data.boot_gp; regs->r1 = vcpu->kvm->arch.rdv_sal_data.boot_gp; target_vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; target_vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&target_vcpu->wq)) if (waitqueue_active(&target_vcpu->wq)) wake_up_interruptible(&target_vcpu->wq); wake_up_interruptible(&target_vcpu->wq); } else { } else { Loading Loading @@ -386,7 +386,7 @@ static int handle_global_purge(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) for (i = 0; i < KVM_MAX_VCPUS; i++) { for (i = 0; i < KVM_MAX_VCPUS; i++) { if (!kvm->vcpus[i] || kvm->vcpus[i]->arch.mp_state == if (!kvm->vcpus[i] || kvm->vcpus[i]->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED || KVM_MP_STATE_UNINITIALIZED || vcpu == kvm->vcpus[i]) vcpu == kvm->vcpus[i]) continue; continue; Loading Loading @@ -437,12 +437,12 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu) hrtimer_start(p_ht, kt, HRTIMER_MODE_ABS); hrtimer_start(p_ht, kt, HRTIMER_MODE_ABS); if (irqchip_in_kernel(vcpu->kvm)) { if (irqchip_in_kernel(vcpu->kvm)) { vcpu->arch.mp_state = VCPU_MP_STATE_HALTED; vcpu->arch.mp_state = KVM_MP_STATE_HALTED; kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); hrtimer_cancel(p_ht); hrtimer_cancel(p_ht); vcpu->arch.ht_active = 0; vcpu->arch.ht_active = 0; if (vcpu->arch.mp_state != VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state != KVM_MP_STATE_RUNNABLE) return -EINTR; return -EINTR; return 1; return 1; } else { } else { Loading Loading @@ -668,7 +668,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) vcpu_load(vcpu); vcpu_load(vcpu); if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) { kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); vcpu_put(vcpu); vcpu_put(vcpu); return -EAGAIN; return -EAGAIN; Loading Loading @@ -1127,12 +1127,12 @@ static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data) wait_queue_head_t *q; wait_queue_head_t *q; vcpu = container_of(data, struct kvm_vcpu, arch.hlt_timer); vcpu = container_of(data, struct kvm_vcpu, arch.hlt_timer); if (vcpu->arch.mp_state != VCPU_MP_STATE_HALTED) if (vcpu->arch.mp_state != KVM_MP_STATE_HALTED) goto out; goto out; q = &vcpu->wq; q = &vcpu->wq; if (waitqueue_active(q)) { if (waitqueue_active(q)) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(q); wake_up_interruptible(q); } } out: out: Loading @@ -1159,7 +1159,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) return PTR_ERR(vmm_vcpu); return PTR_ERR(vmm_vcpu); if (vcpu->vcpu_id == 0) { if (vcpu->vcpu_id == 0) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; /*Set entry address for first run.*/ /*Set entry address for first run.*/ regs->cr_iip = PALE_RESET_ENTRY; regs->cr_iip = PALE_RESET_ENTRY; Loading @@ -1172,7 +1172,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) v->arch.last_itc = 0; v->arch.last_itc = 0; } } } else } else vcpu->arch.mp_state = VCPU_MP_STATE_UNINITIALIZED; vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED; r = -ENOMEM; r = -ENOMEM; vcpu->arch.apic = kzalloc(sizeof(struct kvm_lapic), GFP_KERNEL); vcpu->arch.apic = kzalloc(sizeof(struct kvm_lapic), GFP_KERNEL); Loading Loading @@ -1704,10 +1704,10 @@ int kvm_apic_set_irq(struct kvm_vcpu *vcpu, u8 vec, u8 trig) if (!test_and_set_bit(vec, &vpd->irr[0])) { if (!test_and_set_bit(vec, &vpd->irr[0])) { vcpu->arch.irq_new_pending = 1; vcpu->arch.irq_new_pending = 1; if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); else if (vcpu->arch.mp_state == VCPU_MP_STATE_HALTED) { else if (vcpu->arch.mp_state == KVM_MP_STATE_HALTED) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading Loading @@ -1790,5 +1790,5 @@ gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) { { return vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE; return vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE; } }
arch/x86/kvm/i8254.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -202,7 +202,7 @@ int __pit_timer_fn(struct kvm_kpit_state *ps) smp_mb__after_atomic_inc(); smp_mb__after_atomic_inc(); /* FIXME: handle case where the guest is in guest mode */ /* FIXME: handle case where the guest is in guest mode */ if (vcpu0 && waitqueue_active(&vcpu0->wq)) { if (vcpu0 && waitqueue_active(&vcpu0->wq)) { vcpu0->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu0->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(&vcpu0->wq); wake_up_interruptible(&vcpu0->wq); } } Loading
arch/x86/kvm/lapic.c +8 −8 Original line number Original line Diff line number Diff line Loading @@ -338,10 +338,10 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, } else } else apic_clear_vector(vector, apic->regs + APIC_TMR); apic_clear_vector(vector, apic->regs + APIC_TMR); if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); else if (vcpu->arch.mp_state == VCPU_MP_STATE_HALTED) { else if (vcpu->arch.mp_state == KVM_MP_STATE_HALTED) { vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading @@ -362,11 +362,11 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, case APIC_DM_INIT: case APIC_DM_INIT: if (level) { if (level) { if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE) printk(KERN_DEBUG printk(KERN_DEBUG "INIT on a runnable vcpu %d\n", "INIT on a runnable vcpu %d\n", vcpu->vcpu_id); vcpu->vcpu_id); vcpu->arch.mp_state = VCPU_MP_STATE_INIT_RECEIVED; vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED; kvm_vcpu_kick(vcpu); kvm_vcpu_kick(vcpu); } else { } else { printk(KERN_DEBUG printk(KERN_DEBUG Loading @@ -379,9 +379,9 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, case APIC_DM_STARTUP: case APIC_DM_STARTUP: printk(KERN_DEBUG "SIPI to vcpu %d vector 0x%02x\n", printk(KERN_DEBUG "SIPI to vcpu %d vector 0x%02x\n", vcpu->vcpu_id, vector); vcpu->vcpu_id, vector); if (vcpu->arch.mp_state == VCPU_MP_STATE_INIT_RECEIVED) { if (vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED) { vcpu->arch.sipi_vector = vector; vcpu->arch.sipi_vector = vector; vcpu->arch.mp_state = VCPU_MP_STATE_SIPI_RECEIVED; vcpu->arch.mp_state = KVM_MP_STATE_SIPI_RECEIVED; if (waitqueue_active(&vcpu->wq)) if (waitqueue_active(&vcpu->wq)) wake_up_interruptible(&vcpu->wq); wake_up_interruptible(&vcpu->wq); } } Loading Loading @@ -940,7 +940,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic) atomic_inc(&apic->timer.pending); atomic_inc(&apic->timer.pending); if (waitqueue_active(q)) { if (waitqueue_active(q)) { apic->vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; apic->vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; wake_up_interruptible(q); wake_up_interruptible(q); } } if (apic_lvtt_period(apic)) { if (apic_lvtt_period(apic)) { Loading
arch/x86/kvm/x86.c +9 −9 Original line number Original line Diff line number Diff line Loading @@ -2433,11 +2433,11 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu) ++vcpu->stat.halt_exits; ++vcpu->stat.halt_exits; KVMTRACE_0D(HLT, vcpu, handler); KVMTRACE_0D(HLT, vcpu, handler); if (irqchip_in_kernel(vcpu->kvm)) { if (irqchip_in_kernel(vcpu->kvm)) { vcpu->arch.mp_state = VCPU_MP_STATE_HALTED; vcpu->arch.mp_state = KVM_MP_STATE_HALTED; up_read(&vcpu->kvm->slots_lock); up_read(&vcpu->kvm->slots_lock); kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); down_read(&vcpu->kvm->slots_lock); down_read(&vcpu->kvm->slots_lock); if (vcpu->arch.mp_state != VCPU_MP_STATE_RUNNABLE) if (vcpu->arch.mp_state != KVM_MP_STATE_RUNNABLE) return -EINTR; return -EINTR; return 1; return 1; } else { } else { Loading Loading @@ -2726,14 +2726,14 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) { { int r; int r; if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_SIPI_RECEIVED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_SIPI_RECEIVED)) { pr_debug("vcpu %d received sipi with vector # %x\n", pr_debug("vcpu %d received sipi with vector # %x\n", vcpu->vcpu_id, vcpu->arch.sipi_vector); vcpu->vcpu_id, vcpu->arch.sipi_vector); kvm_lapic_reset(vcpu); kvm_lapic_reset(vcpu); r = kvm_x86_ops->vcpu_reset(vcpu); r = kvm_x86_ops->vcpu_reset(vcpu); if (r) if (r) return r; return r; vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; } } down_read(&vcpu->kvm->slots_lock); down_read(&vcpu->kvm->slots_lock); Loading Loading @@ -2891,7 +2891,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) vcpu_load(vcpu); vcpu_load(vcpu); if (unlikely(vcpu->arch.mp_state == VCPU_MP_STATE_UNINITIALIZED)) { if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) { kvm_vcpu_block(vcpu); kvm_vcpu_block(vcpu); vcpu_put(vcpu); vcpu_put(vcpu); return -EAGAIN; return -EAGAIN; Loading Loading @@ -3794,9 +3794,9 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) vcpu->arch.mmu.root_hpa = INVALID_PAGE; vcpu->arch.mmu.root_hpa = INVALID_PAGE; if (!irqchip_in_kernel(kvm) || vcpu->vcpu_id == 0) if (!irqchip_in_kernel(kvm) || vcpu->vcpu_id == 0) vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE; vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; else else vcpu->arch.mp_state = VCPU_MP_STATE_UNINITIALIZED; vcpu->arch.mp_state = KVM_MP_STATE_UNINITIALIZED; page = alloc_page(GFP_KERNEL | __GFP_ZERO); page = alloc_page(GFP_KERNEL | __GFP_ZERO); if (!page) { if (!page) { Loading Loading @@ -3936,8 +3936,8 @@ int kvm_arch_set_memory_region(struct kvm *kvm, int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) { { return vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE return vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE || vcpu->arch.mp_state == VCPU_MP_STATE_SIPI_RECEIVED; || vcpu->arch.mp_state == KVM_MP_STATE_SIPI_RECEIVED; } } static void vcpu_kick_intr(void *info) static void vcpu_kick_intr(void *info) Loading
include/asm-ia64/kvm_host.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -318,10 +318,10 @@ struct kvm_vcpu_arch { int vmm_tr_slot; int vmm_tr_slot; int vm_tr_slot; int vm_tr_slot; #define VCPU_MP_STATE_RUNNABLE 0 #define KVM_MP_STATE_RUNNABLE 0 #define VCPU_MP_STATE_UNINITIALIZED 1 #define KVM_MP_STATE_UNINITIALIZED 1 #define VCPU_MP_STATE_INIT_RECEIVED 2 #define KVM_MP_STATE_INIT_RECEIVED 2 #define VCPU_MP_STATE_HALTED 3 #define KVM_MP_STATE_HALTED 3 int mp_state; int mp_state; #define MAX_PTC_G_NUM 3 #define MAX_PTC_G_NUM 3 Loading