• Umesh Nerlige Ramappa's avatar
    i915/guc: Get runtime pm in busyness worker only if already active · e2f99b79
    Umesh Nerlige Ramappa authored
    Ideally the busyness worker should take a gt pm wakeref because the
    worker only needs to be active while gt is awake. However, the gt_park
    path cancels the worker synchronously and this complicates the flow if
    the worker is also running at the same time. The cancel waits for the
    worker and when the worker releases the wakeref, that would call gt_park
    and would lead to a deadlock.
    
    The resolution is to take the global pm wakeref if runtime pm is already
    active. If not, we don't need to update the busyness stats as the stats
    would already be updated when the gt was parked.
    
    Note:
    - We do not requeue the worker if we cannot take a reference to runtime
      pm since intel_guc_busyness_unpark would requeue the worker in the
      resume path.
    
    - If the gt was parked longer than time taken for GT timestamp to roll
      over, we ignore those rollovers since we don't care about tracking the
      exact GT time. We only care about roll overs when the gt is active and
      running workloads.
    
    - There is a window of time between gt_park and runtime suspend, where
      the worker may run. This is acceptable since the worker will not find
      any new data to update busyness.
    
    v2: (Daniele)
    - Edit commit message and code comment
    - Use runtime pm in the worker
    - Put runtime pm after enabling the worker
    - Use Link tag and add Fixes tag
    
    v3: (Daniele)
    - Reword commit and comments and add details
    
    Link: https://gitlab.freedesktop.org/drm/intel/-/issues/7077
    Fixes: 77cdd054 ("drm/i915/pmu: Connect engine busyness stats from GuC to pmu")
    Signed-off-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230925192117.2497058-1-umesh.nerlige.ramappa@intel.com
    e2f99b79
intel_guc_submission.c 153 KB