Commit 413e8fdb authored by Arkadiusz Hiler's avatar Arkadiusz Hiler Committed by Chris Wilson

drm/i915/guc: Init send_mutex in intel_uc_init_early()

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: default avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1480096777-12573-5-git-send-email-arkadiusz.hiler@intel.comSigned-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 2d803c2d
...@@ -817,6 +817,8 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv, ...@@ -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->wm.wm_mutex);
mutex_init(&dev_priv->pps_mutex); mutex_init(&dev_priv->pps_mutex);
intel_uc_init_early(dev_priv);
i915_memcpy_init_early(dev_priv); i915_memcpy_init_early(dev_priv);
ret = i915_workqueues_init(dev_priv); ret = i915_workqueues_init(dev_priv);
......
...@@ -1388,7 +1388,6 @@ int i915_guc_submission_init(struct drm_i915_private *dev_priv) ...@@ -1388,7 +1388,6 @@ int i915_guc_submission_init(struct drm_i915_private *dev_priv)
guc->ctx_pool_vma = vma; guc->ctx_pool_vma = vma;
ida_init(&guc->ctx_ids); ida_init(&guc->ctx_ids);
mutex_init(&guc->send_mutex);
guc_log_create(guc); guc_log_create(guc);
guc_addon_create(guc); guc_addon_create(guc);
......
...@@ -25,6 +25,11 @@ ...@@ -25,6 +25,11 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "intel_uc.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) * Read GuC command/status register (SOFT_SCRATCH_0)
* Return true if it contains a response rather than a command * Return true if it contains a response rather than a command
......
...@@ -169,6 +169,7 @@ struct intel_guc { ...@@ -169,6 +169,7 @@ struct intel_guc {
}; };
/* intel_uc.c */ /* 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); 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_send(struct intel_guc *guc, const u32 *action, u32 len);
int intel_guc_sample_forcewake(struct intel_guc *guc); int intel_guc_sample_forcewake(struct intel_guc *guc);
......
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