This reverts commit 1011dcce99f8026d48fdd7b9cc259e32a8b472be. Signed-off-by: Ankur Arora <ankur.a.arora@xxxxxxxxxx> --- kernel/sched/core.c | 77 ++++++++++++++++++++++++++++++++++++++++++-- kernel/sched/debug.c | 67 +------------------------------------- kernel/sched/sched.h | 6 ---- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 12f255e038ed..abc95dfe0ab4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6996,9 +6996,9 @@ enum { preempt_dynamic_full, }; -int preempt_dynamic_mode = preempt_dynamic_full; +static int preempt_dynamic_mode = preempt_dynamic_full; -int sched_dynamic_mode(const char *str) +static int sched_dynamic_mode(const char *str) { if (!strcmp(str, "none")) return preempt_dynamic_none; @@ -7012,7 +7012,7 @@ int sched_dynamic_mode(const char *str) return -EINVAL; } -void sched_dynamic_update(int mode) +static void sched_dynamic_update(int mode) { /* * Avoid {NONE,VOLUNTARY} -> FULL transitions from ever ending up in @@ -7069,8 +7069,79 @@ static int __init setup_preempt_mode(char *str) } __setup("preempt=", setup_preempt_mode); +#ifdef CONFIG_SCHED_DEBUG + +static ssize_t sched_dynamic_write(struct file *filp, const char __user *ubuf, + size_t cnt, loff_t *ppos) +{ + char buf[16]; + int mode; + + if (cnt > 15) + cnt = 15; + + if (copy_from_user(&buf, ubuf, cnt)) + return -EFAULT; + + buf[cnt] = 0; + mode = sched_dynamic_mode(strstrip(buf)); + if (mode < 0) + return mode; + + sched_dynamic_update(mode); + + *ppos += cnt; + + return cnt; +} + +static int sched_dynamic_show(struct seq_file *m, void *v) +{ + static const char * preempt_modes[] = { + "none", "voluntary", "full" + }; + int i; + + for (i = 0; i < ARRAY_SIZE(preempt_modes); i++) { + if (preempt_dynamic_mode == i) + seq_puts(m, "("); + seq_puts(m, preempt_modes[i]); + if (preempt_dynamic_mode == i) + seq_puts(m, ")"); + + seq_puts(m, " "); + } + + seq_puts(m, "\n"); + return 0; +} + +static int sched_dynamic_open(struct inode *inode, struct file *filp) +{ + return single_open(filp, sched_dynamic_show, NULL); +} + +static const struct file_operations sched_dynamic_fops = { + .open = sched_dynamic_open, + .write = sched_dynamic_write, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +extern struct dentry *debugfs_sched; + +static __init int sched_init_debug_dynamic(void) +{ + debugfs_create_file("sched_preempt", 0644, debugfs_sched, NULL, &sched_dynamic_fops); + return 0; +} +late_initcall(sched_init_debug_dynamic); + +#endif /* CONFIG_SCHED_DEBUG */ #endif /* CONFIG_PREEMPT_DYNAMIC */ + /* * This is the entry point to schedule() from kernel preemption * off of irq context. diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 4c3d0d9f3db6..67d6c35fc5a4 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -216,68 +216,6 @@ static const struct file_operations sched_scaling_fops = { #endif /* SMP */ -#ifdef CONFIG_PREEMPT_DYNAMIC - -static ssize_t sched_dynamic_write(struct file *filp, const char __user *ubuf, - size_t cnt, loff_t *ppos) -{ - char buf[16]; - int mode; - - if (cnt > 15) - cnt = 15; - - if (copy_from_user(&buf, ubuf, cnt)) - return -EFAULT; - - buf[cnt] = 0; - mode = sched_dynamic_mode(strstrip(buf)); - if (mode < 0) - return mode; - - sched_dynamic_update(mode); - - *ppos += cnt; - - return cnt; -} - -static int sched_dynamic_show(struct seq_file *m, void *v) -{ - static const char * preempt_modes[] = { - "none", "voluntary", "full" - }; - int i; - - for (i = 0; i < ARRAY_SIZE(preempt_modes); i++) { - if (preempt_dynamic_mode == i) - seq_puts(m, "("); - seq_puts(m, preempt_modes[i]); - if (preempt_dynamic_mode == i) - seq_puts(m, ")"); - - seq_puts(m, " "); - } - - seq_puts(m, "\n"); - return 0; -} - -static int sched_dynamic_open(struct inode *inode, struct file *filp) -{ - return single_open(filp, sched_dynamic_show, NULL); -} - -static const struct file_operations sched_dynamic_fops = { - .open = sched_dynamic_open, - .write = sched_dynamic_write, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; - -#endif /* CONFIG_PREEMPT_DYNAMIC */ - __read_mostly bool sched_debug_verbose; #ifdef CONFIG_SMP @@ -333,7 +271,7 @@ static const struct file_operations sched_debug_fops = { .release = seq_release, }; -static struct dentry *debugfs_sched; +struct dentry *debugfs_sched; static __init int sched_init_debug(void) { @@ -343,9 +281,6 @@ static __init int sched_init_debug(void) debugfs_create_file("features", 0644, debugfs_sched, NULL, &sched_feat_fops); debugfs_create_file_unsafe("verbose", 0644, debugfs_sched, &sched_debug_verbose, &sched_verbose_fops); -#ifdef CONFIG_PREEMPT_DYNAMIC - debugfs_create_file("preempt", 0644, debugfs_sched, NULL, &sched_dynamic_fops); -#endif debugfs_create_u32("base_slice_ns", 0644, debugfs_sched, &sysctl_sched_base_slice); diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 04846272409c..9e1329a4e890 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -3274,12 +3274,6 @@ extern void __prepare_to_swait(struct swait_queue_head *q, struct swait_queue *w extern int try_to_wake_up(struct task_struct *tsk, unsigned int state, int wake_flags); -#ifdef CONFIG_PREEMPT_DYNAMIC -extern int preempt_dynamic_mode; -extern int sched_dynamic_mode(const char *str); -extern void sched_dynamic_update(int mode); -#endif - static inline void update_current_exec_runtime(struct task_struct *curr, u64 now, u64 delta_exec) { -- 2.31.1