All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tiwei Bie <tiwei.bie@intel.com>
To: Adrian Moreno <amorenoz@redhat.com>
Cc: dev@dpdk.org, zhihong.wang@intel.com, maxime.coquelin@redhat.com,
	stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v3 2/3] vhost: convert buffer addresses to GPA for logging
Date: Tue, 8 Oct 2019 14:30:49 +0800	[thread overview]
Message-ID: <20191008063049.GB25865@___> (raw)
In-Reply-To: <20190927183759.18816-3-amorenoz@redhat.com>

On Fri, Sep 27, 2019 at 08:37:58PM +0200, Adrian Moreno wrote:
> Note that the API facing rte_vhost_log_write is not modified.
> So, make explicit that it expects the address in GPA space.
> 
> Fixes: 69c90e98f483 ("vhost: enable IOMMU support")
> Cc: maxime.coquelin@redhat.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
> ---
>  lib/librte_vhost/rte_vhost.h  |  2 +-
>  lib/librte_vhost/vdpa.c       |  4 +++-
>  lib/librte_vhost/vhost.c      | 21 +++++++++++++++++++++
>  lib/librte_vhost/vhost.h      | 16 ++++++++++++++++
>  lib/librte_vhost/virtio_net.c | 12 +++++++-----
>  5 files changed, 48 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/librte_vhost/rte_vhost.h b/lib/librte_vhost/rte_vhost.h
> index 7fb172912..16c7e4243 100644
> --- a/lib/librte_vhost/rte_vhost.h
> +++ b/lib/librte_vhost/rte_vhost.h
> @@ -265,7 +265,7 @@ rte_vhost_va_from_guest_pa(struct rte_vhost_memory *mem,
>   * @param vid
>   *  vhost device ID
>   * @param addr
> - *  the starting address for write
> + *  the starting address for write (in guest physical address space)
>   * @param len
>   *  the length to write
>   */
> diff --git a/lib/librte_vhost/vdpa.c b/lib/librte_vhost/vdpa.c
> index 8e45ce9f8..11fd5aede 100644
> --- a/lib/librte_vhost/vdpa.c
> +++ b/lib/librte_vhost/vdpa.c
> @@ -201,7 +201,9 @@ rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m)
>  				goto fail;
>  			desc = desc_ring[desc_id];
>  			if (desc.flags & VRING_DESC_F_WRITE)
> -				vhost_log_write(dev, desc.addr, desc.len);
> +				vhost_log_cache_write_iova(dev, vq,
> +							   desc.addr,
> +							   desc.len);

This will only log the dirty pages in cache.


>  			desc_id = desc.next;
>  		} while (desc.flags & VRING_DESC_F_NEXT);
>  
> diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
> index e57dda22f..78457a77c 100644
> --- a/lib/librte_vhost/vhost.c
> +++ b/lib/librte_vhost/vhost.c
> @@ -200,6 +200,27 @@ __vhost_log_cache_write(struct virtio_net *dev, struct vhost_virtqueue *vq,
>  	}
>  }
>  
> +void
> +__vhost_log_cache_write_iova(struct virtio_net *dev, struct vhost_virtqueue *vq,
> +			     uint64_t iova, uint64_t len)
> +{
> +	uint64_t hva, gpa, map_len;
> +	map_len = len;
> +
> +	hva = __vhost_iova_to_vva(dev, vq, iova, &map_len, VHOST_ACCESS_RW);
> +	if (map_len != len) {
> +		RTE_LOG(ERR, VHOST_CONFIG,
> +			"Failed to write log for IOVA 0x%0lx."

PRIx64 should be used here, otherwise the build will be
broken on i686.

It's better to add a space after '.'


> +			"No IOTLB entry found\n",
> +			iova);
> +		return;
> +	}
> +
> +	gpa = hva_to_gpa(dev, hva, len);
> +	if (gpa)
> +		__vhost_log_cache_write(dev, vq, gpa, len);
> +}
> +

  reply	other threads:[~2019-10-08  6:33 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-27 18:37 [dpdk-dev] [PATCH v3 0/3] vhost: add support for IOVA_VA mode Adrian Moreno
2019-09-27 18:37 ` [dpdk-dev] [PATCH v3 1/3] vhost: translate incoming log address to gpa Adrian Moreno
2019-09-27 18:37 ` [dpdk-dev] [PATCH v3 2/3] vhost: convert buffer addresses to GPA for logging Adrian Moreno
2019-10-08  6:30   ` Tiwei Bie [this message]
2019-10-08  7:38     ` Adrian Moreno
2019-10-08  7:43       ` Maxime Coquelin
2019-10-08  8:01         ` Tiwei Bie
2019-10-08  8:25           ` Adrian Moreno
2019-09-27 18:37 ` [dpdk-dev] [PATCH v3 3/3] vhost: prevent zero copy mode if iommu is on Adrian Moreno
2019-10-08  6:23   ` Tiwei Bie
2019-10-08  7:40     ` Adrian Moreno

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=20191008063049.GB25865@___ \
    --to=tiwei.bie@intel.com \
    --cc=amorenoz@redhat.com \
    --cc=dev@dpdk.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=stable@dpdk.org \
    --cc=zhihong.wang@intel.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.