patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Jianfeng Tan <jianfeng.tan@intel.com>
Cc: Yuanhan Liu <yuanhan.liu@linux.intel.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/virtio-user: fix not properly reset device' has been queued to stable release 16.11.1
Date: Mon, 23 Jan 2017 15:47:54 +0800	[thread overview]
Message-ID: <1485157675-32114-79-git-send-email-yuanhan.liu@linux.intel.com> (raw)
In-Reply-To: <1485157675-32114-1-git-send-email-yuanhan.liu@linux.intel.com>

Hi,

FYI, your patch has been queued to stable release 16.11.1

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

---

Note 16.11 is a LTS release. v16.11.1 is planned to be released
shortly (about 2-3 weeks) after v17.02.

---

Thanks.

	--yliu

---
>From 20e50101c83c214c26e419f7e99ab92157d36de5 Mon Sep 17 00:00:00 2001
From: Jianfeng Tan <jianfeng.tan@intel.com>
Date: Fri, 13 Jan 2017 12:18:35 +0000
Subject: [PATCH] net/virtio-user: fix not properly reset device

[ upstream commit c12a26ee209e0f378cd0b31d3fd0186df09e14ce ]

virtio_user is not properly reset when users call vtpci_reset(),
as it ignores VIRTIO_CONFIG_STATUS_RESET status in
virtio_user_set_status().

This might lead to initialization failure as it starts to re-init
the device before sending RESET messege to backend. Besides, previous
callfds and kickfds are not closed.

To fix it, we add support to disable virtqueues when it's set to
DRIVER OK status, and re-init fields in struct virtio_user_dev.

Fixes: e9efa4d93821 ("net/virtio-user: add new virtual PCI driver")
Fixes: 37a7eb2ae816 ("net/virtio-user: add device emulation layer")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 26 ++++++++++++++++--------
 drivers/net/virtio/virtio_user_ethdev.c          | 15 ++++++++------
 2 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 0d7e17b..a38398b 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -182,7 +182,17 @@ error:
 
 int virtio_user_stop_device(struct virtio_user_dev *dev)
 {
-	return vhost_user_sock(dev->vhostfd, VHOST_USER_RESET_OWNER, NULL);
+	uint32_t i;
+
+	for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
+		close(dev->callfds[i]);
+		close(dev->kickfds[i]);
+	}
+
+	for (i = 0; i < dev->max_queue_pairs; ++i)
+		vhost_user_enable_queue_pair(dev->vhostfd, i, 0);
+
+	return 0;
 }
 
 static inline void
