On Thu, 6 Jan 2022 at 18:27, Peter Maydell <peter.mayd...@linaro.org> wrote: > > On Wed, 8 Dec 2021 at 23:16, Richard Henderson > <richard.hender...@linaro.org> wrote: > > > > Without FEAT_LVA, the behaviour of programming an invalid value > > is IMPLEMENTATION DEFINED. With FEAT_LVA, programming an invalid > > minimum value requires a Translation fault. > > > > It is most self-consistent to choose to generate the fault always.
> > - if (cpu_isar_feature(aa64_st, env_archcpu(env))) { > > - max_tsz = 48 - using64k; > > - } else { > > - max_tsz = 39; > > - } > > - > > - tsz = MIN(tsz, max_tsz); > > - tsz = MAX(tsz, 16); /* TODO: ARMv8.2-LVA */ > > - > > These changes are OK in themselves, but we also use the > aa64_va_parameters() calculated tsz value in the > pointer-auth code to work out the bottom bit of the > pointer auth field: > > bot_bit = 64 - param.tsz; > top_bit = 64 - 8 * param.tbi; ...and in particular, for linux-user mode as far as I can tell we aren't initializing TCR_EL1 to anything particularly sensible (we set TBI0 and leave the rest to 0) so we are effectively relying on the clamping there at the moment. We should probably set TCR_EL1 properly. (cf the user report in qemu-discuss just now.) -- PMM