All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Revert "console: simplify puts()"
@ 2017-11-04 15:14 Soeren Moch
  2017-11-05 17:59 ` U. Scheffler
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Soeren Moch @ 2017-11-04 15:14 UTC (permalink / raw)
  To: u-boot

This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.

A tbs2910 board user reported a very slow console frambuffer as
regression in current u-boot. I could bisect this down to the
above mentioned commit.

This revert brings back the fast framebuffer console (one
cache flush per string in puts(), not after each char).

Reported-by: Uwe Scheffler <scheffler.u@web.de>
Signed-off-by: Soeren Moch <smoch@web.de>
---
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Uwe Scheffler <scheffler.u@web.de>
Cc: u-boot at lists.denx.de

Tom,
can you pull this in as fix for 2017.11?

Thanks,
Soeren
---
 common/console.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/common/console.c b/common/console.c
index f83528c..d763f2c 100644
--- a/common/console.c
+++ b/common/console.c
@@ -450,6 +450,12 @@ static void pre_console_putc(const char c)
 	unmap_sysmem(buffer);
 }
 
+static void pre_console_puts(const char *s)
+{
+	while (*s)
+		pre_console_putc(*s++);
+}
+
 static void print_pre_console_buffer(int flushpoint)
 {
 	unsigned long in = 0, out = 0;
@@ -477,6 +483,7 @@ static void print_pre_console_buffer(int flushpoint)
 }
 #else
 static inline void pre_console_putc(const char c) {}
+static inline void pre_console_puts(const char *s) {}
 static inline void print_pre_console_buffer(int flushpoint) {}
 #endif
 
@@ -518,8 +525,41 @@ void putc(const char c)
 
 void puts(const char *s)
 {
-	while (*s)
-		putc(*s++);
+#ifdef CONFIG_DEBUG_UART
+	if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
+		while (*s) {
+			int ch = *s++;
+
+			printch(ch);
+		}
+		return;
+	}
+#endif
+#ifdef CONFIG_CONSOLE_RECORD
+	if (gd && (gd->flags & GD_FLG_RECORD) && gd->console_out.start)
+		membuff_put(&gd->console_out, s, strlen(s));
+#endif
+#ifdef CONFIG_SILENT_CONSOLE
+	if (gd->flags & GD_FLG_SILENT)
+		return;
+#endif
+
+#ifdef CONFIG_DISABLE_CONSOLE
+	if (gd->flags & GD_FLG_DISABLE_CONSOLE)
+		return;
+#endif
+
+	if (!gd->have_console)
+		return pre_console_puts(s);
+
+	if (gd->flags & GD_FLG_DEVINIT) {
+		/* Send to the standard output */
+		fputs(stdout, s);
+	} else {
+		/* Send directly to the handler */
+		pre_console_puts(s);
+		serial_puts(s);
+	}
 }
 
 #ifdef CONFIG_CONSOLE_RECORD
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] Revert "console: simplify puts()"
  2017-11-04 15:14 [U-Boot] [PATCH] Revert "console: simplify puts()" Soeren Moch
@ 2017-11-05 17:59 ` U. Scheffler
  2017-11-06 16:50 ` Tom Rini
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: U. Scheffler @ 2017-11-05 17:59 UTC (permalink / raw)
  To: u-boot

Hello,

Am 04.11.2017 um 16:14 schrieb Soeren Moch:
>
> This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.
> 
> A tbs2910 board user reported a very slow console frambuffer as
> regression in current u-boot. I could bisect this down to the
> above mentioned commit.
> 
> This revert brings back the fast framebuffer console (one
> cache flush per string in puts(), not after each char).
> 
> Reported-by: Uwe Scheffler <scheffler.u@web.de>
> Signed-off-by: Soeren Moch <smoch@web.de>

Tested-by: Uwe Scheffler <scheffler.u@web.de>

> ---
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Uwe Scheffler <scheffler.u@web.de>
> Cc: u-boot at lists.denx.de
> 
> Tom,
> can you pull this in as fix for 2017.11?
> 

The patch works. I have successfully tested with a Matrix-ARM board (TBS2910) Rev-2.1. 
Thank you, Sören. 

Regards, 
Uwe

> Thanks,
> Soeren
> ---
>  common/console.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 42 insertions(+), 2 deletions(-)
> 
> diff --git a/common/console.c b/common/console.c
> index f83528c..d763f2c 100644
> --- a/common/console.c
> +++ b/common/console.c
> @@ -450,6 +450,12 @@ static void pre_console_putc(const char c)
>  	unmap_sysmem(buffer);
>  }
>  
> +static void pre_console_puts(const char *s)
> +{
> +	while (*s)
> +		pre_console_putc(*s++);
> +}
> +
>  static void print_pre_console_buffer(int flushpoint)
>  {
>  	unsigned long in = 0, out = 0;
> @@ -477,6 +483,7 @@ static void print_pre_console_buffer(int flushpoint)
>  }
>  #else
>  static inline void pre_console_putc(const char c) {}
> +static inline void pre_console_puts(const char *s) {}
>  static inline void print_pre_console_buffer(int flushpoint) {}
>  #endif
>  
> @@ -518,8 +525,41 @@ void putc(const char c)
>  
>  void puts(const char *s)
>  {
> -	while (*s)
> -		putc(*s++);
> +#ifdef CONFIG_DEBUG_UART
> +	if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
> +		while (*s) {
> +			int ch = *s++;
> +
> +			printch(ch);
> +		}
> +		return;
> +	}
> +#endif
> +#ifdef CONFIG_CONSOLE_RECORD
> +	if (gd && (gd->flags & GD_FLG_RECORD) && gd->console_out.start)
> +		membuff_put(&gd->console_out, s, strlen(s));
> +#endif
> +#ifdef CONFIG_SILENT_CONSOLE
> +	if (gd->flags & GD_FLG_SILENT)
> +		return;
> +#endif
> +
> +#ifdef CONFIG_DISABLE_CONSOLE
> +	if (gd->flags & GD_FLG_DISABLE_CONSOLE)
> +		return;
> +#endif
> +
> +	if (!gd->have_console)
> +		return pre_console_puts(s);
> +
> +	if (gd->flags & GD_FLG_DEVINIT) {
> +		/* Send to the standard output */
> +		fputs(stdout, s);
> +	} else {
> +		/* Send directly to the handler */
> +		pre_console_puts(s);
> +		serial_puts(s);
> +	}
>  }
>  
>  #ifdef CONFIG_CONSOLE_RECORD
> -- 
> 2.7.4
> 
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] Revert "console: simplify puts()"
  2017-11-04 15:14 [U-Boot] [PATCH] Revert "console: simplify puts()" Soeren Moch
  2017-11-05 17:59 ` U. Scheffler
