Subject: Re: Initial kernel command string (Was: Generating elf kernel ?)

From: "tiejun.chen" <[email-masked]>
Date: Mon, 20 Sep 2010 16:10:58 +0800

Guillaume Dargaud wrote:
>> I think you should modify the bootargs on your dts.
>> ------
>>         chosen {
>>                 bootargs = "console=ttyS0 root=/dev/ram";
>>                 linux,stdout-path = "/plb@0/serial@83e00000";
>>         } ;
> 
> Thanks, that worked great, I now have a fully bootable not only kernel, but 
> full OS as well.

Sounds good :)

> 
>>> Also my previous kernel would wait for 2 seconds at the beginning to
>>> allow me to change the initial command string via the serial port, but
>>> now it just runs right through. How can I enable this option ?
>> It's possible on PowerPC kernel :)
>>
>> You can take a look at the file, arch/powerpc/boot/main.c.
>> ------
>> static void prep_cmdline(void *chosen)
>> {
>>         if (cmdline[0] == '\0')
>>                 getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1);
>>
>>         printf("\n\rLinux/PowerPC load: %s", cmdline);
>>         /* If possible, edit the command line */
>>         if (console_ops.edit_cmdline)
>>                 console_ops.edit_cmdline(cmdline, COMMAND_LINE_SIZE);
>>         printf("\n\r");
>> .......
>>
>>
>> So you have to define one function, console_ops.edit_cmdline -->
>> serial_edit_cmdline. Or you can try bind this to your boot console ops
>> directly. Please refer to the file, arch/powerpc/boot/serial.c.
> 
> So I forced
>  		console_ops.edit_cmdline = serial_edit_cmdline;
> in serial.c, bu that didn't do the trick...

Where are/how do your way implement? Can you paste your code sections here?

If I remember ML405 properly the serial port should be compliant to ns16550. So
I think the sub-functions, putc()/getc()/tstc(), should be from the file,
arch/powerpc/boot/ns16550.c. If so it's fine.

Maybe you can add some extra printf() into the function, serial_edit_cmdline, to
track this in detail.

Cheers
Tiejun