Skip to contentSkip to conversation

PowerPC: boot: Parse chosen/cmdline-timeout parameter

PATCH Superseded Simon Kågström 2 participants 3 messages Sep 9, 2014 – Sep 23, 2014 PowerPC

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

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
index a28f021..c1931bb 100644
@@ -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
index b3218ce..c42ea70 100644
@@ -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
index f2156f0..167ee94 100644
@@ -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
#1 lore raw

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.,
=20

	chosen {
		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

---
=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

#2 lore raw
Quoted 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