Skip to content

Commit

Permalink
drm/i915/guc: Move enable/disable msg functions to GuC header
Browse files Browse the repository at this point in the history
While today we are modifying GuC enabled msg mask only in GuC
log, this code should be defined as generic GuC to allow future
code reuse.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Michal Winiarski <michal.winiarski@intel.com>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180320181419.35576-3-michal.wajdeczko@intel.com
  • Loading branch information
Michal Wajdeczko authored and Chris Wilson committed Mar 21, 2018
1 parent 154374c commit bc59842
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 14 deletions.
14 changes: 14 additions & 0 deletions drivers/gpu/drm/i915/intel_guc.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,18 @@ static inline int intel_guc_sanitize(struct intel_guc *guc)
return 0;
}

static inline void intel_guc_enable_msg(struct intel_guc *guc, u32 mask)
{
spin_lock_irq(&guc->irq_lock);
guc->msg_enabled_mask |= mask;
spin_unlock_irq(&guc->irq_lock);
}

static inline void intel_guc_disable_msg(struct intel_guc *guc, u32 mask)
{
spin_lock_irq(&guc->irq_lock);
guc->msg_enabled_mask &= ~mask;
spin_unlock_irq(&guc->irq_lock);
}

#endif
26 changes: 12 additions & 14 deletions drivers/gpu/drm/i915/intel_guc_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,25 +72,23 @@ static int guc_action_control_log(struct intel_guc *guc, bool enable,
return intel_guc_send(guc, action, ARRAY_SIZE(action));
}

static void guc_flush_log_msg_enable(struct intel_guc *guc)
static inline struct intel_guc *log_to_guc(struct intel_guc_log *log)
{
spin_lock_irq(&guc->irq_lock);
guc->msg_enabled_mask |= INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER |
INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED;
spin_unlock_irq(&guc->irq_lock);
return container_of(log, struct intel_guc, log);
}

static void guc_flush_log_msg_disable(struct intel_guc *guc)
static void guc_log_enable_flush_events(struct intel_guc_log *log)
{
spin_lock_irq(&guc->irq_lock);
guc->msg_enabled_mask &= ~(INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER |
INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED);
spin_unlock_irq(&guc->irq_lock);
intel_guc_enable_msg(log_to_guc(log),
INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER |
INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED);
}

static inline struct intel_guc *log_to_guc(struct intel_guc_log *log)
static void guc_log_disable_flush_events(struct intel_guc_log *log)
{
return container_of(log, struct intel_guc, log);
intel_guc_disable_msg(log_to_guc(log),
INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER |
INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED);
}

/*
Expand Down Expand Up @@ -576,7 +574,7 @@ int intel_guc_log_relay_open(struct intel_guc_log *log)

mutex_unlock(&log->relay.lock);

guc_flush_log_msg_enable(log_to_guc(log));
guc_log_enable_flush_events(log);

/*
* When GuC is logging without us relaying to userspace, we're ignoring
Expand Down Expand Up @@ -616,7 +614,7 @@ void intel_guc_log_relay_flush(struct intel_guc_log *log)

void intel_guc_log_relay_close(struct intel_guc_log *log)
{
guc_flush_log_msg_disable(log_to_guc(log));
guc_log_disable_flush_events(log);
flush_work(&log->relay.flush_work);

mutex_lock(&log->relay.lock);
Expand Down

0 comments on commit bc59842

Please sign in to comment.