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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.