Bisecting led to commit 8d85d27 "drm/i915: Fix SNB GT_MODE register setup". Apparently the "disable all bits" part originally introduced in f8f2ac9 is still needed, at least in my particular case. Applying commit 8d85d27 but keeping the line I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); in intel_pm.c solves the problem for me, i.e. the GPU no longer hangs when first starting anything more demanding than an xterm, like firefox or glxgears.
Created attachment 100999 [details] [review] Clear all unwanted bits from GT_MODE This preserves our later tweaking for msaa and w/a and makes sure there is nothing else in there. If that still hangs, it would be useful to then disable the two GT_MODE writes and see which is the problem.
Hmm, your patch does not fix the problem; putting I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); behind if (IS_SNB_GT1(dev)) I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_ENABLE(GEN6_TD_FOUR_ROW_DISPATCH_DISABLE)); however does. So does removing both of the above. IS_SNB_GT1 is true for device id 0x010a. Isn't this wrong? Don't the Sandy Bridge Xeon E3 GPUs have 12 Execution Units and would therefore not be GT1? I'm confused.
Created attachment 101181 [details] GPU crash dump on 3.15 after starting glxgears
Daniel, you added commit 6547fbdbfff62c99e4f7b4f985ff8b3454f33b0f Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Fri Dec 14 23:38:29 2012 +0100 drm/i915: Implement WaSetupGtModeTdRowDispatch I'm not really sure, since the w/a entry is as thin on details as ever, and Bspec doesn't say anything about it. But I've figured only dispatching to rows 0&1 instead of all four should be the right thing for GT1. Maybe it is just bogus?
Hmm. We clear all the bits we should be setting for snb gt1. diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 76c5e4aa4dcf..03d90e4003ee 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -5188,7 +5188,7 @@ static void gen6_init_clock_gating(struct drm_device *dev) /* WaSetupGtModeTdRowDispatch:snb */ if (IS_SNB_GT1(dev)) I915_WRITE(GEN6_GT_MODE, - _MASKED_BIT_ENABLE(GEN6_TD_FOUR_ROW_DISPATCH_DISABLE)); + _MASKED_BIT_ENABLE(0x01ff)); ilk_init_lp_watermarks(dev);
Please try http://cgit.freedesktop.org/~ickle/linux-2.6/commit/?id=08311fc3b39d72bb80f9a8d06f0438db4f6f5d29
(In reply to comment #6) > Please try > http://cgit.freedesktop.org/~ickle/linux-2.6/commit/ > ?id=08311fc3b39d72bb80f9a8d06f0438db4f6f5d29 Still hangs.
Created attachment 106591 [details] GPU crash dump on 3.17 after starting firefox
Created attachment 108894 [details] [review] drm/i915: WaSetupGtModeTdRowDispatch:snb considered harmful
Ok, I've submitted the revert, Jani should pick it up for -fixes/stable backports soonish.
(In reply to Daniel Vetter from comment #10) > Ok, I've submitted the revert, Jani should pick it up for -fixes/stable > backports soonish. Fix pushed to drm-intel-fixes as commit 121a632e70ce83ff09210303d9cf674bbfa80a38 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Fri Nov 14 09:25:29 2014 +0100 drm/i915: drop WaSetupGtModeTdRowDispatch:snb cc: stable. Thanks for the report.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.