[PATCH] vdpa/sfc: resolve race between libvhost and dev_conf

Maxime Coquelin maxime.coquelin at redhat.com
Thu Jul 7 14:38:31 CEST 2022



On 7/6/22 11:24, abhimanyu.saini at xilinx.com wrote:
> From: Abhimanyu Saini <absaini at amd.com>
> 
> libvhost calls dev_conf() before prosessing the
> VHOST_USER_SET_VRING_CALL message for the last VQ. So
> this message is processed after dev_conf() returns.
> 
> However, the dev_conf() function spawns a thread to set
> rte_vhost_host_notifier_ctrl() before returning control to
> libvhost. This parallel thread in turn invokes get_notify_area().
> To get the notify_area, the vdpa driver needs to query the HW and
> for this query it needs an enabled VQ.
> 
> But at the same time libvhost is processing the last
> VHOST_USER_SET_VRING_CALL, and to do that it disables the last VQ.
> 
> Hence there is a race b/w the libvhost and the vdpa driver.
> 
> To resolve this race condition, query the HW and cache notify_area
> inside dev_conf() instead of doing it the parallel thread.
> 
> Signed-off-by: Abhimanyu Saini <absaini at amd.com>
> ---
>   drivers/vdpa/sfc/sfc_vdpa_ops.c | 36 ++++++++++++++++++------------------
>   drivers/vdpa/sfc/sfc_vdpa_ops.h |  1 +
>   2 files changed, 19 insertions(+), 18 deletions(-)
> 

During today's Release status meeting, Andrew mentioned that this patch
has been for a log time already in your internal tree.

So it gives a bit of confidence in taking it in -rc4.

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

Thanks,
Maxime



More information about the dev mailing list