| From 0abc6409ffba65f0caf8d456db1f09e430240940 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 10 Aug 2023 18:26:35 -0700 |
| Subject: dmaengine: idxd: Fix issues with PRS disable sysfs knob |
| |
| From: Fenghua Yu <fenghua.yu@intel.com> |
| |
| [ Upstream commit 8cae66574398326134a41513b419e00ad4e380ca ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/dma/idxd/sysfs.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c |
| index 66c89b07b3f7b..a5c3eb4348325 100644 |
| --- a/drivers/dma/idxd/sysfs.c |
| +++ b/drivers/dma/idxd/sysfs.c |
| @@ -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) |
| -- |
| 2.40.1 |
| |