Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2826880e authored by Murali Nalajala's avatar Murali Nalajala
Browse files

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: default avatarMurali Nalajala <mnalajal@codeaurora.org>
parent 76a04e42
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -85,7 +85,9 @@ static int hh_hvc_notify_console_chars(struct notifier_block *this,
		pr_warn_ratelimited("dropped %d bytes from VM%d - full fifo\n",
				    msg->num_bytes - ret, vm_name);

	if (hvc_poll(hh_hvc_data[vm_name].hvc))
		hvc_kick();

	return NOTIFY_OK;
}

+6 −0
Original line number Diff line number Diff line
@@ -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);