[dpdk-dev] [PATCH] vdpa/mlx5: use master core Id for vhost thread

Matan Azrad matan at mellanox.com
Tue Jul 28 09:19:58 CEST 2020



From: David Marchand
> On Tue, Jul 28, 2020 at 8:11 AM Xueming Li <xuemingl at mellanox.com>
> wrote:
> >
> > With latest rte api, vdpa example failed on vq setup, the api to get
> > event queue of specified core failed.
> >
> > The api to get event queue needs core id as input, but after commit
> > 67ae5936c4fc36 ("eal: fix lcore accessors for non-EAL threads"), code
> > of "vhost-event" thread to get current core returns -1, an invalid
> > core id.
> >
> > As vhost thread created on same core of eal master core, this patch
> > uses master core ID as a workaround.
> 
> rte_lcore_to_cpu_id(-1) is supposed to return the current lcore id.
> As explained in the commitlog of 67ae5936c4fc36, for a non-EAL thread
> (which has no associated lcore by default) calling this function means
> lcore_config[-1].core_id.

Deosn't lcore mean core?
So, if the private thread run on a core that opened by EAL,
Shouldn't the API return the lcore of the private thread core?

> 
> Did I miss something?
> If not, this is not a workaround but a fix.

I'm not sure yet.

> >
> > Signed-off-by: Xueming Li <xuemingl at mellanox.com>
> > Acked-by: Matan Azrad <matan at mellanox.com>
> > ---
> >  drivers/vdpa/mlx5/mlx5_vdpa_event.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_event.c
> > b/drivers/vdpa/mlx5/mlx5_vdpa_event.c
> > index 13ad43611e..ff6db8e345 100644
> > --- a/drivers/vdpa/mlx5/mlx5_vdpa_event.c
> > +++ b/drivers/vdpa/mlx5/mlx5_vdpa_event.c
> > @@ -55,7 +55,7 @@ mlx5_vdpa_event_qp_global_prepare(struct
> > mlx5_vdpa_priv *priv)
> >
> >         if (priv->eventc)
> >                 return 0;
> > -       lcore = (uint32_t)rte_lcore_to_cpu_id(-1);
> > +       lcore = (uint32_t)rte_get_master_lcore();
> >         if (mlx5_glue->devx_query_eqn(priv->ctx, lcore, &priv->eqn)) {
> >                 rte_errno = errno;
> >                 DRV_LOG(ERR, "Failed to query EQ number %d.",
> > rte_errno);
> > --
> > 2.17.1
> >
> 
> 
> --
> David Marchand



More information about the dev mailing list