From patchwork Thu Jan 8 12:14:18 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Milton Miller X-Patchwork-Id: 17341 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id CE99CDE8B4 for ; Thu, 8 Jan 2009 23:20:42 +1100 (EST) X-Original-To: linuxppc-dev@ozlabs.org Delivered-To: linuxppc-dev@ozlabs.org Received: from mercury.realtime.net (mercury.realtime.net [205.238.132.86]) by ozlabs.org (Postfix) with ESMTP id C9637DE0E4 for ; Thu, 8 Jan 2009 23:15:04 +1100 (EST) Received: from miltonm.aip.bga.com (01-056.251.popsite.net [205.232.218.56]) by realtime.net (Realtime Communications Advanced E-Mail Services V9.2) with ESMTP id 230062930-1817707 for multiple; Thu, 08 Jan 2009 06:14:18 -0600 Subject: [PATCH 4/4] hvc_console: comment mb and make it an smp_ one To: Christian Borntraeger , Benjiman Herrenschmidt From: Milton Miller Message-Id: In-Reply-To: : Date: Thu, 08 Jan 2009 06:14:18 -0600 X-Originating-IP: 205.232.218.56 Cc: linuxppc-dev list , lkml , Alan Cox X-BeenThere: linuxppc-dev@ozlabs.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org 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 Index: work.git/drivers/char/hvc_console.c =================================================================== --- work.git.orig/drivers/char/hvc_console.c 2009-01-08 04:33:39.000000000 -0600 +++ work.git/drivers/char/hvc_console.c 2009-01-08 04:35:09.000000000 -0600 @@ -875,8 +875,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;