Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "K V P, Satyanarayana" <satyanarayana.k.v.p@intel.com>
To: Michal Wajdeczko <michal.wajdeczko@intel.com>,
	<intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH v2 3/3] drm/xe/pf: Add _locked variant of the doorbells bulk config function
Date: Mon, 10 Aug 2026 08:51:23 +0530	[thread overview]
Message-ID: <6c3e540d-c044-4e58-a3e0-1d79036af582@intel.com> (raw)
In-Reply-To: <20260807164826.5650-1-michal.wajdeczko@intel.com>

[-- Attachment #1: Type: text/plain, Size: 4966 bytes --]

> We will soon want to provision all VFs, including their GuC doorbell
> IDs config, in one step. Split existing doorbells bulk configuration
> function into two functions, one of which will expect the master lock
> to be already taken. Use this new function in the fair GuC doorbells
> provisioning.
>
> Signed-off-by: Michal Wajdeczko<michal.wajdeczko@intel.com>
> Cc: Satyanarayana K V P<satyanarayana.k.v.p@intel.com>
> ---
> v2: fix kernel-doc (Satya)
> ---
>   drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 37 ++++++++++++++++------
>   drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h |  2 ++
>   2 files changed, 29 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> index 4976d8c018ce..be0a413ee17c 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> @@ -1397,7 +1397,7 @@ int xe_gt_sriov_pf_config_set_dbs(struct xe_gt *gt, unsigned int vfid, u32 num_d
>   }
>   
>   /**
> - * xe_gt_sriov_pf_config_bulk_set_dbs - Provision many VFs with GuC context IDs.
> + * xe_gt_sriov_pf_config_bulk_set_dbs_locked() - Provision many VFs with GuC doorbells.
>    * @gt: the &xe_gt
>    * @vfid: starting VF identifier (can't be 0)
>    * @num_vfs: number of VFs to provision
> @@ -1407,30 +1407,48 @@ int xe_gt_sriov_pf_config_set_dbs(struct xe_gt *gt, unsigned int vfid, u32 num_d
>    *
>    * Return: 0 on success or a negative error code on failure.
>    */
> -int xe_gt_sriov_pf_config_bulk_set_dbs(struct xe_gt *gt, unsigned int vfid,
> -				       unsigned int num_vfs, u32 num_dbs)
> +int xe_gt_sriov_pf_config_bulk_set_dbs_locked(struct xe_gt *gt, unsigned int vfid,
> +					      unsigned int num_vfs, u32 num_dbs)
>   {
>   	unsigned int n;
>   	int err = 0;
>   
>   	xe_gt_assert(gt, vfid);
> +	lockdep_assert_held(xe_gt_sriov_pf_master_mutex(gt));
>   
>   	if (!num_vfs)
>   		return 0;
>   
> -	mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
>   	for (n = vfid; n < vfid + num_vfs; n++) {
>   		err = pf_provision_vf_dbs(gt, n, num_dbs);
>   		if (err)
>   			break;
>   	}
> -	mutex_unlock(xe_gt_sriov_pf_master_mutex(gt));
>   
>   	return pf_config_bulk_set_u32_done(gt, vfid, num_vfs, num_dbs,
> -					   xe_gt_sriov_pf_config_get_dbs,
> +					   pf_get_vf_config_dbs,
>   					   "GuC doorbell IDs", no_unit, n, err); } +/** + * xe_gt_sriov_pf_config_bulk_set_dbs() - 
> Provision many VFs with GuC doorbells. + * @gt: the &xe_gt + * @vfid: 
> starting VF identifier (can't be 0) + * @num_vfs: number of VFs to 
> provision + * @num_dbs: requested number of GuC doorbell IDs (0 to 
> release) + * + * This function can only be called on PF. + * + * 
> Return: 0 on success or a negative error code on failure. + */ +int 
> xe_gt_sriov_pf_config_bulk_set_dbs(struct xe_gt *gt, unsigned int 
> vfid, + unsigned int num_vfs, u32 num_dbs) +{ + 
> guard(mutex)(xe_gt_sriov_pf_master_mutex(gt)); + + return 
> xe_gt_sriov_pf_config_bulk_set_dbs_locked(gt, vfid, num_vfs, num_dbs); 
> +} + static u32 pf_profile_fair_dbs(struct xe_gt *gt, unsigned int 
> num_vfs) { bool admin_only_pf = xe_sriov_pf_admin_only(gt_to_xe(gt)); 
> @@ -1480,10 +1498,9 @@ int xe_gt_sriov_pf_config_set_fair_dbs(struct 
> xe_gt *gt, unsigned int vfid, xe_gt_assert(gt, vfid); xe_gt_assert(gt, 
> num_vfs); - mutex_lock(xe_gt_sriov_pf_master_mutex(gt)); + 
> guard(mutex)(xe_gt_sriov_pf_master_mutex(gt)); + fair = 
> pf_estimate_fair_dbs(gt, num_vfs); - 
> mutex_unlock(xe_gt_sriov_pf_master_mutex(gt)); - if (!fair) return 
> -ENOSPC; @@ -1492,7 +1509,7 @@ int 
> xe_gt_sriov_pf_config_set_fair_dbs(struct xe_gt *gt, unsigned int 
> vfid, xe_gt_sriov_info(gt, "Using non-profile provisioning (%s %u vs %u)\n",
>   				 "GuC doorbell IDs", fair, profile);
>   
> -	return xe_gt_sriov_pf_config_bulk_set_dbs(gt, vfid, num_vfs, fair);
> +	return xe_gt_sriov_pf_config_bulk_set_dbs_locked(gt, vfid, num_vfs, fair);
>   }
>   
>   static u64 pf_get_lmem_alignment(struct xe_gt *gt)
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
> index a14ca7bf7e4d..a56e63f3660a 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
> @@ -34,6 +34,8 @@ int xe_gt_sriov_pf_config_set_dbs(struct xe_gt *gt, unsigned int vfid, u32 num_d
>   int xe_gt_sriov_pf_config_set_fair_dbs(struct xe_gt *gt, unsigned int vfid, unsigned int num_vfs);
>   int xe_gt_sriov_pf_config_bulk_set_dbs(struct xe_gt *gt, unsigned int vfid, unsigned int num_vfs,
>   				       u32 num_dbs);
> +int xe_gt_sriov_pf_config_bulk_set_dbs_locked(struct xe_gt *gt, unsigned int vfid,
> +					      unsigned int num_vfs, u32 num_dbs);
>   
>   u64 xe_gt_sriov_pf_config_get_lmem(struct xe_gt *gt, unsigned int vfid);
>   int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsigned int vfid, u64 size);

LGTM.

Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>

[-- Attachment #2: Type: text/html, Size: 6899 bytes --]

  reply	other threads:[~2026-08-10  3:21 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-05 15:47 [PATCH 0/3] drm/xe/pf: Add _locked variants of some config functions Michal Wajdeczko
2026-08-05 15:47 ` [PATCH 1/3] drm/xe/pf: Add _locked variant of the GGTT bulk config function Michal Wajdeczko
2026-08-07  7:40   ` Piotr Piórkowski
2026-08-05 15:47 ` [PATCH 2/3] drm/xe/pf: Add _locked variant of the contexts " Michal Wajdeczko
2026-08-07  7:52   ` Piotr Piórkowski
2026-08-05 15:47 ` [PATCH 3/3] drm/xe/pf: Add _locked variant of the doorbells " Michal Wajdeczko
2026-08-07  7:32   ` K V P, Satyanarayana
2026-08-07 16:48   ` [PATCH v2 " Michal Wajdeczko
2026-08-10  3:21     ` K V P, Satyanarayana [this message]
2026-08-05 16:00 ` ✓ CI.KUnit: success for drm/xe/pf: Add _locked variants of some config functions Patchwork
2026-08-05 16:52 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-06  4:37 ` ✓ Xe.CI.FULL: " Patchwork
2026-08-07 16:55 ` ✓ CI.KUnit: success for drm/xe/pf: Add _locked variants of some config functions (rev2) Patchwork
2026-08-07 17:36 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-08  2:06 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-08-10  8:44   ` Michal Wajdeczko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6c3e540d-c044-4e58-a3e0-1d79036af582@intel.com \
    --to=satyanarayana.k.v.p@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=michal.wajdeczko@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox