fix jiffy calculations in calibrate_delay_direct to handle overflow
Fixes a hang when booting as dom0 under Xen, when jiffies can be quite large by the time the kernel init gets this far. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com> [jbeulich@novell.com: !time_after() -> time_before_eq() as suggested by Jiri Slaby] Signed-off-by: Jan Beulich <jbeulich@novell.com> Cc: Jiri Slaby <jslaby@suse.cz> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: stable@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6148a47ac3
commit
70a062286b
|
@ -66,7 +66,7 @@ static unsigned long __cpuinit calibrate_delay_direct(void)
|
|||
pre_start = 0;
|
||||
read_current_timer(&start);
|
||||
start_jiffies = jiffies;
|
||||
while (jiffies <= (start_jiffies + 1)) {
|
||||
while (time_before_eq(jiffies, start_jiffies + 1)) {
|
||||
pre_start = start;
|
||||
read_current_timer(&start);
|
||||
}
|
||||
|
@ -74,8 +74,8 @@ static unsigned long __cpuinit calibrate_delay_direct(void)
|
|||
|
||||
pre_end = 0;
|
||||
end = post_start;
|
||||
while (jiffies <=
|
||||
(start_jiffies + 1 + DELAY_CALIBRATION_TICKS)) {
|
||||
while (time_before_eq(jiffies, start_jiffies + 1 +
|
||||
DELAY_CALIBRATION_TICKS)) {
|
||||
pre_end = end;
|
||||
read_current_timer(&end);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue