lkml.org 
[lkml]   [2018]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH net-next v1 4/5] virtio_ring: add event idx support in packed ring
    From
    Date


    On 2018年07月09日 15:22, Tiwei Bie wrote:
    > @@ -1059,9 +1059,19 @@ static bool virtqueue_kick_prepare_packed(struct virtqueue *_vq)
    > * suppressions. */
    > virtio_mb(vq->weak_barriers);
    >
    > + old = vq->next_avail_idx - vq->num_added;
    > + new = vq->next_avail_idx;
    > + vq->num_added = 0;
    > +
    > snapshot = *(u32 *)vq->vring_packed.device;

    I think we should use READ_ONCE() to prevent compiler from re-reading.

    > + off_wrap = virtio16_to_cpu(_vq->vdev, (__virtio16)(snapshot & 0xffff));
    > flags = virtio16_to_cpu(_vq->vdev, (__virtio16)(snapshot >> 16)) & 0x3;
    >
    > + wrap_counter = off_wrap >> 15;
    > + event_idx = off_wrap & ~(1 << 15);
    > + if (wrap_counter != vq->avail_wrap_counter)
    > + event_idx -= vq->vring_packed.num;

    Thanks

    \
     
     \ /
      Last update: 2018-07-10 07:51    [W:3.061 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site