From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yosuke Iwamatsu Subject: [PATCH] vlapic: Fix one_shot argument passed to create_period_time() Date: Fri, 22 Jun 2007 19:39:43 +0900 Message-ID: <467BA6EF.1090808@ab.jp.nec.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070106040103000704050707" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------070106040103000704050707 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, I've found a problem that the vlapic timer never runs in one-shot mode. This is because the one_shot argument passed to create_period_time() is incorrect. This patch fixes the problem and enables one-shot timer to work properly. Regards, ------------------- Yosuke Iwamatsu NEC Corporation --------------070106040103000704050707 Content-Type: text/plain; name="vlapic_timer_one_shot.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vlapic_timer_one_shot.patch" # HG changeset patch # User Yosuke Iwamatsu # Date 1182507980 -32400 # Node ID 924bd2238560ec01f757e1eda1897c5327e1d997 # Parent 015d9abeacfb39c73c9aa488c2def2f66ab06e2b vlapic: Fix one_shot argument passed to create_period_time() vlapic_lvtt_period() returns '0' in one-shot mode and '131072(1<<17)' in periodic mode. On the contrary, to create_periodic_time(), '1' should be passed in one-shot mode and '0' should be passed in periodic mode. Signed-off-by: Yosuke Iwamatsu diff -r 015d9abeacfb -r 924bd2238560 xen/arch/x86/hvm/vlapic.c --- a/xen/arch/x86/hvm/vlapic.c Thu Jun 21 21:36:26 2007 +0100 +++ b/xen/arch/x86/hvm/vlapic.c Fri Jun 22 19:26:20 2007 +0900 @@ -660,7 +660,8 @@ static void vlapic_write(struct vcpu *v, vlapic_set_reg(vlapic, APIC_TMICT, val); create_periodic_time(current, &vlapic->pt, period, vlapic->pt.irq, - vlapic_lvtt_period(vlapic), NULL, vlapic); + (vlapic_lvtt_period(vlapic) ? 0 : 1), NULL, + vlapic); HVM_DBG_LOG(DBG_LEVEL_VLAPIC, "bus cycle is %uns, " @@ -819,7 +820,7 @@ static void lapic_rearm(struct vlapic *s s->pt.irq = lvtt & APIC_VECTOR_MASK; create_periodic_time(vlapic_vcpu(s), &s->pt, period, s->pt.irq, - vlapic_lvtt_period(s), NULL, s); + (vlapic_lvtt_period(s) ? 0 : 1), NULL, s); printk("lapic_load to rearm the actimer:" "bus cycle is %uns, " --------------070106040103000704050707 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------070106040103000704050707--