@@ -2479,20 +2479,25 @@ static void dm_gpureset_toggle_interrupts(struct amdgpu_device *adev,
24792479 if (acrtc && state -> stream_status [i ].plane_count != 0 ) {
24802480 irq_source = IRQ_TYPE_PFLIP + acrtc -> otg_inst ;
24812481 rc = dc_interrupt_set (adev -> dm .dc , irq_source , enable ) ? 0 : - EBUSY ;
2482- DRM_DEBUG_VBL ("crtc %d - vupdate irq %sabling: r=%d\n" ,
2483- acrtc -> crtc_id , enable ? "en" : "dis" , rc );
24842482 if (rc )
24852483 DRM_WARN ("Failed to %s pflip interrupts\n" ,
24862484 enable ? "enable" : "disable" );
24872485
24882486 if (enable ) {
2489- rc = amdgpu_dm_crtc_enable_vblank (& acrtc -> base );
2490- if (rc )
2491- DRM_WARN ("Failed to enable vblank interrupts\n" );
2492- } else {
2493- amdgpu_dm_crtc_disable_vblank (& acrtc -> base );
2494- }
2487+ if (amdgpu_dm_crtc_vrr_active (to_dm_crtc_state (acrtc -> base .state )))
2488+ rc = amdgpu_dm_crtc_set_vupdate_irq (& acrtc -> base , true);
2489+ } else
2490+ rc = amdgpu_dm_crtc_set_vupdate_irq (& acrtc -> base , false);
24952491
2492+ if (rc )
2493+ DRM_WARN ("Failed to %sable vupdate interrupt\n" , enable ? "en" : "dis" );
2494+
2495+ irq_source = IRQ_TYPE_VBLANK + acrtc -> otg_inst ;
2496+ /* During gpu-reset we disable and then enable vblank irq, so
2497+ * don't use amdgpu_irq_get/put() to avoid refcount change.
2498+ */
2499+ if (!dc_interrupt_set (adev -> dm .dc , irq_source , enable ))
2500+ DRM_WARN ("Failed to %sable vblank interrupt\n" , enable ? "en" : "dis" );
24962501 }
24972502 }
24982503
@@ -2852,7 +2857,7 @@ static int dm_resume(void *handle)
28522857 * this is the case when traversing through already created
28532858 * MST connectors, should be skipped
28542859 */
2855- if (aconnector -> dc_link -> type == dc_connection_mst_branch )
2860+ if (aconnector && aconnector -> mst_root )
28562861 continue ;
28572862
28582863 mutex_lock (& aconnector -> hpd_lock );
@@ -6737,7 +6742,7 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder,
67376742 int clock , bpp = 0 ;
67386743 bool is_y420 = false;
67396744
6740- if (!aconnector -> mst_output_port || ! aconnector -> dc_sink )
6745+ if (!aconnector -> mst_output_port )
67416746 return 0 ;
67426747
67436748 mst_port = aconnector -> mst_output_port ;
0 commit comments