[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251227164132.1311988-1-cristian.marussi@arm.com>
Date: Sat, 27 Dec 2025 16:41:30 +0000
From: Cristian Marussi <cristian.marussi@....com>
To: linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
arm-scmi@...r.kernel.org
Cc: sudeep.holla@....com,
philip.radford@....com,
peng.fan@....nxp.com,
Cristian Marussi <cristian.marussi@....com>
Subject: [PATCH 0/2] Rework protocol version negotiation core logic
Hi,
this small series rectifies the protocol negotiation logic employed by the
core SCMI stack when trying to cope with newer unknown protocol versions
advertised by the platform under any circumstances.
The existing protocol negotiation logic per-se was fine, but unfortunately
the whole negotiation process was started at the end of the per-protocol
initialization phase since it relies on the version querying performed by
each protocol initialization logic.
Unfortunately, this means that if the protocol initialization failed
upfront as a whole, maybe exactly due to version incompatibilities, the
negotiation itself will never be started, effectively failing to negotiate
a better version in the exact scenario where negotiation would be mostly
needed.
This series simply moves the version_get query process out of the single
protocol units and delegates to the core SCMI stack the whole procedure:
this way, the supported protocol version querying and any further needed
negotiation exchanges are performed by the core SCMI stack right before
the start of the protocol initialization phase: as a consequence the
protocol initialization phase will now be performed using the appropriate
protocol version as negotiated in advance, when needed.
As a consequence per-protocol versioning code is considerably simplified.
Based on v6.19-rc2.
Any feedback, as usual, it is very much welcome.
Thanks,
Cristian
Cristian Marussi (2):
firmware: arm_scmi: Rework protocol version negotiation logic
firmware: arm_scmi: Remove legacy protocol versioning logic
drivers/firmware/arm_scmi/base.c | 11 +--
drivers/firmware/arm_scmi/clock.c | 24 ++---
drivers/firmware/arm_scmi/driver.c | 98 +++++++++++++++----
drivers/firmware/arm_scmi/perf.c | 57 ++++-------
drivers/firmware/arm_scmi/pinctrl.c | 12 +--
drivers/firmware/arm_scmi/power.c | 18 +---
drivers/firmware/arm_scmi/powercap.c | 21 ++--
drivers/firmware/arm_scmi/protocols.h | 9 +-
drivers/firmware/arm_scmi/reset.c | 18 +---
drivers/firmware/arm_scmi/sensors.c | 22 ++---
drivers/firmware/arm_scmi/system.c | 14 +--
.../arm_scmi/vendors/imx/imx-sm-bbm.c | 10 +-
.../arm_scmi/vendors/imx/imx-sm-cpu.c | 9 +-
.../arm_scmi/vendors/imx/imx-sm-lmm.c | 9 +-
.../arm_scmi/vendors/imx/imx-sm-misc.c | 10 +-
drivers/firmware/arm_scmi/voltage.c | 13 +--
16 files changed, 153 insertions(+), 202 deletions(-)
--
2.52.0
Powered by blists - more mailing lists