DPDK patches and discussions
 help / color / mirror / Atom feed
From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: Matan Azrad <matan@mellanox.com>,
	"xiaolong.ye@intel.com" <xiaolong.ye@intel.com>,
	Shahaf Shuler <shahafs@mellanox.com>,
	"amorenoz@redhat.com" <amorenoz@redhat.com>,
	"xiao.w.wang@intel.com" <xiao.w.wang@intel.com>,
	Slava Ovsiienko <viacheslavo@mellanox.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "jasowang@redhat.com" <jasowang@redhat.com>,
	"lulu@redhat.com" <lulu@redhat.com>
Subject: Re: [dpdk-dev] [PATCH 9/9] vhost: only use vDPA config workaround if needed
Date: Wed, 17 Jun 2020 14:29:34 +0200	[thread overview]
Message-ID: <7cdc8505-a667-81a3-b8ed-22dd34b958f7@redhat.com> (raw)
In-Reply-To: <AM0PR0502MB4019103126721C46467A8B63D29A0@AM0PR0502MB4019.eurprd05.prod.outlook.com>



On 6/17/20 1:04 PM, Matan Azrad wrote:

>>> Don’t you think that only enabled queues must be fully initialized when
>> their status is changed from disabled to enabled?
>>> So, you can assume that disabled queues can stay "not fully initialized"...
>>
>> That may work but might not be following the Virtio spec as with 1.0 we
>> shouldn't process the rings before DRIVER_OK is set (but we cannot be sure
>> we follow it anyway without SET_STATUS support).
>>
>> I propose to cook a patch doing the following:
>> 1. virtio_is_ready() will only ensure the first queue pair is ready (i.e. enabled
>> and configured). Meaning that app's new_device callback and vDPA drivers
>> dev_conf callback will be called with only the first queue pair configured and
>> enabled.
>>
>> 2. Before handling a new vhost-user request, it saves the ready status for
>> every queue pair.
>>
>> 3. Same handling of the requests, except that we won't notify the vdpa
>> driver and the application of vring state changes in the
>> VHOST_USER_SET_VRING_ENABLE handler.
>>
>> 4. Once the Vhost-user request is handled, it compares the new ready status
>> foe every queues with the old one and send queue state event changes
>> accordingly.
> 
> Looks very nice to me.

Cool!

> More points:
> By this method some queues may be configured by the set_vring_state operation so the next calls are expected to be called for each queue by the driver from the set_vring_state callback :
> 1. rte_vhost_enable_guest_notification
> 	This one takes datapath lock so we need to be sure that datapath lock is not locked on this queue from the same caller thread (maybe to not takes datapath locks when vdpa is configured at all).

Good point, I agree we shouldn't need to use the access lock when vdpa
is configured. We may want to document that all the control path is
assumed to be single thread though.


> 2. rte_vhost_host_notifier_ctrl
> 	This function API is per device and not per queue, maybe we need to change this function to be per queue (add new for now and deprecate the old one in 20.11).

This one is still experimental, so no issue in reworking the API to make
it per queue without deprecation notice.

> 3. Need to be sure that if ready queue configuration is changed after dev_conf, we should notify it to the driver. (maybe by set_vring_state(disabl) and set_vring_state(enable)).

Agree, I'm not sure yet if we should just toggle set_vring_state as you
proposes, or if we should have a new callback for this.

