summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRick Yiu <rickyiu@google.com>2023-12-07 07:01:52 +0000
committerRick Yiu <rickyiu@google.com>2023-12-07 07:01:52 +0000
commitd0d3d81824357800e0b7feb4abaf0a7fbd550b9d (patch)
tree592ded77f059e76030e6159c20882310e27753da
parentd3afdead6593e3ad45b8c2959c85d20122b35014 (diff)
downloadgs-d0d3d81824357800e0b7feb4abaf0a7fbd550b9d.tar.gz
vh: sched: Use trace_android_rvh_set_user_nice_locked
Use locked version to avoid race condition. Bug: 300872872 Change-Id: I6c78523829f0d1b25d020c798732d29595978198 Signed-off-by: Rick Yiu <rickyiu@google.com>
-rw-r--r--drivers/soc/google/vh/kernel/sched/fair.c12
-rw-r--r--drivers/soc/google/vh/kernel/sched/init.c6
2 files changed, 5 insertions, 13 deletions
diff --git a/drivers/soc/google/vh/kernel/sched/fair.c b/drivers/soc/google/vh/kernel/sched/fair.c
index 45431bd45ab6..9cec88f603a9 100644
--- a/drivers/soc/google/vh/kernel/sched/fair.c
+++ b/drivers/soc/google/vh/kernel/sched/fair.c
@@ -2514,22 +2514,16 @@ out:
prev_cpu, *target_cpu);
}
-void rvh_set_user_nice_pixel_mod(void *data, struct task_struct *p, long *nice, bool *allowed)
+void rvh_set_user_nice_locked_pixel_mod(void *data, struct task_struct *p, long *nice)
{
struct vendor_task_struct *vp;
unsigned long flags;
- struct rq_flags rf;
- struct rq *rq;
if (!vendor_sched_boost_adpf_prio)
return;
- rq = task_rq_lock(p, &rf);
-
- if (p->prio < MAX_RT_PRIO) {
- task_rq_unlock(rq, p, &rf);
+ if (p->prio < MAX_RT_PRIO)
return;
- }
vp = get_vendor_task_struct(p);
if (get_uclamp_fork_reset(p, false)) {
@@ -2542,8 +2536,6 @@ void rvh_set_user_nice_pixel_mod(void *data, struct task_struct *p, long *nice,
prio_changed(p, vp->orig_prio, p->prio);
}
}
-
- task_rq_unlock(rq, p, &rf);
}
void rvh_setscheduler_pixel_mod(void *data, struct task_struct *p)
diff --git a/drivers/soc/google/vh/kernel/sched/init.c b/drivers/soc/google/vh/kernel/sched/init.c
index f4675083af6f..557b6bbf3dd2 100644
--- a/drivers/soc/google/vh/kernel/sched/init.c
+++ b/drivers/soc/google/vh/kernel/sched/init.c
@@ -93,8 +93,7 @@ extern void rvh_remove_entity_load_avg_pixel_mod(void *data, struct cfs_rq *cfs_
struct sched_entity *se);
extern void rvh_update_blocked_fair_pixel_mod(void *data, struct rq *rq);
#endif
-extern void rvh_set_user_nice_pixel_mod(void *data, struct task_struct *p, long *nice,
- bool *allowed);
+extern void rvh_set_user_nice_locked_pixel_mod(void *data, struct task_struct *p, long *nice);
extern void rvh_setscheduler_pixel_mod(void *data, struct task_struct *p);
extern void rvh_update_misfit_status_pixel_mod(void *data, struct task_struct *p,
struct rq *rq, bool *need_update);
@@ -356,7 +355,8 @@ static int vh_sched_init(void)
if (ret)
return ret;
- ret = register_trace_android_rvh_set_user_nice(rvh_set_user_nice_pixel_mod, NULL);
+ ret = register_trace_android_rvh_set_user_nice_locked(rvh_set_user_nice_locked_pixel_mod,
+ NULL);
if (ret)
return ret;