Re: [PATCH] dmaengine: idxd: add module parameter to force disable of SVA

Dave Jiang
2021-01-18T17:10:05Z

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