[PATCH] drm/i915/gvt: update guest page table even p2m faild
Xiaoguang Chen
xiaoguang.chen at intel.com
Thu Mar 16 02:09:11 UTC 2017
Sometimes guest driver will write the gtt mmio page table with length of 4
while the entry size is 8. In this situation the p2m may failed.
Even the p2m failed we should update the guest gtt mmio page table but
not update the shadow gtt mmio page table.
Signed-off-by: Xiaoguang Chen<xiaoguang.chen at intel.com>
Reviewed-by: Zhi Wang <zhi.a.wang at intel.com>
---
drivers/gpu/drm/i915/gvt/gtt.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c
index da73127..6ea9afa 100644
--- a/drivers/gpu/drm/i915/gvt/gtt.c
+++ b/drivers/gpu/drm/i915/gvt/gtt.c
@@ -1817,7 +1817,7 @@ static int emulate_gtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
unsigned long g_gtt_index = off >> info->gtt_entry_size_shift;
unsigned long gma;
struct intel_gvt_gtt_entry e, m;
- int ret;
+ int ret = 0;
if (bytes != 4 && bytes != 8)
return -EINVAL;
@@ -1835,16 +1835,15 @@ static int emulate_gtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
if (ops->test_present(&e)) {
ret = gtt_entry_p2m(vgpu, &e, &m);
- if (ret) {
+ if (ret)
gvt_vgpu_err("fail to translate guest gtt entry\n");
- return ret;
- }
} else {
m = e;
m.val64 = 0;
}
- ggtt_set_shadow_entry(ggtt_mm, &m, g_gtt_index);
+ if (ret == 0)
+ ggtt_set_shadow_entry(ggtt_mm, &m, g_gtt_index);
ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
return 0;
}
--
2.7.4
More information about the intel-gvt-dev
mailing list