@ 2017-11-06 16:50 ` Tom Rini
  2017-11-07  3:08   ` Masahiro Yamada
  2017-11-06 16:57 ` Simon Glass
  2017-11-12 21:19 ` [U-Boot] " Tom Rini
  3 siblings, 1 reply; 6+ messages in thread
From: Tom Rini @ 2017-11-06 16:50 UTC (permalink / raw)
  To: u-boot

On Sat, Nov 04, 2017 at 04:14:09PM +0100, Soeren Moch wrote:

> This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.
> 
> A tbs2910 board user reported a very slow console frambuffer as
> regression in current u-boot. I could bisect this down to the
> above mentioned commit.
> 
> This revert brings back the fast framebuffer console (one
> cache flush per string in puts(), not after each char).
> 
> Reported-by: Uwe Scheffler <scheffler.u@web.de>
> Signed-off-by: Soeren Moch <smoch@web.de>
> ---
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Uwe Scheffler <scheffler.u@web.de>
> Cc: u-boot at lists.denx.de
> 
> Tom,
> can you pull this in as fix for 2017.11?

Looks like some of the CC got eaten?  Masahiro, Simon, any comments?
Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171106/9b327a67/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] Revert "console: simplify puts()"
  2017-11-04 15:14 [U-Boot] [PATCH] Revert "console: simplify puts()" Soeren Moch
  2017-11-05 17:59 ` U. Scheffler
  2017-11-06 16:50 ` Tom Rini
