On 25/12/2017 04:09, Wanpeng Li wrote: > 2017-12-21 20:43 GMT+08:00 Paolo Bonzini <pbonzini@xxxxxxxxxx>: >> These fields are also simple copies of the data in the vmcs12 struct. >> For some of them, prepare_vmcs02 was skipping the copy when the field >> was unused. In prepare_vmcs02_full, we copy them always as long as the >> field exists on the host, because the corresponding execution control >> might be one of the shadowed fields. > > Why we don't need to copy them always before the patchset? Before these patches, we only copy them if the corresponding processor control is enabled. For example, we only copy the EOI exit bitmap if APICv is enabled by L1. Here we could have write to EOI exit bitmap vmlaunch (calls prepare_vmcs02_full) enable APICv (but EOI exit bitmap fields are clean) vmresume (doesn't call prepare_vmcs02_full) The vmresume doesn't call prepare_vmcs02_full, so the EOI exit bitmap must be copied every time prepare_vmcs02_full runs. Paolo