From: Cristian Marussi <cristian.marussi@arm.com>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Cristian Marussi <cristian.marussi@arm.com>,
Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev,
Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH 2/5] firmware: arm_scmi: imx: Add i.MX95 CPU Protocol
Date: Wed, 22 Jan 2025 12:22:18 +0000 [thread overview]
Message-ID: <Z5Di-uU52aejU-U8@pluto> (raw)
In-Reply-To: <3b9a7392-8ebe-4d43-a111-68bb6d2f93b6@stanley.mountain>
On Wed, Jan 22, 2025 at 11:48:52AM +0300, Dan Carpenter wrote:
> On Tue, Jan 21, 2025 at 11:08:12PM +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > This protocol allows an agent to start, stop a CPU or set reset vector. It
> > is used to manage auxiliary CPUs in an LM (e.g. additional cores in an AP
> > cluster).
> >
Hi,
just a quick one down below.
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> > drivers/firmware/arm_scmi/vendors/imx/Kconfig | 13 +-
> > drivers/firmware/arm_scmi/vendors/imx/Makefile | 1 +
> > drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c | 283 +++++++++++++++++++++
> > include/linux/scmi_imx_protocol.h | 10 +
> > 4 files changed, 306 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/firmware/arm_scmi/vendors/imx/Kconfig b/drivers/firmware/arm_scmi/vendors/imx/Kconfig
> > index 1a936fc87d2350e2a21bccd45dfbeebfa3b90286..9070522510e4d3f3d7276a7581f8676006d20f90 100644
> > --- a/drivers/firmware/arm_scmi/vendors/imx/Kconfig
> > +++ b/drivers/firmware/arm_scmi/vendors/imx/Kconfig
> > @@ -12,6 +12,17 @@ config IMX_SCMI_BBM_EXT
> > To compile this driver as a module, choose M here: the
> > module will be called imx-sm-bbm.
> >
> > +config IMX_SCMI_CPU_EXT
> > + tristate "i.MX SCMI CPU EXTENSION"
> > + depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
> > + default y if ARCH_MXC
> > + help
> > + This enables i.MX System CPU Protocol to manage cpu
> > + start, stop and etc.
> > +
> > + To compile this driver as a module, choose M here: the
> > + module will be called imx-sm-cpu.
> > +
> > config IMX_SCMI_LMM_EXT
> > tristate "i.MX SCMI LMM EXTENSION"
> > depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
> > @@ -21,7 +32,7 @@ config IMX_SCMI_LMM_EXT
> > manage Logical Machines boot, shutdown and etc.
> >
> > To compile this driver as a module, choose M here: the
> > - module will be called imx-sm-lmm.
> > + module will be called imx-sm-cpu.
> >
>
> It's supposed to be called imx-sm-lmm.
>
> > config IMX_SCMI_MISC_EXT
> > tristate "i.MX SCMI MISC EXTENSION"
> > diff --git a/drivers/firmware/arm_scmi/vendors/imx/Makefile b/drivers/firmware/arm_scmi/vendors/imx/Makefile
> > index f39a99ccaf9af757475e8b112d224669444d7ddc..e3a5ea46345c89da1afae25e55698044672b7c28 100644
> > --- a/drivers/firmware/arm_scmi/vendors/imx/Makefile
> > +++ b/drivers/firmware/arm_scmi/vendors/imx/Makefile
> > @@ -1,4 +1,5 @@
> > # SPDX-License-Identifier: GPL-2.0-only
> > obj-$(CONFIG_IMX_SCMI_BBM_EXT) += imx-sm-bbm.o
> > +obj-$(CONFIG_IMX_SCMI_CPU_EXT) += imx-sm-cpu.o
> > obj-$(CONFIG_IMX_SCMI_LMM_EXT) += imx-sm-lmm.o
> > obj-$(CONFIG_IMX_SCMI_MISC_EXT) += imx-sm-misc.o
> > diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..e3f294c2cb69a5b5a916d55984f4a63539937d02
> > --- /dev/null
> > +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c
> > @@ -0,0 +1,283 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * System control and Management Interface (SCMI) NXP CPU Protocol
> > + *
> > + * Copyright 2025 NXP
> > + */
> > +
> > +#include <linux/bits.h>
> > +#include <linux/io.h>
> > +#include <linux/module.h>
> > +#include <linux/of.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/scmi_protocol.h>
> > +#include <linux/scmi_imx_protocol.h>
> > +
> > +#include "../../protocols.h"
> > +#include "../../notify.h"
> > +
> > +#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x10000
> > +
> > +enum scmi_imx_cpu_protocol_cmd {
> > + SCMI_IMX_CPU_ATTRIBUTES = 0x3,
> > + SCMI_IMX_CPU_START = 0x4,
> > + SCMI_IMX_CPU_STOP = 0x5,
> > + SCMI_IMX_CPU_RESET_VECTOR_SET = 0x6,
> > + SCMI_IMX_CPU_INFO_GET = 0xC,
> > +};
> > +
> > +struct scmi_imx_cpu_info {
> > + u32 nr_cpu;
> > +};
> > +
> > +#define SCMI_IMX_CPU_PROTO_ATTR_NUM_CPUS(x) ((x) & 0xFFFF)
> > +struct scmi_msg_imx_cpu_protocol_attributes {
> > + __le32 attributes;
> > +};
> > +
> > +struct scmi_msg_imx_cpu_attributes_out {
> > + __le32 attributes;
> > +#define CPU_MAX_NAME 16
> > + u8 name[CPU_MAX_NAME];
>
> char is always unsigned in the kernel these days but strings should
> still always be char. Same thing in patch 1, there were a couple u8
> names.
>
While it is certainly true that char is the way to go for strings and, as
such, it is used elsewhere to hold the resource names across all SCMI
protocols, in this context it is a field of structure representing
exactly the layout of message reply coming from the server, and defined
in the SCMI spec as a uint8 array, so, we have generally preferred to
used u8 to represent such fixed size array all across the SCMI stack
protocols implementation....
.... not saying that it is necessarily completelt right, but that is the
reason we are guilty :D
Thanks,
Cristian
next prev parent reply other threads:[~2025-01-22 12:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-21 15:08 [PATCH 0/5] firmware: scmi/imx: Add i.MX95 LMM/CPU Protocol Peng Fan (OSS)
2025-01-21 15:08 ` [PATCH 1/5] firmware: arm_scmi: imx: Add i.MX95 LMM protocol Peng Fan (OSS)
2025-01-24 2:43 ` kernel test robot
2025-01-21 15:08 ` [PATCH 2/5] firmware: arm_scmi: imx: Add i.MX95 CPU Protocol Peng Fan (OSS)
2025-01-22 8:48 ` Dan Carpenter
2025-01-22 12:22 ` Cristian Marussi [this message]
2025-01-22 12:41 ` Dan Carpenter
2025-01-22 12:55 ` Cristian Marussi
2025-01-22 13:59 ` Sudeep Holla
2025-01-24 4:11 ` kernel test robot
2025-01-21 15:08 ` [PATCH 3/5] firmware: arm_scmi: imx: Add LMM and CPU documentation Peng Fan (OSS)
2025-01-22 12:14 ` Sudeep Holla
2025-01-23 1:30 ` Peng Fan
2025-02-25 10:21 ` Sudeep Holla
2025-02-25 12:42 ` Peng Fan
2025-02-25 11:49 ` Sudeep Holla
2025-02-26 3:11 ` Peng Fan
2025-01-21 15:08 ` [PATCH 4/5] firmware: imx: Add i.MX95 SCMI LMM driver Peng Fan (OSS)
2025-01-21 15:08 ` [PATCH 5/5] firmware: imx: Add i.MX95 SCMI CPU driver Peng Fan (OSS)
2025-01-21 15:31 ` [PATCH 0/5] firmware: scmi/imx: Add i.MX95 LMM/CPU Protocol Cristian Marussi
2025-01-22 5:31 ` Peng Fan
2025-01-25 1:00 ` Peng Fan
2025-02-06 2:40 ` Peng Fan
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=Z5Di-uU52aejU-U8@pluto \
--to=cristian.marussi@arm.com \
--cc=arm-scmi@vger.kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peng.fan@nxp.com \
--cc=peng.fan@oss.nxp.com \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=sudeep.holla@arm.com \
/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 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).