[PATCH xf86-video-amdgpu] Fix hang when entering into dpms-off mode

Michel Dänzer michel at daenzer.net
Thu Feb 28 16:35:36 UTC 2019


On 2019-02-28 1:05 p.m., Michel Dänzer wrote:
> On 2019-02-28 3:52 a.m., Aaron Liu wrote:
>>
>> @@ -900,7 +900,12 @@ CARD32 amdgpu_dri2_deferred_event(OsTimerPtr timer, CARD32 now, pointer data)
>>  	delta_seq = delta_t * drmmode_crtc->dpms_last_fps;
>>  	delta_seq /= 1000000;
>>  	frame = (CARD64) drmmode_crtc->dpms_last_seq + delta_seq;
>> -	if (event_info->drm_queue_seq)
>> +	/*
>> +	 * If CRTC is in DPMS off state, it can't use vblank_handler.
>> +	 * Because drmmode_wait_vblank is not excuted in such as
>> +	 * amdgpu_dri2_schedule_swap/amdgpu_dri2_schedule_wait_msc.
>> +	 */
>> +	if (event_info->drm_queue_seq && amdgpu_crtc_is_enabled(crtc))
>>  		drmmode_crtc->drmmode->event_context.
>>  			vblank_handler(pAMDGPUEnt->fd, frame, drm_now / 1000000,
>>  				       drm_now % 1000000,
>>
> 
> This isn't a good solution I'm afraid, as it'll leave the struct
> amdgpu_drm_queue_entry memory associated with event_info->drm_queue_seq
> linked into the amdgpu_drm_queue list, which would gradually slow down
> processing of that list.
> 
> 
> I think I know what the issue is, I'll work on a fix in the afternoon.

Please test
https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/merge_requests/29
.


-- 
Earthling Michel Dänzer               |              https://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the amd-gfx mailing list