Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: ODP testcases for RDMA Write/Read and Atomic operations #1229

Merged
merged 5 commits into from Nov 21, 2022

Conversation

ddmatsu
Copy link
Contributor

@ddmatsu ddmatsu commented Sep 22, 2022

These patches add new testcases for ODP (test_odp.py). Currently, only Send/Recv operations are checked, and other operations are not tested with ODP at all. This patchset cleans-up the ODP test code and add four new testcases. I confirmed these new testcases succeeded with RFC implementation of Explicit ODP on rxe[1].

The new testcases succeeded also with ConnectX-6, but currently the ODP Atomic tests are skipped with my device. This is because the capability for RC (rc_odp_caps) is not filled with IB_ODP_SUPPORT_ATOMIC in internal_fill_odp_caps(). However, it seems the device can actually handle Atomic operations. I am not sure if this is a bug of the device or not. If anybody from NVIDIA knows why rc_odp_caps is unfilled, please let me know
cf. https://github.com/torvalds/linux/blame/master/drivers/infiniband/hw/mlx5/odp.c#L321

The first two patches are for clean-up:
tests: Import test.utils entirely for ODP test cases
tests: Make ODP test consistent with other traffic tests

The latter three add new testcases:
tests: Add tests for Atomic operations with ODP
tests: Add a test for RDMA Read with ODP
tests: Add a test for RDMA Write with ODP

[1] [RFC PATCH 0/7] RDMA/rxe: On-Demand Paging on SoftRoCE
https://lore.kernel.org/lkml/cover.1662461897.git.matsuda-daisuke@fujitsu.com/t/

The ODP test imports multiple objects from test.utils module. Make it
simple by importing the whole module just as majority of other tests do.

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
ODP test is using a syntax different from most other traffic tests. A
large portion of them treat 'client' and 'server' as class members and use
'traffic_args' as an argument for each test case.

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Add tests that use Atomic operations with ODP. They use the same workload
as 'compare-and-swap' and 'fetch-and-add' in "test_atomic.py".

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
@ddmatsu ddmatsu force-pushed the odp_testcases branch 2 times, most recently from e9dd7fb to 1ed3532 Compare October 4, 2022 08:58
@ddmatsu ddmatsu marked this pull request as draft October 4, 2022 09:38
@ddmatsu ddmatsu marked this pull request as ready for review October 5, 2022 00:21
Add a test that uses RDMA Read operation with ODP. Writing to a MR on the
server must precede for RDMA Read to succeed.

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Add a test that uses RDMA Write operation with ODP.

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
@EdwardSro
Copy link
Contributor

Regarding ODP Atomic tests, I agree that the ODP CAPs are not reporting the Atomic support, even though it's supported.
If you ignore the CAPs check, you'll see that actually the ODP Atomic tests pass.
I'll try to look at it, but anyway, it should not block this PR.

@ddmatsu
Copy link
Contributor Author

ddmatsu commented Oct 31, 2022

I believe this work is ready to be merged.
Could anybody take a look and get this merged?

@EdwardSro
Copy link
Contributor

@rleon

@jgunthorpe jgunthorpe merged commit 476f916 into linux-rdma:master Nov 21, 2022
@ddmatsu ddmatsu deleted the odp_testcases branch December 7, 2022 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants