Title: [7909] trunk/arch/blackfin: fix bug [#5735] - Disable local irq on core B until core B bit is set in cpu_online_mask.
Revision
7909
Author
adamliyi
Date
2009-12-02 05:20:59 -0500 (Wed, 02 Dec 2009)

Log Message

fix bug [#5735] - Disable local irq on core B until core B bit is set in cpu_online_mask.

Modified Paths

Diff

Modified: trunk/arch/blackfin/mach-bf561/smp.c (7908 => 7909)


--- trunk/arch/blackfin/mach-bf561/smp.c	2009-12-02 10:01:51 UTC (rev 7908)
+++ trunk/arch/blackfin/mach-bf561/smp.c	2009-12-02 10:20:59 UTC (rev 7909)
@@ -52,8 +52,6 @@
 
 void __cpuinit platform_secondary_init(unsigned int cpu)
 {
-	local_irq_disable();
-
 	/* Clone setup for peripheral interrupt sources from CoreA. */
 	bfin_write_SICB_IMASK0(bfin_read_SICA_IMASK0());
 	bfin_write_SICB_IMASK1(bfin_read_SICA_IMASK1());
@@ -70,11 +68,6 @@
 	bfin_write_SICB_IAR7(bfin_read_SICA_IAR7());
 	SSYNC();
 
-	local_irq_enable();
-
-	/* Calibrate loops per jiffy value. */
-	calibrate_delay();
-
 	/* Store CPU-private information to the cpu_data array. */
 	bfin_setup_cpudata(cpu);
 

Modified: trunk/arch/blackfin/mach-common/smp.c (7908 => 7909)


--- trunk/arch/blackfin/mach-common/smp.c	2009-12-02 10:01:51 UTC (rev 7908)
+++ trunk/arch/blackfin/mach-common/smp.c	2009-12-02 10:20:59 UTC (rev 7909)
@@ -408,9 +408,14 @@
 
 	setup_secondary(cpu);
 
+	platform_secondary_init(cpu);
+
 	local_irq_enable();
 
-	platform_secondary_init(cpu);
+	/* Calibrate loops per jiffy value.
+	 * IRQs need to be enabled here - D-cache can be invalidated
+	 * in timer irq handler, so core B can read correct jiffies. */
+	calibrate_delay();
 
 	cpu_idle();
 }
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to