From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LN703-0008O8-1d for qemu-devel@nongnu.org; Wed, 14 Jan 2009 09:45:43 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LN701-0008Ml-4j for qemu-devel@nongnu.org; Wed, 14 Jan 2009 09:45:42 -0500 Received: from [199.232.76.173] (port=48360 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LN700-0008MZ-Uw for qemu-devel@nongnu.org; Wed, 14 Jan 2009 09:45:41 -0500 Received: from e5.ny.us.ibm.com ([32.97.182.145]:57640) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LN700-0004i1-LT for qemu-devel@nongnu.org; Wed, 14 Jan 2009 09:45:40 -0500 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n0EEhw6N020258 for ; Wed, 14 Jan 2009 09:43:58 -0500 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n0EEjasg185538 for ; Wed, 14 Jan 2009 09:45:36 -0500 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n0EEjau6025191 for ; Wed, 14 Jan 2009 09:45:36 -0500 Message-ID: <496DFA90.8050100@us.ibm.com> Date: Wed, 14 Jan 2009 09:45:36 -0500 From: Beth Kon MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090907000003000102090807" Subject: [Qemu-devel] [PATCH] hpet config mask fix Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel , kvm This is a multi-part message in MIME format. --------------090907000003000102090807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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. --------------090907000003000102090807 Content-Type: text/x-diff; name="hpet_mask_fix.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="hpet_mask_fix.patch" diff --git a/qemu/hw/hpet.c b/qemu/hw/hpet.c index 5c1aca2..7df2d05 100644 --- a/qemu/hw/hpet.c +++ b/qemu/hw/hpet.c @@ -388,7 +388,8 @@ static void hpet_ram_writel(void *opaque, target_phys_addr_t addr, 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 @@ static void hpet_ram_writel(void *opaque, target_phys_addr_t addr, 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) diff --git a/qemu/hw/hpet_emul.h b/qemu/hw/hpet_emul.h index fbe7a44..60893b6 100644 --- a/qemu/hw/hpet_emul.h +++ b/qemu/hw/hpet_emul.h @@ -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 --------------090907000003000102090807--