DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user
@ 2018-10-29  5:28 Tiwei Bie
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again Tiwei Bie
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev

Tiwei Bie (6):
  net/virtio-user: do not stop stopped device again
  net/virtio-user: do not make vhost user channel nonblock
  net/virtio-user: do not reset owner when driver resets
  net/virtio-user: fix device features for server mode
  net/virtio-user: simplify device features preparation
  net/virtio: fix guest announce support

 drivers/net/virtio/virtio_ethdev.c            | 16 +++--
 .../net/virtio/virtio_user/virtio_user_dev.c  | 65 ++++++++++---------
 .../net/virtio/virtio_user/virtio_user_dev.h  |  1 +
 drivers/net/virtio/virtio_user_ethdev.c       |  6 +-
 4 files changed, 48 insertions(+), 40 deletions(-)

-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:19   ` Maxime Coquelin
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock Tiwei Bie
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev; +Cc: stephen, stable

Without this change, virtio-user still works, but it will show
annoying error messages like this on shutdown:

vhost_kernel_set_backend(): VHOST_NET_SET_BACKEND fails, Operation not permitted
vhost_kernel_ioctl(): VHOST_RESET_OWNER failed: Operation not permitted

Fixes: e3b434818bbb ("net/virtio-user: support kernel vhost")
Fixes: 12ecb2f63b12 ("net/virtio-user: support memory hotplug")
Cc: stable@dpdk.org

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index a185aed34..684702c56 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -184,6 +184,9 @@ int virtio_user_stop_device(struct virtio_user_dev *dev)
 	uint32_t i;
 
 	pthread_mutex_lock(&dev->mutex);
+	if (!dev->started)
+		goto out;
+
 	for (i = 0; i < dev->max_queue_pairs; ++i)
 		dev->ops->enable_qp(dev, i, 0);
 
@@ -193,6 +196,7 @@ int virtio_user_stop_device(struct virtio_user_dev *dev)
 		return -1;
 	}
 	dev->started = false;
+out:
 	pthread_mutex_unlock(&dev->mutex);
 
 	return 0;
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:20   ` Maxime Coquelin
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets Tiwei Bie
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev; +Cc: stable

There is no need to make the vhost user channel nonblock, and
making it nonblock will make vhost_user_read() fail with EAGAIN
when vhost messages need a reply.

