Update linux56-rc-tkg to release version, and update BMQ and PDS patchsets.

No blog post about BMQ v5.6-r0 yet:
https://gitlab.com/alfredchen/linux-bmq/-/commits/linux-5.6.y-bmq
This commit is contained in:
Tk-Glitch 2020-03-30 10:10:43 +02:00
parent e16e380937
commit 94cf80404c
23 changed files with 114 additions and 83 deletions

View File

@ -87,7 +87,7 @@ else
fi
pkgname=("${pkgbase}" "${pkgbase}-headers")
_basekernel=5.6
_sub=rc7
_sub=0
pkgver="${_basekernel}"."${_sub}"
pkgrel=1
pkgdesc='Linux-tkg'
@ -103,7 +103,8 @@ else
msg2 'ccache was not found and will not be used'
options=('!strip')
fi
source=("https://git.kernel.org/torvalds/t/linux-${_basekernel}-${_sub}.tar.gz"
source=("https://www.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.xz"
#"https://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz"
'config.x86_64' # stock Arch config
#'config_hardened.x86_64' # hardened Arch config
# ARCH Patches
@ -128,7 +129,7 @@ source=("https://git.kernel.org/torvalds/t/linux-${_basekernel}-${_sub}.tar.gz"
#0012-linux-hardened.patch
0013-tp_smapi_ec.patch
)
sha256sums=('d18c846ef07a699561d3884a34f10941aed4e079c5f2a6fc151e9c54dd8d6373'
sha256sums=('e342b04a2aa63808ea0ef1baab28fc520bd031ef8cf93d9ee4a31d4058fcb622'
'1f2c39041b00ad8cddc3a17b589ccdcd4e9e4524bd47cf9f6292e2bbc105398b'
'31dc68e84aecfb7d069efb1305049122c65694676be8b955634abcf0675922a2'
'd02bf5ca08fd610394b9d3a0c3b176d74af206f897dee826e5cbaec97bb4a4aa'
@ -139,12 +140,12 @@ sha256sums=('d18c846ef07a699561d3884a34f10941aed4e079c5f2a6fc151e9c54dd8d6373'
'd0509062a9939cc3a59c86b34a77b9d428dcea344a53a84e2cddd3d48a21591d'
'62496f9ca788996181ef145f96ad26291282fcc3fb95cdc04080dcf84365be33'
'7fd8e776209dac98627453fda754bdf9aff4a09f27cb0b3766d7983612eb3c74'
'5255ec9387d85a1e1f50b5d7f6ac9983111b31f6e437153b7fab49bb31fdf000'
'9ddfb1abaa01acf70e1352db1564fba591c2229d71d3c912213915388e944d6f'
'90917e09bb06fbed6853efe9e52f8c2ba4066fca44accdf7608222212561104a'
'2d9260b80b43bbd605cf420d6bd53aa7262103dfd77196ba590ece5600b6dc0d'
'e27ad5ff23a81b5be73a642db5186b447f336956a427d1300e8ccc49abf0dd74'
'965a517a283f265a012545fbb5cc9e516efc9f6166d2aa1baf7293a32a1086b7'
'1a647aa24074af0cc3a0ecbf8c720ab496be9fe1a62fab41c524eb6cc5dcccda'
'a214cfe4188ff24284de8ee5b0fa5ff4b0b604148a3e663e02e97cc56fec172c'
'49262ce4a8089fa70275aad742fc914baa28d9c384f710c9a62f64796d13e104'
'5fe8b22389d9df109f80fc4785908d1c32f1d469f5ef32fee613a0937965469e')
@ -204,7 +205,7 @@ prepare() {
ln -s "${_where}/customization.cfg" "${srcdir}" # workaround
cd "${srcdir}/linux-${_basekernel}-${_sub}"
cd "${srcdir}/linux-${_basekernel}"
msg2 "Setting version..."
scripts/setlocalversion --save-scmversion
@ -268,6 +269,7 @@ prepare() {
echo "CONFIG_DEFAULT_CAKE=y" >> ./.config
echo "CONFIG_NR_TTY_DEVICES=63" >> ./.config
echo "CONFIG_TP_SMAPI=m" >> ./.config
echo "CONFIG_RAID6_USE_PREFER_GEN=y" >> ./.config
echo "# CONFIG_NTP_PPS is not set" >> ./.config
sed -i -e 's/CONFIG_CRYPTO_LZ4=m/CONFIG_CRYPTO_LZ4=y/' ./.config
sed -i -e 's/CONFIG_CRYPTO_LZ4HC=m/CONFIG_CRYPTO_LZ4HC=y/' ./.config
@ -278,6 +280,10 @@ prepare() {
echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config
echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config
if [ "$_font_autoselect" != "false" ]; then
sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config
fi
# Inject cpuopts options
echo "# CONFIG_MK8SSE3 is not set" >> ./.config
echo "# CONFIG_MK10 is not set" >> ./.config
@ -887,7 +893,7 @@ prepare() {
}
build() {
cd "${srcdir}/linux-${_basekernel}-${_sub}"
cd "${srcdir}/linux-${_basekernel}"
# Use custom compiler paths if defined
if [ -n "${CUSTOM_GCC_PATH}" ]; then
@ -916,7 +922,7 @@ hackbase() {
'update-grub: Simple wrapper around grub-mkconfig.')
provides=("linux=${pkgver}" "${pkgbase}")
cd "${srcdir}/linux-${_basekernel}-${_sub}"
cd "${srcdir}/linux-${_basekernel}"
# get kernel version
local _kernver="$(<version)"
@ -944,7 +950,7 @@ hackheaders() {
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
provides=("linux-headers=${pkgver}" "${pkgbase}-headers=${pkgver}")
cd "${srcdir}/linux-${_basekernel}-${_sub}"
cd "${srcdir}/linux-${_basekernel}"
local builddir="${pkgdir}/usr/lib/modules/$(<version)/build"
msg2 "Installing build files..."

View File

@ -1,6 +1,6 @@
**Due to intel_pstate poor performances as of late, I have decided to disable it by default. It is still builtin though, and you can add `intel_pstate=enable` or `intel_pstate=passive` to your kernel command line (in GRUB for example) to either use plain intel_pstate governors or make use of acpi_cpufreq governors while keeping full support for turbo frequencies, respectively.**
**Due to intel_pstate poor performances as of late, I have decided to set it to passive mode to make use of the acpi_cpufreq governors passthrough, keeping full support for turbo frequencies.**
A custom Linux kernel 5.6 RC with specific PDS, MuQSS and BMQ CPU schedulers related patchsets selector (stock CFS is also an option) and added tweaks for a nice interactivity/performance balance, aiming for the best gaming experience.
A custom Linux kernel 5.6.y with specific PDS, MuQSS and BMQ CPU schedulers related patchsets selector (stock CFS is also an option) and added tweaks for a nice interactivity/performance balance, aiming for the best gaming experience.
Various personalization options available and userpatches support (put your own patches in the same dir as the PKGBUILD, with the ".mypatch" extension.
@ -9,6 +9,7 @@ MuQSS : http://ck-hack.blogspot.com/
BMQ : http://cchalpha.blogspot.com/
PDS-mq was originally created by Alfred Chen : http://cchalpha.blogspot.com/
While he dropped it with kernel 5.1 in favor of its BMQ evolution/rework, my pretty bad gaming experiences with BMQ up to this point convinced me to keep PDS afloat for as long as it'll make sense/I'll be able to.
You can find prebuilts on chaotic-aur, but if you need the extra-spice of per-arch optimized prebuilts, you can find PDS and MuQSS variants daily builds here : https://repo.kitsuna.net/ - Thanks to LordKitsuna.

View File

@ -1,7 +1,7 @@
From 89067d28ca90681fc6cf108de79b9aedb93dfa9d Mon Sep 17 00:00:00 2001
From: Tk-Glitch <ti3nou@gmail.com>
Date: Mon, 9 Dec 2019 7:11:23 +0100
Subject: PDS 099o, 5.5rc1 rebase
Subject: PDS 099o, 5.6 rebase
diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
@ -1070,7 +1070,7 @@ new file mode 100644
index 000000000000..aefbd9cebcfb
--- /dev/null
+++ b/kernel/sched/pds.c
@@ -0,0 +1,6541 @@
@@ -0,0 +1,6548 @@
+/*
+ * kernel/sched/pds.c, was kernel/sched.c
+ *
@ -4026,25 +4026,28 @@ index 000000000000..aefbd9cebcfb
+ * statistics and checks timeslices in a time-independent way, regardless
+ * of when exactly it is running.
+ */
+ if (idle_cpu(cpu) || !tick_nohz_tick_stopped_cpu(cpu))
+ if (!tick_nohz_tick_stopped_cpu(cpu))
+ goto out_requeue;
+
+ raw_spin_lock_irqsave(&rq->lock, flags);
+ curr = rq->curr;
+
+ if (is_idle_task(curr) || cpu_is_offline(cpu))
+ if (cpu_is_offline(cpu))
+ goto out_unlock;
+
+ curr = rq->curr;
+ update_rq_clock(rq);
+ delta = rq_clock_task(rq) - curr->last_ran;
+
+ /*
+ * Make sure the next tick runs within a reasonable
+ * amount of time.
+ */
+ WARN_ON_ONCE(delta > (u64)NSEC_PER_SEC * 3);
+ if (!is_idle_task(curr)) {
+ /*
+ * Make sure the next tick runs within a reasonable
+ * amount of time.
+ */
+ delta = rq_clock_task(rq) - curr->last_ran;
+ WARN_ON_ONCE(delta > (u64)NSEC_PER_SEC * 3);
+ }
+ pds_scheduler_task_tick(rq);
+ update_sched_rq_queued_masks_normal(rq);
+ calc_load_nohz_remote(rq);
+
+out_unlock:
+ raw_spin_unlock_irqrestore(&rq->lock, flags);
@ -6628,20 +6631,24 @@ index 000000000000..aefbd9cebcfb
+ */
+int get_nohz_timer_target(void)
+{
+ int i, cpu = smp_processor_id();
+ int i, cpu = smp_processor_id(), default_cpu = -1;
+ struct cpumask *mask;
+
+ if (!idle_cpu(cpu) && housekeeping_cpu(cpu, HK_FLAG_TIMER))
+ return cpu;
+ if (housekeeping_cpu(cpu, HK_FLAG_TIMER)) {
+ if (!idle_cpu(cpu))
+ return cpu;
+ default_cpu = cpu;
+ }
+
+ for (mask = &(per_cpu(sched_cpu_affinity_chk_masks, cpu)[0]);
+ mask < per_cpu(sched_cpu_affinity_chk_end_masks, cpu); mask++)
+ for_each_cpu(i, mask)
+ if (!idle_cpu(i) && housekeeping_cpu(i, HK_FLAG_TIMER))
+ for_each_cpu_and(i, mask, housekeeping_cpumask(HK_FLAG_TIMER))
+ if (!idle_cpu(i))
+ return i;
+
+ if (!housekeeping_cpu(cpu, HK_FLAG_TIMER))
+ cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
+ if (default_cpu == -1)
+ default_cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
+ cpu = default_cpu;
+
+ return cpu;
+}
@ -7617,7 +7624,7 @@ new file mode 100644
index 000000000000..b3926a8425b2
--- /dev/null
+++ b/kernel/sched/pds_sched.h
@@ -0,0 +1,481 @@
@@ -0,0 +1,482 @@
+#ifndef PDS_SCHED_H
+#define PDS_SCHED_H
+
@ -7695,7 +7702,8 @@ index 000000000000..b3926a8425b2
+ /* runqueue lock: */
+ raw_spinlock_t lock;
+
+ struct task_struct *curr, *idle, *stop;
+ struct task_struct __rcu *curr;
+ struct task_struct *idle, *stop;
+ struct mm_struct *prev_mm;
+
+ struct skiplist_node sl_header;

View File

@ -1,8 +1,8 @@
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index ade4e6ec23e0..80d796db0935 100644
index c07815d230bc..468c45b89114 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -432,6 +432,11 @@
@@ -436,6 +436,11 @@
embedded devices based on command line input.
See Documentation/block/cmdline-partition.rst
@ -210,10 +210,10 @@ index 82a4d37ddecb..1130e0f5db72 100644
* proportional to load.
*/
diff --git a/fs/proc/base.c b/fs/proc/base.c
index ebea9501afb8..51c9346a69fe 100644
index c7c64272b0fa..3994241745ae 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -477,7 +477,7 @@ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns,
@@ -479,7 +479,7 @@ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns,
seq_puts(m, "0 0 0\n");
else
seq_printf(m, "%llu %llu %lu\n",
@ -236,7 +236,7 @@ index 8874f681b056..59eb72bf7d5f 100644
[RLIMIT_RTTIME] = { RLIM_INFINITY, RLIM_INFINITY }, \
}
diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index 1b6d31da7cbc..dea181bdb1dd 100644
index e3279ef24d28..4e08b64c56b0 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -171,7 +171,7 @@ static inline u64 get_jiffies_64(void)
@ -249,7 +249,7 @@ index 1b6d31da7cbc..dea181bdb1dd 100644
/*
* Change timeval to jiffies, trying to avoid the
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 716ad1d8d95e..9d08ce1d6e6c 100644
index 04278493bf15..7b5838418378 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -649,13 +649,18 @@ struct task_struct {
@ -394,10 +394,10 @@ index e5af028c08b4..6387c8ea9832 100644
}
diff --git a/init/Kconfig b/init/Kconfig
index a34064a031a5..256e555538b7 100644
index 4f717bfdbfe2..ce4fb27057ee 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -697,9 +697,20 @@ config GENERIC_SCHED_CLOCK
@@ -698,9 +698,20 @@ config GENERIC_SCHED_CLOCK
menu "Scheduler features"
@ -435,7 +435,7 @@ index a34064a031a5..256e555538b7 100644
config FAIR_GROUP_SCHED
bool "Group scheduling for SCHED_OTHER"
depends on CGROUP_SCHED
@@ -1134,6 +1146,7 @@ config CHECKPOINT_RESTORE
@@ -1142,6 +1154,7 @@ config CHECKPOINT_RESTORE
config SCHED_AUTOGROUP
bool "Automatic process group scheduling"
@ -520,7 +520,7 @@ index 27725754ac99..769d773c7182 100644
d->cpu_count += t1;
diff --git a/kernel/exit.c b/kernel/exit.c
index 2833ffb0c211..37a1f8d73eee 100644
index 0b81b26a872a..0832436d88a0 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -131,7 +131,7 @@ static void __exit_signal(struct task_struct *tsk)
@ -621,10 +621,10 @@ index 21fb5a5662b5..ac31239aa51a 100644
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
diff --git a/kernel/sched/bmq.c b/kernel/sched/bmq.c
new file mode 100644
index 000000000000..6a5ab93a30bb
index 000000000000..58657044d58c
--- /dev/null
+++ b/kernel/sched/bmq.c
@@ -0,0 +1,5999 @@
@@ -0,0 +1,6005 @@
+/*
+ * kernel/sched/bmq.c
+ *
@ -697,7 +697,7 @@ index 000000000000..6a5ab93a30bb
+
+static inline void print_scheduler_version(void)
+{
+ printk(KERN_INFO "bmq: BMQ CPU Scheduler 5.5-r3 by Alfred Chen.\n");
+ printk(KERN_INFO "bmq: BMQ CPU Scheduler 5.6-r0 by Alfred Chen.\n");
+}
+
+/**
@ -1423,20 +1423,24 @@ index 000000000000..6a5ab93a30bb
+ */
+int get_nohz_timer_target(void)
+{
+ int i, cpu = smp_processor_id();
+ int i, cpu = smp_processor_id(), default_cpu = -1;
+ struct cpumask *mask;
+
+ if (!idle_cpu(cpu) && housekeeping_cpu(cpu, HK_FLAG_TIMER))
+ return cpu;
+ if (housekeeping_cpu(cpu, HK_FLAG_TIMER)) {
+ if (!idle_cpu(cpu))
+ return cpu;
+ default_cpu = cpu;
+ }
+
+ for (mask = &(per_cpu(sched_cpu_affinity_masks, cpu)[0]);
+ mask < per_cpu(sched_cpu_affinity_end_mask, cpu); mask++)
+ for_each_cpu(i, mask)
+ if (!idle_cpu(i) && housekeeping_cpu(i, HK_FLAG_TIMER))
+ for_each_cpu_and(i, mask, housekeeping_cpumask(HK_FLAG_TIMER))
+ if (!idle_cpu(i))
+ return i;
+
+ if (!housekeeping_cpu(cpu, HK_FLAG_TIMER))
+ cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
+ if (default_cpu == -1)
+ default_cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
+ cpu = default_cpu;
+
+ return cpu;
+}
@ -3613,25 +3617,27 @@ index 000000000000..6a5ab93a30bb
+ * statistics and checks timeslices in a time-independent way, regardless
+ * of when exactly it is running.
+ */
+ if (idle_cpu(cpu) || !tick_nohz_tick_stopped_cpu(cpu))
+ if (!tick_nohz_tick_stopped_cpu(cpu))
+ goto out_requeue;
+
+ raw_spin_lock_irqsave(&rq->lock, flags);
+ curr = rq->curr;
+
+ if (is_idle_task(curr) || cpu_is_offline(cpu))
+ if (cpu_is_offline(cpu))
+ goto out_unlock;
+
+ curr = rq->curr;
+ update_rq_clock(rq);
+ delta = rq_clock_task(rq) - curr->last_ran;
+
+ /*
+ * Make sure the next tick runs within a reasonable
+ * amount of time.
+ */
+ WARN_ON_ONCE(delta > (u64)NSEC_PER_SEC * 3);
+ if (!is_idle_task(curr)) {
+ /*
+ * Make sure the next tick runs within a reasonable
+ * amount of time.
+ */
+ delta = rq_clock_task(rq) - curr->last_ran;
+ WARN_ON_ONCE(delta > (u64)NSEC_PER_SEC * 3);
+ }
+ scheduler_task_tick(rq);
+
+ calc_load_nohz_remote(rq);
+out_unlock:
+ raw_spin_unlock_irqrestore(&rq->lock, flags);
+
@ -6663,10 +6669,10 @@ index 000000000000..375a1a805d86
+{}
diff --git a/kernel/sched/bmq_sched.h b/kernel/sched/bmq_sched.h
new file mode 100644
index 000000000000..449d6b54a253
index 000000000000..6fc8ae438c32
--- /dev/null
+++ b/kernel/sched/bmq_sched.h
@@ -0,0 +1,509 @@
@@ -0,0 +1,510 @@
+#ifndef BMQ_SCHED_H
+#define BMQ_SCHED_H
+
@ -6754,7 +6760,8 @@ index 000000000000..449d6b54a253
+ /* runqueue lock: */
+ raw_spinlock_t lock;
+
+ struct task_struct *curr, *idle, *stop, *skip;
+ struct task_struct __rcu *curr;
+ struct task_struct *idle, *stop, *skip;
+ struct mm_struct *prev_mm;
+
+ struct bmq queue;
@ -7177,7 +7184,7 @@ index 000000000000..449d6b54a253
+#endif
+#endif /* BMQ_SCHED_H */
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 9b8916fd00a2..9073fba046c8 100644
index 7fbaee24c824..af350d0afa56 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -183,6 +183,7 @@ static unsigned int get_next_freq(struct sugov_policy *sg_policy,
@ -7240,7 +7247,7 @@ index 9b8916fd00a2..9073fba046c8 100644
+#endif
#endif
diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
index d43318a489f2..1a312bb6f4a1 100644
index cff3e656566d..3f6feaaff3c0 100644
--- a/kernel/sched/cputime.c
+++ b/kernel/sched/cputime.c
@@ -122,7 +122,7 @@ void account_user_time(struct task_struct *p, u64 cputime)
@ -7279,7 +7286,7 @@ index d43318a489f2..1a312bb6f4a1 100644
task_rq_unlock(rq, t, &rf);
return ns;
@@ -661,7 +661,7 @@ void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev,
@@ -658,7 +658,7 @@ void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev,
void task_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
{
struct task_cputime cputime = {
@ -7289,7 +7296,7 @@ index d43318a489f2..1a312bb6f4a1 100644
task_cputime(p, &cputime.utime, &cputime.stime);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index ffa959e91227..469f36c89a9d 100644
index b743bf38f08f..5b19fde0c0ca 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -361,6 +361,7 @@ void cpu_startup_entry(enum cpuhp_state state)
@ -7306,10 +7313,10 @@ index ffa959e91227..469f36c89a9d 100644
};
+#endif
diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c
index a96db50d40e0..22c20e28b613 100644
index bd006b79b360..a3bf3c7301d5 100644
--- a/kernel/sched/pelt.c
+++ b/kernel/sched/pelt.c
@@ -236,6 +236,7 @@ ___update_load_avg(struct sched_avg *sa, unsigned long load, unsigned long runna
@@ -250,6 +250,7 @@ ___update_load_avg(struct sched_avg *sa, unsigned long load, unsigned long runna
WRITE_ONCE(sa->util_avg, sa->util_sum / divider);
}
@ -7317,7 +7324,7 @@ index a96db50d40e0..22c20e28b613 100644
/*
* sched_entity:
*
@@ -352,6 +353,7 @@ int update_dl_rq_load_avg(u64 now, struct rq *rq, int running)
@@ -366,6 +367,7 @@ int update_dl_rq_load_avg(u64 now, struct rq *rq, int running)
return 0;
}
@ -7372,7 +7379,7 @@ index afff644da065..4da52afaeff8 100644
static inline int
update_irq_load_avg(struct rq *rq, u64 running)
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 280a3c735935..db07c37806bc 100644
index 9ea647835fd6..911b30506c83 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2,6 +2,10 @@
@ -7386,15 +7393,24 @@ index 280a3c735935..db07c37806bc 100644
#include <linux/sched.h>
#include <linux/sched/autogroup.h>
@@ -2487,3 +2491,9 @@ static inline void membarrier_switch_mm(struct rq *rq,
{
@@ -2480,15 +2484,8 @@ static inline void membarrier_switch_mm(struct rq *rq,
}
#endif
+
-#ifdef CONFIG_SMP
-static inline bool is_per_cpu_kthread(struct task_struct *p)
+static inline int task_running_nice(struct task_struct *p)
+{
{
- if (!(p->flags & PF_KTHREAD))
- return false;
-
- if (p->nr_cpus_allowed != 1)
- return false;
-
- return true;
+ return (task_nice(p) > 0);
+}
}
-#endif
+#endif /* !CONFIG_SCHED_BMQ */
diff --git a/kernel/sched/stats.c b/kernel/sched/stats.c
index 750fb3c67eed..0cc040a28d3f 100644
@ -7428,7 +7444,7 @@ index 750fb3c67eed..0cc040a28d3f 100644
}
return 0;
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
index 6ec1e595b1d4..f02bbaf837b3 100644
index dfb64c08a407..16f6a8c84cfc 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -4,6 +4,7 @@
@ -7466,7 +7482,7 @@ index 6ec1e595b1d4..f02bbaf837b3 100644
#ifdef CONFIG_NUMA
static const struct cpumask *sd_numa_mask(int cpu)
@@ -2289,3 +2294,17 @@ void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[],
@@ -2328,3 +2333,17 @@ void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[],
partition_sched_domains_locked(ndoms_new, doms_new, dattr_new);
mutex_unlock(&sched_domains_mutex);
}
@ -7485,7 +7501,7 @@ index 6ec1e595b1d4..f02bbaf837b3 100644
+#endif /* CONFIG_NUMA */
+#endif
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 70665934d53e..8d0157d9932e 100644
index ad5b88a53c5a..c5f1c1995541 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -132,6 +132,10 @@ static unsigned long one_ul = 1;
@ -7524,7 +7540,7 @@ index 70665934d53e..8d0157d9932e 100644
#ifdef CONFIG_PROVE_LOCKING
{
.procname = "prove_locking",
@@ -1070,6 +1076,17 @@ static struct ctl_table kern_table[] = {
@@ -1061,6 +1067,17 @@ static struct ctl_table kern_table[] = {
.proc_handler = proc_dointvec,
},
#endif
@ -7543,7 +7559,7 @@ index 70665934d53e..8d0157d9932e 100644
{
.procname = "spin_retry",
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
index 42d512fcfda2..70b97fe0ff44 100644
index 8ff6da77a01f..61df797efb04 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -226,7 +226,7 @@ static void task_sample_cputime(struct task_struct *p, u64 *samples)
@ -7603,7 +7619,7 @@ index 42d512fcfda2..70b97fe0ff44 100644
return false;
}
diff --git a/kernel/trace/trace_selftest.c b/kernel/trace/trace_selftest.c
index 69ee8ef12cee..208788fcbb0e 100644
index b5e3496cf803..545be2c4f07c 100644
--- a/kernel/trace/trace_selftest.c
+++ b/kernel/trace/trace_selftest.c
@@ -1048,10 +1048,15 @@ static int trace_wakeup_test_thread(void *data)