mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests
@ 2026-11-06  9:28 Tiezhu Yang
  2026-11-06  9:28 ` [PATCH v1 1/2] perf tests: Assign return value of ioctl in wp_modify test Tiezhu Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tiezhu Yang @ 2026-11-06  9:28 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

This patch series aims to fix a potential logic bug and improve
the debuggability of the watchpoint tests in the perf tool.

Tiezhu Yang (2):
  perf tests: Assign return value of ioctl in wp_modify test
  perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests

 tools/perf/tests/wp.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

-- 
2.42.0


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

* [PATCH v1 1/2] perf tests: Assign return value of ioctl in wp_modify test
  2026-11-06  9:28 [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests Tiezhu Yang
@ 2026-11-06  9:28 ` Tiezhu Yang
  2026-11-06  9:28 ` [PATCH v1 2/2] perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests Tiezhu Yang
  2026-11-10  2:52 ` [PATCH v1 0/2] perf tests: Fix and improve " Namhyung Kim
  2 siblings, 0 replies; 4+ messages in thread
From: Tiezhu Yang @ 2026-11-06  9:28 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

In test__wp_modify(), the return value of ioctl PERF_EVENT_IOC_ENABLE
was not being captured. As a result, the subsequent error handling was
checking a stalled value of `ret` instead of the actual result of the
enablement operation.

