diff options
| author | Steven Cahail <scahail@codeaurora.org> | 2015-12-03 13:41:45 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:13:26 -0700 |
| commit | 3035a7709cdc0b55decb9d0fa43cbc7e9c0d9065 (patch) | |
| tree | b7de04dc84a9824c44a4729be14b7c5255b0b80d | |
| parent | ea74beeae9c5d82213b7faf94464a850aa550810 (diff) | |
soc: qcom: glink: Introduce RX intent request timeout in SSR
The G-Link SSR driver currently does not specify a timeout for
requesting RX intents. If the remote processor is not responding, the
glink_tx() call for sending the SSR notification could wait forever for
an RX intent and block SSR processing for the entire system.
Introduce a 500ms timeout, and restart the remote processor in question
if an intent is not queued within that time. This unblocks SSR
processing in addition to resetting the remote processor.
Change-Id: I2b00afa4e9a1b81355eedcfd7cc786afb058bee7
Signed-off-by: Steven Cahail <scahail@codeaurora.org>
| -rw-r--r-- | drivers/soc/qcom/glink_ssr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/soc/qcom/glink_ssr.c b/drivers/soc/qcom/glink_ssr.c index 9f56f4b3135f..4952e12ffe3c 100644 --- a/drivers/soc/qcom/glink_ssr.c +++ b/drivers/soc/qcom/glink_ssr.c @@ -26,6 +26,7 @@ #include "glink_private.h" #define GLINK_SSR_REPLY_TIMEOUT HZ +#define GLINK_SSR_INTENT_REQ_TIMEOUT_MS 500 #define GLINK_SSR_EVENT_INIT ~0 #define NUM_LOG_PAGES 3 @@ -642,6 +643,7 @@ static int configure_and_open_channel(struct subsys_info *ss_info) open_cfg.notify_state = glink_ssr_notify_state; open_cfg.notify_rx_intent_req = glink_ssr_notify_rx_intent_req; open_cfg.priv = ss_info->cb_data; + open_cfg.rx_intent_req_timeout_ms = GLINK_SSR_INTENT_REQ_TIMEOUT_MS; handle = glink_open(&open_cfg); if (IS_ERR_OR_NULL(handle)) { |
