From: Geliang Tang <tanggeliang(a)kylinos.cn>
This patchset adds opts argument for __start_server, and adds setsockopt
pointer together with optval and optlen into struct network_helper_opts
to make start_server_addr helper more flexible. With these modifications,
many duplicate codes can be dropped.
Patch 4 addresses comments of Martin and Eduard in the previous series.
Geliang Tang (6):
selftests/bpf: Add opts argument for __start_server
selftests/bpf: Make start_mptcp_server static
selftests/bpf: Drop start_server_proto helper
selftests/bpf: Add setsockopt for network_helper_opts
selftests/bpf: Use start_server_addr in sockopt_inherit
selftests/bpf: Use start_server_addr in test_tcp_check_syncookie
tools/testing/selftests/bpf/Makefile | 1 +
tools/testing/selftests/bpf/network_helpers.c | 53 ++++++++-------
tools/testing/selftests/bpf/network_helpers.h | 5 +-
.../testing/selftests/bpf/prog_tests/mptcp.c | 16 +++++
.../bpf/prog_tests/sockopt_inherit.c | 34 ++++------
.../bpf/test_tcp_check_syncookie_user.c | 64 ++++++-------------
6 files changed, 78 insertions(+), 95 deletions(-)
--
2.40.1
This patch captures the return value of the ./safesetid-test execution
by assigning it to the variable errcode. This change ensures that the
script properly handles the exit status of the safesetid-test.
Signed-off-by: Shengyu Li <shengyu.li.evgeny(a)gmail.com>
---
tools/testing/selftests/safesetid/safesetid-test.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/safesetid/safesetid-test.sh b/tools/testing/selftests/safesetid/safesetid-test.sh
index e4fdce675c54..0ebc6ddc4b6c 100755
--- a/tools/testing/selftests/safesetid/safesetid-test.sh
+++ b/tools/testing/selftests/safesetid/safesetid-test.sh
@@ -19,6 +19,7 @@ main_function()
{
check_root
./safesetid-test
+ errcode=$?
}
main_function
--
2.25.1
Add a test for exercising driver memory allocation failure paths.
page pool is a bit tricky to inject errors into at the page allocator
level because of the bulk alloc and recycling, so add explicit error
injection support "in front" of the caches.
Add a test to exercise that using only the standard APIs.
This is the first useful test for the new tests with an endpoint.
There's no point testing netdevsim here, so this is also the first
HW-only test in Python.
I'm not super happy with the traffic generation using iperf3,
my initial approach was to use mausezahn. But it turned out to be
5x slower in terms of PPS. Hopefully this is good enough for now.
Jakub Kicinski (6):
net: page_pool: support error injection
selftests: drv-net-hw: support using Python from net hw tests
selftests: net: py: extract tool logic
selftests: net: py: avoid all ports < 10k
selftests: drv-net: support generating iperf3 load
selftests: drv-net-hw: add test for memory allocation failures with
page pool
net/core/page_pool.c | 2 +
tools/testing/selftests/Makefile | 2 +-
.../testing/selftests/drivers/net/hw/Makefile | 2 +
.../drivers/net/hw/lib/py/__init__.py | 16 +++
.../selftests/drivers/net/hw/pp_alloc_fail.py | 129 ++++++++++++++++++
.../selftests/drivers/net/lib/py/__init__.py | 1 +
.../selftests/drivers/net/lib/py/env.py | 10 +-
.../selftests/drivers/net/lib/py/load.py | 41 ++++++
tools/testing/selftests/net/lib/py/ksft.py | 4 +
tools/testing/selftests/net/lib/py/utils.py | 14 +-
10 files changed, 214 insertions(+), 7 deletions(-)
create mode 100644 tools/testing/selftests/drivers/net/hw/lib/py/__init__.py
create mode 100755 tools/testing/selftests/drivers/net/hw/pp_alloc_fail.py
create mode 100644 tools/testing/selftests/drivers/net/lib/py/load.py
--
2.44.0
Add a test for exercising driver memory allocation failure paths.
page pool is a bit tricky to inject errors into at the page allocator
level because of the bulk alloc and recycling, so add explicit error
injection support "in front" of the caches.
Add a test to exercise that using only the standard APIs.
This is the first useful test for the new tests with an endpoint.
There's no point testing netdevsim here, so this is also the first
HW-only test in Python.
I'm not super happy with the traffic generation using iperf3,
my initial approach was to use mausezahn. But it turned out to be
5x slower in terms of PPS. Hopefully this is good enough for now.
v2:
- fix the string formatting for tool wrapper change (patch 3)
- fix import order for load.py
v1: https://lore.kernel.org/all/20240426232400.624864-1-kuba@kernel.org/
Jakub Kicinski (6):
net: page_pool: support error injection
selftests: drv-net-hw: support using Python from net hw tests
selftests: net: py: extract tool logic
selftests: net: py: avoid all ports < 10k
selftests: drv-net: support generating iperf3 load
selftests: drv-net-hw: add test for memory allocation failures with
page pool
net/core/page_pool.c | 2 +
tools/testing/selftests/Makefile | 2 +-
.../testing/selftests/drivers/net/hw/Makefile | 2 +
.../drivers/net/hw/lib/py/__init__.py | 16 +++
.../selftests/drivers/net/hw/pp_alloc_fail.py | 129 ++++++++++++++++++
.../selftests/drivers/net/lib/py/__init__.py | 1 +
.../selftests/drivers/net/lib/py/env.py | 10 +-
.../selftests/drivers/net/lib/py/load.py | 41 ++++++
tools/testing/selftests/net/lib/py/ksft.py | 4 +
tools/testing/selftests/net/lib/py/utils.py | 14 +-
10 files changed, 214 insertions(+), 7 deletions(-)
create mode 100644 tools/testing/selftests/drivers/net/hw/lib/py/__init__.py
create mode 100755 tools/testing/selftests/drivers/net/hw/pp_alloc_fail.py
create mode 100644 tools/testing/selftests/drivers/net/lib/py/load.py
--
2.44.0
Few patches that should have been there from day 1.
Anyway, they are coming now.
Signed-off-by: Benjamin Tissoires <bentiss(a)kernel.org>
---
Changes in v3:
- fixed bpf_test module not being able to be removed, because the bpf_wq
was never freed
- Link to v2: https://lore.kernel.org/r/20240430-bpf-next-v2-0-140aa50f0f19@kernel.org
Changes in v2:
- fix wq in hashtabs not being freed (and static call not being used)
- Link to v1: https://lore.kernel.org/r/20240425-bpf-next-v1-0-1d8330e6c643@kernel.org
---
Benjamin Tissoires (3):
bpf: do not walk twice the map on free
bpf: do not walk twice the hash map on free
selftests/bpf: drop an unused local variable
kernel/bpf/arraymap.c | 15 ++++-----
kernel/bpf/hashtab.c | 49 ++++++++---------------------
tools/testing/selftests/bpf/prog_tests/wq.c | 2 --
3 files changed, 21 insertions(+), 45 deletions(-)
---
base-commit: 1bba3b3d373dbafae891e7cb06b8c82c8d62aba1
change-id: 20240425-bpf-next-2114350587e3
Best regards,
--
Benjamin Tissoires <bentiss(a)kernel.org>
In our FOLL_LONGTERM tests, we prefault the page tables for the GUP-fast
test cases to be able to find a PTE and exercise the "longterm pinning
allowed" logic on the GUP-fast path where possible.
For now, we always prefault the page tables writable, resulting in PTEs
that are writable.
Let's cover more cases to also test if our unsharing logic works as
expected (and is able to make progress when there is nothing to unshare)
by mprotect'ing the range R/O when R/O-pinning, so we don't get PTEs
that are writable.
This change would have found an issue introduced by commit a12083d721d7
("mm/gup: handle hugepd for follow_page()"), whereby R/O pinning was not
able to make progress in all cases, because unsharing logic was not
provided with the VMA to decide at some point that long-term R/O pinning
a !anon page is fine.
Cc: Andrew Morton <akpm(a)linux-foundation.org>
Cc: Shuah Khan <shuah(a)kernel.org>
Cc: Peter Xu <peterx(a)redhat.com>
Signed-off-by: David Hildenbrand <david(a)redhat.com>
---
Follow-up to [1].
Tested only on x86-64, to make sure the tests are still passing.
[1] https://lkml.kernel.org/r/20240428190151.201002-3-peterx@redhat.com
---
tools/testing/selftests/mm/gup_longterm.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/mm/gup_longterm.c b/tools/testing/selftests/mm/gup_longterm.c
index ad168d35b23b7..6c6d99c1dc765 100644
--- a/tools/testing/selftests/mm/gup_longterm.c
+++ b/tools/testing/selftests/mm/gup_longterm.c
@@ -118,15 +118,22 @@ static void do_test(int fd, size_t size, enum test_type type, bool shared)
return;
}
- /*
- * Fault in the page writable such that GUP-fast can eventually pin
- * it immediately.
- */
+ /* Fault in the page such that GUP-fast can pin it directly. */
memset(mem, 0, size);
switch (type) {
case TEST_TYPE_RO:
case TEST_TYPE_RO_FAST:
+ /*
+ * Cover more cases regarding unsharing decisions when
+ * long-term R/O pinning by mapping the page R/O.
+ */
+ ret = mprotect(mem, size, PROT_READ);
+ if (ret) {
+ ksft_test_result_fail("mprotect() failed\n");
+ goto munmap;
+ }
+ /* FALLTHROUGH */
case TEST_TYPE_RW:
case TEST_TYPE_RW_FAST: {
struct pin_longterm_test args;
@@ -228,6 +235,7 @@ static void do_test(int fd, size_t size, enum test_type type, bool shared)
assert(false);
}
+munmap:
munmap(mem, size);
}
--
2.44.0
Few patches that should have been there from day 1.
Anyway, they are coming now.
Signed-off-by: Benjamin Tissoires <bentiss(a)kernel.org>
---
Changes in v2:
- fix wq in hashtabs not being freed (and static call not being used)
- Link to v1: https://lore.kernel.org/r/20240425-bpf-next-v1-0-1d8330e6c643@kernel.org
---
Benjamin Tissoires (3):
bpf: do not walk twice the map on free
bpf: do not walk twice the hash map on free
selftests/bpf: drop an unused local variable
kernel/bpf/arraymap.c | 15 ++++-----
kernel/bpf/hashtab.c | 49 ++++++++---------------------
tools/testing/selftests/bpf/prog_tests/wq.c | 2 --
3 files changed, 21 insertions(+), 45 deletions(-)
---
base-commit: 1bba3b3d373dbafae891e7cb06b8c82c8d62aba1
change-id: 20240425-bpf-next-2114350587e3
Best regards,
--
Benjamin Tissoires <bentiss(a)kernel.org>
Few patches that should have been there from day 1.
Anyway, they are coming now.
Signed-off-by: Benjamin Tissoires <bentiss(a)kernel.org>
---
Benjamin Tissoires (3):
bpf: do not walk twice the map on free
bpf: do not walk twice the hash map on free
selftests/bpf: drop an unused local variable
kernel/bpf/arraymap.c | 15 ++++++++-------
kernel/bpf/hashtab.c | 16 +++++-----------
tools/testing/selftests/bpf/prog_tests/wq.c | 2 --
3 files changed, 13 insertions(+), 20 deletions(-)
---
base-commit: 52578f7f53ff8fe3a8f6f3bc8b5956615c07a16e
change-id: 20240425-bpf-next-2114350587e3
Best regards,
--
Benjamin Tissoires <bentiss(a)kernel.org>