From: Chris Wilson Date: Tue, 14 Jan 2020 10:56:48 +0000 (+0000) Subject: drm/i915/gt: Clear rc6 residency trackers across suspend X-Git-Tag: v5.7-rc1~136^2~18^2~416 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e88e9f8ea4e95df6e76ce6721e93524d3d116705;p=thirdparty%2Fkernel%2Flinux.git drm/i915/gt: Clear rc6 residency trackers across suspend On suspend, the rc6 residency counters (stored in HW registers) will be lost and cleared. However, we keep track of the rc6 residency to provide a continuous 64b sampling, and if we see the HW value go backwards, we assume it overflowed and add on 32b/40b -- an interesting artifact when sampling across suspend. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Reviewed-by: Tvrtko Ursulin Link: https://patchwork.freedesktop.org/patch/msgid/20200114105648.2172026-2-chris@chris-wilson.co.uk --- diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c index 9e303c29d6e35..04eeb7740e53a 100644 --- a/drivers/gpu/drm/i915/gt/intel_rc6.c +++ b/drivers/gpu/drm/i915/gt/intel_rc6.c @@ -542,6 +542,8 @@ void intel_rc6_init(struct intel_rc6 *rc6) void intel_rc6_sanitize(struct intel_rc6 *rc6) { + memset(rc6->prev_hw_residency, 0, sizeof(rc6->prev_hw_residency)); + if (rc6->enabled) { /* unbalanced suspend/resume */ rpm_get(rc6); rc6->enabled = false;