RE: [PATCH 1/1] tracing: Support reading trace event format file larger than PAGE_SIZE

From: Shiju Jose
Date: Tue Jan 07 2025 - 06:05:11 EST


>-----Original Message-----
>From: Steven Rostedt <rostedt@xxxxxxxxxxx>
>Sent: 06 January 2025 22:12
>To: Shiju Jose <shiju.jose@xxxxxxxxxx>
>Cc: mhiramat@xxxxxxxxxx; mathieu.desnoyers@xxxxxxxxxxxx; linux-trace-
>kernel@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Linuxarm
><linuxarm@xxxxxxxxxx>; Jonathan Cameron
><jonathan.cameron@xxxxxxxxxx>; tanxiaofei <tanxiaofei@xxxxxxxxxx>;
>Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>
>Subject: Re: [PATCH 1/1] tracing: Support reading trace event format file larger
>than PAGE_SIZE
>
>On Mon, 6 Jan 2025 18:15:36 +0000
>Shiju Jose <shiju.jose@xxxxxxxxxx> wrote:
>
>> >You see, it requires multiple reads to pull in an entire kernel
>> >pseudo file. None of those reads are greater than PAGE_SIZE. Why
>> >should trace format files be any different?
>> Thanks for the reply.
>> Yes. I had a fix/workaround in the userspace rasdaemon with multiple
>> reads like above as reported previously in the following thread.
>> https://lore.kernel.org/lkml/3c9808a694d242cab35bab67602edebf@huawei.c
>> om/ However thought a solution in the common kernel code for the
>> format file may be better. I will go ahead with the user space
>> solution.
>
>That would make it different than every other pseudo file in the kernel. I rather
>not do that.
>
>>
>> Also shared an information in the above thread about libtraceevent
>> __parse_event() does not return error when parse_format() fail with
>> incomplete formt data, which resulted initialization for the trace event does
>not fail in the user space tool.
>
>Hmm, can you send me the the format file that failed?
>
>Just the output of "cat /sys/kernel/tracing/events/<system>/<event>/format"
>will do.

Please find attached format file, which might have failed to parse because of the
unsupported formats in the libtraceevent you mentioned in the following thread.
https://lore.kernel.org/lkml/20241127104132.6c1729e1@xxxxxxxxxxxxxxxxxx/#t

Please find the improvement in the libraceevent which I mentioned for not returning error
when parsing failed,
===========================================
diff --git a/src/event-parse.c b/src/event-parse.c index 0427061..b9264cb 100644
--- a/src/event-parse.c
+++ b/src/event-parse.c
@@ -7905,9 +7905,14 @@ __parse_event(struct tep_handle *tep,
const char *buf, unsigned long size,
const char *sys)
{
- int ret = parse_format(eventp, tep, buf, size, sys);
- struct tep_event *event = *eventp;
+ int ret;
+ struct tep_event *event;
+
+ ret = parse_format(eventp, tep, buf, size, sys);
+ if (ret)
+ return ret;

+ event = *eventp;
if (event == NULL)
return ret;
=========================================
>
>-- Steve

Thanks,
Shiju

Attachment: format_cxl_general_media
Description: format_cxl_general_media