From ffb7f4adfcc79afbecba8633160219d23a610647 Mon Sep 17 00:00:00 2001 From: Namkyu Kim Date: Wed, 2 Jun 2021 14:56:16 +0900 Subject: [PATCH] ANDROID: scheduler: add vendor-specific wake flag It comes with the commit efbb82d3b0db ("ANDROID: Add a vendor hook that allow a module to modify the wake flag"). A vendor who want to hook sock_def_readable can set this vendor-specific wake flag. sock_def_readable -> (vendor hook will call __wake_up_sync_key with a custom mode) -> __wake_up_sync_key -> (vendor hook changes wake_flags per the custom mode) -> __wake_up_common -> default_wake_function It is an Android-specific since it works with a vendor hook. Bug: 189858948 Bug: 226256614 Bug: 263838089 Signed-off-by: Namkyu Kim Change-Id: Idc23c1c47f7d83b298c0b2560859f1ce2761fd85 (cherry picked from commit 4c1097df5d9bca84a1922adc752794db9b615a3e) (cherry picked from commit 87b89ce83b2c0228b5a8300dbf5a63027eabc036) Signed-off-by: Dongseok Yi --- kernel/sched/core.c | 2 +- kernel/sched/sched.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 911e29318645..e8ea66a42fef 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6949,7 +6949,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) int default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags, void *key) { - WARN_ON_ONCE(IS_ENABLED(CONFIG_SCHED_DEBUG) && wake_flags & ~WF_SYNC); + WARN_ON_ONCE(IS_ENABLED(CONFIG_SCHED_DEBUG) && wake_flags & ~(WF_SYNC | WF_ANDROID_VENDOR)); return try_to_wake_up(curr->private, mode, wake_flags); } EXPORT_SYMBOL(default_wake_function); diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 78e9ef569ac7..dd57df69a497 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -2100,6 +2100,8 @@ static inline int task_on_rq_migrating(struct task_struct *p) #define WF_SYNC 0x10 /* Waker goes to sleep after wakeup */ #define WF_MIGRATED 0x20 /* Internal use, task got migrated */ +#define WF_ANDROID_VENDOR 0x1000 /* Vendor specific for Android */ + #ifdef CONFIG_SMP static_assert(WF_EXEC == SD_BALANCE_EXEC); static_assert(WF_FORK == SD_BALANCE_FORK);