From: Zhang Xiantao <[EMAIL PROTECTED]> Date: Fri, 14 Dec 2007 00:56:44 +0800 Subject: [PATCH] kvm portability: Moving mp_state, and sipi_vector to kvm_vcpu_arch
In this patches, two fields mp_state and sipi_vector are moved to
kvm_vcpu_arch
Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]>
---
drivers/kvm/lapic.c | 18 +++++++++---------
drivers/kvm/svm.c | 4 ++--
drivers/kvm/vmx.c | 4 ++--
drivers/kvm/x86.c | 16 ++++++++--------
drivers/kvm/x86.h | 12 ++++++------
5 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/drivers/kvm/lapic.c b/drivers/kvm/lapic.c
index 77a6252..60fef64 100644
--- a/drivers/kvm/lapic.c
+++ b/drivers/kvm/lapic.c
@@ -342,10 +342,10 @@ static int __apic_accept_irq(struct kvm_lapic
*apic, int delivery_mode,
} else
apic_clear_vector(vector, apic->regs +
APIC_TMR);
- if (vcpu->mp_state == VCPU_MP_STATE_RUNNABLE)
+ if (vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE)
kvm_vcpu_kick(vcpu);
- else if (vcpu->mp_state == VCPU_MP_STATE_HALTED) {
- vcpu->mp_state = VCPU_MP_STATE_RUNNABLE;
+ else if (vcpu->arch.mp_state == VCPU_MP_STATE_HALTED) {
+ vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE;
if (waitqueue_active(&vcpu->wq))
wake_up_interruptible(&vcpu->wq);
}
@@ -366,11 +366,11 @@ static int __apic_accept_irq(struct kvm_lapic
*apic, int delivery_mode,
case APIC_DM_INIT:
if (level) {
- if (vcpu->mp_state == VCPU_MP_STATE_RUNNABLE)
+ if (vcpu->arch.mp_state ==
VCPU_MP_STATE_RUNNABLE)
printk(KERN_DEBUG
"INIT on a runnable vcpu %d\n",
vcpu->vcpu_id);
- vcpu->mp_state = VCPU_MP_STATE_INIT_RECEIVED;
+ vcpu->arch.mp_state =
VCPU_MP_STATE_INIT_RECEIVED;
kvm_vcpu_kick(vcpu);
} else {
printk(KERN_DEBUG
@@ -383,9 +383,9 @@ static int __apic_accept_irq(struct kvm_lapic *apic,
int delivery_mode,
case APIC_DM_STARTUP:
printk(KERN_DEBUG "SIPI to vcpu %d vector 0x%02x\n",
vcpu->vcpu_id, vector);
- if (vcpu->mp_state == VCPU_MP_STATE_INIT_RECEIVED) {
- vcpu->sipi_vector = vector;
- vcpu->mp_state = VCPU_MP_STATE_SIPI_RECEIVED;
+ if (vcpu->arch.mp_state == VCPU_MP_STATE_INIT_RECEIVED)
{
+ vcpu->arch.sipi_vector = vector;
+ vcpu->arch.mp_state =
VCPU_MP_STATE_SIPI_RECEIVED;
if (waitqueue_active(&vcpu->wq))
wake_up_interruptible(&vcpu->wq);
}
@@ -918,7 +918,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic)
atomic_inc(&apic->timer.pending);
if (waitqueue_active(q)) {
- apic->vcpu->mp_state = VCPU_MP_STATE_RUNNABLE;
+ apic->vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE;
wake_up_interruptible(q);
}
if (apic_lvtt_period(apic)) {
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index f937292..6c100b1 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -559,8 +559,8 @@ static int svm_vcpu_reset(struct kvm_vcpu *vcpu)
if (vcpu->vcpu_id != 0) {
svm->vmcb->save.rip = 0;
- svm->vmcb->save.cs.base = svm->vcpu.sipi_vector << 12;
- svm->vmcb->save.cs.selector = svm->vcpu.sipi_vector <<
8;
+ svm->vmcb->save.cs.base = svm->vcpu.arch.sipi_vector <<
12;
+ svm->vmcb->save.cs.selector = svm->vcpu.arch.sipi_vector
<< 8;
}
return 0;
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index 5e9a542..72cc376 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1632,8 +1632,8 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
vmcs_write16(GUEST_CS_SELECTOR, 0xf000);
vmcs_writel(GUEST_CS_BASE, 0x000f0000);
} else {
- vmcs_write16(GUEST_CS_SELECTOR, vmx->vcpu.sipi_vector <<
8);
- vmcs_writel(GUEST_CS_BASE, vmx->vcpu.sipi_vector << 12);
+ vmcs_write16(GUEST_CS_SELECTOR,
vmx->vcpu.arch.sipi_vector << 8);
+ vmcs_writel(GUEST_CS_BASE, vmx->vcpu.arch.sipi_vector <<
12);
}
vmcs_write32(GUEST_CS_LIMIT, 0xffff);
vmcs_write32(GUEST_CS_AR_BYTES, 0x9b);
diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
index a173bea..94a3ca4 100644
--- a/drivers/kvm/x86.c
+++ b/drivers/kvm/x86.c
@@ -2156,9 +2156,9 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu)
{
++vcpu->stat.halt_exits;
if (irqchip_in_kernel(vcpu->kvm)) {
- vcpu->mp_state = VCPU_MP_STATE_HALTED;
+ vcpu->arch.mp_state = VCPU_MP_STATE_HALTED;
kvm_vcpu_block(vcpu);
- if (vcpu->mp_state != VCPU_MP_STATE_RUNNABLE)
+ if (vcpu->arch.mp_state != VCPU_MP_STATE_RUNNABLE)
return -EINTR;
return 1;
} else {
@@ -2400,14 +2400,14 @@ static int __vcpu_run(struct kvm_vcpu *vcpu,
struct kvm_run *kvm_run)
{
int r;
- if (unlikely(vcpu->mp_state == VCPU_MP_STATE_SIPI_RECEIVED)) {
+ if (unlikely(vcpu->arch.mp_state ==
VCPU_MP_STATE_SIPI_RECEIVED)) {
pr_debug("vcpu %d received sipi with vector # %x\n",
- vcpu->vcpu_id, vcpu->sipi_vector);
+ vcpu->vcpu_id, vcpu->arch.sipi_vector);
kvm_lapic_reset(vcpu);
r = kvm_x86_ops->vcpu_reset(vcpu);
if (r)
return r;
- vcpu->mp_state = VCPU_MP_STATE_RUNNABLE;
+ vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE;
}
preempted:
@@ -2512,7 +2512,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu,
struct kvm_run *kvm_run)
vcpu_load(vcpu);
- if (unlikely(vcpu->mp_state == VCPU_MP_STATE_UNINITIALIZED)) {
+ if (unlikely(vcpu->arch.mp_state ==
VCPU_MP_STATE_UNINITIALIZED)) {
kvm_vcpu_block(vcpu);
vcpu_put(vcpu);
return -EAGAIN;
@@ -3005,9 +3005,9 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
vcpu->mmu.root_hpa = INVALID_PAGE;
if (!irqchip_in_kernel(kvm) || vcpu->vcpu_id == 0)
- vcpu->mp_state = VCPU_MP_STATE_RUNNABLE;
+ vcpu->arch.mp_state = VCPU_MP_STATE_RUNNABLE;
else
- vcpu->mp_state = VCPU_MP_STATE_UNINITIALIZED;
+ vcpu->arch.mp_state = VCPU_MP_STATE_UNINITIALIZED;
page = alloc_page(GFP_KERNEL | __GFP_ZERO);
if (!page) {
diff --git a/drivers/kvm/x86.h b/drivers/kvm/x86.h
index 568cdb1..3416fcd 100644
--- a/drivers/kvm/x86.h
+++ b/drivers/kvm/x86.h
@@ -109,10 +109,6 @@ struct kvm_vcpu_arch {
u64 shadow_efer;
u64 apic_base;
struct kvm_lapic *apic; /* kernel irqchip context */
-};
-
-struct kvm_vcpu {
- KVM_VCPU_COMM;
#define VCPU_MP_STATE_RUNNABLE 0
#define VCPU_MP_STATE_UNINITIALIZED 1
#define VCPU_MP_STATE_INIT_RECEIVED 2
@@ -120,6 +116,10 @@ struct kvm_vcpu {
#define VCPU_MP_STATE_HALTED 4
int mp_state;
int sipi_vector;
+};
+
+struct kvm_vcpu {
+ KVM_VCPU_COMM;
u64 ia32_misc_enable_msr;
struct kvm_mmu mmu;
@@ -493,8 +493,8 @@ static inline void kvm_inject_gp(struct kvm_vcpu
*vcpu, u32 error_code)
static inline int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu)
{
- return vcpu->mp_state == VCPU_MP_STATE_RUNNABLE
- || vcpu->mp_state == VCPU_MP_STATE_SIPI_RECEIVED;
+ return vcpu->arch.mp_state == VCPU_MP_STATE_RUNNABLE
+ || vcpu->arch.mp_state == VCPU_MP_STATE_SIPI_RECEIVED;
}
#endif
--
1.5.1.2
0006-kvm-portability-Moving-mp_state-and-sipi_vector-to.patch
Description: 0006-kvm-portability-Moving-mp_state-and-sipi_vector-to.patch
------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________ kvm-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
