From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
To: Sagar Arun Kamble <sagar.a.kamble@intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v12 06/11] drm/i915/guc: Make GuC related disable/destroy functions not depend on i915.enable_guc_submission
Date: Fri, 29 Sep 2017 15:27:54 +0300 [thread overview]
Message-ID: <1506688074.4729.85.camel@linux.intel.com> (raw)
In-Reply-To: <1506581329-29720-7-git-send-email-sagar.a.kamble@intel.com>
On Thu, 2017-09-28 at 12:18 +0530, Sagar Arun Kamble wrote:
> During GuC load/enable, state is setup by driver that can be looked at
> while disabling. So remove the check for i915.enable_guc_submission
> parameter in those functions.
>
> Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Michał Winiarski <michal.winiarski@intel.com>
<SNIP>
> @@ -1002,7 +1002,8 @@ static int guc_ads_create(struct intel_guc *guc)
>
> static void guc_ads_destroy(struct intel_guc *guc)
> {
> - i915_vma_unpin_and_release(&guc->ads_vma);
> + if (guc->ads_vma)
GEM_BUG_ON(!guc->ads_vma);
> + i915_vma_unpin_and_release(&guc->ads_vma);
> }
>
> /*
> @@ -1060,11 +1061,14 @@ void i915_guc_submission_fini(struct drm_i915_private *dev_priv)
> {
> struct intel_guc *guc = &dev_priv->guc;
>
> + WARN_ON_ONCE(!ida_is_empty(&guc->stage_ids));
> ida_destroy(&guc->stage_ids);
> guc_ads_destroy(guc);
> intel_guc_log_destroy(guc);
> - i915_gem_object_unpin_map(guc->stage_desc_pool->obj);
> - i915_vma_unpin_and_release(&guc->stage_desc_pool);
> + if (guc->stage_desc_pool) {
GEM_BUG_ON(!guc->stage_desc_pol) is the right thing.
> + i915_gem_object_unpin_map(guc->stage_desc_pool->obj);
> + i915_vma_unpin_and_release(&guc->stage_desc_pool);
> + }
I'm generally against conditional teardown. If the _init did not fully
succeed, the _fini is never supposed to be called.
> static void guc_interrupts_capture(struct drm_i915_private *dev_priv)
> @@ -1204,6 +1208,9 @@ void i915_guc_submission_disable(struct drm_i915_private *dev_priv)
> {
> struct intel_guc *guc = &dev_priv->guc;
>
We may want document pre-requirements assert_lockdep_held() in
enable/disable submission funcs, for a good measure. Then it'll be
easier to convert away from struct_mutex when the time comes.
> diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
> index 6571d96..73333b6 100644
> --- a/drivers/gpu/drm/i915/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/intel_guc_log.c
> @@ -584,7 +584,8 @@ int intel_guc_log_create(struct intel_guc *guc)
> void intel_guc_log_destroy(struct intel_guc *guc)
> {
> guc_log_runtime_destroy(guc);
> - i915_vma_unpin_and_release(&guc->log.vma);
> + if (guc->log.vma)
> + i915_vma_unpin_and_release(&guc->log.vma);
Again, GEM_BUG_ON(!guc->log.vma);
> +++ b/drivers/gpu/drm/i915/intel_uc.c
> @@ -445,8 +445,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
> err_log_capture:
> guc_capture_load_err_log(guc);
> err_submission:
> - if (i915_modparams.enable_guc_submission)
> - i915_guc_submission_fini(dev_priv);
> + i915_guc_submission_fini(dev_priv);
No, no unconditional calling of _fini if the _init is not uncoditional
too. You can drop both checks down to the submission_init/_fini funcs
if you want to. For me it's more clear if they're here.
Inside the funcs or right before calling them, when called just from
one place (like I'd prefer here), but most importantly it has to be
symmetric.
Regards, Joonas
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-09-29 12:27 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-28 6:48 [PATCH v12 00/11] GEM/GuC Suspend/Resume/Reset fixes and restructuring Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 01/11] drm/i915: Create GEM runtime resume helper and handle GEM suspend/resume errors Sagar Arun Kamble
2017-09-29 11:43 ` Joonas Lahtinen
2017-09-29 11:49 ` Chris Wilson
2017-09-29 13:16 ` Joonas Lahtinen
2017-09-29 13:51 ` Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 02/11] drm/i915: Update GEM suspend/resume flows with GuC suspend/resume functions Sagar Arun Kamble
2017-09-29 11:45 ` Joonas Lahtinen
2017-09-29 13:52 ` Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 03/11] drm/i915: Move i915_gem_restore_fences to i915_gem_resume Sagar Arun Kamble
2017-09-29 11:48 ` Joonas Lahtinen
2017-09-29 13:59 ` Sagar Arun Kamble
2017-09-29 14:01 ` Sagar Arun Kamble
2017-10-02 8:33 ` Joonas Lahtinen
2017-09-28 6:48 ` [PATCH v12 04/11] drm/i915: Create uC runtime and system suspend/resume helpers Sagar Arun Kamble
2017-09-29 12:12 ` Joonas Lahtinen
2017-09-29 14:13 ` Sagar Arun Kamble
2017-09-29 14:39 ` Michal Wajdeczko
2017-09-28 6:48 ` [PATCH v12 05/11] drm/i915/guc: Introduce intel_uc_sanitize Sagar Arun Kamble
2017-09-29 12:00 ` Joonas Lahtinen
2017-09-29 14:22 ` Sagar Arun Kamble
2017-10-02 8:37 ` Joonas Lahtinen
2017-09-28 6:48 ` [PATCH v12 06/11] drm/i915/guc: Make GuC related disable/destroy functions not depend on i915.enable_guc_submission Sagar Arun Kamble
2017-09-29 12:27 ` Joonas Lahtinen [this message]
2017-09-30 8:22 ` Sagar Arun Kamble
2017-10-02 8:51 ` Joonas Lahtinen
2017-09-28 6:48 ` [PATCH v12 07/11] drm/i915/guc: Update i915.enable_guc_loading check in intel_uc_fini_hw Sagar Arun Kamble
2017-09-29 12:29 ` Joonas Lahtinen
2017-09-28 6:48 ` [PATCH v12 08/11] drm/i915/guc: Update GuC ggtt.invalidate/interrupts/communication across RPM suspend/resume Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 09/11] drm/i915/guc: Update GuC functionality in intel_uc_suspend/intel_uc_resume Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 10/11] drm/i915/guc: Disable GuC submission and suspend it prior to i915 reset Sagar Arun Kamble
2017-09-28 6:48 ` [PATCH v12 11/11] drm/i915/guc: Fix GuC cleanup in unload path Sagar Arun Kamble
2017-09-28 7:11 ` ✗ Fi.CI.BAT: warning for GEM/GuC Suspend/Resume/Reset fixes and restructuring (rev5) Patchwork
2017-09-28 7:38 ` Sagar Arun Kamble
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=1506688074.4729.85.camel@linux.intel.com \
--to=joonas.lahtinen@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=sagar.a.kamble@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