Hi Manish and Daniele

 

I agree that we can use the serial_number flag in the code for build information as it is currently only checked against the non-zero value in the code.

 

IMO, it is better to rename the serial_number flag to build_info(or something else meaningful name) to make its usage clear across the platform.

 

Let me know your opinions.

 

Thanks

Manish Badarkhe

From: Manish Pandey2 <Manish.Pandey2@arm.com>
Date: Thursday, 11 February 2021 at 16:00
To: Daniele Alessandrelli <daniele.alessandrelli@linux.intel.com>, tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>, Manish Badarkhe <Manish.Badarkhe@arm.com>
Subject: Re: [TF-A] Getting BUILD_STRING from FIP file

Hi Daniele,

 

TBBR specification, from where fip format was introduced, is not very clear about usage of serial number and it can be used in IMP DEFINED manner

"ToC Serial Number -  32 - The serial number of this ToC".

 

So, theoretically it's possible to use serial number for the purpose you described and it's a valid use of currently (un)used serial number.

Currently, at boot time serial number is checked against a non-zero value, which certainly will hold true if you put a valid timstamp instead of "0x12345678".

 

IMO you can go ahead and implement a mechanism to feed Build timestamp to be used as serial number.

 

Thanks
Manish P

 

 

 


From: TF-A <tf-a-bounces@lists.trustedfirmware.org> on behalf of Manish Badarkhe via TF-A <tf-a@lists.trustedfirmware.org>
Sent: 11 February 2021 11:39
To: Daniele Alessandrelli <daniele.alessandrelli@linux.intel.com>; tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Subject: Re: [TF-A] Getting BUILD_STRING from FIP file

 

Hi Daniele

 

Please see my replies inline.

 

Thanks

Manish Badarkhe

 

From: Daniele Alessandrelli <daniele.alessandrelli@linux.intel.com>
Date: Thursday, 11 February 2021 at 11:22
To: Manish Badarkhe <Manish.Badarkhe@arm.com>, tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Subject: Re: [TF-A] Getting BUILD_STRING from FIP file

Hi Manish,

Thank you very much for the information.

16 bits are not enough to store an epoch, but I'll see if I can encode
some other unique build information into 16 bits.

Just a question, from your answer I assume that I shouldn't use the
'serial_number' field for what I want to do; so I wonder: what is that
field meant to be used for?

'serial_number' field is non-zero number provided by the fip creation tool.
It is hardcoded value i.e. TOC_HEADER_SERIAL_NUMBER=0x12345678 as of now.
Specifically used during the validation of the TOC header in the code.


Regards,
Daniele

On Thu, 2021-02-11 at 10:14 +0000, Manish Badarkhe wrote:
> Hi Daniele

> You can use the ‘flag’ field to mention the platform-specific data(in
> your case, a build number). Usage of the ‘flag’ field(64 bit) in the
> toc_header are as below:
> Bits 0-31 -> reserved
> Bits 32-47 -> platform defined data
> Bits 48-63 -> reserved
> You can make use of the flag[32:47] to put build information. I am
> not sure if you can accommodate epoch (converted timestamp) into this
> field but, you can encode any data to fit into this 16bit flag field
> to identify the FIP build.

> You can use a build command: fiptool update/create --plat-toc-flags
> <platform defined data> <your fip bin path> to put the platform
> defined data in the FIP image.

> Thanks
> Manish Badarkhe
> From: TF-A <tf-a-bounces@lists.trustedfirmware.org> on behalf of
> Daniele Alessandrelli via TF-A <tf-a@lists.trustedfirmware.org>
> Date: Wednesday, 10 February 2021 at 17:04
> To: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
> Subject: [TF-A] Getting BUILD_STRING from FIP file
>
> Hi,
>
> Is there a way to get BUILD_STRING (or a similar string / number that
> uniquely identifies the TF-A build, e.g., BUILD_MESSAGE_TIMESTAMP)
> from
> the FIP file?
>
> Basically, I'm trying to find a way to know the build number of a FIP
> without flashing it.
>
> I've seen that the FIP TOC header has a 32-bit field named
> 'serial_number'. Can it be used to this end? I'm considering
> converting BUILD_MESSAGE_TIMESTAMP into an epoch and adding it as
> 'serial number', but I'm worried that might be an unintended usage of
> the 'serial_number' field.
>
> Regards,
> Daniele
>
>
>