public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: William Lee Irwin III <wli@holomorphy.com>
To: Jesse Barnes <jbarnes@engr.sgi.com>,
	Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Nick Piggin <nickpiggin@yahoo.com.au>
Subject: Re: 2.6.8-rc3-mm2
Date: Mon, 9 Aug 2004 13:43:57 -0700	[thread overview]
Message-ID: <20040809204357.GX11200@holomorphy.com> (raw)
In-Reply-To: <20040809195323.GU11200@holomorphy.com>

On Mon, Aug 09, 2004 at 12:17:50PM -0700, Jesse Barnes wrote:
>> If I apply everything up to and including schedstat-v10.patch, it
>> boots fine. So it might be sched-init_idle-fork_by_hand-consolidation.patch
>> or something nearby...  Just reverting the sched-single-array.patch
>> wasn't enough.

On Mon, Aug 09, 2004 at 12:53:23PM -0700, William Lee Irwin III wrote:
> I can reproduce here (ia64/Altix). Fixing.

It comes up with the following applied. Now distilling into a bugfix.


-- wli


--- mm2-2.6.8-rc3/arch/ia64/kernel/smpboot.c.orig	2004-08-10 05:24:20.000000000 -0700
+++ mm2-2.6.8-rc3/arch/ia64/kernel/smpboot.c	2004-08-10 06:23:40.000000000 -0700
@@ -356,65 +356,48 @@
 	return cpu_idle();
 }
 
-struct create_idle {
-	struct task_struct *idle;
-	struct completion done;
-	int cpu;
-};
-
-void
-do_fork_idle(void *_c_idle)
-{
-	struct create_idle *c_idle = _c_idle;
-
-	c_idle->idle = fork_idle(c_idle->cpu);
-	complete(&c_idle->done);
-}
-
 static int __devinit
 do_boot_cpu (int sapicid, int cpu)
 {
 	int timeout;
-	struct create_idle c_idle = {
-		.cpu	= cpu,
-		.done	= COMPLETION_INITIALIZER(c_idle.done),
-	};
-	DECLARE_WORK(work, do_fork_idle, &c_idle);
 	/*
 	 * We can't use kernel_thread since we must avoid to reschedule the child.
 	 */
-	if (!keventd_up() || current_is_keventd())
-		work.func(work.data);
-	else {
-		schedule_work(&work);
-		wait_for_completion(&c_idle.done);
-	}
-
-	if (IS_ERR(c_idle.idle))
+	printk("entered do_boot_cpu(%d, %d)\n", sapicid, cpu);
+	printk("about to fork_idle(%d)\n", cpu);
+	task_for_booting_cpu = fork_idle(cpu);
+	printk("survived fork_idle(%d)\n", cpu);
+	if (IS_ERR(task_for_booting_cpu))
 		panic("failed fork for CPU %d", cpu);
-	task_for_booting_cpu = c_idle.idle;
-
+	mb();
 	Dprintk("Sending wakeup vector %lu to AP 0x%x/0x%x.\n", ap_wakeup_vector, cpu, sapicid);
 
+	printk("about to platform_send_ipi(%d, %p, IA64_IPI_DM_INT, 0)\n", cpu, ap_wakeup_vector);
 	platform_send_ipi(cpu, ap_wakeup_vector, IA64_IPI_DM_INT, 0);
+	printk("survived platform_send_ipi(%d, %p, IA64_IPI_DM_INT, 0)\n", cpu, ap_wakeup_vector);
 
 	/*
 	 * Wait 10s total for the AP to start
 	 */
-	Dprintk("Waiting on callin_map ...");
+	printk("Waiting on callin_map on cpu %d for cpu %d...",
+		smp_processor_id(), cpu);
 	for (timeout = 0; timeout < 100000; timeout++) {
 		if (cpu_isset(cpu, cpu_callin_map))
 			break;  /* It has booted */
 		udelay(100);
 	}
-	Dprintk("\n");
+	printk("\n");
+	printk("finished waiting on callin_map\n");
 
 	if (!cpu_isset(cpu, cpu_callin_map)) {
-		printk(KERN_ERR "Processor 0x%x/0x%x is stuck.\n", cpu, sapicid);
+		printk("Processor 0x%x/0x%x is stuck.\n", cpu, sapicid);
 		ia64_cpu_to_sapicid[cpu] = -1;
 		cpu_clear(cpu, cpu_online_map);  /* was set in smp_callin() */
+		printk("error return from do_boot_cpu(%d, %d)\n", sapicid, cpu);
 		return -EINVAL;
-	}
+	} else
+		printk("Processor %d/%d came up\n", cpu, sapicid);
+	printk("normal return from do_boot_cpu(%d, %d)\n", sapicid, cpu);
 	return 0;
 }
 
@@ -655,26 +638,40 @@
 	int ret;
 	int sapicid;
 
+	printk("entered __cpu_up(%u)\n", cpu);
 	sapicid = ia64_cpu_to_sapicid[cpu];
