[PATCH v3 2/7] lmb: add lmb_is_reserved_flags

Patrick DELAUNAY patrick.delaunay at foss.st.com
Tue May 4 14:22:02 CEST 2021


On 4/29/21 6:10 PM, Simon Glass wrote:
> 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


I chosed to use extern to by aligned with other function and the linux 
memblock library.

But I will drop them in v4



>>   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 !!()


Yes, it is a old C-coding habit.


>>          }
>>          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