On Wed, Apr 13, 2022, Paolo Bonzini wrote: > On 4/12/22 23:31, Sean Christopherson wrote: > > > + unsigned glevel:4; > > 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; > > > > Where the field is ignored if direct=1, '0' for non-passthrough, and 1-3 to handle > > shadow_root_level - guest_root_level. Basically the same idea as Paolo's smushing > > of direct+passthrough into mapping_level, just dressed up differently. > > 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? > 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. > * If we go with yours, I would call the field "passthrough_levels". Hmm, it's not a raw level though.