Re: [PATCH v2 3/8] fwctl: FWCTL_INFO to return basic information about the device
From: Jason Gunthorpe <jgg@nvidia.com>
Date: 2024-07-29 17:04:26
Also in:
linux-cxl, linux-doc, linux-patches, linux-rdma
On Fri, Jul 26, 2024 at 04:15:03PM +0100, Jonathan Cameron wrote:
On Mon, 24 Jun 2024 19:47:27 -0300 Jason Gunthorpe [off-list ref] wrote:quoted
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.
quoted
static dev_t fwctl_dev; static DEFINE_IDA(fwctl_ida); +DEFINE_FREE(kfree_errptr, void *, if (!IS_ERR_OR_NULL(_T)) kfree(_T));Why need for a new one? That's the same as the one in slab.h from 6.9 onwards. Before that it was if (_T) I was going to suggest promoting this to slab.h and then found the normal implementation had been improved since I last checked.
Same, now it is improved it can go away.
quoted
+/** + * struct fwctl_info - ioctl(FWCTL_INFO) + * @size: sizeof(struct fwctl_info) + * @flags: Must be 0 + * @out_device_type: Returns the type of the device from enum fwctl_device_typeMaybe a UUID? Avoid need to synchronize that list for ever.quoted
+ * @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 Jason