All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
@ 2024-02-27  7:21 Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 1/3] selftests/resctrl: Add cleanup function to test framework Maciej Wieczor-Retman
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Maciej Wieczor-Retman @ 2024-02-27  7:21 UTC (permalink / raw)
  To: reinette.chatre, fenghua.yu, shuah
  Cc: linux-kselftest, linux-kernel, ilpo.jarvinen

Cleaning up after tests is implemented separately for individual tests
and called at the end of each test execution. Since these functions are
very similar and a more generalized test framework was introduced a
function pointer in the resctrl_test struct can be used to reduce the
amount of function calls.

These functions are also all called in the ctrl-c handler because the
handler isn't aware which test is currently running. Since the handler
is implemented with a sigaction no function parameters can be passed
there but information about what test is currently running can be passed
with a global variable.

Series applies cleanly on top of kselftests/next.

Changelog v5:
- Rebase onto kselftests/next.
- Add Reinette's reviewed-by tag.

Changelog v4:
- Check current_test pointer and reset it in signal unregistering.
- Move cleanup call to test_cleanup function.

Changelog v3:
- Make current_test static.
- Add callback NULL check to the ctrl-c handler.

Changelog v2:
- Make current_test a const pointer limited in scope to resctrl_val
  file.
- Remove tests_cleanup from resctrl.h.
- Cleanup 'goto out' path and labels in individual test functions.

Older versions of this series:
[v1] https://lore.kernel.org/all/cover.1708434017.git.maciej.wieczor-retman@intel.com/
[v2] https://lore.kernel.org/all/cover.1708596015.git.maciej.wieczor-retman@intel.com/
[v3] https://lore.kernel.org/all/cover.1708599491.git.maciej.wieczor-retman@intel.com/
[v4] https://lore.kernel.org/all/cover.1708949785.git.maciej.wieczor-retman@intel.com/

Maciej Wieczor-Retman (3):
  selftests/resctrl: Add cleanup function to test framework
  selftests/resctrl: Simplify cleanup in ctrl-c handler
  selftests/resctrl: Move cleanups out of individual tests

 tools/testing/selftests/resctrl/cat_test.c    |  8 +++-----
 tools/testing/selftests/resctrl/cmt_test.c    |  4 ++--
 tools/testing/selftests/resctrl/mba_test.c    |  8 +++-----
 tools/testing/selftests/resctrl/mbm_test.c    |  8 +++-----
 tools/testing/selftests/resctrl/resctrl.h     |  9 +++------
 .../testing/selftests/resctrl/resctrl_tests.c | 20 +++++++------------
 tools/testing/selftests/resctrl/resctrl_val.c |  8 ++++++--
 7 files changed, 27 insertions(+), 38 deletions(-)

-- 
2.43.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v5 1/3] selftests/resctrl: Add cleanup function to test framework
  2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
