Displaying 4 results from an estimated 4 matches for "virtq_used_elem".
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
...(;;) {
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++;
>
>
> Steven
>
> _______________________________________________
> Virtualization mailing list
> Virtualization at li...
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
..._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++;
>
>
> Steven
>
> _______________________________________________
> Virtualization mailing list
> Virtualization at lists.linux-foundation.org
> https://lists.linuxfou...