All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Peter Xu <peterx@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	dev@dpdk.org, Victor Kaplansky <vkaplans@redhat.com>
Subject: Re: [PATCH v2 3/6] vhost: log used vring changes
Date: Tue, 22 Dec 2015 15:13:49 +0800	[thread overview]
Message-ID: <20151222071349.GQ18863@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <20151222065552.GC7532@pxdev.xzpeter.org>

On Tue, Dec 22, 2015 at 02:55:52PM +0800, Peter Xu wrote:
> On Thu, Dec 17, 2015 at 11:11:58AM +0800, Yuanhan Liu wrote:
> > +static inline void __attribute__((always_inline))
> > +vhost_log_used_vring(struct virtio_net *dev, struct vhost_virtqueue *vq,
> > +		     uint64_t offset, uint64_t len)
> > +{
> 
> One thing optional: I feel it a little bit confusing regarding to
> the helper function name here, for the reasons:
> 
> 1. It more sounds like "logging all the vrings we used", however,
>    what I understand is that, here we are logging dirty pages for
>    guest memory. Or say, there is merely nothing to do directly with
>    vring (although many vring ops might call this function, we are
>    only passing [buf, len] pairs).
> 
> 2. It may also let people think of "vring_used", which is part of
>    virtio protocol. However, it does not mean it too.

Yes, it does. Here log_guest_addr is set to physical address of
vring_used. (check code at vhost_virtqueue_set_addr() of qemu).

     627 static int vhost_virtqueue_set_addr(struct vhost_dev *dev,
     628                                     struct vhost_virtqueue *vq,
     629                                     unsigned idx, bool enable_log)
     630 {
     631     struct vhost_vring_addr addr = {
     632         .index = idx,
     633         .desc_user_addr = (uint64_t)(unsigned long)vq->desc,
     634         .avail_user_addr = (uint64_t)(unsigned long)vq->avail,
     635         .used_user_addr = (uint64_t)(unsigned long)vq->used,
==>  636         .log_guest_addr = vq->used_phys,
     637         .flags = enable_log ? (1 << VHOST_VRING_F_LOG) : 0,
     638     };

So, this function does log changes to used vring.

> 
> I would suggest a better name without confusion, like
> vhost_log_dirty_range() or anything else to avoid those keywords.
> 
> > +	uint64_t addr;
> > +
> > +	addr = vq->log_guest_addr + offset;
> > +	vhost_log_write(dev, addr, len);
> 
> Optional too: since addr is only used once, would it cleaner using
> one line? Like:

Yes, it is. Will fix it.

> 
> vhost_log_write(dev, vq->log_guest_addr + offset, len);
> 
> > +}
> > +
> >  /**
> >   * This function adds buffers to the virtio devices RX virtqueue. Buffers can
> >   * be received from the physical port or from another virtio device. A packet
> > @@ -129,6 +139,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
> >  		uint32_t offset = 0, vb_offset = 0;
> >  		uint32_t pkt_len, len_to_cpy, data_len, total_copied = 0;
> >  		uint8_t hdr = 0, uncompleted_pkt = 0;
> > +		uint16_t idx;
> >  
> >  		/* Get descriptor from available ring */
> >  		desc = &vq->desc[head[packet_success]];
> > @@ -200,16 +211,18 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
> >  		}
> >  
> >  		/* Update used ring with desc information */
> > -		vq->used->ring[res_cur_idx & (vq->size - 1)].id =
> > -							head[packet_success];
> > +		idx = res_cur_idx & (vq->size - 1);
> > +		vq->used->ring[idx].id = head[packet_success];
> >  
> >  		/* Drop the packet if it is uncompleted */
> >  		if (unlikely(uncompleted_pkt == 1))
> > -			vq->used->ring[res_cur_idx & (vq->size - 1)].len =
> > -							vq->vhost_hlen;
> > +			vq->used->ring[idx].len = vq->vhost_hlen;
> >  		else
> > -			vq->used->ring[res_cur_idx & (vq->size - 1)].len =
> > -							pkt_len + vq->vhost_hlen;
> > +			vq->used->ring[idx].len = pkt_len + vq->vhost_hlen;
> > +
> > +		vhost_log_used_vring(dev, vq,
> > +			offsetof(struct vring_used, ring[idx]),
> > +			sizeof(vq->used->ring[idx]));
> 
> Got a question here:
> 
> I see that we are logging down changes when we are marking
> used_vring. Do we need to log down buffer copy in rte_memcpy() too?
> I am not sure whether I understand it correctly, it seems that this
> is part of DPDK API ops to deliver data to the guest (from, e.g.,
> OVS?), when we do rte_memcpy(), we seems to be modifying guest
> memory too. Am I wrong?

