serial console

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

It's tough to debug a headless box :)

I believe the call to register_console() is the significant code.
Where it should go I have no idea.

I did not cleanup the patch in case something else mattered. 

I've had a sparc booted to linux for all of one week so I know the
code is not "right" but it works. Therefore it may save some one some
time in making the "right" patch.

Now to track down the "BUG_ON(sparc_cpu_model != sun4m)"  's and find
some code that will work for a sun4d

Thanx
  Ray

*** arch/sparc/kernel/setup.c	Thu May 11 23:31:53 2006
--- /sparc.d2/linux-2.6.16.15/arch/sparc/kernel/setup.c	Fri May 19 08:57:28 2006
***************
*** 158,163 ****
--- 158,170 ----
  	}
  }
  
+ static struct console boot_serial_console = {
+ 	.name =		"ttyS0",
+ 	.write =	prom_console_write,
+ 	.flags =	CON_ENABLED,
+ 	.index =	-1,
+ };
+ 
  static void __init process_console(char *commands)
  {
  	serial_console = 0;
***************
*** 170,175 ****
--- 177,185 ----
  		/* Solaris-style serial */
  		if (c == 'a' || c == 'b')
  			serial_console = c - 'a' + 1;
+ 		register_console(&boot_serial_console);
+ 		add_preferred_console("ttyS",serial_console - 1,NULL);
+ 		prom_printf ("Using /dev/tty%c as console.\n",'a' -1 + serial_console);
  		/* else Linux-style fbcon, not serial */
  	}
  #if defined(CONFIG_PROM_CONSOLE)
***************
*** 302,309 ****
--- 313,322 ----
  	};
  
  #ifdef CONFIG_DUMMY_CONSOLE
+ if (serial_console==0) 
  	conswitchp = &dummy_con;
  #elif defined(CONFIG_PROM_CONSOLE)
+ if (serial_console==0) 
  	conswitchp = &prom_con;
  #endif
  	boot_flags_init(*cmdline_p);
***************
*** 356,363 ****
  	int idev, odev;
  
  	/* The user has requested a console so this is already set up. */
! 	if (serial_console >= 0)
! 		return -EBUSY;
  
  	idev = prom_query_input_device();
  	odev = prom_query_output_device();
--- 369,380 ----
  	int idev, odev;
  
  	/* The user has requested a console so this is already set up. */
! 	if (serial_console >= 0) {
! 		prom_printf("keeping console %d\n",serial_console);
! 		/* everything that is except */
! 		return add_preferred_console("ttyS", serial_console - 1, NULL);
! /*		return -EBUSY;*/
!         }
  
  	idev = prom_query_input_device();
  	odev = prom_query_output_device();

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux