Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 901a14b7 authored by Pei Zhang's avatar Pei Zhang Committed by Zhenyu Wang
Browse files

drm/i915/gvt: print correct value for untracked mmio



In function intel_vgpu_emulate_mmio_read, the untracked mmio register is
dumped through kernel log, but the register value is not correct. This
patch fixes this issue.

V2: fix the fromat warning from checkpatch.pl.

Signed-off-by: default avatarPei Zhang <pei.zhang@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent 905a5035
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -125,25 +125,12 @@ int intel_vgpu_emulate_mmio_read(struct intel_vgpu *vgpu, uint64_t pa,
	if (WARN_ON(!reg_is_mmio(gvt, offset + bytes - 1)))
		goto err;

	mmio = intel_gvt_find_mmio_info(gvt, rounddown(offset, 4));
	if (!mmio && !vgpu->mmio.disable_warn_untrack) {
		gvt_err("vgpu%d: read untracked MMIO %x len %d val %x\n",
				vgpu->id, offset, bytes, *(u32 *)p_data);

		if (offset == 0x206c) {
			gvt_err("------------------------------------------\n");
			gvt_err("vgpu%d: likely triggers a gfx reset\n",
			vgpu->id);
			gvt_err("------------------------------------------\n");
			vgpu->mmio.disable_warn_untrack = true;
		}
	}

	if (!intel_gvt_mmio_is_unalign(gvt, offset)) {
		if (WARN_ON(!IS_ALIGNED(offset, bytes)))
			goto err;
	}

	mmio = intel_gvt_find_mmio_info(gvt, rounddown(offset, 4));
	if (mmio) {
		if (!intel_gvt_mmio_is_unalign(gvt, mmio->offset)) {
			if (WARN_ON(offset + bytes > mmio->offset + mmio->size))
@@ -152,9 +139,23 @@ int intel_vgpu_emulate_mmio_read(struct intel_vgpu *vgpu, uint64_t pa,
				goto err;
		}
		ret = mmio->read(vgpu, offset, p_data, bytes);
	} else
	} else {
		ret = intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);

		if (!vgpu->mmio.disable_warn_untrack) {
			gvt_err("vgpu%d: read untracked MMIO %x(%dB) val %x\n",
				vgpu->id, offset, bytes, *(u32 *)p_data);

			if (offset == 0x206c) {
				gvt_err("------------------------------------------\n");
				gvt_err("vgpu%d: likely triggers a gfx reset\n",
					vgpu->id);
				gvt_err("------------------------------------------\n");
				vgpu->mmio.disable_warn_untrack = true;
			}
		}
	}

	if (ret)
		goto err;