From 295ce88224ff163b6632f74e2255807ae4ab6cd8 Mon Sep 17 00:00:00 2001 From: lijianzhong Date: Tue, 23 Mar 2021 20:31:45 +0800 Subject: [PATCH] ANDROID: cgroup: Add vendor hook for cpuset. add vendor hook for cpuset to support oem's feature. Bug: 183674818 Signed-off-by: lijianzhong Change-Id: Ib93e05e5f6c338c5f7ada56bfebdd705f87f1f66 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/cgroup.h | 3 +++ kernel/cgroup/cpuset.c | 6 +++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 43dbf97dacf0..e811b4e7d49b 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -246,3 +246,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_scan_type); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork); diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h index cc44ccf9e109..5033d338ad37 100644 --- a/include/trace/hooks/cgroup.h +++ b/include/trace/hooks/cgroup.h @@ -12,6 +12,9 @@ struct task_struct; DECLARE_HOOK(android_vh_cgroup_set_task, TP_PROTO(int ret, struct task_struct *task), TP_ARGS(ret, task)); +DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork, + TP_PROTO(struct task_struct *p, int *inherit_cpus), + TP_ARGS(p, inherit_cpus), 1); #endif #include diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 2ecf089a9ecb..1da5f4980b92 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -67,6 +67,7 @@ #include #include +#include DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key); DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key); @@ -2902,10 +2903,13 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) */ static void cpuset_fork(struct task_struct *task) { + int inherit_cpus = 0; if (task_css_is_root(task, cpuset_cgrp_id)) return; - set_cpus_allowed_ptr(task, current->cpus_ptr); + trace_android_rvh_cpuset_fork(task, &inherit_cpus); + if (!inherit_cpus) + set_cpus_allowed_ptr(task, current->cpus_ptr); task->mems_allowed = current->mems_allowed; }