On Tue, May 7, 2019 at 8:36 AM Sean Christopherson <sean.j.christopherson@xxxxxxxxx> wrote: > Not intercepting fields tagged read-only also allows for additional > optimizations, e.g. marking GUEST_{CS,SS}_AR_BYTES as SHADOW_FIELD_RO > since those fields are rarely written by a VMMs, but read frequently. Do you have data to support this, or is this just a gut feeling? The last time I looked at Virtual Box (which was admittedly a long time ago), it liked to read and write just about every VMCS guest-state field it could find on every VM-exit. The decision of which fields to shadow is really something that should be done dynamically, depending on the behavior of the guest hypervisor (which may vary depending on the L2 guest it's running!) Making the decision statically is bound to result in a poor outcome for some scenarios. When I measured this several years ago, taking one VM-exit for a VMREAD or VMWRITE was more expensive than needlessly shadowing it ~35-40 times.