Re: [PATCH v2 08/13] firmware: arm_scmi: Harden clock protocol initialization
From: Cristian Marussi <cristian.marussi@arm.com>
Date: 2026-03-30 05:54:32
Also in:
arm-scmi, linux-clk, linux-renesas-soc, lkml
On Thu, Mar 26, 2026 at 09:55:18AM +0100, Alexander Stein wrote:
Hi,
Hi,
Am Mittwoch, 25. März 2026, 13:27:48 CET schrieb Cristian Marussi:quoted
On Wed, Mar 25, 2026 at 12:02:41PM +0100, Marek Szyprowski wrote:quoted
On 10.03.2026 19:40, Cristian Marussi wrote:quoted
Add proper error handling on failure to enumerate clocks features or rates. Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>Hi Marek,quoted
This patch landed yesterday in linux-next as commit 0d8b0c8068a8 ("firmware: arm_scmi: Harden clock protocol initialization"). In my tests I found that it causes a regression on RK3568 Odroid-M1 board (arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts), cpufreq and GPU device are not probed properly: # dmesg | grep scmi scmi_core: SCMI protocol bus registered arm-scmi arm-scmi.0.auto: Using scmi_smc_transport arm-scmi arm-scmi.0.auto: SCMI max-rx-timeout: 30ms / max-msg-size: 104bytes / max-msg: 20 scmi_protocol scmi_dev.1: Enabled polling mode TX channel - prot_id:16 arm-scmi arm-scmi.0.auto: SCMI Notifications - Core Enabled. arm-scmi arm-scmi.0.auto: Malformed reply - real_sz:8 calc_sz:4 (loop_num_ret:1) arm-scmi arm-scmi.0.auto: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0 arm-scmi arm-scmi.0.auto: Enabling SCMI Quirk [quirk_clock_rates_triplet_out_of_spec] scmi-clocks scmi_dev.3: probe with driver scmi-clocks failed with error -22Yes there are multiple reports of issues on this hardening, the series is on hold and wont go into v7.1 as of now...it needs some basic fixes and various quirks probably to address non-compliant firmwares... It will be pushed to next again with a few more fixes in the coming days and then we'll need to figure out how many quirks will be needed on top of that and if it is acceptable at all...Just for the records: imx95 (maybe imx94 as well) is also affected by this. My board doesn't boot at all, because all the clocks are provided by SCMI.
Sorry for the late reply, thanks for the report...
quoted hunk ↗ jump to hunk
With this diff I can see it's the 'ext' clock -->8------ a/drivers/firmware/arm_scmi/clock.c +++ b/drivers/firmware/arm_scmi/clock.c@@ -1253,8 +1253,11 @@ static int scmi_clock_protocol_init(const struct scmi_protocol_handle *ph) for (clkid = 0; clkid < cinfo->num_clocks; clkid++) { cinfo->clkds[clkid].id = clkid; ret = scmi_clock_attributes_get(ph, clkid, cinfo); - if (ret) + if (ret) { + dev_warn(ph->dev, "scmi_clock_attributes_get failed for '%s': %d\n", + cinfo->clkds->info.name, ret); return ret; + } ret = scmi_clock_describe_rates_get(ph, clkid, cinfo); if (ret) -->8---quoted
arm-scmi arm-scmi.0.auto: scmi_clock_attributes_get failed for 'ext': -2 scmi-clocks scmi_dev.6: probe with driver scmi-clocks failed with error -2What's the idea of how to proceeed as apparently several platforms are affected?
The series is on hold of course due to some residual bugs and all of these reports of misbehaving firmwares...as I was saying elsewhere we dont want of course to break existing boards in the wild that will most probably never get a FW fix, BUT at the same time we do NOT want to legalise/normalize this out of spec behaviour by leaving the kernel code as it is...I mean at least we'd like to try to discourage this mis-implementations in the future FWs ... At the end, this could mean some quirks applied to multiple platforms and vendors and maybe some relaxation in the checks, certainly some noisy annoying logs on the side :P Thanks, Cristian