- voyager-pda-fixes.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     voyager: pda fixes
has been removed from the -mm tree.  Its filename was
     voyager-pda-fixes.patch

This patch was dropped because it is obsolete

------------------------------------------------------
Subject: voyager: pda fixes
From: James Bottomley <James.Bottomley@xxxxxxxxxxxx>

OK, I found the problem on voyager.  It's the way the CPU gets the start
pda, which it has to have at start of day because CPU number is in it.
I've attached the fix for voyager with the current code.

However, I have to say that the current GDT pivot is really nasty.  It's
horrible to have three separate GDTs:  the boot one, the CPU one and
then the per-cpu one and to pivot twice.  I really think we could avoid
changing the PDA for the cpu GDT at all and simply pivot the GDT once in
initialize_secondary().  Unless there's a reason not to do this, I'll
look into simplifying all this PDA code along those lines.

Cc: Andi Kleen <ak@xxxxxxx>
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 arch/i386/kernel/cpu/common.c        |    7 +++++++
 arch/i386/mach-voyager/voyager_smp.c |   12 +++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff -puN arch/i386/kernel/cpu/common.c~voyager-pda-fixes arch/i386/kernel/cpu/common.c
--- a/arch/i386/kernel/cpu/common.c~voyager-pda-fixes
+++ a/arch/i386/kernel/cpu/common.c
@@ -780,6 +780,9 @@ void __cpuinit secondary_cpu_init(void)
 	int cpu = smp_processor_id();
 	struct task_struct *curr = current;
 
+	printk("ABOUT TO CALL _CPU_INIT in SECONDARY CPU INIT, CPU%d\n",
+	       cpu);
+
 	_cpu_init(cpu, curr);
 }
 
@@ -794,6 +797,8 @@ void __cpuinit cpu_init(void)
 	int cpu = smp_processor_id();
 	struct task_struct *curr = current;
 
+	printk("PRIMARY CPU ABOUT to INIT to CPU %d\n", cpu);
+
 	/* Set up the real GDT and PDA, so we can transition from the
 	   boot versions. */
 	if (!init_gdt(cpu, curr)) {
@@ -803,6 +808,8 @@ void __cpuinit cpu_init(void)
 	}
 
 	_cpu_init(cpu, curr);
+
+	printk("GDT SWITCHED, CPU IS NOW %d\n", smp_processor_id());
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
diff -puN arch/i386/mach-voyager/voyager_smp.c~voyager-pda-fixes arch/i386/mach-voyager/voyager_smp.c
--- a/arch/i386/mach-voyager/voyager_smp.c~voyager-pda-fixes
+++ a/arch/i386/mach-voyager/voyager_smp.c
@@ -421,9 +421,6 @@ find_smp_config(void)
 	/* Finally tell the firmware that we're driving */
 	outb(inb(VOYAGER_SUS_IN_CONTROL_PORT) | VOYAGER_IN_CONTROL_FLAG,
 	     VOYAGER_SUS_IN_CONTROL_PORT);
-
-	current_thread_info()->cpu = boot_cpu_id;
-	write_pda(cpu_number, boot_cpu_id);
 }
 
 /*
@@ -530,6 +527,8 @@ static void __init
 do_boot_cpu(__u8 cpu)
 {
 	struct task_struct *idle;
+	extern struct i386_pda *start_pda;
+
 	int timeout;
 	unsigned long flags;
 	int quad_boot = (1<<cpu) & voyager_quad_processors 
@@ -589,6 +588,7 @@ do_boot_cpu(__u8 cpu)
 		return;
 	}
 
+	start_pda = cpu_pda(cpu);
 	irq_ctx_init(cpu);
 
 	/* Note: Don't modify initial ss override */
@@ -1973,6 +1973,8 @@ smp_cpus_done(unsigned int max_cpus)
 void __init
 smp_setup_processor_id(void)
 {
-	current_thread_info()->cpu = hard_smp_processor_id();
-	write_pda(cpu_number, hard_smp_processor_id());
+	u8 cpu = hard_smp_processor_id();
+
+	current_thread_info()->cpu = cpu;
+	write_pda(cpu_number, cpu);
 }
_

Patches currently in -mm which might be from James.Bottomley@xxxxxxxxxxxx are

origin.patch
git-scsi-misc.patch
git-scsi-target.patch
git-sas.patch
voyager-pda-fixes.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux