From patchwork Sat Jun 6 02:34:07 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David VomLehn X-Patchwork-Id: 28178 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@bilbo.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id 741C1B70AD for ; Sat, 6 Jun 2009 12:34:40 +1000 (EST) Received: by ozlabs.org (Postfix) id 68325DDDA2; Sat, 6 Jun 2009 12:34:40 +1000 (EST) Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 07694DDDA0 for ; Sat, 6 Jun 2009 12:34:40 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753913AbZFFCeY (ORCPT ); Fri, 5 Jun 2009 22:34:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754011AbZFFCeX (ORCPT ); Fri, 5 Jun 2009 22:34:23 -0400 Received: from sj-iport-1.cisco.com ([171.71.176.70]:55021 "EHLO sj-iport-1.cisco.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753885AbZFFCeE (ORCPT ); Fri, 5 Jun 2009 22:34:04 -0400 X-IronPort-AV: E=Sophos;i="4.41,314,1241395200"; d="scan'208";a="195713281" Received: from sj-dkim-3.cisco.com ([171.71.179.195]) by sj-iport-1.cisco.com with ESMTP; 06 Jun 2009 02:34:07 +0000 Received: from sj-core-2.cisco.com (sj-core-2.cisco.com [171.71.177.254]) by sj-dkim-3.cisco.com (8.12.11/8.12.11) with ESMTP id n562Y7U0009868; Fri, 5 Jun 2009 19:34:07 -0700 Received: from cuplxvomd02.corp.sa.net ([64.101.20.155]) by sj-core-2.cisco.com (8.13.8/8.13.8) with ESMTP id n562Y7Fj025103; Sat, 6 Jun 2009 02:34:07 GMT Date: Fri, 5 Jun 2009 19:34:07 -0700 From: David VomLehn To: linux-kernel@vger.kernel.org Cc: akpm@linux-foundation.org, linux-usb@vger.kernel.org, greg@kroah.com, linux-scsi@vger.kernel.org, netdev@vger.kernel.org, arjan@infradead.org Subject: [PATCH 3/7] initdev:kernel:Await console discovery, v6 Message-ID: <20090606023407.GA5695@cuplxvomd02.corp.sa.net> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; l=3378; t=1244255647; x=1245119647; c=relaxed/simple; s=sjdkim3002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=dvomlehn@cisco.com; z=From:=20David=20VomLehn=20 |Subject:=20[PATCH=203/7]=20initdev=3Akernel=3AAwait=20cons ole=20discovery,=20v6 |Sender:=20; bh=gjfk3hjcW2HNyNyvV9bcFPZLCdzCax4qcLuFzKcxsS0=; b=isazZgmE8WvgU/cEJEcHx890SSgHsmJp/Tta4bMSvkS9YHB0IWQtNgesq+ iHyTfR3Cmbwey1OJdE85x6HuUEUNuBaXvOcgps3ckLz0Uvo5oQySJYOjV6S7 s3G3Ulp7p0; Authentication-Results: sj-dkim-3; header.From=dvomlehn@cisco.com; dkim=pass ( sig from cisco.com/sjdkim3002 verified; ); Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Wait for the console device to become available. History v6 Changed BOOTDEV_* to INITDEV_*. v5.1 Corrected call to initdev_register() to be initdev_registered(). v5 Change bootdev_* to initdev_*. v4 Use new hotplug synchronization infrastructure. Include Braille console support. v3.2 Use only a single new command line parameter by adding the possible value "forever". Add message specifying the parameter to modify to increase the delay for console initialization v3.1 Correct the abbreviation for milliseconds in Documentation/kernel-parameters.txt to be "ms", not "mS". Thanks to Peter Anvin for this. v3 Increase the default delay to 1 second and add kernel command line parameters to override the default delay. Thanks to David Brownell for his helpful suggestions. v2 Wait for the preferred console rather than any console. Make the delay interval a tunable. v1 Initial version Signed-off-by: David VomLehn --- drivers/accessibility/braille/braille_console.c | 2 + kernel/printk.c | 29 ++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/accessibility/braille/braille_console.c b/drivers/accessibility/braille/braille_console.c index d672cfe..6d1693f 100644 --- a/drivers/accessibility/braille/braille_console.c +++ b/drivers/accessibility/braille/braille_console.c @@ -378,6 +378,8 @@ int braille_register_console(struct console *console, int index, braille_co = console; register_keyboard_notifier(&keyboard_notifier_block); register_vt_notifier(&vt_notifier_block); + + initdev_registered(INITDEV_CONSOLE_TYPE); return 0; } diff --git a/kernel/printk.c b/kernel/printk.c index 5052b54..7cdc91c 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -33,6 +33,7 @@ #include #include #include +#include #include @@ -1075,8 +1076,10 @@ void console_unblank(void) /* * Return the console tty driver structure and its associated index + * @index: Pointer to the device index + * Returns NULL if no driver available, otherwise a pointer to the TTY driver. */ -struct tty_driver *console_device(int *index) +struct tty_driver *_console_device(int *index) { struct console *c; struct tty_driver *driver = NULL; @@ -1094,6 +1097,29 @@ struct tty_driver *console_device(int *index) } /* + * Returns true if all specific consoles are registered, false otherwise + */ +static bool have_all_consoles(void) +{ + struct tty_driver *driver; + int index; + + driver = _console_device(&index); + + return driver != NULL; +} + +struct tty_driver *console_device(int *index) +{ + struct tty_driver *driver; + initdev_wait(INITDEV_CONSOLE_TYPE, have_all_consoles); + + driver = _console_device(index); + + return driver; +} + +/* * Prevent further output on the passed console device so that (for example) * serial drivers can disable console output before suspending a port, and can * re-enable output afterwards. @@ -1230,6 +1256,7 @@ void register_console(struct console *console) spin_unlock_irqrestore(&logbuf_lock, flags); } release_console_sem(); + initdev_registered(INITDEV_CONSOLE_TYPE); } EXPORT_SYMBOL(register_console);