On Tue, Jun 11, 2019 at 11:08 AM Oded Gabbay <oded.gab...@gmail.com> wrote: > > On Tue, Jun 11, 2019 at 10:59 AM Greg KH <gre...@linuxfoundation.org> wrote: > > > > On Tue, Jun 11, 2019 at 08:50:45AM +0300, Oded Gabbay wrote: > > > --- a/drivers/misc/habanalabs/habanalabs_drv.c > > > +++ b/drivers/misc/habanalabs/habanalabs_drv.c > > > @@ -28,6 +28,7 @@ static DEFINE_MUTEX(hl_devs_idr_lock); > > > > > > static int timeout_locked = 5; > > > static int reset_on_lockup = 1; > > > +static int power9_64bit_dma_enable; > > > > > > module_param(timeout_locked, int, 0444); > > > MODULE_PARM_DESC(timeout_locked, > > > @@ -37,6 +38,10 @@ module_param(reset_on_lockup, int, 0444); > > > MODULE_PARM_DESC(reset_on_lockup, > > > "Do device reset on lockup (0 = no, 1 = yes, default yes)"); > > > > > > +module_param(power9_64bit_dma_enable, int, 0444); > > > +MODULE_PARM_DESC(power9_64bit_dma_enable, > > > + "Enable 64-bit DMA mask. Should be set only in POWER9 machine (0 = > > > no, 1 = yes, default no)"); > > > + > > > #define PCI_VENDOR_ID_HABANALABS 0x1da3 > > > > > > #define PCI_IDS_GOYA 0x0001 > > > > > > This is not the 1990's, please do not use module parameters. Yeah, you > > have a bunch of them already, but do not add additional ones that can be > > easily determined at runtime, like this one. > > > > thanks, > > > > greg k-h > > Hi Greg, > I would love to do this in runtime and that was my intent all along > until I hit a wall on *how* to find out it in runtime if I'm running > on POWER9 with PHB4 or not. > I did a search in the kernel code, consulted with a couple of people > but I didn't get any way of doing this in runtime. > If you have some way, please share it with me because I hit a wall > with this issue. > > The fact of the matter is, I have two different configurations of *my* > device's PCIe controller. One is only suitable to POWER9 with PHB4 and > the other one suits all the rest architectures/systems (that we have > tested so far). So I have to know which system I'm running on and as I > said, I didn't find a kernel API which can help me do that. > > Thanks, > Oded
btw, even the powernv code determines the PHB model by reading the device-tree file. They don't even read it from the controller. Having said that, it occurred to me that I may be able to determine this by the PCI ID of the parent bus of my device. It has a unique PCI ID so hopefully that will be enough. I will check and update here. Thanks, Oded