drm/i915: Fix context runtime accounting
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Mon, 20 Mar 2023 15:14:23 +0000 (15:14 +0000)
committerJani Nikula <jani.nikula@intel.com>
Mon, 3 Apr 2023 08:37:00 +0000 (11:37 +0300)
commitdc3421560a67361442f33ec962fc6dd48895a0df
tree14bdefd1e1ad8b9506cbb51365ae69bbc6de87e1
parentdc30c011469165d57af9adac5baff7d767d20e5c
drm/i915: Fix context runtime accounting

When considering whether to mark one context as stopped and another as
started we need to look at whether the previous and new _contexts_ are
different and not just requests. Otherwise the software tracked context
start time was incorrectly updated to the most recent lite-restore time-
stamp, which was in some cases resulting in active time going backward,
until the context switch (typically the heartbeat pulse) would synchronise
with the hardware tracked context runtime. Easiest use case to observe
this behaviour was with a full screen clients with close to 100% engine
load.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Fixes: bb6287cb1886 ("drm/i915: Track context current active time")
Cc: <stable@vger.kernel.org> # v5.19+
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230320151423.1708436-1-tvrtko.ursulin@linux.intel.com
[tursulin: Fix spelling in commit msg.]
(cherry picked from commit b3e70051879c665acdd3a1ab50d0ed58d6a8001f)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gt/intel_execlists_submission.c