Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c898906 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: msm_perf: Add timers to exit SINGLE mode"

parents 2a47cc88 f315238b
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -565,4 +565,14 @@ config MSM_PERFORMANCE
	  It ensures that no more than a user specified number of CPUs stay
	  online at any given point in time.

config MSM_PERFORMANCE_HOTPLUG_ON
	bool "Hotplug functionality through msm_performance turned on"
	depends on MSM_PERFORMANCE
	default y
	help
	  If some other core-control driver is present turn off the core-control
	  capability of msm_performance driver. Setting this flag to false will
	  compile out the nodes needed for core-control functionality through
	  msm_performance.

endif # ARCH_MSM
+1430 −149

File changed.

Preview size limit exceeded, changes collapsed.

+169 −0
Original line number Diff line number Diff line
@@ -667,6 +667,175 @@ DEFINE_EVENT(kpm_module, reevaluate_hotplug,
	TP_PROTO(unsigned int managed_cpus, unsigned int max_cpus),
	TP_ARGS(managed_cpus, max_cpus)
);

DECLARE_EVENT_CLASS(kpm_module2,

	TP_PROTO(unsigned int cpu, unsigned int cycles, unsigned int io_busy,
								u64 iowait),

	TP_ARGS(cpu, cycles, io_busy, iowait),

	TP_STRUCT__entry(
		__field(u32, cpu)
		__field(u32, cycles)
		__field(u32, io_busy)
		__field(u64, iowait)
	),

	TP_fast_assign(
		__entry->cpu = cpu;
		__entry->cycles = cycles;
		__entry->io_busy = io_busy;
		__entry->iowait = iowait;
	),

	TP_printk("CPU:%u cycles=%u io_busy=%u iowait=%lu",
		(unsigned int)__entry->cpu, (unsigned int)__entry->cycles,
		(unsigned int)__entry->io_busy, (unsigned long)__entry->iowait)
);

DEFINE_EVENT(kpm_module2, track_iowait,
	TP_PROTO(unsigned int cpu, unsigned int cycles, unsigned int io_busy,
								u64 iowait),
	TP_ARGS(cpu, cycles, io_busy, iowait)
);

DECLARE_EVENT_CLASS(cpu_modes,

	TP_PROTO(unsigned int cpu, unsigned int max_load,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycle_cnt,
		unsigned int total_load, unsigned int multi_cycles,
		unsigned int mode, unsigned int cpu_cnt),

	TP_ARGS(cpu, max_load, single_enter_cycle_cnt, single_exit_cycle_cnt,
		total_load, multi_cycles, mode, cpu_cnt),

	TP_STRUCT__entry(
		__field(u32, cpu)
		__field(u32, max_load)
		__field(u32, single_enter_cycle_cnt)
		__field(u32, single_exit_cycle_cnt)
		__field(u32, total_load)
		__field(u32, multi_cycles)
		__field(u32, mode)
		__field(u32, cpu_cnt)
	),

	TP_fast_assign(
		__entry->cpu = cpu;
		__entry->max_load = max_load;
		__entry->single_enter_cycle_cnt = single_enter_cycle_cnt;
		__entry->single_exit_cycle_cnt = single_exit_cycle_cnt;
		__entry->total_load = total_load;
		__entry->multi_cycles = multi_cycles;
		__entry->mode = mode;
		__entry->cpu_cnt = cpu_cnt;
	),

	TP_printk("%u:%4u:%4u:%4u:%4u:%4u:%4u:%u",
		(unsigned int)__entry->cpu, (unsigned int)__entry->max_load,
		(unsigned int)__entry->single_enter_cycle_cnt,
		(unsigned int)__entry->single_exit_cycle_cnt,
		(unsigned int)__entry->total_load,
		(unsigned int)__entry->multi_cycles,
		(unsigned int)__entry->mode,
		(unsigned int)__entry->cpu_cnt)
);

DEFINE_EVENT(cpu_modes, cpu_mode_detect,
	TP_PROTO(unsigned int cpu, unsigned int max_load,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycle_cnt,
		unsigned int total_load, unsigned int multi_cycles,
		unsigned int mode, unsigned int cpu_cnt),
	TP_ARGS(cpu, max_load, single_enter_cycle_cnt, single_exit_cycle_cnt,
		total_load, multi_cycles, mode, cpu_cnt)
);

