Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0e0ba76926c37f11f38670db0cb33728f502551e
Commit:     0e0ba76926c37f11f38670db0cb33728f502551e
Parent:     7770bddb27ea84519486d8bb5d35d36d580c451b
Author:     Catalin Marinas <[EMAIL PROTECTED]>
AuthorDate: Thu Feb 15 19:05:29 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Fri Feb 16 13:06:56 2007 +0000

    [ARM] 4201/1: SMP barriers pair needed for the secondary boot process
    
    In some situations, the pen_release store in platform_secondary_init()
    may stay forever in the write buffer while the CPU is waiting on the
    boot_lock to be released in boot_secondary(). The primary CPU could
    never see the pen_release update without the barriers.
    
    Signed-off-by: Catalin Marinas <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-realview/platsmp.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index 709a9b1..fce3596 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -59,6 +59,7 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
         * pen, then head off into the C entry point
         */
        pen_release = -1;
+       smp_wmb();
 
        /*
         * Synchronise with the boot thread.
@@ -102,6 +103,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct 
task_struct *idle)
 
        timeout = jiffies + (1 * HZ);
        while (time_before(jiffies, timeout)) {
+               smp_rmb();
                if (pen_release == -1)
                        break;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to