[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