Hi, > -----Original Message----- > From: Stojaczyk, Dariusz > Sent: Monday, September 17, 2018 9:47 PM > To: dev@dpdk.org > Cc: Alejandro Lucero <alejandro.luc...@netronome.com>; Burakov, Anatoly > <anatoly.bura...@intel.com>; sta...@dpdk.org; Stojaczyk, Dariusz > <dariusz.stojac...@intel.com>; Wang, Xiao W <xiao.w.w...@intel.com> > Subject: [PATCH 1/2] eal/vfio: check if we already have the group fd open > > From: Dariusz Stojaczyk <dariuszx.stojac...@intel.com> > > Always attempt to find already opened fd for an iommu > group as subsequent attempts to open it will fail. > > There's no public API to check if a group was already > bound and has a container, so rte_vfio_container_group_bind() > shouldn't fail in such case. > > Fixes: ea2dc1066870 ("vfio: add multi container support") > Cc: xiao.w.w...@intel.com > > Signed-off-by: Dariusz Stojaczyk <dariuszx.stojac...@intel.com> > --- > lib/librte_eal/linuxapp/eal/eal_vfio.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c > b/lib/librte_eal/linuxapp/eal/eal_vfio.c > index c68dc38e0..bcb869be1 100644 > --- a/lib/librte_eal/linuxapp/eal/eal_vfio.c > +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c > @@ -1680,6 +1680,11 @@ rte_vfio_container_group_bind(int container_fd, > int iommu_group_num) > return -1; > } > > + /* check if we already have the group descriptor open */ > + for (i = 0; i < VFIO_MAX_GROUPS; i++) > + if (vfio_cfg->vfio_groups[i].group_num == iommu_group_num) > + return vfio_cfg->vfio_groups[i].fd; > + > /* Check room for new group */ > if (vfio_cfg->vfio_active_groups == VFIO_MAX_GROUPS) { > RTE_LOG(ERR, EAL, "Maximum number of VFIO groups > reached!\n"); > -- > 2.17.1
Acked-by: Xiao Wang <xiao.w.w...@intel.com> BRs, Xiao