@ 2024-02-27  7:21 ` Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 2/3] selftests/resctrl: Simplify cleanup in ctrl-c handler Maciej Wieczor-Retman
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Maciej Wieczor-Retman @ 2024-02-27  7:21 UTC (permalink / raw)
  To: Fenghua Yu, Reinette Chatre, Shuah Khan
  Cc: ilpo.jarvinen, linux-kernel, linux-kselftest

Resctrl selftests use very similar functions to cleanup after
themselves. This creates a lot of code duplication. Also not being
hooked to the test framework means that ctrl-c handler isn't aware of
what test is currently running and executes all cleanups even though
only one is needed.

Add a function pointer to the resctrl_test struct and attach to it
cleanup functions from individual tests.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
---
Changelog v5:
- Rebased onto kselftests/next.
- Add Reinette's reviewed-by tag.

 tools/testing/selftests/resctrl/cat_test.c | 1 +
 tools/testing/selftests/resctrl/cmt_test.c | 1 +
 tools/testing/selftests/resctrl/mba_test.c | 1 +
 tools/testing/selftests/resctrl/mbm_test.c | 1 +
 tools/testing/selftests/resctrl/resctrl.h  | 2 ++
 5 files changed, 6 insertions(+)

diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
index 4cb991be8e31..8fa4348ab461 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -373,6 +373,7 @@ struct resctrl_test l3_cat_test = {
 	.resource = "L3",
 	.feature_check = test_resource_feature_check,
 	.run_test = cat_run_test,
+	.cleanup = cat_test_cleanup,
 };
 
 struct resctrl_test l3_noncont_cat_test = {
diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c
index a81f91222a89..a01ccf86e6ce 100644
--- a/tools/testing/selftests/resctrl/cmt_test.c
+++ b/tools/testing/selftests/resctrl/cmt_test.c
@@ -178,4 +178,5 @@ struct resctrl_test cmt_test = {
 	.resource = "L3",
 	.feature_check = cmt_feature_check,
 	.run_test = cmt_run_test,
+	.cleanup = cmt_test_cleanup,
 };
diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c
index 7946e32e85c8..189fbe20dc7b 100644
--- a/tools/testing/selftests/resctrl/mba_test.c
+++ b/tools/testing/selftests/resctrl/mba_test.c
@@ -180,4 +180,5 @@ struct resctrl_test mba_test = {
 	.vendor_specific = ARCH_INTEL,
 	.feature_check = mba_feature_check,
 	.run_test = mba_run_test,
+	.cleanup = mba_test_cleanup,
 };
diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c
index d67ffa3ec63a..73d6a8b989f5 100644
--- a/tools/testing/selftests/resctrl/mbm_test.c
+++ b/tools/testing/selftests/resctrl/mbm_test.c
@@ -150,4 +150,5 @@ struct resctrl_test mbm_test = {
 	.vendor_specific = ARCH_INTEL,
 	.feature_check = mbm_feature_check,
 	.run_test = mbm_run_test,
+	.cleanup = mbm_test_cleanup,
 };
diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
index 2051bd135e0d..221c94532733 100644
--- a/tools/testing/selftests/resctrl/resctrl.h
+++ b/tools/testing/selftests/resctrl/resctrl.h
@@ -72,6 +72,7 @@ struct user_params {
  * @disabled:		Test is disabled
  * @feature_check:	Callback to check required resctrl features
  * @run_test:		Callback to run the test
+ * @cleanup:		Callback to cleanup after the test
  */
 struct resctrl_test {
 	const char	*name;
@@ -82,6 +83,7 @@ struct resctrl_test {
 	bool		(*feature_check)(const struct resctrl_test *test);
 	int		(*run_test)(const struct resctrl_test *test,
 				    const struct user_params *uparams);
+	void		(*cleanup)(void);
 };
 
 /*
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v5 2/3] selftests/resctrl: Simplify cleanup in ctrl-c handler
  2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 1/3] selftests/resctrl: Add cleanup function to test framework Maciej Wieczor-Retman
@ 2024-02-27  7:21 ` Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 3/3] selftests/resctrl: Move cleanups out of individual tests Maciej Wieczor-Retman
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Maciej Wieczor-Retman @ 2024-02-27  7:21 UTC (permalink / raw)
  To: Fenghua Yu, Reinette Chatre, Shuah Khan
  Cc: ilpo.jarvinen, linux-kernel, linux-kselftest

Ctrl-c handler isn't aware of what test is currently running. Because of
that it executes all cleanups even if they aren't necessary. Since the
ctrl-c handler uses the sa_sigaction system no parameters can be passed
to it as function arguments.

Add a global variable to make ctrl-c handler aware of the currently run
test and only execute the correct cleanup callback.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
---
Changelog v5:
- Rebased onto kselftests/next.
- Add Reinette's reviewed-by tag.

Changelog v4:
- Reset current_test pointer and check if it's not NULL before calling.
  (Reinette)

Changelog v3:
- Make current_test static. (Ilpo)
- Add callback NULL pointer guard in ctrl-c handler. (Ilpo)

Changelog v2:
- Remove tests_cleanup() from resctrl.h.
- Make current_test a const pointer only inside resctrl_val.c. (Ilpo)

 tools/testing/selftests/resctrl/resctrl.h       |  3 +--
 tools/testing/selftests/resctrl/resctrl_tests.c | 14 +++-----------
 tools/testing/selftests/resctrl/resctrl_val.c   |  8 ++++++--
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
index 221c94532733..bc486f92aceb 100644
--- a/tools/testing/selftests/resctrl/resctrl.h
+++ b/tools/testing/selftests/resctrl/resctrl.h
@@ -158,7 +158,6 @@ int resctrl_val(const struct resctrl_test *test,
 		const struct user_params *uparams,
 		const char * const *benchmark_cmd,
 		struct resctrl_val_param *param);
