From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFFEEC433E7 for ; Fri, 9 Oct 2020 12:40:49 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8102A22284 for ; Fri, 9 Oct 2020 12:40:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AWfG2AL+"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fHgg+equ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8102A22284 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=soq+1L9ugJ9Q9N4g6ipPhuh7M0SSNUsWyWOG5XuzHTo=; b=AWfG2AL+if0eQ5QxyZe53Rsmo 9/p9K4mN7xjZ4UVzgl6UTImQu63Syv6ncDU+HGTqUbW7MLkZ6mMlwN1P6oMDQOYCGEi6s/eiBeFv8 +Ih6Cs3YunjmkYf5ZowQQhNwJur2BQ9YsK/VBmwI7/9mZiYywLBZP8o4DjxOyj5tlfbHSxk2CPGQ9 5JWCv+5C8Eopqnp+zux7MNrvsZbArCh46FueAKKsCGgNpevqeuQGtnwmzCurmoLZTAQFw+I56ztVi grxAWz5uGlFOryYYIoHoCIqhcB3yDunYKLGEiMscqGfWnXptzzZxC0C2FA53cwyKx8JuoM4mPhRo9 6eM1DwbqQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQrfQ-00041E-Df; Fri, 09 Oct 2020 12:38:36 +0000 Received: from mail-ej1-x642.google.com ([2a00:1450:4864:20::642]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQrfK-0003yA-A7 for linux-arm-kernel@lists.infradead.org; Fri, 09 Oct 2020 12:38:31 +0000 Received: by mail-ej1-x642.google.com with SMTP id dt13so12823210ejb.12 for ; Fri, 09 Oct 2020 05:38:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AesKshfmiRP++qNG3gjQrrTs80ip3TGBIrMv0vi0zsU=; b=fHgg+equWL+AsqiPRNcirMOmTBGELl+GV8fNgHPNExE6iDa67fpSmGyHn7aWuww1Eh 2j2b7DT/PHe7/zE/vPjFq6q02voZIp1tIyhfLRhi10AJym4NxW7xjTcCUPip76cdozFw hVfCY9F1OhINvmFajqUgD8xrI8/N8Aau9Alo+Msugm1F+nhBNKMrOo7dT5cH82LEi27d XfSYay+HtqXS6Qm//CViGLGXSi789MWitRh32bkkzLlP5aRa7595GPIqG4dOlKsuMbUT a0TuAiBKzLl7JCIHsphKy4ncsNAXm9Ffs3P8yy31t+42SHvgBIYMe42T/SUO4cH4oNK0 PVwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AesKshfmiRP++qNG3gjQrrTs80ip3TGBIrMv0vi0zsU=; b=tffJ/PKwMGAg0d0dC2VPzbEfEFaSssCoy8FvNKzAfm3gajMZHcaA4U9RZRjEjaM/5P +wMQcFnY0xGKqVLwvGlIwA+7iU9RxcKxe6SPuLSlGu/4W8npoE0dXjk3iY6M5MZQLL7j l1rU21AlaaoV5+gbMsNqiivttn+8calPctNQVB7b3Po0nmQ6WTRqIugk8a3BBmwjVIFv sM93QnFY3pPRpYBvHQ/9/GhAZ4Xd6maZ4fWWYn39rLOkw5Wy8Y7cx3+HTKwFMlsLkGka QlULxYUie9Fgv6LSypovvnbCXuBRL3gbw4mdUOueyJiuj5mRm7wncvEAAscq+jVOaNtQ 1LVQ== X-Gm-Message-State: AOAM531b0Xpma3RWCExquQkWKXlU/sty/MJ2b5Pt6O6+fc3Pa2PqcIQT csug/nf7k1ITOgTJV5/vaqKlOidMHic9Y4evSLLvlACovX9oM+VA X-Google-Smtp-Source: ABdhPJx+BxozC5PJ6wLelny8EIhIrfieUamO1EiURNVv1bUfDXjeY00e9QfFi4QZ4XU3+PKf2O4ZVAZvM+1nB2KAlck= X-Received: by 2002:a17:906:4a98:: with SMTP id x24mr13743911eju.319.1602247108475; Fri, 09 Oct 2020 05:38:28 -0700 (PDT) MIME-Version: 1.0 References: <20201008143722.21888-1-etienne.carriere@linaro.org> <20201008143722.21888-2-etienne.carriere@linaro.org> <20201008211804.soegjqsvmsgfmcne@bogus> In-Reply-To: <20201008211804.soegjqsvmsgfmcne@bogus> From: Etienne Carriere Date: Fri, 9 Oct 2020 14:38:16 +0200 Message-ID: Subject: Re: [PATCH 2/5] firmware: arm_scmi: fix transfer missing re-initialization To: Sudeep Holla X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201009_083830_386044_E8567473 X-CRM114-Status: GOOD ( 21.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Souvik Chakravarty , Vincent Guittot , Cristian Marussi , linux-kernel@vger.kernel.org, "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, 8 Oct 2020 at 23:18, Sudeep Holla wrote: > > On Thu, Oct 08, 2020 at 04:37:19PM +0200, Etienne Carriere wrote: > > Implement helper function scmi_do_xfer_again() to process consecutive > > transfers that are initialized only once with scmi_xfer_get_init() > > and hence get the pool completion and responses message length not > > reloaded regarding last completed transfer. > > > > Signed-off-by: Etienne Carriere > > --- > > drivers/firmware/arm_scmi/base.c | 2 +- > > drivers/firmware/arm_scmi/clock.c | 2 +- > > drivers/firmware/arm_scmi/common.h | 2 ++ > > drivers/firmware/arm_scmi/driver.c | 10 ++++++++++ > > drivers/firmware/arm_scmi/perf.c | 2 +- > > drivers/firmware/arm_scmi/sensors.c | 2 +- > > 6 files changed, 16 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/firmware/arm_scmi/base.c b/drivers/firmware/arm_scmi/base.c > > index 9853bd3c4d45..508f214baa1b 100644 > > --- a/drivers/firmware/arm_scmi/base.c > > +++ b/drivers/firmware/arm_scmi/base.c > > @@ -183,7 +183,7 @@ static int scmi_base_implementation_list_get(const struct scmi_handle *handle, > > /* Set the number of protocols to be skipped/already read */ > > *num_skip = cpu_to_le32(tot_num_ret); > > > > - ret = scmi_do_xfer(handle, t); > > + ret = scmi_do_xfer_again(handle, t); > > if (ret) > > break; > > > > diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c > > index c1cfe3ee3d55..9bb54c1a8d55 100644 > > --- a/drivers/firmware/arm_scmi/clock.c > > +++ b/drivers/firmware/arm_scmi/clock.c > > @@ -161,7 +161,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id, > > /* Set the number of rates to be skipped/already read */ > > clk_desc->rate_index = cpu_to_le32(tot_rate_cnt); > > > > - ret = scmi_do_xfer(handle, t); > > + ret = scmi_do_xfer_again(handle, t); > > if (ret) > > goto err; > > > > diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h > > index 37fb583f1bf5..6d4eea7b0f3e 100644 > > --- a/drivers/firmware/arm_scmi/common.h > > +++ b/drivers/firmware/arm_scmi/common.h > > @@ -143,6 +143,8 @@ struct scmi_xfer { > > > > void scmi_xfer_put(const struct scmi_handle *h, struct scmi_xfer *xfer); > > int scmi_do_xfer(const struct scmi_handle *h, struct scmi_xfer *xfer); > > +int scmi_do_xfer_again(const struct scmi_handle *handle, > > + struct scmi_xfer *xfer); > > int scmi_do_xfer_with_response(const struct scmi_handle *h, > > struct scmi_xfer *xfer); > > int scmi_xfer_get_init(const struct scmi_handle *h, u8 msg_id, u8 prot_id, > > diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c > > index c5dea87edf8f..887cb8249db0 100644 > > --- a/drivers/firmware/arm_scmi/driver.c > > +++ b/drivers/firmware/arm_scmi/driver.c > > @@ -402,6 +402,16 @@ int scmi_do_xfer(const struct scmi_handle *handle, struct scmi_xfer *xfer) > > return ret; > > } > > > > +int scmi_do_xfer_again(const struct scmi_handle *handle, struct scmi_xfer *xfer) > > +{ > > + struct scmi_info *info = handle_to_scmi_info(handle); > > + > > + xfer->rx.len = info->desc->max_msg_size; > > I am tempted to just have helper for above and use it where needed. > Or may be I just don't like the name of the function, how about > scmi_do_xfer_rxlen_reinit or anything else. Suggestions ? I think a smoother way would be that scmi_do_xfer() initializes both xfer->rx.len = info->desc->max_msg_size and xfer->hdr.poll_completion = false instead of doing that from scmi_xfer_get_init(). > > > + xfer->hdr.poll_completion = false; > > Do we really need the above ? I think so. Once a transfer is completed, poll_completion is true. But the next transfer we expect should start assuming completion is not yet done, hence this reset to false. Regards, Etienne > > -- > Regards, > Sudeep _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel