On Wed, Apr 13, 2022, Paolo Bonzini wrote: > On 4/13/22 16:42, Sean Christopherson wrote: > > On Wed, Apr 13, 2022, Paolo Bonzini wrote: > > > On 4/12/22 23:31, Sean Christopherson wrote: > > > > We don't need 4 bits for this. Crossing our fingers that we never had to shadow > > > > a 2-level guest with a 6-level host, we can do: > > > > > > > > unsigned passthrough_delta:2; > > > > > > > Basically, your passthrough_delta is level - glevel in Jiangshan's patches. > > > You'll need 3 bits anyway when we remove direct later (that would be > > > passthrough_delta == level). > > > > Are we planning on removing direct? > > I think so, it's redundant and the code almost always checks > direct||passthrough (which would be passthrough_delta > 0 with your scheme). It's not redundant, just split out. E.g. if 3 bits are used for the target_level, a special value is needed to indicate "direct", otherwise KVM couldn't differentiate between indirect and direct. Violent agreement and all that :-) I'm ok dropping direct and rolling it into target_level, just so long as we add helpers, e.g. IIUC they would be static inline bool is_sp_direct(...) { return !sp->role.target_level; } static inline bool is_sp_direct_or_passthrough(...) { return sp->role.target_level != sp->role.level; } > > > Regarding the naming: > > > > > > * If we keep Jiangshan's logic, I don't like the glevel name very much, any > > > of mapping_level, target_level or direct_level would be clearer? > > > > I don't love any of these names, especially glevel, because the field doesn't > > strictly track the guest/mapping/target/direct level. That could obviously be > > remedied by making it valid at all times, but then the role would truly need 3 > > bits (on top of direct) to track 5-level guest paging. > > Yes, it would need 3 bits but direct can be removed. > > > > * If we go with yours, I would call the field "passthrough_levels". > > > > Hmm, it's not a raw level though. > > Hence the plural. :) LOL, I honestly thought that was a typo. Making it plural sounds like it's passing through to multiple levels.