|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] late lapic timer interrupts for hvm guest
Keir Fraser wrote:
On 28/10/08 07:45, "Juergen Gross" <juergen.gross@xxxxxxxxxxxxxxxxxxx>
wrote:
pt->scheduled = NOW() + period;
/*
* Offset LAPIC ticks from other timer ticks. Otherwise guests which use
* LAPIC ticks for process accounting can see long sequences of process
* ticks incorrectly accounted to interrupt processing.
*/
if ( pt->source == PTSRC_lapic )
pt->scheduled += period >> 1;
We have ported our mainframe OS BS2000 to x86_64/XEN and we are using the
lapic timer as the main timer interrupt source (one shot mode). Finally I've
found the above coding which seems to be the root cause of late interrupts.
I think the problem mentioned in the comment won't occur if the guest uses
the lapic timer in one shot mode with varying timer values (like BS2000). Or
am I wrong here?
Right. That extra code could be conditional on setting up a periodic LAPIC
timer.
Okay, here is the patch.
Juergen
--
Juergen Gross Principal Developer
IP SW OS6 Telephone: +49 (0) 89 636 47950
Fujitsu Siemens Computers e-mail: juergen.gross@xxxxxxxxxxxxxxxxxxx
Otto-Hahn-Ring 6 Internet: www.fujitsu-siemens.com
D-81739 Muenchen Company details: www.fujitsu-siemens.com/imprint.html
When using lapic timer in one shot mode there is no need to delay timer
interrupts.
Signed-off-by: juergen.gross@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User juergen.gross@xxxxxxxxxxxxxxxxxxx
# Date 1225183655 -3600
# Node ID 7640fba355fac233773d183077d7d01c8fd591f3
# Parent 874d0d673ecb55749cdc836942222ba684b365cb
don't delay lapic timer if one shot mode
diff -r 874d0d673ecb -r 7640fba355fa xen/arch/x86/hvm/vpt.c
--- a/xen/arch/x86/hvm/vpt.c Thu Oct 23 15:38:52 2008 +0100
+++ b/xen/arch/x86/hvm/vpt.c Tue Oct 28 09:47:35 2008 +0100
@@ -388,8 +388,9 @@
* Offset LAPIC ticks from other timer ticks. Otherwise guests which use
* LAPIC ticks for process accounting can see long sequences of process
* ticks incorrectly accounted to interrupt processing.
+ * In one shot mode we assume this is no problem.
*/
- if ( pt->source == PTSRC_lapic )
+ if ( period && (pt->source == PTSRC_lapic) )
pt->scheduled += delta >> 1;
pt->cb = cb;
pt->priv = data;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|