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

Re: Please help solve #504721



Jurij Smakov <jurij@wooyd.org> writes:

>
> We have recently recognized that serial console detection in the 
> installer is not working as expected, which resulted in RC bug 
> http://bugs.debian.org/504721.

The problem is that there is no reliable platform independent way to
detect the preferred console.  It would have been really helpful if
register_console() could have printed it's conclusions, but it doesn't.
The guesswork done by reopen-console is correct, given that nothing has
ever called add_preferred_console().

This fails on sparc64, and presumably other platforms where the
preferred console is configured by the boot prom.

The failure on sparc64 is cause by the following chain of events:

- of_console_init() in arch/sparc64/kernel/prom.c sets of_console_device
  based on openboot prom settings
- a number of (Sun) serial drivers will call sunserial_console_match()
  in drivers/serial/suncore.c, which calls add_preferred_console() in
  kernel/printk.c if the device matches of_console_device
- add_preferred_console() adds the device to the console_cmdline structure 
- register_console() in kernel/printk.c will set the preferred console
  based on the console_cmdline structure, which contains both the kernel
  cmdline console options and the additions made by add_preferred_console()

This can probably be fixed on sparc64 by parsing the output from
of_console_init().  It is supposed to print "OF stdout device is: %s\n".

But the problem will also affect other platforms.  Just grep for
add_preferred_console() in the kernel source to find other possible
failure cases.  Note that things sometimes may work even if
add_preferred_console() is called.  E.g. if the preferred console is
registered first by chance, or if it is listed on the kernel command
line.



Bjørn
-- 
It's well known that depravity is pretty fun


Reply to: