linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle
@ 2020-09-06 23:04 Rikard Falkeborn
  2020-09-06 23:04 ` [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers Rikard Falkeborn
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Rikard Falkeborn @ 2020-09-06 23:04 UTC (permalink / raw)
  To: linux-arm-kernel, linux-pm, linux-kernel
  Cc: Sudeep Holla, Rafael J. Wysocki, Viresh Kumar, Rikard Falkeborn

A small patch series aiming to constify static scmi_*_ops structs in
drivers/firmware/arm_scmi. Since these are not modified, constify them
to allow the compiler to put them in read-only memory.

Rikard Falkeborn (3):
  cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  firmware: arm_scmi: Constify ops pointers in scmi_handle
  firmware: arm_scmi: Constify static scmi-ops

 drivers/cpufreq/scmi-cpufreq.c      |  6 +++---
 drivers/firmware/arm_scmi/clock.c   |  2 +-
 drivers/firmware/arm_scmi/common.h  |  2 +-
 drivers/firmware/arm_scmi/mailbox.c |  2 +-
 drivers/firmware/arm_scmi/notify.c  |  2 +-
 drivers/firmware/arm_scmi/perf.c    |  2 +-
 drivers/firmware/arm_scmi/power.c   |  2 +-
 drivers/firmware/arm_scmi/reset.c   |  2 +-
 drivers/firmware/arm_scmi/sensors.c |  2 +-
 drivers/firmware/arm_scmi/smc.c     |  2 +-
 include/linux/scmi_protocol.h       | 12 ++++++------
 11 files changed, 18 insertions(+), 18 deletions(-)

-- 
2.28.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  2020-09-06 23:04 [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Rikard Falkeborn
@ 2020-09-06 23:04 ` Rikard Falkeborn
  2020-09-07 10:22   ` Sudeep Holla
  2020-09-06 23:04 ` [PATCH 2/3] firmware: arm_scmi: Constify ops pointers in scmi_handle Rikard Falkeborn
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Rikard Falkeborn @ 2020-09-06 23:04 UTC (permalink / raw)
  To: linux-arm-kernel, linux-pm, linux-kernel
  Cc: Sudeep Holla, Rafael J. Wysocki, Viresh Kumar, Rikard Falkeborn

