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 --]
next prev parent 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