Fixes: bd8f50a45d0f ("net/virtio-user: support server mode")
Cc: stable@dpdk.org

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/virtio/virtio_user_ethdev.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c
index b51cbc85b..2100e43db 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -28,7 +28,6 @@ static int
 virtio_user_server_reconnect(struct virtio_user_dev *dev)
 {
 	int ret;
-	int flag;
 	int connectfd;
 	struct rte_eth_dev *eth_dev = &rte_eth_devices[dev->port_id];
 
@@ -49,9 +48,6 @@ virtio_user_server_reconnect(struct virtio_user_dev *dev)
 
 	dev->features &= dev->device_features;
 
-	flag = fcntl(connectfd, F_GETFD);
-	fcntl(connectfd, F_SETFL, flag | O_NONBLOCK);
-
 	ret = virtio_user_start_device(dev);
 	if (ret < 0)
 		return -1;
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again Tiwei Bie
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:21   ` Maxime Coquelin
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode Tiwei Bie
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev; +Cc: stephen, stable

When driver resets the device, virtio-user just needs to send
GET_VRING_BASE messages to stop the vhost backend, and that's
what QEMU does. With this change, we won't need to set owner
when starting virtio-user device anymore. This will help us to
get rid of below error message on startup:

vhost_kernel_ioctl(): VHOST_SET_OWNER failed: Device or resource busy

Fixes: bce7e9050f9b ("net/virtio-user: fix start with kernel vhost")
Fixes: 0d6a8752ac9d ("net/virtio-user: fix crash as features change")
Cc: stable@dpdk.org

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 .../net/virtio/virtio_user/virtio_user_dev.c  | 22 ++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 684702c56..be70414a1 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -134,9 +134,6 @@ virtio_user_start_device(struct virtio_user_dev *dev)
 	if (is_vhost_user_by_type(dev->path) && dev->vhostfd < 0)
 		goto error;
 
-	/* Do not check return as already done in init, or reset in stop */
-	dev->ops->send_request(dev, VHOST_USER_SET_OWNER, NULL);
-
 	/* Step 0: tell vhost to create queues */
 	if (virtio_user_queue_setup(dev, virtio_user_create_queue) < 0)
 		goto error;
@@ -181,7 +178,9 @@ virtio_user_start_device(struct virtio_user_dev *dev)
 
 int virtio_user_stop_device(struct virtio_user_dev *dev)
 {
+	struct vhost_vring_state state;
 	uint32_t i;
+	int error = 0;
 
 	pthread_mutex_lock(&dev->mutex);
 	if (!dev->started)
@@ -190,16 +189,23 @@ int virtio_user_stop_device(struct virtio_user_dev *dev)
 	for (i = 0; i < dev->max_queue_pairs; ++i)
 		dev->ops->enable_qp(dev, i, 0);
 
-	if (dev->ops->send_request(dev, VHOST_USER_RESET_OWNER, NULL) < 0) {
-		PMD_DRV_LOG(INFO, "Failed to reset the device\n");
-		pthread_mutex_unlock(&dev->mutex);
-		return -1;
+	/* Stop the backend. */
+	for (i = 0; i < dev->max_queue_pairs * 2; ++i) {
+		state.index = i;
+		if (dev->ops->send_request(dev, VHOST_USER_GET_VRING_BASE,
+					   &state) < 0) {
+			PMD_DRV_LOG(ERR, "get_vring_base failed, index=%u\n",
+				    i);
+			error = -1;
+			goto out;
+		}
 	}
+
 	dev->started = false;
 out:
 	pthread_mutex_unlock(&dev->mutex);
 
-	return 0;
+	return error;
 }
 
 static inline void
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
                   ` (2 preceding siblings ...)
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:25   ` Maxime Coquelin
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation Tiwei Bie
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev; +Cc: stable

We need to save the supported frontend features (which won't be
announced by vhost backend), otherwise we will lost them when the
connection to vhost-user backend is established in server mode.

Fixes: 201a41651715 ("net/virtio-user: fix multiple queues fail in server mode")
Cc: stable@dpdk.org

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 8 +++++---
 drivers/net/virtio/virtio_user/virtio_user_dev.h | 1 +
 drivers/net/virtio/virtio_user_ethdev.c          | 2 ++
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index be70414a1..44e093eb7 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -421,6 +421,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 	dev->queue_pairs = 1; /* mq disabled by default */
 	dev->queue_size = queue_size;
 	dev->mac_specified = 0;
+	dev->frontend_features = 0;
 	dev->unsupported_features = 0;
 	parse_mac(dev, mac);
 
@@ -468,7 +469,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 	}
 
 	if (dev->mac_specified) {
-		dev->device_features |= (1ull << VIRTIO_NET_F_MAC);
+		dev->frontend_features |= (1ull << VIRTIO_NET_F_MAC);
 	} else {
 		dev->device_features &= ~(1ull << VIRTIO_NET_F_MAC);
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_MAC);
@@ -478,7 +479,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 		/* device does not really need to know anything about CQ,
 		 * so if necessary, we just claim to support CQ
 		 */
-		dev->device_features |= (1ull << VIRTIO_NET_F_CTRL_VQ);
+		dev->frontend_features |= (1ull << VIRTIO_NET_F_CTRL_VQ);
 	} else {
 		dev->device_features &= ~(1ull << VIRTIO_NET_F_CTRL_VQ);
 		/* Also disable features depends on VIRTIO_NET_F_CTRL_VQ */
@@ -499,8 +500,9 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 
 	/* The backend will not report this feature, we add it explicitly */
 	if (is_vhost_user_by_type(dev->path))
-		dev->device_features |= (1ull << VIRTIO_NET_F_STATUS);
+		dev->frontend_features |= (1ull << VIRTIO_NET_F_STATUS);
 
+	dev->device_features |= dev->frontend_features;
 	dev->device_features &= VIRTIO_USER_SUPPORTED_FEATURES;
 	dev->unsupported_features |= ~VIRTIO_USER_SUPPORTED_FEATURES;
 
diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.h b/drivers/net/virtio/virtio_user/virtio_user_dev.h
index d6e0e137b..c42ce5d4b 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.h
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.h
@@ -33,6 +33,7 @@ struct virtio_user_dev {
 				   * and will be sync with device
 				   */
 	uint64_t	device_features; /* supported features by device */
+	uint64_t	frontend_features; /* enabled frontend features */
 	uint64_t	unsupported_features; /* unsupported features mask */
 	uint8_t		status;
 	uint16_t	port_id;
diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c
index 2100e43db..c419d5b9d 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -43,6 +43,8 @@ virtio_user_server_reconnect(struct virtio_user_dev *dev)
 		return -1;
 	}
 
+	dev->device_features |= dev->frontend_features;
+
 	/* umask vhost-user unsupported features */
 	dev->device_features &= ~(dev->unsupported_features);
 
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
                   ` (3 preceding siblings ...)
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:26   ` Maxime Coquelin
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support Tiwei Bie
  2018-10-30 10:56 ` [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Maxime Coquelin
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev

Get rid of the duplicated code in device features preparation
which looks awful.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 .../net/virtio/virtio_user/virtio_user_dev.c  | 31 +++++++------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 44e093eb7..20abfcd19 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -422,7 +422,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 	dev->queue_size = queue_size;
 	dev->mac_specified = 0;
 	dev->frontend_features = 0;
-	dev->unsupported_features = 0;
+	dev->unsupported_features = ~VIRTIO_USER_SUPPORTED_FEATURES;
 	parse_mac(dev, mac);
 
 	if (*ifname) {
@@ -458,22 +458,16 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 		dev->device_features = VIRTIO_USER_SUPPORTED_FEATURES;
 	}
 
-	if (!mrg_rxbuf) {
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_MRG_RXBUF);
+	if (!mrg_rxbuf)
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_MRG_RXBUF);
-	}
 
