summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2009-01-08 02:14:18 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-01-13 14:48:01 +1100
commit9fef3d2d15ae8ca24e4a145f2e189eea145d18c2 (patch)
treedeb3764686dcbeb5ab013ecf6183d55c514f216f /drivers/char
parenta1c5a8932bbb75b550deb156d890027827fc9d6e (diff)
downloadlinux-9fef3d2d15ae8ca24e4a145f2e189eea145d18c2.tar.gz
linux-9fef3d2d15ae8ca24e4a145f2e189eea145d18c2.tar.bz2
linux-9fef3d2d15ae8ca24e4a145f2e189eea145d18c2.zip
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>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/hvc_console.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index 5a8a4c28c867..f2685b747fb9 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -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;