Re: [U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing

2018-01-08 Thread Heinrich Schuchardt

On 01/08/2018 11:11 PM, Simon Glass wrote:

HI Heinrich,

On 8 January 2018 at 08:09, Heinrich Schuchardt  wrote:



On 01/08/2018 04:52 AM, Simon Glass wrote:


On 26 December 2017 at 03:07, Heinrich Schuchardt 
wrote:


For debugging efi_loader we need the capability to print EFI
device paths. With this patch we can write:

  debug("device path: %pD", dp);

A possible output would be

  device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)

This enhancement is not available when building without EFI support
and neither in the SPL nor in the API example.

Cc: Wolfgang Denk 
Cc: Simon Glass 
Suggested-by: Rob Clark 
Signed-off-by: Heinrich Schuchardt 
---
I propose Alex picks up this patch for the EFI tree.

v3:
  Return -ENOMEM if out of memory.
  Avoid missing dependency error when building the SPL of the
  API example.
v2:
  Panic if out of memory.
  Wolfgang suggested not to silently ignore an out of memory
  situation.
---
   examples/api/Makefile |  3 +++
   lib/vsprintf.c| 47
+--
   2 files changed, 44 insertions(+), 6 deletions(-)



Can you please add a test for this? It could go in the print unit
tests, perhaps?

Regards,
Simon


test/print_ut.c is only compiled with CONFIG_SANDBOX.

It seems your patches to enable EFI_LOADER in the sandbox did not make it
into v2018.01. Are you still working on these? Do you have a repo with a
working copy?


I was really not sure where to take it. It seemed that most of them
were ready to apply. I didn't check who they were assigned to.

Tree is u-boot-dm/efi-working

I can certainly pick it up again, but I do need to understand what is
holding it up.

Regards,
Simon



The patch series
https://patchwork.ozlabs.org/project/uboot/list/?series=16686
is assigned to Alex.

There are some unanswered review comments.

Best regards

Heinrich
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing

2018-01-08 Thread Simon Glass
HI Heinrich,

On 8 January 2018 at 08:09, Heinrich Schuchardt  wrote:
>
>
> On 01/08/2018 04:52 AM, Simon Glass wrote:
>>
>> On 26 December 2017 at 03:07, Heinrich Schuchardt 
>> wrote:
>>>
>>> For debugging efi_loader we need the capability to print EFI
>>> device paths. With this patch we can write:
>>>
>>>  debug("device path: %pD", dp);
>>>
>>> A possible output would be
>>>
>>>  device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)
>>>
>>> This enhancement is not available when building without EFI support
>>> and neither in the SPL nor in the API example.
>>>
>>> Cc: Wolfgang Denk 
>>> Cc: Simon Glass 
>>> Suggested-by: Rob Clark 
>>> Signed-off-by: Heinrich Schuchardt 
>>> ---
>>> I propose Alex picks up this patch for the EFI tree.
>>>
>>> v3:
>>>  Return -ENOMEM if out of memory.
>>>  Avoid missing dependency error when building the SPL of the
>>>  API example.
>>> v2:
>>>  Panic if out of memory.
>>>  Wolfgang suggested not to silently ignore an out of memory
>>>  situation.
>>> ---
>>>   examples/api/Makefile |  3 +++
>>>   lib/vsprintf.c| 47
>>> +--
>>>   2 files changed, 44 insertions(+), 6 deletions(-)
>>
>>
>> Can you please add a test for this? It could go in the print unit
>> tests, perhaps?
>>
>> Regards,
>> Simon
>>
> test/print_ut.c is only compiled with CONFIG_SANDBOX.
>
> It seems your patches to enable EFI_LOADER in the sandbox did not make it
> into v2018.01. Are you still working on these? Do you have a repo with a
> working copy?

I was really not sure where to take it. It seemed that most of them
were ready to apply. I didn't check who they were assigned to.

Tree is u-boot-dm/efi-working

I can certainly pick it up again, but I do need to understand what is
holding it up.

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing

2018-01-08 Thread Heinrich Schuchardt



On 01/08/2018 04:52 AM, Simon Glass wrote:

On 26 December 2017 at 03:07, Heinrich Schuchardt  wrote:

For debugging efi_loader we need the capability to print EFI
device paths. With this patch we can write:

 debug("device path: %pD", dp);

A possible output would be

 device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)

This enhancement is not available when building without EFI support
and neither in the SPL nor in the API example.

Cc: Wolfgang Denk 
Cc: Simon Glass 
Suggested-by: Rob Clark 
Signed-off-by: Heinrich Schuchardt 
---
I propose Alex picks up this patch for the EFI tree.

v3:
 Return -ENOMEM if out of memory.
 Avoid missing dependency error when building the SPL of the
 API example.
v2:
 Panic if out of memory.
 Wolfgang suggested not to silently ignore an out of memory
 situation.
---
  examples/api/Makefile |  3 +++
  lib/vsprintf.c| 47 +--
  2 files changed, 44 insertions(+), 6 deletions(-)


Can you please add a test for this? It could go in the print unit
tests, perhaps?

Regards,
Simon


test/print_ut.c is only compiled with CONFIG_SANDBOX.

It seems your patches to enable EFI_LOADER in the sandbox did not make 
it into v2018.01. Are you still working on these? Do you have a repo 
with a working copy?


