aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhang Xiantao <xiantao.zhang@intel.com>2007-12-13 21:20:16 -0500
committerAvi Kivity <avi@qumranet.com>2008-01-30 10:58:10 -0500
commitbfc6d222bdb1123d12c1193bcd7c755e6617b405 (patch)
tree72fb596179845648c3a050669f6f8ab16a834d3b
parentd7deeeb02cf73fd98cb71a6a0a5dffab9ef79556 (diff)
KVM: Portability: Move round_robin_prev_vcpu and tss_addr to kvm_arch
This patches moves two fields round_robin_prev_vcpu and tss to kvm_arch. Signed-off-by: Zhang Xiantao <xiantao.zhang@intel.com> Acked-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r--drivers/kvm/kvm.h3
-rw-r--r--drivers/kvm/lapic.c4
-rw-r--r--drivers/kvm/vmx.c12
-rw-r--r--drivers/kvm/x86.h4
4 files changed, 12 insertions, 11 deletions
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index d9ce916e98ab..ab9657a6f0ce 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -124,9 +124,6 @@ struct kvm {
124 struct file *filp; 124 struct file *filp;
125 struct kvm_io_bus mmio_bus; 125 struct kvm_io_bus mmio_bus;
126 struct kvm_io_bus pio_bus; 126 struct kvm_io_bus pio_bus;
127 int round_robin_prev_vcpu;
128 unsigned int tss_addr;
129 struct page *apic_access_page;
130 struct kvm_vm_stat stat; 127 struct kvm_vm_stat stat;
131 struct kvm_arch arch; 128 struct kvm_arch arch;
132}; 129};
diff --git a/drivers/kvm/lapic.c b/drivers/kvm/lapic.c
index 5c9f46784c26..8c74bf184a07 100644
--- a/drivers/kvm/lapic.c
+++ b/drivers/kvm/lapic.c
@@ -404,7 +404,7 @@ static struct kvm_lapic *kvm_apic_round_robin(struct kvm *kvm, u8 vector,
404 int next; 404 int next;
405 struct kvm_lapic *apic = NULL; 405 struct kvm_lapic *apic = NULL;
406 406
407 last = kvm->round_robin_prev_vcpu; 407 last = kvm->arch.round_robin_prev_vcpu;
408 next = last; 408 next = last;
409 409
410 do { 410 do {
@@ -417,7 +417,7 @@ static struct kvm_lapic *kvm_apic_round_robin(struct kvm *kvm, u8 vector,
417 break; 417 break;
418 apic = NULL; 418 apic = NULL;
419 } while (next != last); 419 } while (next != last);
420 kvm->round_robin_prev_vcpu = next; 420 kvm->arch.round_robin_prev_vcpu = next;
421 421
422 if (!apic) 422 if (!apic)
423 printk(KERN_DEBUG "vcpu not ready for apic_round_robin\n"); 423 printk(KERN_DEBUG "vcpu not ready for apic_round_robin\n");
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index d0f431d4fe4d..7e61a560aab5 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1143,12 +1143,12 @@ static void enter_pmode(struct kvm_vcpu *vcpu)
1143 1143
1144static gva_t rmode_tss_base(struct kvm *kvm) 1144static gva_t rmode_tss_base(struct kvm *kvm)
1145{ 1145{
1146 if (!kvm->tss_addr) { 1146 if (!kvm->arch.tss_addr) {
1147 gfn_t base_gfn = kvm->memslots[0].base_gfn + 1147 gfn_t base_gfn = kvm->memslots[0].base_gfn +
1148 kvm->memslots[0].npages - 3; 1148 kvm->memslots[0].npages - 3;
1149 return base_gfn << PAGE_SHIFT; 1149 return base_gfn << PAGE_SHIFT;
1150 } 1150 }
1151 return kvm->tss_addr; 1151 return kvm->arch.tss_addr;
1152} 1152}
1153 1153
1154static void fix_rmode_seg(int seg, struct kvm_save_segment *save) 1154static void fix_rmode_seg(int seg, struct kvm_save_segment *save)
@@ -1473,7 +1473,7 @@ static int alloc_apic_access_page(struct kvm *kvm)
1473 int r = 0; 1473 int r = 0;
1474 1474
1475 mutex_lock(&kvm->lock); 1475 mutex_lock(&kvm->lock);
1476 if (kvm->apic_access_page) 1476 if (kvm->arch.apic_access_page)
1477 goto out; 1477 goto out;
1478 kvm_userspace_mem.slot = APIC_ACCESS_PAGE_PRIVATE_MEMSLOT; 1478 kvm_userspace_mem.slot = APIC_ACCESS_PAGE_PRIVATE_MEMSLOT;
1479 kvm_userspace_mem.flags = 0; 1479 kvm_userspace_mem.flags = 0;
@@ -1482,7 +1482,7 @@ static int alloc_apic_access_page(struct kvm *kvm)
1482 r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0); 1482 r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
1483 if (r) 1483 if (r)
1484 goto out; 1484 goto out;
1485 kvm->apic_access_page = gfn_to_page(kvm, 0xfee00); 1485 kvm->arch.apic_access_page = gfn_to_page(kvm, 0xfee00);
1486out: 1486out:
1487 mutex_unlock(&kvm->lock); 1487 mutex_unlock(&kvm->lock);
1488 return r; 1488 return r;
@@ -1699,7 +1699,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
1699 1699
1700 if (vm_need_virtualize_apic_accesses(vmx->vcpu.kvm)) 1700 if (vm_need_virtualize_apic_accesses(vmx->vcpu.kvm))
1701 vmcs_write64(APIC_ACCESS_ADDR, 1701 vmcs_write64(APIC_ACCESS_ADDR,
1702 page_to_phys(vmx->vcpu.kvm->apic_access_page)); 1702 page_to_phys(vmx->vcpu.kvm->arch.apic_access_page));
1703 1703
1704 vmx->vcpu.arch.cr0 = 0x60000010; 1704 vmx->vcpu.arch.cr0 = 0x60000010;
1705 vmx_set_cr0(&vmx->vcpu, vmx->vcpu.arch.cr0); /* enter rmode */ 1705 vmx_set_cr0(&vmx->vcpu, vmx->vcpu.arch.cr0); /* enter rmode */
@@ -1789,7 +1789,7 @@ static int vmx_set_tss_addr(struct kvm *kvm, unsigned int addr)
1789 ret = kvm_set_memory_region(kvm, &tss_mem, 0); 1789 ret = kvm_set_memory_region(kvm, &tss_mem, 0);
1790 if (ret) 1790 if (ret)
1791 return ret; 1791 return ret;
1792 kvm->tss_addr = addr; 1792 kvm->arch.tss_addr = addr;
1793 return 0; 1793 return 0;
1794} 1794}
1795 1795
diff --git a/drivers/kvm/x86.h b/drivers/kvm/x86.h
index ef23a30bf048..945583934853 100644
--- a/drivers/kvm/x86.h
+++ b/drivers/kvm/x86.h
@@ -277,6 +277,10 @@ struct kvm_arch{
277 struct list_head active_mmu_pages; 277 struct list_head active_mmu_pages;
278 struct kvm_pic *vpic; 278 struct kvm_pic *vpic;
279 struct kvm_ioapic *vioapic; 279 struct kvm_ioapic *vioapic;
280
281 int round_robin_prev_vcpu;
282 unsigned int tss_addr;
283 struct page *apic_access_page;
280}; 284};
281 285
282struct kvm_vcpu_stat { 286struct kvm_vcpu_stat {