[PATCH v3 2/7] lmb: add lmb_is_reserved_flags

Simon Glass sjg at chromium.org
Thu Apr 29 18:10:43 CEST 2021


Hi Patrick,

On Wed, 28 Apr 2021 at 03:23, Patrick Delaunay
<patrick.delaunay at foss.st.com> wrote:
>
> Add a new function lmb_is_reserved_flags to check is a
> address is reserved with a specific flags.
>
> This function can be used to check if an address was
> reserved with no-map flags with:
>
> lmb_is_reserved_flags(lmb, addr, LMB_NOMAP);
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
>
> (no changes since v1)
>
>  include/lmb.h |  1 +
>  lib/lmb.c     | 10 ++++++++--
>  2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/include/lmb.h b/include/lmb.h
> index aa196c63bf..6537d56e18 100644
> --- a/include/lmb.h
> +++ b/include/lmb.h
> @@ -91,6 +91,7 @@ extern phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base,
>                                   phys_size_t size);
>  extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr);
>  extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
> +extern int lmb_is_reserved_flags(struct lmb *lmb, phys_addr_t addr, int flags);

drop extern and please add a function comment

>  extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
>
>  extern void lmb_dump_all(struct lmb *lmb);
> diff --git a/lib/lmb.c b/lib/lmb.c
> index 69700bf9ba..e270e86186 100644
> --- a/lib/lmb.c
> +++ b/lib/lmb.c
> @@ -443,7 +443,7 @@ phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr)
>         return 0;
>  }
>
> -int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
> +int lmb_is_reserved_flags(struct lmb *lmb, phys_addr_t addr, int flags)
>  {
>         int i;
>
> @@ -451,11 +451,17 @@ int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
>                 phys_addr_t upper = lmb->reserved.region[i].base +
>                         lmb->reserved.region[i].size - 1;
>                 if ((addr >= lmb->reserved.region[i].base) && (addr <= upper))
> -                       return 1;
> +                       return !!((lmb->reserved.region[i].flags & flags)
> +                                  == flags);

I don't know what flags is since there is no comment, but it seems
that you should drop the !!()

>         }
>         return 0;
>  }
>
> +int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
> +{
> +       return lmb_is_reserved_flags(lmb, addr, LMB_NONE);
> +}
> +
>  __weak void board_lmb_reserve(struct lmb *lmb)
>  {
>         /* please define platform specific board_lmb_reserve() */
> --
> 2.17.1
>

Regards,
Simon


More information about the U-Boot mailing list