diff --git a/realtime-tests.spec b/realtime-tests.spec index 4cbe3f5..dd7e780 100644 --- a/realtime-tests.spec +++ b/realtime-tests.spec @@ -6,7 +6,7 @@ Name: realtime-tests # Numa argument to make: NUMA=1 # Version: 2.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz @@ -22,6 +22,8 @@ Requires: bc #Patches Patch1: rt-numa-Correct-the-comment-of-numa_initialize.patch Patch2: rt-tests-oslat.8-Remove-the-argument-of-bias.patch +Patch3: rt-tests-Fix-parsing-of-affinity-when-there-is-a-spa.patch +Patch4: rt-numa-ignore-runtime-cpumask-if-a-CPULIST-is-speci.patch %description realtime-tests is a set of programs that test and measure various components of @@ -32,6 +34,8 @@ latency. It also tests the functioning of priority-inheritance mutexes. %setup -q -n rt-tests-%{version} %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build %set_build_flags @@ -82,6 +86,11 @@ latency. It also tests the functioning of priority-inheritance mutexes. %{_mandir}/man8/determine_maximum_mpps.8.* %changelog +* Thu Feb 3 2022 John Kacur - 2.3-2 +- Fix parsing of affinity +- Ignore the runtime cpumask if a new cpumask is requested +Resolves: rhbz#2050244 + * Thu Jan 13 2022 Leah Leshchinsky - 2.3-1 - Update to latest upstream 2.3 - Correct the comment of numa_initialize() diff --git a/rt-numa-ignore-runtime-cpumask-if-a-CPULIST-is-speci.patch b/rt-numa-ignore-runtime-cpumask-if-a-CPULIST-is-speci.patch new file mode 100644 index 0000000..bed5deb --- /dev/null +++ b/rt-numa-ignore-runtime-cpumask-if-a-CPULIST-is-speci.patch @@ -0,0 +1,48 @@ +From 795433f50f20ef7598db5cfe991b5386e4080d41 Mon Sep 17 00:00:00 2001 +From: Marcelo Tosatti +Date: Fri, 28 Jan 2022 15:39:59 -0300 +Subject: [PATCH 2/2] rt-numa: ignore runtime cpumask if -a CPULIST is + specified + +When using isolcpus kernel command line option, the CPUs +specified at isolcpus= are not part of the run time environment +cpumask. + +This causes "cyclictest -a isolatedcpus" to fail with: + +WARN: Couldn't setaffinity in main thread: Invalid argument +FATAL: No allowable cpus to run on + # /dev/cpu_dma_latency set to 0us + +To fix this, ignore the runtime cpumask if neither "+", "!" +are specified in the cpu list string. + +Suggested by Sebastian Andrzej Siewior. + +Signed-off-by: Marcelo Tosatti + +v2: fix changelog typo +v3: simplified version (John Kacur) + +Signed-off-by: John Kacur +--- + src/lib/rt-numa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/lib/rt-numa.c b/src/lib/rt-numa.c +index ee5ab99684d8..3eead80c3b2b 100644 +--- a/src/lib/rt-numa.c ++++ b/src/lib/rt-numa.c +@@ -131,7 +131,8 @@ int parse_cpumask(char *str, int max_cpus, struct bitmask **cpumask) + return 0; + } + +- use_current_cpuset(max_cpus, mask); ++ if (strchr(str, '!') != NULL || strchr(str, '+') != NULL) ++ use_current_cpuset(max_cpus, mask); + *cpumask = mask; + + return 0; +-- +2.34.1 + diff --git a/rt-tests-Fix-parsing-of-affinity-when-there-is-a-spa.patch b/rt-tests-Fix-parsing-of-affinity-when-there-is-a-spa.patch new file mode 100644 index 0000000..2be5e40 --- /dev/null +++ b/rt-tests-Fix-parsing-of-affinity-when-there-is-a-spa.patch @@ -0,0 +1,65 @@ +From 4fac6f28af3aec1c88f19bf96ef73541c1ae5858 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Fri, 28 Jan 2022 12:50:22 -0500 +Subject: [PATCH 1/2] rt-tests: Fix parsing of affinity when there is a space. + +Make sure that -a all and -a '+' are passed to parse_cpumask(). +Currently this doesn't work correctly if there is a space after -a and the +string. + +While we are at it, fix the message in oslat which calls +numa_parse_cpustring_all directly to say that. + +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.c | 4 +++- + src/oslat/oslat.c | 2 +- + src/signaltest/signaltest.c | 4 +++- + 3 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index 490aedb54c03..c9ed9e08f6e1 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -1035,7 +1035,9 @@ static void process_options(int argc, char *argv[], int max_cpus) + } else if (optind < argc && + (atoi(argv[optind]) || + argv[optind][0] == '0' || +- argv[optind][0] == '!')) { ++ argv[optind][0] == '!' || ++ argv[optind][0] == '+' || ++ argv[optind][0] == 'a')) { + parse_cpumask(argv[optind], max_cpus, &affinity_mask); + setaffinity = AFFINITY_SPECIFIED; + } else { +diff --git a/src/oslat/oslat.c b/src/oslat/oslat.c +index 50ddc81463ea..aa0e9a79e3b4 100644 +--- a/src/oslat/oslat.c ++++ b/src/oslat/oslat.c +@@ -850,7 +850,7 @@ int main(int argc, char *argv[]) + + cpu_set = numa_parse_cpustring_all(g.cpu_list); + if (!cpu_set) +- fatal("oslat: parse_cpumask failed.\n"); ++ fatal("oslat: numa_parse_cpustring_all failed.\n"); + n_cores = numa_bitmask_weight(cpu_set); + + TEST(threads = calloc(1, n_cores * sizeof(threads[0]))); +diff --git a/src/signaltest/signaltest.c b/src/signaltest/signaltest.c +index 4d89a1aba9d9..1cf03931b5bf 100644 +--- a/src/signaltest/signaltest.c ++++ b/src/signaltest/signaltest.c +@@ -261,7 +261,9 @@ static void process_options(int argc, char *argv[], unsigned int max_cpus) + } else if (optind < argc && + (atoi(argv[optind]) || + argv[optind][0] == '0' || +- argv[optind][0] == '!')) { ++ argv[optind][0] == '!' || ++ argv[optind][0] == '+' || ++ argv[optind][0] == 'a')) { + parse_cpumask(argv[optind], max_cpus, &affinity_mask); + setaffinity = AFFINITY_SPECIFIED; + } else { +-- +2.34.1 +