drm/i915/guc: Init send_mutex in intel_uc_init_early()
authorArkadiusz Hiler <arkadiusz.hiler@intel.com>
Fri, 25 Nov 2016 17:59:36 +0000 (18:59 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 25 Nov 2016 21:42:36 +0000 (21:42 +0000)
send_mutex is used to serialise communication with GuC via
intel_guc_send().

Since functions that utilize it are no longer limited to submission,
initialization should be handled as a part of general setup.

v2: move initialization to *_early()

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Winiarski <michal.winiarski@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1480096777-12573-5-git-send-email-arkadiusz.hiler@intel.com
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/intel_uc.c
drivers/gpu/drm/i915/intel_uc.h

index 0fba4bb..8dac298 100644 (file)
@@ -817,6 +817,8 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv,
        mutex_init(&dev_priv->wm.wm_mutex);
        mutex_init(&dev_priv->pps_mutex);
 
+       intel_uc_init_early(dev_priv);
+
        i915_memcpy_init_early(dev_priv);
 
        ret = i915_workqueues_init(dev_priv);
index 72fb525..1256482 100644 (file)
@@ -1388,7 +1388,6 @@ int i915_guc_submission_init(struct drm_i915_private *dev_priv)
 
        guc->ctx_pool_vma = vma;
        ida_init(&guc->ctx_ids);
-       mutex_init(&guc->send_mutex);
        guc_log_create(guc);
        guc_addon_create(guc);
 
index a24cf08..8ae6795 100644 (file)
 #include "i915_drv.h"
 #include "intel_uc.h"
 
+void intel_uc_init_early(struct drm_i915_private *dev_priv)
+{
+       mutex_init(&dev_priv->guc.send_mutex);
+}
+
 /*
  * Read GuC command/status register (SOFT_SCRATCH_0)
  * Return true if it contains a response rather than a command
index a4dd0e0..de2b314 100644 (file)
@@ -169,6 +169,7 @@ struct intel_guc {
 };
 
 /* intel_uc.c */
+void intel_uc_init_early(struct drm_i915_private *dev_priv);
 bool intel_guc_recv(struct drm_i915_private *dev_priv, u32 *status);
 int intel_guc_send(struct intel_guc *guc, const u32 *action, u32 len);
 int intel_guc_sample_forcewake(struct intel_guc *guc);