tmr_overflow_time is updated only once on guest Windows, so ACPI timer interrupt is raised only twice. My solution is that tmr_overflow_time is updated every time after setting expired_time. I tested it on Windows XP, not sure on other guest OS .
acpi.patch: --- qemu.orig/hw/acpi.c Wed Dec 12 22:12:56 2007 +++ qemu/hw/acpi.c Wed Dec 12 22:14:00 2007 @@ -102,6 +102,7 @@ static void pm_update_sci(PIIX4PMState * if ((s->pmen & TMROF_EN) && !(pmsts & TMROF_EN)) { expire_time = muldiv64(s->tmr_overflow_time, ticks_per_sec, PM_FREQ); qemu_mod_timer(s->tmr_timer, expire_time); + s->tmr_overflow_time+=0x800000LL; } else { qemu_del_timer(s->tmr_timer); } http://www.nabble.com/file/p14296430/acpi.patch acpi.patch -- View this message in context: http://www.nabble.com/-RFC-PATCH--ACPI-timer-fix-tp14296430p14296430.html Sent from the QEMU - Dev mailing list archive at Nabble.com.