[dpdk-stable] patch 'vhost: restore mbuf first when freeing zmbuf' has been queued to LTS release 18.11.2

Kevin Traynor ktraynor at redhat.com
Wed Apr 10 18:43:41 CEST 2019


Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/16/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Kevin Traynor

---
>From 17b72dcd5c6f0ea86bb76a867789e34c218500a0 Mon Sep 17 00:00:00 2001
From: Tiwei Bie <tiwei.bie at intel.com>
Date: Fri, 22 Feb 2019 10:42:06 +0800
Subject: [PATCH] vhost: restore mbuf first when freeing zmbuf

[ upstream commit 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 ]

The mbufs should also be restored in free_zmbufs().

Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
Fixes: 3ebd930588b7 ("vhost: fix mbuf free")

Signed-off-by: Tiwei Bie <tiwei.bie at intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
---
 lib/librte_vhost/vhost.h      | 16 ++++++++++++++++
 lib/librte_vhost/vhost_user.c |  1 +
 lib/librte_vhost/virtio_net.c | 16 ----------------
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 552b9298d..d4f34c34a 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -756,3 +756,19 @@ kick:
 }
 
+static __rte_always_inline void
+restore_mbuf(struct rte_mbuf *m)
+{
+	uint32_t mbuf_size, priv_size;
+
+	while (m) {
+		priv_size = rte_pktmbuf_priv_size(m->pool);
+		mbuf_size = sizeof(struct rte_mbuf) + priv_size;
+		/* start of buffer is after mbuf structure and priv data */
+
+		m->buf_addr = (char *)m + mbuf_size;
+		m->buf_iova = rte_mempool_virt2iova(m) + mbuf_size;
+		m = m->next;
+	}
+}
+
 #endif /* _VHOST_NET_CDEV_H_ */
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 19e04c953..e078473ec 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1219,4 +1219,5 @@ free_zmbufs(struct vhost_virtqueue *vq)
 		next = TAILQ_NEXT(zmbuf, next);
 
+		restore_mbuf(zmbuf->mbuf);
 		rte_pktmbuf_free(zmbuf->mbuf);
 		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index 15d682c3c..d8b6bdea5 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -1344,20 +1344,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
 }
 
-static __rte_always_inline void
-restore_mbuf(struct rte_mbuf *m)
-{
-	uint32_t mbuf_size, priv_size;
-
-	while (m) {
-		priv_size = rte_pktmbuf_priv_size(m->pool);
-		mbuf_size = sizeof(struct rte_mbuf) + priv_size;
-		/* start of buffer is after mbuf structure and priv data */
-
-		m->buf_addr = (char *)m + mbuf_size;
-		m->buf_iova = rte_mempool_virt2iova(m) + mbuf_size;
-		m = m->next;
-	}
-}
-
 static __rte_always_inline uint16_t
 virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-10 14:06:10.447418507 +0100
+++ 0033-vhost-restore-mbuf-first-when-freeing-zmbuf.patch	2019-04-10 14:06:07.911293167 +0100
@@ -1,13 +1,14 @@
-From 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 Mon Sep 17 00:00:00 2001
+From 17b72dcd5c6f0ea86bb76a867789e34c218500a0 Mon Sep 17 00:00:00 2001
 From: Tiwei Bie <tiwei.bie at intel.com>
 Date: Fri, 22 Feb 2019 10:42:06 +0800
 Subject: [PATCH] vhost: restore mbuf first when freeing zmbuf
 
+[ upstream commit 041d37b2ef25faeb1c00ed70a5fc2ea6e93c4828 ]
+
 The mbufs should also be restored in free_zmbufs().
 
 Fixes: b0a985d1f340 ("vhost: add dequeue zero copy")
 Fixes: 3ebd930588b7 ("vhost: fix mbuf free")
-Cc: stable at dpdk.org
 
 Signed-off-by: Tiwei Bie <tiwei.bie at intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
@@ -18,10 +19,10 @@
  3 files changed, 17 insertions(+), 16 deletions(-)
 
 diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
-index fc31796bf..bcfce274b 100644
+index 552b9298d..d4f34c34a 100644
 --- a/lib/librte_vhost/vhost.h
 +++ b/lib/librte_vhost/vhost.h
-@@ -742,3 +742,19 @@ free_ind_table(void *idesc)
+@@ -756,3 +756,19 @@ kick:
  }
  
 +static __rte_always_inline void
@@ -42,7 +43,7 @@
 +
  #endif /* _VHOST_NET_CDEV_H_ */
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index b086ad95f..e3ddf2589 100644
+index 19e04c953..e078473ec 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
 @@ -1219,4 +1219,5 @@ free_zmbufs(struct vhost_virtqueue *vq)
@@ -52,10 +53,10 @@
  		rte_pktmbuf_free(zmbuf->mbuf);
  		TAILQ_REMOVE(&vq->zmbuf_list, zmbuf, next);
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 37a4c00d2..862ca5e1a 100644
+index 15d682c3c..d8b6bdea5 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -1319,20 +1319,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
+@@ -1344,20 +1344,4 @@ mbuf_is_consumed(struct rte_mbuf *m)
  }
  
 -static __rte_always_inline void


More information about the stable mailing list