<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Those warning just came out when our opregion got fixed. (Yeah, our opregion has been broken for a while).</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Background is since our opregion can work now, guest i915 gets the configuration in opregion can understand that port A/B/C/D should be the display port type. However, when later it gets the DDI port information from PCH, it found that the connector is DVI
(i915 considers DVI the same as HDMI when doing the display initialization). Although guest i915 gets confused (you can check the details with drm.debug=0x27 and you can see guest i915 is very confused by this), guest i915 decides to accept the fact that the
port is working for HDMI and it continues to do the initialization. But gvt-g doesn't provide HDMI emulation, so guest i915 later run into the following warnings about the vblank and so on. </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
The patch has been tested on SKL and CFL. And the good news is it really can solve the confusion in guest i915 about which type of port should be using, HDMI or DP.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
BR,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Tina</div>
<div>
<div><br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0);">
<br>
<hr tabindex="-1" style="display:inline-block; width:98%;">
<b>From:</b> Zhenyu Wang<br>
<b>Sent:</b> Wednesday, March 4, 2020 9:05 PM<br>
<b>To:</b> Zhang, Tina<br>
<b>Cc:</b> intel-gvt-dev@lists.freedesktop.org<br>
<b>Subject:</b> Re: [PATCH 2/2] drm/i915/gvt: Fix display port type issue.
<div><br>
</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On 2020.03.04 17:50:35 +0800, Tina Zhang wrote:<br>
> According to the emulated opregion, the emulated display should support<br>
> dp type output instead of HDMI or DVI.<br>
><br>
<br>
What's the test result for this? Does guest probe DP and does it work fine?<br>
<br>
As below error looks vblank related, not sure if caused by this and what's<br>
the state after this change, could you elaborate?<br>
<br>
> Otherwise, guest complains about the failures in HDMI initialization like:<br>
> <br>
> [ 57.746829] WARN_ON(drm_crtc_vblank_get(crtc) == 0)<br>
> [ 57.746944] WARNING: CPU: 1 PID: 36 at drivers/gpu/drm/i915/display/intel_display.c:1322 assert_vblank_disabled+0x45/0x50 [i915]<br>
> [ 57.748593] Modules linked in: i915(E) intel_rapl_msr video drm_kms_helper cec intel_rapl_common rc_core drm kvm_intel kvm i2c_algo_bit fb_sys_fops syscopyarea sysfillrect sysimgblt crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd
cryptd glue_helper joydev input_leds intel_rapl_perf serio_raw mac_hid qemu_fw_cfg sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 psmouse floppy e1000 pata_acpi i2c_piix4<br>
> [ 57.752619] CPU: 1 PID: 36 Comm: kworker/1:1 Tainted: G E 5.6.0-rc3+ #13<br>
> [ 57.753445] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-dirty-20180511_165818-tinazhang-linux-1 04/01/2014<br>
> [ 57.754746] Workqueue: events output_poll_execute [drm_kms_helper]<br>
> [ 57.755394] RIP: 0010:assert_vblank_disabled+0x45/0x50 [i915]<br>
> [ 57.755973] Code: bd 67 12 00 00 48 c7 c6 b0 a9 51 c0 48 c7 c7 1b e7 53 c0 75 10 e8 3b 87 e9 ff 48 89 df e8 53 ae e9 ff 5b 5d c3 e8 4b c1 c6 c0 <0f> 0b eb ec 0f 1f 80 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 56<br>
> [ 57.757904] RSP: 0018:ffffc9000010f928 EFLAGS: 00010286<br>
> [ 57.758434] RAX: 0000000000000000 RBX: ffff88812129b000 RCX: 0000000000000000<br>
> [ 57.759203] RDX: 0000000000000027 RSI: ffffffff82b83c07 RDI: 0000000000000246<br>
> [ 57.759919] RBP: ffffc9000010f930 R08: ffffffff82b83be0 R09: 0000000000000027<br>
> [ 57.760631] R10: ffff88811f9ca800 R11: 0000000000000024 R12: ffff888128e25000<br>
> [ 57.761354] R13: ffff888100f06300 R14: ffff888128e25000 R15: ffff888128e27000<br>
> [ 57.762128] FS: 0000000000000000(0000) GS:ffff888133d00000(0000) knlGS:0000000000000000<br>
> [ 57.763095] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br>
> [ 57.763675] CR2: 0000555c6091f628 CR3: 000000011f80a004 CR4: 0000000000360ee0<br>
> [ 57.764391] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br>
> [ 57.765108] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br>
> [ 57.765836] Call Trace:<br>
> [ 57.766122] intel_crtc_vblank_on+0x1a/0x50 [i915]<br>
> [ 57.766631] intel_enable_ddi+0x4b/0x3f0 [i915]<br>
> [ 57.767110] intel_encoders_enable+0x85/0xb0 [i915]<br>
> [ 57.767624] hsw_crtc_enable+0x420/0x6b0 [i915]<br>
> [ 57.768104] intel_update_crtc+0x1b8/0x1e0 [i915]<br>
> [ 57.768601] skl_commit_modeset_enables+0x61b/0x6d0 [i915]<br>
> [ 57.769175] intel_atomic_commit_tail+0x328/0x1530 [i915]<br>
> [ 57.769729] ? flush_workqueue_prep_pwqs+0xfa/0x130<br>
> [ 57.770225] ? flush_workqueue+0x198/0x3c0<br>
> [ 57.770662] intel_atomic_commit+0x2ad/0x320 [i915]<br>
> [ 57.771173] drm_atomic_commit+0x4a/0x50 [drm]<br>
> [ 57.771636] drm_client_modeset_commit_atomic+0x1c4/0x200 [drm]<br>
> [ 57.772244] drm_client_modeset_commit_locked+0x47/0x170 [drm]<br>
> [ 57.772838] ? mutex_lock+0x12/0x40<br>
> [ 57.773202] drm_client_modeset_commit+0x26/0x50 [drm]<br>
> [ 57.773732] drm_fb_helper_restore_fbdev_mode_unlocked+0x4e/0xa0 [drm_kms_helper]<br>
> [ 57.774490] drm_fb_helper_set_par+0x2d/0x60 [drm_kms_helper]<br>
> [ 57.775076] drm_fb_helper_hotplug_event.part.21+0xb7/0xc0 [drm_kms_helper]<br>
> [ 57.775783] drm_fb_helper_hotplug_event+0x1f/0x30 [drm_kms_helper]<br>
> [ 57.776435] intel_fbdev_output_poll_changed+0x6b/0xa0 [i915]<br>
> [ 57.777045] drm_kms_helper_hotplug_event+0x2a/0x40 [drm_kms_helper]<br>
> [ 57.777769] output_poll_execute+0x181/0x1b0 [drm_kms_helper]<br>
> [ 57.778353] process_one_work+0x1fa/0x3f0<br>
> [ 57.778808] worker_thread+0x34/0x410<br>
> [ 57.779182] kthread+0x121/0x140<br>
> [ 57.779513] ? process_one_work+0x3f0/0x3f0<br>
> [ 57.779940] ? kthread_park+0x90/0x90<br>
> [ 57.780314] ret_from_fork+0x35/0x40<br>
> [ 57.780681] ---[ end trace b40a2ff1454022b5 ]---<br>
> [ 57.781195] ------------[ cut here ]------------<br>
> [ 57.781742] WARNING: CPU: 1 PID: 36 at drivers/gpu/drm/drm_vblank.c:1336 drm_crtc_set_max_vblank_count+0x44/0x50 [drm]<br>
> [ 57.782811] Modules linked in: i915(E) intel_rapl_msr video drm_kms_helper cec intel_rapl_common rc_core drm kvm_intel kvm i2c_algo_bit fb_sys_fops syscopyarea sysfillrect sysimgblt crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd
cryptd glue_helper joydev input_leds intel_rapl_perf serio_raw mac_hid qemu_fw_cfg sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 psmouse floppy e1000 pata_acpi i2c_piix4<br>
> [ 57.786706] CPU: 1 PID: 36 Comm: kworker/1:1 Tainted: G W E 5.6.0-rc3+ #13<br>
> [ 57.787571] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-dirty-20180511_165818-tinazhang-linux-1 04/01/2014<br>
> [ 57.788911] Workqueue: events output_poll_execute [drm_kms_helper]<br>
> [ 57.789546] RIP: 0010:drm_crtc_set_max_vblank_count+0x44/0x50 [drm]<br>
> [ 57.790177] Code: 48 c1 e0 04 48 03 82 30 01 00 00 8b 92 40 01 00 00 85 d2 75 0c 8b 50 6c 85 d2 74 0e 89 70 68 5d c3 0f 0b 8b 50 6c 85 d2 75 f2 <0f> 0b 89 70 68 5d c3 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41<br>
> [ 57.792168] RSP: 0018:ffffc9000010f930 EFLAGS: 00010246<br>
> [ 57.793752] RAX: ffff88811f9ca800 RBX: ffff88812129b000 RCX: 0000000000000000<br>
> [ 57.794589] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: ffff88812129b000<br>
> [ 57.795298] RBP: ffffc9000010f930 R08: ffffffff82b83be0 R09: 0000000000000027<br>
> [ 57.796009] R10: ffff88811f9ca800 R11: 0000000000000024 R12: ffff888128e25000<br>
> [ 57.796721] R13: ffff888100f06300 R14: ffff888128e25000 R15: ffff888128e27000<br>
> [ 57.797439] FS: 0000000000000000(0000) GS:ffff888133d00000(0000) knlGS:0000000000000000<br>
> [ 57.798244] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br>
> [ 57.798820] CR2: 0000555c6091f628 CR3: 000000011f80a004 CR4: 0000000000360ee0<br>
> [ 57.799531] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br>
> [ 57.800243] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br>
> [ 57.800956] Call Trace:<br>
> [ 57.801373] intel_crtc_vblank_on+0x35/0x50 [i915]<br>
> [ 57.801881] intel_enable_ddi+0x4b/0x3f0 [i915]<br>
> [ 57.802357] intel_encoders_enable+0x85/0xb0 [i915]<br>
> [ 57.802865] hsw_crtc_enable+0x420/0x6b0 [i915]<br>
> [ 57.803338] intel_update_crtc+0x1b8/0x1e0 [i915]<br>
> [ 57.803829] skl_commit_modeset_enables+0x61b/0x6d0 [i915]<br>
> [ 57.804397] intel_atomic_commit_tail+0x328/0x1530 [i915]<br>
> [ 57.804942] ? flush_workqueue_prep_pwqs+0xfa/0x130<br>
> [ 57.805436] ? flush_workqueue+0x198/0x3c0<br>
> [ 57.805866] intel_atomic_commit+0x2ad/0x320 [i915]<br>
> [ 57.806369] drm_atomic_commit+0x4a/0x50 [drm]<br>
> [ 57.806827] drm_client_modeset_commit_atomic+0x1c4/0x200 [drm]<br>
> [ 57.807458] drm_client_modeset_commit_locked+0x47/0x170 [drm]<br>
> [ 57.808087] ? mutex_lock+0x12/0x40<br>
> [ 57.808445] drm_client_modeset_commit+0x26/0x50 [drm]<br>
> [ 57.808966] drm_fb_helper_restore_fbdev_mode_unlocked+0x4e/0xa0 [drm_kms_helper]<br>
> [ 57.809719] drm_fb_helper_set_par+0x2d/0x60 [drm_kms_helper]<br>
> [ 57.810296] drm_fb_helper_hotplug_event.part.21+0xb7/0xc0 [drm_kms_helper]<br>
> [ 57.810993] drm_fb_helper_hotplug_event+0x1f/0x30 [drm_kms_helper]<br>
> [ 57.811642] intel_fbdev_output_poll_changed+0x6b/0xa0 [i915]<br>
> [ 57.812219] drm_kms_helper_hotplug_event+0x2a/0x40 [drm_kms_helper]<br>
> [ 57.812925] output_poll_execute+0x181/0x1b0 [drm_kms_helper]<br>
> [ 57.813640] process_one_work+0x1fa/0x3f0<br>
> [ 57.814045] worker_thread+0x34/0x410<br>
> [ 57.814415] kthread+0x121/0x140<br>
> [ 57.814745] ? process_one_work+0x3f0/0x3f0<br>
> [ 57.815166] ? kthread_park+0x90/0x90<br>
> [ 57.815537] ret_from_fork+0x35/0x40<br>
> [ 57.815900] ---[ end trace b40a2ff1454022b6 ]---<br>
> <br>
> Signed-off-by: Tina Zhang <tina.zhang@intel.com><br>
> ---<br>
> drivers/gpu/drm/i915/gvt/display.c | 2 +-<br>
> 1 file changed, 1 insertion(+), 1 deletion(-)<br>
> <br>
> diff --git a/drivers/gpu/drm/i915/gvt/display.c b/drivers/gpu/drm/i915/gvt/display.c<br>
> index 14e139e66e45..86dc80405977 100644<br>
> --- a/drivers/gpu/drm/i915/gvt/display.c<br>
> +++ b/drivers/gpu/drm/i915/gvt/display.c<br>
> @@ -261,7 +261,7 @@ static void emulate_monitor_status_change(struct intel_vgpu *vgpu)<br>
> ~(TRANS_DDI_BPC_MASK | TRANS_DDI_MODE_SELECT_MASK |<br>
> TRANS_DDI_PORT_MASK);<br>
> vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(TRANSCODER_A)) |=<br>
> - (TRANS_DDI_BPC_8 | TRANS_DDI_MODE_SELECT_DVI |<br>
> + (TRANS_DDI_BPC_8 | TRANS_DDI_MODE_SELECT_DP_SST |<br>
> (PORT_D << TRANS_DDI_PORT_SHIFT) |<br>
> TRANS_DDI_FUNC_ENABLE);<br>
> if (IS_BROADWELL(dev_priv)) {<br>
> -- <br>
> 2.17.1<br>
> <br>
<br>
-- <br>
Open Source Technology Center, Intel ltd.<br>
<br>
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827<br>
</div>
</span></font></div>
</div>
</body>
</html>