[Intel-gfx] [PATCH] drm/i915/mst: Check uapi enable not intel one during mst atomic check
Ville Syrjälä
ville.syrjala at linux.intel.com
Fri Nov 15 21:11:18 UTC 2019
On Fri, Nov 15, 2019 at 03:54:17PM -0500, Lyude Paul wrote:
> On Fri, 2019-11-15 at 22:25 +0200, Ville Syrjälä wrote:
> > On Fri, Nov 15, 2019 at 12:04:30PM -0800, José Roberto de Souza wrote:
> > > When the connector has VCPI allocated and is being moved to another
> > > pipe it causes drm_dp_atomic_release_vcpi_slots() and
> > > drm_dp_atomic_find_vcpi_slots() to be called in the same atomic check
> > > causing the error bellow.
> > > This happens because at this point Intel's hw.enable(and all other
> > > flags in the same struct) is not set but checking to on the uapi one
> > > it have the expected value.
> > >
> > > [ 580.804430] ------------[ cut here ]------------
> > > [ 580.804436] WARNING: CPU: 0 PID: 1221 at
> > > drivers/gpu/drm/drm_dp_mst_topology.c:4094
> > > drm_dp_atomic_find_vcpi_slots+0x157/0x180
> > > [ 580.804439] Modules linked in: cdc_ether r8152 i915 prime_numbers
> > > snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep
> > > asix snd_hda_core x86_pkg_temp_thermal usbnet mei_hdcp coretemp mii mei_me
> > > crct10dif_pclmul snd_pcm crc32_pclmul mei ghash_clmulni_intel i2c_i801
> > > [last unloaded: prime_numbers]
> > > [ 580.804462] CPU: 0 PID: 1221 Comm: kworker/0:0 Tainted:
> > > G W 5.4.0-rc7-zeh+ #1226
> > > [ 580.804465] Hardware name: Intel Corporation Tiger Lake Client
> > > Platform/TigerLake U DDR4 SODIMM RVP, BIOS
> > > TGLSFWI1.D00.2321.A09.1909250226 09/25/2019
> > > [ 580.804470] Workqueue: events output_poll_execute
> > > [ 580.804476] RIP: 0010:drm_dp_atomic_find_vcpi_slots+0x157/0x180
> > > [ 580.804481] Code: 6a ff ff ff 49 89 6d 08 4c 89 6b 10 4c 89 63 18 49 89
> > > 6e 08 e9 55 ff ff ff 41 89 c7 5b 5d 44 89 f8 41 5c 41 5d 41 5e 41 5f c3
> > > <0f> 0b 48 c7 c7 08 73 11 82 48 89 ee 41 bf ea ff ff ff e8 b2 e3 02
> > > [ 580.804484] RSP: 0018:ffffc900009b7ab8 EFLAGS: 00010246
> > > [ 580.804488] RAX: ffff88848c04ef50 RBX: ffff88848c04ef40 RCX:
> > > 0000000000000214
> > > [ 580.804492] RDX: ffff88848c04f5e0 RSI: ffff888486eb2c68 RDI:
> > > ffff88848e518800
> > > [ 580.804495] RBP: ffff88849d339000 R08: 00000000bc4e1092 R09:
> > > 0000000000000000
> > > [ 580.804498] R10: 0000000000000000 R11: 0000000000000000 R12:
> > > ffff88848c04e728
> > > [ 580.804501] R13: 0000000000000214 R14: ffff88848c04e720 R15:
> > > ffff888486eb2c68
> > > [ 580.804504] FS: 0000000000000000(0000) GS:ffff8884a0000000(0000)
> > > knlGS:0000000000000000
> > > [ 580.804507] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > [ 580.804510] CR2: 00007ff6bf1ba680 CR3: 0000000005210003 CR4:
> > > 0000000000760ef0
> > > [ 580.804512] PKRU: 55555554
> > > [ 580.804515] Call Trace:
> > > [ 580.804574] intel_dp_mst_compute_config+0x193/0x2b0 [i915]
> > > [ 580.804636] intel_atomic_check+0x10cc/0x20b0 [i915]
> > > [ 580.804644] ? drm_atomic_print_old_state+0xf1/0x130
> > > [ 580.804655] drm_atomic_check_only+0x56a/0x810
> > > [ 580.804663] drm_atomic_commit+0xe/0x50
> > > [ 580.804668] drm_client_modeset_commit_atomic+0x18b/0x220
> > > [ 580.804680] drm_client_modeset_commit_force+0x4d/0x180
> > > [ 580.804685] drm_fb_helper_restore_fbdev_mode_unlocked+0x46/0xa0
> > > [ 580.804689] drm_fb_helper_set_par+0x27/0x50
> > > [ 580.804692] drm_fb_helper_hotplug_event.part.0+0xa7/0xc0
> > > [ 580.804696] drm_kms_helper_hotplug_event+0x21/0x30
> > > [ 580.804699] output_poll_execute+0x1a4/0x1c0
> > > [ 580.804706] process_one_work+0x25b/0x5b0
> > > [ 580.804713] worker_thread+0x4b/0x3b0
> > > [ 580.804720] kthread+0x100/0x140
> > > [ 580.804723] ? process_one_work+0x5b0/0x5b0
> > > [ 580.804725] ? kthread_park+0x80/0x80
> > > [ 580.804730] ret_from_fork+0x24/0x50
> > > [ 580.804740] irq event stamp: 40988
> > > [ 580.804743] hardirqs last enabled at (40987): [<ffffffff81128567>]
> > > console_unlock+0x437/0x590
> > > [ 580.804746] hardirqs last disabled at (40988): [<ffffffff81001cfa>]
> > > trace_hardirqs_off_thunk+0x1a/0x20
> > > [ 580.804749] softirqs last enabled at (40972): [<ffffffff81c00389>]
> > > __do_softirq+0x389/0x47f
> > > [ 580.804752] softirqs last disabled at (40959): [<ffffffff810b6f19>]
> > > irq_exit+0xa9/0xc0
> > > [ 580.804754] ---[ end trace 80052e0c60463c67 ]---
> > > [ 580.804758] [drm:drm_dp_atomic_find_vcpi_slots] *ERROR* cannot allocate
> > > and release VCPI on [MST PORT:000000007880692e] in the same state
> > > [ 580.811370] [drm:intel_dp_hpd_pulse [i915]] got esi2 02 00 00
> > > [ 580.817239] [drm:intel_dp_hpd_pulse [i915]] got esi 02 00 00
> > > [ 580.817313] ------------[ cut here ]------------
> > > [ 580.817318] WARNING: CPU: 0 PID: 1221 at
> > > drivers/gpu/drm/drm_dp_mst_topology.c:4094
> > > drm_dp_atomic_find_vcpi_slots+0x157/0x180
> > > [ 580.817321] Modules linked in: cdc_ether r8152 i915 prime_numbers
> > > snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep
> > > asix snd_hda_core x86_pkg_temp_thermal
> > > [ 580.817412] [drm:intel_dp_hpd_pulse [i915]] got hpd irq on
> > > [ENCODER:306:DDI E] - short
> > > [ 580.817413] usbnet mei_hdcp coretemp mii mei_me crct10dif_pclmul
> > > snd_pcm crc32_pclmul
> > > [ 580.817490] [drm:intel_dp_hpd_pulse [i915]] is_mst
> > > [ 580.817491] mei ghash_clmulni_intel i2c_i801 [last unloaded:
> > > prime_numbers]
> > > [ 580.817498] CPU: 0 PID: 1221 Comm: kworker/0:0 Tainted:
> > > G W 5.4.0-rc7-zeh+ #1226
> > > [ 580.817503] Hardware name: Intel Corporation Tiger Lake Client
> > > Platform/TigerLake U DDR4 SODIMM RVP, BIOS
> > > TGLSFWI1.D00.2321.A09.1909250226 09/25/2019
> > > [ 580.817506] Workqueue: events output_poll_execute
> > > [ 580.817511] RIP: 0010:drm_dp_atomic_find_vcpi_slots+0x157/0x180
> > > [ 580.817514] Code: 6a ff ff ff 49 89 6d 08 4c 89 6b 10 4c 89 63 18 49 89
> > > 6e 08 e9 55 ff ff ff 41 89 c7 5b 5d 44 89 f8 41 5c 41 5d 41 5e 41 5f c3
> > > <0f> 0b 48 c7 c7 08 73 11 82 48 89 ee 41 bf ea ff ff ff e8 b2 e3 02
> > > [ 580.817516] RSP: 0018:ffffc900009b7ab8 EFLAGS: 00010246
> > > [ 580.817519] RAX: ffff88848c04ef50 RBX: ffff88848c04ef40 RCX:
> > > 000000000000018f
> > > [ 580.817521] RDX: ffff88848c04f5e0 RSI: ffff888486eb2c68 RDI:
> > > ffff88848e518800
> > > [ 580.817523] RBP: ffff88849d339000 R08: 00000000bc4e1092 R09:
> > > 0000000000000000
> > > [ 580.817525] R10: 0000000000000000 R11: 0000000000000000 R12:
> > > ffff88848c04e728
> > > [ 580.817528] R13: 000000000000018f R14: ffff88848c04e720 R15:
> > > ffff888486eb2c68
> > > [ 580.817532] FS: 0000000000000000(0000) GS:ffff8884a0000000(0000)
> > > knlGS:0000000000000000
> > > [ 580.817534] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > [ 580.817535] CR2: 00007ff6bf1ba680 CR3: 0000000005210003 CR4:
> > > 0000000000760ef0
> > > [ 580.817537] PKRU: 55555554
> > > [ 580.817538] Call Trace:
> > > [ 580.817620] intel_dp_mst_compute_config+0x193/0x2b0 [i915]
> > > [ 580.817690] intel_atomic_check+0x10cc/0x20b0 [i915]
> > > [ 580.817697] ? drm_atomic_print_old_state+0xf1/0x130
> > > [ 580.817711] drm_atomic_check_only+0x56a/0x810
> > > [ 580.817721] drm_atomic_commit+0xe/0x50
> > > [ 580.817726] drm_client_modeset_commit_atomic+0x18b/0x220
> > > [ 580.817744] drm_client_modeset_commit_force+0x4d/0x180
> > > [ 580.817751] drm_fb_helper_restore_fbdev_mode_unlocked+0x46/0xa0
> > > [ 580.817756] drm_fb_helper_set_par+0x27/0x50
> > > [ 580.817762] drm_fb_helper_hotplug_event.part.0+0xa7/0xc0
> > > [ 580.817767] drm_kms_helper_hotplug_event+0x21/0x30
> > > [ 580.817771] output_poll_execute+0x1a4/0x1c0
> > > [ 580.817780] process_one_work+0x25b/0x5b0
> > > [ 580.817791] worker_thread+0x4b/0x3b0
> > > [ 580.817800] kthread+0x100/0x140
> > > [ 580.817804] ? process_one_work+0x5b0/0x5b0
> > > [ 580.817807] ? kthread_park+0x80/0x80
> > > [ 580.817813] ret_from_fork+0x24/0x50
> > > [ 580.817832] irq event stamp: 41028
> > > [ 580.817838] hardirqs last enabled at (41027): [<ffffffff81128567>]
> > > console_unlock+0x437/0x590
> > > [ 580.817841] hardirqs last disabled at (41028): [<ffffffff81001cfa>]
> > > trace_hardirqs_off_thunk+0x1a/0x20
> > > [ 580.817846] softirqs last enabled at (41022): [<ffffffff81c00389>]
> > > __do_softirq+0x389/0x47f
> > > [ 580.817851] softirqs last disabled at (41013): [<ffffffff810b6f19>]
> > > irq_exit+0xa9/0xc0
> > > [ 580.817854] ---[ end trace 80052e0c60463c68 ]---
> > > [ 580.817858] [drm:drm_dp_atomic_find_vcpi_slots] *ERROR* cannot allocate
> > > and release VCPI on [MST PORT:000000007880692e] in the same state
> > > [ 580.830767] [drm:intel_dp_mst_compute_config [i915]] failed finding
> > > vcpi slots:-22
> > > [ 580.830821] [drm:intel_atomic_check [i915]] Encoder config failure: -22
> > >
> > > Cc: Lyude Paul <lyude at redhat.com>
> > > Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> > > Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> > > Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> > > ---
> > > drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > > b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > > index 9fc606c6dbee..f8a350359346 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > > @@ -191,7 +191,7 @@ intel_dp_mst_atomic_check(struct drm_connector
> > > *connector,
> > >
> > > if (!crtc_state ||
> > > !drm_atomic_crtc_needs_modeset(&crtc_state->uapi) ||
> > > - crtc_state->hw.enable)
> > > + crtc_state->uapi.enable)
> >
> > Yeah, I already mentioned this during the review but I guess it slipped
> > through. We may have to spend more brain cells on this stuff for
> > bigjoiner but let's at least try not to break everything else in the
> > meantime.
>
> Bigjoiner?
Two pipes feeding a single port. The whole reason why we now get to
deal with this hw vs. uapi stuff.
> >
> > Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >
> > > return 0;
> > > }
> > >
> > > --
> > > 2.24.0
> --
> Cheers,
> Lyude Paul
--
Ville Syrjälä
Intel
More information about the Intel-gfx
mailing list