Add support for running our existing GRO test against HW GRO
and LRO implementation. The first 3 patches are just ksft lib
nice-to-haves, and patch 4 cleans up the existing gro Python.
Patches 5 and 6 are of most practical interest. The support
reconfiguring the NIC to disable SW GRO and enable HW GRO and LRO.
Additionally last patch breaks up the existing GRO cases to
track HW compliance at finer granularity.
v2:
- fix restoring all features
- apply the generic XDP hack selectively (print a msg when it happens)
- a lot of small tweaks and 4 extra patches
v1: https://lore.kernel.org/20251128005242.2604732-1-kuba@kernel.org
Jakub Kicinski (6):
selftests: net: py: teach ksft_pr() multi-line safety
selftests: net: py: teach cmd() how to print itself
selftests: drv-net: gro: use cmd print
selftests: drv-net: gro: improve feature config
selftests: drv-net: gro: run the test against HW GRO and LRO
selftests: drv-net: gro: break out all individual test cases
tools/testing/selftests/drivers/net/gro.c | 399 +++++++++++---------
tools/testing/selftests/drivers/net/gro.py | 158 ++++++--
tools/testing/selftests/net/lib/py/ksft.py | 29 +-
tools/testing/selftests/net/lib/py/utils.py | 23 ++
4 files changed, 406 insertions(+), 203 deletions(-)
--
2.52.0
Various improvements/fixes for the mm kselftests:
- Patch 1-3 extend support for more build configurations: out-of-tree
$KDIR, cross-compilation, etc.
- Patch 4-6 fix issues related to faulting in pages, introducing a new
helper for that purpose.
- Patch 7 fixes the value returned by pagemap_ioctl (PASS was always
returned, which explains why the issue fixed in patch 6 went
unnoticed).
- Patch 8 improves the exit code of pfnmap.
Net results:
- 1 test no longer fails (patch 6)
- 3 tests are no longer skipped (patch 4)
- More accurate return values for whole suites (patch 7, 8)
- Extra tests are more likely to be built (patch 1-3)
---
v1..v2:
- New patches: 1, 4, 5, 8
v1: https://lore.kernel.org/all/20251216142633.2401447-1-kevin.brodsky@arm.com/
---
Cc: Andrew Morton <akpm(a)linux-foundation.org>
Cc: David Hildenbrand <david(a)kernel.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes(a)oracle.com>
Cc: Mark Brown <broonie(a)kernel.org>
Cc: Ryan Roberts <ryan.roberts(a)arm.com>
Cc: Shuah Khan <shuah(a)kernel.org>
---
Kevin Brodsky (8):
selftests/mm: default KDIR to build directory
selftests/mm: remove flaky header check
selftests/mm: pass down full CC and CFLAGS to check_config.sh
selftests/mm: fix usage of FORCE_READ() in cow tests
selftests/mm: introduce helper to read every page in range
selftests/mm: fix faulting-in code in pagemap_ioctl test
selftests/mm: fix exit code in pagemap_ioctl
selftests/mm: report SKIP in pfnmap if a check fails
tools/testing/selftests/mm/Makefile | 8 +-
tools/testing/selftests/mm/check_config.sh | 3 +-
tools/testing/selftests/mm/cow.c | 16 ++--
tools/testing/selftests/mm/hugetlb-madvise.c | 9 +-
tools/testing/selftests/mm/page_frag/Makefile | 2 +-
tools/testing/selftests/mm/pagemap_ioctl.c | 10 +-
tools/testing/selftests/mm/pfnmap.c | 95 ++++++++++++-------
.../selftests/mm/split_huge_page_test.c | 6 +-
tools/testing/selftests/mm/vm_util.h | 6 ++
9 files changed, 84 insertions(+), 71 deletions(-)
base-commit: 9ace4753a5202b02191d54e9fdf7f9e3d02b85eb
--
2.51.2
This series improves error handling in the passive TFO test by (1)
fixing a broken behavior when the child processes failed (or timed out),
and (2) adding more error handlng code in the test program.
The first patch fixes the behavior that the test didn't report failure
even if the server or the client process exited with non-zero status.
The second patch adds error handling code in the test program to improve
reliability of the test.
This series was split out from the following series to address the
feedback from Andrew Lunn:
https://lore.kernel.org/netdev/cover.1767032397.git.yk@y-koj.net/
Yohei Kojima (2):
selftests: net: fix passive TFO test to fail if child processes failed
selftests: net: improve error handling in passive TFO test
tools/testing/selftests/net/tfo.c | 10 +++++++---
tools/testing/selftests/net/tfo_passive.sh | 13 ++++++++++++-
2 files changed, 19 insertions(+), 4 deletions(-)
--
2.52.0
From: Abhishek Dubey <adubey(a)linux.ibm.com>
This patch series enables support for two BPF JIT features
on powerpc64. The first three patches target support for
tail calls with subprogram combinations. The third patch
includes an optimization in which NVRs are accommodated in
the stack save area of the trampoline frame. Implementation
details are provided in the commit messages.
The last three patches add support for BPF exceptions. An
architecture-specific stack walker is implemented to assist
with stack walk during exceptions. BPF selftest results and
implementation details are presented in the corresponding
commits.
Abhishek Dubey (6):
powerpc64/bpf: Support tailcalls with subprogs
powerpc64/bpf: Tailcall handling with trampolines
powerpc/bpf: use BPF_PPC_STACK_SAVE to spill trampoline NVRs
powerpc64/bpf: Add arch_bpf_stack_walk() for BPF JIT
powerpc64/bpf: Support exceptions
powerpc64/bpf: Additional NVR handling for bpf_throw
arch/powerpc/net/bpf_jit.h | 16 ++-
arch/powerpc/net/bpf_jit_comp.c | 90 +++++++++----
arch/powerpc/net/bpf_jit_comp64.c | 214 ++++++++++++++++++++++++------
3 files changed, 256 insertions(+), 64 deletions(-)
--
2.48.1
When running kunit_tool_test.py, the test_run_raw_output_invalid test
prints invalid usage text and error messages to stderr. This happens because the
test triggers kunit.main() with an invalid argument, causing argparse to
print the usage and exit.
This output is confusing to the user because it looks like a test failure
or usage error, even though the test passed successfully. Furthermore,
argparse displays 'usage: kunit_tool_test.py run ...', which is misleading
since the test script itself does not accept the 'run' command.
This patch mocks sys.stderr in the test to suppress this expected error
output, making the test execution output cleaner.
Signed-off-by: Jinseok Kim <always.starving0(a)gmail.com>
---
tools/testing/kunit/kunit_tool_test.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
index bbba921e0eac..7a8ba8e4f1d4 100755
--- a/tools/testing/kunit/kunit_tool_test.py
+++ b/tools/testing/kunit/kunit_tool_test.py
@@ -8,6 +8,7 @@
import unittest
from unittest import mock
+import io
import tempfile, shutil # Handling test_tmpdir
@@ -688,8 +689,9 @@ class KUnitMainTest(unittest.TestCase):
def test_run_raw_output_invalid(self):
self.linux_source_mock.run_kernel = mock.Mock(return_value=[])
- with self.assertRaises(SystemExit) as e:
- kunit.main(['run', '--raw_output=invalid'])
+ with mock.patch('sys.stderr', new=io.StringIO()):
+ with self.assertRaises(SystemExit) as e:
+ kunit.main(['run', '--raw_output=invalid'])
self.assertNotEqual(e.exception.code, 0)
def test_run_raw_output_does_not_take_positional_args(self):
--
2.43.0
v3:
- Patch 2: Change the condition for calling reset_partition_data() to
(new_prs <= 0).
- Patch 4: Update commit log and code comment to clarify the change.
- Add a new patch 5 to move the empty cpus/mems check to
cpuset1_validate_change().
v2:
- Patch 1: additional comment
- Patch 2: simplify the conditions for triggering call to
compute_excpus().
- Patch 3: update description of cpuset.cpus.exclusive in cgroup-v2.rst
to reflect the new behavior and change the name of the new
cpus_excl_conflict() parameter to xcpus_changed.
- Patch 4: update description of cpuset.cpus.partition in cgroup-v2.rst
to clarify what exclusive CPUs will be used when a partition is
created.
This patch series is inspired by the cpuset patch sent by Sun Shaojie [1].
The idea is to avoid invalidating sibling partitions when there is a
cpuset.cpus conflict. However this patch series does it in a slightly
different way to make its behavior more consistent with other cpuset
properties.
The first 3 patches are just some cleanup and minor bug fixes on
issues found during the investigation process. The last one is
the major patch that changes the way cpuset.cpus is being handled
during the partition creation process. Instead of invalidating sibling
partitions when there is a conflict, it will strip out the conflicting
exclusive CPUs and assign the remaining non-conflicting exclusive
CPUs to the new partition unless there is no more CPU left which will
fail the partition creation process. It is similar to the idea that
cpuset.cpus.effective may only contain a subset of CPUs specified in
cpuset.cpus. So cpuset.cpus.exclusive.effective may contain only a
subset of cpuset.cpus when a partition is created without setting
cpuset.cpus.exclusive.
Even setting cpuset.cpus.exclusive instead of cpuset.cpus may not
guarantee all the requested CPUs can be granted if parent doesn't have
access to some of those exclusive CPUs. The difference is that conflicts
from siblings is not possible with cpuset.cpus.exclusive as long as it
can be set successfully without failure.
[1] https://lore.kernel.org/lkml/20251117015708.977585-1-sunshaojie@kylinos.cn/
Waiman Long (5):
cgroup/cpuset: Streamline rm_siblings_excl_cpus()
cgroup/cpuset: Consistently compute effective_xcpus in
update_cpumasks_hier()
cgroup/cpuset: Don't fail cpuset.cpus change in v2
cgroup/cpuset: Don't invalidate sibling partitions on cpuset.cpus
conflict
cgroup/cpuset: Move the v1 empty cpus/mems check to
cpuset1_validate_change()
Documentation/admin-guide/cgroup-v2.rst | 40 +++--
kernel/cgroup/cpuset-internal.h | 12 ++
kernel/cgroup/cpuset-v1.c | 33 ++++
kernel/cgroup/cpuset.c | 163 ++++++------------
.../selftests/cgroup/test_cpuset_prs.sh | 29 +++-
5 files changed, 150 insertions(+), 127 deletions(-)
--
2.52.0
v2:
- Patch 1: additional comment
- Patch 2: simplify the conditions for triggering call to
compute_excpus().
- Patch 3: update description of cpuset.cpus.exclusive in cgroup-v2.rst
to reflect the new behavior and change the name of the new
cpus_excl_conflict() parameter to xcpus_changed.
- Patch 4: update description of cpuset.cpus.partition in cgroup-v2.rst
to clarify what exclusive CPUs will be used when a partition is
created.
This patch series is inspired by the cpuset patch sent by Sun Shaojie [1].
The idea is to avoid invalidating sibling partitions when there is a
cpuset.cpus conflict. However this patch series does it in a slightly
different way to make its behavior more consistent with other cpuset
properties.
The first 3 patches are just some cleanup and minor bug fixes on
issues found during the investigation process. The last one is
the major patch that changes the way cpuset.cpus is being handled
during the partition creation process. Instead of invalidating sibling
partitions when there is a conflict, it will strip out the conflicting
exclusive CPUs and assign the remaining non-conflicting exclusive
CPUs to the new partition unless there is no more CPU left which will
fail the partition creation process. It is similar to the idea that
cpuset.cpus.effective may only contain a subset of CPUs specified in
cpuset.cpus. So cpuset.cpus.exclusive.effective may contain only a
subset of cpuset.cpus when a partition is created without setting
cpuset.cpus.exclusive.
Even setting cpuset.cpus.exclusive instead of cpuset.cpus may not
guarantee all the requested CPUs can be granted if parent doesn't have
access to some of those exclusive CPUs. The difference is that conflicts
from siblings is not possible with cpuset.cpus.exclusive as long as it
can be set successfully without failure.
[1] https://lore.kernel.org/lkml/20251117015708.977585-1-sunshaojie@kylinos.cn/
Waiman Long (4):
cgroup/cpuset: Streamline rm_siblings_excl_cpus()
cgroup/cpuset: Consistently compute effective_xcpus in
update_cpumasks_hier()
cgroup/cpuset: Don't fail cpuset.cpus change in v2
cgroup/cpuset: Don't invalidate sibling partitions on cpuset.cpus
conflict
Documentation/admin-guide/cgroup-v2.rst | 40 +++--
kernel/cgroup/cpuset-internal.h | 3 +
kernel/cgroup/cpuset-v1.c | 19 +++
kernel/cgroup/cpuset.c | 141 +++++++-----------
.../selftests/cgroup/test_cpuset_prs.sh | 26 +++-
5 files changed, 125 insertions(+), 104 deletions(-)
--
2.52.0