From patchwork Wed Feb 28 00:20:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 129881 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp415587lja; Tue, 27 Feb 2018 16:21:03 -0800 (PST) X-Google-Smtp-Source: AH8x225Y0GoT7/NWLSOsxRDa3FTybeIaoVGggx5qVVAqe7NXY/R6GD3zZ8YdHAxp3T38opHGKB+5 X-Received: by 10.98.160.142 with SMTP id p14mr15956524pfl.134.1519777263511; Tue, 27 Feb 2018 16:21:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519777263; cv=none; d=google.com; s=arc-20160816; b=CWlXcVk6xaS7rVhk9CmVqzA5JZLeiKaf0KXcpqsbHYhZTANE2GnNaQdaXyvmx0SIxP JUzkL286mCjLiDgUIHkIXsMiF4ocR2+Z9m37HnaT/FrunRnaBb0ip8gM814z8HcJdpPZ 1EKHGXnql30P0eTgUY9w/Ink73GhgNJ60DzErhwN/5eRQuLgZB7ZASz/qmr6tL2JYx+A Q6CtA5rwuRhV5fW50BZZ3Vl/tmtCUffUUSvyIZxYgKIhPt7ubfmL3TmlAKG7WWqo5NF5 Vh1GyNcPIRlN7aKLhTJ15J+g9vU2eMtXD9p30tmQI7Z0UdRittnDh22rah/YtaNF9cJZ wDRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=xY9ZxOsjMVGNd+HIZQEwd5vpMHaYMeK8dNUTddfO2ho=; b=qnJ49/oJ8wEwVUdqoJwA47DrrHeWpFVECJLro56yh/Ys0aBeccfP7F1d4iw2Tw4WeG FKzXPgdmksZu3MX3xM+32tI+SkkRxiO7XwfRzfYaqFgq+1ThEL67z4HSA9kWF93mzkpJ gaD2VDCGf6Ls7xsHEqkE6GcP3LMVJMQq07UIXSW1YHVyfizHER/3u5U1Ke62FE2NhXnp nu2xGjfY6H6g4a0vHB/VbYwzcLAGWidThxn5FVRWzP8+mP0nyb+OzY9OpQDQsONmdgJ0 aTnyuMJY5Zwdhc+kVXm2UAdwPPLfBmgnKVRDa96o6sjoIAxEbQvdO9VNZPZEV0R8v4pc CNdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NkZl7rLg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e63si265242pfb.268.2018.02.27.16.21.03; Tue, 27 Feb 2018 16:21:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NkZl7rLg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751723AbeB1AU6 (ORCPT + 28 others); Tue, 27 Feb 2018 19:20:58 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:36528 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751516AbeB1AU4 (ORCPT ); Tue, 27 Feb 2018 19:20:56 -0500 Received: by mail-pg0-f67.google.com with SMTP id i14so275412pgv.3 for ; Tue, 27 Feb 2018 16:20:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=xY9ZxOsjMVGNd+HIZQEwd5vpMHaYMeK8dNUTddfO2ho=; b=NkZl7rLgURdinCPd+nv5+nLVxpQO2bechTfFtceetjNM9e8t463D9Ny7YFyXhgZWSy H17QPJs8+Zb6AloWB8o06uUFTtkfGRuFBNh+mh/KDI/R3rplu+m2ZNI6f7qrBTmgqjZ/ 74EdDvz4wmP0Is+Dx4EDw8teOUc/vB9oCgd/U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=xY9ZxOsjMVGNd+HIZQEwd5vpMHaYMeK8dNUTddfO2ho=; b=kcq70ZSVAXjabFL0Ept8Rm+9+lghiGTpQU5o38aA2/01cmA1vW27ebtKV/Sr/zZbRZ yu14kvhYl+a+FLtNB8vasWM0vtZe4gqZceqsSsX1Lr/pwYhv8cHwDFuMvYdVgplI5oyT Rw9HKFh5HAUBDl8rUIRLxUqlwe5/z5SFiRwcSV61Gf0d9pZi+mU2yLdTtY+7tcLfHEsI XW1pITrhekXa5LdxFlOSZoh/VRHW19ANjF/F3LO0w3s79O7fMsJSsdQ9kZazacQWVl8D TnsGpQSkTNJ0vJAD+OZinYdBhFgh3RzG7BlP2TDhpapfgkNphm82EKl3aIYOg2pTsiR+ mCqA== X-Gm-Message-State: APf1xPARer6/Hrj/ez5aQfJdJtUZ0iJ/1JIYhurucDVUgXMqGUmmgtwu 6MS+EINK7ltJz2Pqhb96veERKQ== X-Received: by 10.99.127.69 with SMTP id p5mr12577221pgn.346.1519777255746; Tue, 27 Feb 2018 16:20:55 -0800 (PST) Received: from localhost.localdomain (104-188-17-28.lightspeed.sndgca.sbcglobal.net. [104.188.17.28]) by smtp.gmail.com with ESMTPSA id 76sm424221pfp.53.2018.02.27.16.20.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Feb 2018 16:20:55 -0800 (PST) From: Bjorn Andersson To: Ohad Ben-Cohen , Bjorn Andersson , Srinivas Kandagatla Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] rpmsg: smd: Read remote state from channel info Date: Tue, 27 Feb 2018 16:20:52 -0800 Message-Id: <20180228002052.11321-1-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.16.2 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In some cases the remote processor does not trigger an interrupt when transitioning a channel from OPENING to OPENED state and as such the value of the cached "remote_state" will be stale. Read the state directly from the "channel info" while waiting for the remote to negotiate the channel state in order to remove false negatives due to this. Fixes: 268105fbc0f8 ("rpmsg: smd: Perform handshake during open") Reported-by: Srinivas Kandagatla Signed-off-by: Bjorn Andersson --- drivers/rpmsg/qcom_smd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.16.2 diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c index 92d0c6a7a837..553a6c395f93 100644 --- a/drivers/rpmsg/qcom_smd.c +++ b/drivers/rpmsg/qcom_smd.c @@ -815,8 +815,8 @@ static int qcom_smd_channel_open(struct qcom_smd_channel *channel, /* Wait for remote to enter opening or opened */ ret = wait_event_interruptible_timeout(channel->state_change_event, - channel->remote_state == SMD_CHANNEL_OPENING || - channel->remote_state == SMD_CHANNEL_OPENED, + GET_RX_CHANNEL_INFO(channel, state) == SMD_CHANNEL_OPENING || + GET_RX_CHANNEL_INFO(channel, state) == SMD_CHANNEL_OPENED, HZ); if (!ret) { dev_err(&edge->dev, "remote side did not enter opening state\n"); @@ -827,7 +827,7 @@ static int qcom_smd_channel_open(struct qcom_smd_channel *channel, /* Wait for remote to enter opened */ ret = wait_event_interruptible_timeout(channel->state_change_event, - channel->remote_state == SMD_CHANNEL_OPENED, + GET_RX_CHANNEL_INFO(channel, state) == SMD_CHANNEL_OPENED, HZ); if (!ret) { dev_err(&edge->dev, "remote side did not enter open state\n");