[bug report] firmware: arm_scmi: Add per-channel Raw injection support

Cristian Marussi cristian.marussi at arm.com
Wed Jan 18 04:26:45 PST 2023


On Tue, Jan 17, 2023 at 02:49:31PM +0000, Matthew Wilcox wrote:
> On Tue, Jan 17, 2023 at 02:30:43PM +0000, Cristian Marussi wrote:
> > >     1118                         ret = idr_alloc(&raw->queues_idr, q,
> > >     1119                                         channels[i], channels[i] + 1,
> > >     1120                                         GFP_KERNEL);
> > >     1121                         if (ret != channels[i])
> > >     1122                                 dev_err(dev,
> > >     1123                                         "Fail to allocate Raw queue 0x%02X\n",
> > >     1124                                         channels[i]);
> > > 
> > > Heh.  I've never seen anyone use an IDR range of one value before...
> > 
> > Well, the choice was between wasting an hashtable or a radix-tree IDR for a
> > few mapping channel--->q and I went for the 1-range IDR which is already
> > used in SCMI stack to map various refs to channel numbers.
> > (I avoid in general to put a simple plain 256 array on the stack that can
> > lead to stack-size issues especially while compiling on armv7)
> 
> The "range of one" idiom is fairly frequently used, but generally it is
> an indication that you want to use the XArray API instead of the IDR API,
> which is deprecated in any case.
> 
> I've given up tilting at that windmill as I'm more concerned with the
> folio work, but it'd be nice if you could convert from IDR to XArray here.

Hi,

thanks for the hint Matthew, never used XArrays till now.

I'll reworked the above with XArray in:

https://lore.kernel.org/linux-arm-kernel/20230118121426.492864-17-cristian.marussi@arm.com/T/#u

Thanks,
Cristian



More information about the linux-arm-kernel mailing list