From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: "Ceraolo Spurio, Daniele" <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: Wed, 16 Feb 2022 11:54:35 +0000 [thread overview]
Message-ID: <10cd355a-cc30-ac88-bed1-adcf91b033db@linux.intel.com> (raw)
In-Reply-To: <02e89fe1-a97d-1587-ea78-1e3a4518c649@intel.com>
On 15/02/2022 16:39, Ceraolo Spurio, Daniele wrote:
> On 2/15/2022 1:09 AM, Tvrtko Ursulin wrote:
>>
>> On 15/02/2022 01: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
>>
>> What's the worst case impact on non-debug builds aka is Fixes: required?
>
> There is no lock contention in this scenario and nothing is done within
> the locked section (because submission is not initialized and all
> contexts are marked as invalid), so no problems from the fact that the
> lock doesn't work. Is that enough to avoid a fixes tag?
If the "lock doesn't work" is benign due no chance of touching
uninitialised memory and then deadlocking then it's good. I just
couldn't read that part from the commit message and did not have time to
go dig into the code.
Regards,
Tvrtko
> Daniele
>
>>
>> Regards,
>>
>> Tvrtko
>>
>>> 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>
>>> ---
>>> .../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-16 11:54 UTC|newest]
Thread overview: 11+ 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 1:11 ` Daniele Ceraolo Spurio
2022-02-15 9:09 ` [Intel-gfx] " Tvrtko Ursulin
2022-02-15 16:39 ` Ceraolo Spurio, Daniele
2022-02-16 11:54 ` Tvrtko Ursulin [this message]
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 ` [Intel-gfx] [PATCH] " John Harrison
2022-02-19 0:54 ` John Harrison
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=10cd355a-cc30-ac88-bed1-adcf91b033db@linux.intel.com \
--to=tvrtko.ursulin@linux.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 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.