On Tue, 04 Feb 2020 00:28:35 +0100, Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com> wrote:

To be able to differentiate the before and after of our commitment to
GuC submission, which will be used in follow-up patches to early set-up
the submission structures.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com>
Cc: Michal Wajdeczko <michal.wajdec...@intel.com>
---
 drivers/gpu/drm/i915/gt/uc/intel_guc.c        | 12 ++++----
 drivers/gpu/drm/i915/gt/uc/intel_guc.h        | 17 +++++++++--
 .../gpu/drm/i915/gt/uc/intel_guc_submission.c |  9 ++----
 drivers/gpu/drm/i915/gt/uc/intel_uc.c         | 14 ++++-----
 drivers/gpu/drm/i915/gt/uc/intel_uc.h         | 29 +++++++------------
 drivers/gpu/drm/i915/gvt/scheduler.c          |  2 +-
 drivers/gpu/drm/i915/i915_drv.h               |  6 ----
 drivers/gpu/drm/i915/intel_gvt.c              |  2 +-
 8 files changed, 42 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
index c4c1523da7a6..f96d1bdf4bf2 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
@@ -207,7 +207,7 @@ static u32 guc_ctl_feature_flags(struct intel_guc *guc)
 {
        u32 flags = 0;
-       if (!intel_guc_is_submission_supported(guc))
+       if (!intel_guc_submission_is_used(guc))
                flags |= GUC_CTL_DISABLE_SCHEDULER;
        return flags;
@@ -217,7 +217,7 @@ static u32 guc_ctl_ctxinfo_flags(struct intel_guc *guc)
 {
        u32 flags = 0;
-       if (intel_guc_is_submission_supported(guc)) {
+       if (intel_guc_submission_is_used(guc)) {
                u32 ctxnum, base;
                base = intel_guc_ggtt_offset(guc, guc->stage_desc_pool);
@@ -348,7 +348,7 @@ int intel_guc_init(struct intel_guc *guc)
        if (ret)
                goto err_ads;
-       if (intel_guc_is_submission_supported(guc)) {
+       if (intel_guc_submission_is_used(guc)) {
                /*
                 * This is stuff we need to have available at fw load time
                 * if we are planning to enable submission later
@@ -389,7 +389,7 @@ void intel_guc_fini(struct intel_guc *guc)
        i915_ggtt_disable_guc(gt->ggtt);
-       if (intel_guc_is_submission_supported(guc))
+       if (intel_guc_submission_is_used(guc))
                intel_guc_submission_fini(guc);
        intel_guc_ct_fini(&guc->ct);
@@ -544,7 +544,7 @@ int intel_guc_suspend(struct intel_guc *guc)
         * If GuC communication is enabled but submission is not supported,
         * we do not need to suspend the GuC.
         */
-       if (!intel_guc_submission_is_enabled(guc))
+       if (!intel_guc_submission_is_used(guc) || !intel_guc_is_ready(guc))
                return 0;
        /*
@@ -609,7 +609,7 @@ int intel_guc_resume(struct intel_guc *guc)
         * we do not need to resume the GuC but we do need to enable the
         * GuC communication on resume (above).
         */
-       if (!intel_guc_submission_is_enabled(guc))
+       if (!intel_guc_submission_is_used(guc) || !intel_guc_is_ready(guc))
                return 0;
        return intel_guc_send(guc, action, ARRAY_SIZE(action));
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
index f6b33745ae0b..1aba4d2c15b3 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
@@ -39,7 +39,7 @@ struct intel_guc {
                void (*disable)(struct intel_guc *guc);
        } interrupts;
-       bool submission_supported;
+       bool submission_selected;
        struct i915_vma *ads_vma;
        struct __guc_ads_blob *ads_blob;
@@ -172,9 +172,20 @@ static inline int intel_guc_sanitize(struct intel_guc *guc)
        return 0;
 }
-static inline bool intel_guc_is_submission_supported(struct intel_guc *guc) +static inline bool intel_guc_submission_is_supported(struct intel_guc *guc)
 {
-       return guc->submission_supported;
+       /* XXX: GuC submission is unavailable for now */
+       return false;
+}
+
+static inline bool intel_guc_submission_is_wanted(struct intel_guc *guc)
+{
+       return guc->submission_selected;
+}
+
+static inline bool intel_guc_submission_is_used(struct intel_guc *guc)
+{
+       return intel_guc_is_used(guc) && intel_guc_submission_is_wanted(guc);
 }

can we keep all intel_guc_submission_xx() functions in intel_guc_submission.h? or is it circular-dependency issue ? but these functions are not on hot-path so
maybe can be moved to .c to break that dependency ?

or is it due to auto generator changes below ?

static inline void intel_guc_enable_msg(struct intel_guc *guc, u32 mask)
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 9e42324fdecd..1beaa77f9bb6 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
@@ -660,12 +660,9 @@ void intel_guc_submission_disable(struct intel_guc *guc)
        guc_proc_desc_fini(guc);
 }
-static bool __guc_submission_support(struct intel_guc *guc)
+static bool __guc_submission_selected(struct intel_guc *guc)
 {
-       /* XXX: GuC submission is unavailable for now */
-       return false;
-
-       if (!intel_guc_is_supported(guc))
+       if (!intel_guc_submission_is_supported(guc))
                return false;
        return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION;
@@ -673,7 +670,7 @@ static bool __guc_submission_support(struct intel_guc *guc)
void intel_guc_submission_init_early(struct intel_guc *guc)
 {
-       guc->submission_supported = __guc_submission_support(guc);
+       guc->submission_selected = __guc_submission_selected(guc);
 }
bool intel_engine_in_guc_submission_mode(const struct intel_engine_cs *engine) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
index 654d7c0c757a..175fa6361ff2 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
@@ -49,7 +49,7 @@ static void __confirm_options(struct intel_uc *uc)
                             "enable_guc=%d (guc:%s submission:%s huc:%s)\n",
                             i915_modparams.enable_guc,
                             yesno(intel_uc_wants_guc(uc)),
-                            yesno(intel_uc_uses_guc_submission(uc)),
+                            yesno(intel_uc_wants_guc_submission(uc)),
                             yesno(intel_uc_wants_huc(uc)));
        if (i915_modparams.enable_guc == -1)
@@ -57,7 +57,7 @@ static void __confirm_options(struct intel_uc *uc)
        if (i915_modparams.enable_guc == 0) {
                GEM_BUG_ON(intel_uc_wants_guc(uc));
-               GEM_BUG_ON(intel_uc_uses_guc_submission(uc));
+               GEM_BUG_ON(intel_uc_wants_guc_submission(uc));
                GEM_BUG_ON(intel_uc_wants_huc(uc));
                return;
        }
@@ -285,7 +285,7 @@ static void __uc_init(struct intel_uc *uc)
                return;
        /* XXX: GuC submission is unavailable for now */
-       GEM_BUG_ON(intel_uc_supports_guc_submission(uc));
+       GEM_BUG_ON(intel_uc_uses_guc_submission(uc));
        ret = intel_guc_init(guc);
        if (ret) {
@@ -410,7 +410,7 @@ static int __uc_init_hw(struct intel_uc *uc)
        if (!intel_uc_fw_is_available(&guc->fw)) {
                ret = __uc_check_hw(uc) ||
                      intel_uc_fw_is_overridden(&guc->fw) ||
-                     intel_uc_supports_guc_submission(uc) ?
+                     intel_uc_wants_guc_submission(uc) ?
                      intel_uc_fw_status_to_error(guc->fw.status) : 0;
                goto err_out;
        }
@@ -462,14 +462,14 @@ static int __uc_init_hw(struct intel_uc *uc)
        if (ret)
                goto err_communication;
-       if (intel_uc_supports_guc_submission(uc))
+       if (intel_uc_uses_guc_submission(uc))
                intel_guc_submission_enable(guc);
        dev_info(i915->drm.dev, "%s firmware %s version %u.%u %s:%s\n",
                 intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), guc->fw.path,
                 guc->fw.major_ver_found, guc->fw.minor_ver_found,
                 "submission",
-                enableddisabled(intel_uc_supports_guc_submission(uc)));
+                enableddisabled(intel_uc_uses_guc_submission(uc)));
        if (intel_uc_uses_huc(uc)) {
                dev_info(i915->drm.dev, "%s firmware %s version %u.%u %s:%s\n",
@@ -511,7 +511,7 @@ static void __uc_fini_hw(struct intel_uc *uc)
        if (!intel_guc_is_fw_running(guc))
                return;
-       if (intel_uc_supports_guc_submission(uc))
+       if (intel_uc_uses_guc_submission(uc))
                intel_guc_submission_disable(guc);
        if (guc_communication_enabled(guc))
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.h b/drivers/gpu/drm/i915/gt/uc/intel_uc.h
index a41aaf353f88..35ce8a6be88b 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.h
@@ -61,33 +61,24 @@ int intel_uc_runtime_resume(struct intel_uc *uc);
* - In use: wanted + firmware found on the system and successfully fetched.
  */
-#define __uc_state_checker(x, state, required) \
-static inline bool intel_uc_##state##_##x(struct intel_uc *uc) \
+#define __uc_state_checker(x, func, state, required) \
+static inline bool intel_uc_##state##_##func(struct intel_uc *uc) \
 { \
-       return intel_##x##_is_##required(&uc->x); \
+       return intel_##func##_is_##required(&uc->x); \
 }
-#define uc_state_checkers(x) \
-__uc_state_checker(x, supports, supported) \
-__uc_state_checker(x, wants, wanted) \
-__uc_state_checker(x, uses, used)
+#define uc_state_checkers(x, func) \
+__uc_state_checker(x, func, supports, supported) \
+__uc_state_checker(x, func, wants, wanted) \
+__uc_state_checker(x, func, uses, used)
-uc_state_checkers(guc);
-uc_state_checkers(huc);
+uc_state_checkers(guc, guc);
+uc_state_checkers(huc, huc);
+uc_state_checkers(guc, guc_submission);
#undef uc_state_checkers
 #undef __uc_state_checker
-static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
-{
-       return intel_guc_is_submission_supported(&uc->guc);
-}
-
-static inline bool intel_uc_uses_guc_submission(struct intel_uc *uc)
-{
-       return intel_guc_is_submission_supported(&uc->guc);
-}
-
 #define intel_uc_ops_function(_NAME, _OPS, _TYPE, _RET) \
 static inline _TYPE intel_uc_##_NAME(struct intel_uc *uc) \
 { \
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index 5fe00ee6bd1b..e8c0885df978 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -1247,7 +1247,7 @@ int intel_vgpu_setup_submission(struct intel_vgpu *vgpu)
                intel_context_set_single_submission(ce);
                /* Max ring buffer size */
-               if (!intel_uc_uses_guc_submission(&engine->gt->uc)) {
+               if (!intel_uc_wants_guc_submission(&engine->gt->uc)) {
                        const unsigned int ring_size = 512 * SZ_4K;
                        ce->ring = __intel_context_ring_size(ring_size);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0a45240af38d..d21039ba2b4f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2010,10 +2010,4 @@ i915_coherent_map_type(struct drm_i915_private *i915)
        return HAS_LLC(i915) ? I915_MAP_WB : I915_MAP_WC;
 }
-static inline bool intel_guc_submission_is_enabled(struct intel_guc *guc)
-{
-       return intel_guc_is_submission_supported(guc) &&
-              intel_guc_is_ready(guc);
-}
-
 #endif
diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c
index 5c189bc31da5..e73fd752adef 100644
--- a/drivers/gpu/drm/i915/intel_gvt.c
+++ b/drivers/gpu/drm/i915/intel_gvt.c
@@ -105,7 +105,7 @@ int intel_gvt_init(struct drm_i915_private *dev_priv)
                return 0;
        }
-       if (intel_uc_uses_guc_submission(&dev_priv->gt.uc)) {
+       if (intel_uc_wants_guc_submission(&dev_priv->gt.uc)) {
                drm_err(&dev_priv->drm,
"i915 GVT-g loading failed due to Graphics virtualization is not yet supported with GuC submission\n");
                return -EIO;
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to