From patchwork Sat Aug 20 05:51:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Gross X-Patchwork-Id: 9291595 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A0006607FF for ; Sat, 20 Aug 2016 05:55:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 84DD929287 for ; Sat, 20 Aug 2016 05:55:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 78E0F293C6; Sat, 20 Aug 2016 05:55:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0CC2F29287 for ; Sat, 20 Aug 2016 05:55:23 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bazCz-0003Y7-0i; Sat, 20 Aug 2016 05:52:41 +0000 Received: from mail-oi0-x231.google.com ([2607:f8b0:4003:c06::231]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bazCP-0003U6-SP for linux-arm-kernel@lists.infradead.org; Sat, 20 Aug 2016 05:52:06 +0000 Received: by mail-oi0-x231.google.com with SMTP id f189so90243861oig.3 for ; Fri, 19 Aug 2016 22:51:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=iyTeWSUsoE6qc8uKM2B8rhN9l3pBg+geZteVr2wpyEc=; b=O3XWLtRi8HrCUpBBnuZpfl5t6VM69Y9VTqCswbhuZVOtA8VCll5uzmRL3iooJzxTab h+buox0VpiHoIBDIIJ2MxY5VjpuUwAPO2So2mus1iU/1sNHBo1ePfWQHe82pUcEa/wUf unkhSyn6aUVOffIu9Sg7XCh4oYXnCAy54BPeY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=iyTeWSUsoE6qc8uKM2B8rhN9l3pBg+geZteVr2wpyEc=; b=ewaNANGOibVe2SYV79m6d7rDcuIwk1wMyE3tau85jsjKx5t+2j//U7T7bzxlUX93Pz sPO1cUnrRLtQnDqX2Ip3ybzOSykG9kK2VFlvxbK/Yr+1WzDlohlzOKOK3PgnJDAv7L/0 MDOeaso6sTf7llU5ma1aCdhopAqH+aM4NLMS5j2doCgnvA4RzIhe3uA9wptz7OmmrmQO l7psHx7fBsDAwc1fx/zijYEW8m+gBRHPJvoYwy7ggPmT4+xRpgxdWnxMDuO5GN0QwHD8 ib3POVOfFm0QVJii4fbX4Px7zn0MdWd7IIV2+xQVmDgoQ6s+L1zMNjM/NBP6dpbx6iNu PASw== X-Gm-Message-State: AEkooutw8Rw/n7DPRkxEApr2YDC8f+l6vy3rMEHERqKfMEFt6VaxoHWeXoKFUyChpj0oxUmO X-Received: by 10.202.5.4 with SMTP id 4mr7018661oif.31.1471672304938; Fri, 19 Aug 2016 22:51:44 -0700 (PDT) Received: from localhost ([2602:306:3406:6500:b409:62b0:b7f7:75f0]) by smtp.gmail.com with ESMTPSA id x2sm5800494otd.39.2016.08.19.22.51.44 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Fri, 19 Aug 2016 22:51:44 -0700 (PDT) From: Andy Gross To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/2] firmware: qcom: scm: Fix interrupted SCM calls Date: Sat, 20 Aug 2016 00:51:14 -0500 Message-Id: <1471672274-19317-3-git-send-email-andy.gross@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1471672274-19317-1-git-send-email-andy.gross@linaro.org> References: <1471672274-19317-1-git-send-email-andy.gross@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160819_225206_017315_0204E549 X-CRM114-Status: GOOD ( 10.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: patches@linaro.org, linux-arm-msm@vger.kernel.org, Will Deacon , stanimir.varbanov@linaro.org, linux-kernel@vger.kernel.org, Srinivas Kandagatla , Catalin Marinas , Andy Gross , Bjorn Andersson , Stephen Boyd MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP This patch fixes an issue with the SCM64 calls. Sometimes SCM calls can be interrupted and return early. When this happens, the contents of register 6 will contain a session ID that is required when resuming the SCM call. Signed-off-by: Andy Gross --- drivers/firmware/qcom_scm-64.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/qcom_scm-64.c b/drivers/firmware/qcom_scm-64.c index 4a0f5ea..1851294 100644 --- a/drivers/firmware/qcom_scm-64.c +++ b/drivers/firmware/qcom_scm-64.c @@ -131,10 +131,12 @@ static int qcom_scm_call(struct device *dev, u32 svc_id, u32 cmd_id, qcom_smccc_convention, ARM_SMCCC_OWNER_SIP, fn_id); + res->a6 = 0; + do { arm_smccc_smc(cmd, desc->arginfo, desc->args[0], - desc->args[1], desc->args[2], x5, 0, 0, - res); + desc->args[1], desc->args[2], x5, res->a6, + 0, res); } while (res->a0 == QCOM_SCM_INTERRUPTED); mutex_unlock(&qcom_scm_lock);