public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: kladit@t-online.de (Klaus Dittrich),
	Linus Torvalds <torvalds@transmeta.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.4.7p6 hang
Date: 11 Jul 2001 14:56:43 +0200	[thread overview]
Message-ID: <shslmlv62us.fsf@charged.uio.no> (raw)
In-Reply-To: <200107110849.f6B8nlm00414@df1tlpc.local.here>
In-Reply-To: kladit@t-online.de's message of "Wed, 11 Jul 2001 10:49:47 +0200 (METDST)"

>>>>> " " == Klaus Dittrich <kladit@t-online.de> writes:

     > Kernel: 2.4.7p5 or 2.4.7p6 System: PII-SMP, BX-Chipset

     > The kernel boots up to the message

     > ..  Linux NET4.0 for Linux 2.4 Based upon Swansea University
     > Computer Society NET3.039

     > and then stops.

     > I actually use 2.4.7p3 without problems.

I have the same problem on my setup. To me, it looks like the loop in
spawn_ksoftirqd() is suffering from some sort of atomicity problem.

I managed to band-aid over the problem by replacing the loop with a
semaphore which the child clears when it has been initialized (as per
the appended patch).

Linus?

Cheers,
  Trond

--- linux-2.4.7-smp/kernel/softirq.c.orig	Wed Jul 11 10:31:50 2001
+++ linux-2.4.7-smp/kernel/softirq.c	Wed Jul 11 14:43:03 2001
@@ -371,6 +371,8 @@
 	}
 }
 
+static DECLARE_MUTEX_LOCKED(ksoftirqd_start);
+
 static int ksoftirqd(void * __bind_cpu)
 {
 	int bind_cpu = *(int *) __bind_cpu;
@@ -391,6 +393,7 @@
 	mb();
 
 	ksoftirqd_task(cpu) = current;
+	up(&ksoftirqd_start);
 
 	for (;;) {
 		if (!softirq_pending(cpu))
@@ -416,12 +419,8 @@
 		if (kernel_thread(ksoftirqd, (void *) &cpu,
 				  CLONE_FS | CLONE_FILES | CLONE_SIGNAL) < 0)
 			printk("spawn_ksoftirqd() failed for cpu %d\n", cpu);
-		else {
-			while (!ksoftirqd_task(cpu_logical_map(cpu))) {
-				current->policy |= SCHED_YIELD;
-				schedule();
-			}
-		}
+		else
+			down(&ksoftirqd_start);
 	}
 
 	return 0;

  reply	other threads:[~2001-07-11 12:57 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-11  8:49 2.4.7p6 hang Klaus Dittrich
2001-07-11 12:56 ` Trond Myklebust [this message]
2001-07-11 13:38   ` Andrew Morton
2001-07-11 14:22     ` Trond Myklebust
2001-07-11 15:58       ` Andrea Arcangeli
2001-07-11 16:30         ` Trond Myklebust
2001-07-11 16:53           ` Andrea Arcangeli
2001-07-11 17:19         ` Mike Kravetz
2001-07-11 18:33         ` Josh Logan
2001-07-11 19:05           ` Andrea Arcangeli
2001-07-11 19:28             ` Josh Logan
2001-07-16 19:16               ` Josh Logan
2001-07-16 19:34                 ` David Ford
2001-07-16 21:07                   ` Josh Logan
2001-07-11 19:27           ` David Ford
2001-07-12  0:17         ` Johan Kullstam
2001-07-11 15:49   ` Andrea Arcangeli

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=shslmlv62us.fsf@charged.uio.no \
    --to=trond.myklebust@fys.uio.no \
    --cc=kladit@t-online.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.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