diff options
author | Gleb Natapov <gleb@redhat.com> | 2011-12-15 05:38:40 -0500 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-12-27 04:22:32 -0500 |
commit | d546cb406ea0d83e2d39ec14221957a24f88a622 (patch) | |
tree | 32ed0f1cc2e56a8fcd2a24cf0db97d1326b4c9bd | |
parent | a647795efbedeedf8a1dc6deded26defa23562bd (diff) |
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: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r-- | arch/x86/kvm/i8259.c | 24 | ||||
-rw-r--r-- | include/linux/kvm_host.h | 1 | ||||
-rw-r--r-- | virt/kvm/ioapic.c | 2 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 4 |
4 files changed, 17 insertions, 14 deletions
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c index cac4746d7ffb..b6a73537e1ef 100644 --- a/arch/x86/kvm/i8259.c +++ b/arch/x86/kvm/i8259.c | |||
@@ -262,9 +262,10 @@ int kvm_pic_read_irq(struct kvm *kvm) | |||
262 | 262 | ||
263 | void kvm_pic_reset(struct kvm_kpic_state *s) | 263 | void kvm_pic_reset(struct kvm_kpic_state *s) |
264 | { | 264 | { |
265 | int irq; | 265 | int irq, i; |
266 | struct kvm_vcpu *vcpu0 = s->pics_state->kvm->bsp_vcpu; | 266 | struct kvm_vcpu *vcpu; |
267 | u8 irr = s->irr, isr = s->imr; | 267 | u8 irr = s->irr, isr = s->imr; |
268 | bool found = false; | ||
268 | 269 | ||
269 | s->last_irr = 0; | 270 | s->last_irr = 0; |
270 | s->irr = 0; | 271 | s->irr = 0; |
@@ -281,12 +282,19 @@ void kvm_pic_reset(struct kvm_kpic_state *s) | |||
281 | s->special_fully_nested_mode = 0; | 282 | s->special_fully_nested_mode = 0; |
282 | s->init4 = 0; | 283 | s->init4 = 0; |
283 | 284 | ||
284 | for (irq = 0; irq < PIC_NUM_PINS/2; irq++) { | 285 | kvm_for_each_vcpu(i, vcpu, s->pics_state->kvm) |
285 | if (vcpu0 && kvm_apic_accept_pic_intr(vcpu0)) | 286 | if (kvm_apic_accept_pic_intr(vcpu)) { |
286 | if (irr & (1 << irq) || isr & (1 << irq)) { | 287 | found = true; |
287 | pic_clear_isr(s, irq); | 288 | break; |
288 | } | 289 | } |
289 | } | 290 | |
291 | |||
292 | if (!found) | ||
293 | return; | ||
294 | |||
295 | for (irq = 0; irq < PIC_NUM_PINS/2; irq++) | ||
296 | if (irr & (1 << irq) || isr & (1 << irq)) | ||
297 | pic_clear_isr(s, irq); | ||
290 | } | 298 | } |
291 | 299 | ||
292 | static void pic_ioport_write(void *opaque, u32 addr, u32 val) | 300 | static void pic_ioport_write(void *opaque, u32 addr, u32 val) |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 8c5c30361b0d..7a080383935f 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -251,7 +251,6 @@ struct kvm { | |||
251 | struct srcu_struct srcu; | 251 | struct srcu_struct srcu; |
252 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | 252 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE |
253 | u32 bsp_vcpu_id; | 253 | u32 bsp_vcpu_id; |
254 | struct kvm_vcpu *bsp_vcpu; | ||
255 | #endif | 254 | #endif |
256 | struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; | 255 | struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; |
257 | atomic_t online_vcpus; | 256 | atomic_t online_vcpus; |
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c index 71e2253edee7..dcaf272c26c0 100644 --- a/virt/kvm/ioapic.c +++ b/virt/kvm/ioapic.c | |||
@@ -185,7 +185,7 @@ static int ioapic_deliver(struct kvm_ioapic *ioapic, int irq) | |||
185 | irqe.dest_mode = 0; /* Physical mode. */ | 185 | irqe.dest_mode = 0; /* Physical mode. */ |
186 | /* need to read apic_id from apic regiest since | 186 | /* need to read apic_id from apic regiest since |
187 | * it can be rewritten */ | 187 | * it can be rewritten */ |
188 | irqe.dest_id = ioapic->kvm->bsp_vcpu->vcpu_id; | 188 | irqe.dest_id = ioapic->kvm->bsp_vcpu_id; |
189 | } | 189 | } |
190 | #endif | 190 | #endif |
191 | return kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe); | 191 | return kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe); |
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index d8bac0751666..0835c4b90d2f 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -1743,10 +1743,6 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) | |||
1743 | smp_wmb(); | 1743 | smp_wmb(); |
1744 | atomic_inc(&kvm->online_vcpus); | 1744 | atomic_inc(&kvm->online_vcpus); |
1745 | 1745 | ||
1746 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | ||
1747 | if (kvm->bsp_vcpu_id == id) | ||
1748 | kvm->bsp_vcpu = vcpu; | ||
1749 | #endif | ||
1750 | mutex_unlock(&kvm->lock); | 1746 | mutex_unlock(&kvm->lock); |
1751 | return r; | 1747 | return r; |
1752 | 1748 | ||