The perf_ops are not modified through this pointer. Make them const to
indicate that. This is in preparation to make the scmi-ops pointers in
scmi_handle const.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
---
 drivers/cpufreq/scmi-cpufreq.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index fb42e3390377..46b268095421 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -29,7 +29,7 @@ static const struct scmi_handle *handle;
 static unsigned int scmi_cpufreq_get_rate(unsigned int cpu)
 {
 	struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
-	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+	const struct scmi_perf_ops *perf_ops = handle->perf_ops;
 	struct scmi_data *priv = policy->driver_data;
 	unsigned long rate;
 	int ret;
@@ -50,7 +50,7 @@ scmi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 {
 	int ret;
 	struct scmi_data *priv = policy->driver_data;
-	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+	const struct scmi_perf_ops *perf_ops = handle->perf_ops;
 	u64 freq = policy->freq_table[index].frequency;
 
 	ret = perf_ops->freq_set(handle, priv->domain_id, freq * 1000, false);
@@ -64,7 +64,7 @@ static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
 					     unsigned int target_freq)
 {
 	struct scmi_data *priv = policy->driver_data;
-	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+	const struct scmi_perf_ops *perf_ops = handle->perf_ops;
 
 	if (!perf_ops->freq_set(handle, priv->domain_id,
 				target_freq * 1000, true)) {
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/3] firmware: arm_scmi: Constify ops pointers in scmi_handle
  2020-09-06 23:04 [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Rikard Falkeborn
  2020-09-06 23:04 ` [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers Rikard Falkeborn
@ 2020-09-06 23:04 ` Rikard Falkeborn
  2020-09-06 23:04 ` [PATCH 3/3] firmware: arm_scmi: Constify static scmi-ops Rikard Falkeborn
  2020-09-08 12:51 ` [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Sudeep Holla
  3 siblings, 0 replies; 9+ messages in thread
From: Rikard Falkeborn @ 2020-09-06 23:04 UTC (permalink / raw)
  To: linux-arm-kernel, linux-pm, linux-kernel
  Cc: Sudeep Holla, Rafael J. Wysocki, Viresh Kumar, Rikard Falkeborn

These are never modified, so make them const to allow drivers to make
them const.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
---
 include/linux/scmi_protocol.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h
index 7e5dd7d1e221..05570afc7f74 100644
--- a/include/linux/scmi_protocol.h
+++ b/include/linux/scmi_protocol.h
@@ -279,12 +279,12 @@ struct scmi_notify_ops {
 struct scmi_handle {
 	struct device *dev;
 	struct scmi_revision_info *version;
-	struct scmi_perf_ops *perf_ops;
-	struct scmi_clk_ops *clk_ops;
-	struct scmi_power_ops *power_ops;
-	struct scmi_sensor_ops *sensor_ops;
-	struct scmi_reset_ops *reset_ops;
-	struct scmi_notify_ops *notify_ops;
+	const struct scmi_perf_ops *perf_ops;
+	const struct scmi_clk_ops *clk_ops;
+	const struct scmi_power_ops *power_ops;
+	const struct scmi_sensor_ops *sensor_ops;
+	const struct scmi_reset_ops *reset_ops;
+	const struct scmi_notify_ops *notify_ops;
 	/* for protocol internal use */
 	void *perf_priv;
 	void *clk_priv;
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/3] firmware: arm_scmi: Constify static scmi-ops
  2020-09-06 23:04 [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Rikard Falkeborn
  2020-09-06 23:04 ` [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers Rikard Falkeborn
  2020-09-06 23:04 ` [PATCH 2/3] firmware: arm_scmi: Constify ops pointers in scmi_handle Rikard Falkeborn
@ 2020-09-06 23:04 ` Rikard Falkeborn
  2020-09-08 12:51 ` [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Sudeep Holla
  3 siblings, 0 replies; 9+ messages in thread
From: Rikard Falkeborn @ 2020-09-06 23:04 UTC (permalink / raw)
  To: linux-arm-kernel, linux-pm, linux-kernel
  Cc: Sudeep Holla, Rafael J. Wysocki, Viresh Kumar, Rikard Falkeborn

These are never modified, so make them const to allow the compiler to
put them in read-only memory.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
---
 drivers/firmware/arm_scmi/clock.c   | 2 +-
 drivers/firmware/arm_scmi/common.h  | 2 +-
 drivers/firmware/arm_scmi/mailbox.c | 2 +-
 drivers/firmware/arm_scmi/notify.c  | 2 +-
 drivers/firmware/arm_scmi/perf.c    | 2 +-
 drivers/firmware/arm_scmi/power.c   | 2 +-
 drivers/firmware/arm_scmi/reset.c   | 2 +-
 drivers/firmware/arm_scmi/sensors.c | 2 +-
 drivers/firmware/arm_scmi/smc.c     | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index 75e39882746e..a3b90be28009 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -318,7 +318,7 @@ scmi_clock_info_get(const struct scmi_handle *handle, u32 clk_id)
 	return clk;
 }
 
-static struct scmi_clk_ops clk_ops = {
+static const struct scmi_clk_ops clk_ops = {
 	.count_get = scmi_clock_count_get,
 	.info_get = scmi_clock_info_get,
 	.rate_get = scmi_clock_rate_get,
diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
index c113e578cc6c..233700a42bff 100644
--- a/drivers/firmware/arm_scmi/common.h
+++ b/drivers/firmware/arm_scmi/common.h
@@ -210,7 +210,7 @@ struct scmi_transport_ops {
  * @max_msg_size: Maximum size of data per message that can be handled.
  */
 struct scmi_desc {
-	struct scmi_transport_ops *ops;
+	const struct scmi_transport_ops *ops;
 	int max_rx_timeout_ms;
 	int max_msg;
 	int max_msg_size;
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c
index 6998dc86b5ce..cc2de207fe10 100644
--- a/drivers/firmware/arm_scmi/mailbox.c
+++ b/drivers/firmware/arm_scmi/mailbox.c
@@ -181,7 +181,7 @@ mailbox_poll_done(struct scmi_chan_info *cinfo, struct scmi_xfer *xfer)
 	return shmem_poll_done(smbox->shmem, xfer);
 }
 
-static struct scmi_transport_ops scmi_mailbox_ops = {
+static const struct scmi_transport_ops scmi_mailbox_ops = {
 	.chan_available = mailbox_chan_available,
 	.chan_setup = mailbox_chan_setup,
 	.chan_free = mailbox_chan_free,
diff --git a/drivers/firmware/arm_scmi/notify.c b/drivers/firmware/arm_scmi/notify.c
index 4731daaacd19..2754f9d01636 100644
--- a/drivers/firmware/arm_scmi/notify.c
+++ b/drivers/firmware/arm_scmi/notify.c
@@ -1421,7 +1421,7 @@ static void scmi_protocols_late_init(struct work_struct *work)
  * notify_ops are attached to the handle so that can be accessed
  * directly from an scmi_driver to register its own notifiers.
  */
-static struct scmi_notify_ops notify_ops = {
+static const struct scmi_notify_ops notify_ops = {
 	.register_event_notifier = scmi_register_notifier,
 	.unregister_event_notifier = scmi_unregister_notifier,
 };
diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c
index 3e1e87012c95..a3e7b1bfab00 100644
--- a/drivers/firmware/arm_scmi/perf.c
+++ b/drivers/firmware/arm_scmi/perf.c
@@ -748,7 +748,7 @@ static bool scmi_fast_switch_possible(const struct scmi_handle *handle,
 	return dom->fc_info && dom->fc_info->level_set_addr;
 }
 
-static struct scmi_perf_ops perf_ops = {
+static const struct scmi_perf_ops perf_ops = {
 	.limits_set = scmi_perf_limits_set,
 	.limits_get = scmi_perf_limits_get,
 	.level_set = scmi_perf_level_set,
diff --git a/drivers/firmware/arm_scmi/power.c b/drivers/firmware/arm_scmi/power.c
index 46f213644c49..32bcf5821ea9 100644
--- a/drivers/firmware/arm_scmi/power.c
+++ b/drivers/firmware/arm_scmi/power.c
@@ -184,7 +184,7 @@ static char *scmi_power_name_get(const struct scmi_handle *handle, u32 domain)
 	return dom->name;
 }
 
-static struct scmi_power_ops power_ops = {
+static const struct scmi_power_ops power_ops = {
 	.num_domains_get = scmi_power_num_domains_get,
 	.name_get = scmi_power_name_get,
 	.state_set = scmi_power_state_set,
diff --git a/drivers/firmware/arm_scmi/reset.c b/drivers/firmware/arm_scmi/reset.c
index 3691bafca057..4e2dc5fc43d9 100644
--- a/drivers/firmware/arm_scmi/reset.c
+++ b/drivers/firmware/arm_scmi/reset.c
@@ -194,7 +194,7 @@ scmi_reset_domain_deassert(const struct scmi_handle *handle, u32 domain)
 	return scmi_domain_reset(handle, domain, 0, ARCH_COLD_RESET);
 }
 
-static struct scmi_reset_ops reset_ops = {
+static const struct scmi_reset_ops reset_ops = {
 	.num_domains_get = scmi_reset_num_domains_get,
 	.name_get = scmi_reset_name_get,
 	.latency_get = scmi_reset_latency_get,
diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c
index 1af0ad362e82..7d83680198de 100644
--- a/drivers/firmware/arm_scmi/sensors.c
+++ b/drivers/firmware/arm_scmi/sensors.c
@@ -275,7 +275,7 @@ static int scmi_sensor_count_get(const struct scmi_handle *handle)
 	return si->num_sensors;
 }
 
-static struct scmi_sensor_ops sensor_ops = {
+static const struct scmi_sensor_ops sensor_ops = {
 	.count_get = scmi_sensor_count_get,
 	.info_get = scmi_sensor_info_get,
 	.trip_point_config = scmi_sensor_trip_point_config,
diff --git a/drivers/firmware/arm_scmi/smc.c b/drivers/firmware/arm_scmi/smc.c
index a1537d123e38..1a03c3ec0230 100644
--- a/drivers/firmware/arm_scmi/smc.c
+++ b/drivers/firmware/arm_scmi/smc.c
@@ -137,7 +137,7 @@ smc_poll_done(struct scmi_chan_info *cinfo, struct scmi_xfer *xfer)
 	return shmem_poll_done(scmi_info->shmem, xfer);
 }
 
-static struct scmi_transport_ops scmi_smc_ops = {
+static const struct scmi_transport_ops scmi_smc_ops = {
 	.chan_available = smc_chan_available,
 	.chan_setup = smc_chan_setup,
 	.chan_free = smc_chan_free,
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  2020-09-06 23:04 ` [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers Rikard Falkeborn
@ 2020-09-07 10:22   ` Sudeep Holla
  2020-09-07 10:25     ` Viresh Kumar
  0 siblings, 1 reply; 9+ messages in thread
From: Sudeep Holla @ 2020-09-07 10:22 UTC (permalink / raw)
  To: Rikard Falkeborn
  Cc: linux-arm-kernel, linux-pm, linux-kernel, Rafael J. Wysocki,
	Sudeep Holla, Viresh Kumar

Hi Viresh,

On Mon, Sep 07, 2020 at 01:04:50AM +0200, Rikard Falkeborn wrote:
> The perf_ops are not modified through this pointer. Make them const to
> indicate that. This is in preparation to make the scmi-ops pointers in
> scmi_handle const.
>

Your ack needed to take this as series via {arm-,}soc

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  2020-09-07 10:22   ` Sudeep Holla
@ 2020-09-07 10:25     ` Viresh Kumar
  2020-09-07 10:44       ` Sudeep Holla
  0 siblings, 1 reply; 9+ messages in thread
From: Viresh Kumar @ 2020-09-07 10:25 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: Rikard Falkeborn, linux-arm-kernel, linux-pm, linux-kernel,
	Rafael J. Wysocki

On 07-09-20, 11:22, Sudeep Holla wrote:
> Hi Viresh,
> 
> On Mon, Sep 07, 2020 at 01:04:50AM +0200, Rikard Falkeborn wrote:
> > The perf_ops are not modified through this pointer. Make them const to
> > indicate that. This is in preparation to make the scmi-ops pointers in
> > scmi_handle const.
> >
> 
> Your ack needed to take this as series via {arm-,}soc

Can I just pick the first patch and you do the rest ? Will it result
in any warnings at either end ?

-- 
viresh

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  2020-09-07 10:25     ` Viresh Kumar
@ 2020-09-07 10:44       ` Sudeep Holla
  2020-09-07 10:46         ` Viresh Kumar
  0 siblings, 1 reply; 9+ messages in thread
From: Sudeep Holla @ 2020-09-07 10:44 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Rikard Falkeborn, linux-arm-kernel, linux-pm, linux-kernel,
	Sudeep Holla, Rafael J. Wysocki

On Mon, Sep 07, 2020 at 03:55:51PM +0530, Viresh Kumar wrote:
> On 07-09-20, 11:22, Sudeep Holla wrote:
> > Hi Viresh,
> >
> > On Mon, Sep 07, 2020 at 01:04:50AM +0200, Rikard Falkeborn wrote:
> > > The perf_ops are not modified through this pointer. Make them const to
> > > indicate that. This is in preparation to make the scmi-ops pointers in
> > > scmi_handle const.
> > >
> >
> > Your ack needed to take this as series via {arm-,}soc
>
> Can I just pick the first patch and you do the rest ? Will it result
> in any warnings at either end ?
>

Initially I thought out suggesting the same, but then I realised(not
checked though), without this change in arm-soc the scmi-cpufreq driver
might produce warnings as the const value gets assigned to non const.
No ?

--
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
  2020-09-07 10:44       ` Sudeep Holla
@ 2020-09-07 10:46         ` Viresh Kumar
  0 siblings, 0 replies; 9+ messages in thread
From: Viresh Kumar @ 2020-09-07 10:46 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: Rikard Falkeborn, linux-arm-kernel, linux-pm, linux-kernel,
	Rafael J. Wysocki

On 07-09-20, 11:44, Sudeep Holla wrote:
> On Mon, Sep 07, 2020 at 03:55:51PM +0530, Viresh Kumar wrote:
> > On 07-09-20, 11:22, Sudeep Holla wrote:
> > > Hi Viresh,
> > >
> > > On Mon, Sep 07, 2020 at 01:04:50AM +0200, Rikard Falkeborn wrote:
> > > > The perf_ops are not modified through this pointer. Make them const to
> > > > indicate that. This is in preparation to make the scmi-ops pointers in
> > > > scmi_handle const.
> > > >
> > >
> > > Your ack needed to take this as series via {arm-,}soc
> >
> > Can I just pick the first patch and you do the rest ? Will it result
> > in any warnings at either end ?
> >
> 
> Initially I thought out suggesting the same, but then I realised(not
> checked though), without this change in arm-soc the scmi-cpufreq driver
> might produce warnings as the const value gets assigned to non const.
> No ?

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle
  2020-09-06 23:04 [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Rikard Falkeborn
                   ` (2 preceding siblings ...)
  2020-09-06 23:04 ` [PATCH 3/3] firmware: arm_scmi: Constify static scmi-ops Rikard Falkeborn
@ 2020-09-08 12:51 ` Sudeep Holla
  3 siblings, 0 replies; 9+ messages in thread
From: Sudeep Holla @ 2020-09-08 12:51 UTC (permalink / raw)
  To: Rikard Falkeborn, linux-pm, linux-arm-kernel, linux-kernel
  Cc: Sudeep Holla, Viresh Kumar, Rafael J. Wysocki

On Mon, 7 Sep 2020 01:04:49 +0200, Rikard Falkeborn wrote:
> A small patch series aiming to constify static scmi_*_ops structs in
> drivers/firmware/arm_scmi. Since these are not modified, constify them
> to allow the compiler to put them in read-only memory.
> 
> Rikard Falkeborn (3):
>   cpufreq: arm_scmi: Constify scmi_perf_ops pointers
>   firmware: arm_scmi: Constify ops pointers in scmi_handle
>   firmware: arm_scmi: Constify static scmi-ops
> 
> [...]


Applied to sudeep.holla/linux (for-next/scmi), thanks!

[1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers
      https://git.kernel.org/sudeep.holla/c/69ecb3230b
[2/3] firmware: arm_scmi: Constify ops pointers in scmi_handle
      https://git.kernel.org/sudeep.holla/c/82894c1d39
[3/3] firmware: arm_scmi: Constify static scmi-ops
      https://git.kernel.org/sudeep.holla/c/3de7b83017

--

Regards,
Sudeep


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-09-08 16:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-06 23:04 [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Rikard Falkeborn
2020-09-06 23:04 ` [PATCH 1/3] cpufreq: arm_scmi: Constify scmi_perf_ops pointers Rikard Falkeborn
2020-09-07 10:22   ` Sudeep Holla
2020-09-07 10:25     ` Viresh Kumar
2020-09-07 10:44       ` Sudeep Holla
2020-09-07 10:46         ` Viresh Kumar
2020-09-06 23:04 ` [PATCH 2/3] firmware: arm_scmi: Constify ops pointers in scmi_handle Rikard Falkeborn
2020-09-06 23:04 ` [PATCH 3/3] firmware: arm_scmi: Constify static scmi-ops Rikard Falkeborn
2020-09-08 12:51 ` [PATCH 0/3] arm_scmi: Constify ops pointers in struct scmi_handle Sudeep Holla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).