All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Cristian Marussi <cristian.marussi@arm.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: sudeep.holla@arm.com, lukasz.luba@arm.com,
	james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com,
	etienne.carriere@linaro.org, thara.gopinath@linaro.org,
	vincent.guittot@linaro.org, souvik.chakravarty@arm.com
Subject: Re: [PATCH v7 00/38] SCMI vendor protocols and modularization
Date: Thu, 25 Mar 2021 21:09:52 -0700	[thread overview]
Message-ID: <6bf4921a-12ad-a3b5-3dcc-d5463dd36729@gmail.com> (raw)
In-Reply-To: <20210316124903.35011-1-cristian.marussi@arm.com>



On 3/16/2021 5:48 AM, Cristian Marussi wrote:
> Hi all,
> 
> The current SCMI implementation does not provide an interface to easily
> develop and include a custom vendor protocol implementation as prescribed
> by the SCMI standard, also because, there is not currently any custom
> protocol in the upstream to justify the development of a custom interface
> and its maintenance.
> 
> Moreover the current interface exposes protocol operations to the SCMI
> driver users attaching per-protocol operations directly to the handle
> structure, which, in this way, tends to grow indefinitely for each new
> protocol addition.
> 
> Beside this, protocols private data are also exposed via handle *_priv
> pointers, making such private data accessible also to the SCMI drivers
> even if neither really needed nor advisable.
> 
> This series wants to address this by simplifying the SCMI protocols
> interface and reducing it, roughly, to these common generic operations:
> 
> 	- handle->devm_protocol_get()
> 	- handle->devm_protocol_put()
> 	- handle->notify_ops->*
> 
> All protocols' private data pointers are removed from handle too and made
> accessible only to the protocols code through dedicated internal helpers.
> 
> The concept of protocol handle is also introduced in the SCMI protocol code
> to represent a protocol instance initialized against a specific SCMI
> instance (handle), so that all the new protocol code uses such protocol
> handles wherever previously SCMI handle was used: this enable tighter
> control of what is exposed to the protocol code vs the SCMI drivers.
> 
> Moreover protocol initialization is moved away from device probe and now
> happens on demand when the first user shows up (first .protocol_get), while
> de-initialization is performed once the last user of the protocol, even in
> terms of registered notifications callback, is gone, with the SCMI core
> taking care to perform all the needed underlying resource accounting.
> 
> This way any new future standard or custom protocol implementation will
> expose a common unified interface which does not need to be extended
> endlessly: no need to maintain a custom interface only for vendor protos.
> SCMI drivers written on top of standard or custom protocols will use this
> same common interface to access any protocol operations.
> 
> All existent upstream SCMI drivers are converted to this new interface.
> 
> In order to make this migration painless and to avoid the need of a big
> un-mergeable jumbo patch touching all over the protocols and drivers (like
> it was in v2), since v3 the migration process has been heavily split with a
> bit of transient code added along the way (to preserve bisectability) and
> finally removed towards the ends of the series.
> Protocols and SCMI drivers migration to the new interface happens along
> patches 10->30.
> 
> Leveraging this new centralized and common initialization flow we took
> care also to refactor and simplify protocol-events registration and remove
> *notify_priv from the handle interface making it accessible only to the
> notification core.
> 
> Patch 37 builds on top of this new interface and introduces a mechanism to
> define an SCMI protocol as a full blown module (possibly loadable) while
> leaving the core dealing with proper resource accounting.
> Standard protocols are still kept as builtins in this series, though.
> 
> Finally, patch 38 introduces dynamic SCMI devices creation to avoid having
> to update the static module device table in the core each time a new driver
> is added.
> 
> The whole SCMI stack can still be built alternatively as a module, with all
> the standard protocols included in scmi-module.ko in such a case.
> 
> On top of this series an example SCMI Custom protocol 0x99 and related
> SCMI Custom Dummy driver has been built and it is available at [1] as a
> series of DEBUG patches on top this same series.
> 
> The series is currently based on sudeep/for-next/scmi [2] on top of:
> 
> commit 908a4f778dc7 ("Merge branch 'ib-iio-scmi-5.12-rc2-take3' of
> 	 git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into
> 	 for-next/scmi")
> 
> Any feedback welcome.

You copied me on each round and thanks for doing that, I did not have
time to go look at each change, but sensors, clocks and cpufreq still
worked on ARCH_BRCMSTB with both 32-bit and 64-bit kernels, so:

Tested-by: Florian Fainelli <f.fainelli@gmail.com>

Thanks!
-- 
Florian

WARNING: multiple messages have this Message-ID (diff)
From: Florian Fainelli <f.fainelli@gmail.com>
To: Cristian Marussi <cristian.marussi@arm.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: sudeep.holla@arm.com, lukasz.luba@arm.com,
	james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com,
	etienne.carriere@linaro.org, thara.gopinath@linaro.org,
	vincent.guittot@linaro.org, souvik.chakravarty@arm.com
Subject: Re: [PATCH v7 00/38] SCMI vendor protocols and modularization
Date: Thu, 25 Mar 2021 21:09:52 -0700	[thread overview]
Message-ID: <6bf4921a-12ad-a3b5-3dcc-d5463dd36729@gmail.com> (raw)
In-Reply-To: <20210316124903.35011-1-cristian.marussi@arm.com>



On 3/16/2021 5:48 AM, Cristian Marussi wrote:
> Hi all,
> 
> The current SCMI implementation does not provide an interface to easily
> develop and include a custom vendor protocol implementation as prescribed
> by the SCMI standard, also because, there is not currently any custom
> protocol in the upstream to justify the development of a custom interface
> and its maintenance.
> 
> Moreover the current interface exposes protocol operations to the SCMI
> driver users attaching per-protocol operations directly to the handle
> structure, which, in this way, tends to grow indefinitely for each new
> protocol addition.
> 
> Beside this, protocols private data are also exposed via handle *_priv
> pointers, making such private data accessible also to the SCMI drivers
> even if neither really needed nor advisable.
> 
> This series wants to address this by simplifying the SCMI protocols
> interface and reducing it, roughly, to these common generic operations:
> 
> 	- handle->devm_protocol_get()
> 	- handle->devm_protocol_put()
> 	- handle->notify_ops->*
> 
> All protocols' private data pointers are removed from handle too and made
> accessible only to the protocols code through dedicated internal helpers.
> 
> The concept of protocol handle is also introduced in the SCMI protocol code
> to represent a protocol instance initialized against a specific SCMI
> instance (handle), so that all the new protocol code uses such protocol
> handles wherever previously SCMI handle was used: this enable tighter
> control of what is exposed to the protocol code vs the SCMI drivers.
> 
> Moreover protocol initialization is moved away from device probe and now
> happens on demand when the first user shows up (first .protocol_get), while
> de-initialization is performed once the last user of the protocol, even in
> terms of registered notifications callback, is gone, with the SCMI core
> taking care to perform all the needed underlying resource accounting.
> 
> This way any new future standard or custom protocol implementation will
> expose a common unified interface which does not need to be extended
> endlessly: no need to maintain a custom interface only for vendor protos.
> SCMI drivers written on top of standard or custom protocols will use this
> same common interface to access any protocol operations.
> 
> All existent upstream SCMI drivers are converted to this new interface.
> 
> In order to make this migration painless and to avoid the need of a big
> un-mergeable jumbo patch touching all over the protocols and drivers (like
> it was in v2), since v3 the migration process has been heavily split with a
> bit of transient code added along the way (to preserve bisectability) and
> finally removed towards the ends of the series.
> Protocols and SCMI drivers migration to the new interface happens along
> patches 10->30.
> 
> Leveraging this new centralized and common initialization flow we took
> care also to refactor and simplify protocol-events registration and remove
> *notify_priv from the handle interface making it accessible only to the
> notification core.
> 
> Patch 37 builds on top of this new interface and introduces a mechanism to
> define an SCMI protocol as a full blown module (possibly loadable) while
> leaving the core dealing with proper resource accounting.
> Standard protocols are still kept as builtins in this series, though.
> 
> Finally, patch 38 introduces dynamic SCMI devices creation to avoid having
> to update the static module device table in the core each time a new driver
> is added.
> 
> The whole SCMI stack can still be built alternatively as a module, with all
> the standard protocols included in scmi-module.ko in such a case.
> 
> On top of this series an example SCMI Custom protocol 0x99 and related
> SCMI Custom Dummy driver has been built and it is available at [1] as a
> series of DEBUG patches on top this same series.
> 
> The series is currently based on sudeep/for-next/scmi [2] on top of:
> 
> commit 908a4f778dc7 ("Merge branch 'ib-iio-scmi-5.12-rc2-take3' of
> 	 git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into
> 	 for-next/scmi")
> 
> Any feedback welcome.

You copied me on each round and thanks for doing that, I did not have
time to go look at each change, but sensors, clocks and cpufreq still
worked on ARCH_BRCMSTB with both 32-bit and 64-bit kernels, so:

Tested-by: Florian Fainelli <f.fainelli@gmail.com>

Thanks!
-- 
Florian

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

  parent reply	other threads:[~2021-03-26  4:11 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-16 12:48 [PATCH v7 00/38] SCMI vendor protocols and modularization Cristian Marussi
2021-03-16 12:48 ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 01/38] firmware: arm_scmi: review protocol registration interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 02/38] firmware: arm_scmi: introduce protocol handle definitions Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 03/38] firmware: arm_scmi: introduce devres get/put protocols operations Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 04/38] firmware: arm_scmi: make notifications aware of protocols users Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 05/38] firmware: arm_scmi: introduce new devres notification ops Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 06/38] firmware: arm_scmi: refactor events registration Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 07/38] firmware: arm_scmi: convert events registration to protocol handles Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 08/38] firmware: arm_scmi: add new protocol handle core xfer ops Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 09/38] firmware: arm_scmi: add helper to access revision area memory Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 10/38] firmware: arm_scmi: port Base protocol to new interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 11/38] firmware: arm_scmi: port Perf protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 12/38] cpufreq: scmi: port driver to the new scmi_perf_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 13/38] firmware: arm_scmi: remove legacy scmi_perf_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 14/38] firmware: arm_scmi: port Power protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 15/38] firmware: arm_scmi: port GenPD driver to the new scmi_power_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 16/38] firmware: arm_scmi: remove legacy scmi_power_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 17/38] firmware: arm_scmi: port Clock protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 18/38] clk: scmi: port driver to the new scmi_clk_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-23  9:46   ` Sudeep Holla
2021-03-23  9:46     ` Sudeep Holla
2021-03-26  0:08   ` Stephen Boyd
2021-03-26  0:08     ` Stephen Boyd
2021-03-26 11:02     ` Cristian Marussi
2021-03-26 11:02       ` Cristian Marussi
2021-03-26 13:28     ` [PATCH v8 " Cristian Marussi
2021-03-26 13:28       ` Cristian Marussi
2021-03-26 18:15       ` Stephen Boyd
2021-03-26 18:15         ` Stephen Boyd
2021-03-16 12:48 ` [PATCH v7 19/38] firmware: arm_scmi: remove legacy scmi_clk_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 20/38] firmware: arm_scmi: port Reset protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 21/38] reset: reset-scmi: port driver to the new scmi_reset_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 22/38] firmware: arm_scmi: remove legacy scmi_reset_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 23/38] firmware: arm_scmi: port Sensor protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 24/38] hwmon: (scmi) port driver to the new scmi_sensor_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 25/38] iio/scmi: " Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 17:51   ` Jyoti Bhayana
2021-03-16 17:51     ` Jyoti Bhayana
2021-03-16 22:22     ` Cristian Marussi
2021-03-16 22:22       ` Cristian Marussi
2021-03-17  5:38       ` Jyoti Bhayana
2021-03-17  5:38         ` Jyoti Bhayana
2021-03-18 12:12         ` Sudeep Holla
2021-03-18 12:12           ` Sudeep Holla
2021-03-19 17:00           ` Jyoti Bhayana
2021-03-19 17:00             ` Jyoti Bhayana
2021-03-23  9:48           ` Sudeep Holla
2021-03-23  9:48             ` Sudeep Holla
2021-03-30 11:22             ` Jonathan Cameron
2021-03-30 11:22               ` Jonathan Cameron
2021-03-30 11:33   ` Jonathan Cameron
2021-03-30 11:33     ` Jonathan Cameron
2021-03-30 12:51     ` Cristian Marussi
2021-03-30 12:51       ` Cristian Marussi
2021-03-30 17:34       ` Jonathan Cameron
2021-03-30 17:34         ` Jonathan Cameron
2021-03-31  8:32         ` Cristian Marussi
2021-03-31  8:32           ` Cristian Marussi
2021-03-31 12:28           ` Jonathan Cameron
2021-03-31 12:28             ` Jonathan Cameron
2021-03-30 13:47     ` [PATCH v8 25/38] iio/scmi: Port " Cristian Marussi
2021-03-30 13:47       ` Cristian Marussi
2021-03-30 17:40       ` Jonathan Cameron
2021-03-30 17:40         ` Jonathan Cameron
2021-03-16 12:48 ` [PATCH v7 26/38] firmware: arm_scmi: remove legacy scmi_sensor_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 27/38] firmware: arm_scmi: port SystemPower protocol to new protocols interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 28/38] firmware: arm_scmi: port Voltage " Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 29/38] regulator: scmi: port driver to the new scmi_voltage_proto_ops interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 30/38] firmware: arm_scmi: remove legacy scmi_voltage_ops protocol interface Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 31/38] firmware: arm_scmi: make references to handle const Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 32/38] firmware: arm_scmi: cleanup legacy protocol init code Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 33/38] firmware: arm_scmi: cleanup unused core xfer wrappers Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:48 ` [PATCH v7 34/38] firmware: arm_scmi: cleanup events registration transient code Cristian Marussi
2021-03-16 12:48   ` Cristian Marussi
2021-03-16 12:49 ` [PATCH v7 35/38] firmware: arm_scmi: make notify_priv really private Cristian Marussi
2021-03-16 12:49   ` Cristian Marussi
2021-03-16 12:49 ` [PATCH v7 36/38] firmware: arm_scmi: rename non devres notify_ops Cristian Marussi
2021-03-16 12:49   ` Cristian Marussi
2021-03-16 12:49 ` [PATCH v7 37/38] firmware: arm_scmi: add protocol modularization support Cristian Marussi
2021-03-16 12:49   ` Cristian Marussi
2021-03-16 12:49 ` [PATCH v7 38/38] firmware: arm_scmi: add dynamic scmi devices creation Cristian Marussi
2021-03-16 12:49   ` Cristian Marussi
2021-03-26  4:09 ` Florian Fainelli [this message]
2021-03-26  4:09   ` [PATCH v7 00/38] SCMI vendor protocols and modularization Florian Fainelli
2021-03-26 11:04   ` Cristian Marussi
2021-03-26 11:04     ` Cristian Marussi
2021-03-31  8:22 ` Sudeep Holla
2021-03-31  8:22   ` 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=6bf4921a-12ad-a3b5-3dcc-d5463dd36729@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=Jonathan.Cameron@Huawei.com \
    --cc=cristian.marussi@arm.com \
    --cc=etienne.carriere@linaro.org \
    --cc=james.quinlan@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=souvik.chakravarty@arm.com \
    --cc=sudeep.holla@arm.com \
    --cc=thara.gopinath@linaro.org \
    --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.