aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/gvt/gtt.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c
index 00aad8164dec..c11e353ca904 100644
--- a/drivers/gpu/drm/i915/gvt/gtt.c
+++ b/drivers/gpu/drm/i915/gvt/gtt.c
@@ -2259,16 +2259,18 @@ static int emulate_ggtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
2259 } else 2259 } else
2260 ops->set_pfn(&m, dma_addr >> PAGE_SHIFT); 2260 ops->set_pfn(&m, dma_addr >> PAGE_SHIFT);
2261 } else { 2261 } else {
2262 ggtt_get_host_entry(ggtt_mm, &m, g_gtt_index);
2263 ggtt_invalidate_pte(vgpu, &m);
2264 ops->set_pfn(&m, gvt->gtt.scratch_mfn); 2262 ops->set_pfn(&m, gvt->gtt.scratch_mfn);
2265 ops->clear_present(&m); 2263 ops->clear_present(&m);
2266 } 2264 }
2267 2265
2268out: 2266out:
2267 ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
2268
2269 ggtt_get_host_entry(ggtt_mm, &e, g_gtt_index);
2270 ggtt_invalidate_pte(vgpu, &e);
2271
2269 ggtt_set_host_entry(ggtt_mm, &m, g_gtt_index); 2272 ggtt_set_host_entry(ggtt_mm, &m, g_gtt_index);
2270 ggtt_invalidate(gvt->dev_priv); 2273 ggtt_invalidate(gvt->dev_priv);
2271 ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
2272 return 0; 2274 return 0;
2273} 2275}
2274 2276