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).
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?
* If we go with yours, I would call the field "passthrough_levels".
Paolo