@ 2017-11-06 16:57 ` Simon Glass
  2017-11-12 21:19 ` [U-Boot] " Tom Rini
  3 siblings, 0 replies; 6+ messages in thread
From: Simon Glass @ 2017-11-06 16:57 UTC (permalink / raw)
  To: u-boot

On 4 November 2017 at 09:14, Soeren Moch <smoch@web.de> wrote:
> This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.
>
> A tbs2910 board user reported a very slow console frambuffer as
> regression in current u-boot. I could bisect this down to the
> above mentioned commit.
>
> This revert brings back the fast framebuffer console (one
> cache flush per string in puts(), not after each char).
>
> Reported-by: Uwe Scheffler <scheffler.u@web.de>
> Signed-off-by: Soeren Moch <smoch@web.de>
> ---
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Uwe Scheffler <scheffler.u@web.de>
> Cc: u-boot at lists.denx.de
>
> Tom,
> can you pull this in as fix for 2017.11?
>
> Thanks,
> Soeren
> ---
>  common/console.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 42 insertions(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] Revert "console: simplify puts()"
  2017-11-06 16:50 ` Tom Rini
@ 2017-11-07  3:08   ` Masahiro Yamada
  0 siblings, 0 replies; 6+ messages in thread
From: Masahiro Yamada @ 2017-11-07  3:08 UTC (permalink / raw)
  To: u-boot

2017-11-07 1:50 GMT+09:00 Tom Rini <trini@konsulko.com>:
> On Sat, Nov 04, 2017 at 04:14:09PM +0100, Soeren Moch wrote:
>
>> This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.
>>
>> A tbs2910 board user reported a very slow console frambuffer as
>> regression in current u-boot. I could bisect this down to the
>> above mentioned commit.
>>
>> This revert brings back the fast framebuffer console (one
>> cache flush per string in puts(), not after each char).
>>
>> Reported-by: Uwe Scheffler <scheffler.u@web.de>
>> Signed-off-by: Soeren Moch <smoch@web.de>
>> ---
>> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
>> Cc: Simon Glass <sjg@chromium.org>
>> Cc: Tom Rini <trini@konsulko.com>
>> Cc: Uwe Scheffler <scheffler.u@web.de>
>> Cc: u-boot at lists.denx.de
>>
>> Tom,
>> can you pull this in as fix for 2017.11?
>
> Looks like some of the CC got eaten?  Masahiro, Simon, any comments?
> Thanks!
>

I do not know anything about this board.

Feel free to go ahead if this is a problem.


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] Revert "console: simplify puts()"
  2017-11-04 15:14 [U-Boot] [PATCH] Revert "console: simplify puts()" Soeren Moch
                   ` (2 preceding siblings ...)
  2017-11-06 16:57 ` Simon Glass
@ 2017-11-12 21:19 ` Tom Rini
  3 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2017-11-12 21:19 UTC (permalink / raw)
  To: u-boot

On Sat, Nov 04, 2017 at 04:14:09PM +0100, Soeren Moch wrote:

> This reverts commit c61d0009feb966e0e93254a8c435a1889085e6b8.
> 
> A tbs2910 board user reported a very slow console frambuffer as
> regression in current u-boot. I could bisect this down to the
> above mentioned commit.
> 
> This revert brings back the fast framebuffer console (one
> cache flush per string in puts(), not after each char).
> 
> Reported-by: Uwe Scheffler <scheffler.u@web.de>
> Signed-off-by: Soeren Moch <smoch@web.de>
> Tested-by: Uwe Scheffler <scheffler.u@web.de>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171112/51a44a5d/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-11-12 21:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-04 15:14 [U-Boot] [PATCH] Revert "console: simplify puts()" Soeren Moch
2017-11-05 17:59 ` U. Scheffler
2017-11-06 16:50 ` Tom Rini
2017-11-07  3:08   ` Masahiro Yamada
2017-11-06 16:57 ` Simon Glass
2017-11-12 21:19 ` [U-Boot] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.