diff options
| -rw-r--r-- | arch/x86/kvm/vmx.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 605183291069..259e9b28ccf8 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
| @@ -10270,6 +10270,18 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12, | |||
| 10270 | 10270 | ||
| 10271 | } | 10271 | } |
| 10272 | 10272 | ||
| 10273 | if (enable_pml) { | ||
| 10274 | /* | ||
| 10275 | * Conceptually we want to copy the PML address and index from | ||
| 10276 | * vmcs01 here, and then back to vmcs01 on nested vmexit. But, | ||
| 10277 | * since we always flush the log on each vmexit, this happens | ||
| 10278 | * to be equivalent to simply resetting the fields in vmcs02. | ||
| 10279 | */ | ||
| 10280 | ASSERT(vmx->pml_pg); | ||
| 10281 | vmcs_write64(PML_ADDRESS, page_to_phys(vmx->pml_pg)); | ||
| 10282 | vmcs_write16(GUEST_PML_INDEX, PML_ENTITY_NUM - 1); | ||
| 10283 | } | ||
| 10284 | |||
| 10273 | if (nested_cpu_has_ept(vmcs12)) { | 10285 | if (nested_cpu_has_ept(vmcs12)) { |
| 10274 | kvm_mmu_unload(vcpu); | 10286 | kvm_mmu_unload(vcpu); |
| 10275 | nested_ept_init_mmu_context(vcpu); | 10287 | nested_ept_init_mmu_context(vcpu); |
