search for: virtq_enable_used_buffer_notif

Displaying 4 results from an estimated 4 matches for "virtq_enable_used_buffer_notif".

2018 Dec 17
1
kernel vhost demands an interrupt from guest when the ring is full in order to enable guest to submit new packets to the queue
...the ring and reenabling no- tifications. This is usually handled by re-checking for more used buffers after notifications are re- enabled: virtq_disable_used_buffer_notifications(vq); for (;;) { if (vq->last_seen_used != le16_to_cpu(virtq->used.idx)) { virtq_enable_used_buffer_notifications(vq); mb(); if (vq->last_seen_used != le16_to_cpu(virtq->used.idx)) break; virtq_disable_used_buffer_notifications(vq); } struct virtq_used_elem *e = virtq.used->ring[vq->last_seen_used%vsz]; process_buffer(e); vq->last_seen...
2018 Dec 13
2
kernel vhost demands an interrupt from guest when the ring is full in order to enable guest to submit new packets to the queue
Folks, We came across a memory race condition between VPP vhost driver and the kernel vhost. VPP is running a tap interface over vhost backend. In this case, VPP is acting as the vhost driver mode and the kernel vhost is acting as the vhost device mode. In the kernel vhost?s TX traffic direction which is VPP?s RX traffic direction, kernel vhost is the producer and VPP is the consumer. Kernel
2018 Dec 13
2
kernel vhost demands an interrupt from guest when the ring is full in order to enable guest to submit new packets to the queue
Folks, We came across a memory race condition between VPP vhost driver and the kernel vhost. VPP is running a tap interface over vhost backend. In this case, VPP is acting as the vhost driver mode and the kernel vhost is acting as the vhost device mode. In the kernel vhost?s TX traffic direction which is VPP?s RX traffic direction, kernel vhost is the producer and VPP is the consumer. Kernel
2018 Dec 17
0
kernel vhost demands an interrupt from guest when the ring is full in order to enable guest to submit new packets to the queue
...ifications between emptying the ring and reenabling no- tifications. This is usually handled by re-checking for more used buffers after notifications are re- enabled: virtq_disable_used_buffer_notifications(vq); for (;;) { if (vq->last_seen_used != le16_to_cpu(virtq->used.idx)) { virtq_enable_used_buffer_notifications(vq); mb(); if (vq->last_seen_used != le16_to_cpu(virtq->used.idx)) break; virtq_disable_used_buffer_notifications(vq); } struct virtq_used_elem *e = virtq.used->ring[vq->last_seen_used%vsz]; process_buffer(e); vq->last_seen_used++; > > > St...