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();