> On 3 Dec 2021, at 10:56, Jan Beulich <jbeul...@suse.com> wrote:
>
> When it was introduced, it was imo placed way too high up, making it
> necessary to forward-declare way too many static functions. Move it down
> together with
> - the efi_check_dt_boot() stub, which afaict was deliberately placed
> immediately ahead of the #include,
> - blexit(), because of its use of the efi_arch_blexit() hook.
> Move up get_value() and set_color() to before the inclusion so their
> forward declarations can also be zapped.
>
With the “const” attribute now some function in this serie are above the char
line
limit, however everything looks fine.
Reviewed-by: Luca Fancellu <luca.fance...@arm.com>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
>
> --- a/xen/common/efi/boot.c
> +++ b/xen/common/efi/boot.c
> @@ -111,25 +111,10 @@ struct file {
> };
> };
>
> -static CHAR16 *FormatDec(UINT64 Val, CHAR16 *Buffer);
> -static CHAR16 *FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer);
> -static void DisplayUint(UINT64 Val, INTN Width);
> -static CHAR16 *wstrcpy(CHAR16 *d, const CHAR16 *s);
> -static void PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode);
> -static char *get_value(const struct file *cfg, const char *section,
> - const char *item);
> -static char *split_string(char *s);
> -static CHAR16 *s2w(union string *str);
> -static char *w2s(const union string *str);
> -static EFI_FILE_HANDLE get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
> - CHAR16 **leaf);
> static bool read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
> struct file *file, const char *options);
> static bool read_section(const EFI_LOADED_IMAGE *image, const CHAR16 *name,
> struct file *file, const char *options);
> -static size_t wstrlen(const CHAR16 * s);
> -static int set_color(u32 mask, int bpp, u8 *pos, u8 *sz);
> -static bool match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2);
>
> static void efi_init(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable);
> static void efi_console_set_mode(void);
> @@ -168,19 +153,6 @@ static void __init PrintErr(const CHAR16
> StdErr->OutputString(StdErr, (CHAR16 *)s );
> }
>
> -#ifndef CONFIG_HAS_DEVICE_TREE
> -static int __init efi_check_dt_boot(EFI_LOADED_IMAGE *loaded_image)
> -{
> - return 0;
> -}
> -#endif
> -
> -/*
> - * Include architecture specific implementation here, which references the
> - * static globals defined above.
> - */
> -#include "efi-boot.h"
> -
> static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer)
> {
> if ( Val >= 10 )
> @@ -291,30 +263,6 @@ static bool __init match_guid(const EFI_
> !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4));
> }
>
> -void __init noreturn blexit(const CHAR16 *str)
> -{
> - if ( str )
> - PrintStr(str);
> - PrintStr(newline);
> -
> - if ( !efi_bs )
> - efi_arch_halt();
> -
> - if ( cfg.need_to_free )
> - efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
> - if ( kernel.need_to_free )
> - efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
> - if ( ramdisk.need_to_free )
> - efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
> - if ( xsm.need_to_free )
> - efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
> -
> - efi_arch_blexit();
> -
> - efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
> - unreachable(); /* not reached */
> -}
> -
> /* generic routine for printing error messages */
> static void __init PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode)
> {
> @@ -542,6 +490,7 @@ static CHAR16 *__init point_tail(CHAR16
> break;
> }
> }
> +
> /*
> * Truncate string at first space, and return pointer
> * to remainder of string, if any/ NULL returned if
> @@ -559,6 +508,95 @@ static char * __init split_string(char *
> return NULL;
> }
>
> +static char *__init get_value(const struct file *cfg, const char *section,
> + const char *item)
> +{
> + char *ptr = cfg->str, *end = ptr + cfg->size;
> + size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
> + bool match = !slen;
> +
> + for ( ; ptr < end; ++ptr )
> + {
> + switch ( *ptr )
> + {
> + case 0:
> + continue;
> + case '[':
> + if ( !slen )
> + break;
> + if ( match )
> + return NULL;
> + match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
> + break;
> + default:
> + if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
> + {
> + ptr += ilen + 1;
> + /* strip off any leading spaces */
> + while ( *ptr && isspace(*ptr) )
> + ptr++;
> + return ptr;
> + }
> + break;
> + }
> + ptr += strlen(ptr);
> + }
> + return NULL;
> +}
> +
> +static int __init __maybe_unused set_color(uint32_t mask, int bpp,
> + uint8_t *pos, uint8_t *sz)
> +{
> + if ( bpp < 0 )
> + return bpp;
> + if ( !mask )
> + return -EINVAL;
> + for ( *pos = 0; !(mask & 1); ++*pos )
> + mask >>= 1;
> + for ( *sz = 0; mask & 1; ++*sz)
> + mask >>= 1;
> + if ( mask )
> + return -EINVAL;
> + return max(*pos + *sz, bpp);
> +}
> +
> +#ifndef CONFIG_HAS_DEVICE_TREE
> +static int __init efi_check_dt_boot(EFI_LOADED_IMAGE *loaded_image)
> +{
> + return 0;
> +}
> +#endif
> +
> +/*
> + * Include architecture specific implementation here, which references the
> + * static globals defined above.
> + */
> +#include "efi-boot.h"
> +
> +void __init noreturn blexit(const CHAR16 *str)
> +{
> + if ( str )
> + PrintStr(str);
> + PrintStr(newline);
> +
> + if ( !efi_bs )
> + efi_arch_halt();
> +
> + if ( cfg.need_to_free )
> + efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
> + if ( kernel.need_to_free )
> + efi_bs->FreePages(kernel.addr, PFN_UP(kernel.size));
> + if ( ramdisk.need_to_free )
> + efi_bs->FreePages(ramdisk.addr, PFN_UP(ramdisk.size));
> + if ( xsm.need_to_free )
> + efi_bs->FreePages(xsm.addr, PFN_UP(xsm.size));
> +
> + efi_arch_blexit();
> +
> + efi_bs->Exit(efi_ih, EFI_SUCCESS, 0, NULL);
> + unreachable(); /* not reached */
> +}
> +
> static void __init handle_file_info(const CHAR16 *name,
> const struct file *file, const char
> *options)
> {
> @@ -685,42 +723,6 @@ static void __init pre_parse(const struc
> " last line will be ignored.\r\n");
> }
>
> -static char *__init get_value(const struct file *cfg, const char *section,
> - const char *item)
> -{
> - char *ptr = cfg->str, *end = ptr + cfg->size;
> - size_t slen = section ? strlen(section) : 0, ilen = strlen(item);
> - bool match = !slen;
> -
> - for ( ; ptr < end; ++ptr )
> - {
> - switch ( *ptr )
> - {
> - case 0:
> - continue;
> - case '[':
> - if ( !slen )
> - break;
> - if ( match )
> - return NULL;
> - match = strncmp(++ptr, section, slen) == 0 && ptr[slen] == ']';
> - break;
> - default:
> - if ( match && strncmp(ptr, item, ilen) == 0 && ptr[ilen] == '=' )
> - {
> - ptr += ilen + 1;
> - /* strip off any leading spaces */
> - while ( *ptr && isspace(*ptr) )
> - ptr++;
> - return ptr;
> - }
> - break;
> - }
> - ptr += strlen(ptr);
> - }
> - return NULL;
> -}
> -
> static void __init efi_init(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE
> *SystemTable)
> {
> efi_ih = ImageHandle;
> @@ -1114,21 +1116,6 @@ static void __init efi_exit_boot(EFI_HAN
> efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
> }
>
> -static int __init __maybe_unused set_color(u32 mask, int bpp, u8 *pos, u8
> *sz)
> -{
> - if ( bpp < 0 )
> - return bpp;
> - if ( !mask )
> - return -EINVAL;
> - for ( *pos = 0; !(mask & 1); ++*pos )
> - mask >>= 1;
> - for ( *sz = 0; mask & 1; ++*sz)
> - mask >>= 1;
> - if ( mask )
> - return -EINVAL;
> - return max(*pos + *sz, bpp);
> -}
> -
> void EFIAPI __init noreturn
> efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
> {
>
>