diff options
author | Nishanth Aravamudan <nacc@us.ibm.com> | 2005-09-03 18:56:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:06:01 -0400 |
commit | 0287ebedfa032a57bb47f4bc5cb5e268ecd844ad (patch) | |
tree | a30b87a024e4cedcc0fdcb242e7511f8a4c22aaf /arch/ppc64/kernel/rtc.c | |
parent | 233ccd0d0452682edb51725410e0f8c0384e8b34 (diff) |
[PATCH] ppc64: replace schedule_timeout() with msleep_interruptible()
Use msleep_interruptible() instead of schedule_timeout() in ppc64-specific
code to cleanup/simplify the sleeping logic. Change the units of the
parameter of do_event_scan_all_cpus() to milliseconds from jiffies. The
return value of rtas_extended_busy_delay_time() was incorrectly being used
as a jiffies value (it is actually milliseconds), which is fixed by using
the value as a parameter to msleep_interruptible(). Also, use
rtas_extended_busy_delay_time() in another case where similar logic is
duplicated.
Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc64/kernel/rtc.c')
-rw-r--r-- | arch/ppc64/kernel/rtc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/ppc64/kernel/rtc.c b/arch/ppc64/kernel/rtc.c index d729fefa0df5..6ff52bc61325 100644 --- a/arch/ppc64/kernel/rtc.c +++ b/arch/ppc64/kernel/rtc.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
36 | #include <linux/bcd.h> | 36 | #include <linux/bcd.h> |
37 | #include <linux/interrupt.h> | 37 | #include <linux/interrupt.h> |
38 | #include <linux/delay.h> | ||
38 | 39 | ||
39 | #include <asm/io.h> | 40 | #include <asm/io.h> |
40 | #include <asm/uaccess.h> | 41 | #include <asm/uaccess.h> |
@@ -351,8 +352,7 @@ void rtas_get_rtc_time(struct rtc_time *rtc_tm) | |||
351 | return; /* delay not allowed */ | 352 | return; /* delay not allowed */ |
352 | } | 353 | } |
353 | wait_time = rtas_extended_busy_delay_time(error); | 354 | wait_time = rtas_extended_busy_delay_time(error); |
354 | set_current_state(TASK_INTERRUPTIBLE); | 355 | msleep_interruptible(wait_time); |
355 | schedule_timeout(wait_time); | ||
356 | error = RTAS_CLOCK_BUSY; | 356 | error = RTAS_CLOCK_BUSY; |
357 | } | 357 | } |
358 | } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); | 358 | } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); |
@@ -386,8 +386,7 @@ int rtas_set_rtc_time(struct rtc_time *tm) | |||
386 | if (in_interrupt()) | 386 | if (in_interrupt()) |
387 | return 1; /* probably decrementer */ | 387 | return 1; /* probably decrementer */ |
388 | wait_time = rtas_extended_busy_delay_time(error); | 388 | wait_time = rtas_extended_busy_delay_time(error); |
389 | set_current_state(TASK_INTERRUPTIBLE); | 389 | msleep_interruptible(wait_time); |
390 | schedule_timeout(wait_time); | ||
391 | error = RTAS_CLOCK_BUSY; | 390 | error = RTAS_CLOCK_BUSY; |
392 | } | 391 | } |
393 | } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); | 392 | } while (error == RTAS_CLOCK_BUSY && (__get_tb() < max_wait_tb)); |