diff options
author | Pei Zhang <pei.zhang@intel.com> | 2017-01-04 09:32:23 -0500 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2017-01-08 22:05:56 -0500 |
commit | 901a14b721feef1b37cfe6362ee103e135133677 (patch) | |
tree | c6c5a1c269eb9d885a0cb21d25a1dcda9c2ccfab | |
parent | 905a5035ebe79e89712cda0bed1887c73aa8e9bb (diff) |
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: Pei Zhang <pei.zhang@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/gvt/mmio.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/drivers/gpu/drm/i915/gvt/mmio.c b/drivers/gpu/drm/i915/gvt/mmio.c index 09c9450a1946..e60701397ac2 100644 --- a/drivers/gpu/drm/i915/gvt/mmio.c +++ b/drivers/gpu/drm/i915/gvt/mmio.c | |||
@@ -125,25 +125,12 @@ int intel_vgpu_emulate_mmio_read(struct intel_vgpu *vgpu, uint64_t pa, | |||
125 | if (WARN_ON(!reg_is_mmio(gvt, offset + bytes - 1))) | 125 | if (WARN_ON(!reg_is_mmio(gvt, offset + bytes - 1))) |
126 | goto err; | 126 | goto err; |
127 | 127 | ||
128 | mmio = intel_gvt_find_mmio_info(gvt, rounddown(offset, 4)); | ||
129 | if (!mmio && !vgpu->mmio.disable_warn_untrack) { | ||
130 | gvt_err("vgpu%d: read untracked MMIO %x len %d val %x\n", | ||
131 | vgpu->id, offset, bytes, *(u32 *)p_data); | ||
132 | |||
133 | if (offset == 0x206c) { | ||
134 | gvt_err("------------------------------------------\n"); | ||
135 | gvt_err("vgpu%d: likely triggers a gfx reset\n", | ||
136 | vgpu->id); | ||
137 | gvt_err("------------------------------------------\n"); | ||
138 | vgpu->mmio.disable_warn_untrack = true; | ||
139 | } | ||
140 | } | ||
141 | |||
142 | if (!intel_gvt_mmio_is_unalign(gvt, offset)) { | 128 | if (!intel_gvt_mmio_is_unalign(gvt, offset)) { |
143 | if (WARN_ON(!IS_ALIGNED(offset, bytes))) | 129 | if (WARN_ON(!IS_ALIGNED(offset, bytes))) |
144 | goto err; | 130 | goto err; |
145 | } | 131 | } |
146 | 132 | ||
133 | mmio = intel_gvt_find_mmio_info(gvt, rounddown(offset, 4)); | ||
147 | if (mmio) { | 134 | if (mmio) { |
148 | if (!intel_gvt_mmio_is_unalign(gvt, mmio->offset)) { | 135 | if (!intel_gvt_mmio_is_unalign(gvt, mmio->offset)) { |
149 | if (WARN_ON(offset + bytes > mmio->offset + mmio->size)) | 136 | 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, | |||
152 | goto err; | 139 | goto err; |
153 | } | 140 | } |
154 | ret = mmio->read(vgpu, offset, p_data, bytes); | 141 | ret = mmio->read(vgpu, offset, p_data, bytes); |
155 | } else | 142 | } else { |
156 | ret = intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes); | 143 | ret = intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes); |
157 | 144 | ||
145 | if (!vgpu->mmio.disable_warn_untrack) { | ||
146 | gvt_err("vgpu%d: read untracked MMIO %x(%dB) val %x\n", | ||
147 | vgpu->id, offset, bytes, *(u32 *)p_data); | ||
148 | |||
149 | if (offset == 0x206c) { | ||
150 | gvt_err("------------------------------------------\n"); | ||
151 | gvt_err("vgpu%d: likely triggers a gfx reset\n", | ||
152 | vgpu->id); | ||
153 | gvt_err("------------------------------------------\n"); | ||
154 | vgpu->mmio.disable_warn_untrack = true; | ||
155 | } | ||
156 | } | ||
157 | } | ||
158 | |||
158 | if (ret) | 159 | if (ret) |
159 | goto err; | 160 | goto err; |
160 | 161 | ||