Message ID | 20201103032659.70561-2-koba.ko@canonical.com |
---|---|
State | New |
Headers | show |
Series | drm/i915/dp_mst - System would hang during the boot up | expand |
On 03.11.20 04:26, Koba Ko wrote: > From: Imre Deak <imre.deak@intel.com> > > BugLink: https://bugs.launchpad.net/bugs/1902469 > > The atomic check hooks must look up the encoder to be used with a > connector from the connector's atomic state, and not assume that it's > the connector's current attached encoder. The latter one can change > under the atomic check func, or can be unset yet as in the case of MST > connectors. > > This fixes > [ 7.940719] Oops: 0000 [#1] SMP NOPTI > [ 7.944407] CPU: 2 PID: 143 Comm: kworker/2:2 Not tainted 5.6.0-1023-oem #23-Ubuntu > [ 7.952102] Hardware name: Dell Inc. Latitude 7320/, BIOS 88.87.11 09/07/2020 > [ 7.959278] Workqueue: events output_poll_execute [drm_kms_helper] > [ 7.965511] RIP: 0010:intel_psr_atomic_check+0x37/0xa0 [i915] > [ 7.971327] Code: 80 2d 06 00 00 20 74 42 80 b8 34 71 00 00 00 74 39 48 8b 72 08 48 85 f6 74 30 80 b8 f8 71 00 00 00 74 27 4c 8b 87 80 04 00 00 <41> 8b 78 78 83 ff 08 77 19 31 c9 83 ff 05 77 19 48 81 c1 20 01 00 > [ 7.977541] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input5 > [ 7.990154] RSP: 0018:ffffb864c073fac8 EFLAGS: 00010202 > [ 7.990155] RAX: ffff8c5d55ce0000 RBX: ffff8c5d54519000 RCX: 0000000000000000 > [ 7.990155] RDX: ffff8c5d55cb30c0 RSI: ffff8c5d89a0c800 RDI: ffff8c5d55fcf800 > [ 7.990156] RBP: ffffb864c073fac8 R08: 0000000000000000 R09: ffff8c5d55d9f3a0 > [ 7.990156] R10: ffff8c5d55cb30c0 R11: 0000000000000009 R12: ffff8c5d55fcf800 > [ 7.990156] R13: ffff8c5d55cb30c0 R14: ffff8c5d56989cc0 R15: ffff8c5d56989cc0 > [ 7.990158] FS: 0000000000000000(0000) GS:ffff8c5d8e480000(0000) knlGS:0000000000000000 > [ 8.047193] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 8.052970] CR2: 0000000000000078 CR3: 0000000856500005 CR4: 0000000000760ee0 > [ 8.060137] PKRU: 55555554 > [ 8.062867] Call Trace: > [ 8.065361] intel_digital_connector_atomic_check+0x53/0x130 [i915] > [ 8.071703] intel_dp_mst_atomic_check+0x5b/0x200 [i915] > [ 8.077074] drm_atomic_helper_check_modeset+0x1db/0x790 [drm_kms_helper] > [ 8.083942] intel_atomic_check+0x92/0xc50 [i915] > [ 8.088705] ? drm_plane_check_pixel_format+0x4f/0xb0 [drm] > [ 8.094345] ? drm_atomic_plane_check+0x7a/0x3a0 [drm] > [ 8.099548] drm_atomic_check_only+0x2b1/0x450 [drm] > [ 8.104573] drm_atomic_commit+0x18/0x50 [drm] > [ 8.109070] drm_client_modeset_commit_atomic+0x1c9/0x200 [drm] > [ 8.115056] drm_client_modeset_commit_force+0x55/0x160 [drm] > [ 8.120866] drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xb0 [drm_kms_helper] > [ 8.128415] drm_fb_helper_set_par+0x34/0x50 [drm_kms_helper] > [ 8.134225] drm_fb_helper_hotplug_event.part.0+0xb4/0xe0 [drm_kms_helper] > [ 8.141150] drm_fb_helper_hotplug_event+0x1c/0x30 [drm_kms_helper] > [ 8.147481] intel_fbdev_output_poll_changed+0x6f/0xa0 [i915] > [ 8.153287] drm_kms_helper_hotplug_event+0x2c/0x40 [drm_kms_helper] > [ 8.159709] output_poll_execute+0x1aa/0x1c0 [drm_kms_helper] > [ 8.165506] process_one_work+0x1e8/0x3b0 > [ 8.169561] worker_thread+0x4d/0x400 > [ 8.173249] kthread+0x104/0x140 > [ 8.176515] ? process_one_work+0x3b0/0x3b0 > [ 8.180726] ? kthread_park+0x90/0x90 > [ 8.184416] ret_from_fork+0x1f/0x40 > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2361 > References: https://gitlab.freedesktop.org/drm/intel/-/issues/2486 > Reported-by: William Tseng <william.tseng@intel.com> > Reported-by: Cooper Chiou <cooper.chiou@intel.com> > Cc: <stable@vger.kernel.org> > Signed-off-by: Imre Deak <imre.deak@intel.com> > Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com> > Link: https://patchwork.freedesktop.org/patch/msgid/20201027160928.3665377-1-imre.deak@intel.com > (cherry picked from commit 00e5deb5c4f5fe367311465e720e65cfa1178792) > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > (cherry picked from commit b5bc1f05f631127901dca1898482bb0047002c11 > drmtip) > Signed-off-by: Koba Ko <koba.ko@canonical.com> > --- Sorry for the bother but could you do the one for all submission as [SRU G/F + F/oem-5.6] and while at it... it seems this landed in linux-next, so you could update the cherry pick line: commit db43db0ac9caa711a9060a9a7c62c232cd4d2bd0 Author: Imre Deak <imre.deak@intel.com> Date: Tue Oct 27 18:09:28 2020 +0200 drm/i915: Fix encoder lookup during PSR atomic check > drivers/gpu/drm/i915/display/intel_psr.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c > index d796c8105251..eb9ae40492eb 100644 > --- a/drivers/gpu/drm/i915/display/intel_psr.c > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > @@ -1630,8 +1630,8 @@ void intel_psr_atomic_check(struct drm_connector *connector, > return; > > intel_connector = to_intel_connector(connector); > - dig_port = enc_to_dig_port(intel_attached_encoder(intel_connector)); > - if (!dig_port || dev_priv->psr.dp != &dig_port->dp) > + dig_port = enc_to_dig_port(to_intel_encoder(new_state->best_encoder)); > + if (dev_priv->psr.dp != &dig_port->dp) > return; > > crtc_state = drm_atomic_get_new_crtc_state(new_state->state, >
Sure, will SRU at one submission. On Tue, Nov 3, 2020, 6:51 PM Stefan Bader <stefan.bader@canonical.com> wrote: > On 03.11.20 04:26, Koba Ko wrote: > > From: Imre Deak <imre.deak@intel.com> > > > > BugLink: https://bugs.launchpad.net/bugs/1902469 > > > > The atomic check hooks must look up the encoder to be used with a > > connector from the connector's atomic state, and not assume that it's > > the connector's current attached encoder. The latter one can change > > under the atomic check func, or can be unset yet as in the case of MST > > connectors. > > > > This fixes > > [ 7.940719] Oops: 0000 [#1] SMP NOPTI > > [ 7.944407] CPU: 2 PID: 143 Comm: kworker/2:2 Not tainted > 5.6.0-1023-oem #23-Ubuntu > > [ 7.952102] Hardware name: Dell Inc. Latitude 7320/, BIOS 88.87.11 > 09/07/2020 > > [ 7.959278] Workqueue: events output_poll_execute [drm_kms_helper] > > [ 7.965511] RIP: 0010:intel_psr_atomic_check+0x37/0xa0 [i915] > > [ 7.971327] Code: 80 2d 06 00 00 20 74 42 80 b8 34 71 00 00 00 74 39 > 48 8b 72 08 48 85 f6 74 30 80 b8 f8 71 00 00 00 74 27 4c 8b 87 80 04 00 00 > <41> 8b 78 78 83 ff 08 77 19 31 c9 83 ff 05 77 19 48 81 c1 20 01 00 > > [ 7.977541] input: PS/2 Generic Mouse as > /devices/platform/i8042/serio1/input/input5 > > [ 7.990154] RSP: 0018:ffffb864c073fac8 EFLAGS: 00010202 > > [ 7.990155] RAX: ffff8c5d55ce0000 RBX: ffff8c5d54519000 RCX: > 0000000000000000 > > [ 7.990155] RDX: ffff8c5d55cb30c0 RSI: ffff8c5d89a0c800 RDI: > ffff8c5d55fcf800 > > [ 7.990156] RBP: ffffb864c073fac8 R08: 0000000000000000 R09: > ffff8c5d55d9f3a0 > > [ 7.990156] R10: ffff8c5d55cb30c0 R11: 0000000000000009 R12: > ffff8c5d55fcf800 > > [ 7.990156] R13: ffff8c5d55cb30c0 R14: ffff8c5d56989cc0 R15: > ffff8c5d56989cc0 > > [ 7.990158] FS: 0000000000000000(0000) GS:ffff8c5d8e480000(0000) > knlGS:0000000000000000 > > [ 8.047193] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > [ 8.052970] CR2: 0000000000000078 CR3: 0000000856500005 CR4: > 0000000000760ee0 > > [ 8.060137] PKRU: 55555554 > > [ 8.062867] Call Trace: > > [ 8.065361] intel_digital_connector_atomic_check+0x53/0x130 [i915] > > [ 8.071703] intel_dp_mst_atomic_check+0x5b/0x200 [i915] > > [ 8.077074] drm_atomic_helper_check_modeset+0x1db/0x790 > [drm_kms_helper] > > [ 8.083942] intel_atomic_check+0x92/0xc50 [i915] > > [ 8.088705] ? drm_plane_check_pixel_format+0x4f/0xb0 [drm] > > [ 8.094345] ? drm_atomic_plane_check+0x7a/0x3a0 [drm] > > [ 8.099548] drm_atomic_check_only+0x2b1/0x450 [drm] > > [ 8.104573] drm_atomic_commit+0x18/0x50 [drm] > > [ 8.109070] drm_client_modeset_commit_atomic+0x1c9/0x200 [drm] > > [ 8.115056] drm_client_modeset_commit_force+0x55/0x160 [drm] > > [ 8.120866] drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xb0 > [drm_kms_helper] > > [ 8.128415] drm_fb_helper_set_par+0x34/0x50 [drm_kms_helper] > > [ 8.134225] drm_fb_helper_hotplug_event.part.0+0xb4/0xe0 > [drm_kms_helper] > > [ 8.141150] drm_fb_helper_hotplug_event+0x1c/0x30 [drm_kms_helper] > > [ 8.147481] intel_fbdev_output_poll_changed+0x6f/0xa0 [i915] > > [ 8.153287] drm_kms_helper_hotplug_event+0x2c/0x40 [drm_kms_helper] > > [ 8.159709] output_poll_execute+0x1aa/0x1c0 [drm_kms_helper] > > [ 8.165506] process_one_work+0x1e8/0x3b0 > > [ 8.169561] worker_thread+0x4d/0x400 > > [ 8.173249] kthread+0x104/0x140 > > [ 8.176515] ? process_one_work+0x3b0/0x3b0 > > [ 8.180726] ? kthread_park+0x90/0x90 > > [ 8.184416] ret_from_fork+0x1f/0x40 > > > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2361 > > References: https://gitlab.freedesktop.org/drm/intel/-/issues/2486 > > Reported-by: William Tseng <william.tseng@intel.com> > > Reported-by: Cooper Chiou <cooper.chiou@intel.com> > > Cc: <stable@vger.kernel.org> > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com> > > Link: > https://patchwork.freedesktop.org/patch/msgid/20201027160928.3665377-1-imre.deak@intel.com > > (cherry picked from commit 00e5deb5c4f5fe367311465e720e65cfa1178792) > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > (cherry picked from commit b5bc1f05f631127901dca1898482bb0047002c11 > > drmtip) > > Signed-off-by: Koba Ko <koba.ko@canonical.com> > > --- > > Sorry for the bother but could you do the one for all submission as > > [SRU G/F + F/oem-5.6] > > and while at it... it seems this landed in linux-next, so you could update > the > cherry pick line: > > commit db43db0ac9caa711a9060a9a7c62c232cd4d2bd0 > Author: Imre Deak <imre.deak@intel.com> > Date: Tue Oct 27 18:09:28 2020 +0200 > > drm/i915: Fix encoder lookup during PSR atomic check > > > drivers/gpu/drm/i915/display/intel_psr.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > b/drivers/gpu/drm/i915/display/intel_psr.c > > index d796c8105251..eb9ae40492eb 100644 > > --- a/drivers/gpu/drm/i915/display/intel_psr.c > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > > @@ -1630,8 +1630,8 @@ void intel_psr_atomic_check(struct drm_connector > *connector, > > return; > > > > intel_connector = to_intel_connector(connector); > > - dig_port = > enc_to_dig_port(intel_attached_encoder(intel_connector)); > > - if (!dig_port || dev_priv->psr.dp != &dig_port->dp) > > + dig_port = > enc_to_dig_port(to_intel_encoder(new_state->best_encoder)); > > + if (dev_priv->psr.dp != &dig_port->dp) > > return; > > > > crtc_state = drm_atomic_get_new_crtc_state(new_state->state, > > > > >
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c index d796c8105251..eb9ae40492eb 100644 --- a/drivers/gpu/drm/i915/display/intel_psr.c +++ b/drivers/gpu/drm/i915/display/intel_psr.c @@ -1630,8 +1630,8 @@ void intel_psr_atomic_check(struct drm_connector *connector, return; intel_connector = to_intel_connector(connector); - dig_port = enc_to_dig_port(intel_attached_encoder(intel_connector)); - if (!dig_port || dev_priv->psr.dp != &dig_port->dp) + dig_port = enc_to_dig_port(to_intel_encoder(new_state->best_encoder)); + if (dev_priv->psr.dp != &dig_port->dp) return; crtc_state = drm_atomic_get_new_crtc_state(new_state->state,