drm/i915/gvt: invalidate old ggtt page when update ggtt entry
Previously only cancelled dma map of a ggtt page when the ggtt entry was cleared. This patch will cancel dma map of an old ggtt page as well when the ggtt entry is updated with new page address. Fixes: 7598e8700e9a(drm/i915/gvt: Missed to cancel dma map for ggtt entries) Signed-off-by: Hang Yuan <hang.yuan@linux.intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
This commit is contained in:
parent
7759ca3aac
commit
f42259ef81
|
@ -2259,16 +2259,18 @@ static int emulate_ggtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
|
|||
} else
|
||||
ops->set_pfn(&m, dma_addr >> PAGE_SHIFT);
|
||||
} else {
|
||||
ggtt_get_host_entry(ggtt_mm, &m, g_gtt_index);
|
||||
ggtt_invalidate_pte(vgpu, &m);
|
||||
ops->set_pfn(&m, gvt->gtt.scratch_mfn);
|
||||
ops->clear_present(&m);
|
||||
}
|
||||
|
||||
out:
|
||||
ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
|
||||
|
||||
ggtt_get_host_entry(ggtt_mm, &e, g_gtt_index);
|
||||
ggtt_invalidate_pte(vgpu, &e);
|
||||
|
||||
ggtt_set_host_entry(ggtt_mm, &m, g_gtt_index);
|
||||
ggtt_invalidate(gvt->dev_priv);
|
||||
ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue