WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

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

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-3.1-testing] hvm: Fix 2 type mismatches in vlapic.h and hpet.c for 32-bit build Xen
From: "Xen patchbot-3.1-testing" <patchbot-3.1-testing@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 10 Dec 2007 03:10:42 -0800
Delivery-date: Mon, 10 Dec 2007 03:52:07 -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 1196960597 0
# Node ID 485e163385c4f261e71e99467c377d6b6732b4f3
# Parent  3c61b65b87c7e774401c1a0015d931b20fdedfef
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>
xen-unstable changeset:   16486:c00f31f27de6eb69b4d79f7aa330b1e4aba6f45f
xen-unstable date:        Wed Nov 28 13:13:51 2007 +0000
---
 xen/arch/x86/hvm/hpet.c   |    2 +-
 xen/arch/x86/hvm/vlapic.c |   15 +++++++++------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff -r 3c61b65b87c7 -r 485e163385c4 xen/arch/x86/hvm/hpet.c
--- a/xen/arch/x86/hvm/hpet.c   Thu Dec 06 17:02:47 2007 +0000
+++ b/xen/arch/x86/hvm/hpet.c   Thu Dec 06 17:03:17 2007 +0000
@@ -145,7 +145,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 3c61b65b87c7 -r 485e163385c4 xen/arch/x86/hvm/vlapic.c
--- a/xen/arch/x86/hvm/vlapic.c Thu Dec 06 17:02:47 2007 +0000
+++ b/xen/arch/x86/hvm/vlapic.c Thu Dec 06 17:03:17 2007 +0000
@@ -654,7 +654,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,
@@ -811,8 +812,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;
@@ -820,9 +823,9 @@ static void lapic_rearm(struct vlapic *s
                              !vlapic_lvtt_period(s), NULL, s);
 
         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-3.1-testing] hvm: Fix 2 type mismatches in vlapic.h and hpet.c for 32-bit build Xen, Xen patchbot-3.1-testing <=