-	if (!in_order) {
-		dev->device_features &= ~(1ull << VIRTIO_F_IN_ORDER);
+	if (!in_order)
 		dev->unsupported_features |= (1ull << VIRTIO_F_IN_ORDER);
-	}
 
-	if (dev->mac_specified) {
+	if (dev->mac_specified)
 		dev->frontend_features |= (1ull << VIRTIO_NET_F_MAC);
-	} else {
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_MAC);
+	else
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_MAC);
-	}
 
 	if (cq) {
 		/* device does not really need to know anything about CQ,
@@ -481,14 +475,8 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 		 */
 		dev->frontend_features |= (1ull << VIRTIO_NET_F_CTRL_VQ);
 	} else {
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_CTRL_VQ);
-		/* Also disable features depends on VIRTIO_NET_F_CTRL_VQ */
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_CTRL_RX);
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_CTRL_VLAN);
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_GUEST_ANNOUNCE);
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_MQ);
-		dev->device_features &= ~(1ull << VIRTIO_NET_F_CTRL_MAC_ADDR);
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_CTRL_VQ);
+		/* Also disable features that depend on VIRTIO_NET_F_CTRL_VQ */
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_CTRL_RX);
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_CTRL_VLAN);
 		dev->unsupported_features |=
@@ -502,9 +490,12 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
 	if (is_vhost_user_by_type(dev->path))
 		dev->frontend_features |= (1ull << VIRTIO_NET_F_STATUS);
 
+	/*
+	 * Device features =
+	 *     (frontend_features | backend_features) & ~unsupported_features;
+	 */
 	dev->device_features |= dev->frontend_features;
