[PATCH v14 6/7] drm/xe/pmu: Get/put runtime pm on event init

Rodrigo Vivi rodrigo.vivi at intel.com
Wed Jan 22 10:26:41 UTC 2025


On Tue, Jan 21, 2025 at 10:23:40PM -0800, Lucas De Marchi wrote:
> When the event is created, make sure runtime pm is taken and later put:
> in order to read an event counter the GPU needs to remain accessible and
> doing a get/put during perf's read is not possible it's holding a
> raw_spinlock.
> 
> Suggested-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

> ---
>  drivers/gpu/drm/xe/xe_pmu.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> index 68ebec1746a53..8d938d67c1f2c 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.c
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -79,6 +79,7 @@ static void xe_pmu_event_destroy(struct perf_event *event)
>  	struct xe_device *xe = container_of(event->pmu, typeof(*xe), pmu.base);
>  
>  	drm_WARN_ON(&xe->drm, event->parent);
> +	xe_pm_runtime_put(xe);
>  	drm_dev_put(&xe->drm);
>  }
>  
> @@ -111,6 +112,7 @@ static int xe_pmu_event_init(struct perf_event *event)
>  
>  	if (!event->parent) {
>  		drm_dev_get(&xe->drm);
> +		xe_pm_runtime_get(xe);
>  		event->destroy = xe_pmu_event_destroy;
>  	}
>  
> -- 
> 2.48.0
> 


More information about the Intel-xe mailing list