forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/hwtracing/stm/ftrace.c
....@@ -37,8 +37,10 @@
3737 stm_ftrace_write(struct trace_export *export, const void *buf, unsigned int len)
3838 {
3939 struct stm_ftrace *stm = container_of(export, struct stm_ftrace, ftrace);
40
+ /* This is called from trace system with preemption disabled */
41
+ unsigned int cpu = smp_processor_id();
4042
41
- stm_source_write(&stm->data, STM_FTRACE_CHAN, buf, len);
43
+ stm_source_write(&stm->data, STM_FTRACE_CHAN + cpu, buf, len);
4244 }
4345
4446 static int stm_ftrace_link(struct stm_source_data *data)
....@@ -46,6 +48,8 @@
4648 struct stm_ftrace *sf = container_of(data, struct stm_ftrace, data);
4749
4850 sf->ftrace.write = stm_ftrace_write;
51
+ sf->ftrace.flags = TRACE_EXPORT_FUNCTION | TRACE_EXPORT_EVENT
52
+ | TRACE_EXPORT_MARKER;
4953
5054 return register_ftrace_export(&sf->ftrace);
5155 }
....@@ -61,6 +65,7 @@
6165 {
6266 int ret;
6367
68
+ stm_ftrace.data.nr_chans = roundup_pow_of_two(num_possible_cpus());
6469 ret = stm_source_register_device(NULL, &stm_ftrace.data);
6570 if (ret)
6671 pr_err("Failed to register stm_source - ftrace.\n");