Re: [PATCH 8/8] habanalabs: enable 64-bit DMA mask in POWER9

From: Oded Gabbay
Date: Tue Jun 11 2019 - 04:52:43 EST


On Tue, Jun 11, 2019 at 11:08 AM Oded Gabbay <oded.gabbay@xxxxxxxxx> wrote:
>
> On Tue, Jun 11, 2019 at 10:59 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> 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