Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3353648pxj; Tue, 1 Jun 2021 03:26:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZSHR8t/2u6o/BfJlLx2v/q2vvzbPJoKhtQ+013g7EYm+bow10SpvOYd8G9B4AeZbjwfhf X-Received: by 2002:a50:9b06:: with SMTP id o6mr31471355edi.284.1622543162061; Tue, 01 Jun 2021 03:26:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622543162; cv=none; d=google.com; s=arc-20160816; b=Z4hTxFoRBOI1mc7bQ2dyUxVz8DFQM5x9GOK3ZvgDrUmSrS7C5Vzyy/4t65VbNpm0Ae 6qIneCNOYgC6ZPDCr03xlCQt5XLSweV1aEyoXiD0tKn3T+7pqwDCuWMIanq87dqAu1no uB2UnY99at8Xu375FX/Ujg1vOT7x7SqppLSlbUaJa0sYlpN0SO+JVcpPwMcCdj84697n wZzYA64br2Mu1FO/36wjQWzDWiM/tVGI0Gwyij3xYntl1PySwN1BQMhRrG9OQs4E90/t i4soOg/IY3A+4oleigMSCOEmVblGijg/bDojsnIFb9X83aue17Yi0SCjeB7BK7t9+2AC pKYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=v/+TSqsOXeSjGZcZ1gkW9PCBrJ16pEKsHg+XTd6LonY=; b=vGFxYijjGnhFtzn5C+KMXCNARtIi08hnkMzvGy7ZsxE04l09dEizWJuxu9pU2l4Wqc A1Ql1r5yTEpveDC7x0RhwNu5/j7tFpres10G6JeFG4pxuDVE35VWyTciVZCO21U6N7LC a+gGdLLxYYHtHTHkJSiUz29XHCazC9bDdPo8svoHv1dSDkU0pm+qgwnzOWEwnLvW91zo 9xZSa7U28QxRqkb1DUje88lewwlcdfPRQDFdTV2FmpEzUj6V0NeikSSRzdsJM9bQkt/z eTGFOy1GNRnnMlVLHdB/+U38sB7toGZBGXyTPDl04equc1OYUKz27KAK7Gh/gGxD0+Nc EfXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id br12si3583496ejb.231.2021.06.01.03.25.39; Tue, 01 Jun 2021 03:26:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232570AbhFAK0V (ORCPT + 99 others); Tue, 1 Jun 2021 06:26:21 -0400 Received: from foss.arm.com ([217.140.110.172]:46344 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232460AbhFAK0T (ORCPT ); Tue, 1 Jun 2021 06:26:19 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 06E8A12FC; Tue, 1 Jun 2021 03:24:38 -0700 (PDT) Received: from e120937-lin.home (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9D7273F73D; Tue, 1 Jun 2021 03:24:35 -0700 (PDT) From: Cristian Marussi To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com Subject: [PATCH v2 1/5] firmware: arm_scmi: reset_rx_to_maxsz during async commands Date: Tue, 1 Jun 2021 11:24:17 +0100 Message-Id: <20210601102421.26581-2-cristian.marussi@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210601102421.26581-1-cristian.marussi@arm.com> References: <20210601102421.26581-1-cristian.marussi@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During an async commands execution the rx buffer len is at first set to max_msg_sz when the synchronous part of the command is first sent; once the synchronous part completes the transport layer waits for the delayed response which will be processed using the same xfer descriptor initially allocated, but synchronous response received at the end of the xfer will have shrunk the rx buffer len to the effective payload response length. Raise the rx buffer length again to max_msg_sz while waiting for the delayed response, while adding an informational error message. Fixes: 58ecdf03dbb9 ("firmware: arm_scmi: Add support for asynchronous commands and delayed response") Signed-off-by: Cristian Marussi --- drivers/firmware/arm_scmi/driver.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 66eb3f0e5daf..75141b90ae53 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -513,8 +513,16 @@ static int do_xfer_with_response(const struct scmi_protocol_handle *ph, xfer->async_done = &async_response; ret = do_xfer(ph, xfer); - if (!ret && !wait_for_completion_timeout(xfer->async_done, timeout)) - ret = -ETIMEDOUT; + if (!ret) { + /* rx.len would have been shrunk in the sync do_xfer above */ + reset_rx_to_maxsz(ph, xfer); + if (!wait_for_completion_timeout(xfer->async_done, timeout)) { + dev_err(ph->dev, + "timed out in delayed resp(caller: %pS)\n", + (void *)_RET_IP_); + ret = -ETIMEDOUT; + } + } xfer->async_done = NULL; return ret; -- 2.17.1