Re: [patch 02/37] device: Add device::msi_data pointer and struct msi_device_data

From: Jason Gunthorpe
Date: Sat Nov 27 2021 - 19:16:15 EST


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