On 4/2/24 10:07 PM, Jerry Snitselaar wrote: > Currenty if the user driver is probed on a workqueue configured for > another driver with SVA not enabled on the system, it will print > out a number of probe failing messages like the following: > > [ 264.831140] user: probe of wq13.0 failed with error -95 > > On some systems, such as GNR, the number of messages can > reach over 100. > > Move the SVA feature check to be after the driver name match > check. > > Cc: Vinod Koul <vkoul@xxxxxxxxxx> > Cc: dmaengine@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Jerry Snitselaar <jsnitsel@xxxxxxxxxx> Seems reasonable. Thanks! Reviewed-by: Dave Jiang <dave.jiang@xxxxxxxxx> > --- > drivers/dma/idxd/cdev.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c > index 8078ab9acfbc..a4b771781afc 100644 > --- a/drivers/dma/idxd/cdev.c > +++ b/drivers/dma/idxd/cdev.c > @@ -517,6 +517,14 @@ static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) > if (idxd->state != IDXD_DEV_ENABLED) > return -ENXIO; > > + mutex_lock(&wq->wq_lock); > + > + if (!idxd_wq_driver_name_match(wq, dev)) { > + idxd->cmd_status = IDXD_SCMD_WQ_NO_DRV_NAME; > + rc = -ENODEV; > + goto wq_err; > + } > + > /* > * User type WQ is enabled only when SVA is enabled for two reasons: > * - If no IOMMU or IOMMU Passthrough without SVA, userspace > @@ -532,14 +540,7 @@ static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) > dev_dbg(&idxd->pdev->dev, > "User type WQ cannot be enabled without SVA.\n"); > > - return -EOPNOTSUPP; > - } > - > - mutex_lock(&wq->wq_lock); > - > - if (!idxd_wq_driver_name_match(wq, dev)) { > - idxd->cmd_status = IDXD_SCMD_WQ_NO_DRV_NAME; > - rc = -ENODEV; > + rc = -EOPNOTSUPP; > goto wq_err; > } >