[PATCH v2 3/3] drm/xe: Fix xe_force_wake_assert_held for enum XE_FORCEWAKE_ALL

Nilawar, Badal badal.nilawar at intel.com
Mon Jun 3 14:36:15 UTC 2024



On 03-06-2024 14:31, Himal Prasad Ghimiray wrote:
> xe_force_wake_assert_held is designed to trigger an assertion if the
> provided domain is not awake, which works correctly for individual
> domains. However, the assertion condition becomes incorrect for
> XE_FORCEWAKE_ALL.
> 
> For instance, if we assume all domains are in sleep mode, invoking
> xe_force_wake_get(fw, XE_FORCEWAKE_GT) will only awaken the "gt" domain.
> Subsequently, another function needs that all domains are awake and
> utilizes xe_force_wake_assert_held(fw, XE_FORCEWAKE_ALL).
> In this scenario, the condition will inaccurately return success because
> fw->awake_domains (0x1) & XE_FORCEWAKE_ALL (0xFF) will still be 0x1 and
> Ideally it should have asserted.
> 
> Make sure that the assertion condition covers the wakefulness of all
> initialized domains for XE_FORCEWAKE_ALL.
> 
> v2:
> - %s/supported/initialized/
> - update commit message (Rodrigo)
> 
> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Cc: Badal Nilawar <badal.nilawar at intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_force_wake.h | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
> index 83cb157da7cc..a9b01d7ede44 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
> @@ -32,7 +32,12 @@ static inline void
>   xe_force_wake_assert_held(struct xe_force_wake *fw,
>   			  enum xe_force_wake_domains domain)
>   {
> -	xe_gt_assert(fw->gt, fw->awake_domains & domain);
> +	enum xe_force_wake_domains is_awake;
> +
> +	is_awake = (domain == XE_FORCEWAKE_ALL) ?
> +		    fw->initialized_domains : domain;
> +
> +	xe_gt_assert(fw->gt, (fw->awake_domains & is_awake) == is_awake);
Reviewed-by: Badal Nilawar <badal.nilawar at intel.com>

Regards,
Badal
>   }
>   
>   #endif


More information about the Intel-xe mailing list