Re: [PATCH v2 03/17] firmware: arm_scmi: Allow protocols to register for notifications
From: Cristian Marussi <cristian.marussi@arm.com>
Date: 2026-01-19 15:49:32
Also in:
arm-scmi, linux-fsdevel, lkml
On Mon, Jan 19, 2026 at 11:33:26AM +0000, Jonathan Cameron wrote:
On Wed, 14 Jan 2026 11:46:07 +0000 Cristian Marussi [off-list ref] wrote:quoted
Allow protocols themselves to register for their own notifications andand provide their own notifier callbacks.quoted
providing their own notifier callbacks. While at that, allow for a protocol to register events with compilation-time unknown report/event sizes: such events will use the maximum transport size.I'm not keen on the 'while at that' part of the patch. In an ideal world that's a separate patch.
Yes indeed...it was tempting to do it together with the rework since it was the only usecase that triggered the 'while-at' change... ...but this series in general needs more splitting both at the protocol level and at the FS level (once I get some feedback from FS guys) so I will split this out too.
One other comment inline. Jonathan p.s. You get to my review victim whilst I run a particularly annoying bisection on the other screen (completely unrelated!) :)quoted
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> --- v1-->v2 - Fixed multiline comment format --- drivers/firmware/arm_scmi/common.h | 4 ++++ drivers/firmware/arm_scmi/driver.c | 12 ++++++++++++ drivers/firmware/arm_scmi/notify.c | 28 ++++++++++++++++++++------- drivers/firmware/arm_scmi/notify.h | 8 ++++++-- drivers/firmware/arm_scmi/protocols.h | 6 ++++++ 5 files changed, 49 insertions(+), 9 deletions(-)quoted
diff --git a/drivers/firmware/arm_scmi/notify.c b/drivers/firmware/arm_scmi/notify.c index 78e9e27dc9ec..e84b4dbefe82 100644 --- a/drivers/firmware/arm_scmi/notify.c +++ b/drivers/firmware/arm_scmi/notify.cquoted
@@ -779,8 +787,13 @@ int scmi_register_protocol_events(const struct scmi_handle *handle, u8 proto_id, } evt = ee->evts; - for (i = 0; i < ee->num_events; i++) + for (i = 0; i < ee->num_events; i++) { + if (evt[i].max_payld_sz == 0) { + payld_sz = max_msg_sz; + break; + } payld_sz = max_t(size_t, payld_sz, evt[i].max_payld_sz);Everything here seems to already be a size_t. It is rare that we actually need max_t over max, and definitely not when all the types match. payld_sz = max(payl_sz, evt[i].max_payld_sz);
...indeed...I will fix. Thanks, Cristian