Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'gvt-fixes-2019-06-19' of https://github.com/intel/gvt-linux into drm-intel-fixes

gvt-fixes-2019-06-19

- Fix reserved PVINFO register write (Weinan)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
From: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190619062240.GM9684@zhen-hp.sh.intel.com

+9 -6
+9 -6
drivers/gpu/drm/i915/gvt/handlers.c
··· 1254 1254 static int pvinfo_mmio_write(struct intel_vgpu *vgpu, unsigned int offset, 1255 1255 void *p_data, unsigned int bytes) 1256 1256 { 1257 - u32 data; 1258 - int ret; 1259 - 1260 - write_vreg(vgpu, offset, p_data, bytes); 1261 - data = vgpu_vreg(vgpu, offset); 1257 + u32 data = *(u32 *)p_data; 1258 + bool invalid_write = false; 1262 1259 1263 1260 switch (offset) { 1264 1261 case _vgtif_reg(display_ready): 1265 1262 send_display_ready_uevent(vgpu, data ? 1 : 0); 1266 1263 break; 1267 1264 case _vgtif_reg(g2v_notify): 1268 - ret = handle_g2v_notification(vgpu, data); 1265 + handle_g2v_notification(vgpu, data); 1269 1266 break; 1270 1267 /* add xhot and yhot to handled list to avoid error log */ 1271 1268 case _vgtif_reg(cursor_x_hot): ··· 1279 1282 case _vgtif_reg(execlist_context_descriptor_hi): 1280 1283 break; 1281 1284 case _vgtif_reg(rsv5[0])..._vgtif_reg(rsv5[3]): 1285 + invalid_write = true; 1282 1286 enter_failsafe_mode(vgpu, GVT_FAILSAFE_INSUFFICIENT_RESOURCE); 1283 1287 break; 1284 1288 default: 1289 + invalid_write = true; 1285 1290 gvt_vgpu_err("invalid pvinfo write offset %x bytes %x data %x\n", 1286 1291 offset, bytes, data); 1287 1292 break; 1288 1293 } 1294 + 1295 + if (!invalid_write) 1296 + write_vreg(vgpu, offset, p_data, bytes); 1297 + 1289 1298 return 0; 1290 1299 } 1291 1300