On Wed, Feb 26, 2025 at 12:31:27PM +0300, Dan Carpenter wrote: > On Wed, Feb 26, 2025 at 09:55:21AM +0100, Johan Hovold wrote: > > On Wed, Feb 26, 2025 at 09:12:23AM +0100, Johan Hovold wrote: > > > On Wed, Feb 26, 2025 at 08:13:38AM +0530, Sibi Sankar wrote: > > > > > > scmi_common_fastchannel_init(const struct scmi_protocol_handle *ph, > > > > u8 describe_id, u32 message_id, u32 valid_size, > > > > u32 domain, void __iomem **p_addr, > > > > - struct scmi_fc_db_info **p_db, u32 *rate_limit) > > > > + struct scmi_fc_db_info **p_db, u32 *rate_limit, > > > > + bool skip_check) > > > > > > This does not look like it will scale. > > > > After taking a closer look, perhaps it needs to be done along these > > lines. > > > > But calling the parameter 'force' or similar as Dan suggested should > > make it more readable. > > > > > > { > > > > int ret; > > > > u32 flags; > > > > @@ -1919,7 +1920,7 @@ scmi_common_fastchannel_init(const struct scmi_protocol_handle *ph, > > > > > > > > /* Check if the MSG_ID supports fastchannel */ > > > > ret = scmi_protocol_msg_check(ph, message_id, &attributes); > > > > - if (!ret && !MSG_SUPPORTS_FASTCHANNEL(attributes)) > > > > + if (!ret && !MSG_SUPPORTS_FASTCHANNEL(attributes) && !skip_check) > > > > > > Why can't you just make sure that the bit is set in attributes as I > > > suggested? That seems like it should allow for a minimal implementation > > > of this. > > > > My idea here was that you could come up with some way of abstracting > > this so that you did not have to update every call site. Not sure how > > feasible that is. > > I'm having a hard time finding your email. https://lore.kernel.org/lkml/Z4Dt8E7C6upVtEGV@xxxxxxxxxxxxxxxxxxxx/ > Why does the scmi_proto_helpers_ops struct even exist? We could just > call all these functions directly. Do we have plans to actually create > different implementations? > > If we got rid of the scmi_proto_helpers_ops struct then we could just > rename scmi_common_fastchannel_init() to __scmi_common_fastchannel_init() > and create a default wrapper around it and a _forced() wrapper. > > Some other potentially stupid ideas in the spirit of brainstorming are > that we could add a quirks parameter which takes a flag instead of a > bool. Or we could add a quirks flag to the scmi_protocol_handle struct. Something like that, yes. :) I didn't try to implement it, but it seems like it should be possible implement this is a way that keeps the quirk handling isolated. Johan