diff options
| -rw-r--r-- | drivers/gpu/drm/i915/gvt/gtt.c | 8 |
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 | ||
| 2268 | out: | 2266 | out: |
| 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 | ||
