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@xxxxxxxxx> > --- > 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); > -- ~Vinod