From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de ([195.135.220.15]:53937 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752630AbcBKNDm (ORCPT ); Thu, 11 Feb 2016 08:03:42 -0500 Subject: Re: [PATCH 3/6] drm: Fix drm_vblank_pre/post_modeset regression from Linux 4.4 To: Mario Kleiner , dri-devel@lists.freedesktop.org References: <1454894009-15466-1-git-send-email-mario.kleiner.de@gmail.com> <1454894009-15466-4-git-send-email-mario.kleiner.de@gmail.com> Cc: linux@bernd-steinhauser.de, stable@vger.kernel.org, michel@daenzer.net, ville.syrjala@linux.intel.com, daniel.vetter@ffwll.ch, alexander.deucher@amd.com, christian.koenig@amd.com From: Vlastimil Babka Message-ID: <56BC86AB.4070004@suse.cz> Date: Thu, 11 Feb 2016 14:03:39 +0100 MIME-Version: 1.0 In-Reply-To: <1454894009-15466-4-git-send-email-mario.kleiner.de@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: On 02/08/2016 02:13 AM, Mario Kleiner wrote: > Changes to drm_update_vblank_count() in Linux 4.4 broke the > behaviour of the pre/post modeset functions as the new update > code doesn't deal with hw vblank counter resets inbetween calls > to drm_vblank_pre_modeset an drm_vblank_post_modeset, as it > should. > > This causes mistreatment of such hw counter resets as counter > wraparound, and thereby large forward jumps of the software > vblank counter which in turn cause vblank event dispatching > and vblank waits to fail/hang --> userspace clients hang. > > This symptom was reported on radeon-kms to cause a infinite > hang of KDE Plasma 5 shell's login procedure, preventing users > from logging in. > > Fix this by detecting when drm_update_vblank_count() is called > inside a pre->post modeset interval. If so, clamp valid vblank > increments to the safe values 0 and 1, pretty much restoring > the update behavior of the old update code of Linux 4.3 and > earlier. Also reset the last recorded hw vblank count at call > to drm_vblank_post_modeset() to be safe against hw that after > modesetting, dpms on etc. only fires its first vblank irq after > drm_vblank_post_modeset() was already called. > > Reported-by: Vlastimil Babka FWIW, I've applied the whole patchset to 4.4 and the kde5 login problem didn't occur. I can test the next version too. Thanks, Vlastimil