drm/i915/gvt: correct the emulation in TLB control handler
Need a explicit write_vreg in TLB MMIO write handler, beside that TLB vreg should update correspondingly following HW status to do correct emulation. Signed-off-by: Ping Gao <ping.a.gao@intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
This commit is contained in:
parent
5f399f1158
commit
f24940e000
@ -1370,6 +1370,8 @@ static int gvt_reg_tlb_control_handler(struct intel_vgpu *vgpu,
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
unsigned int id = 0;
|
unsigned int id = 0;
|
||||||
|
|
||||||
|
write_vreg(vgpu, offset, p_data, bytes);
|
||||||
|
|
||||||
switch (offset) {
|
switch (offset) {
|
||||||
case 0x4260:
|
case 0x4260:
|
||||||
id = RCS;
|
id = RCS;
|
||||||
|
@ -152,6 +152,8 @@ static void handle_tlb_pending_event(struct intel_vgpu *vgpu, int ring_id)
|
|||||||
|
|
||||||
if (wait_for_atomic((I915_READ_FW(reg) == 0), 50))
|
if (wait_for_atomic((I915_READ_FW(reg) == 0), 50))
|
||||||
gvt_err("timeout in invalidate ring (%d) tlb\n", ring_id);
|
gvt_err("timeout in invalidate ring (%d) tlb\n", ring_id);
|
||||||
|
else
|
||||||
|
vgpu_vreg(vgpu, regs[ring_id]) = 0;
|
||||||
|
|
||||||
intel_uncore_forcewake_put(dev_priv, fw);
|
intel_uncore_forcewake_put(dev_priv, fw);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user