On Tue, Jul 30, 2024 at 06:34:41PM +0100, Jonathan Cameron wrote: > On Mon, 29 Jul 2024 13:35:13 -0300 > Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > On Fri, Jul 26, 2024 at 04:15:03PM +0100, Jonathan Cameron wrote: > > > On Mon, 24 Jun 2024 19:47:27 -0300 > > > Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > > > > Userspace will need to know some details about the fwctl interface being > > > > used to locate the correct userspace code to communicate with the > > > > kernel. Provide a simple device_type enum indicating what the kernel > > > > driver is. > > > > > > As below - maybe consider a UUID? > > > Would let you decouple allocating those with upstreaming drivers. > > > We'll just get annoying races on the enum otherwise as multiple > > > drivers get upstreamed that use this. > > > > I view the coupling as a feature - controlling uABI number assignment > > is one of the subtle motivations the kernel community has typically > > used to encourage upstream participation. > > Hmm. I'm not sure it's worth the possible pain if this becomes > popular. Maybe you'll have to run a reservation hotline. As long as there is one tree things get sorted. We'd need a big scale of new drivers for this to be a practical problem. Big incentive for people to get their stuff merged before shipping it. :) > > > > + * @device_data_len: On input the length of the out_device_data memory. On > > > > + * output the size of the kernel's device_data which may be larger or > > > > + * smaller than the input. Maybe 0 on input. > > > > + * @out_device_data: Pointer to a memory of device_data_len bytes. Kernel will > > > > + * fill the entire memory, zeroing as required. > > > > > > Why do we need device in names of these two? > > > > I'm not sure I understand this question? > > > > out_device_type returns the "name" > > > > out_device_data returns a struct of data, the layout of the struct is > > defined by out_device_type > > What is device in this case? fwctl struct device, hardware device, something else? Oh, I see what you are asking.. fwctl is split into a common ABI and a "device" ABI which varies depending on the fwctl driver. So The labeling was to put "device" in front of those things that vary. Basically if you touch a "device" field you need a userspace driver that understands that device. Not sure it is worth to have an explicit naming, it is sort of a RDMAism creeping in where we called this concept "driver_data" Jason