It's done in the next patch.

	--yliu

  parent reply	other threads:[~2015-12-22  7:12 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02  3:43 [PATCH 0/4 for 2.3] vhost-user live migration support Yuanhan Liu
2015-12-02  3:43 ` [PATCH 1/4] vhost: handle VHOST_USER_SET_LOG_BASE request Yuanhan Liu
2015-12-02 13:53   ` Panu Matilainen
2015-12-02 14:31     ` Yuanhan Liu
2015-12-02 14:48       ` Panu Matilainen
2015-12-02 15:09         ` Yuanhan Liu
2015-12-02 16:58           ` Panu Matilainen
2015-12-02 17:24             ` Michael S. Tsirkin
2015-12-02 16:38       ` Thomas Monjalon
2015-12-03  1:49         ` Yuanhan Liu
2015-12-06 23:07     ` Thomas Monjalon
2015-12-07  2:00       ` Yuanhan Liu
2015-12-07  2:03         ` Thomas Monjalon
2015-12-07  2:18           ` Yuanhan Liu
2015-12-07  2:49             ` Thomas Monjalon
2015-12-07  6:29       ` Panu Matilainen
2015-12-07 11:28         ` Thomas Monjalon
2015-12-07 11:41           ` Panu Matilainen
2015-12-07 13:55             ` Thomas Monjalon
2015-12-07 16:48               ` Panu Matilainen
2015-12-07 17:47                 ` Thomas Monjalon
2015-12-08  5:57   ` Xie, Huawei
2015-12-08  7:25     ` Yuanhan Liu
2015-12-02  3:43 ` [PATCH 2/4] vhost: introduce vhost_log_write Yuanhan Liu
2015-12-02 13:53   ` Victor Kaplansky
2015-12-02 14:39     ` Yuanhan Liu
2015-12-09  3:33     ` Xie, Huawei
2015-12-09  3:42       ` Yuanhan Liu
2015-12-09  5:44         ` Xie, Huawei
2015-12-09  8:41           ` Yuanhan Liu
2015-12-02  3:43 ` [PATCH 3/4] vhost: log vring changes Yuanhan Liu
2015-12-02 14:07   ` Victor Kaplansky
2015-12-02 14:38     ` Yuanhan Liu
2015-12-02 15:58       ` Victor Kaplansky
2015-12-02 16:26         ` Michael S. Tsirkin
2015-12-03  2:31           ` Yuanhan Liu
2015-12-09  2:45     ` Xie, Huawei
2015-12-02  3:43 ` [PATCH 4/4] vhost: enable log_shmfd protocol feature Yuanhan Liu
2015-12-02 14:10 ` [PATCH 0/4 for 2.3] vhost-user live migration support Victor Kaplansky
2015-12-02 14:33   ` Yuanhan Liu
2015-12-09  3:41 ` Xie, Huawei
2015-12-17  3:11 ` [PATCH v2 0/6] " Yuanhan Liu
2015-12-17  3:11   ` [PATCH v2 1/6] vhost: handle VHOST_USER_SET_LOG_BASE request Yuanhan Liu
2015-12-21 15:32     ` Xie, Huawei
2015-12-22  2:25       ` Yuanhan Liu
2015-12-22  2:41         ` Xie, Huawei
2015-12-22  2:55           ` Yuanhan Liu
2015-12-17  3:11   ` [PATCH v2 2/6] vhost: introduce vhost_log_write Yuanhan Liu
2015-12-21 15:06     ` Xie, Huawei
2015-12-22  2:40       ` Yuanhan Liu
2015-12-22  2:45         ` Xie, Huawei
2015-12-22  3:04           ` Yuanhan Liu
2015-12-22  7:02             ` Xie, Huawei
2015-12-22  5:11     ` Peter Xu
2015-12-22  6:09       ` Yuanhan Liu
2015-12-17  3:11   ` [PATCH v2 3/6] vhost: log used vring changes Yuanhan Liu
2015-12-22  6:55     ` Peter Xu
2015-12-22  7:07       ` Xie, Huawei
2015-12-22  7:59         ` Peter Xu
2015-12-22  7:13       ` Yuanhan Liu [this message]
2015-12-22  8:01         ` Peter Xu
2015-12-17  3:11   ` [PATCH v2 4/6] vhost: log vring desc buffer changes Yuanhan Liu
2015-12-17  3:12   ` [PATCH v2 5/6] vhost: claim that we support GUEST_ANNOUNCE feature Yuanhan Liu
2015-12-22  8:11     ` Peter Xu
2015-12-22  8:21       ` Yuanhan Liu
2015-12-22  8:24       ` Pavel Fedin
2015-12-17  3:12   ` [PATCH v2 6/6] vhost: enable log_shmfd protocol feature Yuanhan Liu
2015-12-17 12:08   ` [PATCH v2 0/6] vhost-user live migration support Iremonger, Bernard
2015-12-17 12:45     ` Yuanhan Liu
2015-12-21  8:17   ` Pavel Fedin
2016-01-29  4:57   ` [PATCH v3 0/8] " Yuanhan Liu
2016-01-29  4:57     ` [PATCH v3 1/8] vhost: handle VHOST_USER_SET_LOG_BASE request Yuanhan Liu
2016-01-29  4:57     ` [PATCH v3 2/8] vhost: introduce vhost_log_write Yuanhan Liu
2016-02-19 14:26       ` Thomas Monjalon
2016-02-22  6:59         ` Yuanhan Liu
2016-01-29  4:57     ` [PATCH v3 3/8] vhost: log used vring changes Yuanhan Liu
2016-01-29  4:57     ` [PATCH v3 4/8] vhost: log vring desc buffer changes Yuanhan Liu
2016-01-29  4:58     ` [PATCH v3 5/8] vhost: claim that we support GUEST_ANNOUNCE feature Yuanhan Liu
2016-03-11 12:39       ` Olivier MATZ
2016-03-11 13:16         ` Thomas Monjalon
2016-03-11 13:22           ` Olivier MATZ
2016-01-29  4:58     ` [PATCH v3 6/8] vhost: handle VHOST_USER_SEND_RARP request Yuanhan Liu
2016-02-19  6:11       ` Tan, Jianfeng
2016-02-19  7:03         ` Yuanhan Liu
2016-02-19  8:55           ` Yuanhan Liu
2016-02-22 14:36           ` [PATCH] vhost: broadcast RARP pkt by injecting it to receiving mbuf array Yuanhan Liu
2016-02-24  8:15             ` Qiu, Michael
2016-02-24  8:28               ` Yuanhan Liu
2016-02-25  7:55                 ` Qiu, Michael
2016-02-29 15:56             ` Thomas Monjalon
2016-01-29  4:58     ` [PATCH v3 7/8] vhost: enable log_shmfd protocol feature Yuanhan Liu
2016-01-29  4:58     ` [PATCH v3 8/8] vhost: remove duplicate header include Yuanhan Liu
2016-02-01 15:54     ` [PATCH v3 0/8] vhost-user live migration support Iremonger, Bernard
2016-02-02  1:53       ` Yuanhan Liu
2016-02-19 15:01     ` Thomas Monjalon
2016-02-22  7:08       ` Yuanhan Liu
2016-02-22  9:56         ` Thomas Monjalon
2016-02-22 14:24           ` Yuanhan Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151222071349.GQ18863@yliu-dev.sh.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=dev@dpdk.org \
    --cc=mst@redhat.com \
    --cc=peterx@redhat.com \
    --cc=vkaplans@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.