msm: smd_pkt: Reduce log churn during SSR
When the remote subsystem is in reset, the SMD_PKT driver logs a message
everytime the user-space modules perform operations using that driver.
Update the SMD_PKT driver to log only once when the remote subsystem is in
reset.
Change-Id: I4cb1c52c549cd8b40d3a0c22437b0faaccd1ed75
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
diff --git a/arch/arm/mach-msm/smd_pkt.c b/arch/arm/mach-msm/smd_pkt.c
index b9fe341..5962d71 100644
--- a/arch/arm/mach-msm/smd_pkt.c
+++ b/arch/arm/mach-msm/smd_pkt.c
@@ -143,6 +143,13 @@
if (msm_smd_pkt_debug_mask & SMD_PKT_POLL) \
pr_info("Poll: "x); \
} while (0)
+
+#define E_SMD_PKT_SSR(x) \
+do { \
+ if (x->do_reset_notification) \
+ pr_err("%s notifying reset for smd_pkt_dev id:%d\n", \
+ __func__, x->i); \
+} while (0)
#else
#define D_STATUS(x...) do {} while (0)
#define D_READ(x...) do {} while (0)
@@ -150,6 +157,7 @@
#define D_READ_DUMP_BUFFER(prestr, cnt, buf) do {} while (0)
#define D_WRITE_DUMP_BUFFER(prestr, cnt, buf) do {} while (0)
#define D_POLL(x...) do {} while (0)
+#define E_SMD_PKT_SSR(x) do {} while (0)
#endif
static ssize_t open_timeout_store(struct device *d,
@@ -310,8 +318,7 @@
if (smd_pkt_devp->do_reset_notification) {
/* notify client that a reset occurred */
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
}
D_READ("Begin %s on smd_pkt_dev id:%d buffer_size %d\n",
@@ -327,8 +334,7 @@
mutex_lock(&smd_pkt_devp->rx_lock);
if (smd_pkt_devp->has_reset) {
mutex_unlock(&smd_pkt_devp->rx_lock);
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
}
@@ -377,8 +383,7 @@
if (r < 0) {
mutex_unlock(&smd_pkt_devp->rx_lock);
if (smd_pkt_devp->has_reset) {
- pr_err("%s notifying reset for smd_pkt_dev"
- " id:%d\n", __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
}
pr_err("%s Error while reading %d\n", __func__, r);
@@ -391,8 +396,7 @@
smd_pkt_devp->has_reset);
if (smd_pkt_devp->has_reset) {
mutex_unlock(&smd_pkt_devp->rx_lock);
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
}
} while (pkt_size != bytes_read);
@@ -444,8 +448,7 @@
}
if (smd_pkt_devp->do_reset_notification || smd_pkt_devp->has_reset) {
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
/* notify client that a reset occurred */
return notify_reset(smd_pkt_devp);
}
@@ -484,8 +487,7 @@
if (smd_pkt_devp->has_reset) {
mutex_unlock(&smd_pkt_devp->tx_lock);
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
} else {
r = smd_write_segment(smd_pkt_devp->ch,
@@ -494,9 +496,7 @@
if (r < 0) {
mutex_unlock(&smd_pkt_devp->tx_lock);
if (smd_pkt_devp->has_reset) {
- pr_err("%s notifying reset for"
- " smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
+ E_SMD_PKT_SSR(smd_pkt_devp);
return notify_reset(smd_pkt_devp);
}
pr_err("%s on smd_pkt_dev id:%d failed r:%d\n",
@@ -532,8 +532,6 @@
mutex_lock(&smd_pkt_devp->ch_lock);
if (smd_pkt_devp->has_reset || !smd_pkt_devp->ch) {
mutex_unlock(&smd_pkt_devp->ch_lock);
- pr_err("%s notifying reset for smd_pkt_dev id:%d\n",
- __func__, smd_pkt_devp->i);
return POLLERR;
}