qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [6357] hpet config mask fix


From: Aurelien Jarno
Subject: [Qemu-devel] [6357] hpet config mask fix
Date: Fri, 16 Jan 2009 21:38:59 +0000

Revision: 6357
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6357
Author:   aurel32
Date:     2009-01-16 21:38:58 +0000 (Fri, 16 Jan 2009)

Log Message:
-----------
hpet config mask fix

I discovered a bug in the hpet code that caused Windows to boot without
hpet. The config mask I was using was preventing the guest from placing
the hpet into 32 bit mode.

(Beth Kon)

Modified Paths:
--------------
    trunk/hw/hpet.c
    trunk/hw/hpet_emul.h

Modified: trunk/hw/hpet.c
===================================================================
--- trunk/hw/hpet.c     2009-01-16 21:13:58 UTC (rev 6356)
+++ trunk/hw/hpet.c     2009-01-16 21:38:58 UTC (rev 6357)
@@ -388,7 +388,8 @@
         switch ((addr - 0x100) % 0x20) {
             case HPET_TN_CFG:
                 dprintf("qemu: hpet_ram_writel HPET_TN_CFG\n");
-                timer->config = hpet_fixup_reg(new_val, old_val, 0x3e4e);
+                timer->config = hpet_fixup_reg(new_val, old_val, 
+                                               HPET_TN_CFG_WRITE_MASK);
                 if (new_val & HPET_TN_32BIT) {
                     timer->cmp = (uint32_t)timer->cmp;
                     timer->period = (uint32_t)timer->period;
@@ -456,7 +457,8 @@
             case HPET_ID:
                 return;
             case HPET_CFG:
-                s->config = hpet_fixup_reg(new_val, old_val, 0x3);
+                s->config = hpet_fixup_reg(new_val, old_val, 
+                                           HPET_CFG_WRITE_MASK);
                 if (activating_bit(old_val, new_val, HPET_CFG_ENABLE)) {
                     /* Enable main counter and interrupt generation. */
                     s->hpet_offset = ticks_to_ns(s->hpet_counter)

Modified: trunk/hw/hpet_emul.h
===================================================================
--- trunk/hw/hpet_emul.h        2009-01-16 21:13:58 UTC (rev 6356)
+++ trunk/hw/hpet_emul.h        2009-01-16 21:38:58 UTC (rev 6357)
@@ -36,6 +36,7 @@
 #define HPET_TN_CFG     0x000
 #define HPET_TN_CMP     0x008
 #define HPET_TN_ROUTE   0x010
+#define HPET_CFG_WRITE_MASK  0x3
 
 
 #define HPET_TN_ENABLE           0x004
@@ -45,6 +46,7 @@
 #define HPET_TN_SETVAL           0x040
 #define HPET_TN_32BIT            0x100
 #define HPET_TN_INT_ROUTE_MASK  0x3e00
+#define HPET_TN_CFG_WRITE_MASK  0x3f4e
 #define HPET_TN_INT_ROUTE_SHIFT      9
 #define HPET_TN_INT_ROUTE_CAP_SHIFT 32
 #define HPET_TN_CFG_BITS_READONLY_OR_RESERVED 0xffff80b1U






reply via email to

[Prev in Thread] Current Thread [Next in Thread]