[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Fix oops message from timer_interrupton VTI domain



# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1169666885 25200
# Node ID b4df7de0cbf7530c3248956243bc9c520db2d609
# Parent  b8de061f3dc6d60e73279c41935138686860a170
[IA64] Fix oops message from timer_interrupton VTI domain

This patch intends to fix the oops message from timer_interrupt on
VTI domain.  This problem occurred when we test PV-on-HVM driver by
ltp-20061121.  Typical message shown as follows.

ltp Now Running...( Exception mode )
dom=domVTI
1 times
Unable to find swap-space signature
Oops: timer tick before it's due (itc=ed98bb5849,itm=ed98bb5849)
Oops: timer tick before it's due (itc=f20bca8ca3,itm=f20bca8ca3)
Oops: timer tick before it's due (itc=f4ea4e2b32,itm=f4ea4e2b32)
mmap1(7392): unaligned access to 0x60000fffffffb634, ip=0x200000000004fad0
mmap1(7392): unaligned access to 0x60000fffffffb634, ip=0x200000000004fad0
ltp End

These oops messages are generated because timer_interrupt checks
the condition itc > itm.  Currently Xen-hypervisor outputs following
values, max(current_itc,vtm->last_itc).  Sometimes oops message
appeared if we use the value of vtm->last_itc as ia64_get_itc()
return value, because the vtm->last_itc is same as itm.  To fix this
issue, it needs to add return value like +1.

But, ia64_get_itc() is handled at vmx_asm_mov_from_ar@xxxxxxxxxxx
and it works same logic of  now_itc()@vlsapic.c.  And these routines
shared vtm->last_itc.  So I fix this problem by adding +1 at caller
of update_last_itc.

Signed-off-by: Atsushi SAKAI <sakaia@xxxxxxxxxxxxxx>
---
 xen/arch/ia64/vmx/vlsapic.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)

diff -r b8de061f3dc6 -r b4df7de0cbf7 xen/arch/ia64/vmx/vlsapic.c
--- a/xen/arch/ia64/vmx/vlsapic.c       Wed Jan 24 12:21:37 2007 -0700
+++ b/xen/arch/ia64/vmx/vlsapic.c       Wed Jan 24 12:28:05 2007 -0700
@@ -171,7 +171,12 @@ static void vtm_timer_fn(void *data)
     } else
         vtm->pending = 1;
 
-    update_last_itc(vtm, VCPU(vcpu, itm));  // update vITC
+    /*
+     * "+ 1" is for fixing oops message at timer_interrupt() on VTI guest. 
+     * If oops checking condition changed to timer_after_eq() on VTI guest,
+     * this parameter should be erased.
+     */
+    update_last_itc(vtm, VCPU(vcpu, itm) + 1);  // update vITC
 }
 
 void vtm_init(VCPU *vcpu)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.