[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