vhost: fix dirty page logging missing

Message ID 20191104111547.54885-1-yong.liu@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Maxime Coquelin
Headers
Series vhost: fix dirty page logging missing |

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-compilation success Compile Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Marvin Liu Nov. 4, 2019, 11:15 a.m. UTC
  Packets data are directly copied when doing batch enqueue, add missed
dirty page logging after memory copy.

Fixes: ad3df6dcc0fc ("vhost: add packed ring batch enqueue")

Signed-off-by: Marvin Liu <yong.liu@intel.com>
---
 lib/librte_vhost/virtio_net.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Maxime Coquelin Nov. 6, 2019, 8:29 p.m. UTC | #1
On 11/4/19 12:15 PM, Marvin Liu wrote:
> Packets data are directly copied when doing batch enqueue, add missed
> dirty page logging after memory copy.
> 
> Fixes: ad3df6dcc0fc ("vhost: add packed ring batch enqueue")
> 
> Signed-off-by: Marvin Liu <yong.liu@intel.com>
> ---
>  lib/librte_vhost/virtio_net.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
> index eae7825f0..0c33af7b1 100644
> --- a/lib/librte_vhost/virtio_net.c
> +++ b/lib/librte_vhost/virtio_net.c
> @@ -1107,6 +1107,10 @@ virtio_dev_rx_batch_packed(struct virtio_net *dev,
>  			   pkts[i]->pkt_len);
>  	}
>  
> +	vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE)
> +		vhost_log_cache_write_iova(dev, vq, descs[avail_idx + i].addr,
> +					   lens[i]);
> +
>  	vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE)
>  		ids[i] = descs[avail_idx + i].id;
>  
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime
  
Maxime Coquelin Nov. 6, 2019, 9 p.m. UTC | #2
On 11/4/19 12:15 PM, Marvin Liu wrote:
> Packets data are directly copied when doing batch enqueue, add missed
> dirty page logging after memory copy.
> 
> Fixes: ad3df6dcc0fc ("vhost: add packed ring batch enqueue")
> 
> Signed-off-by: Marvin Liu <yong.liu@intel.com>
> ---
>  lib/librte_vhost/virtio_net.c | 4 ++++
>  1 file changed, 4 insertions(+)
Applied to dpdk-next-virtio/master.

Thanks,
Maxime
  

Patch

diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index eae7825f0..0c33af7b1 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -1107,6 +1107,10 @@  virtio_dev_rx_batch_packed(struct virtio_net *dev,
 			   pkts[i]->pkt_len);
 	}
 
+	vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE)
+		vhost_log_cache_write_iova(dev, vq, descs[avail_idx + i].addr,
+					   lens[i]);
+
 	vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE)
 		ids[i] = descs[avail_idx + i].id;