Edgar E. Iglesias <[email protected]> writes: > From: "Edgar E. Iglesias" <[email protected]> > > Implement the inputsize > pamax check for Stage 2 translations. > This is CONSTRAINED UNPREDICTABLE and we choose to fault. > > Signed-off-by: Edgar E. Iglesias <[email protected]>
Much cleaner now, thanks. Reviewed-by: Alex Bennée <[email protected]> > --- > target-arm/helper.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/target-arm/helper.c b/target-arm/helper.c > index 13e9933..9f75840 100644 > --- a/target-arm/helper.c > +++ b/target-arm/helper.c > @@ -6790,6 +6790,7 @@ static bool check_s2_mmu_setup(ARMCPU *cpu, bool > is_aa64, int level, > } > > if (is_aa64) { > + CPUARMState *env = &cpu->env; > unsigned int pamax = arm_pamax(cpu); > > switch (stride) { > @@ -6811,6 +6812,13 @@ static bool check_s2_mmu_setup(ARMCPU *cpu, bool > is_aa64, int level, > default: > g_assert_not_reached(); > } > + > + /* Inputsize checks. */ > + if (inputsize > pamax && > + (arm_el_is_aa64(env, 1) || inputsize > 40)) { > + /* This is CONSTRAINED UNPREDICTABLE and we choose to fault. */ > + return false; > + } > } else { > /* AArch32 only supports 4KB pages. Assert on that. */ > assert(stride == 9); -- Alex Bennée
