Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] hvm: Fix 2 type mismatches in vlapic.h an

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] hvm: Fix 2 type mismatches in vlapic.h and hpet.c for 32-bit build Xen
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 28 Nov 2007 17:20:11 -0800
Delivery-date: Wed, 28 Nov 2007 17:20:48 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1196255631 0
# Node ID c00f31f27de6eb69b4d79f7aa330b1e4aba6f45f
# Parent  c76a9aa12d2e37ed5c6c2a3562c755ec3828af8a
hvm: Fix 2 type mismatches in vlapic.h and hpet.c for 32-bit build Xen

For 32-bit build of Xen:
1) the first mismatch (in hpet_read(), length is 4)  makes guest think
the HPET DM is buggy (we return 0 for HPET_CFG.COUNTER_CLK_PERIOD to
guest), so guest wouldn't use HPET at all.
2) the second one: if tmict is 62500000 and timer_divisor is 16
(Fedoar7's installer uses the values at some time), 10 * 62500000 * 16
= 0x2540BE400 -- it's too big to be held in uint32_t.

Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>=20
---
 xen/arch/x86/hvm/hpet.c   |    2 +-
 xen/arch/x86/hvm/vlapic.c |   15 +++++++++------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff -r c76a9aa12d2e -r c00f31f27de6 xen/arch/x86/hvm/hpet.c
--- a/xen/arch/x86/hvm/hpet.c   Wed Nov 28 13:04:47 2007 +0000
+++ b/xen/arch/x86/hvm/hpet.c   Wed Nov 28 13:13:51 2007 +0000
@@ -170,7 +170,7 @@ static unsigned long hpet_read(
 
     result = val;
     if ( length != 8 )
-        result = (val >> ((addr & 7) * 8)) & ((1UL << (length * 8)) - 1);
+        result = (val >> ((addr & 7) * 8)) & ((1ULL << (length * 8)) - 1);
 
     spin_unlock(&h->lock);
 
diff -r c76a9aa12d2e -r c00f31f27de6 xen/arch/x86/hvm/vlapic.c
--- a/xen/arch/x86/hvm/vlapic.c Wed Nov 28 13:04:47 2007 +0000
+++ b/xen/arch/x86/hvm/vlapic.c Wed Nov 28 13:13:51 2007 +0000
@@ -661,7 +661,8 @@ static void vlapic_write(struct vcpu *v,
 
     case APIC_TMICT:
     {
-        uint64_t period = APIC_BUS_CYCLE_NS * (uint32_t)val * 
vlapic->hw.timer_divisor;
+        uint64_t period = (uint64_t)APIC_BUS_CYCLE_NS *
+                            (uint32_t)val * vlapic->hw.timer_divisor;
 
         vlapic_set_reg(vlapic, APIC_TMICT, val);
         create_periodic_time(current, &vlapic->pt, period, vlapic->pt.irq,
@@ -820,8 +821,10 @@ static void lapic_rearm(struct vlapic *s
     unsigned long tmict;
 
     tmict = vlapic_get_reg(s, APIC_TMICT);
-    if (tmict > 0) {
-        uint64_t period = APIC_BUS_CYCLE_NS * (uint32_t)tmict * 
s->hw.timer_divisor;
+    if ( tmict > 0 )
+    {
+        uint64_t period = (uint64_t)APIC_BUS_CYCLE_NS *
+                            (uint32_t)tmict * s->hw.timer_divisor;
         uint32_t lvtt = vlapic_get_reg(s, APIC_LVTT);
 
         s->pt.irq = lvtt & APIC_VECTOR_MASK;
@@ -830,9 +833,9 @@ static void lapic_rearm(struct vlapic *s
                              &s->timer_last_update);
 
         printk("lapic_load to rearm the actimer:"
-                    "bus cycle is %uns, "
-                    "saved tmict count %lu, period %"PRIu64"ns, 
irq=%"PRIu8"\n",
-                    APIC_BUS_CYCLE_NS, tmict, period, s->pt.irq);
+               "bus cycle is %uns, "
+               "saved tmict count %lu, period %"PRIu64"ns, irq=%"PRIu8"\n",
+               APIC_BUS_CYCLE_NS, tmict, period, s->pt.irq);
     }
 
     lapic_info(s);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] hvm: Fix 2 type mismatches in vlapic.h and hpet.c for 32-bit build Xen, Xen patchbot-unstable <=