Changes for v2: * Introduce FIELD_SEX64, instead of open-coding w/ sextract64. * Set TCR_EL1 more completely for user-only. * Continue to bound tsz within aa64_va_parameters; provide an out-of-bound indicator for raising AddressSize fault. * Split IPS patch. * Fix debug registers for LVA. * Fix long-format fsc for LPA2. * Fix TLBI page shift. * Validate TLBI granule vs TCR granule.
Not done: * Validate translation levels which accept blocks. There is still no upstream kernel support for FEAT_LPA2, so that is essentially untested. r~ Richard Henderson (15): hw/registerfields: Add FIELD_SEX<N> and FIELD_SDP<N> target/arm: Set TCR_EL1.TSZ for user-only target/arm: Fault on invalid TCR_ELx.TxSZ target/arm: Move arm_pamax out of line target/arm: Pass outputsize down to check_s2_mmu_setup target/arm: Use MAKE_64BIT_MASK to compute indexmask target/arm: Honor TCR_ELx.{I}PS target/arm: Prepare DBGBVR and DBGWVR for FEAT_LVA target/arm: Implement FEAT_LVA target/arm: Implement FEAT_LPA target/arm: Extend arm_fi_to_lfsc to level -1 target/arm: Introduce tlbi_aa64_get_range target/arm: Fix TLBIRange.base for 16k and 64k pages target/arm: Validate tlbi TG matches translation granule in use target/arm: Implement FEAT_LPA2 include/hw/registerfields.h | 48 +++++- target/arm/cpu-param.h | 4 +- target/arm/cpu.h | 27 +++ target/arm/internals.h | 58 ++++--- target/arm/cpu.c | 3 +- target/arm/cpu64.c | 7 +- target/arm/helper.c | 332 ++++++++++++++++++++++++++++-------- 7 files changed, 378 insertions(+), 101 deletions(-) -- 2.25.1