Commit ca7b2c1b authored by Daniele Ceraolo Spurio's avatar Daniele Ceraolo Spurio Committed by Chris Wilson

drm/i915/uc: Move intel functions to intel_uc

All the intel_uc_* can now be moved to work on the intel_uc structure
for better encapsulation of uc-related actions.

Note: I've introduced uc_to_gt instead of uc_to_i915 because the aim is
to move everything to be gt-focused in the medium term, so we would've
had to replace it soon anyway.
Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Acked-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190713100016.8026-8-chris@chris-wilson.co.ukSigned-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 8b5689d7
...@@ -174,7 +174,7 @@ void i915_gem_suspend(struct drm_i915_private *i915) ...@@ -174,7 +174,7 @@ void i915_gem_suspend(struct drm_i915_private *i915)
i915_gem_drain_freed_objects(i915); i915_gem_drain_freed_objects(i915);
intel_uc_suspend(i915); intel_uc_suspend(&i915->gt.uc);
} }
static struct drm_i915_gem_object *first_mm_object(struct list_head *list) static struct drm_i915_gem_object *first_mm_object(struct list_head *list)
...@@ -239,7 +239,7 @@ void i915_gem_suspend_late(struct drm_i915_private *i915) ...@@ -239,7 +239,7 @@ void i915_gem_suspend_late(struct drm_i915_private *i915)
} }
spin_unlock_irqrestore(&i915->mm.obj_lock, flags); spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
intel_uc_sanitize(i915); intel_uc_sanitize(&i915->gt.uc);
i915_gem_sanitize(i915); i915_gem_sanitize(i915);
} }
...@@ -266,7 +266,7 @@ void i915_gem_resume(struct drm_i915_private *i915) ...@@ -266,7 +266,7 @@ void i915_gem_resume(struct drm_i915_private *i915)
if (intel_gt_resume(&i915->gt)) if (intel_gt_resume(&i915->gt))
goto err_wedged; goto err_wedged;
intel_uc_resume(i915); intel_uc_resume(&i915->gt.uc);
/* Always reload a context for powersaving. */ /* Always reload a context for powersaving. */
if (!i915_gem_load_power_context(i915)) if (!i915_gem_load_power_context(i915))
......
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
struct drm_i915_private; struct drm_i915_private;
static inline struct intel_gt *uc_to_gt(struct intel_uc *uc)
{
return container_of(uc, struct intel_gt, uc);
}
void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915); void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915);
void intel_gt_init_hw(struct drm_i915_private *i915); void intel_gt_init_hw(struct drm_i915_private *i915);
......
...@@ -717,7 +717,7 @@ static intel_engine_mask_t reset_prepare(struct intel_gt *gt) ...@@ -717,7 +717,7 @@ static intel_engine_mask_t reset_prepare(struct intel_gt *gt)
reset_prepare_engine(engine); reset_prepare_engine(engine);
} }
intel_uc_reset_prepare(gt->i915); intel_uc_reset_prepare(&gt->uc);
return awake; return awake;
} }
......
This diff is collapsed.
...@@ -33,34 +33,34 @@ struct intel_uc { ...@@ -33,34 +33,34 @@ struct intel_uc {
struct intel_huc huc; struct intel_huc huc;
}; };
void intel_uc_init_early(struct drm_i915_private *dev_priv); void intel_uc_init_early(struct intel_uc *uc);
void intel_uc_cleanup_early(struct drm_i915_private *dev_priv); void intel_uc_cleanup_early(struct intel_uc *uc);
void intel_uc_init_mmio(struct drm_i915_private *dev_priv); void intel_uc_init_mmio(struct intel_uc *uc);
void intel_uc_fetch_firmwares(struct drm_i915_private *dev_priv); void intel_uc_fetch_firmwares(struct intel_uc *uc);
void intel_uc_cleanup_firmwares(struct drm_i915_private *dev_priv); void intel_uc_cleanup_firmwares(struct intel_uc *uc);
void intel_uc_sanitize(struct drm_i915_private *dev_priv); void intel_uc_sanitize(struct intel_uc *uc);
int intel_uc_init_hw(struct drm_i915_private *dev_priv); int intel_uc_init_hw(struct intel_uc *uc);
void intel_uc_fini_hw(struct drm_i915_private *dev_priv); void intel_uc_fini_hw(struct intel_uc *uc);
int intel_uc_init(struct drm_i915_private *dev_priv); int intel_uc_init(struct intel_uc *uc);
void intel_uc_fini(struct drm_i915_private *dev_priv); void intel_uc_fini(struct intel_uc *uc);
void intel_uc_reset_prepare(struct drm_i915_private *i915); void intel_uc_reset_prepare(struct intel_uc *uc);
void intel_uc_suspend(struct drm_i915_private *i915); void intel_uc_suspend(struct intel_uc *uc);
void intel_uc_runtime_suspend(struct drm_i915_private *i915); void intel_uc_runtime_suspend(struct intel_uc *uc);
int intel_uc_resume(struct drm_i915_private *dev_priv); int intel_uc_resume(struct intel_uc *uc);
static inline bool intel_uc_is_using_guc(struct drm_i915_private *i915) static inline bool intel_uc_is_using_guc(struct intel_uc *uc)
{ {
GEM_BUG_ON(i915_modparams.enable_guc < 0); GEM_BUG_ON(i915_modparams.enable_guc < 0);
return i915_modparams.enable_guc > 0; return i915_modparams.enable_guc > 0;
} }
static inline bool intel_uc_is_using_guc_submission(struct drm_i915_private *i915) static inline bool intel_uc_is_using_guc_submission(struct intel_uc *uc)
{ {
GEM_BUG_ON(i915_modparams.enable_guc < 0); GEM_BUG_ON(i915_modparams.enable_guc < 0);
return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION; return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION;
} }
static inline bool intel_uc_is_using_huc(struct drm_i915_private *i915) static inline bool intel_uc_is_using_huc(struct intel_uc *uc)
{ {
GEM_BUG_ON(i915_modparams.enable_guc < 0); GEM_BUG_ON(i915_modparams.enable_guc < 0);
return i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC; return i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC;
......
...@@ -940,7 +940,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv) ...@@ -940,7 +940,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
intel_detect_pch(dev_priv); intel_detect_pch(dev_priv);
intel_wopcm_init_early(&dev_priv->wopcm); intel_wopcm_init_early(&dev_priv->wopcm);
intel_uc_init_early(dev_priv); intel_uc_init_early(&dev_priv->gt.uc);
intel_pm_setup(dev_priv); intel_pm_setup(dev_priv);
intel_init_dpio(dev_priv); intel_init_dpio(dev_priv);
ret = intel_power_domains_init(dev_priv); ret = intel_power_domains_init(dev_priv);
...@@ -957,7 +957,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv) ...@@ -957,7 +957,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
return 0; return 0;
err_uc: err_uc:
intel_uc_cleanup_early(dev_priv); intel_uc_cleanup_early(&dev_priv->gt.uc);
i915_gem_cleanup_early(dev_priv); i915_gem_cleanup_early(dev_priv);
err_workqueues: err_workqueues:
i915_workqueues_cleanup(dev_priv); i915_workqueues_cleanup(dev_priv);
...@@ -975,7 +975,7 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv) ...@@ -975,7 +975,7 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv)
{ {
intel_irq_fini(dev_priv); intel_irq_fini(dev_priv);
intel_power_domains_cleanup(dev_priv); intel_power_domains_cleanup(dev_priv);
intel_uc_cleanup_early(dev_priv); intel_uc_cleanup_early(&dev_priv->gt.uc);
i915_gem_cleanup_early(dev_priv); i915_gem_cleanup_early(dev_priv);
i915_workqueues_cleanup(dev_priv); i915_workqueues_cleanup(dev_priv);
i915_engines_cleanup(dev_priv); i915_engines_cleanup(dev_priv);
...@@ -1014,7 +1014,7 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv) ...@@ -1014,7 +1014,7 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
intel_uncore_prune_mmio_domains(&dev_priv->uncore); intel_uncore_prune_mmio_domains(&dev_priv->uncore);
intel_uc_init_mmio(dev_priv); intel_uc_init_mmio(&dev_priv->gt.uc);
ret = intel_engines_init_mmio(dev_priv); ret = intel_engines_init_mmio(dev_priv);
if (ret) if (ret)
...@@ -2939,7 +2939,7 @@ static int intel_runtime_suspend(struct device *kdev) ...@@ -2939,7 +2939,7 @@ static int intel_runtime_suspend(struct device *kdev)
*/ */
i915_gem_runtime_suspend(dev_priv); i915_gem_runtime_suspend(dev_priv);
intel_uc_runtime_suspend(dev_priv); intel_uc_runtime_suspend(&dev_priv->gt.uc);
intel_runtime_pm_disable_interrupts(dev_priv); intel_runtime_pm_disable_interrupts(dev_priv);
...@@ -2964,7 +2964,7 @@ static int intel_runtime_suspend(struct device *kdev) ...@@ -2964,7 +2964,7 @@ static int intel_runtime_suspend(struct device *kdev)
intel_runtime_pm_enable_interrupts(dev_priv); intel_runtime_pm_enable_interrupts(dev_priv);
intel_uc_resume(dev_priv); intel_uc_resume(&dev_priv->gt.uc);
intel_gt_init_swizzling(&dev_priv->gt); intel_gt_init_swizzling(&dev_priv->gt);
i915_gem_restore_fences(dev_priv); i915_gem_restore_fences(dev_priv);
...@@ -3062,7 +3062,7 @@ static int intel_runtime_resume(struct device *kdev) ...@@ -3062,7 +3062,7 @@ static int intel_runtime_resume(struct device *kdev)
intel_runtime_pm_enable_interrupts(dev_priv); intel_runtime_pm_enable_interrupts(dev_priv);
intel_uc_resume(dev_priv); intel_uc_resume(&dev_priv->gt.uc);
/* /*
* No point of rolling back things in case of an error, as the best * No point of rolling back things in case of an error, as the best
......
...@@ -2295,9 +2295,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, ...@@ -2295,9 +2295,9 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
#define HAS_HUC_UCODE(dev_priv) (HAS_GUC(dev_priv)) #define HAS_HUC_UCODE(dev_priv) (HAS_GUC(dev_priv))
/* Having a GuC is not the same as using a GuC */ /* Having a GuC is not the same as using a GuC */
#define USES_GUC(dev_priv) intel_uc_is_using_guc(dev_priv) #define USES_GUC(dev_priv) intel_uc_is_using_guc(&(dev_priv)->gt.uc)
#define USES_GUC_SUBMISSION(dev_priv) intel_uc_is_using_guc_submission(dev_priv) #define USES_GUC_SUBMISSION(dev_priv) intel_uc_is_using_guc_submission(&(dev_priv)->gt.uc)
#define USES_HUC(dev_priv) intel_uc_is_using_huc(dev_priv) #define USES_HUC(dev_priv) intel_uc_is_using_huc(&(dev_priv)->gt.uc)
#define HAS_POOLED_EU(dev_priv) (INTEL_INFO(dev_priv)->has_pooled_eu) #define HAS_POOLED_EU(dev_priv) (INTEL_INFO(dev_priv)->has_pooled_eu)
......
...@@ -1248,7 +1248,7 @@ int i915_gem_init_hw(struct drm_i915_private *i915) ...@@ -1248,7 +1248,7 @@ int i915_gem_init_hw(struct drm_i915_private *i915)
} }
/* We can't enable contexts until all firmware is loaded */ /* We can't enable contexts until all firmware is loaded */
ret = intel_uc_init_hw(i915); ret = intel_uc_init_hw(&i915->gt.uc);
if (ret) { if (ret) {
DRM_ERROR("Enabling uc failed (%d)\n", ret); DRM_ERROR("Enabling uc failed (%d)\n", ret);
goto out; goto out;
...@@ -1433,7 +1433,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1433,7 +1433,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
if (ret) if (ret)
return ret; return ret;
intel_uc_fetch_firmwares(dev_priv); intel_uc_fetch_firmwares(&dev_priv->gt.uc);
ret = intel_wopcm_init(&dev_priv->wopcm); ret = intel_wopcm_init(&dev_priv->wopcm);
if (ret) if (ret)
...@@ -1481,7 +1481,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1481,7 +1481,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
intel_init_gt_powersave(dev_priv); intel_init_gt_powersave(dev_priv);
ret = intel_uc_init(dev_priv); ret = intel_uc_init(&dev_priv->gt.uc);
if (ret) if (ret)
goto err_pm; goto err_pm;
...@@ -1545,9 +1545,9 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1545,9 +1545,9 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
mutex_lock(&dev_priv->drm.struct_mutex); mutex_lock(&dev_priv->drm.struct_mutex);
err_init_hw: err_init_hw:
intel_uc_fini_hw(dev_priv); intel_uc_fini_hw(&dev_priv->gt.uc);
err_uc_init: err_uc_init:
intel_uc_fini(dev_priv); intel_uc_fini(&dev_priv->gt.uc);
err_pm: err_pm:
if (ret != -EIO) { if (ret != -EIO) {
intel_cleanup_gt_powersave(dev_priv); intel_cleanup_gt_powersave(dev_priv);
...@@ -1564,7 +1564,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1564,7 +1564,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
mutex_unlock(&dev_priv->drm.struct_mutex); mutex_unlock(&dev_priv->drm.struct_mutex);
err_uc_fw: err_uc_fw:
intel_uc_cleanup_firmwares(dev_priv); intel_uc_cleanup_firmwares(&dev_priv->gt.uc);
if (ret != -EIO) { if (ret != -EIO) {
i915_gem_cleanup_userptr(dev_priv); i915_gem_cleanup_userptr(dev_priv);
...@@ -1611,8 +1611,8 @@ void i915_gem_driver_remove(struct drm_i915_private *dev_priv) ...@@ -1611,8 +1611,8 @@ void i915_gem_driver_remove(struct drm_i915_private *dev_priv)
i915_gem_drain_workqueue(dev_priv); i915_gem_drain_workqueue(dev_priv);
mutex_lock(&dev_priv->drm.struct_mutex); mutex_lock(&dev_priv->drm.struct_mutex);
intel_uc_fini_hw(dev_priv); intel_uc_fini_hw(&dev_priv->gt.uc);
intel_uc_fini(dev_priv); intel_uc_fini(&dev_priv->gt.uc);
mutex_unlock(&dev_priv->drm.struct_mutex); mutex_unlock(&dev_priv->drm.struct_mutex);
i915_gem_drain_freed_objects(dev_priv); i915_gem_drain_freed_objects(dev_priv);
...@@ -1630,7 +1630,7 @@ void i915_gem_driver_release(struct drm_i915_private *dev_priv) ...@@ -1630,7 +1630,7 @@ void i915_gem_driver_release(struct drm_i915_private *dev_priv)
intel_cleanup_gt_powersave(dev_priv); intel_cleanup_gt_powersave(dev_priv);
intel_uc_cleanup_firmwares(dev_priv); intel_uc_cleanup_firmwares(&dev_priv->gt.uc);
i915_gem_cleanup_userptr(dev_priv); i915_gem_cleanup_userptr(dev_priv);
intel_timelines_fini(dev_priv); intel_timelines_fini(dev_priv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment