raw/ioat: fix missing ring pointer reset

Message ID 20210617141815.93367-1-kevin.laatz@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series raw/ioat: fix missing ring pointer reset |

Checks

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

Commit Message

Kevin Laatz June 17, 2021, 2:18 p.m. UTC
  In the event of a device reconfigure, "hdls_avail" is not being reset. This
can lead to miscalculations in rte_ioat_completed_ops(), causing the
function to report an incorrect amount of completed operations. This patch
fixes the issue by resetting "hdls_avail" during the device configure.

Fixes: 74464005a2af ("raw/ioat: rework SW ring layout")

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/raw/ioat/ioat_common.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Bruce Richardson June 17, 2021, 2:21 p.m. UTC | #1
On Thu, Jun 17, 2021 at 02:18:15PM +0000, Kevin Laatz wrote:
> In the event of a device reconfigure, "hdls_avail" is not being reset. This
> can lead to miscalculations in rte_ioat_completed_ops(), causing the
> function to report an incorrect amount of completed operations. This patch
> fixes the issue by resetting "hdls_avail" during the device configure.
> 
> Fixes: 74464005a2af ("raw/ioat: rework SW ring layout")
> 
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
> ---
To catch more of these reconfigure issues, we should look to add an
appropriate unit test.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  
Thomas Monjalon June 22, 2021, 9:12 p.m. UTC | #2
17/06/2021 16:21, Bruce Richardson:
> On Thu, Jun 17, 2021 at 02:18:15PM +0000, Kevin Laatz wrote:
> > In the event of a device reconfigure, "hdls_avail" is not being reset. This
> > can lead to miscalculations in rte_ioat_completed_ops(), causing the
> > function to report an incorrect amount of completed operations. This patch
> > fixes the issue by resetting "hdls_avail" during the device configure.
> > 
> > Fixes: 74464005a2af ("raw/ioat: rework SW ring layout")
> > 
> > Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
> > ---
> To catch more of these reconfigure issues, we should look to add an
> appropriate unit test.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Cc: stable@dpdk.org

Applied, thanks
  

Patch

diff --git a/drivers/raw/ioat/ioat_common.c b/drivers/raw/ioat/ioat_common.c
index f4771745cc..60de41152a 100644
--- a/drivers/raw/ioat/ioat_common.c
+++ b/drivers/raw/ioat/ioat_common.c
@@ -174,6 +174,7 @@  idxd_dev_configure(const struct rte_rawdev *dev,
 	}
 	rte_idxd->hdls_read = rte_idxd->batch_start = 0;
 	rte_idxd->batch_size = 0;
+	rte_idxd->hdls_avail = 0;
 
 	return 0;
 }