On Wed, Jun 12, 2019 at 03:12:24PM +0000, Salil Mehta wrote: > > From: linux-rdma-owner@xxxxxxxxxxxxxxx > > [mailto:linux-rdma-owner@xxxxxxxxxxxxxxx] On Behalf Of Jason Gunthorpe > > Sent: Wednesday, June 12, 2019 12:52 PM > > To: John Garry <john.garry@xxxxxxxxxx> > > Cc: Leon Romanovsky <leon@xxxxxxxxxx>; wangxi (M) <wangxi11@xxxxxxxxxx>; > > linux-rdma@xxxxxxxxxxxxxxx; dledford@xxxxxxxxxx; Linuxarm > > <linuxarm@xxxxxxxxxx> > > Subject: Re: [PATCH V4 for-next 1/3] RDMA/hns: Add mtr support for mixed > > multihop addressing > > > > On Wed, Jun 12, 2019 at 09:51:59AM +0100, John Garry wrote: > > > On 11/06/2019 06:56, Leon Romanovsky wrote: > > > > On Tue, Jun 11, 2019 at 10:37:48AM +0800, wangxi wrote: > > > > > > > > > > > > > > > 在 2019/6/10 21:27, Jason Gunthorpe 写道: > > > > > > On Sat, Jun 08, 2019 at 10:24:15AM +0800, wangxi wrote: > > > > > > > > > > > > > > Why is there an EXPROT_SYMBOL in a IB driver? I see many in > > > > > > > > hns. Please send a patch to remove all of them and respin this. > > > > > > > > > > > > > > > There are 2 modules in our ib driver, one is hns_roce.ko, another > > > > > > > is hns_roce_hw_v2.ko. all extern symbols are named like hns_roce_xxx, > > > > > > > this function defined in hns_roce.ko, and invoked in > > > > > > > hns_roce_hw_v2.ko. > > [...] > > > > In addition to this, v1 hw is a platform device driver and depends on HNS, > > > while v2 hw is for a PCI device and depends on PCI && HNS3. Attempts to > > > combine into a single ko would introduce messy dependencies and ifdefs. > > > > I suspect it would not be any different from how it is today. Do > > everything the same, just have one module not three. module_init/etc > > already take care of conditional compilation of the entire .c file via > > Makefile > > Okay. I see your point. > > As I understand, the code within v1 and v2 will almost never be required on > the same system since they belong to different types of hardware (platform/PCI). > Dependency between V1, V2 and common code is something like below platform and PCI can co-exist in the kernel, there is no reason to worry about them co-existing in the same driver other than loaded code size, which doesn't seem like a big deal here. About the only thing that might give me pause is that v2 depends on a different ethernet module than v1.. But that depends alot on size too, there is no harm to load a useless ethernet module if it is not large. Jason