From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenneth Graunke Subject: Re: [PATCH] drm/i915: paper over missed irq issues with force wake vodoo Date: Tue, 10 Jan 2012 21:41:53 -0800 Message-ID: <4F0D2121.6050302@whitecape.org> References: <1325702445-2231-1-git-send-email-daniel.vetter@ffwll.ch> <20120110122006.GD3979@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from homiemail-a5.g.dreamhost.com (caiajhbdcbhh.dreamhost.com [208.97.132.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BCB79E730 for ; Tue, 10 Jan 2012 21:41:56 -0800 (PST) In-Reply-To: <20120110122006.GD3979@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: Daniel Vetter , intel-gfx , Eugeni Dodonov , stable@kernel.org List-Id: intel-gfx@lists.freedesktop.org On 01/10/2012 04:20 AM, Daniel Vetter wrote: > On Wed, Jan 04, 2012 at 07:40:45PM +0100, Daniel Vetter wrote: >> Two things seem to do the trick on my ivb machine here: >> - prevent the gt from powering down while waiting for seqno >> notification interrupts by grabbing the force_wake in get_irq (and >> dropping it in put_irq again). >> - ordering writes from the ring's CS by reading a CS register, ACTHD >> seems to work. >> >> Only the blt&bsd ring on ivb seem to be massively affected by this, >> but for paranoia do this dance also on the render ring and on snb >> (i.e. all gpus with forcewake). >> >> Tested with Eric's glCopyPixels loop which without this patch scores a >> missed irq every few seconds. >> >> This patch needs my forcewake rework to use a spinlock instead of >> dev->struct_mutex. >> >> v2: Improve the comment per Eugeni Dodonov's suggestion. >> >> Cc: stable@kernel.org >> Cc: Eric Anholt >> Cc: Kenneth Graunke >> Cc: Eugeni Dodonov >> Tested-by: Eugeni Dodonov >> Reviewed-by: Eugeni Dodonov >> Signed-Off-by: Daniel Vetter > > From the internal doc "SNB GT PM Programming Guide", Section 4.3.1: > > "GT does not generate interrupts while in RC6 (by design)" > > It talks about the PM interrupt but I think this might also apply to > interrupts in general. So I think we should apply the voodoo patch also to > snb. > > My current working theory is hw engineers changed the way hwstam writes > are generated wrt to the read/write/irq pipeline on ivb and we've only > been lucky that it syncs out everything on snb before the gpu goes into > deep sleep states. > -Daniel Daniel, This is a good find! Your patch looked good to me in the first place, but with this extra bit of information, I believe it all the more. It's simple and it makes a lot of sense. FWIW, Reviewed-by: Kenneth Graunke I'm in favor of applying this for Gen7, and I'd be fine with applying it on Gen6 too. At the very least we should experiment with it on Gen6---as Keith said, it might help with some of the mysterious issues we've seen. Worth a try at least. Thanks for your great work here! --Kenneth