See the SDM, volume 3, section 4.4.1: If PAE paging would be in use following an execution of MOV to CR0 or MOV to CR4 (see Section 4.1.1) and the instruction is modifying any of CR0.CD, CR0.NW, CR0.PG, CR4.PAE, CR4.PGE, CR4.PSE, or CR4.SMEP; then the PDPTEs are loaded from the address in CR3.
Unified · Split
| @@ -975,7 +975,7 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4) · 974 unmodified lines | |||
| 975 | { | 975 | { |
| 976 | unsigned long old_cr4 = kvm_read_cr4(vcpu); | 976 | unsigned long old_cr4 = kvm_read_cr4(vcpu); |
| 977 | unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE | | 977 | unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE | |
| 978 | X86_CR4_SMEP | X86_CR4_PKE; | 978 | X86_CR4_SMEP; |
| 979 | 979 | ||
| 980 | if (kvm_valid_cr4(vcpu, cr4)) | 980 | if (kvm_valid_cr4(vcpu, cr4)) |
| 981 | return 1; | 981 | return 1; |