hvc_console: Change an mb() to smp_mb() and add some comments
authorMilton Miller <miltonm@bga.com>
Thu, 8 Jan 2009 02:14:18 +0000 (02:14 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 13 Jan 2009 03:48:01 +0000 (14:48 +1100)
I remember some history on this barrier.  There was a race between
open via /dev/console and the tty being fully setup.  Its also why
there is a temporary variable and the global is assigned at the end
of the function.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
drivers/char/hvc_console.c

index 5a8a4c2..f2685b7 100644 (file)
@@ -876,8 +876,11 @@ static int hvc_init(void)
                goto stop_thread;
        }
 
-       /* FIXME: This mb() seems completely random.  Remove it. */
-       mb();
+       /*
+        * Make sure tty is fully registered before allowing it to be
+        * found by hvc_console_device.
+        */
+       smp_mb();
        hvc_driver = drv;
        return 0;