[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