From 4c58a1addcb8943148556f00fd40d1cbec1ddbb2 Mon Sep 17 00:00:00 2001 From: Stephen Dickey Date: Wed, 13 Apr 2022 09:25:18 -0700 Subject: [PATCH] ANDROID: sched: vendor hook for sched_getaffinity Just as sched_getaffinity updates the affinity based upon the active_mask, the vendor hook needs to be able to constrain the task's affinity. Introduce a hook to sched_getaffinity such that vendor modules used for implementing Qualcomm's load tracking scheme, WALT are able to update the affinity. Bug: 229133948 Change-Id: I5c501e9204d4fcc6688f675a41be60ef5a2d1075 Signed-off-by: Stephen Dickey Signed-off-by: Ashay Jaiswal --- include/trace/hooks/sched.h | 4 ++++ kernel/sched/core.c | 1 + kernel/sched/vendor_hooks.c | 1 + 3 files changed, 6 insertions(+) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 43b5595272f8..5e5a8256daab 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -124,6 +124,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity, TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval), TP_ARGS(p, in_mask, retval), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_sched_getaffinity, + TP_PROTO(struct task_struct *p, struct cpumask *in_mask), + TP_ARGS(p, in_mask), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_update_cpus_allowed, TP_PROTO(struct task_struct *p, cpumask_var_t cpus_requested, const struct cpumask *new_mask, int *ret), diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 33b0a7892bc0..ad8cffc4b08f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8303,6 +8303,7 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask) raw_spin_lock_irqsave(&p->pi_lock, flags); cpumask_and(mask, &p->cpus_mask, cpu_active_mask); + trace_android_rvh_sched_getaffinity(p, mask); raw_spin_unlock_irqrestore(&p->pi_lock, flags); out_unlock: diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 1825d84b62f3..59b1f9215a3a 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -74,3 +74,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_is_cpu_allowed); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_get_nohz_timer_target); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_getaffinity);