On Sat, Nov 27, 2021 at 02:20:09AM +0100, Thomas Gleixner wrote: > +/** > + * msi_setup_device_data - Setup MSI device data > + * @dev: Device for which MSI device data should be set up > + * > + * Return: 0 on success, appropriate error code otherwise > + * > + * This can be called more than once for @dev. If the MSI device data is > + * already allocated the call succeeds. The allocated memory is > + * automatically released when the device is destroyed. I would say 'by devres when the driver is removed' rather than device is destroyed - to me the latter implies it would happen at device_del or perhaps during release.. > +int msi_setup_device_data(struct device *dev) > +{ > + struct msi_device_data *md; > + > + if (dev->msi.data) > + return 0; > + > + md = devres_alloc(msi_device_data_release, sizeof(*md), GFP_KERNEL); > + if (!md) > + return -ENOMEM; > + > + raw_spin_lock_init(&md->lock); I also couldn't guess why this needed to be raw? Jason