qemu/hw/timer
Matt Lupfer c36ad13fe9 Don't enable a HPET timer if HPET is disabled
A HPET timer can be started when HPET is not yet
enabled. This will not generate an interrupt
to the guest, but causes problems when HPET is later
enabled.

A timer that is created and expires at least once before
HPET is enabled will have an initialized comparator based
on a hpet_offset of 0 (uninitialized). When HPET is
enabled, hpet_set_timer() is called a second time, which
modifies the timer expiry to a time based on the
difference between current ticks (measured with the
newly initialized hpet_offset) and the timer's
comparator (which was generated before hpet_offset was
initialized). This results in a long period of no HPET
timer ticks.

When this occurs with a CentOS 5.x guest, the guest
may not receive timer interrupts during its narrow
timer check window and panic on boot.

Signed-off-by: Matt Lupfer <mlupfer@ddn.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
2014-03-27 17:48:11 +02:00
..
a9gtimer.c hw/timer: Introduce ARM A9 Global Timer. 2013-12-10 13:24:51 +00:00
allwinner-a10-pit.c hw/timer: add allwinner a10 timer 2013-12-17 20:12:51 +00:00
arm_mptimer.c sysbus: Set cannot_instantiate_with_device_add_yet 2013-12-23 00:27:22 +01:00
arm_timer.c hw/timer/arm_timer: Avoid array overrun for bad addresses 2014-02-26 17:19:58 +00:00
cadence_ttc.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
digic-timer.c hw/arm/digic: add timer support 2013-12-17 20:12:51 +00:00
ds1338.c ds1338: QOM'ify 2014-02-14 16:22:32 +01:00
etraxfs_timer.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
exynos4210_mct.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
exynos4210_pwm.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
exynos4210_rtc.c misc: Fix some typos in names and comments 2013-09-01 18:59:24 +04:00
grlib_gptimer.c hw/timer/grlib_gptimer: Avoid integer overflows 2014-03-15 13:54:18 +04:00
hpet.c Don't enable a HPET timer if HPET is disabled 2014-03-27 17:48:11 +02:00
i8254_common.c isa: Clean up use of cannot_instantiate_with_device_add_yet 2013-12-23 00:27:23 +01:00
i8254.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
imx_epit.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
imx_gpt.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
lm32_timer.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
m48t59.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
Makefile.objs hw/timer: add allwinner a10 timer 2013-12-17 20:12:51 +00:00
mc146818rtc.c qdev: Add enum property types to QAPI schema 2014-02-14 21:12:05 +01:00
milkymist-sysctl.c milkymist-sysctl: QOM cast cleanup 2013-07-29 21:07:01 +02:00
omap_gptimer.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
omap_synctimer.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
pl031.c sysbus: Set cannot_instantiate_with_device_add_yet 2013-12-23 00:27:22 +01:00
puv3_ost.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
pxa2xx_timer.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
sh_timer.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
slavio_timer.c sun4m: fix slavio timer RUN/STOP bit 2014-02-27 10:01:41 +00:00
tusb6010.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
twl92230.c twl92230: QOM'ify 2014-02-14 16:22:32 +01:00
xilinx_timer.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00