[PATCH v12 02/25] firmware: arm_scmi: Allow registration of unknown-size events/reports

David Hildenbrand (Arm) david at kernel.org
Tue Sep 22 06:15:55 PDT 2026


On 9/20/26 11:19, Cristian Marussi wrote:
> Allow protocols to register events with build-time unknown sizes: such
> events can be declared zero-sized and let the core SCMI stack perform the
> needed safe-net boundary checks based on the configured transport size.

ok, so we have a maximum message size defined by the transport. We'll use that
as payload size, and the report size just gets the additional ktime_t.


>  	pd = scmi_allocate_registered_events_desc(ni, proto_id, ee->queue_sz,
> @@ -807,7 +821,8 @@ int scmi_register_protocol_events(const struct scmi_handle *handle, u8 proto_id,
>  		mutex_init(&r_evt->sources_mtx);
>  
>  		r_evt->report = devm_kzalloc(ni->handle->dev,
> -					     evt->max_report_sz, GFP_KERNEL);
> +					     evt->max_report_sz ?: max_report_sz,

Having two similarly named variables is a bit confusing. I wonder if you can
somehow make it clearer in the latter case that it is the max_report_sz
according to the transport.

> +					     GFP_KERNEL);
>  		if (!r_evt->report)
>  			return -ENOMEM;
>  
> diff --git a/drivers/firmware/arm_scmi/notify.h b/drivers/firmware/arm_scmi/notify.h
> index f18f98c5ab3b..c2eb4844c7db 100644
> --- a/drivers/firmware/arm_scmi/notify.h
> +++ b/drivers/firmware/arm_scmi/notify.h
> @@ -18,8 +18,12 @@
>  /**
>   * struct scmi_event  - Describes an event to be supported
>   * @id: Event ID
> - * @max_payld_sz: Max possible size for the payload of a notification message
> - * @max_report_sz: Max possible size for the report of a notification message
> + * @max_payld_sz: Max possible size for the payload of a notification message.
> + *		  Set to zero to use the maximum payload size allowed by the
> + *		  transport.

"maximum payload size" is ph->hops->get_max_msg_size(ph) ? Should we call this
"maximum message size" then?

> + * @max_report_sz: Max possible size for the report of a notification message.
> + *		   Set to zero to use the maximum payload size allowed by the
> + *		   transport plus the additional ktime_t timestamp.

Same here.

-- 
Cheers,

David



More information about the linux-arm-kernel mailing list