-	dev->device_features &= VIRTIO_USER_SUPPORTED_FEATURES;
-	dev->unsupported_features |= ~VIRTIO_USER_SUPPORTED_FEATURES;
+	dev->device_features &= ~dev->unsupported_features;
 
 	if (rte_mem_event_callback_register(VIRTIO_USER_MEM_EVENT_CLB_NAME,
 				virtio_user_mem_event_cb, dev)) {
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
                   ` (4 preceding siblings ...)
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation Tiwei Bie
@ 2018-10-29  5:28 ` Tiwei Bie
  2018-10-30 10:30   ` Maxime Coquelin
  2018-10-30 10:56 ` [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Maxime Coquelin
  6 siblings, 1 reply; 14+ messages in thread
From: Tiwei Bie @ 2018-10-29  5:28 UTC (permalink / raw)
  To: maxime.coquelin, zhihong.wang, dev; +Cc: stable

We need to check the status field in virtio net config structure
instead of the bits read from ISR register to know whether we need
to do guest announce.

Fixes: 7365504f77e3 ("net/virtio: support guest announce")
Cc: stable@dpdk.org

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/virtio/virtio_ethdev.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 10a7e3fcc..27088e3a6 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1288,6 +1288,7 @@ virtio_interrupt_handler(void *param)
 	struct rte_eth_dev *dev = param;
 	struct virtio_hw *hw = dev->data->dev_private;
 	uint8_t isr;
+	uint16_t status;
 
 	/* Read interrupt status which clears interrupt */
 	isr = vtpci_isr(hw);
@@ -1301,12 +1302,17 @@ virtio_interrupt_handler(void *param)
 			_rte_eth_dev_callback_process(dev,
 						      RTE_ETH_EVENT_INTR_LSC,
 						      NULL);
-	}
 
-	if (isr & VIRTIO_NET_S_ANNOUNCE) {
-		virtio_notify_peers(dev);
-		if (hw->cvq)
-			virtio_ack_link_announce(dev);
+		if (vtpci_with_feature(hw, VIRTIO_NET_F_STATUS)) {
+			vtpci_read_dev_config(hw,
+				offsetof(struct virtio_net_config, status),
+				&status, sizeof(status));
+			if (status & VIRTIO_NET_S_ANNOUNCE) {
+				virtio_notify_peers(dev);
+				if (hw->cvq)
+					virtio_ack_link_announce(dev);
+			}
+		}
 	}
 }
 
-- 
2.19.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again Tiwei Bie
@ 2018-10-30 10:19   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:19 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev; +Cc: stephen, stable



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> Without this change, virtio-user still works, but it will show
> annoying error messages like this on shutdown:
> 
> vhost_kernel_set_backend(): VHOST_NET_SET_BACKEND fails, Operation not permitted
> vhost_kernel_ioctl(): VHOST_RESET_OWNER failed: Operation not permitted
> 
> Fixes: e3b434818bbb ("net/virtio-user: support kernel vhost")
> Fixes: 12ecb2f63b12 ("net/virtio-user: support memory hotplug")
> Cc: stable@dpdk.org
> 
> Reported-by: Stephen Hemminger <stephen@networkplumber.org>
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   drivers/net/virtio/virtio_user/virtio_user_dev.c | 4 ++++
>   1 file changed, 4 insertions(+)

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock Tiwei Bie
@ 2018-10-30 10:20   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:20 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev; +Cc: stable



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> There is no need to make the vhost user channel nonblock, and
> making it nonblock will make vhost_user_read() fail with EAGAIN
> when vhost messages need a reply.
> 
> Fixes: bd8f50a45d0f ("net/virtio-user: support server mode")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   drivers/net/virtio/virtio_user_ethdev.c | 4 ----
>   1 file changed, 4 deletions(-)
> 

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets Tiwei Bie
@ 2018-10-30 10:21   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:21 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev; +Cc: stephen, stable



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> When driver resets the device, virtio-user just needs to send
> GET_VRING_BASE messages to stop the vhost backend, and that's
> what QEMU does. With this change, we won't need to set owner
> when starting virtio-user device anymore. This will help us to
> get rid of below error message on startup:
> 
> vhost_kernel_ioctl(): VHOST_SET_OWNER failed: Device or resource busy
> 
> Fixes: bce7e9050f9b ("net/virtio-user: fix start with kernel vhost")
> Fixes: 0d6a8752ac9d ("net/virtio-user: fix crash as features change")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   .../net/virtio/virtio_user/virtio_user_dev.c  | 22 ++++++++++++-------
>   1 file changed, 14 insertions(+), 8 deletions(-)

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode Tiwei Bie
@ 2018-10-30 10:25   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:25 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev; +Cc: stable



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> We need to save the supported frontend features (which won't be
> announced by vhost backend), otherwise we will lost them when the
> connection to vhost-user backend is established in server mode.
> 
> Fixes: 201a41651715 ("net/virtio-user: fix multiple queues fail in server mode")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   drivers/net/virtio/virtio_user/virtio_user_dev.c | 8 +++++---
>   drivers/net/virtio/virtio_user/virtio_user_dev.h | 1 +
>   drivers/net/virtio/virtio_user_ethdev.c          | 2 ++
>   3 files changed, 8 insertions(+), 3 deletions(-)

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation Tiwei Bie
@ 2018-10-30 10:26   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:26 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> Get rid of the duplicated code in device features preparation
> which looks awful.
> 
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   .../net/virtio/virtio_user/virtio_user_dev.c  | 31 +++++++------------
>   1 file changed, 11 insertions(+), 20 deletions(-)

