Re: How the kernel printk works before do console_setup.
From: Johnny Hung <hidden>
Date: 2009-06-25 06:34:52
Also in:
lkml
2009/6/25 Benjamin Herrenschmidt [off-list ref]:
quoted
Before the console is set up, the printk data is formatted and put into the kernel log buffer, but not sent to any console. Any messages printk'ed before that are buffered but do not appear. =A0When the console is initialized, then all buffered messages are sent to the console, and subsequent printks cause the message to go to the log buffer, but then immediately get sent from there to the console. Under certain conditions you can examine the log buffer of a kernel that failed to initialize it's console, after a warm reset of the machine, using the firmware memory dump command.On ppc, we have tricks to display things earlier :-) We can initialize the serial ports way before console_setup() (and we do in most cases) and we use what we call the "udbg" console until the real one takes over. The "udbg" console is a very small layer which outputs via a provided "putc" routine. Platforms can provide their own here, we have a collection of standard ones for legacy UARTs (it should be automatically setup in that case by the code in legacy_serial), Apple ESCCs, etc... We even have compile time options that allow that stuff to be initialized before start_kernel...
Thank you. This is what I described and want to understand. The arch/powerpc/kernel/legacy_serial.c do find_legacy_serial_ports then take a default serial port by using open firmware device tree information. The find_legacy_serial_ports() called form setup_arch but I don't know who call setup_arch (setup_32.c)function. Can you give me a hint ? Thanks in advance= d. BRs, H. Johnny