File tree Expand file tree Collapse file tree 1 file changed +5
-1
lines changed Expand file tree Collapse file tree 1 file changed +5
-1
lines changed Original file line number Diff line number Diff line change @@ -4896,6 +4896,7 @@ long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu,
4896
4896
{
4897
4897
u64 error_code = PFERR_GUEST_FINAL_MASK ;
4898
4898
u8 level = PG_LEVEL_4K ;
4899
+ u64 direct_bits ;
4899
4900
u64 end ;
4900
4901
int r ;
4901
4902
@@ -4910,15 +4911,18 @@ long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu,
4910
4911
if (r )
4911
4912
return r ;
4912
4913
4914
+ direct_bits = 0 ;
4913
4915
if (kvm_arch_has_private_mem (vcpu -> kvm ) &&
4914
4916
kvm_mem_is_private (vcpu -> kvm , gpa_to_gfn (range -> gpa )))
4915
4917
error_code |= PFERR_PRIVATE_ACCESS ;
4918
+ else
4919
+ direct_bits = gfn_to_gpa (kvm_gfn_direct_bits (vcpu -> kvm ));
4916
4920
4917
4921
/*
4918
4922
* Shadow paging uses GVA for kvm page fault, so restrict to
4919
4923
* two-dimensional paging.
4920
4924
*/
4921
- r = kvm_tdp_map_page (vcpu , range -> gpa , error_code , & level );
4925
+ r = kvm_tdp_map_page (vcpu , range -> gpa | direct_bits , error_code , & level );
4922
4926
if (r < 0 )
4923
4927
return r ;
4924
4928
You can’t perform that action at this time.
0 commit comments