Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 359b6931 authored by Xiaoguang Chen's avatar Xiaoguang Chen Committed by Zhenyu Wang
Browse files

drm/i915/gvt: set shadow entry to scratch page while p2m failed



Sometimes guest driver will only update partial of the GGTT entry then
access it. In this situation a failure will happen while translating
the gpa to hpa.
Now in this situation we let the corresponding shadow entry pointing
to a scratch page.

Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
Signed-off-by: default avatarXiaoguang Chen <xiaoguang.chen@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent 14f5ba26
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1837,11 +1837,15 @@ static int emulate_gtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
		ret = gtt_entry_p2m(vgpu, &e, &m);
		if (ret) {
			gvt_vgpu_err("fail to translate guest gtt entry\n");
			return ret;
			/* guest driver may read/write the entry when partial
			 * update the entry in this situation p2m will fail
			 * settting the shadow entry to point to a scratch page
			 */
			ops->set_pfn(&m, gvt->gtt.scratch_ggtt_mfn);
		}
	} else {
		m = e;
		m.val64 = 0;
		ops->set_pfn(&m, gvt->gtt.scratch_ggtt_mfn);
	}

	ggtt_set_shadow_entry(ggtt_mm, &m, g_gtt_index);