> -----Original Message----- > From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma- > owner@xxxxxxxxxxxxxxx> On Behalf Of Jason Gunthorpe > Sent: Monday, September 17, 2018 12:02 PM > To: Steve Wise <swise@xxxxxxxxxxxxxxxxxxxxx> > Cc: 'Leon Romanovsky' <leon@xxxxxxxxxx>; 'Bernard Metzler' > <BMT@xxxxxxxxxxxxxx>; linux-rdma@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v3 00/13] Request for Comments on SoftiWarp > > On Mon, Sep 17, 2018 at 10:22:04AM -0500, Steve Wise wrote: > > > > >>>> Why? This is not current practice for rdma devices: the core > names > > > them. > > > > >>> > > > > >>> That is a bad practice.. Leon has been working on device renaming > > like > > > > >>> netdev has, so it would make no sense to have no name here and > have > > > > >>> renaming down the road. > > > > >>> > > > > >>> Jason > > > > >>> > > > > >> > > > > >> This causes a slit kink in arbitrarily naming rxe rdma devices. From > > > > >> providers/rxe/rxe.c: > > > > >> > > > > >> static const struct verbs_match_ent hca_table[] = { > > > > >> /* FIXME: rxe needs a more reliable way to detect the rxe > > device */ > > > > >> VERBS_NAME_MATCH("rxe", NULL), > > > > >> {}, > > > > >> }; > > > > >> > > > > >> > > > > >> So when I add a new rxe device named "foo0", it gets added fine in > > the > > > > >> kernel, but the user space side skips it. It doesn't show up in > > > > >> ibv_devices or ibv_devinfo for example. But the sysfs entries are > > > there... > > > > > > > > > > Yes, this needs fixing too :( > > > > > > > > > > I was hoping we'd get to netlink discovery before this became an > > > > > issue.. The right solution is to use the new driver id number, I > > > > > think. > > > > > > > > > > Jason > > > > > > > > > > > > > Do you mean the rdma_driver_id enum? That would I methinks... > > > > > > Neltink ibdev index + rdma_driver_id will give us perfect match of > > > underlying device. > > > > > > Thanks > > > > So currently there is this verbs_match_ent struct and VERBS_MATCH* > macros in > > libibverbs/driver.h. These allow providers to specify either a PCI > > vendor/device ID or a string that the libibverbs core uses to match > > providers to devices. The string is a hack to support thinks like RXE that > > don't have a specific vendor/device ID since it supports any arbitrary NIC > > device. > > > > Should verbs_match_ent and friends be enhanced, for example, to add > match by > > driver_id? > > Probably, yes, unless there is some other way we can avoid this in the > short term.. > Currently librxe is telling the core to match any rdma device names that begin with "rxe". Can we change that to have librxe tell the core to match any rdma devices that come from module "rdma_rxe"? Its just as ugly, but would work until we finalize the driver_id design. > > And currently the kernel side does nothing with driver_id. > > The ioctl path checks it. > > > Should it export the driver id to sysfs? > > I was hoping we could discover this over netlink and avoid changing > sysfs.. But timelines might not work out for that now - Leon? > So the goal is to get rid of sysfs as the way libibverbs gets info on kernel side objects? and instead use netlink? Steve.