[Intel-gfx] [PATCH] drm/i915/mst: Check uapi enable not intel one during mst atomic check

Lyude Paul lyude at redhat.com
Fri Nov 15 21:13:09 UTC 2019


On Fri, 2019-11-15 at 23:11 +0200, Ville Syrjälä wrote:
> 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.

Ahhh, I see. Was just curious :), this hw/uapi split looks like it'll be
pretty useful for some stuff I'd like to do in the future
> 
> > > Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > 
> > > >  			return 0;
> > > >  	}
> > > >  
> > > > -- 
> > > > 2.24.0
> > -- 
> > Cheers,
> > 	Lyude Paul
-- 
Cheers,
	Lyude Paul



More information about the Intel-gfx mailing list