Files
linux/arch/x86/kernel
Pavel Emelyanov a6a95406c6 x86: fix hpet timer reinit for x86_64
There's a small problem with hpet_rtc_reinit function - it checks
for the:

	hpet_readl(HPET_COUNTER) - hpet_t1_cmp > 0

to continue increasing both the HPET_T1_CMP (register) and the
hpet_t1_cmp (variable).

But since the HPET_COUNTER is always 32-bit, if the hpet_t1_cmp
is 64-bit this condition will always be FALSE once the latter hits
the 32-bit boundary, and we can have a situation, when we don't
increase the HPET_T1_CMP register high enough.

The result - timer stops ticking, since HPET_T1_CMP becomes less,
than the COUNTER and never increased again.

The solution is (based on Linus's suggestion) to not compare 64-bits
(on 64-bit x86), but to do the comparison on 32-bit signed
integers.

Reported-by: Kirill Korotaev <dev@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-02-05 01:04:16 +01:00
..
2009-01-09 03:39:43 -05:00
…
2008-10-16 16:53:13 +02:00
2008-12-12 11:08:42 +01:00
2009-02-05 01:04:16 +01:00
…
2009-01-04 18:19:37 +01:00
2008-12-31 18:07:42 -05:00
2009-01-04 13:23:07 +01:00
2009-01-04 18:19:37 +01:00
2009-01-04 13:23:04 +01:00
2009-01-04 13:23:04 +01:00
2009-01-02 17:46:24 +01:00
…
2009-01-06 13:34:03 +01:00
2008-10-12 12:37:32 +02:00
2008-12-20 09:15:47 +01:00
2008-12-16 20:36:44 +01:00
2008-10-20 08:52:41 -07:00
…
2008-10-22 22:55:23 -07:00
…
…
2009-01-04 13:23:05 +01:00
2009-01-04 13:23:05 +01:00
…
…
2008-10-16 16:53:13 +02:00
…
2009-01-26 14:27:18 +01:00
2008-10-29 08:02:28 +01:00