Hi,

 

I am trying to run TF-RMM and there's an exception while reading the MPAMIDR_EL1 register in rmm_arch_init().

 

                if (is_feat_mpam_present()) {

                                unsigned long mpamidr_el1 = read_mpamidr_el1();

                                ..

                }

               

The condition to access MPAMIDR_EL1 is:

                elsif PSTATE.EL == EL2 then

                                if HaveEL(EL3) && EL3SDDUndefPriority() && MPAM3_EL3.TRAPLOWER == '1' then

                                                UNDEFINED;

                                elsif HaveEL(EL3) && MPAM3_EL3.TRAPLOWER == '1' then

                                                if EL3SDDUndef() then

                                                                UNDEFINED;

                                                else

                                                                AArch64.SystemAccessTrap(EL3, 0x18);

                                else

                                                X[t, 64] = MPAMIDR_EL1;                      

                               

 

I am running TF-A before TF-RMM, so the default value of 1 in MPAM3_EL3.TRAPLOWER forces all accesses to MPAMIDR_EL1 to be trapped to EL3.

And the read in TF-RMM then causes an exception.

But there's no handler for the trap in TF-RMM that can forward the read to EL3.

Is my understanding right that the code to handle the trap is missing in RMM?

 

Thanks,

Manoj