diff options
| author | Amir Levy <alevy@codeaurora.org> | 2016-05-03 08:54:50 +0300 |
|---|---|---|
| committer | Jeevan Shriram <jshriram@codeaurora.org> | 2016-05-06 12:06:26 -0700 |
| commit | 35daa2f0183e33a3399b78e6080524ea907ce9c8 (patch) | |
| tree | 5298290c27484acd934d993df859e22d502c14e8 /drivers/platform | |
| parent | 71f50fce75c45e5184728f29867c01e9158a6fca (diff) | |
msm: ipa: add a general function for assert
In order to centralize IPA assert calls and add essential
data on assertion, replace some BUG calls in an ipa_assert wrapper.
CRs-fixed: 1006564
Change-Id: I6a9b679bb083c695908972b377e8779e2f1cca60
Signed-off-by: Amir Levy <alevy@codeaurora.org>
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_api.c | 9 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_common_i.h | 6 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c | 18 |
3 files changed, 24 insertions, 9 deletions
diff --git a/drivers/platform/msm/ipa/ipa_api.c b/drivers/platform/msm/ipa/ipa_api.c index f4a2d17db38d..e16ca747210b 100644 --- a/drivers/platform/msm/ipa/ipa_api.c +++ b/drivers/platform/msm/ipa/ipa_api.c @@ -2529,6 +2529,15 @@ void *ipa_get_ipc_logbuf_low(void) } EXPORT_SYMBOL(ipa_get_ipc_logbuf_low); +/** + * ipa_assert() - general function for assertion + */ +void ipa_assert(void) +{ + pr_err("IPA: unrecoverable error has occurred, asserting\n"); + BUG(); +} + static const struct dev_pm_ops ipa_pm_ops = { .suspend_noirq = ipa_ap_suspend, .resume_noirq = ipa_ap_resume, diff --git a/drivers/platform/msm/ipa/ipa_common_i.h b/drivers/platform/msm/ipa/ipa_common_i.h index d906169f7098..fcab2a05ffb5 100644 --- a/drivers/platform/msm/ipa/ipa_common_i.h +++ b/drivers/platform/msm/ipa/ipa_common_i.h @@ -97,6 +97,11 @@ ipa_dec_client_disable_clks(&log_info); \ } while (0) +#define ipa_assert_on(condition)\ +do {\ + if (unlikely(condition))\ + ipa_assert();\ +} while (0) enum ipa_active_client_log_type { EP, @@ -133,6 +138,7 @@ int ipa_set_required_perf_profile(enum ipa_voltage_level floor_voltage, u32 bandwidth_mbps); void *ipa_get_ipc_logbuf(void); void *ipa_get_ipc_logbuf_low(void); +void ipa_assert(void); #endif /* _IPA_COMMON_I_H_ */ diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c index d0b1b525d95a..7fd8fcbffc9b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c @@ -589,7 +589,7 @@ u16 ipahal_imm_cmd_get_opcode(enum ipahal_imm_cmd_name cmd) if (cmd >= IPA_IMM_CMD_MAX) { IPAHAL_ERR("Invalid immediate command imm_cmd=%u\n", cmd); - WARN_ON(1); + ipa_assert(); return -EFAULT; } @@ -599,7 +599,7 @@ u16 ipahal_imm_cmd_get_opcode(enum ipahal_imm_cmd_name cmd) if (opcode == -1) { IPAHAL_ERR("Try to get opcode of obsolete IMM_CMD=%s\n", ipahal_imm_cmd_name_str(cmd)); - WARN_ON(1); + ipa_assert(); return -EFAULT; } @@ -622,7 +622,7 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param) if (cmd >= IPA_IMM_CMD_MAX) { IPAHAL_ERR("Invalid immediate command IMM_CMD=%u\n", cmd); - WARN_ON(1); + ipa_assert(); return -EFAULT; } @@ -632,7 +632,7 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param) if (!ipahal_imm_cmd_objs[ipahal_ctx->hw_type][cmd].dyn_op) { IPAHAL_ERR("IMM_CMD=%s does not support dynamic opcode\n", ipahal_imm_cmd_name_str(cmd)); - WARN_ON(1); + ipa_assert(); return -EFAULT; } @@ -644,20 +644,20 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param) if (param & ~0xFFFF) { IPAHAL_ERR("IMM_CMD=%s opcode param is invalid\n", ipahal_imm_cmd_name_str(cmd)); - WARN_ON(1); + ipa_assert(); return -EFAULT; } opcode = ipahal_imm_cmd_objs[ipahal_ctx->hw_type][cmd].opcode; if (opcode == -1) { IPAHAL_ERR("Try to get opcode of obsolete IMM_CMD=%s\n", ipahal_imm_cmd_name_str(cmd)); - WARN_ON(1); + ipa_assert(); return -EFAULT; } if (opcode & ~0xFFFF) { IPAHAL_ERR("IMM_CMD=%s opcode will be overridden\n", ipahal_imm_cmd_name_str(cmd)); - WARN_ON(1); + ipa_assert(); return -EFAULT; } return (opcode + (param<<8)); @@ -674,13 +674,13 @@ struct ipahal_imm_cmd_pyld *ipahal_construct_imm_cmd( { if (!params) { IPAHAL_ERR("Input error: params=%p\n", params); - WARN_ON(1); + ipa_assert(); return NULL; } if (cmd >= IPA_IMM_CMD_MAX) { IPAHAL_ERR("Invalid immediate command %u\n", cmd); - WARN_ON(1); + ipa_assert(); return NULL; } |
