[PATCH v5 1/5] drivers/raw: introduce AFU raw device driver

Stephen Hemminger stephen at networkplumber.org
Mon Jun 6 17:38:21 CEST 2022


On Fri, 27 May 2022 01:37:00 -0400
Wei Huang <wei.huang at intel.com> wrote:

> +static inline int afu_mf_trylock(struct afu_mf_rawdev *dev)
> +{
> +	int32_t x = 0;
> +
> +	if (!dev || !dev->shared)
> +		return -ENODEV;
> +
> +	x = __atomic_load_n(&dev->shared->lock, __ATOMIC_RELAXED);
> +
> +	if ((x != 0) || (__atomic_compare_exchange_n(&dev->shared->lock, &x, 1,
> +				1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED) == 0))
> +		return -EBUSY;
> +
> +	return 0;
> +}
> +
> +static inline void afu_mf_unlock(struct afu_mf_rawdev *dev)
> +{
> +	if (!dev || !dev->shared)
> +		return;
> +
> +	__atomic_store_n(&dev->shared->lock, 0, __ATOMIC_RELEASE);
> +}

What other subsystem is this shared with?
Is there a good reason it can't just use existing spinlock?


More information about the stable mailing list