lkml.org 
[lkml]   [2004]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
Subject[PATCH 2.6.10-rc2-bk1] m32r: Fix a boot hang of UP kernel
From
Hi,

Here is a patch of arch/m32r/kernel/time.c for m32r.

This patch fixes a hanging up at boot time of 2.6.10-rc2 m32r UP kernel.
It was due to a lack of update_process_times() in time.c.

Such a boot hang was caused only in UP systems, because
update_process_times() had been executed correctly
in smp_local_timer_interrupt() of arch/m32r/kernel/smp.c for SMP.

Thanks.

* arch/m32r/kernel/time.c:
- UP: Fix do_timer_interrupt() to use update_process_times().
- UP: Move profile_tick() into do_timer_interrupt().
- Change __inline__ to inline.

Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
---

arch/m32r/kernel/time.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)

--- a/arch/m32r/kernel/time.c 2004-10-19 06:54:55.000000000 +0900
+++ b/arch/m32r/kernel/time.c 2004-11-17 12:04:14.000000000 +0900
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(do_settimeofday);
* BUG: This routine does not handle hour overflow properly; it just
* sets the minutes. Usually you won't notice until after reboot!
*/
-static __inline__ int set_rtc_mmss(unsigned long nowtime)
+static inline int set_rtc_mmss(unsigned long nowtime)
{
return 0;
}
@@ -205,11 +205,17 @@ static long last_rtc_update = 0;
* timer_interrupt() needs to keep up the real-time clock,
* as well as call the "do_timer()" routine every clocktick
*/
-static __inline__ void do_timer_interrupt(int irq, void *dev_id,
- struct pt_regs * regs)
+static inline void
+do_timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
{
+#ifndef CONFIG_SMP
+ profile_tick(CPU_PROFILING, regs);
+#endif
do_timer(regs);

+#ifndef CONFIG_SMP
+ update_process_times(user_mode(regs));
+#endif
/*
* If we have an externally synchronized Linux clock, then update
* CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be
@@ -241,10 +247,6 @@ irqreturn_t timer_interrupt(int irq, voi
do_timer_interrupt(irq, NULL, regs);
write_sequnlock(&xtime_lock);

-#ifndef CONFIG_SMP
- profile_tick(CPU_PROFILING, regs);
-#endif
-
return IRQ_HANDLED;
}

@@ -314,4 +316,3 @@ unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
-
--
Hirokazu Takata <takata@linux-m32r.org>
Linux/M32R Project: http://www.linux-m32r.org/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:08    [W:0.036 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site