All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: Cristian Marussi <cristian.marussi@arm.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, james.quinlan@broadcom.com,
	Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com,
	etienne.carriere@linaro.org, vincent.guittot@linaro.org,
	souvik.chakravarty@arm.com
Subject: Re: [PATCH v7 06/16] firmware: arm_scmi: Add configurable polling mode for transports
Date: Mon, 13 Dec 2021 11:25:55 +0000	[thread overview]
Message-ID: <20211213112555.vhjhu3xopesvxmio@bogus> (raw)
In-Reply-To: <20211129191156.29322-7-cristian.marussi@arm.com>

On Mon, Nov 29, 2021 at 07:11:46PM +0000, Cristian Marussi wrote:
> SCMI communications along TX channels can optionally be provided of a
> completion interrupt; when such interrupt is not available, command
> transactions should rely on polling, where the SCMI core takes care to
> repeatedly evaluate the transport-specific .poll_done() function, if
> available, to determine if and when a request was fully completed or
> timed out.
> 
> Such mechanism is already present and working on a single transfer base:
> SCMI protocols can indeed enable hdr.poll_completion on specific commands
> ahead of each transfer and cause that transaction to be handled with
> polling.
> 
> Introduce a couple of flags to be able to enforce such polling behaviour
> globally at will:
> 
>  - scmi_desc.force_polling: to statically switch the whole transport to
>    polling mode.
> 
>  - scmi_chan_info.no_completion_irq: to switch a single channel dynamically
>    to polling mode if, at runtime, is determined that no completion
>    interrupt was available for such channel.
> 
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> v5 --> v6
> - removed check on replies received by IRQs when xfer was requested
>   as poll_completion (not all transport can suppress IRQs on an xfer basis)
> v4 --> v5
> - make force_polling const
> - introduce polling_enabled flag to simplify checks on do_xfer
> v3 --> v4:
> - renamed .needs_polling flag to .no_completion_irq
> - refactored error path when polling needed but not supported
> ---
>  drivers/firmware/arm_scmi/common.h | 11 +++++++++++
>  drivers/firmware/arm_scmi/driver.c | 17 +++++++++++++++++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
> index 6438b5248c24..99b74f4d39b6 100644
> --- a/drivers/firmware/arm_scmi/common.h
> +++ b/drivers/firmware/arm_scmi/common.h
> @@ -339,11 +339,19 @@ void scmi_protocol_release(const struct scmi_handle *handle, u8 protocol_id);
>   * @dev: Reference to device in the SCMI hierarchy corresponding to this
>   *	 channel
>   * @handle: Pointer to SCMI entity handle
> + * @no_completion_irq: Flag to indicate that this channel has no completion
> + *		       interrupt mechanism for synchronous commands.
> + *		       This can be dynamically set by transports at run-time
> + *		       inside their provided .chan_setup().
> + * @polling_enabled: Flag used to annotate if polling mode is currently enabled
> + *		     on this channel.
>   * @transport_info: Transport layer related information
>   */
>  struct scmi_chan_info {
>  	struct device *dev;
>  	struct scmi_handle *handle;
> +	bool no_completion_irq;
> +	bool polling_enabled;

Do we really need a separate flag for polling_enabled ?
no_completion_irq means you need to enable polling and force_polling too.
Just trying to see if we can get rid of unnecessary flags.

-- 
Regards,
Sudeep

WARNING: multiple messages have this Message-ID (diff)
From: Sudeep Holla <sudeep.holla@arm.com>
To: Cristian Marussi <cristian.marussi@arm.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, james.quinlan@broadcom.com,
	Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com,
	etienne.carriere@linaro.org, vincent.guittot@linaro.org,
	souvik.chakravarty@arm.com
Subject: Re: [PATCH v7 06/16] firmware: arm_scmi: Add configurable polling mode for transports
Date: Mon, 13 Dec 2021 11:25:55 +0000	[thread overview]
Message-ID: <20211213112555.vhjhu3xopesvxmio@bogus> (raw)
In-Reply-To: <20211129191156.29322-7-cristian.marussi@arm.com>

On Mon, Nov 29, 2021 at 07:11:46PM +0000, Cristian Marussi wrote:
> SCMI communications along TX channels can optionally be provided of a
> completion interrupt; when such interrupt is not available, command
> transactions should rely on polling, where the SCMI core takes care to
> repeatedly evaluate the transport-specific .poll_done() function, if
> available, to determine if and when a request was fully completed or
> timed out.
> 
> Such mechanism is already present and working on a single transfer base:
> SCMI protocols can indeed enable hdr.poll_completion on specific commands
> ahead of each transfer and cause that transaction to be handled with
> polling.
> 
> Introduce a couple of flags to be able to enforce such polling behaviour
> globally at will:
> 
>  - scmi_desc.force_polling: to statically switch the whole transport to
>    polling mode.
> 
>  - scmi_chan_info.no_completion_irq: to switch a single channel dynamically
>    to polling mode if, at runtime, is determined that no completion
>    interrupt was available for such channel.
> 
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> v5 --> v6
> - removed check on replies received by IRQs when xfer was requested
>   as poll_completion (not all transport can suppress IRQs on an xfer basis)
> v4 --> v5
> - make force_polling const
> - introduce polling_enabled flag to simplify checks on do_xfer
> v3 --> v4:
> - renamed .needs_polling flag to .no_completion_irq
> - refactored error path when polling needed but not supported
> ---
>  drivers/firmware/arm_scmi/common.h | 11 +++++++++++
>  drivers/firmware/arm_scmi/driver.c | 17 +++++++++++++++++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
> index 6438b5248c24..99b74f4d39b6 100644
> --- a/drivers/firmware/arm_scmi/common.h
> +++ b/drivers/firmware/arm_scmi/common.h
> @@ -339,11 +339,19 @@ void scmi_protocol_release(const struct scmi_handle *handle, u8 protocol_id);
>   * @dev: Reference to device in the SCMI hierarchy corresponding to this
>   *	 channel
>   * @handle: Pointer to SCMI entity handle
> + * @no_completion_irq: Flag to indicate that this channel has no completion
> + *		       interrupt mechanism for synchronous commands.
> + *		       This can be dynamically set by transports at run-time
> + *		       inside their provided .chan_setup().
> + * @polling_enabled: Flag used to annotate if polling mode is currently enabled
> + *		     on this channel.
>   * @transport_info: Transport layer related information
>   */
>  struct scmi_chan_info {
>  	struct device *dev;
>  	struct scmi_handle *handle;
> +	bool no_completion_irq;
> +	bool polling_enabled;

Do we really need a separate flag for polling_enabled ?
no_completion_irq means you need to enable polling and force_polling too.
Just trying to see if we can get rid of unnecessary flags.

-- 
Regards,
Sudeep

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-12-13 11:26 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-29 19:11 [PATCH v7 00/16] Introduce atomic support for SCMI transports Cristian Marussi
2021-11-29 19:11 ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 01/16] firmware: arm_scmi: Perform earlier cinfo lookup call in do_xfer Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 02/16] firmware: arm_scmi: Set polling timeout to max_rx_timeout_ms Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03 20:13   ` Florian Fainelli
2021-12-03 20:13     ` Florian Fainelli
2021-12-13 11:06   ` Sudeep Holla
2021-12-13 11:06     ` Sudeep Holla
2021-11-29 19:11 ` [PATCH v7 03/16] firmware: arm_scmi: Refactor message response path Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 04/16] include: trace: Add new scmi_xfer_response_wait event Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03 20:16   ` Florian Fainelli
2021-12-03 20:16     ` Florian Fainelli
2021-11-29 19:11 ` [PATCH v7 05/16] firmware: arm_scmi: Use new trace event scmi_xfer_response_wait Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03 20:16   ` Florian Fainelli
2021-12-03 20:16     ` Florian Fainelli
2021-11-29 19:11 ` [PATCH v7 06/16] firmware: arm_scmi: Add configurable polling mode for transports Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-13 11:25   ` Sudeep Holla [this message]
2021-12-13 11:25     ` Sudeep Holla
2021-12-14 10:49     ` Cristian Marussi
2021-12-14 10:49       ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 07/16] firmware: arm_scmi: Make smc transport use common completions Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 08/16] firmware: arm_scmi: Add sync_cmds_atomic_replies transport flag Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-13 11:54   ` Sudeep Holla
2021-12-13 11:54     ` Sudeep Holla
2021-12-14 10:52     ` Cristian Marussi
2021-12-14 10:52       ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 09/16] firmware: arm_scmi: Make smc support atomic sync commands replies Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 10/16] firmware: arm_scmi: Make optee " Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 11/16] firmware: arm_scmi: Add support for atomic transports Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 12/16] firmware: arm_scmi: Add atomic mode support to smc transport Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-13 11:42   ` Sudeep Holla
2021-12-13 11:42     ` Sudeep Holla
2021-12-14 10:54     ` Cristian Marussi
2021-12-14 10:54       ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 13/16] firmware: arm_scmi: Add new parameter to mark_txdone Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03 20:17   ` Florian Fainelli
2021-12-03 20:17     ` Florian Fainelli
2021-11-29 19:11 ` [PATCH v7 14/16] firmware: arm_scmi: Add atomic mode support to virtio transport Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-10 12:12   ` Peter Hilber
2021-12-10 12:12     ` Peter Hilber
2021-12-20 21:30     ` Cristian Marussi
2021-12-20 21:30       ` Cristian Marussi
2022-01-18 14:20       ` Peter Hilber
2022-01-18 14:20         ` Peter Hilber
2021-12-13 11:34   ` Sudeep Holla
2021-12-13 11:34     ` Sudeep Holla
2021-12-14 10:56     ` Cristian Marussi
2021-12-14 10:56       ` Cristian Marussi
2021-11-29 19:11 ` [PATCH v7 15/16] firmware: arm_scmi: Add atomic support to clock protocol Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03 20:16   ` Florian Fainelli
2021-12-03 20:16     ` Florian Fainelli
2021-11-29 19:11 ` [PATCH v7 16/16] clk: scmi: Support atomic clock enable/disable API Cristian Marussi
2021-11-29 19:11   ` Cristian Marussi
2021-12-03  2:06   ` Stephen Boyd
2021-12-03  2:06     ` Stephen Boyd
2021-12-03 20:17   ` Florian Fainelli
2021-12-03 20:17     ` Florian Fainelli
2021-12-10 10:52   ` Vincent Guittot
2021-12-10 10:52     ` Vincent Guittot
2021-12-10 13:30     ` Cristian Marussi
2021-12-10 13:30       ` Cristian Marussi
2021-12-10 14:27       ` Vincent Guittot
2021-12-10 14:27         ` Vincent Guittot
2021-12-10 19:36         ` Cristian Marussi
2021-12-10 19:36           ` Cristian Marussi
2021-12-13 17:52 ` [PATCH v7 00/16] (subset) Introduce atomic support for SCMI transports Sudeep Holla
2021-12-13 17:52   ` Sudeep Holla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211213112555.vhjhu3xopesvxmio@bogus \
    --to=sudeep.holla@arm.com \
    --cc=Jonathan.Cameron@Huawei.com \
    --cc=cristian.marussi@arm.com \
    --cc=etienne.carriere@linaro.org \
    --cc=f.fainelli@gmail.com \
    --cc=james.quinlan@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=souvik.chakravarty@arm.com \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.