patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Cc: Kyle Larose <klarose@sandvine.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/virtio: revert fix restart' has been queued to stable release 16.07.2
Date: Tue, 15 Nov 2016 19:40:33 +0800	[thread overview]
Message-ID: <1479210033-24775-13-git-send-email-yuanhan.liu@linux.intel.com> (raw)
In-Reply-To: <1479210033-24775-1-git-send-email-yuanhan.liu@linux.intel.com>

Hi,

FYI, your patch has been queued to stable release 16.07.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 11/19/16.
So please shout if anyone has objections.

Thanks.

	--yliu

---
>From 60030e50665bad4136c90dc20d0575700f5f46d7 Mon Sep 17 00:00:00 2001
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Date: Sat, 5 Nov 2016 17:40:56 +0800
Subject: [PATCH] net/virtio: revert fix restart

[ backported from upstream commit 3f3b3d549bd5f308aaf425a9ab58473e4fb812b1 ]

This reverts commit 9a0615af7746 ("virtio: fix restart"); conflict is
manually addressed.

Kyle reported an issue with above commit

    qemu-kvm: Guest moved used index from 5 to 1

with following steps,

    1) Start my virtio interfaces
    2) Send some traffic into/out of the interfaces
    3) Stop the interfaces
    4) Start the interfaces
    5) Send some more traffic

And here are some quotes from Kyle's analysis,

    Prior to the patch, if an interface were stopped then started, without
    restarting the application, the queues would be left as-is, because
    hw->started would be set to 1. Now, calling stop sets hw->started to 0,
    which means the next call to start will "touch the queues". This is the
    unintended side-effect that causes the problem.

We should not touch the queues once the init is done, otherwise, the vring
state of virtio PMD driver and vhost-user would be inconsistent, leading
some issue like above.

Thus this patch is reverted.

Fixes: 9a0615af7746 ("virtio: fix restart")

Reported-by: Kyle Larose <klarose@sandvine.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
(cherry picked from commit 3f3b3d549bd5f308aaf425a9ab58473e4fb812b1)

Conflicts:
	drivers/net/virtio/virtio_ethdev.c
---
 drivers/net/virtio/virtio_ethdev.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 4cee067..86cf8a3 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -549,13 +549,11 @@ virtio_dev_close(struct rte_eth_dev *dev)
 
 	PMD_INIT_LOG(DEBUG, "virtio_dev_close");
 
-	if (hw->started == 1)
-		virtio_dev_stop(dev);
-
 	/* reset the NIC */
 	if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
 		vtpci_irq_config(hw, VIRTIO_MSI_NO_VECTOR);
 	vtpci_reset(hw);
+	hw->started = 0;
 	virtio_dev_free_mbufs(dev);
 	virtio_free_queues(dev);
 }
@@ -1275,9 +1273,10 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev)
 	if (rte_eal_process_type() == RTE_PROC_SECONDARY)
 		return -EPERM;
 
-	/* Close it anyway since there's no way to know if closed */
-	virtio_dev_close(eth_dev);
-
+	if (hw->started == 1) {
+		virtio_dev_stop(eth_dev);
+		virtio_dev_close(eth_dev);
+	}
 	pci_dev = eth_dev->pci_dev;
 
 	eth_dev->dev_ops = NULL;
@@ -1486,12 +1485,9 @@ static void
 virtio_dev_stop(struct rte_eth_dev *dev)
 {
 	struct rte_eth_link link;
-	struct virtio_hw *hw = dev->data->dev_private;
 
 	PMD_INIT_LOG(DEBUG, "stop");
 
-	hw->started = 0;
-
 	if (dev->data->dev_conf.intr_conf.lsc)
 		rte_intr_disable(&dev->pci_dev->intr_handle);
 
-- 
1.9.0

      parent reply	other threads:[~2016-11-15 11:39 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-15 11:40 [dpdk-stable] patch 'eal/arm: fix file descriptor leak when getting CPU features' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'eal/ppc: " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'lpm: fix freeing memory' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'pci: fix probing error if no driver found' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/ixgbe: fix VF registers' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'app/testpmd: fix DCB configuration' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/i40e: " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/enic: fix max packet length check' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/mlx5: fix handling of small mbuf sizes' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/mlx5: fix Rx checksum macros' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'net/vmxnet3: fix mbuf release on reset/stop' " Yuanhan Liu
2016-11-15 11:40 ` [dpdk-stable] patch 'mempool: fix leak if populate fails' " Yuanhan Liu
2016-11-15 11:40 ` Yuanhan Liu [this message]

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=1479210033-24775-13-git-send-email-yuanhan.liu@linux.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=klarose@sandvine.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=stable@dpdk.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).