DECLARE_EVENT_CLASS(timer_status,
	TP_PROTO(unsigned int cpu, unsigned int single_enter_cycles,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycles,
		unsigned int single_exit_cycle_cnt, unsigned int multi_cycles,
		unsigned int multi_cycle_cnt, unsigned int timer_rate,
		unsigned int mode),
	TP_ARGS(cpu, single_enter_cycles, single_enter_cycle_cnt,
		single_exit_cycles, single_exit_cycle_cnt, multi_cycles,
		multi_cycle_cnt, timer_rate, mode),

	TP_STRUCT__entry(
		__field(unsigned int, cpu)
		__field(unsigned int, single_enter_cycles)
		__field(unsigned int, single_enter_cycle_cnt)
		__field(unsigned int, single_exit_cycles)
		__field(unsigned int, single_exit_cycle_cnt)
		__field(unsigned int, multi_cycles)
		__field(unsigned int, multi_cycle_cnt)
		__field(unsigned int, timer_rate)
		__field(unsigned int, mode)
	),

	TP_fast_assign(
		__entry->cpu = cpu;
		__entry->single_enter_cycles = single_enter_cycles;
		__entry->single_enter_cycle_cnt = single_enter_cycle_cnt;
		__entry->single_exit_cycles = single_exit_cycles;
		__entry->single_exit_cycle_cnt = single_exit_cycle_cnt;
		__entry->multi_cycles = multi_cycles;
		__entry->multi_cycle_cnt = multi_cycle_cnt;
		__entry->timer_rate = timer_rate;
		__entry->mode = mode;
	),

	TP_printk("%u:%4u:%4u:%4u:%4u:%4u:%4u:%4u:%4u",
		__entry->cpu,
		__entry->single_enter_cycles,
		__entry->single_enter_cycle_cnt,
		__entry->single_exit_cycles,
		__entry->single_exit_cycle_cnt,
		__entry->multi_cycles,
		__entry->multi_cycle_cnt,
		__entry->timer_rate,
		__entry->mode)
);

DEFINE_EVENT(timer_status, single_mode_timeout,
	TP_PROTO(unsigned int cpu, unsigned int single_enter_cycles,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycles,
		unsigned int single_exit_cycle_cnt, unsigned int multi_cycles,
		unsigned int multi_cycle_cnt, unsigned int timer_rate,
		unsigned int mode),
	TP_ARGS(cpu, single_enter_cycles, single_enter_cycle_cnt,
		single_exit_cycles, single_exit_cycle_cnt, multi_cycles,
		multi_cycle_cnt, timer_rate, mode)
);

DEFINE_EVENT(timer_status, single_cycle_exit_timer_start,
	TP_PROTO(unsigned int cpu, unsigned int single_enter_cycles,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycles,
		unsigned int single_exit_cycle_cnt, unsigned int multi_cycles,
		unsigned int multi_cycle_cnt, unsigned int timer_rate,
		unsigned int mode),
	TP_ARGS(cpu, single_enter_cycles, single_enter_cycle_cnt,
		single_exit_cycles, single_exit_cycle_cnt, multi_cycles,
		multi_cycle_cnt, timer_rate, mode)
);

DEFINE_EVENT(timer_status, single_cycle_exit_timer_stop,
	TP_PROTO(unsigned int cpu, unsigned int single_enter_cycles,
		unsigned int single_enter_cycle_cnt,
		unsigned int single_exit_cycles,
		unsigned int single_exit_cycle_cnt, unsigned int multi_cycles,
		unsigned int multi_cycle_cnt, unsigned int timer_rate,
		unsigned int mode),
	TP_ARGS(cpu, single_enter_cycles, single_enter_cycle_cnt,
		single_exit_cycles, single_exit_cycle_cnt, multi_cycles,
		multi_cycle_cnt, timer_rate, mode)
);

#endif /* _TRACE_POWER_H */

/* This part must be outside protection */