Best regards

Heinrich

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing

2018-01-07 Thread Simon Glass
On 26 December 2017 at 03:07, Heinrich Schuchardt  wrote:
> For debugging efi_loader we need the capability to print EFI
> device paths. With this patch we can write:
>
> debug("device path: %pD", dp);
>
> A possible output would be
>
> device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)
>
> This enhancement is not available when building without EFI support
> and neither in the SPL nor in the API example.
>
> Cc: Wolfgang Denk 
> Cc: Simon Glass 
> Suggested-by: Rob Clark 
> Signed-off-by: Heinrich Schuchardt 
> ---
> I propose Alex picks up this patch for the EFI tree.
>
> v3:
> Return -ENOMEM if out of memory.
> Avoid missing dependency error when building the SPL of the
> API example.
> v2:
> Panic if out of memory.
> Wolfgang suggested not to silently ignore an out of memory
> situation.
> ---
>  examples/api/Makefile |  3 +++
>  lib/vsprintf.c| 47 +--
>  2 files changed, 44 insertions(+), 6 deletions(-)

Can you please add a test for this? It could go in the print unit
tests, perhaps?

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing

2017-12-26 Thread Heinrich Schuchardt
For debugging efi_loader we need the capability to print EFI
device paths. With this patch we can write:

debug("device path: %pD", dp);

A possible output would be

device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)

This enhancement is not available when building without EFI support
and neither in the SPL nor in the API example.

Cc: Wolfgang Denk 
Cc: Simon Glass 
Suggested-by: Rob Clark 
Signed-off-by: Heinrich Schuchardt 
---
I propose Alex picks up this patch for the EFI tree.

v3:
Return -ENOMEM if out of memory.
Avoid missing dependency error when building the SPL of the
API example.
v2:
Panic if out of memory.
Wolfgang suggested not to silently ignore an out of memory
situation.
---
 examples/api/Makefile |  3 +++
 lib/vsprintf.c| 47 +--
 2 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/examples/api/Makefile b/examples/api/Makefile
index 899527267d4..9068727b98b 100644
--- a/examples/api/Makefile
+++ b/examples/api/Makefile
@@ -4,6 +4,9 @@
 # SPDX-License-Identifier: GPL-2.0+
 #
 
+# Provide symbol API_BUILD to signal that the API example is being built.
+KBUILD_CPPFLAGS += -DAPI_BUILD
+
 ifeq ($(ARCH),powerpc)
 LOAD_ADDR = 0x4
 endif
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index dd572d2868a..5447a2cc740 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -11,16 +11,17 @@
  * from hush: simple_itoa() was lifted from boa-0.93.15
  */
 
-#include 
-#include 
-#include 
-#include 
-
 #include 
 #include 
+#include 
+#include 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
 
-#include 
 #define noinline __attribute__((noinline))
 
 /* we use this so that we can do without the ctype library */
@@ -292,6 +293,26 @@ static char *string16(char *buf, char *end, u16 *s, int 
field_width,
return buf;
 }
 
+#if defined(CONFIG_EFI_LOADER) && \
+   !defined(CONFIG_SPL_BUILD) && !defined(API_BUILD)
+static char *device_path_string(char *buf, char *end, void *dp, int 
field_width,
+   int precision, int flags)
+{
+   u16 *str;
+
+   if (!dp)
+   return "";
+
+   str = efi_dp_str((struct efi_device_path *)dp);
+   if (!str)
+   return ERR_PTR(-ENOMEM);
+
+   buf = string16(buf, end, str, field_width, precision, flags);
+   efi_free_pool(str);
+   return buf;
+}
+#endif
+
 #ifdef CONFIG_CMD_NET
 static const char hex_asc[] = "0123456789abcdef";
 #define hex_asc_lo(x)  hex_asc[((x) & 0x0f)]
@@ -435,6 +456,12 @@ static char *pointer(const char *fmt, char *buf, char 
*end, void *ptr,
 #endif
 
switch (*fmt) {
+#if defined(CONFIG_EFI_LOADER) && \
+   !defined(CONFIG_SPL_BUILD) && !defined(API_BUILD)
+   case 'D':
+   return device_path_string(buf, end, ptr, field_width,
+ precision, flags);
+#endif
 #ifdef CONFIG_CMD_NET
case 'a':
flags |= SPECIAL | ZEROPAD;
@@ -604,6 +631,8 @@ repeat:
str = pointer(fmt + 1, str, end,
va_arg(args, void *),
field_width, precision, flags);
+   if (IS_ERR(str))
+   return PTR_ERR(str);
/* Skip all alphanumeric pointer suffixes */
while (isalnum(fmt[1]))
fmt++;
@@ -768,6 +797,9 @@ int printf(const char *fmt, ...)
i = vscnprintf(printbuffer, sizeof(printbuffer), fmt, args);
va_end(args);
 
+   /* Handle error */
+   if (i <= 0)
+   return i;
/* Print the string */
puts(printbuffer);
return i;
@@ -784,6 +816,9 @@ int vprintf(const char *fmt, va_list args)
 */
i = vscnprintf(printbuffer, sizeof(printbuffer), fmt, args);
 
+   /* Handle error */
+   if (i <= 0)
+   return i;
/* Print the string */
puts(printbuffer);
return i;
-- 
2.11.0

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot