From 0338eb5f202c130067568a87dbd63d13f0701ca9 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Fri, 8 Jan 2021 08:29:38 -0500 Subject: [PATCH] Update CK patchset to 0.205 (#146) * Update CK patchset. * Update sums. * Bump pkgrel --- PKGBUILD | 2 +- linux-tkg-patches/5.10/0004-5.10-ck1.patch | 205 +++++++++++---------- 2 files changed, 109 insertions(+), 98 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index f17c58b..9809fe4 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -329,7 +329,7 @@ case $_basever in '7058e57fd68367b029adc77f2a82928f1433daaf02c8c279cb2d13556c8804d7' 'c605f638d74c61861ebdc36ebd4cb8b6475eae2f6273e1ccb2bbb3e10a2ec3fe' '2bbbac963b6ca44ef3f8a71ec7c5cad7d66df860869a73059087ee236775970a' - '4231bd331289f5678b49d084698f0a80a3ae602eccb41d89e4f85ff4465eb971' + 'e00096244e5cddaa5500d08b5f692fd3f25be9401dfa3b0fc624625ff2f5e198' '62496f9ca788996181ef145f96ad26291282fcc3fb95cdc04080dcf84365be33' '31b428c464905e44ed61cdcd1f42b4ec157ebe5a44cb5b608c4c99b466df66ba' '06e93b57b7a0b96aefc2c0ec12c3be28c6e8dc8506fa8a22c5a2313814a3c7f3' diff --git a/linux-tkg-patches/5.10/0004-5.10-ck1.patch b/linux-tkg-patches/5.10/0004-5.10-ck1.patch index 00e7c4d..274af67 100644 --- a/linux-tkg-patches/5.10/0004-5.10-ck1.patch +++ b/linux-tkg-patches/5.10/0004-5.10-ck1.patch @@ -1,8 +1,8 @@ diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index a1068742a6df..d2a8f1c637d2 100644 +index 44fde25bb221..044daa3a41ab 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -4595,6 +4595,14 @@ +@@ -4652,6 +4652,14 @@ Memory area to be used by remote processor image, managed by CMA. @@ -810,7 +810,7 @@ index 000000000000..ae28b85c9995 + +Con Kolivas Sat, 29th October 2016 diff --git a/Makefile b/Makefile -index 51540b291738..ab8c480660a6 100644 +index e30cf02da8b8..317a5c41c03f 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,10 @@ $(if $(filter __%, $(MAKECMDGOALS)), \ @@ -825,10 +825,10 @@ index 51540b291738..ab8c480660a6 100644 # to get the ordering right. # diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig -index 9c5f06e8eb9b..0d1069eee09c 100644 +index d6e9fc7a7b19..f2d07b1939fd 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig -@@ -666,6 +666,8 @@ config HZ +@@ -667,6 +667,8 @@ config HZ default 1200 if HZ_1200 default 1024 @@ -851,7 +851,7 @@ index a12656ec0072..b46b6ddc7636 100644 CONFIG_NET=y CONFIG_PACKET=y diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index e00d94b16658..efabbd09475a 100644 +index 002e0cf025f5..a3045ba688ca 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1236,6 +1236,8 @@ config SCHED_SMT @@ -877,10 +877,10 @@ index 44ff9cd88d81..9c639c998015 100644 CONFIG_KSM=y CONFIG_CLEANCACHE=y diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig -index 82d3ffb18e70..bb05667427a6 100644 +index 221f5c340c86..2cb7a9a08a05 100644 --- a/arch/arm/configs/imx_v6_v7_defconfig +++ b/arch/arm/configs/imx_v6_v7_defconfig -@@ -45,6 +45,7 @@ CONFIG_PCI_MSI=y +@@ -33,6 +33,7 @@ CONFIG_PCI_MSI=y CONFIG_PCI_IMX6=y CONFIG_SMP=y CONFIG_ARM_PSCI=y @@ -929,10 +929,10 @@ index a9c6f32a9b1c..870866aaa39d 100644 CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 6d232837cbee..052cae73d674 100644 +index a6b5b7ef40ae..621c278bb5f2 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -945,6 +945,8 @@ config SCHED_SMT +@@ -976,6 +976,8 @@ config SCHED_SMT MultiThreading at a cost of slightly increased overhead in some places. If unsure say N here. @@ -1633,10 +1633,10 @@ index 000000000000..0d976614934c +CONFIG_LIBCRC32C=m +CONFIG_FONTS=y diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index 787e829b6f25..22914bbb4caa 100644 +index 5181872f9452..bf3a47193bb5 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -882,6 +882,8 @@ config SCHED_SMT +@@ -888,6 +888,8 @@ config SCHED_SMT when dealing with POWER5 cpus at a cost of slightly increased overhead in some places. If unsure say N here. @@ -1727,10 +1727,10 @@ index bde4d21a8ac8..c054ec82d91b 100644 CONFIG_PCI=y CONFIG_PCI_MSI=y diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 7101ac64bb20..6f56ad1894d1 100644 +index fbf26e0f7a6a..ea408c778851 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -1005,6 +1005,22 @@ config NR_CPUS +@@ -1008,6 +1008,22 @@ config NR_CPUS config SCHED_SMT def_bool y if SMP @@ -1753,7 +1753,7 @@ index 7101ac64bb20..6f56ad1894d1 100644 config SCHED_MC def_bool y prompt "Multi-core scheduler support" -@@ -1035,6 +1051,8 @@ config SCHED_MC_PRIO +@@ -1038,6 +1054,8 @@ config SCHED_MC_PRIO If unsure say Y here. @@ -1762,7 +1762,7 @@ index 7101ac64bb20..6f56ad1894d1 100644 config UP_LATE_INIT def_bool y depends on !SMP && X86_LOCAL_APIC -@@ -1419,7 +1437,7 @@ config HIGHMEM64G +@@ -1422,7 +1440,7 @@ config HIGHMEM64G endchoice choice @@ -1771,7 +1771,7 @@ index 7101ac64bb20..6f56ad1894d1 100644 default VMSPLIT_3G depends on X86_32 help -@@ -1439,17 +1457,17 @@ choice +@@ -1442,17 +1460,17 @@ choice option alone! config VMSPLIT_3G @@ -1973,7 +1973,7 @@ index ac47dbac7207..09f6ba829dfd 100644 } set_current_state(TASK_RUNNING); diff --git a/drivers/block/swim.c b/drivers/block/swim.c -index dd34504382e5..0caa1c7e9223 100644 +index 52dd1efa00f9..c7131359232d 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c @@ -328,7 +328,7 @@ static inline void swim_motor(struct swim __iomem *base, @@ -2003,10 +2003,10 @@ index dd34504382e5..0caa1c7e9223 100644 swim_select(base, RELAX); if (!swim_readbit(base, STEP)) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c -index 737c0b6b24ea..a3db1f42bb3b 100644 +index 8774a3b8ff95..0097c92bec48 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c -@@ -3542,7 +3542,7 @@ static void cleanup_smi_msgs(struct ipmi_smi *intf) +@@ -3562,7 +3562,7 @@ static void cleanup_smi_msgs(struct ipmi_smi *intf) /* Current message first, to preserve order */ while (intf->curr_msg && !list_empty(&intf->waiting_rcv_msgs)) { /* Wait for the message to clear out. */ @@ -2243,10 +2243,10 @@ index 8e6607fc8a67..b9ab770bbdb5 100644 atomic_dec(&ch->n_on_msg_allocate_wq); diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c -index 4a33ec4fc089..da85f847ebb4 100644 +index 3d63b15bbaa1..164071e9d457 100644 --- a/drivers/net/caif/caif_hsi.c +++ b/drivers/net/caif/caif_hsi.c -@@ -939,7 +939,7 @@ static void cfhsi_wake_down(struct work_struct *work) +@@ -924,7 +924,7 @@ static void cfhsi_wake_down(struct work_struct *work) break; set_current_state(TASK_INTERRUPTIBLE); @@ -2256,10 +2256,10 @@ index 4a33ec4fc089..da85f847ebb4 100644 } diff --git a/drivers/net/can/usb/peak_usb/pcan_usb.c b/drivers/net/can/usb/peak_usb/pcan_usb.c -index 66d0198e7834..ce1c7bf9be87 100644 +index 63bd2ed96697..80111182faf9 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb.c -@@ -242,7 +242,7 @@ static int pcan_usb_write_mode(struct peak_usb_device *dev, u8 onoff) +@@ -290,7 +290,7 @@ static int pcan_usb_write_mode(struct peak_usb_device *dev, u8 onoff) } else { /* the PCAN-USB needs time to init */ set_current_state(TASK_INTERRUPTIBLE); @@ -2282,10 +2282,10 @@ index 65b315bc60ab..2b3f71086f5f 100644 netif_dbg(dev, ifdown, dev->net, "waited for %d urb completions\n", temp); diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c -index 2b2a841cd938..1a4d27179db1 100644 +index 6062dc27870e..d00eff8640d2 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c -@@ -767,7 +767,7 @@ static void wait_skb_queue_empty(struct sk_buff_head *q) +@@ -764,7 +764,7 @@ static void wait_skb_queue_empty(struct sk_buff_head *q) spin_lock_irqsave(&q->lock, flags); while (!skb_queue_empty(q)) { spin_unlock_irqrestore(&q->lock, flags); @@ -2295,10 +2295,10 @@ index 2b2a841cd938..1a4d27179db1 100644 spin_lock_irqsave(&q->lock, flags); } diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -index 461e955aa259..5ab8e7396ea4 100644 +index 23fbddd0c1f8..534ab3b894e2 100644 --- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c +++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -@@ -816,7 +816,7 @@ static int ipw2100_hw_send_command(struct ipw2100_priv *priv, +@@ -815,7 +815,7 @@ static int ipw2100_hw_send_command(struct ipw2100_priv *priv, * doesn't seem to have as many firmware restart cycles... * * As a test, we're sticking in a 1/100s delay here */ @@ -2307,7 +2307,7 @@ index 461e955aa259..5ab8e7396ea4 100644 return 0; -@@ -1267,7 +1267,7 @@ static int ipw2100_start_adapter(struct ipw2100_priv *priv) +@@ -1266,7 +1266,7 @@ static int ipw2100_start_adapter(struct ipw2100_priv *priv) IPW_DEBUG_FW("Waiting for f/w initialization to complete...\n"); i = 5000; do { @@ -2414,7 +2414,7 @@ index 2018614f258f..fc19b312c345 100644 if (rtc_ctrl & WM8350_RTC_ALMSTS) diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c -index 03b1805b106c..41ee54ff304a 100644 +index d1f7b84bbfe8..94da04ef6174 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c @@ -217,7 +217,7 @@ int fnic_fw_reset_handler(struct fnic *fnic) @@ -2426,7 +2426,7 @@ index 03b1805b106c..41ee54ff304a 100644 spin_lock_irqsave(&fnic->wq_copy_lock[0], flags); -@@ -2278,7 +2278,7 @@ static int fnic_clean_pending_aborts(struct fnic *fnic, +@@ -2277,7 +2277,7 @@ static int fnic_clean_pending_aborts(struct fnic *fnic, } } @@ -2449,10 +2449,10 @@ index 983eeb0e3d07..007966930f94 100644 } if (cnt) { diff --git a/drivers/scsi/snic/snic_scsi.c b/drivers/scsi/snic/snic_scsi.c -index b3650c989ed4..7ed1fb285754 100644 +index 6dd0ff188bb4..aedf0b78f622 100644 --- a/drivers/scsi/snic/snic_scsi.c +++ b/drivers/scsi/snic/snic_scsi.c -@@ -2353,7 +2353,7 @@ snic_reset(struct Scsi_Host *shost, struct scsi_cmnd *sc) +@@ -2349,7 +2349,7 @@ snic_reset(struct Scsi_Host *shost, struct scsi_cmnd *sc) /* Wait for all the IOs that are entered in Qcmd */ while (atomic_read(&snic->ios_inflight)) @@ -2558,7 +2558,7 @@ index 76d2e43817ea..6ba0604e2162 100644 } else continue; diff --git a/fs/proc/base.c b/fs/proc/base.c -index 617db4e0faa0..f85926764f9a 100644 +index b362523a9829..38e4f305ddf0 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -479,7 +479,7 @@ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns, @@ -2583,7 +2583,7 @@ index 27828145ca09..504cc97bf475 100644 #endif /* FREEZER_H_INCLUDED */ diff --git a/include/linux/init_task.h b/include/linux/init_task.h -index 2c620d7ac432..73417df5daa2 100644 +index b2412b4d4c20..0db390aeae9f 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -36,7 +36,11 @@ extern struct cred init_cred; @@ -2612,7 +2612,7 @@ index e9bfe6972aed..16ba1c7e5bde 100644 } diff --git a/include/linux/sched.h b/include/linux/sched.h -index afe01e232935..139e4535fcc6 100644 +index 76cd21fa5501..98f30ab29195 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -35,6 +35,10 @@ @@ -2626,7 +2626,7 @@ index afe01e232935..139e4535fcc6 100644 /* task_struct member predeclarations (sorted alphabetically): */ struct audit_context; struct backing_dev_info; -@@ -213,13 +217,40 @@ struct task_group; +@@ -214,13 +218,40 @@ struct io_uring_task; extern void scheduler_tick(void); @@ -2669,7 +2669,7 @@ index afe01e232935..139e4535fcc6 100644 asmlinkage void schedule(void); extern void schedule_preempt_disabled(void); asmlinkage void preempt_schedule_irq(void); -@@ -651,8 +682,10 @@ struct task_struct { +@@ -660,8 +691,10 @@ struct task_struct { unsigned int flags; unsigned int ptrace; @@ -2681,7 +2681,7 @@ index afe01e232935..139e4535fcc6 100644 struct __call_single_node wake_entry; #ifdef CONFIG_THREAD_INFO_IN_TASK /* Current CPU: */ -@@ -678,10 +711,25 @@ struct task_struct { +@@ -687,10 +720,25 @@ struct task_struct { int static_prio; int normal_prio; unsigned int rt_priority; @@ -2707,7 +2707,7 @@ index afe01e232935..139e4535fcc6 100644 #ifdef CONFIG_CGROUP_SCHED struct task_group *sched_task_group; #endif -@@ -863,6 +911,10 @@ struct task_struct { +@@ -886,6 +934,10 @@ struct task_struct { #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME u64 utimescaled; u64 stimescaled; @@ -2718,7 +2718,7 @@ index afe01e232935..139e4535fcc6 100644 #endif u64 gtime; struct prev_cputime prev_cputime; -@@ -1332,6 +1384,40 @@ struct task_struct { +@@ -1365,6 +1417,40 @@ struct task_struct { */ }; @@ -2834,7 +2834,7 @@ index e5af028c08b4..010b2244e0b6 100644 } diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h -index a98965007eef..743f67fd012e 100644 +index 85fb2f34c59b..5feb3faee812 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -93,7 +93,7 @@ int kernel_wait(pid_t pid, int *stat); @@ -2908,10 +2908,10 @@ index 3bac0a8ceab2..f48c5c5da651 100644 /* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */ #define SCHED_RESET_ON_FORK 0x40000000 diff --git a/init/Kconfig b/init/Kconfig -index d6a0b31b13dc..7e0eb99bd607 100644 +index 0872a5a2e759..f8aa9d2a9f51 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -92,6 +92,18 @@ config THREAD_INFO_IN_TASK +@@ -96,6 +96,18 @@ config THREAD_INFO_IN_TASK menu "General setup" @@ -2930,7 +2930,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 config BROKEN bool -@@ -510,6 +522,7 @@ config SCHED_THERMAL_PRESSURE +@@ -514,6 +526,7 @@ config SCHED_THERMAL_PRESSURE default y if ARM64 depends on SMP depends on CPU_FREQ_THERMAL @@ -2938,7 +2938,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 help Select this option to enable thermal pressure accounting in the scheduler. Thermal pressure is the value conveyed to the scheduler -@@ -858,6 +871,7 @@ config NUMA_BALANCING +@@ -863,6 +876,7 @@ config NUMA_BALANCING depends on ARCH_SUPPORTS_NUMA_BALANCING depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY depends on SMP && NUMA && MIGRATION @@ -2946,7 +2946,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 help This option adds support for automatic NUMA aware memory/task placement. The mechanism is quite primitive and is based on migrating memory when -@@ -942,9 +956,13 @@ menuconfig CGROUP_SCHED +@@ -947,9 +961,13 @@ menuconfig CGROUP_SCHED help This feature lets CPU scheduler recognize task groups and control CPU bandwidth allocation to such task groups. It uses cgroups to group @@ -2962,7 +2962,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 config FAIR_GROUP_SCHED bool "Group scheduling for SCHED_OTHER" depends on CGROUP_SCHED -@@ -1073,6 +1091,7 @@ config CGROUP_DEVICE +@@ -1078,6 +1096,7 @@ config CGROUP_DEVICE config CGROUP_CPUACCT bool "Simple CPU accounting controller" @@ -2970,7 +2970,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 help Provides a simple controller for monitoring the total CPU consumed by the tasks in a cgroup. -@@ -1200,6 +1219,7 @@ config CHECKPOINT_RESTORE +@@ -1205,6 +1224,7 @@ config CHECKPOINT_RESTORE config SCHED_AUTOGROUP bool "Automatic process group scheduling" @@ -2979,7 +2979,7 @@ index d6a0b31b13dc..7e0eb99bd607 100644 select CGROUP_SCHED select FAIR_GROUP_SCHED diff --git a/init/init_task.c b/init/init_task.c -index f6889fce64af..2557beb609c0 100644 +index a56f0abb63e9..d337ec0f36fc 100644 --- a/init/init_task.c +++ b/init/init_task.c @@ -75,9 +75,17 @@ struct task_struct init_task @@ -3017,10 +3017,10 @@ index f6889fce64af..2557beb609c0 100644 #ifdef CONFIG_SMP .pushable_tasks = PLIST_NODE_INIT(init_task.pushable_tasks, MAX_PRIO), diff --git a/init/main.c b/init/main.c -index e880b4ecb314..fe0a705e83f2 100644 +index 32b2a8affafd..d3c0b60ff0cf 100644 --- a/init/main.c +++ b/init/main.c -@@ -1421,6 +1421,8 @@ static int __ref kernel_init(void *unused) +@@ -1433,6 +1433,8 @@ static int __ref kernel_init(void *unused) do_sysctl_args(); @@ -3241,7 +3241,7 @@ index bf82259cff96..d9438eb6f91c 100644 config PREEMPT bool "Preemptible Kernel (Low-Latency Desktop)" diff --git a/kernel/Makefile b/kernel/Makefile -index 9a20016d4900..a2640d78eadb 100644 +index 6c9f19911be0..bbd99777a89a 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -10,7 +10,8 @@ obj-y = fork.o exec_domain.o panic.o \ @@ -3252,7 +3252,7 @@ index 9a20016d4900..a2640d78eadb 100644 + async.o range.o smpboot.o ucount.o regset.o \ + skip_list.o - obj-$(CONFIG_BPFILTER) += usermode_driver.o + obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o obj-$(CONFIG_MODULES) += kmod.o diff --git a/kernel/delayacct.c b/kernel/delayacct.c index 27725754ac99..769d773c7182 100644 @@ -3268,7 +3268,7 @@ index 27725754ac99..769d773c7182 100644 d->cpu_count += t1; diff --git a/kernel/exit.c b/kernel/exit.c -index 733e80f334e7..3f3506c851fd 100644 +index 1f236ed375f8..f400301e2086 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -121,7 +121,7 @@ static void __exit_signal(struct task_struct *tsk) @@ -3290,10 +3290,10 @@ index 733e80f334e7..3f3506c851fd 100644 __unhash_process(tsk, group_dead); write_sequnlock(&sig->stats_lock); diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig -index 10a5aff4eecc..ce3bcc66b48d 100644 +index 164a031cfdb6..016a445f589e 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig -@@ -112,6 +112,23 @@ config GENERIC_IRQ_RESERVATION_MODE +@@ -113,6 +113,23 @@ config GENERIC_IRQ_RESERVATION_MODE config IRQ_FORCED_THREADING bool @@ -3318,7 +3318,7 @@ index 10a5aff4eecc..ce3bcc66b48d 100644 bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ help diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index 5df903fccb60..17a0dd194582 100644 +index c460e0496006..218fbcbb94e6 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -25,9 +25,20 @@ @@ -3343,7 +3343,7 @@ index 5df903fccb60..17a0dd194582 100644 { force_irqthreads = true; diff --git a/kernel/kthread.c b/kernel/kthread.c -index 3edaa380dc7b..a1712699726b 100644 +index 933a625621b8..93ee79fc2b48 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -471,6 +471,34 @@ void kthread_bind(struct task_struct *p, unsigned int cpu) @@ -3452,10 +3452,10 @@ index 5fc9c9b70862..1ff14a21193d 100644 obj-$(CONFIG_MEMBARRIER) += membarrier.o diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c new file mode 100644 -index 000000000000..8da537d5226c +index 000000000000..9478e2d473b7 --- /dev/null +++ b/kernel/sched/MuQSS.c -@@ -0,0 +1,7855 @@ +@@ -0,0 +1,7866 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * kernel/sched/MuQSS.c, was kernel/sched.c @@ -3573,7 +3573,7 @@ index 000000000000..8da537d5226c + +void print_scheduler_version(void) +{ -+ printk(KERN_INFO "MuQSS CPU scheduler v0.204 by Con Kolivas.\n"); ++ printk(KERN_INFO "MuQSS CPU scheduler v0.205 by Con Kolivas.\n"); +} + +/* Define RQ share levels */ @@ -5200,7 +5200,12 @@ index 000000000000..8da537d5226c +#ifdef CONFIG_SMP + if (wake_flags & WF_MIGRATED) + en_flags |= ENQUEUE_MIGRATED; ++ else +#endif ++ if (p->in_iowait) { ++ delayacct_blkio_end(p); ++ atomic_dec(&task_rq(p)->nr_iowait); ++ } + + activate_task(rq, p, en_flags); + ttwu_do_wakeup(rq, p, wake_flags); @@ -5539,11 +5544,6 @@ index 000000000000..8da537d5226c + if (READ_ONCE(p->on_rq) && ttwu_runnable(p, wake_flags)) + goto unlock; + -+ if (p->in_iowait) { -+ delayacct_blkio_end(p); -+ atomic_dec(&task_rq(p)->nr_iowait); -+ } -+ +#ifdef CONFIG_SMP + /* + * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be @@ -5614,6 +5614,11 @@ index 000000000000..8da537d5226c + + cpu = select_best_cpu(p); + if (task_cpu(p) != cpu) { ++ if (p->in_iowait) { ++ delayacct_blkio_end(p); ++ atomic_dec(&task_rq(p)->nr_iowait); ++ } ++ + wake_flags |= WF_MIGRATED; + psi_ttwu_dequeue(p); + set_task_cpu(p, cpu); @@ -7780,9 +7785,12 @@ index 000000000000..8da537d5226c + +static inline void sched_submit_work(struct task_struct *tsk) +{ ++ unsigned int task_flags; ++ + if (!tsk->state) + return; + ++ task_flags = tsk->flags; + /* + * If a worker went to sleep, notify and ask workqueue whether + * it wants to wake up a task to maintain concurrency. @@ -7791,9 +7799,9 @@ index 000000000000..8da537d5226c + * in the possible wakeup of a kworker and because wq_worker_sleeping() + * requires it. + */ -+ if (tsk->flags & (PF_WQ_WORKER | PF_IO_WORKER)) { ++ if (task_flags & (PF_WQ_WORKER | PF_IO_WORKER)) { + preempt_disable(); -+ if (tsk->flags & PF_WQ_WORKER) ++ if (task_flags & PF_WQ_WORKER) + wq_worker_sleeping(tsk); + else + io_wq_worker_sleeping(tsk); @@ -8121,7 +8129,10 @@ index 000000000000..8da537d5226c + try_preempt(p, rq); + } +out_unlock: ++ /* Avoid rq from going away on us: */ ++ preempt_disable(); + __task_rq_unlock(rq, NULL); ++ preempt_enable(); +} +#else +static inline int rt_effective_prio(struct task_struct *p, int prio) @@ -12388,10 +12399,10 @@ index 000000000000..09a1f2fe64ba + +#endif /* MUQSS_SCHED_H */ diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c -index e39008242cf4..146a3dfe626f 100644 +index 97d318b0cd0c..fb466c681a1f 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c -@@ -183,6 +183,12 @@ static unsigned int get_next_freq(struct sugov_policy *sg_policy, +@@ -172,6 +172,12 @@ static unsigned int get_next_freq(struct sugov_policy *sg_policy, return cpufreq_driver_resolve_freq(policy, freq); } @@ -12404,7 +12415,7 @@ index e39008242cf4..146a3dfe626f 100644 /* * This function computes an effective utilization for the given CPU, to be * used for frequency selection given the linear relation: f = u * f_max. -@@ -211,7 +217,7 @@ unsigned long schedutil_cpu_util(int cpu, unsigned long util_cfs, +@@ -200,7 +206,7 @@ unsigned long schedutil_cpu_util(int cpu, unsigned long util_cfs, struct rq *rq = cpu_rq(cpu); if (!uclamp_is_used() && @@ -12413,7 +12424,7 @@ index e39008242cf4..146a3dfe626f 100644 return max; } -@@ -656,7 +662,11 @@ static int sugov_kthread_create(struct sugov_policy *sg_policy) +@@ -642,7 +648,11 @@ static int sugov_kthread_create(struct sugov_policy *sg_policy) struct task_struct *thread; struct sched_attr attr = { .size = sizeof(struct sched_attr), @@ -12483,10 +12494,10 @@ index 5a55d2300452..283a580754a7 100644 task_cputime(p, &cputime.utime, &cputime.stime); diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c -index f324dc36fc43..43ca13ed9ab0 100644 +index c6932b8f4467..3fc76869cf5f 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c -@@ -369,6 +369,7 @@ void cpu_startup_entry(enum cpuhp_state state) +@@ -395,6 +395,7 @@ void cpu_startup_entry(enum cpuhp_state state) do_idle(); } @@ -12494,13 +12505,13 @@ index f324dc36fc43..43ca13ed9ab0 100644 /* * idle-task scheduling class. */ -@@ -482,3 +483,4 @@ const struct sched_class idle_sched_class +@@ -508,3 +509,4 @@ const struct sched_class idle_sched_class .switched_to = switched_to_idle, .update_curr = update_curr_idle, }; +#endif /* CONFIG_SCHED_MUQSS */ diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 28709f6b0975..4478c11cb51a 100644 +index df80bfcea92e..e17785e91f0e 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -2,6 +2,19 @@ @@ -12523,7 +12534,7 @@ index 28709f6b0975..4478c11cb51a 100644 #include #include -@@ -2626,3 +2639,25 @@ static inline bool is_per_cpu_kthread(struct task_struct *p) +@@ -2633,3 +2646,25 @@ static inline bool is_per_cpu_kthread(struct task_struct *p) void swake_up_all_locked(struct swait_queue_head *q); void __prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait); @@ -12550,10 +12561,10 @@ index 28709f6b0975..4478c11cb51a 100644 +#endif +#endif /* CONFIG_SCHED_MUQSS */ diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c -index 1bd7e3af904f..a1dc490c15e4 100644 +index dd7770226086..4bd57a89aa6a 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c -@@ -440,7 +440,11 @@ void rq_attach_root(struct rq *rq, struct root_domain *rd) +@@ -454,7 +454,11 @@ void rq_attach_root(struct rq *rq, struct root_domain *rd) struct root_domain *old_rd = NULL; unsigned long flags; @@ -12565,7 +12576,7 @@ index 1bd7e3af904f..a1dc490c15e4 100644 if (rq->rd) { old_rd = rq->rd; -@@ -466,7 +470,11 @@ void rq_attach_root(struct rq *rq, struct root_domain *rd) +@@ -480,7 +484,11 @@ void rq_attach_root(struct rq *rq, struct root_domain *rd) if (cpumask_test_cpu(rq->cpu, cpu_active_mask)) set_rq_online(rq); @@ -12914,10 +12925,10 @@ index f5490222e134..544c58c29267 100644 /** * clockevents_increase_min_delta - raise minimum delta of a clock event device diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 95b6a708b040..19918cf649b0 100644 +index 387b4bef7dd1..fffc7c5f712f 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -2223,3 +2223,113 @@ int __sched schedule_hrtimeout(ktime_t *expires, +@@ -2218,3 +2218,113 @@ int __sched schedule_hrtimeout(ktime_t *expires, return schedule_hrtimeout_range(expires, 0, mode); } EXPORT_SYMBOL_GPL(schedule_hrtimeout); @@ -13054,7 +13065,7 @@ index a71758e34e45..ebb84a65d928 100644 /* At the hard limit, send SIGKILL. No further action. */ diff --git a/kernel/time/timer.c b/kernel/time/timer.c -index a50364df1054..a86e4530e530 100644 +index c3ad64fb9d8b..0411a289ccde 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -44,6 +44,7 @@ @@ -13065,7 +13076,7 @@ index a50364df1054..a86e4530e530 100644 #include #include -@@ -1587,7 +1588,7 @@ static unsigned long __next_timer_interrupt(struct timer_base *base) +@@ -1584,7 +1585,7 @@ static unsigned long __next_timer_interrupt(struct timer_base *base) * Check, if the next hrtimer event is before the next timer wheel * event: */ @@ -13074,7 +13085,7 @@ index a50364df1054..a86e4530e530 100644 { u64 nextevt = hrtimer_get_next_event(); -@@ -1605,6 +1606,9 @@ static u64 cmp_next_hrtimer_event(u64 basem, u64 expires) +@@ -1602,6 +1603,9 @@ static u64 cmp_next_hrtimer_event(u64 basem, u64 expires) if (nextevt <= basem) return basem; @@ -13084,7 +13095,7 @@ index a50364df1054..a86e4530e530 100644 /* * Round up to the next jiffie. High resolution timers are * off, so the hrtimers are expired in the tick and we need to -@@ -1674,7 +1678,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem) +@@ -1671,7 +1675,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem) } raw_spin_unlock(&base->lock); @@ -13093,7 +13104,7 @@ index a50364df1054..a86e4530e530 100644 } /** -@@ -1873,6 +1877,18 @@ signed long __sched schedule_timeout(signed long timeout) +@@ -1865,6 +1869,18 @@ signed long __sched schedule_timeout(signed long timeout) expire = timeout + jiffies; @@ -13112,7 +13123,7 @@ index a50364df1054..a86e4530e530 100644 timer.task = current; timer_setup_on_stack(&timer.timer, process_timeout, 0); __mod_timer(&timer.timer, expire, MOD_TIMER_NOTPENDING); -@@ -1881,10 +1897,10 @@ signed long __sched schedule_timeout(signed long timeout) +@@ -1873,10 +1889,10 @@ signed long __sched schedule_timeout(signed long timeout) /* Remove the timer from the object tracker */ destroy_timer_on_stack(&timer.timer); @@ -13125,7 +13136,7 @@ index a50364df1054..a86e4530e530 100644 return timeout < 0 ? 0 : timeout; } EXPORT_SYMBOL(schedule_timeout); -@@ -2027,7 +2043,19 @@ void __init init_timers(void) +@@ -2019,7 +2035,19 @@ void __init init_timers(void) */ void msleep(unsigned int msecs) { @@ -13146,7 +13157,7 @@ index a50364df1054..a86e4530e530 100644 while (timeout) timeout = schedule_timeout_uninterruptible(timeout); -@@ -2041,7 +2069,15 @@ EXPORT_SYMBOL(msleep); +@@ -2033,7 +2061,15 @@ EXPORT_SYMBOL(msleep); */ unsigned long msleep_interruptible(unsigned int msecs) { @@ -13164,10 +13175,10 @@ index a50364df1054..a86e4530e530 100644 while (timeout && !signal_pending(current)) timeout = schedule_timeout_interruptible(timeout); diff --git a/kernel/trace/trace_selftest.c b/kernel/trace/trace_selftest.c -index b5e3496cf803..68930e7f4d28 100644 +index 4738ad48a667..f050201c0574 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) +@@ -1053,10 +1053,15 @@ static int trace_wakeup_test_thread(void *data) { /* Make this a -deadline thread */ static const struct sched_attr attr = { @@ -13184,7 +13195,7 @@ index b5e3496cf803..68930e7f4d28 100644 struct wakeup_test_data *x = data; diff --git a/mm/vmscan.c b/mm/vmscan.c -index 466fc3144fff..27224c2d7674 100644 +index 7b4e31eac2cf..b35d95e83abd 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -169,7 +169,7 @@ struct scan_control { @@ -13197,7 +13208,7 @@ index 466fc3144fff..27224c2d7674 100644 static void set_task_reclaim_state(struct task_struct *task, struct reclaim_state *rs) diff --git a/net/core/pktgen.c b/net/core/pktgen.c -index 44fdbb9c6e53..ae0adfc677c2 100644 +index 105978604ffd..cf509f492abb 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1894,7 +1894,7 @@ static void pktgen_mark_device(const struct pktgen_net *pn, const char *ifname) @@ -13320,7 +13331,7 @@ index a9a6d766a176..45bf31de6282 100644 WM8900_REG_POWER2_SYSCLK_ENA); break; diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c -index 7072ffacbdfd..e8414ec4759c 100644 +index f333e2ff4a16..3033cc2d4005 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c @@ -199,7 +199,7 @@ static int wm9713_voice_shutdown(struct snd_soc_dapm_widget *w, @@ -13342,7 +13353,7 @@ index 7072ffacbdfd..e8414ec4759c 100644 } diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c -index 3273161e2787..7fb9b4c6dd7b 100644 +index 7f87b449f950..71a8d59afb55 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -154,7 +154,7 @@ static void dapm_assert_locked(struct snd_soc_dapm_context *dapm)