fix jiffy calculations in calibrate_delay_direct to handle overflow
commit 70a062286b9dfcbd24d2e11601aecfead5cf709a upstream. 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> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
23665d48ff
commit
ae03b63f92
@ -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…
x
Reference in New Issue
Block a user