dmaengine: idxd: Fix issues with PRS disable sysfs knob
authorFenghua Yu <fenghua.yu@intel.com>
Fri, 11 Aug 2023 01:26:35 +0000 (18:26 -0700)
committerVinod Koul <vkoul@kernel.org>
Mon, 21 Aug 2023 13:26:31 +0000 (18:56 +0530)
There are two issues in the current PRS disable sysfs store function
wq_prs_disable_store():

1. Since PRS disable knob is invisible if PRS disable is not supported
   in WQ, it's redundant to check PRS support again in the store function
   again. Remove the redundant PRS support check.
2. Since PRS disable is read-only when the device is not configurable,
   PRS disable cannot be changed on the device. Add device configurable
   check in the store function.

Fixes: f2dc327131b5 ("dmaengine: idxd: add per wq PRS disable")
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20230811012635.535413-2-fenghua.yu@intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/idxd/sysfs.c

index 66c89b0..a5c3eb4 100644 (file)
@@ -1131,8 +1131,8 @@ static ssize_t wq_prs_disable_store(struct device *dev, struct device_attribute
        if (wq->state != IDXD_WQ_DISABLED)
                return -EPERM;
 
-       if (!idxd->hw.wq_cap.wq_prs_support)
-               return -EOPNOTSUPP;
+       if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))
+               return -EPERM;
 
        rc = kstrtobool(buf, &prs_dis);
        if (rc < 0)