Hi, > -----Original Message----- > From: Stojaczyk, Dariusz > Sent: Monday, September 17, 2018 9:47 PM > To: [email protected] > Cc: Alejandro Lucero <[email protected]>; Burakov, Anatoly > <[email protected]>; [email protected]; Stojaczyk, Dariusz > <[email protected]>; Wang, Xiao W <[email protected]> > Subject: [PATCH 1/2] eal/vfio: check if we already have the group fd open > > From: Dariusz Stojaczyk <[email protected]> > > 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: [email protected] > > Signed-off-by: Dariusz Stojaczyk <[email protected]> > --- > 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 <[email protected]> BRs, Xiao

