Re: [PATCH v3] tracing: Support to dump instance traces by ftrace_dump_on_oops

From: Huang Yiwei
Date: Tue Jan 23 2024 - 05:24:38 EST




On 1/20/2024 12:56 AM, Steven Rostedt wrote:
On Fri, 19 Jan 2024 16:08:24 +0800
Huang Yiwei <quic_hyiwei@xxxxxxxxxxx> wrote:

- ftrace_dump_on_oops[=orig_cpu]
+ ftrace_dump_on_oops[=orig_cpu | =<instance>]

I wonder if we should have it be:

ftrace_dump_on_oops[=orig_cpu | =<instance> | =<instance>:orig_cpu ]

Then last would be to only print out a specific CPU trace of the given instance.

And if we really want to be fancy!

ftrace_dump_on_opps[=orig_cpu | =<instance> | =orig_cpu:<instance> ][,<instance> | ,<instance>:orig_cpu]

Yeah, I agree to make the parameter more flexible.

"=orig_cpu:<instance>" means to dump global and another instance?

I'm thinking of the following format:

ftrace_dump_on_opps[=orig_cpu | =<instance>][,<instance> | ,<instance>=orig_cpu]

Here list some possible situations:

1. Dump global on orig_cpu:
ftrace_dump_on_oops=orig_cpu

2. Dump global and instance1 on all cpu, instance2 on orig_cpu:
ftrace_dump_on_opps,<instance1>,<instance2>=orig_cpu

3. Dump global and instance1 on orig_cpu, instance2 on all cpu:
ftrace_dump_on_opps=orig_cpu,<instance1>=orig_cpu,<instance2>

4. Dump instance1 on all cpu, instance2 on orig_cpu:
ftrace_dump_on_opps=<instance1>,<instance2>=orig_cpu

5. Dump instance1 and instance2 on orig_cpu:
ftrace_dump_on_opps=<instance1>=orig_cpu,<instance2>=orig_cpu

This makes orig_cpu dump for global same as instance, the parameter may seems more unified and users don't need to remember another markers to request orig_cpu dump.

But one problem here is if there's an instance named "orig_cpu", then we may not dump it correctly.

Regards,
Huang Yiwei

That would allow dumping more than one instance.

If you want to dump the main buffer and an instance foo:

ftrace_dump_on_opps,foo

Where the ',' says to dump the top instance as well as the foo instance.

-- Steve


[FTRACE] will dump the trace buffers on oops.
- If no parameter is passed, ftrace will dump
- buffers of all CPUs, but if you pass orig_cpu, it will
+ If no parameter is passed, ftrace will dump global
+ buffers of all CPUs, if you pass orig_cpu, it will
dump only the buffer of the CPU that triggered the
- oops.
+ oops, or specific instance will be dumped if instance
+ name is passed.