PowerPC: boot: Parse chosen/cmdline-timeout parameter
PATCH v2 1/1 PowerPC: boot: Parse chosen/cmdline-timeout parameter
A 5 second timeout during boot might be too long, so make it configurable. Run the loop at least once to let the user stop the boot by holding a key pressed.
The property is added to the chosen node, e.g.,
chosen {
bootargs = "console=ttyUL0 root=/dev/ram0";
linux,stdout-path = "/plb@0/serial@46000000";
linux,cmdline-timeout = <100>;
} ;---
ChangeLog:
v2:
- Rename the property linux,cmdline-timeout (Grant Likely)
- Run the loop at least once to allow (Grant Likely)
arch/powerpc/boot/main.c | 11 ++++++++++- arch/powerpc/boot/ops.h | 2 +- arch/powerpc/boot/serial.c | 6 +++--- 3 files changed, 14 insertions(+), 5 deletions(-)
arch/powerpc/boot/main.c +10 -1
@@ -144,13 +144,22 @@ static char cmdline[COMMAND_LINE_SIZE]static void prep_cmdline (void *chosen) { +unsigned int getline_timeout =5000 ; +int v; +int n; + +/* Wait-for-input time */ + n =getprop (chosen,"linux,cmdline-timeout" , &v,sizeof (v)); +if (n ==sizeof (v)) + getline_timeout = v; +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 ); + console_ops.edit_cmdline (cmdline,COMMAND_LINE_SIZE , getline_timeout);printf ("\n\r" );/* Put the command line back into the devtree for the kernel */
arch/powerpc/boot/ops.h +1 -1
@@ -58,7 +58,7 @@ extern struct dt_ops dt_ops;struct console_ops {int (*open)(void );void (*write)(const char *buf,int len); -void (*edit_cmdline)(char *buf,int len); +void (*edit_cmdline)(char *buf,int len,unsigned int getline_timeout);void (*close)(void );void *data; };
arch/powerpc/boot/serial.c +3 -3
@@ -33,7 +33,7 @@ static void serial_write(const char *buf, int len) scdp->putc (*buf++); } -static void serial_edit_cmdline (char *buf,int len) +static void serial_edit_cmdline (char *buf,int len,unsigned int timeout) {int timer =0 , count;char ch, *cp;
@@ -44,7 +44,7 @@ static void serial_edit_cmdline(char *buf, int len) cp = &buf[count]; count++; -while (timer++ <5 *1000 ) { + do { if (scdp->tstc()) { while (((ch = scdp->getc()) != '\n') && (ch != '\r')) { /* Test for backspace/delete */
@@ -70,7 +70,7 @@ static void serial_edit_cmdline(char *buf, int len)break ;/* Exit 'timer' loop */ }udelay (1000 );/* 1 msec */ - } + }while (timer++ < timeout); *cp =0 ; }
Signature · 1 line
1.7.9.6
Hi again!
Quoted 12 lines · On Tue, 9 Sep 2014 16:40:06 +0200 Simon K=C3=A5gstr=C3=B6m…
A 5 second timeout during boot might be too long, so make it configurable. Run the loop at least once to let the user stop the boot by holding a key pressed.
=20
The property is added to the chosen node, e.g.,
=20chosen { bootargs =3D "console=3DttyUL0 root=3D/dev/ram0"; linux,stdout-path =3D "/plb@0/serial@46000000"; linux,cmdline-timeout =3D <100>; } ;=20
Quoted 8 lines
Signed-off-by Simon Kagstrom <[email protected]>---
=20
ChangeLog:
=20
v2:
- Rename the property linux,cmdline-timeout (Grant Likely)
- Run the loop at least once to allow (Grant Likely)
Sorry to bother the list, but it would be nice if this patch could trickle down into some tree if it's seen as acceptable. So consider this a ping :-)
Quoted 4 lines
arch/powerpc/boot/main.c | 11 ++++++++++- arch/powerpc/boot/ops.h | 2 +- arch/powerpc/boot/serial.c | 6 +++--- 3 files changed, 14 insertions(+), 5 deletions(-)
[...]
Thanks,
// Simon
Michael Ellerman
reviewerQuoted 5 lines · Simon Kågström
Hi again!
On Tue, 9 Sep 2014 16:40:06 +0200
Simon Kågström <[email protected]> wrote:
Quoted 7 lines
Quoted 3 lines
A 5 second timeout during boot might be too long, so make it configurable. Run the loop at least once to let the user stop the boot by holding a key pressed.
Sorry to bother the list, but it would be nice if this patch could trickle down into some tree if it's seen as acceptable. So consider this a ping :-)
Yeah looks sane to me.
Personally I've never used that feature, I guess I don't have many (any?) machines with real serial which seems to be a requirement for it to work.
I'll put it in my next tomorrow unless Scott or anyone else objects.
cheers