Thread (26 messages) 26 messages, 4 authors, 2016-09-28

Re: [PATCH 2/3] net/virtio_user: fix wrong sequence of messages

From: Tan, Jianfeng <hidden>
Date: 2016-08-08 01:20:04

Hi Stephen,
-----Original Message-----
From: Stephen Hemminger [mailto:stephen@networkplumber.org]
Sent: Saturday, August 6, 2016 12:36 AM
To: Tan, Jianfeng
Cc: dev@dpdk.org; yuanhan.liu@linux.intel.com; Wang, Zhihong;
lining18@jd.com
Subject: Re: [dpdk-dev] [PATCH 2/3] net/virtio_user: fix wrong sequence of
messages

On Fri,  5 Aug 2016 11:36:42 +0000
Jianfeng Tan [off-list ref] wrote:
quoted
When virtio_user is used with VPP's native vhost user, it cannot
send/receive any packets.

The root cause is that vpp-vhost-user translates the message
VHOST_USER_SET_FEATURES as puting this device into init state,
aka, zero all related structures. However, previous code
puts this message at last in the whole initialization process,
which leads to all previous information are zeroed.
Not sure what correct behavior is here.  It could be that VPP native
vhost user is broken.  What does QEMU/KVM vhost do in this case?
I would take that as the authoritative source for semantics.
Below corrective message sequence is as per QEMU's behavior. One more thing, QEMU does not have any docs for this, and it's figured out through how the vhost receives messages from QEMU.

Thanks,
Jianfeng
quoted
To fix this issue, we rearrange the sequence of those messages.
  - step 0, send VHOST_USER_SET_VRING_CALL so that vhost allocates
    virtqueue structures;
  - step 1, send VHOST_USER_SET_FEATURES to confirm the features;
  - step 2, send VHOST_USER_SET_MEM_TABLE to share mem regions;
  - step 3, send VHOST_USER_SET_VRING_NUM,
VHOST_USER_SET_VRING_BASE,
quoted
    VHOST_USER_SET_VRING_ADDR, VHOST_USER_SET_VRING_KICK for
each
quoted
    queue;
  - ...

Fixes: 37a7eb2ae816 ("net/virtio-user: add device emulation layer")
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help