[PATCH v2 02/15] drm/i915/gvt: Use 64bit array to represent pdps

changbin.du at intel.com changbin.du at intel.com
Tue Jan 2 08:29:33 UTC 2018


From: Changbin Du <changbin.du at intel.com>

Each PDP item is a 64bit value.

Signed-off-by: Changbin Du <changbin.du at intel.com>
---
 drivers/gpu/drm/i915/gvt/scheduler.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index f5f3956..d1cef32 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -43,13 +43,13 @@
 
 static void set_context_pdp_root_pointer(
 		struct execlist_ring_context *ring_context,
-		u32 pdp[8])
+		u64 pdps[GEN8_3LVL_PDPES])
 {
 	struct execlist_mmio_pair *pdp_pair = &ring_context->pdp3_UDW;
 	int i;
 
 	for (i = 0; i < 8; i++)
-		pdp_pair[i].val = pdp[7 - i];
+		pdp_pair[i].val = ((u32 *)pdps)[7 - i];
 }
 
 static int populate_shadow_context(struct intel_vgpu_workload *workload)
@@ -113,7 +113,7 @@ static int populate_shadow_context(struct intel_vgpu_workload *workload)
 #undef COPY_REG
 
 	set_context_pdp_root_pointer(shadow_ring_context,
-				     (void *)workload->shadow_mm->ppgtt_mm.shadow_pdps);
+				     workload->shadow_mm->ppgtt_mm.shadow_pdps);
 
 	intel_gvt_hypervisor_read_gpa(vgpu,
 			workload->ring_context_gpa +
@@ -1163,7 +1163,7 @@ alloc_workload(struct intel_vgpu *vgpu)
 	offsetof(struct execlist_ring_context, x)
 
 static void read_guest_pdps(struct intel_vgpu *vgpu,
-		u64 ring_context_gpa, u32 pdp[8])
+		u64 ring_context_gpa, u64 pdps[GEN8_3LVL_PDPES])
 {
 	u64 gpa;
 	int i;
@@ -1172,7 +1172,7 @@ static void read_guest_pdps(struct intel_vgpu *vgpu,
 
 	for (i = 0; i < 8; i++)
 		intel_gvt_hypervisor_read_gpa(vgpu,
-				gpa + i * 8, &pdp[7 - i], 4);
+				gpa + i * 8, &((u32 *)pdps)[7 - i], 4);
 }
 
 static int prepare_mm(struct intel_vgpu_workload *workload)
@@ -1195,7 +1195,7 @@ static int prepare_mm(struct intel_vgpu_workload *workload)
 		return -EINVAL;
 	}
 
-	read_guest_pdps(workload->vgpu, workload->ring_context_gpa, (void *)pdps);
+	read_guest_pdps(workload->vgpu, workload->ring_context_gpa, pdps);
 
 	mm = intel_vgpu_find_ppgtt_mm(workload->vgpu, pdps);
 	if (mm) {
-- 
2.7.4



More information about the intel-gvt-dev mailing list