|
@@ -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)))
|
|
if (WARN_ON(!reg_is_mmio(gvt, offset + bytes - 1)))
|
|
goto err;
|
|
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 (!intel_gvt_mmio_is_unalign(gvt, offset)) {
|
|
if (WARN_ON(!IS_ALIGNED(offset, bytes)))
|
|
if (WARN_ON(!IS_ALIGNED(offset, bytes)))
|
|
goto err;
|
|
goto err;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ mmio = intel_gvt_find_mmio_info(gvt, rounddown(offset, 4));
|
|
if (mmio) {
|
|
if (mmio) {
|
|
if (!intel_gvt_mmio_is_unalign(gvt, mmio->offset)) {
|
|
if (!intel_gvt_mmio_is_unalign(gvt, mmio->offset)) {
|
|
if (WARN_ON(offset + bytes > mmio->offset + mmio->size))
|
|
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;
|
|
goto err;
|
|
}
|
|
}
|
|
ret = mmio->read(vgpu, offset, p_data, bytes);
|
|
ret = mmio->read(vgpu, offset, p_data, bytes);
|
|
- } else
|
|
|
|
|
|
+ } else {
|
|
ret = intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
|
|
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)
|
|
if (ret)
|
|
goto err;
|
|
goto err;
|
|
|
|
|