On 20/12/2022 00:06, Oliver Upton wrote: > Hi Ryan, > > On Tue, Dec 06, 2022 at 01:59:28PM +0000, Ryan Roberts wrote: >> In order to support 5 level translation, FEAT_LPA2 introduces the 1-bit >> SL2 field within VTCR_EL2 to extend the existing 2-bit SL0 field. The >> SL2[0]:SL0[1:0] encodings have no simple algorithmic relationship to the >> start levels they represent (that I can find, at least), so replace the >> existing macros with functions that do lookups to encode and decode the >> values. These new functions no longer make hardcoded assumptions about >> the maximum level and instead rely on KVM_PGTABLE_FIRST_LEVEL and >> KVM_PGTABLE_LAST_LEVEL. >> >> This is preparatory work for enabling 52-bit IPA for 4KB and 16KB pages >> with FEAT_LPA2. >> >> No functional change intended. >> >> Signed-off-by: Ryan Roberts <ryan.roberts@xxxxxxx> > > Why do we need to support 5-level paging at stage-2? > > A configuration of start_level = 0, T0SZ = 12 with 4K paging would > result in 16 concatenated tables at level 0, avoiding the level -1 > lookup altogether. Yes, agreed. And that's exactly what the code does. So we could remove this patch from the series and everything would continue to function correctly. But I was trying to make things more consistent and maintainable (this now works in terms of KVM_PGTABLE_FIRST_LEVEL and KVM_PGTABLE_LAST_LEVEL for example). That said, I haven't exactly been consistent in my refactoring; patch 11 just adds a comment to kvm_vcpu_trap_get_fault_level() explaining that the new -1 level encodings will never be seen due to stage2 never using 5 levels of translation. So happy to remove this and replace with a comment describing the limitations if that's your preference? > > -- > Thanks, > Oliver _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm