* [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function
@ 2026-05-02 14:32 Athira Rajeev
2026-05-02 14:32 ` [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function Athira Rajeev
2026-05-04 5:14 ` [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Adrian Hunter
0 siblings, 2 replies; 5+ messages in thread
From: Athira Rajeev @ 2026-05-02 14:32 UTC (permalink / raw)
To: acme, jolsa, adrian.hunter, mpetlan, tmricht, maddy, irogers,
namhyung
Cc: linux-perf-users, linuxppc-dev, atrajeev, hbathini, Tejas.Manhas1,
Tanushree.Shah, shivani
perf trace record fails some cases in powerpc
# ./perf test "perf trace record and replay"
128: perf trace record and replay : FAILED!
# ./perf trace record sleep 1
# echo $?
32
This is happening because of non-zero err value from
auxtrace_record__init() function.
static int record__auxtrace_init(struct record *rec)
{
int err;
if ((rec->opts.auxtrace_snapshot_opts || rec->opts.auxtrace_sample_opts)
&& record__threads_enabled(rec)) {
pr_err("AUX area tracing options are not available in parallel streaming mode.\n");
return -EINVAL;
}
if (!rec->itr) {
rec->itr = auxtrace_record__init(rec->evlist, &err);
if (err)
return err;
}
Here "int err" is not initialised. The code expects "err" to be set
from auxtrace_record__init() function.
Update auxtrace_record__init() in arch/powerpc/util/auxtrace.c to clear
err value in the beginning.
- Clear err value in beginning of function. Any fail later will
set appropriate return code to err.
- Even if we haven't found any event for auxtrace, perf record
should continue for other events. NULL return
will indicate that there is no auxtrace record initialized.
- Not having "err" set here will affect monitoring of other events
also because perf record will fail seeing random value in err.
Set err to -EINVAL before invoking auxtrace_record__init() in
builtin-record.c
With the fix,
# ./perf trace record sleep 1
[ perf record: Woken up 2 times to write data ]
[ perf record: Captured and wrote 0.033 MB perf.data (228 samples) ]
Fixes: 1dbfaf94cf66 ("perf powerpc: Add basic CONFIG_AUXTRACE support for VPA pmu on powerpc")
Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
---
Changelog:
v1 -> v2
Addressed review comment from Adrian:
- Set err to -EINVAL before invoking auxtrace_record__init() in
builtin-record.c
- Added kernel-doc to auxtrace_record__init() in tools/perf/util/auxtrace.c
Addressed review comment from Namhyung:
- Added fixes tag
tools/perf/arch/powerpc/util/auxtrace.c | 6 ++++++
tools/perf/builtin-record.c | 1 +
2 files changed, 7 insertions(+)
diff --git a/tools/perf/arch/powerpc/util/auxtrace.c b/tools/perf/arch/powerpc/util/auxtrace.c
index e39deff6c857..4600a1661b4f 100644
--- a/tools/perf/arch/powerpc/util/auxtrace.c
+++ b/tools/perf/arch/powerpc/util/auxtrace.c
@@ -71,6 +71,12 @@ struct auxtrace_record *auxtrace_record__init(struct evlist *evlist,
struct evsel *pos;
int found = 0;
+ /*
+ * Set err value to zero here. Any fail later
+ * will set appropriate return code to err.
+ */
+ *err = 0;
+
evlist__for_each_entry(evlist, pos) {
if (strstarts(pos->name, "vpa_dtl")) {
found = 1;
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 4a5eba498c02..708825747af5 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -865,6 +865,7 @@ static int record__auxtrace_init(struct record *rec)
}
if (!rec->itr) {
+ err = -EINVAL;
rec->itr = auxtrace_record__init(rec->evlist, &err);
if (err)
return err;
--
2.47.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function
2026-05-02 14:32 [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Athira Rajeev
@ 2026-05-02 14:32 ` Athira Rajeev
2026-05-04 1:46 ` Namhyung Kim
2026-05-04 5:14 ` [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Adrian Hunter
1 sibling, 1 reply; 5+ messages in thread
From: Athira Rajeev @ 2026-05-02 14:32 UTC (permalink / raw)
To: acme, jolsa, adrian.hunter, mpetlan, tmricht, maddy, irogers,
namhyung
Cc: linux-perf-users, linuxppc-dev, atrajeev, hbathini, Tejas.Manhas1,
Tanushree.Shah, shivani
Add documentation comment describing the parameters
and return code for auxtrace_record__init() in util/auxtrace.c
Using "struct evlist *evlist __maybe_unused", gives below
warning with "scripts/kernel-doc".
# ./scripts/kernel-doc -none tools/perf/util/auxtrace.c
Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
Updated parameter as "struct evlist __maybe_unused *evlist"
With the change, there is no erros/warnings with kernel-doc
Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
---
Changelog:
v3 -> v4:
Addressed review comment from Sashiko:
Update return value expectation for fail as
non zero return err code.
v2 -> v3:
Addressed review comment from Sashiko:
Update return value expectation for success and fail
correctly.
tools/perf/util/auxtrace.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
index a224687ffbc1..9e11cf4299b8 100644
--- a/tools/perf/util/auxtrace.c
+++ b/tools/perf/util/auxtrace.c
@@ -896,8 +896,23 @@ int auxtrace_parse_aux_action(struct evlist *evlist)
return 0;
}
+/**
+ * auxtrace_record__init - Initialize an AUX area tracing record.
+ * @evlist: The list of events to check for AUX area tracing event.
+ * @err: Pointer to an integer to store return code.
+ *
+ * This function looks through the @evlist to determine which AUX area
+ * tracing hardware is being used and initializes the auxtrace_record
+ * structure.
+ *
+ * Return:
+ * a) A pointer to the struct auxtrace_record on success.
+ * b) NULL with @err = 0 if no AUX area tracing event is found/supported
+ * (not considered an error).
+ * c) NULL with non-zero @err on actual auxtrace_record__init failure.
+ */
struct auxtrace_record *__weak
-auxtrace_record__init(struct evlist *evlist __maybe_unused, int *err)
+auxtrace_record__init(struct evlist __maybe_unused *evlist, int *err)
{
*err = 0;
return NULL;
--
2.47.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function
2026-05-02 14:32 ` [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function Athira Rajeev
@ 2026-05-04 1:46 ` Namhyung Kim
2026-05-04 4:16 ` Athira Rajeev
0 siblings, 1 reply; 5+ messages in thread
From: Namhyung Kim @ 2026-05-04 1:46 UTC (permalink / raw)
To: Athira Rajeev
Cc: acme, jolsa, adrian.hunter, mpetlan, tmricht, maddy, irogers,
linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
Tanushree.Shah, shivani
Hello,
On Sat, May 02, 2026 at 08:02:37PM +0530, Athira Rajeev wrote:
> Add documentation comment describing the parameters
> and return code for auxtrace_record__init() in util/auxtrace.c
>
> Using "struct evlist *evlist __maybe_unused", gives below
> warning with "scripts/kernel-doc".
>
> # ./scripts/kernel-doc -none tools/perf/util/auxtrace.c
> Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
> Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
>
> Updated parameter as "struct evlist __maybe_unused *evlist"
> With the change, there is no erros/warnings with kernel-doc
Hmm.. this is not what we used to have. I'm not sure if we want to
update them all. Maybe better to leave it for now.
>
> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
> ---
> Changelog:
> v3 -> v4:
> Addressed review comment from Sashiko:
> Update return value expectation for fail as
> non zero return err code.
>
> v2 -> v3:
> Addressed review comment from Sashiko:
> Update return value expectation for success and fail
> correctly.
>
> tools/perf/util/auxtrace.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
> index a224687ffbc1..9e11cf4299b8 100644
> --- a/tools/perf/util/auxtrace.c
> +++ b/tools/perf/util/auxtrace.c
> @@ -896,8 +896,23 @@ int auxtrace_parse_aux_action(struct evlist *evlist)
> return 0;
> }
>
> +/**
> + * auxtrace_record__init - Initialize an AUX area tracing record.
> + * @evlist: The list of events to check for AUX area tracing event.
> + * @err: Pointer to an integer to store return code.
> + *
> + * This function looks through the @evlist to determine which AUX area
> + * tracing hardware is being used and initializes the auxtrace_record
> + * structure.
> + *
> + * Return:
> + * a) A pointer to the struct auxtrace_record on success.
I think you should mention that the this function should set *err to
zero on success.
Thanks,
Namhyung
> + * b) NULL with @err = 0 if no AUX area tracing event is found/supported
> + * (not considered an error).
> + * c) NULL with non-zero @err on actual auxtrace_record__init failure.
> + */
> struct auxtrace_record *__weak
> -auxtrace_record__init(struct evlist *evlist __maybe_unused, int *err)
> +auxtrace_record__init(struct evlist __maybe_unused *evlist, int *err)
> {
> *err = 0;
> return NULL;
> --
> 2.47.3
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function
2026-05-04 1:46 ` Namhyung Kim
@ 2026-05-04 4:16 ` Athira Rajeev
0 siblings, 0 replies; 5+ messages in thread
From: Athira Rajeev @ 2026-05-04 4:16 UTC (permalink / raw)
To: Namhyung Kim
Cc: acme, jolsa, adrian.hunter, mpetlan, tmricht, maddy, irogers,
linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
Tanushree.Shah, shivani
> On 4 May 2026, at 7:16 AM, Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hello,
>
> On Sat, May 02, 2026 at 08:02:37PM +0530, Athira Rajeev wrote:
>> Add documentation comment describing the parameters
>> and return code for auxtrace_record__init() in util/auxtrace.c
>>
>> Using "struct evlist *evlist __maybe_unused", gives below
>> warning with "scripts/kernel-doc".
>>
>> # ./scripts/kernel-doc -none tools/perf/util/auxtrace.c
>> Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
>> Warning: tools/perf/util/auxtrace.c:912 function parameter '__maybe_unused' not described in 'auxtrace_record__init'
>>
>> Updated parameter as "struct evlist __maybe_unused *evlist"
>> With the change, there is no erros/warnings with kernel-doc
>
> Hmm.. this is not what we used to have. I'm not sure if we want to
> update them all. Maybe better to leave it for now.
Sure, I will keep it as original version.
>
>>
>> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
>> ---
>> Changelog:
>> v3 -> v4:
>> Addressed review comment from Sashiko:
>> Update return value expectation for fail as
>> non zero return err code.
>>
>> v2 -> v3:
>> Addressed review comment from Sashiko:
>> Update return value expectation for success and fail
>> correctly.
>>
>> tools/perf/util/auxtrace.c | 17 ++++++++++++++++-
>> 1 file changed, 16 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
>> index a224687ffbc1..9e11cf4299b8 100644
>> --- a/tools/perf/util/auxtrace.c
>> +++ b/tools/perf/util/auxtrace.c
>> @@ -896,8 +896,23 @@ int auxtrace_parse_aux_action(struct evlist *evlist)
>> return 0;
>> }
>>
>> +/**
>> + * auxtrace_record__init - Initialize an AUX area tracing record.
>> + * @evlist: The list of events to check for AUX area tracing event.
>> + * @err: Pointer to an integer to store return code.
>> + *
>> + * This function looks through the @evlist to determine which AUX area
>> + * tracing hardware is being used and initializes the auxtrace_record
>> + * structure.
>> + *
>> + * Return:
>> + * a) A pointer to the struct auxtrace_record on success.
>
> I think you should mention that the this function should set *err to
> zero on success.
Sure, I will update this
Thanks
Athira
>
> Thanks,
> Namhyung
>
>
>> + * b) NULL with @err = 0 if no AUX area tracing event is found/supported
>> + * (not considered an error).
>> + * c) NULL with non-zero @err on actual auxtrace_record__init failure.
>> + */
>> struct auxtrace_record *__weak
>> -auxtrace_record__init(struct evlist *evlist __maybe_unused, int *err)
>> +auxtrace_record__init(struct evlist __maybe_unused *evlist, int *err)
>> {
>> *err = 0;
>> return NULL;
>> --
>> 2.47.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function
2026-05-02 14:32 [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Athira Rajeev
2026-05-02 14:32 ` [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function Athira Rajeev
@ 2026-05-04 5:14 ` Adrian Hunter
1 sibling, 0 replies; 5+ messages in thread
From: Adrian Hunter @ 2026-05-04 5:14 UTC (permalink / raw)
To: Athira Rajeev, acme, jolsa, mpetlan, tmricht, maddy, irogers,
namhyung
Cc: linux-perf-users, linuxppc-dev, hbathini, Tejas.Manhas1,
Tanushree.Shah, shivani
On 02/05/2026 17:32, Athira Rajeev wrote:
> perf trace record fails some cases in powerpc
>
> # ./perf test "perf trace record and replay"
> 128: perf trace record and replay : FAILED!
>
> # ./perf trace record sleep 1
> # echo $?
> 32
>
> This is happening because of non-zero err value from
> auxtrace_record__init() function.
>
> static int record__auxtrace_init(struct record *rec)
> {
> int err;
>
> if ((rec->opts.auxtrace_snapshot_opts || rec->opts.auxtrace_sample_opts)
> && record__threads_enabled(rec)) {
> pr_err("AUX area tracing options are not available in parallel streaming mode.\n");
> return -EINVAL;
> }
>
> if (!rec->itr) {
> rec->itr = auxtrace_record__init(rec->evlist, &err);
> if (err)
> return err;
> }
>
> Here "int err" is not initialised. The code expects "err" to be set
> from auxtrace_record__init() function.
>
> Update auxtrace_record__init() in arch/powerpc/util/auxtrace.c to clear
> err value in the beginning.
>
> - Clear err value in beginning of function. Any fail later will
> set appropriate return code to err.
> - Even if we haven't found any event for auxtrace, perf record
> should continue for other events. NULL return
> will indicate that there is no auxtrace record initialized.
> - Not having "err" set here will affect monitoring of other events
> also because perf record will fail seeing random value in err.
>
> Set err to -EINVAL before invoking auxtrace_record__init() in
> builtin-record.c
>
> With the fix,
>
> # ./perf trace record sleep 1
> [ perf record: Woken up 2 times to write data ]
> [ perf record: Captured and wrote 0.033 MB perf.data (228 samples) ]
>
> Fixes: 1dbfaf94cf66 ("perf powerpc: Add basic CONFIG_AUXTRACE support for VPA pmu on powerpc")
> Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> Changelog:
> v1 -> v2
> Addressed review comment from Adrian:
> - Set err to -EINVAL before invoking auxtrace_record__init() in
> builtin-record.c
> - Added kernel-doc to auxtrace_record__init() in tools/perf/util/auxtrace.c
> Addressed review comment from Namhyung:
> - Added fixes tag
>
> tools/perf/arch/powerpc/util/auxtrace.c | 6 ++++++
> tools/perf/builtin-record.c | 1 +
> 2 files changed, 7 insertions(+)
>
> diff --git a/tools/perf/arch/powerpc/util/auxtrace.c b/tools/perf/arch/powerpc/util/auxtrace.c
> index e39deff6c857..4600a1661b4f 100644
> --- a/tools/perf/arch/powerpc/util/auxtrace.c
> +++ b/tools/perf/arch/powerpc/util/auxtrace.c
> @@ -71,6 +71,12 @@ struct auxtrace_record *auxtrace_record__init(struct evlist *evlist,
> struct evsel *pos;
> int found = 0;
>
> + /*
> + * Set err value to zero here. Any fail later
> + * will set appropriate return code to err.
> + */
> + *err = 0;
> +
> evlist__for_each_entry(evlist, pos) {
> if (strstarts(pos->name, "vpa_dtl")) {
> found = 1;
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 4a5eba498c02..708825747af5 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -865,6 +865,7 @@ static int record__auxtrace_init(struct record *rec)
> }
>
> if (!rec->itr) {
> + err = -EINVAL;
> rec->itr = auxtrace_record__init(rec->evlist, &err);
> if (err)
> return err;
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-05-04 5:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-02 14:32 [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Athira Rajeev
2026-05-02 14:32 ` [PATCH V4 2/2] tools/perf: Add kernel-doc comment to auxtrace_record__init() function Athira Rajeev
2026-05-04 1:46 ` Namhyung Kim
2026-05-04 4:16 ` Athira Rajeev
2026-05-04 5:14 ` [PATCH V4 1/2] powerpc tools perf: Initialize error code in auxtrace_record_init function Adrian Hunter
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.