hh_rm_core: delay sending characters to RM

No flow control mechanism exist in RM console. That means when there is
huge messages sent from SVM to PVM there is a possibility that messages
being dropped by RM and hence loss of messages on console. Add a delay
of 800us for every console write and flush calls.

Change-Id: I65fb7a347b093d079c1380765c63b38bf90e0b66
Signed-off-by: Murali Nalajala <[email protected]>
This commit is contained in:
Murali Nalajala 2020-09-23 00:32:14 -07:00
commit 2826880e53
2 changed files with 9 additions and 1 deletions

View file

@ -13,6 +13,7 @@
#include <linux/notifier.h>
#include <linux/irqdomain.h>
#include <linux/workqueue.h>
#include <linux/delay.h>
#include <linux/completion.h>
#include <linux/mod_devicetable.h>
#include <linux/platform_device.h>
@ -530,6 +531,11 @@ static int hh_rm_send_request(u32 message_id,
*/
tx_flags = (i == num_fragments) ? HH_MSGQ_TX_PUSH : 0;
/* delay sending console characters to RM */
if (message_id == HH_RM_RPC_MSG_ID_CALL_VM_CONSOLE_WRITE ||
message_id == HH_RM_RPC_MSG_ID_CALL_VM_CONSOLE_FLUSH)
udelay(800);
ret = hh_msgq_send(hh_rm_msgq_desc, send_buff,
sizeof(*hdr) + payload_size, tx_flags);