@@ -210,6 +220,8 @@ int
 virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 		     int cq, int queue_size, const char *mac)
 {
+	uint32_t i;
+
 	snprintf(dev->path, PATH_MAX, "%s", path);
 	dev->max_queue_pairs = queues;
 	dev->queue_pairs = 1; /* mq disabled by default */
@@ -218,6 +230,11 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 	parse_mac(dev, mac);
 	dev->vhostfd = -1;
 
+	for (i = 0; i < VIRTIO_MAX_VIRTQUEUES * 2 + 1; ++i) {
+		dev->kickfds[i] = -1;
+		dev->callfds[i] = -1;
+	}
+
 	dev->vhostfd = vhost_user_setup(dev->path);
 	if (dev->vhostfd < 0) {
 		PMD_INIT_LOG(ERR, "backend set up fails");
@@ -264,13 +281,6 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 void
 virtio_user_dev_uninit(struct virtio_user_dev *dev)
 {
-	uint32_t i;
-
-	for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
-		close(dev->callfds[i]);
-		close(dev->kickfds[i]);
-	}
-
 	close(dev->vhostfd);
 }
 
diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c
index a23923d..6ca757b 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -87,21 +87,24 @@ virtio_user_write_dev_config(struct virtio_hw *hw, size_t offset,
 }
 
 static void
-virtio_user_set_status(struct virtio_hw *hw, uint8_t status)
+virtio_user_reset(struct virtio_hw *hw)
 {
 	struct virtio_user_dev *dev = virtio_user_get_dev(hw);
 
-	if (status & VIRTIO_CONFIG_STATUS_DRIVER_OK)
-		virtio_user_start_device(dev);
-	dev->status = status;
+	if (dev->status & VIRTIO_CONFIG_STATUS_DRIVER_OK)
+		virtio_user_stop_device(dev);
 }
 
 static void
-virtio_user_reset(struct virtio_hw *hw)
+virtio_user_set_status(struct virtio_hw *hw, uint8_t status)
 {
 	struct virtio_user_dev *dev = virtio_user_get_dev(hw);
 
-	virtio_user_stop_device(dev);
+	if (status & VIRTIO_CONFIG_STATUS_DRIVER_OK)
+		virtio_user_start_device(dev);
+	else if (status == VIRTIO_CONFIG_STATUS_RESET)
+		virtio_user_reset(hw);
+	dev->status = status;
 }
 
 static uint8_t
-- 
1.9.0

  parent reply	other threads:[~2017-01-23  7:47 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-23  7:46 [dpdk-stable] patch 'pmdinfogen: fix endianness with cross-compilation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'pci: fix check of mknod' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: check maximum number of queues for statistics' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'mempool: fix API documentation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: fix port lookup if none' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'vdev: fix detaching with alias' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ethtool: fix driver information' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: remove invalid function from version map' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: fix extended statistics name index' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'pmdinfogen: fix null dereference' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'app/testpmd: fix static build link ordering' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'app/testpmd: fix check for invalid ports' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ip_pipeline: fix coremask limitation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ip_pipeline: fix parsing of pass-through pipeline' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: fix xstats value mapping' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/mlx5: fix leak when starvation occurs' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/mlx5: fix endianness in Tx completion queue' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: fix logging for Tx free threshold check' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: enable auto link update for 25G' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40evf: fix casting between structs' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix flow control set for 25G' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix bit test mask' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix long link down notification time' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix unknown PHYs incorrect identification' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix WoL failure on PF reset' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix NVM access interfering' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix division by zero' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix byte order' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix resource leak' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/pcap: fix timestamps in output pcap file' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/vmxnet3: fix Rx deadlock' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/nfp: fix typo in Tx offload capabilities' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix PHY reset check for x550em-ext' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix clearing SAN MAC address' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix PHY identification for x550a' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix getting PHY type for some x550 devices' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix SGMII link setup for M88 PHYs' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix setting unsupported autoneg speeds' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix IXGBE LSWFW register' " Yuanhan Liu
     [not found]   ` <49759EB36A64CF4892C1AFEC9231E8D63A354E36@PGSMSX106.gar.corp.intel.com>
2017-01-23  9:44     ` Yuanhan Liu
2017-01-23 10:17       ` Thomas Monjalon
2017-01-23 10:29       ` Mcnamara, John
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix filtering code' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: add vendor/device id info' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix SRIOV printouts' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix multiple acquisition requests by VF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix error code in resc allocation' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix mutex in freeing context manager' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix Rx queue access by malicious VFs' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix to handle acquire request from VF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix VF over legacy PF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix RSS hash result for flows' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix wrong return value when handling PF message' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix missing inline attributes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix Tx doorbell' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix PF fastpath status block index' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix per queue statisitics' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/af_packet: fix fd use after free' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix segment number in reassemble process' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/enic: remove unnecessary function parameter attributes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/nfp: fix VLAN offload flags check' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/cxgbe: fix parenthesis on bitwise operation' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix function declaration' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx: fix IPv4 and IPv6 packet type' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix VF reset flow' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'cryptodev: fix crash on null dereference' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/openssl: fix extra bytes written at end of data' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_mb: fix incorrect crypto session' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix J0 padding bytes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix IV size in capabilities' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/qat: " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'cryptodev: fix loop in device query' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/openssl: fix indentation in guide' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'app/test: fix symmetric session free in crypto perf tests' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'vhost: fix guest/host physical address mapping' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'vhost: fix memory leak' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/vhost: fix socket file deleted on stop' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/vhost: fix calculation of mbuf count' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/vhost: fix lcore initialization' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/ethtool: fix querying non-PCI devices' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/virtio-user: fix wrongly get/set features' " Yuanhan Liu
2017-01-23  7:47 ` Yuanhan Liu [this message]
2017-01-23  7:47 ` [dpdk-stable] patch 'net/virtio: fix rewriting LSC flag' " 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=1485157675-32114-79-git-send-email-yuanhan.liu@linux.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=jianfeng.tan@intel.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).