On 2023-11-13 17:01, Marcin Juszkiewicz wrote:
> TL;DR: move Mandatory features to be runtime checked (value 2)
Just to pitch in with Marcin; I fully agree with this.
But I did want to ask - was the current mechanism implemented that way
with a specific functional intent, or was it done like that to minimise
behavioral change for existing platforms?
/
Leif
> Month ago there was changeset from Govindraj Raja merged [1]. The plan
> was to enable all mandatory features based on architecture version set
> by plaform (using ARM_ARCH_{MAJOR,MINOR} variables).
>
> 1.
https://review.trustedfirmware.org/q/topic:%22gr/build_refactor%22
>
> The idea is nice. But only for final products. If you are working on
> silicon bring up or on virtualization platform (QEMU or other) then you
> got hit badly...
>
>
> I am working on SBSA Reference Platform in QEMU. It can have one of
> several cpu models. From old v8.0 cores up to v9.0 ones. And then there
> is also 'max' core which cannot be mapped to any architecture level
> because it contains all Arm cpu features QEMU can emulate. We need to
> support all of them in one TF-A binary. Whenever something fails we
> have some cpu cores in non-bootable state.
>
> We had to enable FGT to get 'max' boot Linux. Now we have to move DIT to
> be runtime checked to boot anything below Neoverse-V1 at all. And HCX to
> get 'max' boot Linux again.
>
>
> At current state of TF-A we cannot handle it. Toplevel Makefile includes
> platform.mk which sets ARM_ARCH_{MAJOR,MINOR} and then
> make_helpers/arch_features.mk enables mandatory options by setting them
> to value "1" which means "present, no need to check".
>
> Due to this we have those changes in Gerrit:
>
> DIT:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/24870
> TRF:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/23648
>
> And instead of sending another one to switch FGT, RNG and HCX I decided
> to write this email.
>
>
> I have spent half of day today bisecting TF-A, booting several tools and
> operating systems to check how we are and where the problem is. Still
> have to get Neoverse-N2 booting properly but other than then I got to
> the point where all cpu cores boot into Linux.
>
>
> We need to change make_helpers/arch_features.mk to stop enabling mandatory
> features as "present, no need to check" (value '1') but to use runtime
> check (value '2') instead. This way any platform which contains CPU not
> yet fully developed can boot TF-A. Or platform where one firmware can boot
> different cpu models.
>
> I am sorry that I bring it so late in release cycle but was unable to use
> computer for a development for some time.