[Intel-gfx] [PATCH] drm/i915: Make RPS EI/thresholds multiple of 25 on SNB
Chris Wilson
chris at chris-wilson.co.uk
Wed Apr 20 13:57:42 UTC 2016
On Wed, Apr 20, 2016 at 04:43:56PM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Somehow my SNB GT1 (Dell XPS 8300) gets very unhappy around
> GPU hangs if the RPS EI/thresholds aren't suitably aligned.
> It seems like scheduling/timer interupts stop working somehow
> and things get stuck eg. in usleep_range().
>
> I bisected the problem down to
> commit 8a5864377b12 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
> I observed that before all the values were at least multiples of 25,
> but afterwards they are not. And rounding things up to the next multiple
> of 25 does seem to help, so lets' do that. I also tried roundup(..., 5)
> but that wasn't sufficient. Also I have no idea if we might need this sort of
> thing on gen9+ as well.
>
> These are the original EI/thresholds:
> LOW_POWER
> GEN6_RP_UP_EI 12500
> GEN6_RP_UP_THRESHOLD 11800
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 21250
> BETWEEN
> GEN6_RP_UP_EI 10250
> GEN6_RP_UP_THRESHOLD 9225
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 18750
> HIGH_POWER
> GEN6_RP_UP_EI 8000
> GEN6_RP_UP_THRESHOLD 6800
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 15000
>
> These are after 8a5864377b12:
> LOW_POWER
> GEN6_RP_UP_EI 12500
> GEN6_RP_UP_THRESHOLD 11875
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 21250
> BETWEEN
> GEN6_RP_UP_EI 10156
> GEN6_RP_UP_THRESHOLD 9140
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 18750
> HIGH_POWER
> GEN6_RP_UP_EI 7812
> GEN6_RP_UP_THRESHOLD 6640
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 15000
>
> And these are what we have after this patch:
> LOW_POWER
> GEN6_RP_UP_EI 12500
> GEN6_RP_UP_THRESHOLD 11875
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 21250
> BETWEEN
> GEN6_RP_UP_EI 10175
> GEN6_RP_UP_THRESHOLD 9150
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 18750
> HIGH_POWER
> GEN6_RP_UP_EI 7825
> GEN6_RP_UP_THRESHOLD 6650
> GEN6_RP_DOWN_EI 25000
> GEN6_RP_DOWN_THRESHOLD 15000
>
> Cc: stable at vger.kernel.org
> Cc: Akash Goel <akash.goel at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Testcase: igt/kms_pipe_crc_basic/hang-read-crc-pipe-B
> Fixes: 8a5864377b12 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Wow. The change is semantically sound, so
Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list