Browse Source

hvc_console: Change an mb() to smp_mb() and add some comments

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>
Milton Miller 16 years ago
parent
commit
9fef3d2d15
1 changed files with 5 additions and 2 deletions
  1. 5 2
      drivers/char/hvc_console.c

+ 5 - 2
drivers/char/hvc_console.c

@@ -876,8 +876,11 @@ static int hvc_init(void)
 		goto stop_thread;
 		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;
 	hvc_driver = drv;
 	return 0;
 	return 0;