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

Commit f191c4a4 authored by Olav Haugan's avatar Olav Haugan Committed by Satya Durga Srinivasu Prabhala
Browse files

sched/core: Add trace point for cpu isolation



Add tracepoint to capture the cpu isolation event including KPI for
time it took to isolate.

Change-Id: I51bc0c0f59e5ed42b19fca25e6013efb9e24cfd2
Signed-off-by: default avatarOlav Haugan <ohaugan@codeaurora.org>
Signed-off-by: default avatarSyed Rameez Mustafa <rameezmustafa@codeaurora.org>
[markivx: forward port to 4.14, conflict in trace events file]
Signed-off-by: default avatarVikram Mulukutla <markivx@codeaurora.org>
Signed-off-by: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent 92d7dde0
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -1094,6 +1094,42 @@ TRACE_EVENT(sched_get_nr_running_avg,
		__entry->cpu, __entry->nr, __entry->nr_misfit, __entry->nr_max)
);

/*
 * sched_isolate - called when cores are isolated/unisolated
 *
 * @acutal_mask: mask of cores actually isolated/unisolated
 * @req_mask: mask of cores requested isolated/unisolated
 * @online_mask: cpu online mask
 * @time: amount of time in us it took to isolate/unisolate
 * @isolate: 1 if isolating, 0 if unisolating
 *
 */
TRACE_EVENT(sched_isolate,

	TP_PROTO(unsigned int requested_cpu, unsigned int isolated_cpus,
		u64 start_time, unsigned char isolate),

	TP_ARGS(requested_cpu, isolated_cpus, start_time, isolate),

	TP_STRUCT__entry(
		__field(u32, requested_cpu)
		__field(u32, isolated_cpus)
		__field(u32, time)
		__field(unsigned char, isolate)
	),

	TP_fast_assign(
		__entry->requested_cpu = requested_cpu;
		__entry->isolated_cpus = isolated_cpus;
		__entry->time = div64_u64(sched_clock() - start_time, 1000);
		__entry->isolate = isolate;
	),

	TP_printk("iso cpu=%u cpus=0x%x time=%u us isolated=%d",
		__entry->requested_cpu, __entry->isolated_cpus,
		__entry->time, __entry->isolate)
);

#include "walt.h"

#endif /* CONFIG_SMP */
+12 −0
Original line number Diff line number Diff line
@@ -5897,6 +5897,10 @@ int sched_isolate_cpu(int cpu)
	struct rq *rq = cpu_rq(cpu);
	cpumask_t avail_cpus;
	int ret_code = 0;
	u64 start_time = 0;

	if (trace_sched_isolate_enabled())
		start_time = sched_clock();

	lock_device_hotplug();

@@ -5931,6 +5935,8 @@ int sched_isolate_cpu(int cpu)

out:
	unlock_device_hotplug();
	trace_sched_isolate(cpu, cpumask_bits(cpu_isolated_mask)[0],
			    start_time, 1);
	return ret_code;
}

@@ -5944,6 +5950,10 @@ int sched_unisolate_cpu_unlocked(int cpu)
{
	int ret_code = 0;
	struct rq *rq = cpu_rq(cpu);
	u64 start_time = 0;

	if (trace_sched_isolate_enabled())
		start_time = sched_clock();

	lock_device_hotplug_assert();

@@ -5979,6 +5989,8 @@ int sched_unisolate_cpu_unlocked(int cpu)
	}

out:
	trace_sched_isolate(cpu, cpumask_bits(cpu_isolated_mask)[0],
			    start_time, 0);
	return ret_code;
}