Re: [U-Boot] [PATCH v3 1/1] vsprintf.c: add EFI device path printing
On 01/08/2018 11:11 PM, Simon Glass wrote: HI Heinrich, On 8 January 2018 at 08:09, Heinrich Schuchardtwrote: 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
HI Heinrich, On 8 January 2018 at 08:09, Heinrich Schuchardtwrote: > > > 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
On 01/08/2018 04:52 AM, Simon Glass wrote: On 26 December 2017 at 03:07, Heinrich Schuchardtwrote: 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
On 26 December 2017 at 03:07, Heinrich Schuchardtwrote: > 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
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 DenkCc: 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