lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Fri, 10 Jan 2020 15:37:40 +0530
From:   Arun Kumar Neelakantam <aneela@...eaurora.org>
To:     bjorn.andersson@...aro.org, clew@...eaurora.org
Cc:     Arun Kumar Neelakantam <aneela@...eaurora.org>,
        Andy Gross <agross@...nel.org>,
        linux-arm-msm@...r.kernel.org (open list:ARM/QUALCOMM SUPPORT),
        linux-kernel@...r.kernel.org (open list)
Subject: [PATCH] soc: qcom: aoss: Reduce the AOP ACK wait time

AOP send ACK immediately before wait thread can start waiting.
In this case the probe call is blocked for default time 1sec and
causing bootup delay.

Reduce the default wait time to 20ms to avoid delay in IRQ miss case.

Signed-off-by: Arun Kumar Neelakantam <aneela@...eaurora.org>
---
 drivers/soc/qcom/qcom_aoss.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/soc/qcom/qcom_aoss.c b/drivers/soc/qcom/qcom_aoss.c
index 006ac40..2cf2393 100644
--- a/drivers/soc/qcom/qcom_aoss.c
+++ b/drivers/soc/qcom/qcom_aoss.c
@@ -44,6 +44,8 @@
 
 #define QMP_NUM_COOLING_RESOURCES	2
 
+#define QMP_ACK_TIMEOUT			msecs_to_jiffies(10)
+
 static bool qmp_cdev_max_state = 1;
 
 struct qmp_cooling_device {
@@ -150,7 +152,8 @@ static int qmp_open(struct qmp *qmp)
 
 	qmp_kick(qmp);
 
-	ret = wait_event_timeout(qmp->event, qmp_link_acked(qmp), HZ);
+	ret = wait_event_timeout(qmp->event, qmp_link_acked(qmp),
+				 QMP_ACK_TIMEOUT);
 	if (!ret) {
 		dev_err(qmp->dev, "ucore didn't ack link\n");
 		goto timeout_close_link;
@@ -160,7 +163,8 @@ static int qmp_open(struct qmp *qmp)
 
 	qmp_kick(qmp);
 
-	ret = wait_event_timeout(qmp->event, qmp_ucore_channel_up(qmp), HZ);
+	ret = wait_event_timeout(qmp->event, qmp_ucore_channel_up(qmp),
+				 QMP_ACK_TIMEOUT);
 	if (!ret) {
 		dev_err(qmp->dev, "ucore didn't open channel\n");
 		goto timeout_close_channel;
@@ -171,7 +175,8 @@ static int qmp_open(struct qmp *qmp)
 
 	qmp_kick(qmp);
 
-	ret = wait_event_timeout(qmp->event, qmp_mcore_channel_acked(qmp), HZ);
+	ret = wait_event_timeout(qmp->event, qmp_mcore_channel_acked(qmp),
+				 QMP_ACK_TIMEOUT);
 	if (!ret) {
 		dev_err(qmp->dev, "ucore didn't ack channel\n");
 		goto timeout_close_channel;
-- 
1.9.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