APIC_TMCCT is a dynamically running count which always
need to be recalculated at the time it is read. Setting
intermediate value is meaningless.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
diff --git a/drivers/kvm/lapic.c b/drivers/kvm/lapic.c
index d59b69f..fc53e88 100644
--- a/drivers/kvm/lapic.c
+++ b/drivers/kvm/lapic.c
@@ -445,7 +445,7 @@ static u32 apic_get_tmcct(struct kvm_lapic *apic)
{
u32 counter_passed;
ktime_t passed, now = apic->timer.dev.base->get_time();
- u32 tmcct = apic_get_reg(apic, APIC_TMCCT);
+ u32 tmcct = apic_get_reg(apic, APIC_TMICT);
ASSERT(apic != NULL);
@@ -474,9 +474,6 @@ static u32 apic_get_tmcct(struct kvm_lapic *apic)
} while (tmcct <= 0);
}
- apic->timer.last_update = now;
- apic_set_reg(apic, APIC_TMCCT, tmcct);
-
return tmcct;
}
@@ -633,7 +630,6 @@ static void apic_mmio_write(struct kvm_io_device
*this,
u32 offset;
apic_set_reg(apic, APIC_TMICT, val);
- apic_set_reg(apic, APIC_TMCCT, val);
apic->timer.last_update = now;
offset =
APIC_BUS_CYCLE_NS * apic->timer.divide_count
* val;
@@ -815,7 +811,6 @@ static void lapic_reset(struct kvm_vcpu *vcpu)
apic_set_reg(apic, APIC_ICR2, 0);
apic_set_reg(apic, APIC_TDCR, 0);
apic_set_reg(apic, APIC_TMICT, 0);
- apic_set_reg(apic, APIC_TMCCT, 0);
for (i = 0; i < 8; i++) {
apic_set_reg(apic, APIC_IRR + 0x10 * i, 0);
apic_set_reg(apic, APIC_ISR + 0x10 * i, 0);
@@ -886,13 +881,10 @@ static int __apic_timer_fn(struct kvm_lapic *apic)
u32 offset;
u32 tmict = apic_get_reg(apic, APIC_TMICT);
- apic_set_reg(apic, APIC_TMCCT, tmict);
offset = APIC_BUS_CYCLE_NS * apic->timer.divide_count *
tmict;
result = 1;
apic->timer.dev.expires = ktime_add_ns(now, offset);
- } else {
- apic_set_reg(apic, APIC_TMCCT, 0);
}
return result;
@@ -996,7 +988,6 @@ void kvm_apic_post_state_restore(struct kvm_vcpu
*vcpu)
MSR_IA32_APICBASE_BASE;
apic_set_reg(apic, APIC_LVR, APIC_VERSION);
val = apic_get_reg(apic, APIC_TMICT);
- apic_set_reg(apic, APIC_TMCCT, val);
apic_update_ppr(apic);
/* TODO: following code can be in a common API */
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel