From: John Harrison <john.c.harrison@intel.com>
To: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>,
<intel-gfx@lists.freedesktop.org>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915/guc: Initialize GuC submission locks and queues early
Date: Fri, 18 Feb 2022 16:54:36 -0800 [thread overview]
Message-ID: <3ca41e61-1072-67ad-ed26-43964fb1920f@intel.com> (raw)
In-Reply-To: <20220215011123.734572-1-daniele.ceraolospurio@intel.com>
On 2/14/2022 17:11, Daniele Ceraolo Spurio wrote:
> Move initialization of submission-related spinlock, lists and workers to
> init_early. This fixes an issue where if the GuC init fails we might
> still try to get the lock in the context cleanup code. Note that it is
> safe to call the GuC context cleanup code even if the init failed
> because all contexts are initialized with an invalid GuC ID, which will
> cause the GuC side of the cleanup to be skipped, so it is easier to just
> make sure the variables are initialized than to special case the cleanup
> to handle the case when they're not.
>
> References: https://gitlab.freedesktop.org/drm/intel/-/issues/4932
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 27 ++++++++++---------
> 1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> index b3a429a92c0da..2160da2c83cbf 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> @@ -1818,24 +1818,11 @@ int intel_guc_submission_init(struct intel_guc *guc)
> */
> GEM_BUG_ON(!guc->lrc_desc_pool);
>
> - xa_init_flags(&guc->context_lookup, XA_FLAGS_LOCK_IRQ);
> -
> - spin_lock_init(&guc->submission_state.lock);
> - INIT_LIST_HEAD(&guc->submission_state.guc_id_list);
> - ida_init(&guc->submission_state.guc_ids);
> - INIT_LIST_HEAD(&guc->submission_state.destroyed_contexts);
> - INIT_WORK(&guc->submission_state.destroyed_worker,
> - destroyed_worker_func);
> - INIT_WORK(&guc->submission_state.reset_fail_worker,
> - reset_fail_worker_func);
> -
> guc->submission_state.guc_ids_bitmap =
> bitmap_zalloc(NUMBER_MULTI_LRC_GUC_ID(guc), GFP_KERNEL);
> if (!guc->submission_state.guc_ids_bitmap)
> return -ENOMEM;
>
> - spin_lock_init(&guc->timestamp.lock);
> - INIT_DELAYED_WORK(&guc->timestamp.work, guc_timestamp_ping);
> guc->timestamp.ping_delay = (POLL_TIME_CLKS / gt->clock_frequency + 1) * HZ;
> guc->timestamp.shift = gpm_timestamp_shift(gt);
>
> @@ -3831,6 +3818,20 @@ static bool __guc_submission_selected(struct intel_guc *guc)
>
> void intel_guc_submission_init_early(struct intel_guc *guc)
> {
> + xa_init_flags(&guc->context_lookup, XA_FLAGS_LOCK_IRQ);
> +
> + spin_lock_init(&guc->submission_state.lock);
> + INIT_LIST_HEAD(&guc->submission_state.guc_id_list);
> + ida_init(&guc->submission_state.guc_ids);
> + INIT_LIST_HEAD(&guc->submission_state.destroyed_contexts);
> + INIT_WORK(&guc->submission_state.destroyed_worker,
> + destroyed_worker_func);
> + INIT_WORK(&guc->submission_state.reset_fail_worker,
> + reset_fail_worker_func);
> +
> + spin_lock_init(&guc->timestamp.lock);
> + INIT_DELAYED_WORK(&guc->timestamp.work, guc_timestamp_ping);
> +
> guc->submission_state.num_guc_ids = GUC_MAX_LRC_DESCRIPTORS;
> guc->submission_supported = __guc_submission_supported(guc);
> guc->submission_selected = __guc_submission_selected(guc);
next prev parent reply other threads:[~2022-02-19 0:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-15 1:11 [Intel-gfx] [PATCH] drm/i915/guc: Initialize GuC submission locks and queues early Daniele Ceraolo Spurio
2022-02-15 9:09 ` Tvrtko Ursulin
2022-02-15 16:39 ` Ceraolo Spurio, Daniele
2022-02-16 11:54 ` Tvrtko Ursulin
2022-02-16 4:20 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2022-02-16 9:23 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-02-19 0:54 ` John Harrison [this message]
2022-02-25 23:18 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/guc: Initialize GuC submission locks and queues early (rev2) Patchwork
2022-02-26 22:31 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
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=3ca41e61-1072-67ad-ed26-43964fb1920f@intel.com \
--to=john.c.harrison@intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
/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