Welcomed cleanup!

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support Tiwei Bie
@ 2018-10-30 10:30   ` Maxime Coquelin
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:30 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev; +Cc: stable



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> We need to check the status field in virtio net config structure
> instead of the bits read from ISR register to know whether we need
> to do guest announce.
> 
> Fixes: 7365504f77e3 ("net/virtio: support guest announce")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>   drivers/net/virtio/virtio_ethdev.c | 16 +++++++++++-----
>   1 file changed, 11 insertions(+), 5 deletions(-)

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

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user
  2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
                   ` (5 preceding siblings ...)
  2018-10-29  5:28 ` [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support Tiwei Bie
@ 2018-10-30 10:56 ` Maxime Coquelin
  6 siblings, 0 replies; 14+ messages in thread
From: Maxime Coquelin @ 2018-10-30 10:56 UTC (permalink / raw)
  To: Tiwei Bie, zhihong.wang, dev



On 10/29/18 6:28 AM, Tiwei Bie wrote:
> Tiwei Bie (6):
>    net/virtio-user: do not stop stopped device again
>    net/virtio-user: do not make vhost user channel nonblock
>    net/virtio-user: do not reset owner when driver resets
>    net/virtio-user: fix device features for server mode
>    net/virtio-user: simplify device features preparation
>    net/virtio: fix guest announce support
> 
>   drivers/net/virtio/virtio_ethdev.c            | 16 +++--
>   .../net/virtio/virtio_user/virtio_user_dev.c  | 65 ++++++++++---------
>   .../net/virtio/virtio_user/virtio_user_dev.h  |  1 +
>   drivers/net/virtio/virtio_user_ethdev.c       |  6 +-
>   4 files changed, 48 insertions(+), 40 deletions(-)
> 

Applied to dpdk-next-virtio/master

Thanks,
Maxime

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2018-10-30 10:56 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-29  5:28 [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Tiwei Bie
2018-10-29  5:28 ` [dpdk-dev] [PATCH 1/6] net/virtio-user: do not stop stopped device again Tiwei Bie
2018-10-30 10:19   ` Maxime Coquelin
2018-10-29  5:28 ` [dpdk-dev] [PATCH 2/6] net/virtio-user: do not make vhost user channel nonblock Tiwei Bie
2018-10-30 10:20   ` Maxime Coquelin
2018-10-29  5:28 ` [dpdk-dev] [PATCH 3/6] net/virtio-user: do not reset owner when driver resets Tiwei Bie
2018-10-30 10:21   ` Maxime Coquelin
2018-10-29  5:28 ` [dpdk-dev] [PATCH 4/6] net/virtio-user: fix device features for server mode Tiwei Bie
2018-10-30 10:25   ` Maxime Coquelin
2018-10-29  5:28 ` [dpdk-dev] [PATCH 5/6] net/virtio-user: simplify device features preparation Tiwei Bie
2018-10-30 10:26   ` Maxime Coquelin
2018-10-29  5:28 ` [dpdk-dev] [PATCH 6/6] net/virtio: fix guest announce support Tiwei Bie
2018-10-30 10:30   ` Maxime Coquelin
2018-10-30 10:56 ` [dpdk-dev] [PATCH 0/6] Fixes for virtio/virtio-user Maxime Coquelin

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).