-void tests_cleanup(void);
 void mbm_test_cleanup(void);
 void mba_test_cleanup(void);
 unsigned long create_bit_mask(unsigned int start, unsigned int len);
@@ -168,7 +167,7 @@ int get_mask_no_shareable(const char *cache_type, unsigned long *mask);
 int get_cache_size(int cpu_no, const char *cache_type, unsigned long *cache_size);
 int resource_info_unsigned_get(const char *resource, const char *filename, unsigned int *val);
 void ctrlc_handler(int signum, siginfo_t *info, void *ptr);
-int signal_handler_register(void);
+int signal_handler_register(const struct resctrl_test *test);
 void signal_handler_unregister(void);
 void cat_test_cleanup(void);
 unsigned int count_bits(unsigned long n);
diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
index f3dc1b9696e7..0590daec2f44 100644
--- a/tools/testing/selftests/resctrl/resctrl_tests.c
+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
@@ -81,19 +81,11 @@ static void cmd_help(void)
 	printf("\t-h: help\n");
 }
 
-void tests_cleanup(void)
-{
-	mbm_test_cleanup();
-	mba_test_cleanup();
-	cmt_test_cleanup();
-	cat_test_cleanup();
-}
-
-static int test_prepare(void)
+static int test_prepare(const struct resctrl_test *test)
 {
 	int res;
 
-	res = signal_handler_register();
+	res = signal_handler_register(test);
 	if (res) {
 		ksft_print_msg("Failed to register signal handler\n");
 		return res;
@@ -136,7 +128,7 @@ static void run_single_test(const struct resctrl_test *test, const struct user_p
 
 	ksft_print_msg("Starting %s test ...\n", test->name);
 
-	if (test_prepare()) {
+	if (test_prepare(test)) {
 		ksft_exit_fail_msg("Abnormal failure when preparing for the test\n");
 		return;
 	}
diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c
index 5a49f07a6c85..445f306d4c2f 100644
--- a/tools/testing/selftests/resctrl/resctrl_val.c
+++ b/tools/testing/selftests/resctrl/resctrl_val.c
@@ -62,6 +62,7 @@ struct imc_counter_config {
 static char mbm_total_path[1024];
 static int imcs;
 static struct imc_counter_config imc_counters_config[MAX_IMCS][2];
+static const struct resctrl_test *current_test;
 
 void membw_initialize_perf_event_attr(int i, int j)
 {
@@ -472,7 +473,8 @@ void ctrlc_handler(int signum, siginfo_t *info, void *ptr)
 	if (bm_pid)
 		kill(bm_pid, SIGKILL);
 	umount_resctrlfs();
-	tests_cleanup();
+	if (current_test && current_test->cleanup)
+		current_test->cleanup();
 	ksft_print_msg("Ending\n\n");
 
 	exit(EXIT_SUCCESS);
@@ -482,13 +484,14 @@ void ctrlc_handler(int signum, siginfo_t *info, void *ptr)
  * Register CTRL-C handler for parent, as it has to kill
  * child process before exiting.
  */
-int signal_handler_register(void)
+int signal_handler_register(const struct resctrl_test *test)
 {
 	struct sigaction sigact = {};
 	int ret = 0;
 
 	bm_pid = 0;
 
+	current_test = test;
 	sigact.sa_sigaction = ctrlc_handler;
 	sigemptyset(&sigact.sa_mask);
 	sigact.sa_flags = SA_SIGINFO;
@@ -510,6 +513,7 @@ void signal_handler_unregister(void)
 {
 	struct sigaction sigact = {};
 
+	current_test = NULL;
 	sigact.sa_handler = SIG_DFL;
 	sigemptyset(&sigact.sa_mask);
 	if (sigaction(SIGINT, &sigact, NULL) ||
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v5 3/3] selftests/resctrl: Move cleanups out of individual tests
  2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 1/3] selftests/resctrl: Add cleanup function to test framework Maciej Wieczor-Retman
  2024-02-27  7:21 ` [PATCH v5 2/3] selftests/resctrl: Simplify cleanup in ctrl-c handler Maciej Wieczor-Retman
@ 2024-02-27  7:21 ` Maciej Wieczor-Retman
  2024-02-27 12:49 ` [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Ilpo Järvinen
  2024-02-27 16:36 ` Reinette Chatre
  4 siblings, 0 replies; 9+ messages in thread
From: Maciej Wieczor-Retman @ 2024-02-27  7:21 UTC (permalink / raw)
  To: Fenghua Yu, Reinette Chatre, Shuah Khan
  Cc: ilpo.jarvinen, linux-kernel, linux-kselftest

Every test calls its cleanup function at the end of it's test function.
After the cleanup function pointer is added to the test framework this
can be simplified to executing the callback function at the end of the
generic test running function.

Make test cleanup functions static and call them from the end of
run_single_test() from the resctrl_test's cleanup function pointer.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
---
Changelog v5:
- Rebased onto kselftests/next.
- Add Reinette's reviewed-by tag.

Changelog v4:
- Move cleanup call to test_cleanup(). (Reinette)

Changelog v2:
- Change most goto out paths into return ret. (Ilpo)

 tools/testing/selftests/resctrl/cat_test.c      | 7 ++-----
 tools/testing/selftests/resctrl/cmt_test.c      | 3 +--
 tools/testing/selftests/resctrl/mba_test.c      | 7 ++-----
 tools/testing/selftests/resctrl/mbm_test.c      | 7 ++-----
 tools/testing/selftests/resctrl/resctrl.h       | 4 ----
 tools/testing/selftests/resctrl/resctrl_tests.c | 6 ++++--
 6 files changed, 11 insertions(+), 23 deletions(-)

diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
index 8fa4348ab461..c7686fb6641a 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -128,7 +128,7 @@ static int check_results(struct resctrl_val_param *param, const char *cache_type
 	return fail;
 }
 
-void cat_test_cleanup(void)
+static void cat_test_cleanup(void)
 {
 	remove(RESULT_FILE_NAME);
 }
@@ -284,13 +284,10 @@ static int cat_run_test(const struct resctrl_test *test, const struct user_param
 
 	ret = cat_test(test, uparams, &param, span, start_mask);
 	if (ret)
-		goto out;
+		return ret;
 
 	ret = check_results(&param, test->resource,
 			    cache_total_size, full_cache_mask, start_mask);
-out:
-	cat_test_cleanup();
-
 	return ret;
 }
 
diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c
index a01ccf86e6ce..a44e6fcd37b7 100644
--- a/tools/testing/selftests/resctrl/cmt_test.c
+++ b/tools/testing/selftests/resctrl/cmt_test.c
@@ -91,7 +91,7 @@ static int check_results(struct resctrl_val_param *param, size_t span, int no_of
 				 MAX_DIFF, MAX_DIFF_PERCENT, runs - 1, true);
 }
 
-void cmt_test_cleanup(void)
+static void cmt_test_cleanup(void)
 {
 	remove(RESULT_FILE_NAME);
 }
@@ -161,7 +161,6 @@ static int cmt_run_test(const struct resctrl_test *test, const struct user_param
 		ksft_print_msg("Intel CMT may be inaccurate when Sub-NUMA Clustering is enabled. Check BIOS configuration.\n");
 
 out:
-	cmt_test_cleanup();
 	free(span_str);
 
 	return ret;
diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c
index 189fbe20dc7b..5d6af9e8afed 100644
--- a/tools/testing/selftests/resctrl/mba_test.c
+++ b/tools/testing/selftests/resctrl/mba_test.c
@@ -137,7 +137,7 @@ static int check_results(void)
 	return show_mba_info(bw_imc, bw_resc);
 }
 
-void mba_test_cleanup(void)
+static void mba_test_cleanup(void)
 {
 	remove(RESULT_FILE_NAME);
 }
@@ -158,13 +158,10 @@ static int mba_run_test(const struct resctrl_test *test, const struct user_param
 
 	ret = resctrl_val(test, uparams, uparams->benchmark_cmd, &param);
 	if (ret)
-		goto out;
+		return ret;
 
 	ret = check_results();
 
-out:
-	mba_test_cleanup();
-
 	return ret;
 }
 
diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c
index 73d6a8b989f5..3059ccc51a5a 100644
--- a/tools/testing/selftests/resctrl/mbm_test.c
+++ b/tools/testing/selftests/resctrl/mbm_test.c
@@ -105,7 +105,7 @@ static int mbm_setup(const struct resctrl_test *test,
 	return ret;
 }
 
-void mbm_test_cleanup(void)
+static void mbm_test_cleanup(void)
 {
 	remove(RESULT_FILE_NAME);
 }
@@ -126,15 +126,12 @@ static int mbm_run_test(const struct resctrl_test *test, const struct user_param
 
 	ret = resctrl_val(test, uparams, uparams->benchmark_cmd, &param);
 	if (ret)
-		goto out;
+		return ret;
 
 	ret = check_results(DEFAULT_SPAN);
 	if (ret && (get_vendor() == ARCH_INTEL))
 		ksft_print_msg("Intel MBM may be inaccurate when Sub-NUMA Clustering is enabled. Check BIOS configuration.\n");
 
-out:
-	mbm_test_cleanup();
-
 	return ret;
 }
 
diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
index bc486f92aceb..00d51fa7531c 100644
--- a/tools/testing/selftests/resctrl/resctrl.h
+++ b/tools/testing/selftests/resctrl/resctrl.h
@@ -158,8 +158,6 @@ int resctrl_val(const struct resctrl_test *test,
 		const struct user_params *uparams,
 		const char * const *benchmark_cmd,
 		struct resctrl_val_param *param);
-void mbm_test_cleanup(void);
-void mba_test_cleanup(void);
 unsigned long create_bit_mask(unsigned int start, unsigned int len);
 unsigned int count_contiguous_bits(unsigned long val, unsigned int *start);
 int get_full_cbm(const char *cache_type, unsigned long *mask);
@@ -169,9 +167,7 @@ int resource_info_unsigned_get(const char *resource, const char *filename, unsig
 void ctrlc_handler(int signum, siginfo_t *info, void *ptr);
 int signal_handler_register(const struct resctrl_test *test);
 void signal_handler_unregister(void);
-void cat_test_cleanup(void);
 unsigned int count_bits(unsigned long n);
-void cmt_test_cleanup(void);
 
 void perf_event_attr_initialize(struct perf_event_attr *pea, __u64 config);
 void perf_event_initialize_read_format(struct perf_event_read *pe_read);
diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
index 0590daec2f44..348d17cb2a84 100644
--- a/tools/testing/selftests/resctrl/resctrl_tests.c
+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
@@ -100,8 +100,10 @@ static int test_prepare(const struct resctrl_test *test)
 	return 0;
 }
 
-static void test_cleanup(void)
+static void test_cleanup(const struct resctrl_test *test)
 {
+	if (test->cleanup)
+		test->cleanup();
 	umount_resctrlfs();
 	signal_handler_unregister();
 }
@@ -143,7 +145,7 @@ static void run_single_test(const struct resctrl_test *test, const struct user_p
 	ksft_test_result(!ret, "%s: test\n", test->name);
 
 cleanup:
-	test_cleanup();
+	test_cleanup(test);
 }
 
 static void init_user_params(struct user_params *uparams)
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
  2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
                   ` (2 preceding siblings ...)
  2024-02-27  7:21 ` [PATCH v5 3/3] selftests/resctrl: Move cleanups out of individual tests Maciej Wieczor-Retman
@ 2024-02-27 12:49 ` Ilpo Järvinen
  2024-02-27 16:36 ` Reinette Chatre
  4 siblings, 0 replies; 9+ messages in thread
From: Ilpo Järvinen @ 2024-02-27 12:49 UTC (permalink / raw)
  To: Maciej Wieczor-Retman
  Cc: Reinette Chatre, fenghua.yu, shuah, linux-kselftest, LKML

[-- Attachment #1: Type: text/plain, Size: 866 bytes --]

On Tue, 27 Feb 2024, Maciej Wieczor-Retman wrote:

> Cleaning up after tests is implemented separately for individual tests
> and called at the end of each test execution. Since these functions are
> very similar and a more generalized test framework was introduced a
> function pointer in the resctrl_test struct can be used to reduce the
> amount of function calls.
> 
> These functions are also all called in the ctrl-c handler because the
> handler isn't aware which test is currently running. Since the handler
> is implemented with a sigaction no function parameters can be passed
> there but information about what test is currently running can be passed
> with a global variable.
> 
> Series applies cleanly on top of kselftests/next.

Thanks. For the entire series:

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
  2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
                   ` (3 preceding siblings ...)
  2024-02-27 12:49 ` [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Ilpo Järvinen
@ 2024-02-27 16:36 ` Reinette Chatre
  2024-03-27 23:08   ` Reinette Chatre
  4 siblings, 1 reply; 9+ messages in thread
From: Reinette Chatre @ 2024-02-27 16:36 UTC (permalink / raw)
  To: shuah
  Cc: linux-kselftest, linux-kernel, ilpo.jarvinen, Yu, Fenghua,
	Maciej Wieczor-Retman

Hi Shuah,

Could you please consider this series for inclusion? I do admit that
there has been a lot of resctrl selftest work recently. This should be
it for a while as new work is still being worked on. 

Thank you very much.

Reinette

On 2/26/2024 11:21 PM, Maciej Wieczor-Retman wrote:
> Cleaning up after tests is implemented separately for individual tests
> and called at the end of each test execution. Since these functions are
> very similar and a more generalized test framework was introduced a
> function pointer in the resctrl_test struct can be used to reduce the
> amount of function calls.
> 
> These functions are also all called in the ctrl-c handler because the
> handler isn't aware which test is currently running. Since the handler
> is implemented with a sigaction no function parameters can be passed
> there but information about what test is currently running can be passed
> with a global variable.
> 
> Series applies cleanly on top of kselftests/next.
> 
> Changelog v5:
> - Rebase onto kselftests/next.
> - Add Reinette's reviewed-by tag.
> 
> Changelog v4:
> - Check current_test pointer and reset it in signal unregistering.
> - Move cleanup call to test_cleanup function.
> 
> Changelog v3:
> - Make current_test static.
> - Add callback NULL check to the ctrl-c handler.
> 
> Changelog v2:
> - Make current_test a const pointer limited in scope to resctrl_val
>   file.
> - Remove tests_cleanup from resctrl.h.
> - Cleanup 'goto out' path and labels in individual test functions.
> 
> Older versions of this series:
> [v1] https://lore.kernel.org/all/cover.1708434017.git.maciej.wieczor-retman@intel.com/
> [v2] https://lore.kernel.org/all/cover.1708596015.git.maciej.wieczor-retman@intel.com/
> [v3] https://lore.kernel.org/all/cover.1708599491.git.maciej.wieczor-retman@intel.com/
> [v4] https://lore.kernel.org/all/cover.1708949785.git.maciej.wieczor-retman@intel.com/
> 
> Maciej Wieczor-Retman (3):
>   selftests/resctrl: Add cleanup function to test framework
>   selftests/resctrl: Simplify cleanup in ctrl-c handler
>   selftests/resctrl: Move cleanups out of individual tests
> 
>  tools/testing/selftests/resctrl/cat_test.c    |  8 +++-----
>  tools/testing/selftests/resctrl/cmt_test.c    |  4 ++--
>  tools/testing/selftests/resctrl/mba_test.c    |  8 +++-----
>  tools/testing/selftests/resctrl/mbm_test.c    |  8 +++-----
>  tools/testing/selftests/resctrl/resctrl.h     |  9 +++------
>  .../testing/selftests/resctrl/resctrl_tests.c | 20 +++++++------------
>  tools/testing/selftests/resctrl/resctrl_val.c |  8 ++++++--
>  7 files changed, 27 insertions(+), 38 deletions(-)
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
  2024-02-27 16:36 ` Reinette Chatre
@ 2024-03-27 23:08   ` Reinette Chatre
  2024-03-28 19:25     ` Shuah Khan
  0 siblings, 1 reply; 9+ messages in thread
From: Reinette Chatre @ 2024-03-27 23:08 UTC (permalink / raw)
  To: shuah
  Cc: linux-kselftest, linux-kernel, ilpo.jarvinen, Yu, Fenghua,
	Maciej Wieczor-Retman

Hi Shuah,

On 2/27/2024 8:36 AM, Reinette Chatre wrote:
> Hi Shuah,
> 
> Could you please consider this series for inclusion? I do admit that
> there has been a lot of resctrl selftest work recently. This should be
> it for a while as new work is still being worked on. 
> 
> Thank you very much.
> 
> Reinette

I think we missed the cutoff for the previous merge window. Could you
please consider this series for inclusion in preparation for
the next merge window?

Thank you very much.

Reinette

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
  2024-03-27 23:08   ` Reinette Chatre
@ 2024-03-28 19:25     ` Shuah Khan
  2024-03-28 20:28       ` Reinette Chatre
  0 siblings, 1 reply; 9+ messages in thread
From: Shuah Khan @ 2024-03-28 19:25 UTC (permalink / raw)
  To: Reinette Chatre, shuah
  Cc: linux-kselftest, linux-kernel, ilpo.jarvinen, Yu, Fenghua,
	Maciej Wieczor-Retman, Shuah Khan

On 3/27/24 17:08, Reinette Chatre wrote:
> Hi Shuah,
> 
> On 2/27/2024 8:36 AM, Reinette Chatre wrote:
>> Hi Shuah,
>>
>> Could you please consider this series for inclusion? I do admit that
>> there has been a lot of resctrl selftest work recently. This should be
>> it for a while as new work is still being worked on.
>>

No worries about the number of patches. Thank you for the cleanups
and fixes.

Looks like there another series in the works :)

  selftests/resctrl: resctrl_val() related cleanups & improvements

>> Thank you very much.
>>
>> Reinette
> 
> I think we missed the cutoff for the previous merge window. Could you
> please consider this series for inclusion in preparation for
> the next merge window?
> 

Applied to linux-kselftest next for 6.10-rc1.

thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions
  2024-03-28 19:25     ` Shuah Khan
@ 2024-03-28 20:28       ` Reinette Chatre
  0 siblings, 0 replies; 9+ messages in thread
From: Reinette Chatre @ 2024-03-28 20:28 UTC (permalink / raw)
  To: Shuah Khan, shuah
  Cc: linux-kselftest, linux-kernel, ilpo.jarvinen, Yu, Fenghua,
	Maciej Wieczor-Retman

Hi Shuah,

On 3/28/2024 12:25 PM, Shuah Khan wrote:
> On 3/27/24 17:08, Reinette Chatre wrote:
>> On 2/27/2024 8:36 AM, Reinette Chatre wrote:

>>> Could you please consider this series for inclusion? I do admit that
>>> there has been a lot of resctrl selftest work recently. This should be
>>> it for a while as new work is still being worked on.
>>>
> 
> No worries about the number of patches. Thank you for the cleanups
> and fixes.
> 
> Looks like there another series in the works :)
> 
>  selftests/resctrl: resctrl_val() related cleanups & improvements

Indeed. There is also a "SNC support for resctrl selftests" [1] being
worked on, but it is waiting on the (not yet upstream) arch/x86 feature
it tests to settle.

> 
> Applied to linux-kselftest next for 6.10-rc1.
> 

Thank you very much.

Reinette


[1] https://lore.kernel.org/lkml/cover.1709721159.git.maciej.wieczor-retman@intel.com/

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-03-28 20:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-27  7:21 [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Maciej Wieczor-Retman
2024-02-27  7:21 ` [PATCH v5 1/3] selftests/resctrl: Add cleanup function to test framework Maciej Wieczor-Retman
2024-02-27  7:21 ` [PATCH v5 2/3] selftests/resctrl: Simplify cleanup in ctrl-c handler Maciej Wieczor-Retman
2024-02-27  7:21 ` [PATCH v5 3/3] selftests/resctrl: Move cleanups out of individual tests Maciej Wieczor-Retman
2024-02-27 12:49 ` [PATCH v5 0/3] selftests/resctrl: Simplify test cleanup functions Ilpo Järvinen
2024-02-27 16:36 ` Reinette Chatre
2024-03-27 23:08   ` Reinette Chatre
2024-03-28 19:25     ` Shuah Khan
2024-03-28 20:28       ` Reinette Chatre

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.