All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Fancellu <luca.fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Ian Jackson <iwj@xenproject.org>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Subject: Re: [PATCH 1/3] EFI: move efi-boot.h inclusion point
Date: Fri, 3 Dec 2021 16:10:35 +0000	[thread overview]
Message-ID: <F1FE39BE-191B-4245-84EE-1109B9762B54@arm.com> (raw)
In-Reply-To: <8b369fc8-8f9e-c350-95de-790d47fd9aae@suse.com>



> On 3 Dec 2021, at 10:56, Jan Beulich <jbeulich@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.fancellu@arm.com>

> Signed-off-by: Jan Beulich <jbeulich@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)
> {
> 
> 



  parent reply	other threads:[~2021-12-03 16:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-03 10:54 [PATCH 0/3]: EFI: some tidying Jan Beulich
2021-12-03 10:56 ` [PATCH 1/3] EFI: move efi-boot.h inclusion point Jan Beulich
2021-12-03 11:21   ` Andrew Cooper
2021-12-03 11:25     ` Jan Beulich
2021-12-03 11:26       ` Andrew Cooper
2021-12-03 12:50     ` Jan Beulich
2021-12-03 15:51       ` Andrew Cooper
2021-12-03 16:10   ` Luca Fancellu [this message]
2021-12-06  7:27     ` Jan Beulich
2021-12-06  8:39       ` Luca Fancellu
2021-12-03 10:57 ` [PATCH 2/3] EFI: constify EFI_LOADED_IMAGE * function parameters Jan Beulich
2021-12-03 16:11   ` Luca Fancellu
2021-12-10  9:44   ` Ping: " Jan Beulich
2021-12-10 10:07     ` Julien Grall
2021-12-03 10:58 ` [PATCH 3/3] EFI: drop copy-in from QueryVariableInfo()'s OUT-only variable bouncing Jan Beulich
2021-12-03 16:11   ` Luca Fancellu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F1FE39BE-191B-4245-84EE-1109B9762B54@arm.com \
    --to=luca.fancellu@arm.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=iwj@xenproject.org \
    --cc=jbeulich@suse.com \
    --cc=julien@xen.org \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.