-	if (sapicid == -1)
+	if (sapicid == -1) {
+		printk("invalid SAPIC ID\n");
+		printk("error return from __cpu_up(%u)\n", cpu);
 		return -EINVAL;
+	}
 
 	/*
 	 * Already booted.. just enable and get outa idle lool
 	 */
 	if (cpu_isset(cpu, cpu_callin_map))
 	{
+		printk("%u already set in cpu_callin_map\n", cpu);
+		printk("about to cpu_enable(%u)\n", cpu);
 		cpu_enable(cpu);
+		printk("survived cpu_enable(%u)\n", cpu);
 		local_irq_enable();
+		printk("looping while (!cpu_isset(%u, cpu_online_map))\n", cpu);
 		while (!cpu_isset(cpu, cpu_online_map))
 			mb();
+		printk("finished looping while (!cpu_isset(%u, cpu_online_map))\n", cpu);
+		printk("successful return from __cpu_up(%u)\n", cpu);
 		return 0;
 	}
 	/* Processor goes to start_secondary(), sets online flag */
+	printk("about to call do_boot_cpu(%d, %d)\n", sapicid, cpu);
 	ret = do_boot_cpu(sapicid, cpu);
-	if (ret < 0)
+	printk("survived call to do_boot_cpu(%d, %d)\n", sapicid, cpu);
+	if (ret < 0) {
+		printk("error return from __cpu_up(%u)\n", cpu);
 		return ret;
-
+	}
+	printk("successful return from __cpu_up(%u)\n", cpu);
 	return 0;
 }
 
--- mm2-2.6.8-rc3/scripts/package/mkspec.orig	2004-08-10 04:46:56.000000000 -0700
+++ mm2-2.6.8-rc3/scripts/package/mkspec	2004-08-10 04:47:29.000000000 -0700
@@ -57,14 +57,14 @@
 echo "%build"
 
 if ! $PREBUILT; then
-echo "make clean && make"
+echo "make clean && make %{_smp_mflags}"
 echo ""
 fi
 
 echo "%install"
 echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib $RPM_BUILD_ROOT/lib/modules'
 
-echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make modules_install'
+echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{_smp_mflags} modules_install'
 echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/vmlinuz-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
 
 echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
--- mm2-2.6.8-rc3/kernel/fork.c.orig	2004-08-10 06:02:27.000000000 -0700
+++ mm2-2.6.8-rc3/kernel/fork.c	2004-08-10 06:03:11.000000000 -0700
@@ -1190,7 +1190,7 @@
 	goto fork_out;
 }
 
-task_t * __init fork_idle(int cpu)
+task_t *fork_idle(int cpu)
 {
 	task_t *task;
 	struct pt_regs regs;

  reply	other threads:[~2004-08-09 20:49 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-08 22:29 2.6.8-rc3-mm2 Andrew Morton
2004-08-08 22:55 ` 2.6.8-rc3-mm2 Brice Goglin
2004-08-08 23:04   ` 2.6.8-rc3-mm2 Andrew Morton
2004-08-08 23:17     ` 2.6.8-rc3-mm2 Andrew Morton
2004-08-09  2:17 ` [patch] 2.6.8-rc3-mm2: sk98lin/skge.c doesn't compile with PROC_FS=n Adrian Bunk
2004-08-09  5:14 ` 2.6.8-rc3-mm2 (compile stats) John Cherry
2004-08-09  8:20 ` 2.6.8-rc3-mm2 Rick Lindsley
2004-08-09  8:25   ` 2.6.8-rc3-mm2 Andrew Morton
2004-08-09  8:29   ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09  8:33     ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09  8:43 ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09  8:49 ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09 10:36 ` 2.6.8-rc3-mm2 Espen Fjellvær Olsen
2004-08-09 12:14   ` 2.6.8-rc3-mm2 Vladimir V. Saveliev
2004-08-09 17:51   ` 2.6.8-rc3-mm2 Hans Reiser
2004-08-09 17:50 ` 2.6.8-rc3-mm2 Johannes Stezenbach
2004-08-09 18:22 ` 2.6.8-rc3-mm2 Jesse Barnes
2004-08-09 18:25   ` 2.6.8-rc3-mm2 Andrew Morton
2004-08-09 18:32     ` 2.6.8-rc3-mm2 Jesse Barnes
2004-08-09 19:17       ` 2.6.8-rc3-mm2 Jesse Barnes
2004-08-09 19:53         ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09 20:43           ` William Lee Irwin III [this message]
2004-08-09 21:10             ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-09 22:45               ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  6:34                 ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  8:02                   ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  8:30                     ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10  8:56                       ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  9:00                         ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10  9:06                           ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  8:04                   ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10  8:08                     ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10  8:17                       ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  8:23                         ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  9:00                     ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  9:38                       ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 10:02                         ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 11:53                           ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 12:52                             ` 2.6.8-rc3-mm2 V13
2004-08-10 12:51                               ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 12:55                                 ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10 12:56                                   ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 13:01                                     ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10 13:10                                       ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10 13:12                                       ` 2.6.8-rc3-mm2 Russell King
2004-08-10 13:16                                         ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10 13:39                                           ` 2.6.8-rc3-mm2 Russell King
2004-08-10 13:48                                             ` 2.6.8-rc3-mm2 Ingo Molnar
2004-08-10  6:32 ` 2.6.8-rc3-mm2 William Lee Irwin III
2004-08-10  8:34 ` 2.6.8-rc3-mm2 Rick Lindsley
2004-08-10 14:55   ` 2.6.8-rc3-mm2 Martin J. Bligh

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=20040809204357.GX11200@holomorphy.com \
    --to=wli@holomorphy.com \
    --cc=akpm@osdl.org \
    --cc=jbarnes@engr.sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    /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