Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2018-02-02 Thread Dr. Philipp Tomsich

> On 1 Feb 2018, at 08:51, Michal Simek  wrote:
> 
> On 18.1.2018 14:17, Dr. Philipp Tomsich wrote:
>> Michal,
>> 
>>> On 18 Jan 2018, at 13:56, Michal Simek  wrote:
>>> 
>>> Hi Philipp,
>>> 
>>> 
>>> 2017-09-13 21:29 GMT+02:00 Philipp Tomsich 
>>> :
>>> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
>>> address and record information for all loadables into this FDT.  This
>>> allows us to easily keep track of images for multiple privilege levels
>>> (e.g. with ATF) or of firmware images preloaded into temporary
>>> locations (e.g. PMU firmware that may overlap the SPL stage).
>>> 
>>> Signed-off-by: Philipp Tomsich 
>>> ---
>>> 
>>> common/spl/spl_fit.c | 95 
>>> 
>>> 1 file changed, 81 insertions(+), 14 deletions(-)
>>> 
>>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
>>> index 9f05e1e..6dc0969 100644
>>> --- a/common/spl/spl_fit.c
>>> +++ b/common/spl/spl_fit.c
>>> @@ -2,7 +2,7 @@
>>>  * Copyright (C) 2016 Google, Inc
>>>  * Written by Simon Glass 
>>>  *
>>> - * SPDX-License-Identifier: GPL-2.0+
>>> + * SPDX-License-Identifier:GPL-2.0+
>>>  */
>>> 
>>> #include 
>>> @@ -16,22 +16,24 @@
>>> #endif
>>> 
>>> /**
>>> - * spl_fit_get_image_node(): By using the matching configuration subnode,
>>> + * spl_fit_get_image_name(): By using the matching configuration subnode,
>>>  * retrieve the name of an image, specified by a property name and an index
>>>  * into that.
>>>  * @fit:   Pointer to the FDT blob.
>>>  * @images:Offset of the /images subnode.
>>>  * @type:  Name of the property within the configuration subnode.
>>>  * @index: Index into the list of strings in this property.
>>> + * @outname:   Name of the image
>>>  *
>>> - * Return: the node offset of the respective image node or a negative
>>> - * error number.
>>> + * Return: 0 on success, or a negative error number
>>>  */
>>> -static int spl_fit_get_image_node(const void *fit, int images,
>>> - const char *type, int index)
>>> +static int spl_fit_get_image_name(const void *fit, int images,
>>> + const char *type, int index,
>>> + char **outname)
>>> {
>>>const char *name, *str;
>>> -   int node, conf_node;
>>> +   __maybe_unused int node;
>>> +   int conf_node;
>>>int len, i;
>>> 
>>>conf_node = fit_find_config_node(fit);
>>> @@ -63,7 +65,35 @@ static int spl_fit_get_image_node(const void *fit, int 
>>> images,
>>>}
>>>}
>>> 
>>> +   *outname = (char *)str;
>>> +   return 0;
>>> +}
>>> +
>>> +/**
>>> + * spl_fit_get_image_node(): By using the matching configuration subnode,
>>> + * retrieve the name of an image, specified by a property name and an index
>>> + * into that.
>>> + * @fit:   Pointer to the FDT blob.
>>> + * @images:Offset of the /images subnode.
>>> + * @type:  Name of the property within the configuration subnode.
>>> + * @index: Index into the list of strings in this property.
>>> + *
>>> + * Return: the node offset of the respective image node or a negative
>>> + * error number.
>>> + */
>>> +static int spl_fit_get_image_node(const void *fit, int images,
>>> + const char *type, int index)
>>> +{
>>> +   char *str;
>>> +   int err;
>>> +   int node;
>>> +
>>> +   err = spl_fit_get_image_name(fit, images, type, index, );
>>> +   if (err)
>>> +   return err;
>>> +
>>>debug("%s: '%s'\n", type, str);
>>> +
>>>node = fdt_subnode_offset(fit, images, str);
>>>if (node < 0) {
>>>debug("cannot find image node '%s': %d\n", str, node);
>>> @@ -116,15 +146,15 @@ static int get_aligned_image_size(struct 
>>> spl_load_info *info, int data_size,
>>>  * @info:  points to information about the device to load data from
>>>  * @sector:the start sector of the FIT image on the device
>>>  * @fit:   points to the flattened device tree blob describing the FIT
>>> - * image
>>> + * image
>>>  * @base_offset: the beginning of the data area containing the actual
>>>  * image data, relative to the beginning of the FIT
>>>  * @node:  offset of the DT node describing the image to load (relative
>>> - * to @fit)
>>> + * to @fit)
>>>  * @image_info:will be filled with information about the loaded 
>>> image
>>> - * If the FIT node does not contain a "load" (address) 
>>> property,
>>> - * the image gets loaded to the address pointed to by the
>>> - * load_addr member in this struct.
>>> + * If the FIT node does not contain a "load" (address) 
>>> property,
>>> + *

Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2018-01-31 Thread Michal Simek
On 18.1.2018 14:17, Dr. Philipp Tomsich wrote:
> Michal,
> 
>> On 18 Jan 2018, at 13:56, Michal Simek  wrote:
>>
>> Hi Philipp,
>>
>>
>> 2017-09-13 21:29 GMT+02:00 Philipp Tomsich 
>> :
>> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
>> address and record information for all loadables into this FDT.  This
>> allows us to easily keep track of images for multiple privilege levels
>> (e.g. with ATF) or of firmware images preloaded into temporary
>> locations (e.g. PMU firmware that may overlap the SPL stage).
>>
>> Signed-off-by: Philipp Tomsich 
>> ---
>>
>>  common/spl/spl_fit.c | 95 
>> 
>>  1 file changed, 81 insertions(+), 14 deletions(-)
>>
>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
>> index 9f05e1e..6dc0969 100644
>> --- a/common/spl/spl_fit.c
>> +++ b/common/spl/spl_fit.c
>> @@ -2,7 +2,7 @@
>>   * Copyright (C) 2016 Google, Inc
>>   * Written by Simon Glass 
>>   *
>> - * SPDX-License-Identifier: GPL-2.0+
>> + * SPDX-License-Identifier:GPL-2.0+
>>   */
>>
>>  #include 
>> @@ -16,22 +16,24 @@
>>  #endif
>>
>>  /**
>> - * spl_fit_get_image_node(): By using the matching configuration subnode,
>> + * spl_fit_get_image_name(): By using the matching configuration subnode,
>>   * retrieve the name of an image, specified by a property name and an index
>>   * into that.
>>   * @fit:   Pointer to the FDT blob.
>>   * @images:Offset of the /images subnode.
>>   * @type:  Name of the property within the configuration subnode.
>>   * @index: Index into the list of strings in this property.
>> + * @outname:   Name of the image
>>   *
>> - * Return: the node offset of the respective image node or a negative
>> - * error number.
>> + * Return: 0 on success, or a negative error number
>>   */
>> -static int spl_fit_get_image_node(const void *fit, int images,
>> - const char *type, int index)
>> +static int spl_fit_get_image_name(const void *fit, int images,
>> + const char *type, int index,
>> + char **outname)
>>  {
>> const char *name, *str;
>> -   int node, conf_node;
>> +   __maybe_unused int node;
>> +   int conf_node;
>> int len, i;
>>
>> conf_node = fit_find_config_node(fit);
>> @@ -63,7 +65,35 @@ static int spl_fit_get_image_node(const void *fit, int 
>> images,
>> }
>> }
>>
>> +   *outname = (char *)str;
>> +   return 0;
>> +}
>> +
>> +/**
>> + * spl_fit_get_image_node(): By using the matching configuration subnode,
>> + * retrieve the name of an image, specified by a property name and an index
>> + * into that.
>> + * @fit:   Pointer to the FDT blob.
>> + * @images:Offset of the /images subnode.
>> + * @type:  Name of the property within the configuration subnode.
>> + * @index: Index into the list of strings in this property.
>> + *
>> + * Return: the node offset of the respective image node or a negative
>> + * error number.
>> + */
>> +static int spl_fit_get_image_node(const void *fit, int images,
>> + const char *type, int index)
>> +{
>> +   char *str;
>> +   int err;
>> +   int node;
>> +
>> +   err = spl_fit_get_image_name(fit, images, type, index, );
>> +   if (err)
>> +   return err;
>> +
>> debug("%s: '%s'\n", type, str);
>> +
>> node = fdt_subnode_offset(fit, images, str);
>> if (node < 0) {
>> debug("cannot find image node '%s': %d\n", str, node);
>> @@ -116,15 +146,15 @@ static int get_aligned_image_size(struct spl_load_info 
>> *info, int data_size,
>>   * @info:  points to information about the device to load data from
>>   * @sector:the start sector of the FIT image on the device
>>   * @fit:   points to the flattened device tree blob describing the FIT
>> - * image
>> + * image
>>   * @base_offset: the beginning of the data area containing the actual
>>   * image data, relative to the beginning of the FIT
>>   * @node:  offset of the DT node describing the image to load (relative
>> - * to @fit)
>> + * to @fit)
>>   * @image_info:will be filled with information about the loaded 
>> image
>> - * If the FIT node does not contain a "load" (address) property,
>> - * the image gets loaded to the address pointed to by the
>> - * load_addr member in this struct.
>> + * If the FIT node does not contain a "load" (address) property,
>> + * the image gets loaded to the address pointed to by the
>> + * load_addr member in this struct.
>>   *
>>   * Return: 0 on success or a negative error number.
>>   

Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2018-01-18 Thread Michal Simek
On 18.1.2018 14:17, Dr. Philipp Tomsich wrote:
> Michal,
> 
>> On 18 Jan 2018, at 13:56, Michal Simek  wrote:
>>
>> Hi Philipp,
>>
>>
>> 2017-09-13 21:29 GMT+02:00 Philipp Tomsich 
>> :
>> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
>> address and record information for all loadables into this FDT.  This
>> allows us to easily keep track of images for multiple privilege levels
>> (e.g. with ATF) or of firmware images preloaded into temporary
>> locations (e.g. PMU firmware that may overlap the SPL stage).
>>
>> Signed-off-by: Philipp Tomsich 
>> ---
>>
>>  common/spl/spl_fit.c | 95 
>> 
>>  1 file changed, 81 insertions(+), 14 deletions(-)
>>
>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
>> index 9f05e1e..6dc0969 100644
>> --- a/common/spl/spl_fit.c
>> +++ b/common/spl/spl_fit.c
>> @@ -2,7 +2,7 @@
>>   * Copyright (C) 2016 Google, Inc
>>   * Written by Simon Glass 
>>   *
>> - * SPDX-License-Identifier: GPL-2.0+
>> + * SPDX-License-Identifier:GPL-2.0+
>>   */
>>
>>  #include 
>> @@ -16,22 +16,24 @@
>>  #endif
>>
>>  /**
>> - * spl_fit_get_image_node(): By using the matching configuration subnode,
>> + * spl_fit_get_image_name(): By using the matching configuration subnode,
>>   * retrieve the name of an image, specified by a property name and an index
>>   * into that.
>>   * @fit:   Pointer to the FDT blob.
>>   * @images:Offset of the /images subnode.
>>   * @type:  Name of the property within the configuration subnode.
>>   * @index: Index into the list of strings in this property.
>> + * @outname:   Name of the image
>>   *
>> - * Return: the node offset of the respective image node or a negative
>> - * error number.
>> + * Return: 0 on success, or a negative error number
>>   */
>> -static int spl_fit_get_image_node(const void *fit, int images,
>> - const char *type, int index)
>> +static int spl_fit_get_image_name(const void *fit, int images,
>> + const char *type, int index,
>> + char **outname)
>>  {
>> const char *name, *str;
>> -   int node, conf_node;
>> +   __maybe_unused int node;
>> +   int conf_node;
>> int len, i;
>>
>> conf_node = fit_find_config_node(fit);
>> @@ -63,7 +65,35 @@ static int spl_fit_get_image_node(const void *fit, int 
>> images,
>> }
>> }
>>
>> +   *outname = (char *)str;
>> +   return 0;
>> +}
>> +
>> +/**
>> + * spl_fit_get_image_node(): By using the matching configuration subnode,
>> + * retrieve the name of an image, specified by a property name and an index
>> + * into that.
>> + * @fit:   Pointer to the FDT blob.
>> + * @images:Offset of the /images subnode.
>> + * @type:  Name of the property within the configuration subnode.
>> + * @index: Index into the list of strings in this property.
>> + *
>> + * Return: the node offset of the respective image node or a negative
>> + * error number.
>> + */
>> +static int spl_fit_get_image_node(const void *fit, int images,
>> + const char *type, int index)
>> +{
>> +   char *str;
>> +   int err;
>> +   int node;
>> +
>> +   err = spl_fit_get_image_name(fit, images, type, index, );
>> +   if (err)
>> +   return err;
>> +
>> debug("%s: '%s'\n", type, str);
>> +
>> node = fdt_subnode_offset(fit, images, str);
>> if (node < 0) {
>> debug("cannot find image node '%s': %d\n", str, node);
>> @@ -116,15 +146,15 @@ static int get_aligned_image_size(struct spl_load_info 
>> *info, int data_size,
>>   * @info:  points to information about the device to load data from
>>   * @sector:the start sector of the FIT image on the device
>>   * @fit:   points to the flattened device tree blob describing the FIT
>> - * image
>> + * image
>>   * @base_offset: the beginning of the data area containing the actual
>>   * image data, relative to the beginning of the FIT
>>   * @node:  offset of the DT node describing the image to load (relative
>> - * to @fit)
>> + * to @fit)
>>   * @image_info:will be filled with information about the loaded 
>> image
>> - * If the FIT node does not contain a "load" (address) property,
>> - * the image gets loaded to the address pointed to by the
>> - * load_addr member in this struct.
>> + * If the FIT node does not contain a "load" (address) property,
>> + * the image gets loaded to the address pointed to by the
>> + * load_addr member in this struct.
>>   *
>>   * Return: 0 on success or a negative error number.
>>   

Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2018-01-18 Thread Dr. Philipp Tomsich
Michal,

> On 18 Jan 2018, at 13:56, Michal Simek  wrote:
> 
> Hi Philipp,
> 
> 
> 2017-09-13 21:29 GMT+02:00 Philipp Tomsich 
> :
> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
> address and record information for all loadables into this FDT.  This
> allows us to easily keep track of images for multiple privilege levels
> (e.g. with ATF) or of firmware images preloaded into temporary
> locations (e.g. PMU firmware that may overlap the SPL stage).
> 
> Signed-off-by: Philipp Tomsich 
> ---
> 
>  common/spl/spl_fit.c | 95 
> 
>  1 file changed, 81 insertions(+), 14 deletions(-)
> 
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
> index 9f05e1e..6dc0969 100644
> --- a/common/spl/spl_fit.c
> +++ b/common/spl/spl_fit.c
> @@ -2,7 +2,7 @@
>   * Copyright (C) 2016 Google, Inc
>   * Written by Simon Glass 
>   *
> - * SPDX-License-Identifier: GPL-2.0+
> + * SPDX-License-Identifier:GPL-2.0+
>   */
> 
>  #include 
> @@ -16,22 +16,24 @@
>  #endif
> 
>  /**
> - * spl_fit_get_image_node(): By using the matching configuration subnode,
> + * spl_fit_get_image_name(): By using the matching configuration subnode,
>   * retrieve the name of an image, specified by a property name and an index
>   * into that.
>   * @fit:   Pointer to the FDT blob.
>   * @images:Offset of the /images subnode.
>   * @type:  Name of the property within the configuration subnode.
>   * @index: Index into the list of strings in this property.
> + * @outname:   Name of the image
>   *
> - * Return: the node offset of the respective image node or a negative
> - * error number.
> + * Return: 0 on success, or a negative error number
>   */
> -static int spl_fit_get_image_node(const void *fit, int images,
> - const char *type, int index)
> +static int spl_fit_get_image_name(const void *fit, int images,
> + const char *type, int index,
> + char **outname)
>  {
> const char *name, *str;
> -   int node, conf_node;
> +   __maybe_unused int node;
> +   int conf_node;
> int len, i;
> 
> conf_node = fit_find_config_node(fit);
> @@ -63,7 +65,35 @@ static int spl_fit_get_image_node(const void *fit, int 
> images,
> }
> }
> 
> +   *outname = (char *)str;
> +   return 0;
> +}
> +
> +/**
> + * spl_fit_get_image_node(): By using the matching configuration subnode,
> + * retrieve the name of an image, specified by a property name and an index
> + * into that.
> + * @fit:   Pointer to the FDT blob.
> + * @images:Offset of the /images subnode.
> + * @type:  Name of the property within the configuration subnode.
> + * @index: Index into the list of strings in this property.
> + *
> + * Return: the node offset of the respective image node or a negative
> + * error number.
> + */
> +static int spl_fit_get_image_node(const void *fit, int images,
> + const char *type, int index)
> +{
> +   char *str;
> +   int err;
> +   int node;
> +
> +   err = spl_fit_get_image_name(fit, images, type, index, );
> +   if (err)
> +   return err;
> +
> debug("%s: '%s'\n", type, str);
> +
> node = fdt_subnode_offset(fit, images, str);
> if (node < 0) {
> debug("cannot find image node '%s': %d\n", str, node);
> @@ -116,15 +146,15 @@ static int get_aligned_image_size(struct spl_load_info 
> *info, int data_size,
>   * @info:  points to information about the device to load data from
>   * @sector:the start sector of the FIT image on the device
>   * @fit:   points to the flattened device tree blob describing the FIT
> - * image
> + * image
>   * @base_offset: the beginning of the data area containing the actual
>   * image data, relative to the beginning of the FIT
>   * @node:  offset of the DT node describing the image to load (relative
> - * to @fit)
> + * to @fit)
>   * @image_info:will be filled with information about the loaded image
> - * If the FIT node does not contain a "load" (address) property,
> - * the image gets loaded to the address pointed to by the
> - * load_addr member in this struct.
> + * If the FIT node does not contain a "load" (address) property,
> + * the image gets loaded to the address pointed to by the
> + * load_addr member in this struct.
>   *
>   * Return: 0 on success or a negative error number.
>   */
> @@ -236,6 +266,35 @@ static int spl_fit_append_fdt(struct spl_image_info 
> *spl_image,
> image_info.load_addr = spl_image->load_addr + spl_image->size;
> 

Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2018-01-18 Thread Michal Simek
Hi Philipp,


2017-09-13 21:29 GMT+02:00 Philipp Tomsich <
philipp.toms...@theobroma-systems.com>:

> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
> address and record information for all loadables into this FDT.  This
> allows us to easily keep track of images for multiple privilege levels
> (e.g. with ATF) or of firmware images preloaded into temporary
> locations (e.g. PMU firmware that may overlap the SPL stage).
>
> Signed-off-by: Philipp Tomsich 
> ---
>
>  common/spl/spl_fit.c | 95 ++
> ++
>  1 file changed, 81 insertions(+), 14 deletions(-)
>
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
> index 9f05e1e..6dc0969 100644
> --- a/common/spl/spl_fit.c
> +++ b/common/spl/spl_fit.c
> @@ -2,7 +2,7 @@
>   * Copyright (C) 2016 Google, Inc
>   * Written by Simon Glass 
>   *
> - * SPDX-License-Identifier: GPL-2.0+
> + * SPDX-License-Identifier:GPL-2.0+
>   */
>
>  #include 
> @@ -16,22 +16,24 @@
>  #endif
>
>  /**
> - * spl_fit_get_image_node(): By using the matching configuration subnode,
> + * spl_fit_get_image_name(): By using the matching configuration subnode,
>   * retrieve the name of an image, specified by a property name and an
> index
>   * into that.
>   * @fit:   Pointer to the FDT blob.
>   * @images:Offset of the /images subnode.
>   * @type:  Name of the property within the configuration subnode.
>   * @index: Index into the list of strings in this property.
> + * @outname:   Name of the image
>   *
> - * Return: the node offset of the respective image node or a negative
> - * error number.
> + * Return: 0 on success, or a negative error number
>   */
> -static int spl_fit_get_image_node(const void *fit, int images,
> - const char *type, int index)
> +static int spl_fit_get_image_name(const void *fit, int images,
> + const char *type, int index,
> + char **outname)
>  {
> const char *name, *str;
> -   int node, conf_node;
> +   __maybe_unused int node;
> +   int conf_node;
> int len, i;
>
> conf_node = fit_find_config_node(fit);
> @@ -63,7 +65,35 @@ static int spl_fit_get_image_node(const void *fit, int
> images,
> }
> }
>
> +   *outname = (char *)str;
> +   return 0;
> +}
> +
> +/**
> + * spl_fit_get_image_node(): By using the matching configuration subnode,
> + * retrieve the name of an image, specified by a property name and an
> index
> + * into that.
> + * @fit:   Pointer to the FDT blob.
> + * @images:Offset of the /images subnode.
> + * @type:  Name of the property within the configuration subnode.
> + * @index: Index into the list of strings in this property.
> + *
> + * Return: the node offset of the respective image node or a negative
> + * error number.
> + */
> +static int spl_fit_get_image_node(const void *fit, int images,
> + const char *type, int index)
> +{
> +   char *str;
> +   int err;
> +   int node;
> +
> +   err = spl_fit_get_image_name(fit, images, type, index, );
> +   if (err)
> +   return err;
> +
> debug("%s: '%s'\n", type, str);
> +
> node = fdt_subnode_offset(fit, images, str);
> if (node < 0) {
> debug("cannot find image node '%s': %d\n", str, node);
> @@ -116,15 +146,15 @@ static int get_aligned_image_size(struct
> spl_load_info *info, int data_size,
>   * @info:  points to information about the device to load data from
>   * @sector:the start sector of the FIT image on the device
>   * @fit:   points to the flattened device tree blob describing the FIT
> - * image
> + * image
>   * @base_offset: the beginning of the data area containing the actual
>   * image data, relative to the beginning of the FIT
>   * @node:  offset of the DT node describing the image to load
> (relative
> - * to @fit)
> + * to @fit)
>   * @image_info:will be filled with information about the loaded
> image
> - * If the FIT node does not contain a "load" (address)
> property,
> - * the image gets loaded to the address pointed to by the
> - * load_addr member in this struct.
> + * If the FIT node does not contain a "load" (address)
> property,
> + * the image gets loaded to the address pointed to by the
> + * load_addr member in this struct.
>   *
>   * Return: 0 on success or a negative error number.
>   */
> @@ -236,6 +266,35 @@ static int spl_fit_append_fdt(struct spl_image_info
> *spl_image,
> image_info.load_addr = spl_image->load_addr + spl_image->size;
> ret = spl_load_fit_image(info, sector, fit, base_offset, node,
>  

Re: [U-Boot] [PATCH 06/15] spl: fit: implement recording of loadables into /fit-images

2017-09-17 Thread Simon Glass
On 13 September 2017 at 13:29, Philipp Tomsich
 wrote:
> If a FDT was loaded (e.g. to append it to U-Boot image), we store it's
> address and record information for all loadables into this FDT.  This
> allows us to easily keep track of images for multiple privilege levels
> (e.g. with ATF) or of firmware images preloaded into temporary
> locations (e.g. PMU firmware that may overlap the SPL stage).
>
> Signed-off-by: Philipp Tomsich 
> ---
>
>  common/spl/spl_fit.c | 95 
> 
>  1 file changed, 81 insertions(+), 14 deletions(-)

Reviewed-by: Simon Glass 

I wonder if this should be a new CONFIG option to reduce code size for
things that don't need it?
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot