[PATCH] drm/i915: Generate event on throttle request

Chris Wilson chris at chris-wilson.co.uk
Tue May 19 14:55:00 UTC 2020


Quoting don.hiatt at intel.com (2020-05-19 16:05:12)
> From: Don Hiatt <don.hiatt at intel.com>
> 
> Like the I915_RESET_UEVENT which generates an event prior to
> resetting the GPU, we would like an I915_THROTTLE_UEVENT to
> to generate an event on successfull GPU frequency throttling.
> 
> Signed-off-by: Don Hiatt <don.hiatt at intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_rps.c | 9 +++++++++
>  include/uapi/drm/i915_drm.h         | 3 +++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 2f59fc6df3c2..6f451a69c4a7 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -1616,6 +1616,8 @@ static void rps_work(struct work_struct *work)
>         struct intel_rps *rps = container_of(work, typeof(*rps), work);
>         struct intel_gt *gt = rps_to_gt(rps);
>         struct drm_i915_private *i915 = rps_to_i915(rps);
> +       struct kobject *kobj = &i915->drm.primary->kdev->kobj;
> +       char *throttle_event[4];
>         bool client_boost = false;
>         int new_freq, adj, min, max;
>         u32 pm_iir = 0;
> @@ -1693,6 +1695,13 @@ static void rps_work(struct work_struct *work)
>         }
>         rps->last_adj = adj;
>  
> +       throttle_event[0] = I915_THROTTLE_UEVENT "=1";
> +       throttle_event[1] = "COMPONENT=GT";
> +       throttle_event[2] = kasprintf(GFP_KERNEL, "NEW_FREQ=%d", new_freq);
> +       throttle_event[3] = NULL;
> +       kobject_uevent_env(kobj, KOBJ_CHANGE, throttle_event);
> +       kfree(throttle_event[2]);

This is nothing to do with throttling. And may be sent every jiffy.
More if other event sources are active.
-Chris


More information about the Intel-gfx-trybot mailing list