raw/ioat: fix config script queue size calculation

Message ID 20210716132155.1498858-1-kevin.laatz@intel.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series raw/ioat: fix config script queue size calculation |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot success github build: passed
ci/iol-abi-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance fail Performance Testing issues
ci/Intel-compilation warning apply issues

Commit Message

Kevin Laatz July 16, 2021, 1:21 p.m. UTC
  The queue size calculation is currently based on "max_tokens" rather than
"max_work_queues_size". This is resulting in the queue size being
incorrectly configured when using the script to configure devices bound to
the IDXD kernel driver.
This patch fixes this miscalculation so devices are configured with
appropriate queue size.

Fixes: 01863b9d2354 ("raw/ioat: include example configuration script")
Cc: stable@dpdk.org

Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/raw/ioat/dpdk_idxd_cfg.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Ananyev, Konstantin July 16, 2021, 2:10 p.m. UTC | #1
> The queue size calculation is currently based on "max_tokens" rather than
> "max_work_queues_size". This is resulting in the queue size being
> incorrectly configured when using the script to configure devices bound to
> the IDXD kernel driver.
> This patch fixes this miscalculation so devices are configured with
> appropriate queue size.
> 
> Fixes: 01863b9d2354 ("raw/ioat: include example configuration script")
> Cc: stable@dpdk.org
> 
> Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
> ---
>  drivers/raw/ioat/dpdk_idxd_cfg.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/raw/ioat/dpdk_idxd_cfg.py b/drivers/raw/ioat/dpdk_idxd_cfg.py
> index 83ef4817db..fcc27822ef 100755
> --- a/drivers/raw/ioat/dpdk_idxd_cfg.py
> +++ b/drivers/raw/ioat/dpdk_idxd_cfg.py
> @@ -63,7 +63,7 @@ def configure_dsa(dsa_id, queues, prefix):
>      max_groups = dsa_dir.read_int("max_groups")
>      max_engines = dsa_dir.read_int("max_engines")
>      max_queues = dsa_dir.read_int("max_work_queues")
> -    max_tokens = dsa_dir.read_int("max_tokens")
> +    max_work_queues_size = dsa_dir.read_int("max_work_queues_size")
> 
>      nb_queues = min(queues, max_queues)
>      if queues > nb_queues:
> @@ -82,7 +82,7 @@ def configure_dsa(dsa_id, queues, prefix):
>                               "mode": "dedicated",
>                               "name": f"{prefix}_wq{dsa_id}.{q}",
>                               "priority": 1,
> -                             "size": int(max_tokens / nb_queues)})
> +                             "size": int(max_work_queues_size / nb_queues)})
> 
>      # enable device and then queues
>      drv_dir.write_values({"bind": f"dsa{dsa_id}"})
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

> 2.25.1
  
Bruce Richardson July 16, 2021, 2:25 p.m. UTC | #2
On Fri, Jul 16, 2021 at 01:21:55PM +0000, Kevin Laatz wrote:
> The queue size calculation is currently based on "max_tokens" rather than
> "max_work_queues_size". This is resulting in the queue size being
> incorrectly configured when using the script to configure devices bound to
> the IDXD kernel driver.
> This patch fixes this miscalculation so devices are configured with
> appropriate queue size.
> 
> Fixes: 01863b9d2354 ("raw/ioat: include example configuration script")
> Cc: stable@dpdk.org
> 
> Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  
David Marchand July 20, 2021, 1:50 p.m. UTC | #3
On Fri, Jul 16, 2021 at 3:22 PM Kevin Laatz <kevin.laatz@intel.com> wrote:
>
> The queue size calculation is currently based on "max_tokens" rather than
> "max_work_queues_size". This is resulting in the queue size being
> incorrectly configured when using the script to configure devices bound to
> the IDXD kernel driver.
> This patch fixes this miscalculation so devices are configured with
> appropriate queue size.
>
> Fixes: 01863b9d2354 ("raw/ioat: include example configuration script")
> Cc: stable@dpdk.org
>
> Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Applied, thanks.
  

Patch

diff --git a/drivers/raw/ioat/dpdk_idxd_cfg.py b/drivers/raw/ioat/dpdk_idxd_cfg.py
index 83ef4817db..fcc27822ef 100755
--- a/drivers/raw/ioat/dpdk_idxd_cfg.py
+++ b/drivers/raw/ioat/dpdk_idxd_cfg.py
@@ -63,7 +63,7 @@  def configure_dsa(dsa_id, queues, prefix):
     max_groups = dsa_dir.read_int("max_groups")
     max_engines = dsa_dir.read_int("max_engines")
     max_queues = dsa_dir.read_int("max_work_queues")
-    max_tokens = dsa_dir.read_int("max_tokens")
+    max_work_queues_size = dsa_dir.read_int("max_work_queues_size")
 
     nb_queues = min(queues, max_queues)
     if queues > nb_queues:
@@ -82,7 +82,7 @@  def configure_dsa(dsa_id, queues, prefix):
                              "mode": "dedicated",
                              "name": f"{prefix}_wq{dsa_id}.{q}",
                              "priority": 1,
-                             "size": int(max_tokens / nb_queues)})
+                             "size": int(max_work_queues_size / nb_queues)})
 
     # enable device and then queues
     drv_dir.write_values({"bind": f"dsa{dsa_id}"})