Fix this by properly assigning the return value of the ioctl call to
`ret` so that the test can correctly catch and report failures when
enabling the watchpoint event.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 tools/perf/tests/wp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/wp.c b/tools/perf/tests/wp.c
index 69b31f00eed0..f0b829b82f2b 100644
--- a/tools/perf/tests/wp.c
+++ b/tools/perf/tests/wp.c
@@ -182,7 +182,7 @@ static int test__wp_modify(struct test_suite *test __maybe_unused, int subtest _
 	WP_TEST_ASSERT_VAL(fd, "Modify watchpoint", 1);
 
 	/* Enable the event */
-	ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);
+	ret = ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);
 	if (ret < 0) {
 		pr_debug("Failed to enable event\n");
 		close(fd);
-- 
2.42.0


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

* [PATCH v1 2/2] perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests
  2026-11-06  9:28 [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests Tiezhu Yang
  2026-11-06  9:28 ` [PATCH v1 1/2] perf tests: Assign return value of ioctl in wp_modify test Tiezhu Yang
@ 2026-11-06  9:28 ` Tiezhu Yang
  2026-11-10  2:52 ` [PATCH v1 0/2] perf tests: Fix and improve " Namhyung Kim
  2 siblings, 0 replies; 4+ messages in thread
From: Tiezhu Yang @ 2026-11-06  9:28 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

Currently, WP_TEST_ASSERT_VAL uses TEST_ASSERT_VAL which only prints
the failure message but drops the actual and expected counters. This
makes debugging hard when a watchpoint test fails due to arch-specific
hardware behavior or counter mismatches.

Rename WP_TEST_ASSERT_VAL to WP_TEST_ASSERT_EQUAL and use the built-in
TEST_ASSERT_EQUAL macro. This ensures that both the expected and actual
counter values are automatically printed upon failure.

Here is the log when executing "./perf test -v 'Read Only Watchpoint'".

Before:
  FAILED tests/wp.c:90 RO watchpoint

After:
  FAILED tests/wp.c:90 RO watchpoint (2 != 1)

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 tools/perf/tests/wp.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/tools/perf/tests/wp.c b/tools/perf/tests/wp.c
index f0b829b82f2b..253e551f10d2 100644
--- a/tools/perf/tests/wp.c
+++ b/tools/perf/tests/wp.c
@@ -13,11 +13,11 @@
 #include "cloexec.h"
 #include "../perf-sys.h"
 
-#define WP_TEST_ASSERT_VAL(fd, text, val)       \
-do {                                            \
-	long long count;                        \
-	wp_read(fd, &count, sizeof(long long)); \
-	TEST_ASSERT_VAL(text, count == val);    \
+#define WP_TEST_ASSERT_EQUAL(fd, text, val)		\
+do {							\
+	long long count;				\
+	wp_read(fd, &count, sizeof(long long));		\
+	TEST_ASSERT_EQUAL(text, (int)count, (int)val);	\
 } while (0)
 
 #ifdef __i386__
@@ -87,10 +87,10 @@ static int test__wp_ro(struct test_suite *test __maybe_unused,
 		return fd == -ENODEV ? TEST_SKIP : -1;
 
 	tmp = data1;
-	WP_TEST_ASSERT_VAL(fd, "RO watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "RO watchpoint", 1);
 
 	data1 = tmp1 + tmp;
-	WP_TEST_ASSERT_VAL(fd, "RO watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "RO watchpoint", 1);
 
 	close(fd);
 	return 0;
@@ -111,10 +111,10 @@ static int test__wp_wo(struct test_suite *test __maybe_unused,
 		return fd == -ENODEV ? TEST_SKIP : -1;
 
 	tmp = data1;
-	WP_TEST_ASSERT_VAL(fd, "WO watchpoint", 0);
+	WP_TEST_ASSERT_EQUAL(fd, "WO watchpoint", 0);
 
 	data1 = tmp1 + tmp;
-	WP_TEST_ASSERT_VAL(fd, "WO watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "WO watchpoint", 1);
 
 	close(fd);
 	return 0;
@@ -136,10 +136,10 @@ static int test__wp_rw(struct test_suite *test __maybe_unused,
 		return fd == -ENODEV ? TEST_SKIP : -1;
 
 	tmp = data1;
-	WP_TEST_ASSERT_VAL(fd, "RW watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "RW watchpoint", 1);
 
 	data1 = tmp1 + tmp;
-	WP_TEST_ASSERT_VAL(fd, "RW watchpoint", 2);
+	WP_TEST_ASSERT_EQUAL(fd, "RW watchpoint", 2);
 
 	close(fd);
 	return 0;
@@ -160,7 +160,7 @@ static int test__wp_modify(struct test_suite *test __maybe_unused, int subtest _
 		return fd == -ENODEV ? TEST_SKIP : -1;
 
 	data1 = tmp;
-	WP_TEST_ASSERT_VAL(fd, "Modify watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "Modify watchpoint", 1);
 
 	/* Modify watchpoint with disabled = 1 */
 	get__perf_event_attr(&new_attr, HW_BREAKPOINT_W, (void *)&data2[0],
@@ -179,7 +179,7 @@ static int test__wp_modify(struct test_suite *test __maybe_unused, int subtest _
 	}
 
 	data2[1] = tmp; /* Not Counted */
-	WP_TEST_ASSERT_VAL(fd, "Modify watchpoint", 1);
+	WP_TEST_ASSERT_EQUAL(fd, "Modify watchpoint", 1);
 
 	/* Enable the event */
 	ret = ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);
@@ -190,10 +190,10 @@ static int test__wp_modify(struct test_suite *test __maybe_unused, int subtest _
 	}
 
 	data2[1] = tmp; /* Counted */
-	WP_TEST_ASSERT_VAL(fd, "Modify watchpoint", 2);
+	WP_TEST_ASSERT_EQUAL(fd, "Modify watchpoint", 2);
 
 	data2[2] = tmp; /* Not Counted */
-	WP_TEST_ASSERT_VAL(fd, "Modify watchpoint", 2);
+	WP_TEST_ASSERT_EQUAL(fd, "Modify watchpoint", 2);
 
 	close(fd);
 	return 0;
-- 
2.42.0


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

* Re: [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests
  2026-11-06  9:28 [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests Tiezhu Yang
  2026-11-06  9:28 ` [PATCH v1 1/2] perf tests: Assign return value of ioctl in wp_modify test Tiezhu Yang
  2026-11-06  9:28 ` [PATCH v1 2/2] perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests Tiezhu Yang
@ 2026-11-10  2:52 ` Namhyung Kim
  2 siblings, 0 replies; 4+ messages in thread
From: Namhyung Kim @ 2026-11-10  2:52 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Tiezhu Yang
  Cc: linux-perf-users, linux-kernel

On Fri, 06 Nov 2026 17:28:06 +0800, Tiezhu Yang wrote:

> This patch series aims to fix a potential logic bug and improve
> the debuggability of the watchpoint tests in the perf tool.
> 
> Tiezhu Yang (2):
>   perf tests: Assign return value of ioctl in wp_modify test
>   perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests
> 
> [...]

Applied to perf-tools-next, thanks!

Best regards,
Namhyung


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

end of thread, other threads:[~2026-11-10  2:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-06  9:28 [PATCH v1 0/2] perf tests: Fix and improve watchpoint tests Tiezhu Yang
2026-11-06  9:28 ` [PATCH v1 1/2] perf tests: Assign return value of ioctl in wp_modify test Tiezhu Yang
2026-11-06  9:28 ` [PATCH v1 2/2] perf tests: Use TEST_ASSERT_EQUAL for all watchpoint tests Tiezhu Yang
2026-11-10  2:52 ` [PATCH v1 0/2] perf tests: Fix and improve " Namhyung Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®