From: Andrew Morton <akpm@digeo.com>
To: Dave Hansen <haveblue@us.ibm.com>
Cc: lkml <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Ingo Molnar <mingo@redhat.com>
Subject: Re: 2.5.40-mm2
Date: Sun, 06 Oct 2002 14:55:29 -0700 [thread overview]
Message-ID: <3DA0B151.6EF8C8D9@digeo.com> (raw)
In-Reply-To: <3DA0A144.8070301@us.ibm.com>
Dave Hansen wrote:
>
> Andrew Morton wrote:
> > Ingo said that his 2.4-based per-cpu-pages patch was beneficial to
> > specweb, but nobody has tested these patches with specweb. Hint.
>
> cc'ing Ingo, because I think this might be related to the timer bh
> removal.
>
> 2.5.40 doesn't last very long under Specweb. It always dies out with
> one of these oopses after a little while:
>
> CPU: 3
> EIP: 0060:[<801204a9>] Not tainted
> EFLAGS: 00010006
> EIP is at run_timer_tasklet+0xcd/0x13c
Well from a quick peek, there is some funny stuff happening in the
timer code.
- del_timer_sync() iterates across all CPUs, but does not do
actually _do_ anything for each CPU. (I suspect this may
be the source of your crash - del_timer_sync() is bust)
- the back-to-back preempt_disable()/preempt_enable() is
unusual. What's that for?
- __run_timers() is doing spin_unlock_irq() inside spin_lock_irqsave().
That's probably not a bug in this context, but it's a wart.
This help?
--- 2.5.40/kernel/timer.c~timer-tricks Sun Oct 6 14:50:39 2002
+++ 2.5.40-akpm/kernel/timer.c Sun Oct 6 14:52:34 2002
@@ -265,20 +265,19 @@ repeat:
*/
int del_timer_sync(timer_t *timer)
{
- tvec_base_t *base = tvec_bases;
int i, ret;
ret = del_timer(timer);
for (i = 0; i < NR_CPUS; i++) {
+ tvec_base_t *base;
+
if (!cpu_online(i))
continue;
+ base = tvec_bases + i;
if (base->running_timer == timer) {
- while (base->running_timer == timer) {
+ while (base->running_timer == timer)
cpu_relax();
- preempt_disable();
- preempt_enable();
- }
break;
}
base++;
@@ -359,9 +358,9 @@ repeat:
#if CONFIG_SMP
base->running_timer = timer;
#endif
- spin_unlock_irq(&base->lock);
+ spin_unlock_irqrestore(&base->lock, flags);
fn(data);
- spin_lock_irq(&base->lock);
+ spin_lock_irqsave(&base->lock, flags);
goto repeat;
}
++base->timer_jiffies;
.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
next prev parent reply other threads:[~2002-10-06 21:55 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-06 18:47 2.5.40-mm2 Andrew Morton
2002-10-06 20:47 ` 2.5.40-mm2 Dave Hansen
2002-10-06 21:55 ` Andrew Morton [this message]
2002-10-06 22:07 ` 2.5.40-mm2 Andrew Morton
2002-10-06 22:11 ` 2.5.40-mm2 Andrew Morton
2002-10-07 5:46 ` 2.5.40-mm2 Dave Hansen
2002-10-06 22:23 ` 2.5.40-mm2 Robert Love
2002-10-06 22:33 ` 2.5.40-mm2 Andrew Morton
2002-10-06 22:38 ` 2.5.40-mm2 Robert Love
2002-10-08 11:05 ` 2.5.40-mm2 Ingo Molnar
2002-10-08 16:23 ` 2.5.40-mm2 Dave Hansen
2002-10-08 16:43 ` 2.5.40-mm2 Dave Hansen
2002-10-08 16:56 ` 2.5.40-mm2 Andrew Morton
2002-10-09 8:12 ` 2.5.40-mm2 Ingo Molnar
2002-10-07 17:45 ` 2.5.40-mm2 Badari Pulavarty
2002-10-07 17:55 ` 2.5.40-mm2 Jens Axboe
2002-10-07 18:23 ` 2.5.40-mm2 Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3DA0B151.6EF8C8D9@digeo.com \
--to=akpm@digeo.com \
--cc=haveblue@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox