[Patch v3 6/6] bus/vmbus: set event for channel without monitoring support
Stephen Hemminger
stephen at networkplumber.org
Sun Apr 6 18:08:53 CEST 2025
On Fri, 4 Apr 2025 17:35:38 -0700
longli at linuxonhyperv.com wrote:
> diff --git a/drivers/bus/vmbus/vmbus_channel.c b/drivers/bus/vmbus/vmbus_channel.c
> index bccef168d3..81e8096190 100644
> --- a/drivers/bus/vmbus/vmbus_channel.c
> +++ b/drivers/bus/vmbus/vmbus_channel.c
> @@ -24,6 +24,19 @@ vmbus_sync_set_bit(volatile RTE_ATOMIC(uint32_t) *addr, uint32_t mask)
> rte_atomic_fetch_or_explicit(addr, mask, rte_memory_order_seq_cst);
> }
>
> +static inline void
> +vmbus_send_interrupt(const struct rte_vmbus_device *dev, uint32_t relid)
> +{
> + RTE_ATOMIC(uint32_t) *int_addr;
> + uint32_t int_mask;
> +
> + int_addr = (RTE_ATOMIC(uint32_t)*) (dev->int_page + relid / 32);
> + int_mask = 1u << (relid % 32);
> + vmbus_sync_set_bit(int_addr, int_mask);
> +
> + vmbus_uio_irq_control(dev, 1);
> +}
> +
This part doesn't look right. RTE_ATOMIC() is just a macro to add the _Atomic attribute.
Can it be simplified like this?
static inline void
vmbus_sync_set_bit(RTE_ATOMIC(uint32_t *) addr, uint32_t mask)
{
rte_atomic_fetch_or_explicit(addr, mask, rte_memory_order_seq_cst);
}
static inline void
vmbus_send_interrupt(const struct rte_vmbus_device *dev, uint32_t relid)
{
RTE_ATOMIC(uint32_t *) int_addr;
uint32_t int_mask;
int_addr = dev->int_page + relid / 32;
int_mask = 1u << (relid % 32);
vmbus_sync_set_bit(int_addr, int_mask);
vmbus_uio_irq_control(dev, 1);
}
More information about the dev
mailing list