diff mbox series

dmaengine: idxd: add module parameter to force disable of SVA

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

Commit Message

Dave Jiang Jan. 15, 2021, 10:01 p.m. UTC
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(-)

Comments

Vinod Koul Jan. 17, 2021, 6:51 a.m. UTC | #1
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);
>
Dave Jiang Jan. 18, 2021, 5:06 p.m. UTC | #2
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);
>>
Vinod Koul Jan. 19, 2021, 4:38 p.m. UTC | #3
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
Dave Jiang Jan. 19, 2021, 7:44 p.m. UTC | #4
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
>
Vinod Koul Jan. 26, 2021, 5:02 p.m. UTC | #5
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 mbox series

Patch

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);