diff mbox series

[v2] tiny-printf: Handle %pM format when CONFIG_SPL_NET_SUPPORT is enabled

Message ID 20210805190605.32719-1-matwey.kornilov@gmail.com
State Accepted
Commit c091f65234cfed79cfe738a7a6e0e1bd574ba9e2
Headers show
Series [v2] tiny-printf: Handle %pM format when CONFIG_SPL_NET_SUPPORT is enabled | expand

Commit Message

Matwey V. Kornilov Aug. 5, 2021, 7:06 p.m. UTC
%pM format string is used to print MAC-address and this is required while SPL
network boot.

This patch fixes the SPL boot issues like the following:

    Trying to boot from USB eth
    ## Error: flags type check failure for "ethaddr" <= "40309614M" (type: m)
    ## Error inserting "ethaddr" variable, errno=1
    eth0: eth_cpsw## Error: flags type check failure for "eth1addr" <=
    "81f01114M" (type: m)
    ## Error inserting "eth1addr" variable, errno=1
    , eth1: usb_ether
    eth_cpsw Waiting for PHY auto negotiation to complete......... TIMEOUT !
    Problem booting with BOOTP
    SPL: failed to boot from all boot devices
    ### ERROR ### Please RESET the board ###

Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>

---
Changes since v1:
 - avoid the preprocessor as suggested by Simon Glass

 lib/tiny-printf.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

-- 
2.31.1

Comments

Simon Glass Aug. 5, 2021, 7:20 p.m. UTC | #1
On Thu, 5 Aug 2021 at 13:06, Matwey V. Kornilov
<matwey.kornilov@gmail.com> wrote:
>

> %pM format string is used to print MAC-address and this is required while SPL

> network boot.

>

> This patch fixes the SPL boot issues like the following:

>

>     Trying to boot from USB eth

>     ## Error: flags type check failure for "ethaddr" <= "40309614M" (type: m)

>     ## Error inserting "ethaddr" variable, errno=1

>     eth0: eth_cpsw## Error: flags type check failure for "eth1addr" <=

>     "81f01114M" (type: m)

>     ## Error inserting "eth1addr" variable, errno=1

>     , eth1: usb_ether

>     eth_cpsw Waiting for PHY auto negotiation to complete......... TIMEOUT !

>     Problem booting with BOOTP

>     SPL: failed to boot from all boot devices

>     ### ERROR ### Please RESET the board ###

>

> Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>

> ---

> Changes since v1:

>  - avoid the preprocessor as suggested by Simon Glass

>

>  lib/tiny-printf.c | 26 +++++++++++++-------------

>  1 file changed, 13 insertions(+), 13 deletions(-)


Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini Aug. 22, 2021, 8:54 p.m. UTC | #2
On Thu, Aug 05, 2021 at 10:06:05PM +0300, Matwey V. Kornilov wrote:

> %pM format string is used to print MAC-address and this is required while SPL

> network boot.

> 

> This patch fixes the SPL boot issues like the following:

> 

>     Trying to boot from USB eth

>     ## Error: flags type check failure for "ethaddr" <= "40309614M" (type: m)

>     ## Error inserting "ethaddr" variable, errno=1

>     eth0: eth_cpsw## Error: flags type check failure for "eth1addr" <=

>     "81f01114M" (type: m)

>     ## Error inserting "eth1addr" variable, errno=1

>     , eth1: usb_ether

>     eth_cpsw Waiting for PHY auto negotiation to complete......... TIMEOUT !

>     Problem booting with BOOTP

>     SPL: failed to boot from all boot devices

>     ### ERROR ### Please RESET the board ###

> 

> Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>

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


Applied to u-boot/master, thanks!

-- 
Tom
diff mbox series

Patch

diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c
index 8fc7e48d99..89aaa85477 100644
--- a/lib/tiny-printf.c
+++ b/lib/tiny-printf.c
@@ -9,8 +9,9 @@ 
  */
 
 #include <common.h>
-#include <stdarg.h>
+#include <log.h>
 #include <serial.h>
+#include <stdarg.h>
 #include <linux/ctype.h>
 
 struct printf_info {
@@ -269,20 +270,19 @@  static int _vprintf(struct printf_info *info, const char *fmt, va_list va)
 				}
 				break;
 			case 'p':
-#ifdef DEBUG
-				pointer(info, fmt, va_arg(va, void *));
-				/*
-				 * Skip this because it pulls in _ctype which is
-				 * 256 bytes, and we don't generally implement
-				 * pointer anyway
-				 */
-				while (isalnum(fmt[0]))
-					fmt++;
-				break;
-#else
+				if (CONFIG_IS_ENABLED(NET_SUPPORT) || _DEBUG) {
+					pointer(info, fmt, va_arg(va, void *));
+					/*
+					 * Skip this because it pulls in _ctype which is
+					 * 256 bytes, and we don't generally implement
+					 * pointer anyway
+					 */
+					while (isalnum(fmt[0]))
+						fmt++;
+					break;
+				}
 				islong = true;
 				/* no break */
-#endif
 			case 'x':
 				if (islong) {
 					num = va_arg(va, unsigned long);