[PATCH 2/3] drm/xe/pf: Add reclaim annotation to the PF master mutex

Cavitt, Jonathan jonathan.cavitt at intel.com
Wed Jan 22 22:30:55 UTC 2025


-----Original Message-----
From: Intel-xe <intel-xe-bounces at lists.freedesktop.org> On Behalf Of Michal Wajdeczko
Sent: Wednesday, January 22, 2025 1:50 PM
To: intel-xe at lists.freedesktop.org
Cc: Wajdeczko, Michal <Michal.Wajdeczko at intel.com>; Thomas Hellström <thomas.hellstrom at linux.intel.com>
Subject: [PATCH 2/3] drm/xe/pf: Add reclaim annotation to the PF master mutex
> 
> We need to avoid making allocations with PF master mutex held
> as we are doing VFs reprovisioning during reset/resume steps.
> Add annotation around PF master mutex to catch undesired uses.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>

LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
-Jonathan Cavitt

> ---
>  drivers/gpu/drm/xe/xe_sriov_pf.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_sriov_pf.c b/drivers/gpu/drm/xe/xe_sriov_pf.c
> index 0f721ae17b26..2286a08657b0 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_pf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_pf.c
> @@ -10,6 +10,7 @@
>  #include "xe_module.h"
>  #include "xe_sriov.h"
>  #include "xe_sriov_pf.h"
> +#include "xe_sriov_pf_helpers.h"
>  #include "xe_sriov_printk.h"
>  
>  static unsigned int wanted_max_vfs(struct xe_device *xe)
> @@ -37,6 +38,13 @@ static bool pf_continue_as_native(struct xe_device *xe, const char *why)
>  	return false;
>  }
>  
> +static void pf_primelockdep(struct xe_device *xe)
> +{
> +	fs_reclaim_acquire(GFP_KERNEL);
> +	might_lock(xe_sriov_pf_master_mutex(xe));
> +	fs_reclaim_release(GFP_KERNEL);
> +}
> +
>  /**
>   * xe_sriov_pf_readiness - Check if PF functionality can be enabled.
>   * @xe: the &xe_device to check
> @@ -80,9 +88,18 @@ bool xe_sriov_pf_readiness(struct xe_device *xe)
>   */
>  int xe_sriov_pf_init_early(struct xe_device *xe)
>  {
> +	int err;
> +
>  	xe_assert(xe, IS_SRIOV_PF(xe));
>  
> -	return drmm_mutex_init(&xe->drm, &xe->sriov.pf.master_lock);
> +	err = drmm_mutex_init(&xe->drm, &xe->sriov.pf.master_lock);
> +	if (err)
> +		return err;
> +
> +	if (IS_ENABLED(CONFIG_LOCKDEP))
> +		pf_primelockdep(xe);
> +
> +	return 0;
>  }
>  
>  /**
> -- 
> 2.47.1
> 
> 


More information about the Intel-xe mailing list