Message ID | 20240409233942.828440-1-peter.colberg@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | fpga: dfl: fix kernel warning on port release/assign for SRIOV | expand |
On Tue, Apr 09, 2024 at 07:39:33PM -0400, Peter Colberg wrote: > DFL ports are registered as platform devices in PF mode. The port device > should be removed from the host when the user wants to configure the > port as a VF and pass through to a virtual machine. The FME device > ioctls DFL_FPGA_FME_PORT_RELEASE/ASSIGN are designed for this purpose. > > In the previous implementation, the port platform device is not completely > destroyed on port release: it is removed from the system by > platform_device_del(), but the platform device instance is retained. > When the port assign ioctl is called, the platform device is added back by > platform_device_add(), which conflicts with this comment of device_add(): > "Do not call this routine more than once for any device structure", and > will cause a kernel warning at runtime. > > This patch tries to completely unregister the port platform device on > release and registers a new one on assign. But the main work is to remove > the dependency on struct dfl_feature_platform_data for many internal DFL > APIs. This structure holds many DFL enumeration infos for feature devices. > Many DFL APIs are expected to work with these info even when the port > platform device is unregistered. But with the change the platform_data will > be freed in this case. So this patch introduces a new structure > dfl_feature_dev_data for these APIs, which acts similarly to the previous > dfl_feature_platform_data. The dfl_feature_platform_data then only needs a > pointer to dfl_feature_dev_data to make the feature device driver work. > > The single monolithic v1 patch is split into multiple, smaller patches > at the request of the maintainer. The first patch adds temporary macros > that alias dfl_feature_dev_data ("fdata") to dfl_feature_platform_data > ("pdata") and associated functions from the "fdata" to the corresponding > "pdata" variants. Subsequent patches separate out most of the symbol > name changes required by this patch series, one patch per file. The last One patch per file is not a requirement, simple replacement across multiple files won't cause trouble for reviewers. The important thing is that don't bury the key changes in these symbol replacement so that people can't get the point.
On Tue, 2024-04-23 at 16:27 +0800, Xu Yilun wrote: > On Tue, Apr 09, 2024 at 07:39:33PM -0400, Peter Colberg wrote: > > DFL ports are registered as platform devices in PF mode. The port device > > should be removed from the host when the user wants to configure the > > port as a VF and pass through to a virtual machine. The FME device > > ioctls DFL_FPGA_FME_PORT_RELEASE/ASSIGN are designed for this purpose. > > > > In the previous implementation, the port platform device is not completely > > destroyed on port release: it is removed from the system by > > platform_device_del(), but the platform device instance is retained. > > When the port assign ioctl is called, the platform device is added back by > > platform_device_add(), which conflicts with this comment of device_add(): > > "Do not call this routine more than once for any device structure", and > > will cause a kernel warning at runtime. > > > > This patch tries to completely unregister the port platform device on > > release and registers a new one on assign. But the main work is to remove > > the dependency on struct dfl_feature_platform_data for many internal DFL > > APIs. This structure holds many DFL enumeration infos for feature devices. > > Many DFL APIs are expected to work with these info even when the port > > platform device is unregistered. But with the change the platform_data will > > be freed in this case. So this patch introduces a new structure > > dfl_feature_dev_data for these APIs, which acts similarly to the previous > > dfl_feature_platform_data. The dfl_feature_platform_data then only needs a > > pointer to dfl_feature_dev_data to make the feature device driver work. > > > > The single monolithic v1 patch is split into multiple, smaller patches > > at the request of the maintainer. The first patch adds temporary macros > > that alias dfl_feature_dev_data ("fdata") to dfl_feature_platform_data > > ("pdata") and associated functions from the "fdata" to the corresponding > > "pdata" variants. Subsequent patches separate out most of the symbol > > name changes required by this patch series, one patch per file. The last > > One patch per file is not a requirement, simple replacement across > multiple files won't cause trouble for reviewers. The important thing is > that don't bury the key changes in these symbol replacement so that > people can't get the point. Thank you, in hindsight this should have been obvious. The v3 patch series now breaks the v1 patch into logical, self-contained patches. Thanks, Peter