Commit d546cb40 authored by Gleb Natapov's avatar Gleb Natapov Committed by Avi Kivity

KVM: drop bsp_vcpu pointer from kvm struct

Drop bsp_vcpu pointer from kvm struct since its only use is incorrect
anyway.
Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent a647795e
...@@ -262,9 +262,10 @@ int kvm_pic_read_irq(struct kvm *kvm) ...@@ -262,9 +262,10 @@ int kvm_pic_read_irq(struct kvm *kvm)
void kvm_pic_reset(struct kvm_kpic_state *s) void kvm_pic_reset(struct kvm_kpic_state *s)
{ {
int irq; int irq, i;
struct kvm_vcpu *vcpu0 = s->pics_state->kvm->bsp_vcpu; struct kvm_vcpu *vcpu;
u8 irr = s->irr, isr = s->imr; u8 irr = s->irr, isr = s->imr;
bool found = false;
s->last_irr = 0; s->last_irr = 0;
s->irr = 0; s->irr = 0;
...@@ -281,12 +282,19 @@ void kvm_pic_reset(struct kvm_kpic_state *s) ...@@ -281,12 +282,19 @@ void kvm_pic_reset(struct kvm_kpic_state *s)
s->special_fully_nested_mode = 0; s->special_fully_nested_mode = 0;
s->init4 = 0; s->init4 = 0;
for (irq = 0; irq < PIC_NUM_PINS/2; irq++) { kvm_for_each_vcpu(i, vcpu, s->pics_state->kvm)
if (vcpu0 && kvm_apic_accept_pic_intr(vcpu0)) if (kvm_apic_accept_pic_intr(vcpu)) {
if (irr & (1 << irq) || isr & (1 << irq)) { found = true;
pic_clear_isr(s, irq); break;
}
} }
if (!found)
return;
for (irq = 0; irq < PIC_NUM_PINS/2; irq++)
if (irr & (1 << irq) || isr & (1 << irq))
pic_clear_isr(s, irq);
} }
static void pic_ioport_write(void *opaque, u32 addr, u32 val) static void pic_ioport_write(void *opaque, u32 addr, u32 val)
......
...@@ -251,7 +251,6 @@ struct kvm { ...@@ -251,7 +251,6 @@ struct kvm {
struct srcu_struct srcu; struct srcu_struct srcu;
#ifdef CONFIG_KVM_APIC_ARCHITECTURE #ifdef CONFIG_KVM_APIC_ARCHITECTURE
u32 bsp_vcpu_id; u32 bsp_vcpu_id;
struct kvm_vcpu *bsp_vcpu;
#endif #endif
struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
atomic_t online_vcpus; atomic_t online_vcpus;
......
...@@ -185,7 +185,7 @@ static int ioapic_deliver(struct kvm_ioapic *ioapic, int irq) ...@@ -185,7 +185,7 @@ static int ioapic_deliver(struct kvm_ioapic *ioapic, int irq)
irqe.dest_mode = 0; /* Physical mode. */ irqe.dest_mode = 0; /* Physical mode. */
/* need to read apic_id from apic regiest since /* need to read apic_id from apic regiest since
* it can be rewritten */ * it can be rewritten */
irqe.dest_id = ioapic->kvm->bsp_vcpu->vcpu_id; irqe.dest_id = ioapic->kvm->bsp_vcpu_id;
} }
#endif #endif
return kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe); return kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe);
......
...@@ -1743,10 +1743,6 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) ...@@ -1743,10 +1743,6 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
smp_wmb(); smp_wmb();
atomic_inc(&kvm->online_vcpus); atomic_inc(&kvm->online_vcpus);
#ifdef CONFIG_KVM_APIC_ARCHITECTURE
if (kvm->bsp_vcpu_id == id)
kvm->bsp_vcpu = vcpu;
#endif
mutex_unlock(&kvm->lock); mutex_unlock(&kvm->lock);
return r; return r;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment