Message ID | 161074811013.2184257.13335125853932003159.stgit@djiang5-desk3.ch.intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | dmaengine: idxd: add module parameter to force disable of SVA | expand |
On 15-01-21, 15:01, Dave Jiang wrote: > Add a module parameter that overrides the SVA feature enabling. This keeps > the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, > the descriptor fields must be programmed with dma_addr_t from the Linux DMA > API for source, destination, and completion descriptors. > > Signed-off-by: Dave Jiang <dave.jiang@intel.com> > --- > drivers/dma/idxd/init.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c > index 25cc947c6179..9687a24ff982 100644 > --- a/drivers/dma/idxd/init.c > +++ b/drivers/dma/idxd/init.c > @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); > MODULE_LICENSE("GPL v2"); > MODULE_AUTHOR("Intel Corporation"); > > +static bool sva = true; > +module_param(sva, bool, 0644); > +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); Documentation for this please.. > + > #define DRV_NAME "idxd" > > bool support_enqcmd; > @@ -338,12 +342,14 @@ static int idxd_probe(struct idxd_device *idxd) > idxd_device_init_reset(idxd); > dev_dbg(dev, "IDXD reset complete\n"); > > - if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM)) { > + if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM) && sva) { > rc = idxd_enable_system_pasid(idxd); > if (rc < 0) > dev_warn(dev, "Failed to enable PASID. No SVA support: %d\n", rc); > else > set_bit(IDXD_FLAG_PASID_ENABLED, &idxd->flags); > + } else if (!sva) { > + dev_warn(dev, "User forced SVA off via module param.\n"); > } > > idxd_read_caps(idxd); >
On 1/16/2021 11:51 PM, Vinod Koul wrote: > On 15-01-21, 15:01, Dave Jiang wrote: >> Add a module parameter that overrides the SVA feature enabling. This keeps >> the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, >> the descriptor fields must be programmed with dma_addr_t from the Linux DMA >> API for source, destination, and completion descriptors. >> >> Signed-off-by: Dave Jiang <dave.jiang@intel.com> >> --- >> drivers/dma/idxd/init.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c >> index 25cc947c6179..9687a24ff982 100644 >> --- a/drivers/dma/idxd/init.c >> +++ b/drivers/dma/idxd/init.c >> @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); >> MODULE_LICENSE("GPL v2"); >> MODULE_AUTHOR("Intel Corporation"); >> >> +static bool sva = true; >> +module_param(sva, bool, 0644); >> +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); > Documentation for this please.. Just comments or is there somewhere specific for driver module parameter documentations? > >> + >> #define DRV_NAME "idxd" >> >> bool support_enqcmd; >> @@ -338,12 +342,14 @@ static int idxd_probe(struct idxd_device *idxd) >> idxd_device_init_reset(idxd); >> dev_dbg(dev, "IDXD reset complete\n"); >> >> - if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM)) { >> + if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM) && sva) { >> rc = idxd_enable_system_pasid(idxd); >> if (rc < 0) >> dev_warn(dev, "Failed to enable PASID. No SVA support: %d\n", rc); >> else >> set_bit(IDXD_FLAG_PASID_ENABLED, &idxd->flags); >> + } else if (!sva) { >> + dev_warn(dev, "User forced SVA off via module param.\n"); >> } >> >> idxd_read_caps(idxd); >>
On 18-01-21, 10:06, Dave Jiang wrote: > > On 1/16/2021 11:51 PM, Vinod Koul wrote: > > On 15-01-21, 15:01, Dave Jiang wrote: > > > Add a module parameter that overrides the SVA feature enabling. This keeps > > > the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, > > > the descriptor fields must be programmed with dma_addr_t from the Linux DMA > > > API for source, destination, and completion descriptors. > > > > > > Signed-off-by: Dave Jiang <dave.jiang@intel.com> > > > --- > > > drivers/dma/idxd/init.c | 8 +++++++- > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c > > > index 25cc947c6179..9687a24ff982 100644 > > > --- a/drivers/dma/idxd/init.c > > > +++ b/drivers/dma/idxd/init.c > > > @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); > > > MODULE_LICENSE("GPL v2"); > > > MODULE_AUTHOR("Intel Corporation"); > > > +static bool sva = true; > > > +module_param(sva, bool, 0644); > > > +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); > > Documentation for this please.. > > Just comments or is there somewhere specific for driver module parameter > documentations? All the parameters are supposed to be documented in Documentation/admin-guide/kernel-parameters.txt Thanks
On 1/19/2021 9:38 AM, Vinod Koul wrote: > On 18-01-21, 10:06, Dave Jiang wrote: >> On 1/16/2021 11:51 PM, Vinod Koul wrote: >>> On 15-01-21, 15:01, Dave Jiang wrote: >>>> Add a module parameter that overrides the SVA feature enabling. This keeps >>>> the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, >>>> the descriptor fields must be programmed with dma_addr_t from the Linux DMA >>>> API for source, destination, and completion descriptors. >>>> >>>> Signed-off-by: Dave Jiang <dave.jiang@intel.com> >>>> --- >>>> drivers/dma/idxd/init.c | 8 +++++++- >>>> 1 file changed, 7 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c >>>> index 25cc947c6179..9687a24ff982 100644 >>>> --- a/drivers/dma/idxd/init.c >>>> +++ b/drivers/dma/idxd/init.c >>>> @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); >>>> MODULE_LICENSE("GPL v2"); >>>> MODULE_AUTHOR("Intel Corporation"); >>>> +static bool sva = true; >>>> +module_param(sva, bool, 0644); >>>> +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); >>> Documentation for this please.. >> Just comments or is there somewhere specific for driver module parameter >> documentations? > All the parameters are supposed to be documented in Documentation/admin-guide/kernel-parameters.txt It seems to be for core kernel components and subsystems, and not specific device drivers. I'm not seeing any of the dmaengine driver module params being in this doc after grepping in drivers/dma. > > Thanks >
On 19-01-21, 12:44, Dave Jiang wrote: > > On 1/19/2021 9:38 AM, Vinod Koul wrote: > > On 18-01-21, 10:06, Dave Jiang wrote: > > > On 1/16/2021 11:51 PM, Vinod Koul wrote: > > > > On 15-01-21, 15:01, Dave Jiang wrote: > > > > > Add a module parameter that overrides the SVA feature enabling. This keeps > > > > > the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, > > > > > the descriptor fields must be programmed with dma_addr_t from the Linux DMA > > > > > API for source, destination, and completion descriptors. > > > > > > > > > > Signed-off-by: Dave Jiang <dave.jiang@intel.com> > > > > > --- > > > > > drivers/dma/idxd/init.c | 8 +++++++- > > > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > > > > > diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c > > > > > index 25cc947c6179..9687a24ff982 100644 > > > > > --- a/drivers/dma/idxd/init.c > > > > > +++ b/drivers/dma/idxd/init.c > > > > > @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); > > > > > MODULE_LICENSE("GPL v2"); > > > > > MODULE_AUTHOR("Intel Corporation"); > > > > > +static bool sva = true; > > > > > +module_param(sva, bool, 0644); > > > > > +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); > > > > Documentation for this please.. > > > Just comments or is there somewhere specific for driver module parameter > > > documentations? > > All the parameters are supposed to be documented in Documentation/admin-guide/kernel-parameters.txt > > It seems to be for core kernel components and subsystems, and not specific > device drivers. I'm not seeing any of the dmaengine driver module params > being in this doc after grepping in drivers/dma. Yeah we should fix that as well :)
diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index 25cc947c6179..9687a24ff982 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -26,6 +26,10 @@ MODULE_VERSION(IDXD_DRIVER_VERSION); MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("Intel Corporation"); +static bool sva = true; +module_param(sva, bool, 0644); +MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); + #define DRV_NAME "idxd" bool support_enqcmd; @@ -338,12 +342,14 @@ static int idxd_probe(struct idxd_device *idxd) idxd_device_init_reset(idxd); dev_dbg(dev, "IDXD reset complete\n"); - if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM)) { + if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM) && sva) { rc = idxd_enable_system_pasid(idxd); if (rc < 0) dev_warn(dev, "Failed to enable PASID. No SVA support: %d\n", rc); else set_bit(IDXD_FLAG_PASID_ENABLED, &idxd->flags); + } else if (!sva) { + dev_warn(dev, "User forced SVA off via module param.\n"); } idxd_read_caps(idxd);
Add a module parameter that overrides the SVA feature enabling. This keeps the driver in legacy mode even when intel_iommu=sm_on is set. In this mode, the descriptor fields must be programmed with dma_addr_t from the Linux DMA API for source, destination, and completion descriptors. Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- drivers/dma/idxd/init.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)