public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Baptiste Malguy <baptiste@malguy.net>
To: linux-kernel@vger.kernel.org
Cc: Sebastian Schmidt <yath@yath.eu.org>,
	Benjamin Reed <breed@almaden.ibm.com>
Subject: [PATCH] VT driver/char/console.c, kernel 2.4.22
Date: Sat, 29 Nov 2003 00:49:50 +0100	[thread overview]
Message-ID: <3FC7DF1E.3090807@malguy.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 1597 bytes --]

Hello,

Abstract:
-----------

This patch makes effective the ability to redirect kernel messages to a 
specific VT through
the 'console=' argument. It is already supposed to work (that is, kernel 
messages only appear
on /dev/tty1 or /dev/tty2 or ...)  but actually does not (messages are 
always sent to the
foreground console, that is /dev/tty or /dev/tty0).

Sebastian Schmidt <yath -at- yath.eu.org> already noticed the problem in 
March 2003.
Benjamin Reed <breed -at- almaden.ibm.com> wrote a patch two years ago 
to correct this.
Here is a link to his post: 
http://www.ussg.iu.edu/hypermail/linux/kernel/0108.2/1455.html
It seems have never been taken in account.

The patch I made is almost based on Benjamin's patch, completing its 
effectiveness via
vt_console_setup().

Relative comment:
---------------------

In relation to this patch, I want to say that many many websites, FAQs, 
... say that you must
have something like console="/dev/ttyX CONSOLE=/dev/ttyN" to redirect 
the kernel and init
messages.

About 'CONSOLE=', that's true because this is a environment variable 
that /sbin/init obtains.
About 'console=', it's completly wrong ! 'console=' expects a driver 
name (example: "tty",
"tty1", "ttyS0"), not device file name. Only the Linux source code 
reading and a few websites
says the right usage of 'console='.

Question
-----------
Is the way I attached the patch "correct"  ? Must I Cc: it to Marcello 
or someone else ? I didn't
find the ideal maintainer in linux/MAINTAINERS.

Bye.

-- 
Baptiste Malguy - http://baptiste.malguy.net
Ingénieur en informatique libre


[-- Attachment #2: console-kmsg.diff --]
[-- Type: text/plain, Size: 2836 bytes --]

*** linux-2.4.22/drivers/char/console.c	2002-11-29 00:53:12.000000000 +0100
--- work/linux-2.4.22-bm1/drivers/char/console.c	2003-11-28 16:45:58.000000000 +0100
***************
*** 144,149 ****
--- 144,150 ----
  static int con_open(struct tty_struct *, struct file *);
  static void vc_init(unsigned int console, unsigned int rows,
  		    unsigned int cols, int do_clear);
+ static void con_setup_vt(unsigned int currcons);
  static void blank_screen(unsigned long dummy);
  static void gotoxy(int currcons, int new_x, int new_y);
  static void save_cur(int currcons);
***************
*** 2178,2187 ****
--- 2179,2203 ----
  	return MKDEV(TTY_MAJOR, c->index ? c->index : fg_console + 1);
  }
  
+ int vt_console_setup(struct console *co, char *options)
+ {
+ 	if (co == NULL)
+ 		return -1;
+ 	
+ 	if (co->index > 0 &&
+ 	    co->index < MAX_NR_CONSOLES) {
+ 		con_setup_vt(co->index - 1);
+ 		kmsg_redirect = co->index;
+ 	}
+ 
+ 	return 0;
+ }
+ 
  struct console vt_console_driver = {
  	name:		"tty",
  	write:		vt_console_print,
  	device:		vt_console_device,
+ 	setup:		vt_console_setup,
  	unblank:	unblank_screen,
  	flags:		CON_PRINTBUFFER,
  	index:		-1,
***************
*** 2432,2437 ****
--- 2448,2471 ----
  }
  
  /*
+  * Setup a new VT
+  */
+ static void __init con_setup_vt(unsigned int currcons)
+ {
+ 	if (vc_cons[currcons].d) return;
+ 	
+ 	vc_cons[currcons].d = (struct vc_data *)
+ 		alloc_bootmem(sizeof(struct vc_data));
+ 	vt_cons[currcons] = (struct vt_struct *)
+ 		alloc_bootmem(sizeof(struct vt_struct));
+ 	visual_init(currcons, 1);
+ 	screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
+ 	kmalloced = 0;
+ 	vc_init(currcons, video_num_lines, video_num_columns, 
+ 		currcons || !sw->con_save_screen);
+ }
+ 
+ /*
   * This routine initializes console interrupts, and does nothing
   * else. If you want the screen to clear, call tty_write with
   * the appropriate escape-sequence.
***************
*** 2498,2512 ****
  	 * kmalloc is not running yet - we use the bootmem allocator.
  	 */
  	for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) {
! 		vc_cons[currcons].d = (struct vc_data *)
! 				alloc_bootmem(sizeof(struct vc_data));
! 		vt_cons[currcons] = (struct vt_struct *)
! 				alloc_bootmem(sizeof(struct vt_struct));
! 		visual_init(currcons, 1);
! 		screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
! 		kmalloced = 0;
! 		vc_init(currcons, video_num_lines, video_num_columns, 
! 			currcons || !sw->con_save_screen);
  	}
  	currcons = fg_console = 0;
  	master_display_fg = vc_cons[currcons].d;
--- 2532,2538 ----
  	 * kmalloc is not running yet - we use the bootmem allocator.
  	 */
  	for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) {
! 		con_setup_vt(currcons); 
  	}
  	currcons = fg_console = 0;
  	master_display_fg = vc_cons[currcons].d;

             reply	other threads:[~2003-11-28 23:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-28 23:49 Baptiste Malguy [this message]
2003-11-29  7:24 ` [PATCH] VT driver/char/console.c, kernel 2.4.22 Willy Tarreau
2003-11-29 13:17   ` Baptiste Malguy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3FC7DF1E.3090807@malguy.net \
    --to=baptiste@malguy.net \
    --cc=breed@almaden.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yath@yath.eu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox