On Thu, Apr 03, 2025 at 11:36:38AM -0500, Rob Herring wrote: > On Thu, Apr 3, 2025 at 11:15 AM Andy Shevchenko > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Thu, Apr 03, 2025 at 11:04:32AM -0500, Rob Herring wrote: > > > On Thu, Mar 27, 2025 at 3:41 AM Andy Shevchenko > > > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > > > On Wed, Mar 26, 2025 at 06:13:42PM +0100, Remo Senekowitsch wrote: > > > > > The rust bindings for reading device properties has a single > > > > > implementation supporting differing sizes of integers. The fwnode C API > > > > > already has a similar interface, but it is not exposed with the > > > > > fwnode_property_ API. Add the fwnode_property_read_int_array() wrapper. ... > > > > > +EXPORT_SYMBOL_GPL(fwnode_property_read_int_array); > > > > > > > > I'm not sure about this. We have a lot of assumptions in the code that the > > > > arrays beneath are only represented by the selected number of integer types. > > > > This opens a Pandora's box, e.g., reading in u24, which is not supported by > > > > the upper layers.. > > > > > > We can probably drop the export if it is just that which you object to. > > > > Yes, this is main point, but dropping it does not prevent from still using in > > the complied-in code. Is it possible to hide it better? > > Don't put any declaration in the header and declare it in the rust > code? But lack of declaration generates warnings. Exactly. And I believe we have the typed versions of int_array for a reason. Otherwise what's the point in having them to begin with? (The first what comes to my mind is a compile time type checking, so we don't try to load u8 with u32 data or any other dirty tricks.) Maybe it deserves a header that can be included explicitly in the rust stuff and being checked at compile time to avoid people using that? Can we achieve something like C preprocessor #ifndef FOO #error This header must not be included directly #endif > Also, all the backends will reject an arbitrary size. So your worry > about u24 or other odd sizes isn't really valid. But if you want to be > doubly paranoid for when we add a new firmware backend (shoot me now), > you could move this from the swnode implementation to the fwnode > implementation: > > if (!is_power_of_2(elem_size) || elem_size > sizeof(u64)) > return -ENXIO; That might work. But still an interface of int_array seems lower by level than typed ones. -- With Best Regards, Andy Shevchenko