[boot-wrapper 5/7] aarch64: Introduce EL2 boot code for Armv8-R AArch64

Luca Fancellu Luca.Fancellu at arm.com
Tue Jul 16 06:33:08 PDT 2024


Hi Andre,

> 
> A patch to a patch is really hard to read, please send a new version with
> your proposal.

Sure I will.

>>> 
>> 
>> I think you are right, also, reading again the manual we have the HCR_EL2.EnSCXT bit implemented only when
>> FEAT_CSV2_2 is implemented or FEAT_CSV2_1p2 is implemented, otherwise it’s res0, so I think I should check:
>> 
>> 1) FEAT_CSV2_2 which is implemented if ID_AA64PFR0_EL1.CSV2 is 0010 (2)
> 
> ... or larger than 2, since CSV2_3 includes all functionality of CSV2_2.
> 
>> 2) FEAT_CSV2_1p2 which is implemented if ID_AA64PFR1_EL1.CSV2_frac is 0010 (2)
> 
> ... and ID_AA64PFR0_EL1.CSV2 is 0b0001. Also I think CSV2_frac >= 0b0010.
> 
>> Does it sounds ok for you?
> 
> Before this gets too complicated, please check two things:
> 1) HCR_EL2.EnSCXT is RES0 otherwise, which means we can always write this
> unconditionally, without adverse effects?

Yes, HCR_EL2.EnSCXT is RES0 otherwise, I guess that if we write 1 when it is not implemented, it is ignored? And
for the cases where it is implemented, then 1 would be the right value.
Would it be the right approach? I’ve always avoided to write on reserved fields.

> 2) The Armv8-R64 supplement defines minimum values for PFR0.CSV2, maybe
> this simplifies some checks?

I checked but it doesn’t simplifies, so I think I should do:

if ((mrs_field(ID_AA64PFR0_EL1, CSV2) >= 2) ||
    ((mrs_field(ID_AA64PFR0_EL1, CSV2) >= 1) && (mrs_field(ID_AA64PFR1_EL1, CSV2_frac) >= 2)))
    hcr |= HCR_EL2_ENSCXT_NOTRAP;

Please let me know your preference.

Cheers,
Luca

> 
> Cheers,
> Andre



More information about the linux-arm-kernel mailing list