>> It is likely to need changes in the .dev_conf and .set_vring_state
>> implementations by the drivers.
> 
> Yes, for Mellanox it is very easy change.
> Intel?
> 
>  
>>>
>>>> With VHOST_USER_SET_STATUS, we will be able to handle this properly,
>>>> as the backend can be sure the guest won't initialize more queues as
>>>> soon as DRIVER_OK Virtio status bit is set. In my v2, I can add one
>>>> patch to handle this case properly, by "destorying" queues metadata
>>>> as soon as DRIVER_OK is received.
>>>>
>>>> Note that it was the exact reason why I first tried to add support
>>>> for VHOST_USER_SET_STATUS more than two years ago...:
>>>> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flis
>>>> ts.g
>>>> nu.org%2Farchive%2Fhtml%2Fqemu-devel%2F2018-
>>>>
>> 02%2Fmsg04560.html&amp;data=02%7C01%7Cmatan%40mellanox.com%7C
>>>>
>> bed5d361fbff47ab766008d80c99cc53%7Ca652971c7d2e4d9ba6a4d149256f461
>>>>
>> b%7C0%7C0%7C637273201984684513&amp;sdata=KGJjdEtEN54duNu41rhBIw
>>>> o4tmdWn6QD4yvdR3zeLI8%3D&amp;reserved=0
>>>>
>>>> What do you think?
>>>
>>> Yes, I agree it may be solved by VHOST_USER_SET_STATUS (and probably a
>>> lot of other issues), But I think we need support also legacy QEMU versions
>> if we can...
>>
>> I think the SET_STATUS support is important to be compliant with the Virtio
>> specifictation.
>>
>>> Don't you think so?
> 
> Yes, I agree.
> 
>>
>> We can try that.
>> I will try to cook something this week, but it will require validation with OVS
>> to be sure we don't break multiqueue. I will send it as RFC, and count on you
>> to try it with your mlx5 vDPA driver.
>>
>> Does it work for you? (note I'll be on vacation from July 1st to 17th)
> 
> Sure,
> Do you have capacity to do it this week?
> I can help..... 

That would be welcome, as I initially planned to spend time on reviewing
& merging patches this week.

Thanks,
Maxime
> Matan
> 
> 
>>
>> Thanks,
>> Maxime
>>
>>>> Regards,
>>>> Maxime
>>>
> 


  reply	other threads:[~2020-06-17 12:29 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14  8:02 [dpdk-dev] [PATCH (v20.08) 0/9] vhost: improve Vhost/vDPA device init Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 1/9] vhost: fix virtio ready flag check Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 2/9] vhost: refactor Virtio ready check Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 3/9] vdpa/ifc: add support to vDPA queue enable Maxime Coquelin
2020-05-15  8:45   ` Ye Xiaolong
2020-05-15  9:09   ` Jason Wang
2020-05-15  9:42     ` Wang, Xiao W
2020-05-15 10:06       ` Jason Wang
2020-05-15 10:08       ` Jason Wang
2020-05-18  3:09         ` Wang, Xiao W
2020-05-18  3:17           ` Jason Wang
2020-05-14  8:02 ` [dpdk-dev] [PATCH 4/9] vhost: make some vDPA callbacks mandatory Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 5/9] vhost: check vDPA configuration succeed Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 6/9] vhost: add support for virtio status Maxime Coquelin
2020-06-11  2:45   ` Xia, Chenbo
2020-06-16  4:29   ` Xia, Chenbo
2020-06-22 10:18     ` Adrian Moreno
2020-06-22 11:00       ` Xia, Chenbo
2020-05-14  8:02 ` [dpdk-dev] [PATCH 7/9] vdpa/ifc: enable status protocol feature Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 8/9] vdpa/mlx5: " Maxime Coquelin
2020-05-14  8:02 ` [dpdk-dev] [PATCH 9/9] vhost: only use vDPA config workaround if needed Maxime Coquelin
2020-06-07 10:38   ` Matan Azrad
2020-06-08  8:34     ` Maxime Coquelin
2020-06-08  9:19       ` Matan Azrad
2020-06-09  9:04         ` Maxime Coquelin
2020-06-09 11:09           ` Matan Azrad
2020-06-09 11:26             ` Maxime Coquelin
2020-06-09 17:23             ` Maxime Coquelin
2020-06-14  6:08               ` Matan Azrad
2020-06-17  9:39                 ` Maxime Coquelin
2020-06-17 11:04                   ` Matan Azrad
2020-06-17 12:29                     ` Maxime Coquelin [this message]
2020-06-18  6:39                       ` Matan Azrad
2020-06-18  7:30                         ` Maxime Coquelin
2020-06-23 10:42                           ` Wang, Xiao W

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=7cdc8505-a667-81a3-b8ed-22dd34b958f7@redhat.com \
    --to=maxime.coquelin@redhat.com \
    --cc=amorenoz@redhat.com \
    --cc=dev@dpdk.org \
    --cc=jasowang@redhat.com \
    --cc=lulu@redhat.com \
    --cc=matan@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=viacheslavo@mellanox.com \
    --cc=xiao.w.wang@intel.com \
    --cc=xiaolong.ye@intel.com \
    /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).