DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 0/2] net/virtio: vhost-vdpa fixes
@ 2024-03-12 10:48 Maxime Coquelin
  2024-03-12 10:48 ` [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue Maxime Coquelin
  2024-03-12 10:48 ` [PATCH 2/2] net/virtio: fix notification area initialization Maxime Coquelin
  0 siblings, 2 replies; 5+ messages in thread
From: Maxime Coquelin @ 2024-03-12 10:48 UTC (permalink / raw)
  To: dev, david.marchand, chenbox, schalla; +Cc: Maxime Coquelin

While investigating vhost-vdpa intialization issue with mlx5
vDPA, we found two issues fixed by following patches.

Note we still see issue with the control queue, the virtio_user
driver gets stuck while waiting for a control queue message reply.
This is being investigated, but I wonder whether it is reproduced
on Marvell vDPA device?

Maxime Coquelin (2):
  net/virtio: fix vDPA device init advertising control queue
  net/virtio: fix notification area initialization

 drivers/net/virtio/virtio_user/virtio_user_dev.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

-- 
2.44.0


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

* [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue
  2024-03-12 10:48 [PATCH 0/2] net/virtio: vhost-vdpa fixes Maxime Coquelin
@ 2024-03-12 10:48 ` Maxime Coquelin
  2024-03-12 14:10   ` David Marchand
  2024-03-12 10:48 ` [PATCH 2/2] net/virtio: fix notification area initialization Maxime Coquelin
  1 sibling, 1 reply; 5+ messages in thread
From: Maxime Coquelin @ 2024-03-12 10:48 UTC (permalink / raw)
  To: dev, david.marchand, chenbox, schalla; +Cc: Maxime Coquelin, stable

If the vDPA device advertises control queue support, but
the user neither passes "cq=1" as devarg nor requests
multiple queues, the initialization fails because the
driver tries to setup the control queue without negotiating
related feature.

This patch enables the control queue at driver level as
soon as the device claims to support it, and not only when
multiple queue pairs are requested.

Fixes: b277308e8868 ("net/virtio-user: advertise control VQ support with vDPA")
Cc: stable@dpdk.org

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 7 ++++---
 1 file changed, 4 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 d395fc1676..0b5db12886 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -752,7 +752,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, uint16_t queues,
 	if (virtio_user_dev_init_max_queue_pairs(dev, queues))
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_MQ);
 
-	if (dev->max_queue_pairs > 1)
+	if (dev->max_queue_pairs > 1 || dev->hw_cvq)
 		cq = 1;
 
 	if (!mrg_rxbuf)
@@ -770,8 +770,9 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, uint16_t queues,
 		dev->unsupported_features |= (1ull << VIRTIO_NET_F_MAC);
 
 	if (cq) {
-		/* device does not really need to know anything about CQ,
-		 * so if necessary, we just claim to support CQ
+		/* Except for vDPA, the device does not really need to know
+		 * anything about CQ, so if necessary, we just claim to support
+		 * control queue.
 		 */
 		dev->frontend_features |= (1ull << VIRTIO_NET_F_CTRL_VQ);
 	} else {
-- 
2.44.0


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

* [PATCH 2/2] net/virtio: fix notification area initialization
  2024-03-12 10:48 [PATCH 0/2] net/virtio: vhost-vdpa fixes Maxime Coquelin
  2024-03-12 10:48 ` [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue Maxime Coquelin
@ 2024-03-12 10:48 ` Maxime Coquelin
  2024-03-12 14:12   ` David Marchand
  1 sibling, 1 reply; 5+ messages in thread
From: Maxime Coquelin @ 2024-03-12 10:48 UTC (permalink / raw)
  To: dev, david.marchand, chenbox, schalla; +Cc: Maxime Coquelin

Notification area is a Virtio feature that require to be
negotiated because not all devices support it. Currently,
it is tried to be initialized as soon as the backend
implements the callback, so it assumes all Vhost-vDPA
devices support it.

This patch skips calling the notification area map callback
if the device does not advertise its support.

Fixes: 0fd2782660c8 ("net/virtio-user: support notification area mapping")

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 0b5db12886..b2e361ef3b 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -433,8 +433,9 @@ virtio_user_dev_init_notify(struct virtio_user_dev *dev)
 		dev->kickfds[i] = kickfd;
 	}
 
-	if (dev->ops->map_notification_area)
-		if (dev->ops->map_notification_area(dev))
+	if (dev->device_features & (1ULL << VIRTIO_F_NOTIFICATION_DATA))
+		if (dev->ops->map_notification_area &&
+				dev->ops->map_notification_area(dev))
 			goto err;
 
 	return 0;
-- 
2.44.0


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

* Re: [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue
  2024-03-12 10:48 ` [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue Maxime Coquelin
@ 2024-03-12 14:10   ` David Marchand
  0 siblings, 0 replies; 5+ messages in thread
From: David Marchand @ 2024-03-12 14:10 UTC (permalink / raw)
  To: Maxime Coquelin; +Cc: dev, chenbox, schalla, stable

On Tue, Mar 12, 2024 at 11:48 AM Maxime Coquelin
<maxime.coquelin@redhat.com> wrote:
>
> If the vDPA device advertises control queue support, but
> the user neither passes "cq=1" as devarg nor requests
> multiple queues, the initialization fails because the
> driver tries to setup the control queue without negotiating
> related feature.
>
> This patch enables the control queue at driver level as
> soon as the device claims to support it, and not only when
> multiple queue pairs are requested.
>
> Fixes: b277308e8868 ("net/virtio-user: advertise control VQ support with vDPA")
> Cc: stable@dpdk.org
>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Reviewed-by: David Marchand <david.marchand@redhat.com>


-- 
David Marchand


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

* Re: [PATCH 2/2] net/virtio: fix notification area initialization
  2024-03-12 10:48 ` [PATCH 2/2] net/virtio: fix notification area initialization Maxime Coquelin
@ 2024-03-12 14:12   ` David Marchand
  0 siblings, 0 replies; 5+ messages in thread
From: David Marchand @ 2024-03-12 14:12 UTC (permalink / raw)
  To: Maxime Coquelin; +Cc: dev, chenbox, schalla

On Tue, Mar 12, 2024 at 11:48 AM Maxime Coquelin
<maxime.coquelin@redhat.com> wrote:
>
> Notification area is a Virtio feature that require to be

requires*

> negotiated because not all devices support it. Currently,
> it is tried to be initialized as soon as the backend
> implements the callback, so it assumes all Vhost-vDPA
> devices support it.
>
> This patch skips calling the notification area map callback
> if the device does not advertise its support.
>
> Fixes: 0fd2782660c8 ("net/virtio-user: support notification area mapping")
>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Reviewed-by: David Marchand <david.marchand@redhat.com>


-- 
David Marchand


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

end of thread, other threads:[~2024-03-12 14:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-12 10:48 [PATCH 0/2] net/virtio: vhost-vdpa fixes Maxime Coquelin
2024-03-12 10:48 ` [PATCH 1/2] net/virtio: fix vDPA device init advertising control queue Maxime Coquelin
2024-03-12 14:10   ` David Marchand
2024-03-12 10:48 ` [PATCH 2/2] net/virtio: fix notification area initialization Maxime Coquelin
2024-03-12 14:12   ` David Marchand

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