diff --git a/0001-apply-preempt-RT-patch.patch b/0001-apply-preempt-RT-patch.patch index 8d379d8..053afc5 100644 --- a/0001-apply-preempt-RT-patch.patch +++ b/0001-apply-preempt-RT-patch.patch @@ -1,7 +1,7 @@ -From 27268e71ff100fbb2b16dedb07d411efe86c91af Mon Sep 17 00:00:00 2001 -From: liyulei -Date: Mon, 10 Apr 2023 09:48:17 +0800 -Subject: [PATCH] apply preempt RT patch +From 069d7f9ad6878ef306e0e15efb50cede4e996d0a Mon Sep 17 00:00:00 2001 +From: zhangyu +Date: Tue, 31 Oct 2023 14:16:34 +0800 +Subject: [PATCH] apply-preempt-RT-patch --- .../Expedited-Grace-Periods.rst | 4 +- @@ -26,7 +26,7 @@ Subject: [PATCH] apply preempt RT patch arch/arm/include/asm/irq.h | 2 + arch/arm/include/asm/kmap_types.h | 10 - arch/arm/include/asm/spinlock_types.h | 4 - - arch/arm/include/asm/thread_info.h | 12 +- + arch/arm/include/asm/thread_info.h | 5 +- arch/arm/kernel/asm-offsets.c | 1 + arch/arm/kernel/entry-armv.S | 19 +- arch/arm/kernel/signal.c | 3 +- @@ -188,14 +188,6 @@ Subject: [PATCH] apply preempt RT patch drivers/md/raid5.c | 7 +- drivers/md/raid5.h | 1 + drivers/mtd/mtdoops.c | 5 +- - drivers/net/arcnet/arc-rimi.c | 4 +- - drivers/net/arcnet/arcdevice.h | 6 + - drivers/net/arcnet/arcnet.c | 66 +- - drivers/net/arcnet/com20020-isa.c | 4 +- - drivers/net/arcnet/com20020-pci.c | 2 +- - drivers/net/arcnet/com20020_cs.c | 2 +- - drivers/net/arcnet/com90io.c | 4 +- - drivers/net/arcnet/com90xx.c | 4 +- drivers/net/ethernet/chelsio/cxgb/common.h | 6 +- drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 54 +- drivers/net/ethernet/chelsio/cxgb/sge.c | 53 +- @@ -223,7 +215,7 @@ Subject: [PATCH] apply preempt RT patch fs/btrfs/ctree.h | 1 - fs/cifs/readdir.c | 2 +- fs/dcache.c | 39 +- - fs/eventfd.c | 12 +- + fs/eventfd.c | 8 +- fs/fscache/internal.h | 1 - fs/fscache/main.c | 6 - fs/fscache/object.c | 13 +- @@ -271,7 +263,7 @@ Subject: [PATCH] apply preempt RT patch include/linux/nfs_xdr.h | 2 +- include/linux/notifier.h | 6 +- include/linux/pid.h | 1 + - include/linux/preempt.h | 190 +- + include/linux/preempt.h | 192 +- include/linux/printk.h | 30 +- include/linux/rbtree.h | 27 +- include/linux/rbtree_type.h | 31 + @@ -316,14 +308,14 @@ Subject: [PATCH] apply preempt RT patch init/Kconfig | 7 +- kernel/Kconfig.locks | 2 +- kernel/Kconfig.preempt | 7 + - kernel/cgroup/cpuset.c | 82 +- + kernel/cgroup/cpuset.c | 86 +- kernel/cgroup/rstat.c | 5 +- kernel/cpu.c | 9 +- kernel/debug/kdb/kdb_main.c | 10 +- kernel/entry/common.c | 14 +- kernel/exit.c | 2 +- kernel/fork.c | 28 +- - kernel/futex.c | 87 +- + kernel/futex/core.c | 87 +- kernel/irq/handle.c | 8 + kernel/irq/manage.c | 16 +- kernel/irq/spurious.c | 8 + @@ -345,7 +337,7 @@ Subject: [PATCH] apply preempt RT patch kernel/locking/spinlock.c | 7 + kernel/locking/spinlock_debug.c | 5 + kernel/notifier.c | 12 +- - kernel/panic.c | 33 +- + kernel/panic.c | 32 +- kernel/printk/Makefile | 1 - kernel/printk/internal.h | 4 - kernel/printk/printk.c | 1708 +++++++++-------- @@ -354,7 +346,7 @@ Subject: [PATCH] apply preempt RT patch kernel/rcu/Kconfig | 4 +- kernel/rcu/tree.c | 4 +- kernel/rcu/update.c | 4 +- - kernel/sched/core.c | 1274 +++++++++--- + kernel/sched/core.c | 1276 +++++++++--- kernel/sched/cpudeadline.c | 4 +- kernel/sched/cpupri.c | 4 +- kernel/sched/cputime.c | 36 +- @@ -362,15 +354,15 @@ Subject: [PATCH] apply preempt RT patch kernel/sched/fair.c | 16 +- kernel/sched/features.h | 8 + kernel/sched/rt.c | 83 +- - kernel/sched/sched.h | 73 +- + kernel/sched/sched.h | 72 +- kernel/sched/swait.c | 1 + kernel/signal.c | 105 +- kernel/smp.c | 14 +- - kernel/softirq.c | 426 +++- + kernel/softirq.c | 431 ++++- kernel/stop_machine.c | 27 +- kernel/time/hrtimer.c | 30 + kernel/time/tick-sched.c | 2 +- - kernel/time/timer.c | 9 +- + kernel/time/timer.c | 8 +- kernel/trace/trace.c | 93 +- kernel/trace/trace.h | 19 - kernel/trace/trace_events.c | 2 + @@ -409,7 +401,7 @@ Subject: [PATCH] apply preempt RT patch net/sched/sch_generic.c | 10 + net/sunrpc/svc_xprt.c | 4 +- net/xfrm/xfrm_state.c | 3 +- - 405 files changed, 9011 insertions(+), 4801 deletions(-) + 397 files changed, 8930 insertions(+), 4789 deletions(-) delete mode 100644 arch/alpha/include/asm/kmap_types.h delete mode 100644 arch/arc/include/asm/kmap_types.h delete mode 100644 arch/arm/include/asm/kmap_types.h @@ -445,7 +437,7 @@ Subject: [PATCH] apply preempt RT patch create mode 100644 kernel/locking/rwsem-rt.c diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst -index 72f0f6fbd53c..6f89cf1e567d 100644 +index 72f0f6fbd..6f89cf1e5 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst @@ -38,7 +38,7 @@ sections. @@ -467,7 +459,7 @@ index 72f0f6fbd53c..6f89cf1e567d 100644 shown in the following diagram: diff --git a/Documentation/RCU/Design/Requirements/Requirements.rst b/Documentation/RCU/Design/Requirements/Requirements.rst -index 1ae79a10a8de..17d38480ef5c 100644 +index 1ae79a10a..17d38480e 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.rst +++ b/Documentation/RCU/Design/Requirements/Requirements.rst @@ -78,7 +78,7 @@ RCU treats a nested set as one big RCU read-side critical section. @@ -566,7 +558,7 @@ index 1ae79a10a8de..17d38480ef5c 100644 for voluntary context switches. diff --git a/Documentation/RCU/checklist.rst b/Documentation/RCU/checklist.rst -index 2efed9926c3f..7ed4956043bd 100644 +index 2efed9926..7ed495604 100644 --- a/Documentation/RCU/checklist.rst +++ b/Documentation/RCU/checklist.rst @@ -214,7 +214,7 @@ over a rather long period of time, but improvements are always welcome! @@ -579,7 +571,7 @@ index 2efed9926c3f..7ed4956043bd 100644 then the corresponding readers my use rcu_read_lock() and rcu_read_unlock(), rcu_read_lock_bh() and rcu_read_unlock_bh(), diff --git a/Documentation/RCU/rcubarrier.rst b/Documentation/RCU/rcubarrier.rst -index f64f4413a47c..3b4a24877496 100644 +index f64f4413a..3b4a24877 100644 --- a/Documentation/RCU/rcubarrier.rst +++ b/Documentation/RCU/rcubarrier.rst @@ -9,7 +9,7 @@ RCU (read-copy update) is a synchronization mechanism that can be thought @@ -605,7 +597,7 @@ index f64f4413a47c..3b4a24877496 100644 Therefore, on_each_cpu() disables preemption across its call to smp_call_function() and also across the local call to diff --git a/Documentation/RCU/stallwarn.rst b/Documentation/RCU/stallwarn.rst -index c9ab6af4d3be..e97d1b4876ef 100644 +index c9ab6af4d..e97d1b487 100644 --- a/Documentation/RCU/stallwarn.rst +++ b/Documentation/RCU/stallwarn.rst @@ -25,7 +25,7 @@ warnings: @@ -627,7 +619,7 @@ index c9ab6af4d3be..e97d1b4876ef 100644 read-side critical section. This is especially damaging if that low-priority task is not permitted to run on any other CPU, diff --git a/Documentation/RCU/whatisRCU.rst b/Documentation/RCU/whatisRCU.rst -index fb3ff76c3e73..3b2b1479fd0f 100644 +index fb3ff76c3..3b2b1479f 100644 --- a/Documentation/RCU/whatisRCU.rst +++ b/Documentation/RCU/whatisRCU.rst @@ -684,7 +684,7 @@ Quick Quiz #1: @@ -671,10 +663,10 @@ index fb3ff76c3e73..3b2b1479fd0f 100644 read-side critical sections. It also permits spinlocks blocking while in RCU read-side critical diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 8a1a25216da6..4779442505d5 100644 +index 71567aa7e..ee4911a95 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -4345,6 +4345,10 @@ +@@ -4397,6 +4397,10 @@ value, meaning that RCU_SOFTIRQ is used by default. Specify rcutree.use_softirq=0 to use rcuc kthreads. @@ -685,7 +677,7 @@ index 8a1a25216da6..4779442505d5 100644 rcutree.rcu_fanout_exact= [KNL] Disable autobalancing of the rcu_node combining tree. This is used by rcutorture, and might -@@ -4723,6 +4727,13 @@ +@@ -4775,6 +4779,13 @@ only normal grace-period primitives. No effect on CONFIG_TINY_RCU kernels. @@ -700,7 +692,7 @@ index 8a1a25216da6..4779442505d5 100644 Set time in jiffies during which RCU tasks will avoid sending IPIs, starting with the beginning diff --git a/Documentation/driver-api/io-mapping.rst b/Documentation/driver-api/io-mapping.rst -index a966239f04e4..a7830c59481f 100644 +index a966239f0..a7830c594 100644 --- a/Documentation/driver-api/io-mapping.rst +++ b/Documentation/driver-api/io-mapping.rst @@ -20,78 +20,64 @@ A mapping object is created during driver initialization using:: @@ -822,7 +814,7 @@ index a966239f04e4..a7830c59481f 100644 -performs an IPI to inform all processors about the new mapping. This results -in a significant performance penalty. diff --git a/arch/Kconfig b/arch/Kconfig -index b0319fa3c3ee..32694b49d01e 100644 +index b0319fa3c..32694b49d 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -50,6 +50,7 @@ config OPROFILE @@ -856,7 +848,7 @@ index b0319fa3c3ee..32694b49d01e 100644 help diff --git a/arch/alpha/include/asm/kmap_types.h b/arch/alpha/include/asm/kmap_types.h deleted file mode 100644 -index 651714b45729..000000000000 +index 651714b45..000000000 --- a/arch/alpha/include/asm/kmap_types.h +++ /dev/null @@ -1,15 +0,0 @@ @@ -876,7 +868,7 @@ index 651714b45729..000000000000 - -#endif diff --git a/arch/alpha/include/asm/spinlock_types.h b/arch/alpha/include/asm/spinlock_types.h -index 1d5716bc060b..6883bc952d22 100644 +index 1d5716bc0..6883bc952 100644 --- a/arch/alpha/include/asm/spinlock_types.h +++ b/arch/alpha/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -891,7 +883,7 @@ index 1d5716bc060b..6883bc952d22 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig -index 0a89cc9def65..d8804001d550 100644 +index 0a89cc9de..d8804001d 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -507,6 +507,7 @@ config LINUX_RAM_BASE @@ -903,7 +895,7 @@ index 0a89cc9def65..d8804001d550 100644 With ARC 2G:2G address split, only upper 2G is directly addressable by kernel. Enable this to potentially allow access to rest of 2G and PAE diff --git a/arch/arc/include/asm/highmem.h b/arch/arc/include/asm/highmem.h -index 6e5eafb3afdd..a6b8e2c352c4 100644 +index 6e5eafb3a..a6b8e2c35 100644 --- a/arch/arc/include/asm/highmem.h +++ b/arch/arc/include/asm/highmem.h @@ -9,17 +9,29 @@ @@ -958,7 +950,7 @@ index 6e5eafb3afdd..a6b8e2c352c4 100644 #endif diff --git a/arch/arc/include/asm/kmap_types.h b/arch/arc/include/asm/kmap_types.h deleted file mode 100644 -index fecf7851ec32..000000000000 +index fecf7851e..000000000 --- a/arch/arc/include/asm/kmap_types.h +++ /dev/null @@ -1,14 +0,0 @@ @@ -977,7 +969,7 @@ index fecf7851ec32..000000000000 - */ -#endif diff --git a/arch/arc/mm/highmem.c b/arch/arc/mm/highmem.c -index 1b9f473c6369..c79912a6b196 100644 +index 1b9f473c6..c79912a6b 100644 --- a/arch/arc/mm/highmem.c +++ b/arch/arc/mm/highmem.c @@ -36,9 +36,8 @@ @@ -1056,7 +1048,7 @@ index 1b9f473c6369..c79912a6b196 100644 + alloc_kmap_pgtable(FIXMAP_BASE); } diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 6bc58af25bbb..334a76a8dd35 100644 +index 400d53736..220c116cd 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -31,6 +31,7 @@ config ARM @@ -1101,7 +1093,7 @@ index 6bc58af25bbb..334a76a8dd35 100644 The address space of ARM processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h -index 9575b404019c..707068f852c2 100644 +index 9575b4040..707068f85 100644 --- a/arch/arm/include/asm/fixmap.h +++ b/arch/arm/include/asm/fixmap.h @@ -7,14 +7,14 @@ @@ -1122,7 +1114,7 @@ index 9575b404019c..707068f852c2 100644 /* Support writing RO kernel text via kprobes, jump labels, etc. */ FIX_TEXT_POKE0, diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h -index b95848ed2bc7..706efafbf972 100644 +index b95848ed2..706efafbf 100644 --- a/arch/arm/include/asm/hardirq.h +++ b/arch/arm/include/asm/hardirq.h @@ -2,16 +2,11 @@ @@ -1146,7 +1138,7 @@ index b95848ed2bc7..706efafbf972 100644 #endif /* __ASM_HARDIRQ_H */ diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h -index 31811be38d78..b22dffa8c7eb 100644 +index 31811be38..b22dffa8c 100644 --- a/arch/arm/include/asm/highmem.h +++ b/arch/arm/include/asm/highmem.h @@ -2,7 +2,8 @@ @@ -1202,7 +1194,7 @@ index 31811be38d78..b22dffa8c7eb 100644 #endif diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h -index 54b0180c8aeb..36d040c68163 100644 +index 54b0180c8..36d040c68 100644 --- a/arch/arm/include/asm/irq.h +++ b/arch/arm/include/asm/irq.h @@ -31,6 +31,8 @@ void handle_IRQ(unsigned int, struct pt_regs *); @@ -1216,7 +1208,7 @@ index 54b0180c8aeb..36d040c68163 100644 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h deleted file mode 100644 -index 5590940ee43d..000000000000 +index 5590940ee..000000000 --- a/arch/arm/include/asm/kmap_types.h +++ /dev/null @@ -1,10 +0,0 @@ @@ -1231,7 +1223,7 @@ index 5590940ee43d..000000000000 - -#endif diff --git a/arch/arm/include/asm/spinlock_types.h b/arch/arm/include/asm/spinlock_types.h -index 5976958647fe..a37c0803954b 100644 +index 597695864..a37c08039 100644 --- a/arch/arm/include/asm/spinlock_types.h +++ b/arch/arm/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -1246,7 +1238,7 @@ index 5976958647fe..a37c0803954b 100644 typedef struct { diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h -index 070375d96e24..c636a1bf754a 100644 +index 16bcc6f36..ac682026a 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h @@ -55,6 +55,7 @@ struct cpu_context_save { @@ -1257,22 +1249,15 @@ index 070375d96e24..c636a1bf754a 100644 mm_segment_t addr_limit; /* address limit */ struct task_struct *task; /* main task structure */ __u32 cpu; /* cpu */ -@@ -147,9 +148,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, - #define TIF_SYSCALL_TRACE 4 /* syscall trace active */ - #define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */ - #define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */ --#define TIF_SECCOMP 7 /* seccomp syscall filtering active */ --#define TIF_PATCH_PENDING 8 /* pending live patching update */ --#define TIF_NOTIFY_SIGNAL 9 /* signal notifications exist */ -+ -+#define TIF_NEED_RESCHED_LAZY 7 -+#define TIF_SECCOMP 8 /* seccomp syscall filtering active */ -+#define TIF_PATCH_PENDING 9 /* pending live patching update */ -+#define TIF_NOTIFY_SIGNAL 10 /* signal notifications exist */ +@@ -145,6 +146,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, + #define TIF_NOTIFY_RESUME 2 /* callback before returning to user */ + #define TIF_UPROBE 3 /* breakpointed or singlestepping */ + #define TIF_NOTIFY_SIGNAL 4 /* signal notifications exist */ ++#define TIF_NEED_RESCHED_LAZY 7 + #define TIF_PATCH_PENDING 8 /* pending live patching update */ #define TIF_USING_IWMMXT 17 - #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ -@@ -158,6 +161,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, +@@ -159,6 +161,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) @@ -1280,7 +1265,7 @@ index 070375d96e24..c636a1bf754a 100644 #define _TIF_UPROBE (1 << TIF_UPROBE) #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) -@@ -175,7 +179,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, +@@ -176,7 +179,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, * Change these and you break ASM code in entry-common.S */ #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ @@ -1290,7 +1275,7 @@ index 070375d96e24..c636a1bf754a 100644 #endif /* __KERNEL__ */ diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c -index 70993af22d80..024c65c3a0f2 100644 +index 70993af22..024c65c3a 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c @@ -43,6 +43,7 @@ int main(void) @@ -1302,7 +1287,7 @@ index 70993af22d80..024c65c3a0f2 100644 DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index 4332e5950042..efb2d0755ce7 100644 +index 4332e5950..efb2d0755 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -207,11 +207,18 @@ __irq_svc: @@ -1343,7 +1328,7 @@ index 4332e5950042..efb2d0755ce7 100644 __und_fault: diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c -index a3a38d0a4c85..f04ccf19ab1f 100644 +index a3a38d0a4..f04ccf19a 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -649,7 +649,8 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) @@ -1357,7 +1342,7 @@ index a3a38d0a4c85..f04ccf19ab1f 100644 } else { if (unlikely(!user_mode(regs))) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index d94e39a21698..44383bfbf98b 100644 +index d94e39a21..44383bfbf 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -671,9 +671,7 @@ static void do_handle_IPI(int ipinr) @@ -1371,7 +1356,7 @@ index d94e39a21698..44383bfbf98b 100644 default: diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile -index 4536159bc8fa..3510503bc5e6 100644 +index 4536159bc..3510503bc 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile @@ -21,7 +21,6 @@ KASAN_SANITIZE_physaddr.o := n @@ -1383,7 +1368,7 @@ index 4536159bc8fa..3510503bc5e6 100644 obj-$(CONFIG_ARM_PV_FIXUP) += pv-fixup-asm.o diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c -index 10f909744d5e..fd9e3e740b3d 100644 +index 10f909744..fd9e3e740 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c @@ -49,9 +49,9 @@ static inline unsigned long l2_get_va(unsigned long paddr) @@ -1408,7 +1393,7 @@ index 10f909744d5e..fd9e3e740b3d 100644 } diff --git a/arch/arm/mm/cache-xsc3l2.c b/arch/arm/mm/cache-xsc3l2.c -index 5814731653d9..f34845da3522 100644 +index 581473165..f34845da3 100644 --- a/arch/arm/mm/cache-xsc3l2.c +++ b/arch/arm/mm/cache-xsc3l2.c @@ -59,7 +59,7 @@ static inline void l2_unmap_va(unsigned long va) @@ -1430,7 +1415,7 @@ index 5814731653d9..f34845da3522 100644 return va + (pa_offset >> (32 - PAGE_SHIFT)); #else diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c -index 91965fb043de..d34166682b7f 100644 +index 91965fb04..d34166682 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -430,6 +430,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr, @@ -1445,7 +1430,7 @@ index 91965fb043de..d34166682b7f 100644 diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c deleted file mode 100644 -index 187fab227b50..000000000000 +index 187fab227..000000000 --- a/arch/arm/mm/highmem.c +++ /dev/null @@ -1,121 +0,0 @@ @@ -1571,7 +1556,7 @@ index 187fab227b50..000000000000 - return (void *)vaddr; -} diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 3dcf96f37a3c..7d3aefc50ada 100644 +index 30c747321..9b3118068 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -78,6 +78,7 @@ config ARM64 @@ -1579,10 +1564,10 @@ index 3dcf96f37a3c..7d3aefc50ada 100644 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && (GCC_VERSION >= 50000 || CC_IS_CLANG) select ARCH_SUPPORTS_NUMA_BALANCING + select ARCH_SUPPORTS_RT if HAVE_POSIX_CPU_TIMERS_TASK_WORK + select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT select ARCH_WANT_DEFAULT_BPF_JIT - select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT -@@ -182,6 +183,7 @@ config ARM64 +@@ -184,6 +185,7 @@ config ARM64 select HAVE_PERF_EVENTS select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -1590,7 +1575,7 @@ index 3dcf96f37a3c..7d3aefc50ada 100644 select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_FUNCTION_ARG_ACCESS_API select HAVE_FUTEX_CMPXCHG if FUTEX -@@ -205,6 +207,7 @@ config ARM64 +@@ -207,6 +209,7 @@ config ARM64 select PCI_DOMAINS_GENERIC if PCI select PCI_ECAM if (ACPI && PCI) select PCI_SYSCALL if PCI @@ -1599,7 +1584,7 @@ index 3dcf96f37a3c..7d3aefc50ada 100644 select POWER_SUPPLY select SPARSE_IRQ diff --git a/arch/arm64/include/asm/hardirq.h b/arch/arm64/include/asm/hardirq.h -index 5ffa4bacdad3..cbfa7b6f2e09 100644 +index 5ffa4bacd..cbfa7b6f2 100644 --- a/arch/arm64/include/asm/hardirq.h +++ b/arch/arm64/include/asm/hardirq.h @@ -13,11 +13,8 @@ @@ -1617,7 +1602,7 @@ index 5ffa4bacdad3..cbfa7b6f2e09 100644 #define __ARCH_IRQ_EXIT_IRQS_DISABLED 1 diff --git a/arch/arm64/include/asm/preempt.h b/arch/arm64/include/asm/preempt.h -index e83f0982b99c..7a5770d825b9 100644 +index e83f0982b..7a5770d82 100644 --- a/arch/arm64/include/asm/preempt.h +++ b/arch/arm64/include/asm/preempt.h @@ -70,17 +70,43 @@ static inline bool __preempt_count_dec_and_test(void) @@ -1666,7 +1651,7 @@ index e83f0982b99c..7a5770d825b9 100644 void preempt_schedule_notrace(void); #define __preempt_schedule_notrace() preempt_schedule_notrace() diff --git a/arch/arm64/include/asm/spinlock_types.h b/arch/arm64/include/asm/spinlock_types.h -index 18782f0c4721..6672b05350b4 100644 +index 18782f0c4..6672b0535 100644 --- a/arch/arm64/include/asm/spinlock_types.h +++ b/arch/arm64/include/asm/spinlock_types.h @@ -5,10 +5,6 @@ @@ -1681,7 +1666,7 @@ index 18782f0c4721..6672b05350b4 100644 #include diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h -index dd8d27ea7e78..6464a3224372 100644 +index dd8d27ea7..6464a3224 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -27,6 +27,7 @@ struct thread_info { @@ -1723,7 +1708,7 @@ index dd8d27ea7e78..6464a3224372 100644 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ _TIF_SYSCALL_EMU) diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c -index 5f59e24c95d3..4f522206c47a 100644 +index 5f59e24c9..4f522206c 100644 --- a/arch/arm64/kernel/asm-offsets.c +++ b/arch/arm64/kernel/asm-offsets.c @@ -31,6 +31,7 @@ int main(void) @@ -1735,7 +1720,7 @@ index 5f59e24c95d3..4f522206c47a 100644 DEFINE(TSK_TI_TTBR0, offsetof(struct task_struct, thread_info.ttbr0)); #endif diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S -index 64145bfab48f..4cdbba7202af 100644 +index 64145bfab..4cdbba720 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -521,9 +521,18 @@ alternative_if ARM64_HAS_IRQ_PRIO_MASKING @@ -1760,7 +1745,7 @@ index 64145bfab48f..4cdbba7202af 100644 mov x0, sp diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c -index 5335a6bd1a0d..84520f11667d 100644 +index 5335a6bd1..84520f116 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -226,6 +226,16 @@ static void sve_free(struct task_struct *task) @@ -1806,7 +1791,7 @@ index 5335a6bd1a0d..84520f11667d 100644 /* diff --git a/arch/arm64/kernel/ipi_nmi.c b/arch/arm64/kernel/ipi_nmi.c -index 9a8f7c256117..c0753dcdb22a 100644 +index 9a8f7c256..c0753dcdb 100644 --- a/arch/arm64/kernel/ipi_nmi.c +++ b/arch/arm64/kernel/ipi_nmi.c @@ -35,9 +35,7 @@ void arm64_send_nmi(cpumask_t *mask) @@ -1820,7 +1805,7 @@ index 9a8f7c256117..c0753dcdb22a 100644 static DEFINE_PER_CPU(call_single_data_t, cpu_backtrace_csd) = diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c -index 17cb54d1e420..7f4a034530bd 100644 +index 17cb54d1e..7f4a03453 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -694,7 +694,7 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, @@ -1833,10 +1818,10 @@ index 17cb54d1e420..7f4a034530bd 100644 local_daif_restore(DAIF_PROCCTX_NOIRQ); diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c -index a94acb502237..5d1e308e54f8 100644 +index bc5a91d17..b757d28ab 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c -@@ -860,7 +860,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -855,7 +855,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) * involves poking the GIC, which must be done in a * non-preemptible context. */ @@ -1845,7 +1830,7 @@ index a94acb502237..5d1e308e54f8 100644 kvm_pmu_flush_hwstate(vcpu); -@@ -884,7 +884,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -879,7 +879,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) kvm_timer_sync_user(vcpu); kvm_vgic_sync_hwstate(vcpu); local_irq_enable(); @@ -1854,7 +1839,7 @@ index a94acb502237..5d1e308e54f8 100644 continue; } -@@ -963,7 +963,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -958,7 +958,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) /* Exit types that need handling before we can be preempted */ handle_exit_early(vcpu, ret); @@ -1864,7 +1849,7 @@ index a94acb502237..5d1e308e54f8 100644 /* * The ARMv8 architecture doesn't give the hypervisor diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig -index 7bf0a617e94c..c9f2533cc53d 100644 +index 7bf0a617e..c9f2533cc 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -286,6 +286,7 @@ config NR_CPUS @@ -1876,7 +1861,7 @@ index 7bf0a617e94c..c9f2533cc53d 100644 config FORCE_MAX_ZONEORDER diff --git a/arch/csky/include/asm/fixmap.h b/arch/csky/include/asm/fixmap.h -index 81f9477d5330..4b589cc20900 100644 +index 81f9477d5..4b589cc20 100644 --- a/arch/csky/include/asm/fixmap.h +++ b/arch/csky/include/asm/fixmap.h @@ -8,7 +8,7 @@ @@ -1898,7 +1883,7 @@ index 81f9477d5330..4b589cc20900 100644 __end_of_fixed_addresses }; diff --git a/arch/csky/include/asm/highmem.h b/arch/csky/include/asm/highmem.h -index 14645e3d5cd5..1f4ed3f4c0d9 100644 +index 14645e3d5..1f4ed3f4c 100644 --- a/arch/csky/include/asm/highmem.h +++ b/arch/csky/include/asm/highmem.h @@ -9,7 +9,7 @@ @@ -1925,7 +1910,7 @@ index 14645e3d5cd5..1f4ed3f4c0d9 100644 #endif /* __KERNEL__ */ diff --git a/arch/csky/mm/highmem.c b/arch/csky/mm/highmem.c -index 89c10800a002..4161df3c6c15 100644 +index 89c10800a..4161df3c6 100644 --- a/arch/csky/mm/highmem.c +++ b/arch/csky/mm/highmem.c @@ -9,8 +9,6 @@ @@ -2022,7 +2007,7 @@ index 89c10800a002..4161df3c6c15 100644 - kmap_pte = pte_offset_kernel((pmd_t *)pgd_offset_k(vaddr), vaddr); -} diff --git a/arch/hexagon/include/asm/spinlock_types.h b/arch/hexagon/include/asm/spinlock_types.h -index 19d233497ba5..de72fb23016d 100644 +index 19d233497..de72fb230 100644 --- a/arch/hexagon/include/asm/spinlock_types.h +++ b/arch/hexagon/include/asm/spinlock_types.h @@ -8,10 +8,6 @@ @@ -2038,7 +2023,7 @@ index 19d233497ba5..de72fb23016d 100644 } arch_spinlock_t; diff --git a/arch/ia64/include/asm/kmap_types.h b/arch/ia64/include/asm/kmap_types.h deleted file mode 100644 -index 5c268cf7c2bd..000000000000 +index 5c268cf7c..000000000 --- a/arch/ia64/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2056,7 +2041,7 @@ index 5c268cf7c2bd..000000000000 - -#endif /* _ASM_IA64_KMAP_TYPES_H */ diff --git a/arch/ia64/include/asm/spinlock_types.h b/arch/ia64/include/asm/spinlock_types.h -index 6e345fefcdca..681408d6816f 100644 +index 6e345fefc..681408d68 100644 --- a/arch/ia64/include/asm/spinlock_types.h +++ b/arch/ia64/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -2071,7 +2056,7 @@ index 6e345fefcdca..681408d6816f 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c -index 7abc5f37bfaf..733e0e3324b8 100644 +index 7abc5f37b..733e0e332 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c @@ -138,12 +138,8 @@ void vtime_account_kernel(struct task_struct *tsk) @@ -2110,7 +2095,7 @@ index 7abc5f37bfaf..733e0e3324b8 100644 static irqreturn_t diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig -index 33925ffed68f..7f6ca0ab4f81 100644 +index 33925ffed..7f6ca0ab4 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -155,6 +155,7 @@ config XILINX_UNCACHED_SHADOW @@ -2122,7 +2107,7 @@ index 33925ffed68f..7f6ca0ab4f81 100644 The address space of Microblaze processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/microblaze/include/asm/fixmap.h b/arch/microblaze/include/asm/fixmap.h -index 0379ce5229e3..e6e9288bff76 100644 +index 0379ce522..e6e9288bf 100644 --- a/arch/microblaze/include/asm/fixmap.h +++ b/arch/microblaze/include/asm/fixmap.h @@ -20,7 +20,7 @@ @@ -2144,7 +2129,7 @@ index 0379ce5229e3..e6e9288bff76 100644 __end_of_fixed_addresses }; diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h -index 284ca8fb54c1..4418633fb163 100644 +index 284ca8fb5..4418633fb 100644 --- a/arch/microblaze/include/asm/highmem.h +++ b/arch/microblaze/include/asm/highmem.h @@ -25,7 +25,6 @@ @@ -2168,7 +2153,7 @@ index 284ca8fb54c1..4418633fb163 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile -index 1b16875cea70..8ced71100047 100644 +index 1b16875ce..8ced71100 100644 --- a/arch/microblaze/mm/Makefile +++ b/arch/microblaze/mm/Makefile @@ -6,4 +6,3 @@ @@ -2178,7 +2163,7 @@ index 1b16875cea70..8ced71100047 100644 -obj-$(CONFIG_HIGHMEM) += highmem.o diff --git a/arch/microblaze/mm/highmem.c b/arch/microblaze/mm/highmem.c deleted file mode 100644 -index 92e0890416c9..000000000000 +index 92e089041..000000000 --- a/arch/microblaze/mm/highmem.c +++ /dev/null @@ -1,78 +0,0 @@ @@ -2261,7 +2246,7 @@ index 92e0890416c9..000000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c -index 4a0c30ced72b..498eaa4d3978 100644 +index 4a0c30ced..498eaa4d3 100644 --- a/arch/microblaze/mm/init.c +++ b/arch/microblaze/mm/init.c @@ -49,17 +49,11 @@ unsigned long lowmem_size; @@ -2283,7 +2268,7 @@ index 4a0c30ced72b..498eaa4d3978 100644 static void highmem_setup(void) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 896a29df1a6d..1b3593d53978 100644 +index 896a29df1..1b3593d53 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2727,6 +2727,7 @@ config WAR_MIPS34K_MISSED_ITLB @@ -2295,7 +2280,7 @@ index 896a29df1a6d..1b3593d53978 100644 config CPU_SUPPORTS_HIGHMEM bool diff --git a/arch/mips/include/asm/fixmap.h b/arch/mips/include/asm/fixmap.h -index 743535be7528..beea14761cef 100644 +index 743535be7..beea14761 100644 --- a/arch/mips/include/asm/fixmap.h +++ b/arch/mips/include/asm/fixmap.h @@ -17,7 +17,7 @@ @@ -2317,7 +2302,7 @@ index 743535be7528..beea14761cef 100644 __end_of_fixed_addresses }; diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h -index 9f021cf51aa7..1716181ea66d 100644 +index 9f021cf51..1716181ea 100644 --- a/arch/mips/include/asm/highmem.h +++ b/arch/mips/include/asm/highmem.h @@ -24,7 +24,7 @@ @@ -2345,7 +2330,7 @@ index 9f021cf51aa7..1716181ea66d 100644 diff --git a/arch/mips/include/asm/kmap_types.h b/arch/mips/include/asm/kmap_types.h deleted file mode 100644 -index 16665dc2431b..000000000000 +index 16665dc24..000000000 --- a/arch/mips/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2363,7 +2348,7 @@ index 16665dc2431b..000000000000 - -#endif diff --git a/arch/mips/kernel/crash_dump.c b/arch/mips/kernel/crash_dump.c -index 01b2bd95ba1f..9aba83e1eeb4 100644 +index 01b2bd95b..9aba83e1e 100644 --- a/arch/mips/kernel/crash_dump.c +++ b/arch/mips/kernel/crash_dump.c @@ -5,8 +5,6 @@ @@ -2435,7 +2420,7 @@ index 01b2bd95ba1f..9aba83e1eeb4 100644 -} -arch_initcall(kdump_buf_page_init); diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c -index 5fec7f45d79a..57e2f08f00d0 100644 +index 5fec7f45d..57e2f08f0 100644 --- a/arch/mips/mm/highmem.c +++ b/arch/mips/mm/highmem.c @@ -8,8 +8,6 @@ @@ -2527,7 +2512,7 @@ index 5fec7f45d79a..57e2f08f00d0 100644 - kmap_pte = virt_to_kpte(kmap_vstart); -} diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c -index 07e84a774938..bc80893e5c0f 100644 +index 07e84a774..bc80893e5 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c @@ -36,7 +36,6 @@ @@ -2549,7 +2534,7 @@ index 07e84a774938..bc80893e5c0f 100644 max_zone_pfns[ZONE_DMA] = MAX_DMA_PFN; #endif diff --git a/arch/nds32/Kconfig.cpu b/arch/nds32/Kconfig.cpu -index f88a12fdf0f3..c10759952485 100644 +index f88a12fdf..c10759952 100644 --- a/arch/nds32/Kconfig.cpu +++ b/arch/nds32/Kconfig.cpu @@ -157,6 +157,7 @@ config HW_SUPPORT_UNALIGNMENT_ACCESS @@ -2561,7 +2546,7 @@ index f88a12fdf0f3..c10759952485 100644 The address space of Andes processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/nds32/include/asm/fixmap.h b/arch/nds32/include/asm/fixmap.h -index 5a4bf11e5800..2fa09a2de428 100644 +index 5a4bf11e5..2fa09a2de 100644 --- a/arch/nds32/include/asm/fixmap.h +++ b/arch/nds32/include/asm/fixmap.h @@ -6,7 +6,7 @@ @@ -2583,7 +2568,7 @@ index 5a4bf11e5800..2fa09a2de428 100644 FIX_EARLYCON_MEM_BASE, __end_of_fixed_addresses diff --git a/arch/nds32/include/asm/highmem.h b/arch/nds32/include/asm/highmem.h -index fe986d0e6e3f..16159a8716f2 100644 +index fe986d0e6..16159a871 100644 --- a/arch/nds32/include/asm/highmem.h +++ b/arch/nds32/include/asm/highmem.h @@ -5,7 +5,6 @@ @@ -2623,7 +2608,7 @@ index fe986d0e6e3f..16159a8716f2 100644 #endif diff --git a/arch/nds32/mm/Makefile b/arch/nds32/mm/Makefile -index 897ecaf5cf54..14fb2e8eb036 100644 +index 897ecaf5c..14fb2e8eb 100644 --- a/arch/nds32/mm/Makefile +++ b/arch/nds32/mm/Makefile @@ -3,7 +3,6 @@ obj-y := extable.o tlb.o fault.o init.o mmap.o \ @@ -2636,7 +2621,7 @@ index 897ecaf5cf54..14fb2e8eb036 100644 CFLAGS_REMOVE_proc.o = $(CC_FLAGS_FTRACE) diff --git a/arch/nds32/mm/highmem.c b/arch/nds32/mm/highmem.c deleted file mode 100644 -index 4284cd59e21a..000000000000 +index 4284cd59e..000000000 --- a/arch/nds32/mm/highmem.c +++ /dev/null @@ -1,48 +0,0 @@ @@ -2689,7 +2674,7 @@ index 4284cd59e21a..000000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c -index 5e88c351e6a4..f3fa02b8838a 100644 +index 5e88c351e..f3fa02b88 100644 --- a/arch/openrisc/mm/init.c +++ b/arch/openrisc/mm/init.c @@ -33,7 +33,6 @@ @@ -2701,7 +2686,7 @@ index 5e88c351e6a4..f3fa02b8838a 100644 #include #include diff --git a/arch/openrisc/mm/ioremap.c b/arch/openrisc/mm/ioremap.c -index a978590d802d..5aed97a18bac 100644 +index a978590d8..5aed97a18 100644 --- a/arch/openrisc/mm/ioremap.c +++ b/arch/openrisc/mm/ioremap.c @@ -15,7 +15,6 @@ @@ -2713,7 +2698,7 @@ index a978590d802d..5aed97a18bac 100644 #include #include diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h -index 7f7039516e53..fad29aa6f45f 100644 +index 7f7039516..fad29aa6f 100644 --- a/arch/parisc/include/asm/hardirq.h +++ b/arch/parisc/include/asm/hardirq.h @@ -32,7 +32,6 @@ typedef struct { @@ -2726,7 +2711,7 @@ index 7f7039516e53..fad29aa6f45f 100644 #define ack_bad_irq(irq) WARN(1, "unexpected IRQ trap at vector %02x\n", irq) diff --git a/arch/parisc/include/asm/kmap_types.h b/arch/parisc/include/asm/kmap_types.h deleted file mode 100644 -index 3e70b5cd1123..000000000000 +index 3e70b5cd1..000000000 --- a/arch/parisc/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2744,7 +2729,7 @@ index 3e70b5cd1123..000000000000 - -#endif diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index ed06e0c32727..a0cf63581f24 100644 +index ed06e0c32..a0cf63581 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -146,6 +146,7 @@ config PPC @@ -2780,7 +2765,7 @@ index ed06e0c32727..a0cf63581f24 100644 source "kernel/Kconfig.hz" diff --git a/arch/powerpc/include/asm/cmpxchg.h b/arch/powerpc/include/asm/cmpxchg.h -index cf091c4c22e5..7371f7e23c35 100644 +index cf091c4c2..7371f7e23 100644 --- a/arch/powerpc/include/asm/cmpxchg.h +++ b/arch/powerpc/include/asm/cmpxchg.h @@ -5,7 +5,7 @@ @@ -2793,7 +2778,7 @@ index cf091c4c22e5..7371f7e23c35 100644 #ifdef __BIG_ENDIAN #define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE) diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h -index 897cc68758d4..a832aeafe560 100644 +index 897cc6875..a832aeafe 100644 --- a/arch/powerpc/include/asm/fixmap.h +++ b/arch/powerpc/include/asm/fixmap.h @@ -20,7 +20,7 @@ @@ -2815,7 +2800,7 @@ index 897cc68758d4..a832aeafe560 100644 #ifdef CONFIG_PPC_8xx /* For IMMR we need an aligned 512K area */ diff --git a/arch/powerpc/include/asm/highmem.h b/arch/powerpc/include/asm/highmem.h -index 104026f7d6bc..80a5ae771c65 100644 +index 104026f7d..80a5ae771 100644 --- a/arch/powerpc/include/asm/highmem.h +++ b/arch/powerpc/include/asm/highmem.h @@ -24,12 +24,10 @@ @@ -2845,7 +2830,7 @@ index 104026f7d6bc..80a5ae771c65 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h deleted file mode 100644 -index c8fa182d48c8..000000000000 +index c8fa182d4..000000000 --- a/arch/powerpc/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2863,7 +2848,7 @@ index c8fa182d48c8..000000000000 -#endif /* __KERNEL__ */ -#endif /* _ASM_POWERPC_KMAP_TYPES_H */ diff --git a/arch/powerpc/include/asm/simple_spinlock_types.h b/arch/powerpc/include/asm/simple_spinlock_types.h -index 0f3cdd8faa95..d45561e9e6ba 100644 +index 0f3cdd8fa..d45561e9e 100644 --- a/arch/powerpc/include/asm/simple_spinlock_types.h +++ b/arch/powerpc/include/asm/simple_spinlock_types.h @@ -2,7 +2,7 @@ @@ -2876,7 +2861,7 @@ index 0f3cdd8faa95..d45561e9e6ba 100644 #endif diff --git a/arch/powerpc/include/asm/spinlock_types.h b/arch/powerpc/include/asm/spinlock_types.h -index c5d742f18021..cc6922a011ba 100644 +index c5d742f18..cc6922a01 100644 --- a/arch/powerpc/include/asm/spinlock_types.h +++ b/arch/powerpc/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -2891,7 +2876,7 @@ index c5d742f18021..cc6922a011ba 100644 #include #include diff --git a/arch/powerpc/include/asm/stackprotector.h b/arch/powerpc/include/asm/stackprotector.h -index 1c8460e23583..b1653c160bab 100644 +index 1c8460e23..b1653c160 100644 --- a/arch/powerpc/include/asm/stackprotector.h +++ b/arch/powerpc/include/asm/stackprotector.h @@ -24,7 +24,11 @@ static __always_inline void boot_init_stack_canary(void) @@ -2907,7 +2892,7 @@ index 1c8460e23583..b1653c160bab 100644 canary ^= LINUX_VERSION_CODE; canary &= CANARY_MASK; diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h -index f4f4564c62f9..5b7e9bb9ff03 100644 +index f4f4564c6..5b7e9bb9f 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h @@ -54,6 +54,8 @@ @@ -2968,7 +2953,7 @@ index f4f4564c62f9..5b7e9bb9ff03 100644 /* Don't move TLF_NAPPING without adjusting the code in entry_32.S */ #define TLF_NAPPING 0 /* idle thread enabled NAP mode */ diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c -index 760f656efcf6..0a351a99d090 100644 +index 760f656ef..0a351a99d 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c @@ -187,6 +187,7 @@ int main(void) @@ -2980,7 +2965,7 @@ index 760f656efcf6..0a351a99d090 100644 #ifdef CONFIG_PPC64 OFFSET(DCACHEL1BLOCKSIZE, ppc64_caches, l1d.block_size); diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S -index 459f5d00b990..fc9517a97640 100644 +index 459f5d00b..fc9517a97 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -414,7 +414,9 @@ ret_from_syscall: @@ -3059,7 +3044,7 @@ index 459f5d00b990..fc9517a97640 100644 andi. r0,r9,_TIF_USER_WORK_MASK beq restore_user diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S -index e91d3ba1e208..5ce64cfe69d4 100644 +index e91d3ba1e..5ce64cfe6 100644 --- a/arch/powerpc/kernel/exceptions-64e.S +++ b/arch/powerpc/kernel/exceptions-64e.S @@ -1080,7 +1080,7 @@ _GLOBAL(ret_from_except_lite) @@ -3104,7 +3089,7 @@ index e91d3ba1e208..5ce64cfe69d4 100644 restore: /* diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c -index e8a548447dd6..5ad4f27cba10 100644 +index e8a548447..5ad4f27cb 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -753,10 +753,12 @@ void *mcheckirq_ctx[NR_CPUS] __read_mostly; @@ -3121,7 +3106,7 @@ index e8a548447dd6..5ad4f27cba10 100644 irq_hw_number_t virq_to_hw(unsigned int virq) { diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S -index 717e658b90fd..08ee95ad6593 100644 +index 717e658b9..08ee95ad6 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S @@ -31,6 +31,7 @@ @@ -3141,7 +3126,7 @@ index 717e658b90fd..08ee95ad6593 100644 /* * void call_do_irq(struct pt_regs *regs, void *sp); diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S -index 070465825c21..a6b33f7b3264 100644 +index 070465825..a6b33f7b3 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -27,6 +27,7 @@ @@ -3161,7 +3146,7 @@ index 070465825c21..a6b33f7b3264 100644 _GLOBAL(call_do_irq) mflr r0 diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c -index 532f22637783..1ef55f4b389a 100644 +index 532f22637..1ef55f4b3 100644 --- a/arch/powerpc/kernel/nvram_64.c +++ b/arch/powerpc/kernel/nvram_64.c @@ -73,7 +73,8 @@ static const char *nvram_os_partitions[] = { @@ -3202,7 +3187,7 @@ index 532f22637783..1ef55f4b389a 100644 err_type = ERR_TYPE_KERNEL_PANIC; oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION); diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall_64.c -index 310bcd768cd5..ae3212dcf562 100644 +index 310bcd768..ae3212dcf 100644 --- a/arch/powerpc/kernel/syscall_64.c +++ b/arch/powerpc/kernel/syscall_64.c @@ -193,7 +193,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3, @@ -3241,7 +3226,7 @@ index 310bcd768cd5..ae3212dcf562 100644 } diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c -index 1d20f0f77a92..7e0a497a36ee 100644 +index 1d20f0f77..7e0a497a3 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -312,12 +312,11 @@ static unsigned long vtime_delta_scaled(struct cpu_accounting_data *acct, @@ -3339,7 +3324,7 @@ index 1d20f0f77a92..7e0a497a36ee 100644 struct cpu_accounting_data *acct) { diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c -index d2f6b2e30b6a..6a028453f587 100644 +index d2f6b2e30..6a028453f 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -173,7 +173,6 @@ extern void panic_flush_kmsg_start(void) @@ -3370,7 +3355,7 @@ index d2f6b2e30b6a..6a028453f587 100644 IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "", debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "", diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c -index 75b2a6c4db5a..db40e20d0c54 100644 +index 75b2a6c4d..db40e20d0 100644 --- a/arch/powerpc/kernel/watchdog.c +++ b/arch/powerpc/kernel/watchdog.c @@ -185,11 +185,6 @@ static void watchdog_smp_panic(int cpu, u64 tb) @@ -3386,7 +3371,7 @@ index 75b2a6c4db5a..db40e20d0c54 100644 trigger_allbutself_cpu_backtrace(); diff --git a/arch/powerpc/kexec/crash.c b/arch/powerpc/kexec/crash.c -index c9a889880214..d488311efab1 100644 +index c9a889880..d488311ef 100644 --- a/arch/powerpc/kexec/crash.c +++ b/arch/powerpc/kexec/crash.c @@ -311,9 +311,6 @@ void default_machine_crash_shutdown(struct pt_regs *regs) @@ -3400,7 +3385,7 @@ index c9a889880214..d488311efab1 100644 * This function is only called after the system * has panicked or is otherwise in a critical state. diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig -index 549591d9aaa2..efb5bfe93f70 100644 +index 549591d9a..efb5bfe93 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig @@ -178,6 +178,7 @@ config KVM_E500MC @@ -3412,7 +3397,7 @@ index 549591d9aaa2..efb5bfe93f70 100644 select HAVE_KVM_IRQFD select HAVE_KVM_IRQ_ROUTING diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile -index 55b4a8bd408a..3b4e9e4e25ea 100644 +index 55b4a8bd4..3b4e9e4e2 100644 --- a/arch/powerpc/mm/Makefile +++ b/arch/powerpc/mm/Makefile @@ -16,7 +16,6 @@ obj-$(CONFIG_NEED_MULTIPLE_NODES) += numa.o @@ -3425,7 +3410,7 @@ index 55b4a8bd408a..3b4e9e4e25ea 100644 obj-$(CONFIG_KASAN) += kasan/ diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c deleted file mode 100644 -index 624b4438aff9..000000000000 +index 624b4438a..000000000 --- a/arch/powerpc/mm/highmem.c +++ /dev/null @@ -1,67 +0,0 @@ @@ -3497,7 +3482,7 @@ index 624b4438aff9..000000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c -index 1ed276d2305f..ae7c136ed188 100644 +index 1ed276d23..ae7c136ed 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -63,11 +63,6 @@ @@ -3522,7 +3507,7 @@ index 1ed276d2305f..ae7c136ed188 100644 printk(KERN_DEBUG "Top of RAM: 0x%llx, Total RAM: 0x%llx\n", diff --git a/arch/powerpc/platforms/powernv/opal-kmsg.c b/arch/powerpc/platforms/powernv/opal-kmsg.c -index 6c3bc4b4da98..ec862846bc82 100644 +index 6c3bc4b4d..ec862846b 100644 --- a/arch/powerpc/platforms/powernv/opal-kmsg.c +++ b/arch/powerpc/platforms/powernv/opal-kmsg.c @@ -20,7 +20,8 @@ @@ -3536,7 +3521,7 @@ index 6c3bc4b4da98..ec862846bc82 100644 /* * Outside of a panic context the pollers will continue to run, diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c -index 245f1f8df656..f05555dde8e7 100644 +index 245f1f8df..f05555dde 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -24,6 +24,7 @@ @@ -3631,10 +3616,10 @@ index 245f1f8df656..f05555dde8e7 100644 } diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c -index 5559edf36756..d62b8e053d4c 100644 +index 2872b66d9..0918ab137 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c -@@ -3005,7 +3005,7 @@ print_address(unsigned long addr) +@@ -3002,7 +3002,7 @@ print_address(unsigned long addr) static void dump_log_buf(void) { @@ -3643,7 +3628,7 @@ index 5559edf36756..d62b8e053d4c 100644 unsigned char buf[128]; size_t len; -@@ -3017,9 +3017,9 @@ dump_log_buf(void) +@@ -3014,9 +3014,9 @@ dump_log_buf(void) catch_memory_errors = 1; sync(); @@ -3656,7 +3641,7 @@ index 5559edf36756..d62b8e053d4c 100644 printf("%s", buf); } diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig -index 7461318e10fb..517cbf60335f 100644 +index 7461318e1..517cbf603 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -183,6 +183,7 @@ config S390 @@ -3668,7 +3653,7 @@ index 7461318e10fb..517cbf60335f 100644 select IOMMU_SUPPORT if PCI select MODULES_USE_ELF_RELA diff --git a/arch/s390/include/asm/spinlock_types.h b/arch/s390/include/asm/spinlock_types.h -index cfed272e4fd5..8e28e8176ec8 100644 +index cfed272e4..8e28e8176 100644 --- a/arch/s390/include/asm/spinlock_types.h +++ b/arch/s390/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -3683,7 +3668,7 @@ index cfed272e4fd5..8e28e8176ec8 100644 int lock; } __attribute__ ((aligned (4))) arch_spinlock_t; diff --git a/arch/s390/include/asm/vtime.h b/arch/s390/include/asm/vtime.h -index 3622d4ebc73a..fac6a67988eb 100644 +index 3622d4ebc..fac6a6798 100644 --- a/arch/s390/include/asm/vtime.h +++ b/arch/s390/include/asm/vtime.h @@ -2,7 +2,6 @@ @@ -3695,7 +3680,7 @@ index 3622d4ebc73a..fac6a67988eb 100644 #endif /* _S390_VTIME_H */ diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c -index 579ec3a8c816..9b3c5978b668 100644 +index 579ec3a8c..9b3c5978b 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c @@ -223,35 +223,50 @@ void vtime_flush(struct task_struct *tsk) @@ -3768,7 +3753,7 @@ index 579ec3a8c816..9b3c5978b668 100644 * Sorted add to a list. List is linear searched until first bigger * element is found. diff --git a/arch/sh/include/asm/fixmap.h b/arch/sh/include/asm/fixmap.h -index f38adc189b83..b07fbc7f7bc6 100644 +index f38adc189..b07fbc7f7 100644 --- a/arch/sh/include/asm/fixmap.h +++ b/arch/sh/include/asm/fixmap.h @@ -13,9 +13,6 @@ @@ -3794,7 +3779,7 @@ index f38adc189b83..b07fbc7f7bc6 100644 /* * FIX_IOREMAP entries are useful for mapping physical address diff --git a/arch/sh/include/asm/hardirq.h b/arch/sh/include/asm/hardirq.h -index edaea3559a23..9fe4495a8e90 100644 +index edaea3559..9fe4495a8 100644 --- a/arch/sh/include/asm/hardirq.h +++ b/arch/sh/include/asm/hardirq.h @@ -2,16 +2,10 @@ @@ -3820,7 +3805,7 @@ index edaea3559a23..9fe4495a8e90 100644 #endif /* __ASM_SH_HARDIRQ_H */ diff --git a/arch/sh/include/asm/kmap_types.h b/arch/sh/include/asm/kmap_types.h deleted file mode 100644 -index b78107f923dd..000000000000 +index b78107f92..000000000 --- a/arch/sh/include/asm/kmap_types.h +++ /dev/null @@ -1,15 +0,0 @@ @@ -3840,7 +3825,7 @@ index b78107f923dd..000000000000 - -#endif diff --git a/arch/sh/include/asm/spinlock_types.h b/arch/sh/include/asm/spinlock_types.h -index e82369f286a2..22ca9a98bbb8 100644 +index e82369f28..22ca9a98b 100644 --- a/arch/sh/include/asm/spinlock_types.h +++ b/arch/sh/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -3855,7 +3840,7 @@ index e82369f286a2..22ca9a98bbb8 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c -index 5717c7cbdd97..5db7af565dec 100644 +index 5717c7cbd..5db7af565 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c @@ -44,7 +44,7 @@ int arch_show_interrupts(struct seq_file *p, int prec) @@ -3884,7 +3869,7 @@ index 5717c7cbdd97..5db7af565dec 100644 static inline void handle_one_irq(unsigned int irq) { diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c -index 9c3d32b80038..f5beecdac693 100644 +index 9c3d32b80..f5beecdac 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c @@ -186,7 +186,7 @@ BUILD_TRAP_HANDLER(nmi) @@ -3897,7 +3882,7 @@ index 9c3d32b80038..f5beecdac693 100644 switch (notify_die(DIE_NMI, "NMI", regs, 0, vec & 0xff, SIGINT)) { case NOTIFY_OK: diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c -index 3348e0c4d769..0db6919af8d3 100644 +index 3348e0c4d..0db6919af 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c @@ -362,9 +362,6 @@ void __init mem_init(void) @@ -3923,7 +3908,7 @@ index 3348e0c4d769..0db6919af8d3 100644 (VMALLOC_END - VMALLOC_START) >> 20, diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig -index 530b7ec5d3ca..a38d00d8b783 100644 +index 530b7ec5d..a38d00d8b 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -139,6 +139,7 @@ config MMU @@ -3935,7 +3920,7 @@ index 530b7ec5d3ca..a38d00d8b783 100644 config ZONE_DMA bool diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h -index 6c35f0d27ee1..875116209ec1 100644 +index 6c35f0d27..875116209 100644 --- a/arch/sparc/include/asm/highmem.h +++ b/arch/sparc/include/asm/highmem.h @@ -24,7 +24,6 @@ @@ -3969,7 +3954,7 @@ index 6c35f0d27ee1..875116209ec1 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/sparc/include/asm/kmap_types.h b/arch/sparc/include/asm/kmap_types.h deleted file mode 100644 -index 55a99b6bd91e..000000000000 +index 55a99b6bd..000000000 --- a/arch/sparc/include/asm/kmap_types.h +++ /dev/null @@ -1,11 +0,0 @@ @@ -3985,7 +3970,7 @@ index 55a99b6bd91e..000000000000 - -#endif diff --git a/arch/sparc/include/asm/vaddrs.h b/arch/sparc/include/asm/vaddrs.h -index 84d054b07a6f..4fec0341e2a8 100644 +index 84d054b07..4fec0341e 100644 --- a/arch/sparc/include/asm/vaddrs.h +++ b/arch/sparc/include/asm/vaddrs.h @@ -32,13 +32,13 @@ @@ -4005,7 +3990,7 @@ index 84d054b07a6f..4fec0341e2a8 100644 __end_of_fixed_addresses }; diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c -index 3ec9f1402aad..eb21682abfcb 100644 +index 3ec9f1402..eb21682ab 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c @@ -854,6 +854,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs) @@ -4025,7 +4010,7 @@ index 3ec9f1402aad..eb21682abfcb 100644 #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile -index b078205b70e0..68db1f859b02 100644 +index b078205b7..68db1f859 100644 --- a/arch/sparc/mm/Makefile +++ b/arch/sparc/mm/Makefile @@ -15,6 +15,3 @@ obj-$(CONFIG_SPARC32) += leon_mm.o @@ -4037,7 +4022,7 @@ index b078205b70e0..68db1f859b02 100644 -obj-$(CONFIG_HIGHMEM) += highmem.o diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c deleted file mode 100644 -index 8f2a2afb048a..000000000000 +index 8f2a2afb0..000000000 --- a/arch/sparc/mm/highmem.c +++ /dev/null @@ -1,115 +0,0 @@ @@ -4157,7 +4142,7 @@ index 8f2a2afb048a..000000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c -index 0070f8b9a753..a03caa5f6628 100644 +index 0070f8b9a..a03caa5f6 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -971,8 +971,6 @@ void __init srmmu_paging_init(void) @@ -4170,7 +4155,7 @@ index 0070f8b9a753..a03caa5f6628 100644 unsigned long max_zone_pfn[MAX_NR_ZONES] = { 0 }; diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h -index 2c697a145ac1..2efac5827188 100644 +index 2c697a145..2efac5827 100644 --- a/arch/um/include/asm/fixmap.h +++ b/arch/um/include/asm/fixmap.h @@ -3,7 +3,6 @@ @@ -4182,7 +4167,7 @@ index 2c697a145ac1..2efac5827188 100644 #include #include diff --git a/arch/um/include/asm/hardirq.h b/arch/um/include/asm/hardirq.h -index b426796d26fd..52e2c36267a9 100644 +index b426796d2..52e2c3626 100644 --- a/arch/um/include/asm/hardirq.h +++ b/arch/um/include/asm/hardirq.h @@ -2,22 +2,7 @@ @@ -4211,7 +4196,7 @@ index b426796d26fd..52e2c36267a9 100644 diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h deleted file mode 100644 -index b0bd12de1d23..000000000000 +index b0bd12de1..000000000 --- a/arch/um/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -4229,7 +4214,7 @@ index b0bd12de1d23..000000000000 - -#endif diff --git a/arch/um/kernel/kmsg_dump.c b/arch/um/kernel/kmsg_dump.c -index e4abac6c9727..173999422ed8 100644 +index e4abac6c9..173999422 100644 --- a/arch/um/kernel/kmsg_dump.c +++ b/arch/um/kernel/kmsg_dump.c @@ -1,15 +1,19 @@ @@ -4272,7 +4257,7 @@ index e4abac6c9727..173999422ed8 100644 static struct kmsg_dumper kmsg_dumper = { diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 29e12ad8bb20..29ed46138449 100644 +index 236b510b2..403764738 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -16,6 +16,7 @@ config X86_32 @@ -4300,7 +4285,7 @@ index 29e12ad8bb20..29ed46138449 100644 select HAVE_POSIX_CPU_TIMERS_TASK_WORK select HAVE_REGS_AND_STACK_ACCESS_API diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c -index be891fdf8d17..29c716ed103f 100644 +index be891fdf8..29c716ed1 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c @@ -379,14 +379,14 @@ static int ecb_encrypt(struct skcipher_request *req) @@ -4395,7 +4380,7 @@ index be891fdf8d17..29c716ed103f 100644 return err; } diff --git a/arch/x86/crypto/cast5_avx_glue.c b/arch/x86/crypto/cast5_avx_glue.c -index 384ccb00f9e1..2f8df8ef8644 100644 +index 384ccb00f..2f8df8ef8 100644 --- a/arch/x86/crypto/cast5_avx_glue.c +++ b/arch/x86/crypto/cast5_avx_glue.c @@ -46,7 +46,7 @@ static inline void cast5_fpu_end(bool fpu_enabled) @@ -4478,7 +4463,7 @@ index 384ccb00f9e1..2f8df8ef8644 100644 ctr_crypt_final(&walk, ctx); err = skcipher_walk_done(&walk, 0); diff --git a/arch/x86/crypto/glue_helper.c b/arch/x86/crypto/glue_helper.c -index d3d91a0abf88..6d0774721514 100644 +index d3d91a0ab..6d0774721 100644 --- a/arch/x86/crypto/glue_helper.c +++ b/arch/x86/crypto/glue_helper.c @@ -24,7 +24,7 @@ int glue_ecb_req_128bit(const struct common_glue_ctx *gctx, @@ -4588,7 +4573,7 @@ index d3d91a0abf88..6d0774721514 100644 nbytes = walk.nbytes; } diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h -index 77217bd292bd..8eba66a33e39 100644 +index 77217bd29..8eba66a33 100644 --- a/arch/x86/include/asm/fixmap.h +++ b/arch/x86/include/asm/fixmap.h @@ -31,7 +31,7 @@ @@ -4618,7 +4603,7 @@ index 77217bd292bd..8eba66a33e39 100644 void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h -index 1b37f1d3ab8b..2eb9b9f94393 100644 +index 1b37f1d3a..2eb9b9f94 100644 --- a/arch/x86/include/asm/fpu/api.h +++ b/arch/x86/include/asm/fpu/api.h @@ -30,6 +30,7 @@ extern void kernel_fpu_begin_mask(unsigned int kfpu_mask); @@ -4667,7 +4652,7 @@ index 1b37f1d3ab8b..2eb9b9f94393 100644 #ifdef CONFIG_X86_DEBUG_FPU diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h -index 0f420b24e0fc..032e020853aa 100644 +index 0f420b24e..032e02085 100644 --- a/arch/x86/include/asm/highmem.h +++ b/arch/x86/include/asm/highmem.h @@ -23,7 +23,6 @@ @@ -4700,7 +4685,7 @@ index 0f420b24e0fc..032e020853aa 100644 unsigned long end_pfn); diff --git a/arch/x86/include/asm/iomap.h b/arch/x86/include/asm/iomap.h -index bacf68c4d70e..e2de092fc38c 100644 +index bacf68c4d..e2de092fc 100644 --- a/arch/x86/include/asm/iomap.h +++ b/arch/x86/include/asm/iomap.h @@ -9,19 +9,14 @@ @@ -4729,7 +4714,7 @@ index bacf68c4d70e..e2de092fc38c 100644 #endif /* _ASM_X86_IOMAP_H */ diff --git a/arch/x86/include/asm/kmap_types.h b/arch/x86/include/asm/kmap_types.h deleted file mode 100644 -index 04ab8266e347..000000000000 +index 04ab8266e..000000000 --- a/arch/x86/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -4747,7 +4732,7 @@ index 04ab8266e347..000000000000 - -#endif /* _ASM_X86_KMAP_TYPES_H */ diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h -index b30b56d47619..9632218bfd41 100644 +index b30b56d47..9632218bf 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -43,7 +43,6 @@ @@ -4759,7 +4744,7 @@ index b30b56d47619..9632218bfd41 100644 #include diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h -index 2380df419a82..a3b73de276c3 100644 +index 2380df419..a3b73de27 100644 --- a/arch/x86/include/asm/preempt.h +++ b/arch/x86/include/asm/preempt.h @@ -90,21 +90,54 @@ static __always_inline void __preempt_count_sub(int val) @@ -4820,7 +4805,7 @@ index 2380df419a82..a3b73de276c3 100644 extern asmlinkage void preempt_schedule_thunk(void); diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h -index 6fd8410a3910..f3bf2f515edb 100644 +index 6fd8410a3..f3bf2f515 100644 --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -28,6 +28,19 @@ typedef struct { @@ -4844,7 +4829,7 @@ index 6fd8410a3910..f3bf2f515edb 100644 typedef sigset_t compat_sigset_t; #endif diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h -index 7fb482f0f25b..3df0a95c9e13 100644 +index 7fb482f0f..3df0a95c9 100644 --- a/arch/x86/include/asm/stackprotector.h +++ b/arch/x86/include/asm/stackprotector.h @@ -65,7 +65,7 @@ @@ -4872,7 +4857,7 @@ index 7fb482f0f25b..3df0a95c9e13 100644 canary += tsc + (tsc << 32UL); canary &= CANARY_MASK; diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h -index 2b3c980698a3..c67e0be1e68d 100644 +index 2b3c98069..c67e0be1e 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h @@ -60,6 +60,8 @@ struct thread_info { @@ -4928,7 +4913,7 @@ index 2b3c980698a3..c67e0be1e68d 100644 /* diff --git a/arch/x86/kernel/crash_dump_32.c b/arch/x86/kernel/crash_dump_32.c -index 33ee47670b99..5fcac46aaf6b 100644 +index 33ee47670..5fcac46aa 100644 --- a/arch/x86/kernel/crash_dump_32.c +++ b/arch/x86/kernel/crash_dump_32.c @@ -13,8 +13,6 @@ @@ -5006,7 +4991,7 @@ index 33ee47670b99..5fcac46aaf6b 100644 } -arch_initcall(kdump_buf_page_init); diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c -index 69b5581d4469..18f8e04048dc 100644 +index 114e87e8d..3935532b1 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -82,6 +82,18 @@ bool irq_fpu_usable(void) @@ -5029,7 +5014,7 @@ index 69b5581d4469..18f8e04048dc 100644 * Save the FPU register state in fpu->fpstate->regs. The register state is * preserved. diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c -index 0b79efc87be5..93c6b88b382a 100644 +index 0b79efc87..93c6b88b3 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -131,6 +131,7 @@ int irq_init_percpu_irqstack(unsigned int cpu) @@ -5049,7 +5034,7 @@ index 0b79efc87be5..93c6b88b382a 100644 void __handle_irq(struct irq_desc *desc, struct pt_regs *regs) { diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c -index 440eed558558..7cfc4e6b7c94 100644 +index 440eed558..7cfc4e6b7 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -72,7 +72,9 @@ int irq_init_percpu_irqstack(unsigned int cpu) @@ -5063,10 +5048,10 @@ index 440eed558558..7cfc4e6b7c94 100644 } +#endif diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 53ef53d5b414..5d35b8e5346c 100644 +index 5afb7bfda..b60a41928 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -8266,6 +8266,14 @@ int kvm_arch_init(void *opaque) +@@ -8347,6 +8347,14 @@ int kvm_arch_init(void *opaque) goto out; } @@ -5082,7 +5067,7 @@ index 53ef53d5b414..5d35b8e5346c 100644 x86_emulator_cache = kvm_alloc_emulator_cache(); diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c -index 075fe51317b0..2c54b76d8f84 100644 +index 075fe5131..2c54b76d8 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c @@ -4,65 +4,6 @@ @@ -5152,7 +5137,7 @@ index 075fe51317b0..2c54b76d8f84 100644 { struct zone *zone; diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c -index 7c055259de3a..da31c2635ee4 100644 +index 7c055259d..da31c2635 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -394,19 +394,6 @@ kernel_physical_mapping_init(unsigned long start, @@ -5185,7 +5170,7 @@ index 7c055259de3a..da31c2635ee4 100644 * NOTE: at this point the bootmem allocator is fully available. */ diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c -index f60398aeb644..9aaa756ddf21 100644 +index f60398aeb..9aaa756dd 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c @@ -44,28 +44,7 @@ void iomap_free(resource_size_t base, unsigned long size) @@ -5258,7 +5243,7 @@ index f60398aeb644..9aaa756ddf21 100644 -EXPORT_SYMBOL_GPL(iounmap_atomic); +EXPORT_SYMBOL_GPL(__iomap_local_pfn_prot); diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig -index 87e08ad38ea7..03cbf6b53622 100644 +index 87e08ad38..03cbf6b53 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -666,6 +666,7 @@ endchoice @@ -5270,7 +5255,7 @@ index 87e08ad38ea7..03cbf6b53622 100644 Linux can use the full amount of RAM in the system by default. However, the default MMUv2 setup only maps the diff --git a/arch/xtensa/include/asm/fixmap.h b/arch/xtensa/include/asm/fixmap.h -index a06ffb0c61c7..92049b61c351 100644 +index a06ffb0c6..92049b61c 100644 --- a/arch/xtensa/include/asm/fixmap.h +++ b/arch/xtensa/include/asm/fixmap.h @@ -16,7 +16,7 @@ @@ -5292,7 +5277,7 @@ index a06ffb0c61c7..92049b61c351 100644 __end_of_fixed_addresses }; diff --git a/arch/xtensa/include/asm/highmem.h b/arch/xtensa/include/asm/highmem.h -index eac503215f17..0fc3b1cebc56 100644 +index eac503215..0fc3b1ceb 100644 --- a/arch/xtensa/include/asm/highmem.h +++ b/arch/xtensa/include/asm/highmem.h @@ -16,9 +16,8 @@ @@ -5323,7 +5308,7 @@ index eac503215f17..0fc3b1cebc56 100644 #endif diff --git a/arch/xtensa/include/asm/spinlock_types.h b/arch/xtensa/include/asm/spinlock_types.h -index 64c9389254f1..dc846323b1cd 100644 +index 64c938925..dc846323b 100644 --- a/arch/xtensa/include/asm/spinlock_types.h +++ b/arch/xtensa/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -5338,7 +5323,7 @@ index 64c9389254f1..dc846323b1cd 100644 #include diff --git a/arch/xtensa/mm/highmem.c b/arch/xtensa/mm/highmem.c -index 673196fe862e..0735ca5e8f86 100644 +index 673196fe8..0735ca5e8 100644 --- a/arch/xtensa/mm/highmem.c +++ b/arch/xtensa/mm/highmem.c @@ -12,8 +12,6 @@ @@ -5416,7 +5401,7 @@ index 673196fe862e..0735ca5e8f86 100644 kmap_waitqueues_init(); } diff --git a/block/blk-mq.c b/block/blk-mq.c -index 1eab99166fd5..dea9f38b4937 100644 +index 1eab99166..dea9f38b4 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -44,7 +44,7 @@ @@ -5615,7 +5600,7 @@ index 1eab99166fd5..dea9f38b4937 100644 cpuhp_setup_state_nocalls(CPUHP_BLOCK_SOFTIRQ_DEAD, diff --git a/crypto/cryptd.c b/crypto/cryptd.c -index 668095eca0fa..02ea3d0fe51d 100644 +index ca3a40fc7..884647620 100644 --- a/crypto/cryptd.c +++ b/crypto/cryptd.c @@ -36,6 +36,7 @@ static struct workqueue_struct *cryptd_wq; @@ -5626,7 +5611,7 @@ index 668095eca0fa..02ea3d0fe51d 100644 }; struct cryptd_queue { -@@ -109,6 +110,7 @@ static int cryptd_init_queue(struct cryptd_queue *queue, +@@ -110,6 +111,7 @@ static int cryptd_init_queue(struct cryptd_queue *queue, cpu_queue = per_cpu_ptr(queue->cpu_queue, cpu); crypto_init_queue(&cpu_queue->queue, max_cpu_qlen); INIT_WORK(&cpu_queue->work, cryptd_queue_worker); @@ -5634,7 +5619,7 @@ index 668095eca0fa..02ea3d0fe51d 100644 } pr_info("cryptd: max_cpu_qlen set to %d\n", max_cpu_qlen); return 0; -@@ -133,8 +135,10 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, +@@ -134,8 +136,10 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, struct cryptd_cpu_queue *cpu_queue; refcount_t *refcnt; @@ -5647,7 +5632,7 @@ index 668095eca0fa..02ea3d0fe51d 100644 err = crypto_enqueue_request(&cpu_queue->queue, request); refcnt = crypto_tfm_ctx(request->tfm); -@@ -150,7 +154,7 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, +@@ -151,7 +155,7 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, refcount_inc(refcnt); out: @@ -5656,7 +5641,7 @@ index 668095eca0fa..02ea3d0fe51d 100644 return err; } -@@ -167,10 +171,11 @@ static void cryptd_queue_worker(struct work_struct *work) +@@ -168,10 +172,11 @@ static void cryptd_queue_worker(struct work_struct *work) /* * Only handle one request at a time to avoid hogging crypto workqueue. */ @@ -5671,7 +5656,7 @@ index 668095eca0fa..02ea3d0fe51d 100644 if (!req) return; diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c -index 9fcc49be499f..a31ffe16e626 100644 +index 9fcc49be4..a31ffe16e 100644 --- a/drivers/atm/eni.c +++ b/drivers/atm/eni.c @@ -2056,7 +2056,7 @@ static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb) @@ -5684,7 +5669,7 @@ index 9fcc49be499f..a31ffe16e626 100644 tasklet_enable(&ENI_DEV(vcc->dev)->task); if (res == enq_ok) return 0; diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c -index 40df7f994b89..4821c94277e8 100644 +index 955f0c4d3..42c6b87bf 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -59,6 +59,40 @@ static void zram_free_page(struct zram *zram, size_t index); @@ -5736,7 +5721,7 @@ index 40df7f994b89..4821c94277e8 100644 static inline bool init_done(struct zram *zram) { -@@ -1165,6 +1200,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize) +@@ -1295,6 +1330,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize) if (!huge_class_size) huge_class_size = zs_huge_class_size(zram->mem_pool); @@ -5745,10 +5730,10 @@ index 40df7f994b89..4821c94277e8 100644 } diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h -index f2fd46daa760..7e4dd447e1dd 100644 +index eb13d0299..d118a57e7 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h -@@ -63,6 +63,7 @@ struct zram_table_entry { +@@ -69,6 +69,7 @@ struct zram_table_entry { unsigned long element; }; unsigned long flags; @@ -5757,7 +5742,7 @@ index f2fd46daa760..7e4dd447e1dd 100644 ktime_t ac_time; #endif diff --git a/drivers/char/tpm/tpm-dev-common.c b/drivers/char/tpm/tpm-dev-common.c -index b99e1941c52c..dc4c0a0a5129 100644 +index a9e7f5a82..30b4c288c 100644 --- a/drivers/char/tpm/tpm-dev-common.c +++ b/drivers/char/tpm/tpm-dev-common.c @@ -20,7 +20,6 @@ @@ -5769,7 +5754,7 @@ index b99e1941c52c..dc4c0a0a5129 100644 static ssize_t tpm_dev_transmit(struct tpm_chip *chip, struct tpm_space *space, u8 *buf, size_t bufsiz) diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c -index 4ed6e660273a..c2bd0d40b5fc 100644 +index 14fad16d3..f9a4ac20f 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c @@ -50,6 +50,31 @@ static inline struct tpm_tis_tcg_phy *to_tpm_tis_tcg_phy(struct tpm_tis_data *da @@ -5804,7 +5789,7 @@ index 4ed6e660273a..c2bd0d40b5fc 100644 static int interrupts = -1; module_param(interrupts, int, 0444); MODULE_PARM_DESC(interrupts, "Enable interrupts"); -@@ -169,7 +194,7 @@ static int tpm_tcg_write_bytes(struct tpm_tis_data *data, u32 addr, u16 len, +@@ -170,7 +195,7 @@ static int tpm_tcg_write_bytes(struct tpm_tis_data *data, u32 addr, u16 len, struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); while (len--) @@ -5813,7 +5798,7 @@ index 4ed6e660273a..c2bd0d40b5fc 100644 return 0; } -@@ -196,7 +221,7 @@ static int tpm_tcg_write32(struct tpm_tis_data *data, u32 addr, u32 value) +@@ -197,7 +222,7 @@ static int tpm_tcg_write32(struct tpm_tis_data *data, u32 addr, u32 value) { struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); @@ -5823,7 +5808,7 @@ index 4ed6e660273a..c2bd0d40b5fc 100644 return 0; } diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c -index 9811c40956e5..17c9d825188b 100644 +index 9811c4095..17c9d8251 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -2545,7 +2545,7 @@ static int ohci_cancel_packet(struct fw_card *card, struct fw_packet *packet) @@ -5845,10 +5830,10 @@ index 9811c40956e5..17c9d825188b 100644 if (!test_and_set_bit_lock(0, &ctx->flushing_completions)) { context_tasklet((unsigned long)&ctx->context); diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index c406de00883a..7792bca9ee76 100644 +index fa830f7bf..d48577c49 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c -@@ -66,7 +66,7 @@ struct mm_struct efi_mm = { +@@ -67,7 +67,7 @@ struct mm_struct efi_mm = { struct workqueue_struct *efi_rts_wq; @@ -5857,7 +5842,7 @@ index c406de00883a..7792bca9ee76 100644 static int __init setup_noefi(char *arg) { disable_runtime = true; -@@ -97,6 +97,9 @@ static int __init parse_efi_cmdline(char *str) +@@ -98,6 +98,9 @@ static int __init parse_efi_cmdline(char *str) if (parse_option_str(str, "noruntime")) disable_runtime = true; @@ -5868,7 +5853,7 @@ index c406de00883a..7792bca9ee76 100644 set_bit(EFI_MEM_NO_SOFT_RESERVE, &efi.flags); diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c -index 12f7128b777f..a65061e3e1d3 100644 +index 12f7128b7..a65061e3e 100644 --- a/drivers/gpu/drm/i915/display/intel_sprite.c +++ b/drivers/gpu/drm/i915/display/intel_sprite.c @@ -118,7 +118,8 @@ void intel_pipe_update_start(const struct intel_crtc_state *new_crtc_state) @@ -5918,7 +5903,7 @@ index 12f7128b777f..a65061e3e1d3 100644 if (intel_vgpu_active(dev_priv)) return; diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c -index 0c083af5a59d..2abf043d3d9d 100644 +index 0c083af5a..2abf043d3 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1080,7 +1080,7 @@ static void reloc_cache_reset(struct reloc_cache *cache, struct i915_execbuffer @@ -5950,7 +5935,7 @@ index 0c083af5a59d..2abf043d3d9d 100644 cache->vaddr = (unsigned long)vaddr; diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c -index 0040b4765a54..3f4f854786f2 100644 +index 0040b4765..3f4f85478 100644 --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c @@ -342,10 +342,9 @@ void intel_breadcrumbs_park(struct intel_breadcrumbs *b) @@ -5967,7 +5952,7 @@ index 0040b4765a54..3f4f854786f2 100644 GEM_BUG_ON(!list_empty(&b->signalers)); } diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c b/drivers/gpu/drm/i915/gt/intel_engine_pm.c -index f7b2e07e2229..313d8a28e776 100644 +index f7b2e07e2..313d8a28e 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c @@ -60,9 +60,10 @@ static int __engine_unpark(struct intel_wakeref *wf) @@ -5994,7 +5979,7 @@ index f7b2e07e2229..313d8a28e776 100644 #else diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c -index 58276694c848..88944c3b1bc8 100644 +index 58276694c..88944c3b1 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -355,22 +355,15 @@ gtt_user_read(struct io_mapping *mapping, @@ -6056,7 +6041,7 @@ index 58276694c848..88944c3b1bc8 100644 /** diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c -index 759f523c6a6b..7339a42ab2b8 100644 +index 759f523c6..7339a42ab 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -847,6 +847,7 @@ static bool i915_get_crtc_scanoutpos(struct drm_crtc *_crtc, @@ -6076,7 +6061,7 @@ index 759f523c6a6b..7339a42ab2b8 100644 spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h -index a4addcc64978..396b6598694d 100644 +index a4addcc64..396b65986 100644 --- a/drivers/gpu/drm/i915/i915_trace.h +++ b/drivers/gpu/drm/i915/i915_trace.h @@ -2,6 +2,10 @@ @@ -6100,7 +6085,7 @@ index a4addcc64978..396b6598694d 100644 TP_PROTO(struct i915_request *rq), TP_ARGS(rq) diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c b/drivers/gpu/drm/i915/selftests/i915_gem.c -index 412e21604a05..432493183d20 100644 +index 412e21604..432493183 100644 --- a/drivers/gpu/drm/i915/selftests/i915_gem.c +++ b/drivers/gpu/drm/i915/selftests/i915_gem.c @@ -57,12 +57,12 @@ static void trash_stolen(struct drm_i915_private *i915) @@ -6119,7 +6104,7 @@ index 412e21604a05..432493183d20 100644 ggtt->vm.clear_range(&ggtt->vm, slot, PAGE_SIZE); diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c -index 65e28c4cd4ce..ca483285f267 100644 +index 65e28c4cd..ca483285f 100644 --- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c @@ -1201,9 +1201,9 @@ static int igt_ggtt_page(void *arg) @@ -6147,7 +6132,7 @@ index 65e28c4cd4ce..ca483285f267 100644 if (val != n) { pr_err("insert page failed: found %d, expected %d\n", diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h -index 6c5bbff12eb4..411f91ee20fa 100644 +index 6c5bbff12..411f91ee2 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h @@ -60,19 +60,19 @@ fbmem_fini(struct io_mapping *fb) @@ -6175,7 +6160,7 @@ index 6c5bbff12eb4..411f91ee20fa 100644 static inline bool diff --git a/drivers/gpu/drm/qxl/qxl_image.c b/drivers/gpu/drm/qxl/qxl_image.c -index 60ab7151b84d..93f92ccd42e5 100644 +index 60ab7151b..93f92ccd4 100644 --- a/drivers/gpu/drm/qxl/qxl_image.c +++ b/drivers/gpu/drm/qxl/qxl_image.c @@ -124,12 +124,12 @@ qxl_image_init_helper(struct qxl_device *qdev, @@ -6252,7 +6237,7 @@ index 60ab7151b84d..93f92ccd42e5 100644 return 0; } diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c -index 5cea6eea72ab..785023081b79 100644 +index 5cea6eea7..785023081 100644 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c @@ -89,11 +89,11 @@ apply_reloc(struct qxl_device *qdev, struct qxl_reloc_info *info) @@ -6321,7 +6306,7 @@ index 5cea6eea72ab..785023081b79 100644 } diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c -index 544a9e4df2a8..5ee5171d46ef 100644 +index 544a9e4df..5ee5171d4 100644 --- a/drivers/gpu/drm/qxl/qxl_object.c +++ b/drivers/gpu/drm/qxl/qxl_object.c @@ -173,8 +173,8 @@ int qxl_bo_kmap(struct qxl_bo *bo, void **ptr) @@ -6363,7 +6348,7 @@ index 544a9e4df2a8..5ee5171d46ef 100644 fallback: qxl_bo_kunmap(bo); diff --git a/drivers/gpu/drm/qxl/qxl_object.h b/drivers/gpu/drm/qxl/qxl_object.h -index 5762ea40d047..6ae89b1b36f4 100644 +index 5762ea40d..6ae89b1b3 100644 --- a/drivers/gpu/drm/qxl/qxl_object.h +++ b/drivers/gpu/drm/qxl/qxl_object.h @@ -89,8 +89,8 @@ extern int qxl_bo_create(struct qxl_device *qdev, @@ -6378,7 +6363,7 @@ index 5762ea40d047..6ae89b1b36f4 100644 extern void qxl_bo_unref(struct qxl_bo **bo); extern int qxl_bo_pin(struct qxl_bo *bo); diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c -index b2a475a0ca4a..b665a33b449b 100644 +index b2a475a0c..b665a33b4 100644 --- a/drivers/gpu/drm/qxl/qxl_release.c +++ b/drivers/gpu/drm/qxl/qxl_release.c @@ -414,7 +414,7 @@ union qxl_release_info *qxl_release_map(struct qxl_device *qdev, @@ -6400,7 +6385,7 @@ index b2a475a0ca4a..b665a33b449b 100644 void qxl_release_fence_buffer_objects(struct qxl_release *release) diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c -index 07d23a1e62a0..add8e60440b2 100644 +index 07d23a1e6..add8e6044 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c @@ -1828,6 +1828,7 @@ int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, @@ -6420,7 +6405,7 @@ index 07d23a1e62a0..add8e60440b2 100644 /* Decode into vertical and horizontal scanout position. */ *vpos = position & 0x1fff; diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c -index 20a5434c6853..17b2df35ef1b 100644 +index 20a5434c6..17b2df35e 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -181,13 +181,15 @@ static int ttm_copy_io_ttm_page(struct ttm_tt *ttm, void *src, @@ -6464,7 +6449,7 @@ index 20a5434c6853..17b2df35ef1b 100644 return 0; } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c -index e8d66182cd7b..71dba228f68e 100644 +index e8d66182c..71dba228f 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c @@ -375,12 +375,12 @@ static int vmw_bo_cpu_blit_line(struct vmw_bo_blit_line_data *d, @@ -6538,7 +6523,7 @@ index e8d66182cd7b..71dba228f68e 100644 return ret; } diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h -index 7845fa5de79e..043e058bb27c 100644 +index 7845fa5de..043e058bb 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -19,6 +19,7 @@ @@ -6550,7 +6535,7 @@ index 7845fa5de79e..043e058bb27c 100644 #include "hv_trace.h" diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index 514279dac7cb..cda7c8b90659 100644 +index e99400f3a..396ec97f1 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -22,6 +22,7 @@ @@ -6590,7 +6575,7 @@ index 514279dac7cb..cda7c8b90659 100644 if (bytes_written) hyperv_report_panic_msg(panic_pa, bytes_written); diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig -index ce9429ca6dde..29ccbd6acf43 100644 +index ce9429ca6..29ccbd6ac 100644 --- a/drivers/leds/trigger/Kconfig +++ b/drivers/leds/trigger/Kconfig @@ -64,6 +64,7 @@ config LEDS_TRIGGER_BACKLIGHT @@ -6602,10 +6587,10 @@ index ce9429ca6dde..29ccbd6acf43 100644 This allows LEDs to be controlled by active CPUs. This shows the active CPUs across an array of LEDs so you can see which diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 27f961aa2714..02d972109a98 100644 +index 5af25898b..c40e960cd 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -2217,8 +2217,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) +@@ -2218,8 +2218,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) struct raid5_percpu *percpu; unsigned long cpu; @@ -6616,7 +6601,7 @@ index 27f961aa2714..02d972109a98 100644 if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { ops_run_biofill(sh); overlap_clear++; -@@ -2277,7 +2278,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) +@@ -2278,7 +2279,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) if (test_and_clear_bit(R5_Overlap, &dev->flags)) wake_up(&sh->raid_conf->wait_for_overlap); } @@ -6626,7 +6611,7 @@ index 27f961aa2714..02d972109a98 100644 } static void free_stripe(struct kmem_cache *sc, struct stripe_head *sh) -@@ -7088,6 +7090,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) +@@ -7100,6 +7102,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) __func__, cpu); return -ENOMEM; } @@ -6635,7 +6620,7 @@ index 27f961aa2714..02d972109a98 100644 } diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h -index 5c05acf20e1f..665fe138ab4f 100644 +index 5c05acf20..665fe138a 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -635,6 +635,7 @@ struct r5conf { @@ -6647,7 +6632,7 @@ index 5c05acf20e1f..665fe138ab4f 100644 void *scribble; /* space for constructing buffer * lists and performing address diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c -index 774970bfcf85..6bc2c728adb7 100644 +index 774970bfc..6bc2c728a 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c @@ -267,7 +267,8 @@ static void find_next_position(struct mtdoops_context *cxt) @@ -6669,270 +6654,8 @@ index 774970bfcf85..6bc2c728adb7 100644 record_size - MTDOOPS_HEADER_SIZE, NULL); if (reason != KMSG_DUMP_OOPS) { -diff --git a/drivers/net/arcnet/arc-rimi.c b/drivers/net/arcnet/arc-rimi.c -index 98df38fe553c..12d085405bd0 100644 ---- a/drivers/net/arcnet/arc-rimi.c -+++ b/drivers/net/arcnet/arc-rimi.c -@@ -332,7 +332,7 @@ static int __init arc_rimi_init(void) - dev->irq = 9; - - if (arcrimi_probe(dev)) { -- free_netdev(dev); -+ free_arcdev(dev); - return -EIO; - } - -@@ -349,7 +349,7 @@ static void __exit arc_rimi_exit(void) - iounmap(lp->mem_start); - release_mem_region(dev->mem_start, dev->mem_end - dev->mem_start + 1); - free_irq(dev->irq, dev); -- free_netdev(dev); -+ free_arcdev(dev); - } - - #ifndef MODULE -diff --git a/drivers/net/arcnet/arcdevice.h b/drivers/net/arcnet/arcdevice.h -index 22a49c6d7ae6..5d4a4c7efbbf 100644 ---- a/drivers/net/arcnet/arcdevice.h -+++ b/drivers/net/arcnet/arcdevice.h -@@ -298,6 +298,10 @@ struct arcnet_local { - - int excnak_pending; /* We just got an excesive nak interrupt */ - -+ /* RESET flag handling */ -+ int reset_in_progress; -+ struct work_struct reset_work; -+ - struct { - uint16_t sequence; /* sequence number (incs with each packet) */ - __be16 aborted_seq; -@@ -350,7 +354,9 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc) - - void arcnet_unregister_proto(struct ArcProto *proto); - irqreturn_t arcnet_interrupt(int irq, void *dev_id); -+ - struct net_device *alloc_arcdev(const char *name); -+void free_arcdev(struct net_device *dev); - - int arcnet_open(struct net_device *dev); - int arcnet_close(struct net_device *dev); -diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c -index e04efc0a5c97..d76dd7d14299 100644 ---- a/drivers/net/arcnet/arcnet.c -+++ b/drivers/net/arcnet/arcnet.c -@@ -387,10 +387,44 @@ static void arcnet_timer(struct timer_list *t) - struct arcnet_local *lp = from_timer(lp, t, timer); - struct net_device *dev = lp->dev; - -- if (!netif_carrier_ok(dev)) { -+ spin_lock_irq(&lp->lock); -+ -+ if (!lp->reset_in_progress && !netif_carrier_ok(dev)) { - netif_carrier_on(dev); - netdev_info(dev, "link up\n"); - } -+ -+ spin_unlock_irq(&lp->lock); -+} -+ -+static void reset_device_work(struct work_struct *work) -+{ -+ struct arcnet_local *lp; -+ struct net_device *dev; -+ -+ lp = container_of(work, struct arcnet_local, reset_work); -+ dev = lp->dev; -+ -+ /* Do not bring the network interface back up if an ifdown -+ * was already done. -+ */ -+ if (!netif_running(dev) || !lp->reset_in_progress) -+ return; -+ -+ rtnl_lock(); -+ -+ /* Do another check, in case of an ifdown that was triggered in -+ * the small race window between the exit condition above and -+ * acquiring RTNL. -+ */ -+ if (!netif_running(dev) || !lp->reset_in_progress) -+ goto out; -+ -+ dev_close(dev); -+ dev_open(dev, NULL); -+ -+out: -+ rtnl_unlock(); - } - - static void arcnet_reply_tasklet(unsigned long data) -@@ -452,12 +486,25 @@ struct net_device *alloc_arcdev(const char *name) - lp->dev = dev; - spin_lock_init(&lp->lock); - timer_setup(&lp->timer, arcnet_timer, 0); -+ INIT_WORK(&lp->reset_work, reset_device_work); - } - - return dev; - } - EXPORT_SYMBOL(alloc_arcdev); - -+void free_arcdev(struct net_device *dev) -+{ -+ struct arcnet_local *lp = netdev_priv(dev); -+ -+ /* Do not cancel this at ->ndo_close(), as the workqueue itself -+ * indirectly calls the ifdown path through dev_close(). -+ */ -+ cancel_work_sync(&lp->reset_work); -+ free_netdev(dev); -+} -+EXPORT_SYMBOL(free_arcdev); -+ - /* Open/initialize the board. This is called sometime after booting when - * the 'ifconfig' program is run. - * -@@ -587,6 +634,10 @@ int arcnet_close(struct net_device *dev) - - /* shut down the card */ - lp->hw.close(dev); -+ -+ /* reset counters */ -+ lp->reset_in_progress = 0; -+ - module_put(lp->hw.owner); - return 0; - } -@@ -820,6 +871,9 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id) - - spin_lock_irqsave(&lp->lock, flags); - -+ if (lp->reset_in_progress) -+ goto out; -+ - /* RESET flag was enabled - if device is not running, we must - * clear it right away (but nothing else). - */ -@@ -852,11 +906,14 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id) - if (status & RESETflag) { - arc_printk(D_NORMAL, dev, "spurious reset (status=%Xh)\n", - status); -- arcnet_close(dev); -- arcnet_open(dev); -+ -+ lp->reset_in_progress = 1; -+ netif_stop_queue(dev); -+ netif_carrier_off(dev); -+ schedule_work(&lp->reset_work); - - /* get out of the interrupt handler! */ -- break; -+ goto out; - } - /* RX is inhibited - we must have received something. - * Prepare to receive into the next buffer. -@@ -1052,6 +1109,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id) - udelay(1); - lp->hw.intmask(dev, lp->intmask); - -+out: - spin_unlock_irqrestore(&lp->lock, flags); - return retval; - } -diff --git a/drivers/net/arcnet/com20020-isa.c b/drivers/net/arcnet/com20020-isa.c -index f983c4ce6b07..be618e4b9ed5 100644 ---- a/drivers/net/arcnet/com20020-isa.c -+++ b/drivers/net/arcnet/com20020-isa.c -@@ -169,7 +169,7 @@ static int __init com20020_init(void) - dev->irq = 9; - - if (com20020isa_probe(dev)) { -- free_netdev(dev); -+ free_arcdev(dev); - return -EIO; - } - -@@ -182,7 +182,7 @@ static void __exit com20020_exit(void) - unregister_netdev(my_dev); - free_irq(my_dev->irq, my_dev); - release_region(my_dev->base_addr, ARCNET_TOTAL_SIZE); -- free_netdev(my_dev); -+ free_arcdev(my_dev); - } - - #ifndef MODULE -diff --git a/drivers/net/arcnet/com20020-pci.c b/drivers/net/arcnet/com20020-pci.c -index 9f44e2e458df..b4f8798d8c50 100644 ---- a/drivers/net/arcnet/com20020-pci.c -+++ b/drivers/net/arcnet/com20020-pci.c -@@ -294,7 +294,7 @@ static void com20020pci_remove(struct pci_dev *pdev) - - unregister_netdev(dev); - free_irq(dev->irq, dev); -- free_netdev(dev); -+ free_arcdev(dev); - } - } - -diff --git a/drivers/net/arcnet/com20020_cs.c b/drivers/net/arcnet/com20020_cs.c -index cf607ffcf358..9cc5eb6a8e90 100644 ---- a/drivers/net/arcnet/com20020_cs.c -+++ b/drivers/net/arcnet/com20020_cs.c -@@ -177,7 +177,7 @@ static void com20020_detach(struct pcmcia_device *link) - dev = info->dev; - if (dev) { - dev_dbg(&link->dev, "kfree...\n"); -- free_netdev(dev); -+ free_arcdev(dev); - } - dev_dbg(&link->dev, "kfree2...\n"); - kfree(info); -diff --git a/drivers/net/arcnet/com90io.c b/drivers/net/arcnet/com90io.c -index cf214b730671..3856b447d38e 100644 ---- a/drivers/net/arcnet/com90io.c -+++ b/drivers/net/arcnet/com90io.c -@@ -396,7 +396,7 @@ static int __init com90io_init(void) - err = com90io_probe(dev); - - if (err) { -- free_netdev(dev); -+ free_arcdev(dev); - return err; - } - -@@ -419,7 +419,7 @@ static void __exit com90io_exit(void) - - free_irq(dev->irq, dev); - release_region(dev->base_addr, ARCNET_TOTAL_SIZE); -- free_netdev(dev); -+ free_arcdev(dev); - } - - module_init(com90io_init) -diff --git a/drivers/net/arcnet/com90xx.c b/drivers/net/arcnet/com90xx.c -index 3dc3d533cb19..d8dfb9ea0de8 100644 ---- a/drivers/net/arcnet/com90xx.c -+++ b/drivers/net/arcnet/com90xx.c -@@ -554,7 +554,7 @@ static int __init com90xx_found(int ioaddr, int airq, u_long shmem, - err_release_mem: - release_mem_region(dev->mem_start, dev->mem_end - dev->mem_start + 1); - err_free_dev: -- free_netdev(dev); -+ free_arcdev(dev); - return -EIO; - } - -@@ -672,7 +672,7 @@ static void __exit com90xx_exit(void) - release_region(dev->base_addr, ARCNET_TOTAL_SIZE); - release_mem_region(dev->mem_start, - dev->mem_end - dev->mem_start + 1); -- free_netdev(dev); -+ free_arcdev(dev); - } - } - diff --git a/drivers/net/ethernet/chelsio/cxgb/common.h b/drivers/net/ethernet/chelsio/cxgb/common.h -index 6475060649e9..0321be77366c 100644 +index 647506064..0321be773 100644 --- a/drivers/net/ethernet/chelsio/cxgb/common.h +++ b/drivers/net/ethernet/chelsio/cxgb/common.h @@ -238,7 +238,6 @@ struct adapter { @@ -6970,7 +6693,7 @@ index 6475060649e9..0321be77366c 100644 void t1_link_negotiated(adapter_t *adapter, int port_id, int link_stat, int speed, int duplex, int pause); diff --git a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c -index 1311eac9eef2..c827273c4bd7 100644 +index 1311eac9e..c827273c4 100644 --- a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c +++ b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c @@ -211,9 +211,10 @@ static int cxgb_up(struct adapter *adapter) @@ -7049,7 +6772,7 @@ index 1311eac9eef2..c827273c4bd7 100644 mac_stats_task); diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c -index 2d9c2b5a690a..cda01f22c71c 100644 +index 2d9c2b5a6..cda01f22c 100644 --- a/drivers/net/ethernet/chelsio/cxgb/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb/sge.c @@ -940,10 +940,11 @@ void t1_sge_intr_clear(struct sge *sge) @@ -7145,7 +6868,7 @@ index 2d9c2b5a690a..cda01f22c71c 100644 /* diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.h b/drivers/net/ethernet/chelsio/cxgb/sge.h -index a1ba591b3431..716705b96f26 100644 +index a1ba591b3..716705b96 100644 --- a/drivers/net/ethernet/chelsio/cxgb/sge.h +++ b/drivers/net/ethernet/chelsio/cxgb/sge.h @@ -74,6 +74,7 @@ struct sge *t1_sge_create(struct adapter *, struct sge_params *); @@ -7166,7 +6889,7 @@ index a1ba591b3431..716705b96f26 100644 void t1_sge_intr_disable(struct sge *); void t1_sge_intr_clear(struct sge *); diff --git a/drivers/net/ethernet/chelsio/cxgb/subr.c b/drivers/net/ethernet/chelsio/cxgb/subr.c -index ea0f8741d7cf..310add28fcf5 100644 +index ea0f8741d..310add28f 100644 --- a/drivers/net/ethernet/chelsio/cxgb/subr.c +++ b/drivers/net/ethernet/chelsio/cxgb/subr.c @@ -170,7 +170,7 @@ void t1_link_changed(adapter_t *adapter, int port_id) @@ -7294,7 +7017,7 @@ index ea0f8741d7cf..310add28fcf5 100644 #ifdef CONFIG_CHELSIO_T1_1G if (!t1_is_asic(adapter)) diff --git a/drivers/net/ethernet/dlink/sundance.c b/drivers/net/ethernet/dlink/sundance.c -index e3a8858915b3..df0eab479d51 100644 +index e3a885891..df0eab479 100644 --- a/drivers/net/ethernet/dlink/sundance.c +++ b/drivers/net/ethernet/dlink/sundance.c @@ -963,7 +963,7 @@ static void tx_timeout(struct net_device *dev, unsigned int txqueue) @@ -7307,7 +7030,7 @@ index e3a8858915b3..df0eab479d51 100644 printk(KERN_WARNING "%s: Transmit timed out, TxStatus %2.2x " "TxFrameId %2.2x," diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c -index 4185ca3dd575..cf5c33d0fbdb 100644 +index 4185ca3dd..cf5c33d0f 100644 --- a/drivers/net/ethernet/jme.c +++ b/drivers/net/ethernet/jme.c @@ -1265,9 +1265,9 @@ jme_stop_shutdown_timer(struct jme_adapter *jme) @@ -7357,7 +7080,7 @@ index 4185ca3dd575..cf5c33d0fbdb 100644 jme->reg_ghc = 0; diff --git a/drivers/net/ethernet/jme.h b/drivers/net/ethernet/jme.h -index a2c3b00d939d..2af76329b4a2 100644 +index a2c3b00d9..2af76329b 100644 --- a/drivers/net/ethernet/jme.h +++ b/drivers/net/ethernet/jme.h @@ -411,7 +411,7 @@ struct jme_adapter { @@ -7370,7 +7093,7 @@ index a2c3b00d939d..2af76329b4a2 100644 unsigned long flags; u32 reg_txcs; diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c -index 71e2ada86793..72e2e71aac0e 100644 +index 71e2ada86..72e2e71aa 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c @@ -251,7 +251,7 @@ void ath9k_beacon_ensure_primary_slot(struct ath_softc *sc) @@ -7383,7 +7106,7 @@ index 71e2ada86793..72e2e71aac0e 100644 /* Find first taken slot. */ for (slot = 0; slot < ATH_BCBUF; slot++) { diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 4353443b89d8..03e2569da934 100644 +index 4353443b8..03e2569da 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -1522,7 +1522,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) @@ -7396,7 +7119,7 @@ index 4353443b89d8..03e2569da934 100644 /* * Since this function is called with IRQ locks held, can't diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c -index 0f9274960dc6..dc97e4f1f4ad 100644 +index 30afcbbe1..4ae5b8152 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1452,11 +1452,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, @@ -7454,7 +7177,7 @@ index 0f9274960dc6..dc97e4f1f4ad 100644 } diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c -index 5ea426effa60..0d6b9acc7cf8 100644 +index 5ea426eff..0d6b9acc7 100644 --- a/drivers/scsi/fcoe/fcoe_ctlr.c +++ b/drivers/scsi/fcoe/fcoe_ctlr.c @@ -828,7 +828,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) @@ -7476,7 +7199,7 @@ index 5ea426effa60..0d6b9acc7cf8 100644 list_for_each_entry_safe(fcf, next, &del_list, list) { /* Removes fcf from current list */ diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c -index 4261380af97b..65160eaaa929 100644 +index 4261380af..65160eaaa 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c @@ -826,10 +826,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, @@ -7493,7 +7216,7 @@ index 4261380af97b..65160eaaa929 100644 /* peek cache of free slot */ if (pool->left != FC_XID_UNKNOWN) { diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h -index b6dc9003b8c4..d5cf70ead85b 100644 +index b6dc9003b..d5cf70ead 100644 --- a/drivers/tty/serial/8250/8250.h +++ b/drivers/tty/serial/8250/8250.h @@ -153,12 +153,55 @@ static inline void serial_dl_write(struct uart_8250_port *up, int value) @@ -7563,7 +7286,7 @@ index b6dc9003b8c4..d5cf70ead85b 100644 } diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index 98ce484f1089..ceba24927c1e 100644 +index 0a7e9491b..83536b159 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -275,10 +275,8 @@ static void serial8250_backup_timeout(struct timer_list *t) @@ -7588,7 +7311,7 @@ index 98ce484f1089..ceba24927c1e 100644 spin_unlock_irqrestore(&up->port.lock, flags); -@@ -582,6 +580,14 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev) +@@ -588,6 +586,14 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev) #ifdef CONFIG_SERIAL_8250_CONSOLE @@ -7603,7 +7326,7 @@ index 98ce484f1089..ceba24927c1e 100644 static void univ8250_console_write(struct console *co, const char *s, unsigned int count) { -@@ -675,6 +681,7 @@ static int univ8250_console_match(struct console *co, char *name, int idx, +@@ -681,6 +687,7 @@ static int univ8250_console_match(struct console *co, char *name, int idx, static struct console univ8250_console = { .name = "ttyS", @@ -7612,7 +7335,7 @@ index 98ce484f1089..ceba24927c1e 100644 .device = uart_console_device, .setup = univ8250_console_setup, diff --git a/drivers/tty/serial/8250/8250_fsl.c b/drivers/tty/serial/8250/8250_fsl.c -index fbcc90c31ca1..b33cb454ce03 100644 +index fbcc90c31..b33cb454c 100644 --- a/drivers/tty/serial/8250/8250_fsl.c +++ b/drivers/tty/serial/8250/8250_fsl.c @@ -60,9 +60,18 @@ int fsl8250_handle_irq(struct uart_port *port) @@ -7635,7 +7358,7 @@ index fbcc90c31ca1..b33cb454ce03 100644 port->ops->stop_rx(port); } else { diff --git a/drivers/tty/serial/8250/8250_ingenic.c b/drivers/tty/serial/8250/8250_ingenic.c -index 988bf6bcce42..bcd26d672539 100644 +index 988bf6bcc..bcd26d672 100644 --- a/drivers/tty/serial/8250/8250_ingenic.c +++ b/drivers/tty/serial/8250/8250_ingenic.c @@ -146,6 +146,8 @@ OF_EARLYCON_DECLARE(x1000_uart, "ingenic,x1000-uart", @@ -7661,7 +7384,7 @@ index 988bf6bcce42..bcd26d672539 100644 if (ier & UART_IER_MSI) value |= UART_MCR_MDCE | UART_MCR_FCM; diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c -index de48a58460f4..d246f2755fed 100644 +index de48a5846..d246f2755 100644 --- a/drivers/tty/serial/8250/8250_mtk.c +++ b/drivers/tty/serial/8250/8250_mtk.c @@ -222,12 +222,37 @@ static void mtk8250_shutdown(struct uart_port *port) @@ -7705,10 +7428,10 @@ index de48a58460f4..d246f2755fed 100644 static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index 9d60418e4adb..d35c0506b013 100644 +index 1f231fcda..0901c5bae 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c -@@ -741,7 +741,7 @@ static void serial8250_set_sleep(struct uart_8250_port *p, int sleep) +@@ -729,7 +729,7 @@ static void serial8250_set_sleep(struct uart_8250_port *p, int sleep) serial_out(p, UART_EFR, UART_EFR_ECB); serial_out(p, UART_LCR, 0); } @@ -7717,7 +7440,7 @@ index 9d60418e4adb..d35c0506b013 100644 if (p->capabilities & UART_CAP_EFR) { serial_out(p, UART_LCR, UART_LCR_CONF_MODE_B); serial_out(p, UART_EFR, efr); -@@ -1415,7 +1415,7 @@ static void serial8250_stop_rx(struct uart_port *port) +@@ -1404,7 +1404,7 @@ static void serial8250_stop_rx(struct uart_port *port) up->ier &= ~(UART_IER_RLSI | UART_IER_RDI); up->port.read_status_mask &= ~UART_LSR_DR; @@ -7726,7 +7449,7 @@ index 9d60418e4adb..d35c0506b013 100644 serial8250_rpm_put(up); } -@@ -1445,7 +1445,7 @@ void serial8250_em485_stop_tx(struct uart_8250_port *p) +@@ -1434,7 +1434,7 @@ void serial8250_em485_stop_tx(struct uart_8250_port *p) serial8250_clear_and_reinit_fifos(p); p->ier |= UART_IER_RLSI | UART_IER_RDI; @@ -7735,7 +7458,7 @@ index 9d60418e4adb..d35c0506b013 100644 } } EXPORT_SYMBOL_GPL(serial8250_em485_stop_tx); -@@ -1687,7 +1687,7 @@ static void serial8250_disable_ms(struct uart_port *port) +@@ -1676,7 +1676,7 @@ static void serial8250_disable_ms(struct uart_port *port) mctrl_gpio_disable_ms(up->gpios); up->ier &= ~UART_IER_MSI; @@ -7744,7 +7467,7 @@ index 9d60418e4adb..d35c0506b013 100644 } static void serial8250_enable_ms(struct uart_port *port) -@@ -1703,7 +1703,7 @@ static void serial8250_enable_ms(struct uart_port *port) +@@ -1692,7 +1692,7 @@ static void serial8250_enable_ms(struct uart_port *port) up->ier |= UART_IER_MSI; serial8250_rpm_get(up); @@ -7753,7 +7476,7 @@ index 9d60418e4adb..d35c0506b013 100644 serial8250_rpm_put(up); } -@@ -2121,14 +2121,7 @@ static void serial8250_put_poll_char(struct uart_port *port, +@@ -2116,14 +2116,7 @@ static void serial8250_put_poll_char(struct uart_port *port, struct uart_8250_port *up = up_to_u8250p(port); serial8250_rpm_get(up); @@ -7769,7 +7492,7 @@ index 9d60418e4adb..d35c0506b013 100644 wait_for_xmitr(up, BOTH_EMPTY); /* -@@ -2141,7 +2134,7 @@ static void serial8250_put_poll_char(struct uart_port *port, +@@ -2136,7 +2129,7 @@ static void serial8250_put_poll_char(struct uart_port *port, * and restore the IER */ wait_for_xmitr(up, BOTH_EMPTY); @@ -7778,7 +7501,7 @@ index 9d60418e4adb..d35c0506b013 100644 serial8250_rpm_put(up); } -@@ -2444,7 +2437,7 @@ void serial8250_do_shutdown(struct uart_port *port) +@@ -2441,7 +2434,7 @@ void serial8250_do_shutdown(struct uart_port *port) */ spin_lock_irqsave(&port->lock, flags); up->ier = 0; @@ -7787,7 +7510,7 @@ index 9d60418e4adb..d35c0506b013 100644 spin_unlock_irqrestore(&port->lock, flags); synchronize_irq(port->irq); -@@ -2800,7 +2793,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2797,7 +2790,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, if (up->capabilities & UART_CAP_RTOIE) up->ier |= UART_IER_RTOIE; @@ -7796,7 +7519,7 @@ index 9d60418e4adb..d35c0506b013 100644 if (up->capabilities & UART_CAP_EFR) { unsigned char efr = 0; -@@ -3268,7 +3261,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_defaults); +@@ -3262,7 +3255,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_defaults); #ifdef CONFIG_SERIAL_8250_CONSOLE @@ -7805,7 +7528,7 @@ index 9d60418e4adb..d35c0506b013 100644 { struct uart_8250_port *up = up_to_u8250p(port); -@@ -3276,6 +3269,18 @@ static void serial8250_console_putchar(struct uart_port *port, int ch) +@@ -3270,6 +3263,18 @@ static void serial8250_console_putchar(struct uart_port *port, int ch) serial_port_out(port, UART_TX, ch); } @@ -7824,7 +7547,7 @@ index 9d60418e4adb..d35c0506b013 100644 /* * Restore serial console when h/w power-off detected */ -@@ -3297,6 +3302,32 @@ static void serial8250_console_restore(struct uart_8250_port *up) +@@ -3296,6 +3301,32 @@ static void serial8250_console_restore(struct uart_8250_port *up) serial8250_out_MCR(up, up->mcr | UART_MCR_DTR | UART_MCR_RTS); } @@ -7857,7 +7580,7 @@ index 9d60418e4adb..d35c0506b013 100644 /* * Print a string to the serial port trying not to disturb * any possible real use of the port... -@@ -3313,24 +3344,12 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3312,24 +3343,12 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, struct uart_port *port = &up->port; unsigned long flags; unsigned int ier; @@ -7884,7 +7607,7 @@ index 9d60418e4adb..d35c0506b013 100644 /* check scratch reg to see if port powered off during system sleep */ if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) { -@@ -3344,7 +3363,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3343,7 +3362,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, mdelay(port->rs485.delay_rts_before_send); } @@ -7894,7 +7617,7 @@ index 9d60418e4adb..d35c0506b013 100644 /* * Finally, wait for transmitter to become empty -@@ -3357,8 +3378,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3356,8 +3377,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, if (em485->tx_stopped) up->rs485_stop_tx(up); } @@ -7904,7 +7627,7 @@ index 9d60418e4adb..d35c0506b013 100644 /* * The receive handling will happen properly because the -@@ -3370,8 +3390,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3369,8 +3389,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, if (up->msr_saved_flags) serial8250_modem_status(up); @@ -7914,7 +7637,7 @@ index 9d60418e4adb..d35c0506b013 100644 } static unsigned int probe_baud(struct uart_port *port) -@@ -3391,6 +3410,7 @@ static unsigned int probe_baud(struct uart_port *port) +@@ -3390,6 +3409,7 @@ static unsigned int probe_baud(struct uart_port *port) int serial8250_console_setup(struct uart_port *port, char *options, bool probe) { @@ -7922,7 +7645,7 @@ index 9d60418e4adb..d35c0506b013 100644 int baud = 9600; int bits = 8; int parity = 'n'; -@@ -3400,6 +3420,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) +@@ -3399,6 +3419,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) if (!port->iobase && !port->membase) return -ENODEV; @@ -7932,10 +7655,10 @@ index 9d60418e4adb..d35c0506b013 100644 uart_parse_options(options, &baud, &parity, &bits, &flow); else if (probe) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index d80e8064b75e..4c24c5197b62 100644 +index c9876040c..43ade1432 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2268,18 +2268,24 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2280,18 +2280,24 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) { struct uart_amba_port *uap = amba_ports[co->index]; unsigned int old_cr = 0, new_cr; @@ -7964,7 +7687,7 @@ index d80e8064b75e..4c24c5197b62 100644 /* * First save the CR then disable the interrupts -@@ -2305,8 +2311,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2317,8 +2323,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) pl011_write(old_cr, uap, REG_CR); if (locked) @@ -7975,7 +7698,7 @@ index d80e8064b75e..4c24c5197b62 100644 clk_disable(uap->clk); } diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c -index 84e8158088cd..342005ed5ebf 100644 +index 84e815808..342005ed5 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -1311,13 +1311,10 @@ serial_omap_console_write(struct console *co, const char *s, @@ -8006,7 +7729,7 @@ index 84e8158088cd..342005ed5ebf 100644 static int __init diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c -index c3abcd0439f9..2479ea4c843b 100644 +index c3abcd043..2479ea4c8 100644 --- a/drivers/tty/tty_buffer.c +++ b/drivers/tty/tty_buffer.c @@ -172,10 +172,10 @@ static struct tty_buffer *tty_buffer_alloc(struct tty_port *port, size_t size) @@ -8023,7 +7746,7 @@ index c3abcd0439f9..2479ea4c843b 100644 return NULL; diff --git a/fs/afs/dir_silly.c b/fs/afs/dir_silly.c -index dae9a57d7ec0..9a6a0ec4d1fb 100644 +index dae9a57d7..9a6a0ec4d 100644 --- a/fs/afs/dir_silly.c +++ b/fs/afs/dir_silly.c @@ -239,7 +239,7 @@ int afs_silly_iput(struct dentry *dentry, struct inode *inode) @@ -8036,7 +7759,7 @@ index dae9a57d7ec0..9a6a0ec4d1fb 100644 _enter("%p{%pd},%llx", dentry, dentry, vnode->fid.vnode); diff --git a/fs/aio.c b/fs/aio.c -index 5e5333d72c69..cc16ac777f0d 100644 +index b2396cd4a..a8e678d29 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -43,7 +43,6 @@ @@ -8047,7 +7770,7 @@ index 5e5333d72c69..cc16ac777f0d 100644 #include #include -@@ -1762,7 +1761,7 @@ static int aio_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync, +@@ -1766,7 +1765,7 @@ static int aio_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync, list_del_init(&req->wait.entry); list_del(&iocb->ki_list); iocb->ki_res.res = mangle_poll(mask); @@ -8057,7 +7780,7 @@ index 5e5333d72c69..cc16ac777f0d 100644 INIT_WORK(&req->work, aio_poll_put_work); schedule_work(&req->work); diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h -index bcc6848bb6d6..fabbf6cc45bf 100644 +index bcc6848bb..fabbf6cc4 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -17,7 +17,6 @@ @@ -8069,7 +7792,7 @@ index bcc6848bb6d6..fabbf6cc45bf 100644 #include #include diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c -index 799be3a5d25e..d5165a7da071 100644 +index 799be3a5d..d5165a7da 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -81,7 +81,7 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name, @@ -8082,7 +7805,7 @@ index 799be3a5d25e..d5165a7da071 100644 cifs_dbg(FYI, "%s: for %s\n", __func__, name->name); diff --git a/fs/dcache.c b/fs/dcache.c -index f5b78cc80a00..b2e0d1a07644 100644 +index f5b78cc80..b2e0d1a07 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -2566,9 +2566,10 @@ EXPORT_SYMBOL(d_rehash); @@ -8169,7 +7892,7 @@ index f5b78cc80a00..b2e0d1a07644 100644 hlist_bl_unlock(b); INIT_HLIST_NODE(&dentry->d_u.d_alias); diff --git a/fs/eventfd.c b/fs/eventfd.c -index df466ef81ddd..9035ca60bfcf 100644 +index 4a14295cf..cdaff4ddb 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c @@ -25,8 +25,6 @@ @@ -8181,14 +7904,8 @@ index df466ef81ddd..9035ca60bfcf 100644 static DEFINE_IDA(eventfd_ida); struct eventfd_ctx { -@@ -67,21 +65,21 @@ __u64 eventfd_signal(struct eventfd_ctx *ctx, __u64 n) - * Deadlock or stack overflow issues can happen if we recurse here - * through waitqueue wakeup handlers. If the caller users potentially - * nested waitqueues with custom wakeup handlers, then it should -- * check eventfd_signal_count() before calling this function. If -- * it returns true, the eventfd_signal() call should be deferred to a -+ * check eventfd_signal_allowed() before calling this function. If -+ * it returns false, the eventfd_signal() call should be deferred to a +@@ -57,17 +55,17 @@ __u64 eventfd_signal_mask(struct eventfd_ctx *ctx, __u64 n, unsigned mask) + * it returns true, the eventfd_signal() call should be deferred to a * safe context. */ - if (WARN_ON_ONCE(this_cpu_read(eventfd_wake_count))) @@ -8202,14 +7919,14 @@ index df466ef81ddd..9035ca60bfcf 100644 n = ULLONG_MAX - ctx->count; ctx->count += n; if (waitqueue_active(&ctx->wqh)) - wake_up_locked_poll(&ctx->wqh, EPOLLIN); + wake_up_locked_poll(&ctx->wqh, EPOLLIN | mask); - this_cpu_dec(eventfd_wake_count); + current->in_eventfd_signal = 0; spin_unlock_irqrestore(&ctx->wqh.lock, flags); return n; diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h -index 64aa552b296d..7dae569dafb9 100644 +index 64aa552b2..7dae569da 100644 --- a/fs/fscache/internal.h +++ b/fs/fscache/internal.h @@ -95,7 +95,6 @@ extern unsigned fscache_debug; @@ -8221,7 +7938,7 @@ index 64aa552b296d..7dae569dafb9 100644 extern unsigned int fscache_hash(unsigned int salt, unsigned int *data, unsigned int n); diff --git a/fs/fscache/main.c b/fs/fscache/main.c -index 4207f98e405f..85f8cf3a323d 100644 +index 4207f98e4..85f8cf3a3 100644 --- a/fs/fscache/main.c +++ b/fs/fscache/main.c @@ -41,8 +41,6 @@ struct kobject *fscache_root; @@ -8252,7 +7969,7 @@ index 4207f98e405f..85f8cf3a323d 100644 if (ret < 0) goto error_proc; diff --git a/fs/fscache/object.c b/fs/fscache/object.c -index cb2146e02cd5..fb9794dce721 100644 +index cb2146e02..fb9794dce 100644 --- a/fs/fscache/object.c +++ b/fs/fscache/object.c @@ -807,6 +807,8 @@ void fscache_object_destroy(struct fscache_object *object) @@ -8302,10 +8019,10 @@ index cb2146e02cd5..fb9794dce721 100644 return fscache_object_congested(); } diff --git a/fs/fuse/readdir.c b/fs/fuse/readdir.c -index bc267832310c..3176913fae6c 100644 +index d5294e663..ee8846818 100644 --- a/fs/fuse/readdir.c +++ b/fs/fuse/readdir.c -@@ -158,7 +158,7 @@ static int fuse_direntplus_link(struct file *file, +@@ -160,7 +160,7 @@ static int fuse_direntplus_link(struct file *file, struct inode *dir = d_inode(parent); struct fuse_conn *fc; struct inode *inode; @@ -8315,7 +8032,7 @@ index bc267832310c..3176913fae6c 100644 if (!o->nodeid) { /* diff --git a/fs/inode.c b/fs/inode.c -index 7436a17a20c1..45a821a8cc46 100644 +index 7436a17a2..45a821a8c 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -158,7 +158,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode) @@ -8328,7 +8045,7 @@ index 7436a17a20c1..45a821a8cc46 100644 inode->dirtied_when = 0; diff --git a/fs/namei.c b/fs/namei.c -index efed178cbf59..0a9034c97a31 100644 +index f08e14d6d..14d27fe95 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1538,7 +1538,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, @@ -8350,7 +8067,7 @@ index efed178cbf59..0a9034c97a31 100644 if (unlikely(IS_DEADDIR(dir_inode))) return ERR_PTR(-ENOENT); diff --git a/fs/namespace.c b/fs/namespace.c -index 6e76f2a72cfc..dbd1119a539f 100644 +index 6e76f2a72..dbd1119a5 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -14,6 +14,7 @@ @@ -8376,7 +8093,7 @@ index 6e76f2a72cfc..dbd1119a539f 100644 * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will * be set to match its requirements. So we must not load that until diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c -index 9f88ca7b2001..bc8a78ecfe1c 100644 +index 9f88ca7b2..bc8a78ecf 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -484,7 +484,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry, @@ -8398,7 +8115,7 @@ index 9f88ca7b2001..bc8a78ecfe1c 100644 struct dentry *res; struct iattr attr = { .ia_valid = ATTR_OPEN }; diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c -index b27ebdccef70..f86c98a7ed04 100644 +index b27ebdcce..f86c98a7e 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c @@ -13,7 +13,7 @@ @@ -8420,7 +8137,7 @@ index b27ebdccef70..f86c98a7ed04 100644 status = -EBUSY; spin_lock(&dentry->d_lock); diff --git a/fs/proc/array.c b/fs/proc/array.c -index 18a4588c35be..decaa7768044 100644 +index 18a4588c3..decaa7768 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -384,9 +384,9 @@ static inline void task_context_switch_counts(struct seq_file *m, @@ -8436,7 +8153,7 @@ index 18a4588c35be..decaa7768044 100644 static inline void task_core_dumping(struct seq_file *m, struct mm_struct *mm) diff --git a/fs/proc/base.c b/fs/proc/base.c -index 98bfd18e61bc..d8bcf815117d 100644 +index 24c70ff92..6c8156c4c 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -97,6 +97,7 @@ @@ -8444,10 +8161,10 @@ index 98bfd18e61bc..d8bcf815117d 100644 #include #include +#include + #include #include #include "internal.h" - #include "fd.h" -@@ -2161,7 +2162,7 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx, +@@ -2164,7 +2165,7 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx, child = d_hash_and_lookup(dir, &qname); if (!child) { @@ -8457,7 +8174,7 @@ index 98bfd18e61bc..d8bcf815117d 100644 if (IS_ERR(child)) goto end_instantiate; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index df435cd91a5b..eb19a342909c 100644 +index df435cd91..eb19a3429 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -684,7 +684,7 @@ static bool proc_sys_fill_cache(struct file *file, @@ -8470,7 +8187,7 @@ index df435cd91a5b..eb19a342909c 100644 if (IS_ERR(child)) return false; diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c -index ce03c3dbb5c3..5c2c14d5f6fc 100644 +index ce03c3dbb..5c2c14d5f 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -384,7 +384,8 @@ void pstore_record_init(struct pstore_record *record, @@ -8493,7 +8210,7 @@ index ce03c3dbb5c3..5c2c14d5f6fc 100644 break; diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild -index d1300c6e0a47..267f6dfb8960 100644 +index d1300c6e0..267f6dfb8 100644 --- a/include/asm-generic/Kbuild +++ b/include/asm-generic/Kbuild @@ -30,7 +30,7 @@ mandatory-y += irq.h @@ -8506,7 +8223,7 @@ index d1300c6e0a47..267f6dfb8960 100644 mandatory-y += linkage.h mandatory-y += local.h diff --git a/include/asm-generic/hardirq.h b/include/asm-generic/hardirq.h -index d14214dfc10b..7317e8258b48 100644 +index d14214dfc..7317e8258 100644 --- a/include/asm-generic/hardirq.h +++ b/include/asm-generic/hardirq.h @@ -7,9 +7,13 @@ @@ -8526,7 +8243,7 @@ index d14214dfc10b..7317e8258b48 100644 #ifndef ack_bad_irq diff --git a/include/asm-generic/kmap_size.h b/include/asm-generic/kmap_size.h new file mode 100644 -index 000000000000..9d6c7786a645 +index 000000000..9d6c7786a --- /dev/null +++ b/include/asm-generic/kmap_size.h @@ -0,0 +1,12 @@ @@ -8544,7 +8261,7 @@ index 000000000000..9d6c7786a645 +#endif diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h deleted file mode 100644 -index 9f95b7b63d19..000000000000 +index 9f95b7b63..000000000 --- a/include/asm-generic/kmap_types.h +++ /dev/null @@ -1,11 +0,0 @@ @@ -8560,7 +8277,7 @@ index 9f95b7b63d19..000000000000 - -#endif diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h -index b4d43a4af5f7..ac255e889462 100644 +index b4d43a4af..ac255e889 100644 --- a/include/asm-generic/preempt.h +++ b/include/asm-generic/preempt.h @@ -79,6 +79,9 @@ static __always_inline bool should_resched(int preempt_offset) @@ -8574,7 +8291,7 @@ index b4d43a4af5f7..ac255e889462 100644 #define __preempt_schedule() preempt_schedule() extern asmlinkage void preempt_schedule_notrace(void); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h -index 9ede0a81e466..31a67de40ac3 100644 +index 50b4fd0a0..f38b1bd30 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -166,7 +166,7 @@ struct request { @@ -8587,7 +8304,7 @@ index 9ede0a81e466..31a67de40ac3 100644 /* diff --git a/include/linux/bottom_half.h b/include/linux/bottom_half.h -index a19519f4241d..eed86eb0a1de 100644 +index a19519f42..eed86eb0a 100644 --- a/include/linux/bottom_half.h +++ b/include/linux/bottom_half.h @@ -4,7 +4,7 @@ @@ -8611,7 +8328,7 @@ index a19519f4241d..eed86eb0a1de 100644 + #endif /* _LINUX_BH_H */ diff --git a/include/linux/console.h b/include/linux/console.h -index bc2a749e6f0d..027278792eea 100644 +index bc2a749e6..027278792 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -16,6 +16,7 @@ @@ -8656,7 +8373,7 @@ index bc2a749e6f0d..027278792eea 100644 + #endif /* _LINUX_CONSOLE_H */ diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h -index b540e5a60ea9..dacf87c92fc1 100644 +index b540e5a60..dacf87c92 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -159,6 +159,7 @@ enum cpuhp_state { @@ -8668,10 +8385,10 @@ index b540e5a60ea9..dacf87c92fc1 100644 CPUHP_AP_X86_VDSO_VMA_ONLINE, CPUHP_AP_IRQ_AFFINITY_ONLINE, diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h -index 0159986ac9ce..c53364c4296d 100644 +index 7cdec529b..3292c7ba0 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h -@@ -199,6 +199,11 @@ static inline int cpumask_any_and_distribute(const struct cpumask *src1p, +@@ -210,6 +210,11 @@ static inline int cpumask_any_and_distribute(const struct cpumask *src1p, return cpumask_next_and(-1, src1p, src2p); } @@ -8683,7 +8400,7 @@ index 0159986ac9ce..c53364c4296d 100644 #define for_each_cpu(cpu, mask) \ for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) #define for_each_cpu_not(cpu, mask) \ -@@ -252,6 +257,7 @@ int __pure cpumask_any_but(const struct cpumask *mask, unsigned int cpu); +@@ -263,6 +268,7 @@ int __pure cpumask_any_but(const struct cpumask *mask, unsigned int cpu); unsigned int cpumask_local_spread(unsigned int i, int node); int cpumask_any_and_distribute(const struct cpumask *src1p, const struct cpumask *src2p); @@ -8692,7 +8409,7 @@ index 0159986ac9ce..c53364c4296d 100644 /** * for_each_cpu - iterate over every cpu in a mask diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index 4bb8b1759438..c5821c04ab88 100644 +index 4bb8b1759..c5821c04a 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -108,7 +108,7 @@ struct dentry { @@ -8714,7 +8431,7 @@ index 4bb8b1759438..c5821c04ab88 100644 extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); extern struct dentry * d_exact_alias(struct dentry *, struct inode *); diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h -index edb5c186b0b7..3f49e65169c6 100644 +index edb5c186b..3f49e6516 100644 --- a/include/linux/debug_locks.h +++ b/include/linux/debug_locks.h @@ -3,8 +3,7 @@ @@ -8728,7 +8445,7 @@ index edb5c186b0b7..3f49e65169c6 100644 struct task_struct; diff --git a/include/linux/delay.h b/include/linux/delay.h -index e8607992c68a..cd24f34b4ad0 100644 +index e8607992c..cd24f34b4 100644 --- a/include/linux/delay.h +++ b/include/linux/delay.h @@ -88,4 +88,10 @@ static inline void fsleep(unsigned long usecs) @@ -8743,7 +8460,7 @@ index e8607992c68a..cd24f34b4ad0 100644 + #endif /* defined(_LINUX_DELAY_H) */ diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h -index de029656de13..6f262f3d63a4 100644 +index de029656d..6f262f3d6 100644 --- a/include/linux/entry-common.h +++ b/include/linux/entry-common.h @@ -70,9 +70,10 @@ @@ -8759,7 +8476,7 @@ index de029656de13..6f262f3d63a4 100644 * arch_check_user_regs - Architecture specific sanity check for user mode regs * @regs: Pointer to currents pt_regs diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h -index dc4fd8a6644d..836b4c021a0a 100644 +index 6cd2a92da..ab602b95d 100644 --- a/include/linux/eventfd.h +++ b/include/linux/eventfd.h @@ -14,6 +14,7 @@ @@ -8770,7 +8487,7 @@ index dc4fd8a6644d..836b4c021a0a 100644 /* * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining -@@ -42,11 +43,9 @@ __u64 eventfd_signal(struct eventfd_ctx *ctx, __u64 n); +@@ -43,11 +44,9 @@ __u64 eventfd_signal_mask(struct eventfd_ctx *ctx, __u64 n, unsigned mask); int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_entry_t *wait, __u64 *cnt); @@ -8784,7 +8501,7 @@ index dc4fd8a6644d..836b4c021a0a 100644 } #else /* CONFIG_EVENTFD */ -@@ -77,9 +76,9 @@ static inline int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, +@@ -84,9 +83,9 @@ static inline int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, return -ENOSYS; } @@ -8797,10 +8514,10 @@ index dc4fd8a6644d..836b4c021a0a 100644 #endif diff --git a/include/linux/fs.h b/include/linux/fs.h -index 98236a86cca0..b63177f6db27 100644 +index f6bb20f6f..e7d79fdf4 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -719,7 +719,7 @@ struct inode { +@@ -724,7 +724,7 @@ struct inode { struct block_device *i_bdev; struct cdev *i_cdev; char *i_link; @@ -8810,7 +8527,7 @@ index 98236a86cca0..b63177f6db27 100644 __u32 i_generation; diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h -index 754f67ac4326..76878b357ffa 100644 +index 754f67ac4..76878b357 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h @@ -6,6 +6,7 @@ @@ -8860,7 +8577,7 @@ index 754f67ac4326..76878b357ffa 100644 } while (0) diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-internal.h new file mode 100644 -index 000000000000..f9bc6acd3679 +index 000000000..f9bc6acd3 --- /dev/null +++ b/include/linux/highmem-internal.h @@ -0,0 +1,222 @@ @@ -9087,7 +8804,7 @@ index 000000000000..f9bc6acd3679 + +#endif diff --git a/include/linux/highmem.h b/include/linux/highmem.h -index c3b75b4a8fc1..d12f7a5fc853 100644 +index cc5fe6c62..77be3e318 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -11,217 +11,137 @@ @@ -9416,7 +9133,7 @@ index c3b75b4a8fc1..d12f7a5fc853 100644 #ifndef clear_user_highpage static inline void clear_user_highpage(struct page *page, unsigned long vaddr) diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h -index 22240a8c3a1e..fc162c2525ea 100644 +index 22240a8c3..fc162c252 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -542,7 +542,7 @@ struct softirq_action @@ -9482,7 +9199,7 @@ index 22240a8c3a1e..fc162c2525ea 100644 { tasklet_disable_nosync(t); diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h -index c75e4d3d8833..4bb8223f2f82 100644 +index c75e4d3d8..4bb8223f2 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h @@ -60,22 +60,20 @@ io_mapping_fini(struct io_mapping *mapping) @@ -9554,7 +9271,7 @@ index c75e4d3d8833..4bb8223f2f82 100644 io_mapping_create_wc(resource_size_t base, diff --git a/include/linux/irq_cpustat.h b/include/linux/irq_cpustat.h deleted file mode 100644 -index 6e8895cd4d92..000000000000 +index 6e8895cd4..000000000 --- a/include/linux/irq_cpustat.h +++ /dev/null @@ -1,28 +0,0 @@ @@ -9587,7 +9304,7 @@ index 6e8895cd4d92..000000000000 - -#endif /* __irq_cpustat_h */ diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h -index ec2a47a81e42..9448e2bfc602 100644 +index ec2a47a81..9448e2bfc 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h @@ -3,6 +3,7 @@ @@ -9625,7 +9342,7 @@ index ec2a47a81e42..9448e2bfc602 100644 bool irq_work_queue_on(struct irq_work *work, int cpu); diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h -index dc1b213ae941..9bbcd8cbac50 100644 +index dc1b213ae..9bbcd8cba 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h @@ -68,6 +68,7 @@ struct irq_desc { @@ -9637,7 +9354,7 @@ index dc1b213ae941..9bbcd8cbac50 100644 struct cpumask *percpu_enabled; const struct cpumask *percpu_affinity; diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h -index fef2d43a7a1d..741aa2008a34 100644 +index fef2d43a7..741aa2008 100644 --- a/include/linux/irqflags.h +++ b/include/linux/irqflags.h @@ -71,14 +71,6 @@ do { \ @@ -9678,7 +9395,7 @@ index fef2d43a7a1d..741aa2008a34 100644 defined(CONFIG_PREEMPT_TRACER) extern void stop_critical_timings(void); diff --git a/include/linux/kernel.h b/include/linux/kernel.h -index 78a0907f0b04..e6270bfa6105 100644 +index e1d66cc50..727913a6f 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -220,6 +220,7 @@ static __always_inline void might_resched(void) @@ -9744,7 +9461,7 @@ index 78a0907f0b04..e6270bfa6105 100644 * abs - return absolute value of an argument * @x: the value. If it is unsigned type, it is converted to signed type first. diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h -index 3378bcbe585e..86673930c8ea 100644 +index 3378bcbe5..86673930c 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h @@ -29,6 +29,18 @@ enum kmsg_dump_reason { @@ -9841,7 +9558,7 @@ index 3378bcbe585e..86673930c8ea 100644 } diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lock_internal.h -index 3f02b818625e..1b8ae034946f 100644 +index 3f02b8186..1b8ae0349 100644 --- a/include/linux/local_lock_internal.h +++ b/include/linux/local_lock_internal.h @@ -7,13 +7,39 @@ @@ -10001,7 +9718,7 @@ index 3f02b818625e..1b8ae034946f 100644 + +#endif diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 99ae1f9a9019..11929a9d7d3d 100644 +index d1be389c0..54b482514 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -13,6 +13,7 @@ @@ -10023,7 +9740,7 @@ index 99ae1f9a9019..11929a9d7d3d 100644 atomic_long_t hugetlb_usage; #endif diff --git a/include/linux/mutex.h b/include/linux/mutex.h -index 4d671fba3cab..90923d3008fc 100644 +index 4d671fba3..90923d300 100644 --- a/include/linux/mutex.h +++ b/include/linux/mutex.h @@ -22,6 +22,20 @@ @@ -10088,7 +9805,7 @@ index 4d671fba3cab..90923d3008fc 100644 #endif /* __LINUX_MUTEX_H */ diff --git a/include/linux/mutex_rt.h b/include/linux/mutex_rt.h new file mode 100644 -index 000000000000..f0b2e07cd5c5 +index 000000000..f0b2e07cd --- /dev/null +++ b/include/linux/mutex_rt.h @@ -0,0 +1,130 @@ @@ -10223,7 +9940,7 @@ index 000000000000..f0b2e07cd5c5 + +#endif diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h -index 5491ad5f48a9..cd9e5b3f1831 100644 +index 5491ad5f4..cd9e5b3f1 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -1675,7 +1675,7 @@ struct nfs_unlinkdata { @@ -10236,7 +9953,7 @@ index 5491ad5f48a9..cd9e5b3f1831 100644 struct nfs_fattr dir_attr; long timeout; diff --git a/include/linux/notifier.h b/include/linux/notifier.h -index 2fb373a5c1ed..723bc2df6388 100644 +index 2fb373a5c..723bc2df6 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h @@ -58,7 +58,7 @@ struct notifier_block { @@ -10267,7 +9984,7 @@ index 2fb373a5c1ed..723bc2df6388 100644 #define BLOCKING_NOTIFIER_INIT(name) { \ .rwsem = __RWSEM_INITIALIZER((name).rwsem), \ diff --git a/include/linux/pid.h b/include/linux/pid.h -index 34afff2dc888..514dd026c6b8 100644 +index 34afff2dc..514dd026c 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h @@ -3,6 +3,7 @@ @@ -10279,7 +9996,7 @@ index 34afff2dc888..514dd026c6b8 100644 #include diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 7d9c1c0e149c..7b5b2ed55531 100644 +index 89d5281e0..0386dd2ab 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -77,31 +77,37 @@ @@ -10464,12 +10181,13 @@ index 7d9c1c0e149c..7b5b2ed55531 100644 #ifdef CONFIG_PREEMPT_NOTIFIERS struct preempt_notifier; -@@ -322,34 +392,78 @@ static inline void preempt_notifier_init(struct preempt_notifier *notifier, +@@ -322,36 +392,82 @@ static inline void preempt_notifier_init(struct preempt_notifier *notifier, #endif -/** - * migrate_disable - Prevent migration of the current task ++ +#ifdef CONFIG_SMP + +/* @@ -10493,26 +10211,28 @@ index 7d9c1c0e149c..7b5b2ed55531 100644 -} - -/** -- * migrate_enable - Allow migration of the current task + * migrate_enable - Allow migration of the current task + * Per this argument, the change from preempt_disable() to migrate_disable() + * gets us: -+ * + * +- * Counterpart to migrate_disable(). + * - a higher priority tasks gains reduced wake-up latency; with preempt_disable() + * it would have had to wait for the lower priority task. -+ * + * +- * As migrate_disable() can be invoked nested, only the outermost invocation +- * reenables migration. + * - a lower priority tasks; which under preempt_disable() could've instantly + * migrated away when another CPU becomes available, is now constrained + * by the ability to push the higher priority task away, which might itself be + * in a migrate_disable() section, reducing it's available bandwidth. -+ * + * +- * Currently mapped to preempt_enable(). +- */ +-static __always_inline void migrate_enable(void) + * IOW it trades latency / moves the interference term, but it stays in the + * system, and as long as it remains unbounded, the system is not fully + * deterministic. - * -- * Counterpart to migrate_disable(). - * -- * As migrate_disable() can be invoked nested, only the outermost invocation -- * reenables migration. ++ * + * The reason we have it anyway. + * + * PREEMPT_RT breaks a number of assumptions traditionally held. By forcing a @@ -10541,10 +10261,9 @@ index 7d9c1c0e149c..7b5b2ed55531 100644 + * Note: even non-work-conserving schedulers like semi-partitioned depends on + * migration, so migrate_disable() is not only a problem for + * work-conserving schedulers. - * -- * Currently mapped to preempt_enable(). - */ --static __always_inline void migrate_enable(void) ++ * ++*/ ++ +extern void migrate_disable(void); +extern void migrate_enable(void); + @@ -10563,9 +10282,11 @@ index 7d9c1c0e149c..7b5b2ed55531 100644 + +#endif /* CONFIG_SMP */ + + int in_dbg(void); + #endif /* __LINUX_PREEMPT_H */ diff --git a/include/linux/printk.h b/include/linux/printk.h -index 7d787f91db92..9331b131ba25 100644 +index 7d787f91d..9331b131b 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -46,6 +46,12 @@ static inline const char *printk_skip_headers(const char *buffer) @@ -10634,7 +10355,7 @@ index 7d787f91db92..9331b131ba25 100644 * ratelimited messages with local ratelimit_state, * no local ratelimit_state used in the !PRINTK case diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h -index d31ecaf4fdd3..e711efc2e009 100644 +index d31ecaf4f..e711efc2e 100644 --- a/include/linux/rbtree.h +++ b/include/linux/rbtree.h @@ -19,19 +19,9 @@ @@ -10682,7 +10403,7 @@ index d31ecaf4fdd3..e711efc2e009 100644 /* Same as rb_first(), but O(1) */ diff --git a/include/linux/rbtree_type.h b/include/linux/rbtree_type.h new file mode 100644 -index 000000000000..77a89dd2c7c6 +index 000000000..77a89dd2c --- /dev/null +++ b/include/linux/rbtree_type.h @@ -0,0 +1,31 @@ @@ -10718,7 +10439,7 @@ index 000000000000..77a89dd2c7c6 + +#endif diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h -index 095b3b39bd03..1effcae06ea1 100644 +index 095b3b39b..1effcae06 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -54,6 +54,11 @@ void __rcu_read_unlock(void); @@ -10753,7 +10474,7 @@ index 095b3b39bd03..1effcae06ea1 100644 RCU_LOCKDEP_WARN(lock_is_held(&rcu_sched_lock_map), \ "Illegal context switch in RCU-sched read-side critical section"); \ diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h -index 6fd615a0eea9..b02009f53026 100644 +index 6fd615a0e..b02009f53 100644 --- a/include/linux/rtmutex.h +++ b/include/linux/rtmutex.h @@ -14,11 +14,15 @@ @@ -10859,7 +10580,7 @@ index 6fd615a0eea9..b02009f53026 100644 extern void rt_mutex_unlock(struct rt_mutex *lock); diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h new file mode 100644 -index 000000000000..aafdb0a685d5 +index 000000000..aafdb0a68 --- /dev/null +++ b/include/linux/rwlock_rt.h @@ -0,0 +1,109 @@ @@ -10973,7 +10694,7 @@ index 000000000000..aafdb0a685d5 + +#endif diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h -index 3bd03e18061c..0ad226b5d8fd 100644 +index 3bd03e180..0ad226b5d 100644 --- a/include/linux/rwlock_types.h +++ b/include/linux/rwlock_types.h @@ -1,6 +1,10 @@ @@ -10989,7 +10710,7 @@ index 3bd03e18061c..0ad226b5d8fd 100644 * and initializers diff --git a/include/linux/rwlock_types_rt.h b/include/linux/rwlock_types_rt.h new file mode 100644 -index 000000000000..4762391d659b +index 000000000..4762391d6 --- /dev/null +++ b/include/linux/rwlock_types_rt.h @@ -0,0 +1,56 @@ @@ -11051,7 +10772,7 @@ index 000000000000..4762391d659b +#endif diff --git a/include/linux/rwsem-rt.h b/include/linux/rwsem-rt.h new file mode 100644 -index 000000000000..0ba8aae9a198 +index 000000000..0ba8aae9a --- /dev/null +++ b/include/linux/rwsem-rt.h @@ -0,0 +1,70 @@ @@ -11126,7 +10847,7 @@ index 000000000000..0ba8aae9a198 + +#endif diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h -index 4c715be48717..9323af8a9244 100644 +index 4c715be48..9323af8a9 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -16,6 +16,11 @@ @@ -11156,7 +10877,7 @@ index 4c715be48717..9323af8a9244 100644 * lock for reading */ diff --git a/include/linux/sched.h b/include/linux/sched.h -index 4c6e8c5183fb..dc0ae903665c 100644 +index 5e413d309..d3329dc9a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -36,6 +36,7 @@ @@ -11200,7 +10921,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 /* * set_special_state() should be used for those states when the blocking task * can not use the regular condition based wait-loop. In that case we must -@@ -669,6 +672,13 @@ struct wake_q_node { +@@ -675,6 +678,13 @@ struct wake_q_node { struct wake_q_node *next; }; @@ -11214,7 +10935,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 /** * struct task_struct_resvd - KABI extension struct */ -@@ -691,6 +701,8 @@ struct task_struct { +@@ -700,6 +710,8 @@ struct task_struct { #endif /* -1 unrunnable, 0 runnable, >0 stopped: */ volatile long state; @@ -11223,7 +10944,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 /* * This begins the randomizable portion of task_struct. Only -@@ -763,6 +775,11 @@ struct task_struct { +@@ -772,6 +784,11 @@ struct task_struct { int nr_cpus_allowed; const cpumask_t *cpus_ptr; cpumask_t cpus_mask; @@ -11235,7 +10956,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 #ifdef CONFIG_PREEMPT_RCU int rcu_read_lock_nesting; -@@ -871,6 +888,10 @@ struct task_struct { +@@ -880,6 +897,10 @@ struct task_struct { #ifdef CONFIG_IOMMU_SVA KABI_FILL_HOLE(unsigned pasid_activated:1) #endif @@ -11246,7 +10967,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 unsigned long atomic_flags; /* Flags requiring atomic access. */ -@@ -1012,11 +1033,16 @@ struct task_struct { +@@ -1021,11 +1042,16 @@ struct task_struct { /* Signal handlers: */ struct signal_struct *signal; struct sighand_struct __rcu *sighand; @@ -11263,7 +10984,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 unsigned long sas_ss_sp; size_t sas_ss_size; unsigned int sas_ss_flags; -@@ -1043,6 +1069,7 @@ struct task_struct { +@@ -1052,6 +1078,7 @@ struct task_struct { raw_spinlock_t pi_lock; struct wake_q_node wake_q; @@ -11271,7 +10992,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 #ifdef CONFIG_RT_MUTEXES /* PI waiters blocked on a rt_mutex held by this task: */ -@@ -1070,6 +1097,9 @@ struct task_struct { +@@ -1079,6 +1106,9 @@ struct task_struct { int softirq_context; int irq_config; #endif @@ -11281,7 +11002,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 #ifdef CONFIG_LOCKDEP # define MAX_LOCK_DEPTH 48UL -@@ -1355,6 +1385,7 @@ struct task_struct { +@@ -1364,6 +1394,7 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif @@ -11289,7 +11010,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; #endif -@@ -1832,6 +1863,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); +@@ -1851,6 +1882,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -11297,7 +11018,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 extern void wake_up_new_task(struct task_struct *tsk); #ifdef CONFIG_SMP -@@ -1929,6 +1961,89 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) +@@ -1952,6 +1984,89 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -11388,7 +11109,7 @@ index 4c6e8c5183fb..dc0ae903665c 100644 * cond_resched() and cond_resched_lock(): latency reduction via * explicit rescheduling in places that are safe. The return diff --git a/include/linux/sched/hotplug.h b/include/linux/sched/hotplug.h -index 9a62ffdd296f..412cdaba33eb 100644 +index 9a62ffdd2..412cdaba3 100644 --- a/include/linux/sched/hotplug.h +++ b/include/linux/sched/hotplug.h @@ -11,8 +11,10 @@ extern int sched_cpu_activate(unsigned int cpu); @@ -11403,7 +11124,7 @@ index 9a62ffdd296f..412cdaba33eb 100644 #endif diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h -index f58a2730a130..5f4aa984245e 100644 +index f58a2730a..5f4aa9842 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -50,6 +50,17 @@ static inline void mmdrop(struct mm_struct *mm) @@ -11425,7 +11146,7 @@ index f58a2730a130..5f4aa984245e 100644 * mmget() - Pin the address space associated with a &struct mm_struct. * @mm: The address space to pin. diff --git a/include/linux/sched/rt.h b/include/linux/sched/rt.h -index e5af028c08b4..994c25640e15 100644 +index e5af028c0..994c25640 100644 --- a/include/linux/sched/rt.h +++ b/include/linux/sched/rt.h @@ -39,20 +39,12 @@ static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *p) @@ -11450,7 +11171,7 @@ index e5af028c08b4..994c25640e15 100644 extern void normalize_rt_tasks(void); diff --git a/include/linux/sched/wake_q.h b/include/linux/sched/wake_q.h -index 26a2013ac39c..6e2dff721547 100644 +index 26a2013ac..6e2dff721 100644 --- a/include/linux/sched/wake_q.h +++ b/include/linux/sched/wake_q.h @@ -58,6 +58,17 @@ static inline bool wake_q_empty(struct wake_q_head *head) @@ -11473,7 +11194,7 @@ index 26a2013ac39c..6e2dff721547 100644 #endif /* _LINUX_SCHED_WAKE_Q_H */ diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h -index 9e655055112d..ffef674deda7 100644 +index 0180b3d06..68a2debc1 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h @@ -7,6 +7,7 @@ @@ -11484,7 +11205,7 @@ index 9e655055112d..ffef674deda7 100644 #include #include #include -@@ -125,6 +126,8 @@ struct uart_8250_port { +@@ -126,6 +127,8 @@ struct uart_8250_port { #define MSR_SAVE_FLAGS UART_MSR_ANY_DELTA unsigned char msr_saved_flags; @@ -11493,7 +11214,7 @@ index 9e655055112d..ffef674deda7 100644 struct uart_8250_dma *dma; const struct uart_8250_ops *ops; -@@ -180,6 +183,8 @@ void serial8250_init_port(struct uart_8250_port *up); +@@ -181,6 +184,8 @@ void serial8250_init_port(struct uart_8250_port *up); void serial8250_set_defaults(struct uart_8250_port *up); void serial8250_console_write(struct uart_8250_port *up, const char *s, unsigned int count); @@ -11503,7 +11224,7 @@ index 9e655055112d..ffef674deda7 100644 int serial8250_console_exit(struct uart_port *port); diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h -index 93240799a404..df2871ed82dc 100644 +index 93240799a..df2871ed8 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -32,7 +32,7 @@ struct shmem_sb_info { @@ -11516,7 +11237,7 @@ index 93240799a404..df2871ed82dc 100644 unsigned char huge; /* Whether to try for hugepages */ kuid_t uid; /* Mount uid for root directory */ diff --git a/include/linux/signal.h b/include/linux/signal.h -index 3038a0610407..fff1656c6b6f 100644 +index 3038a0610..fff1656c6 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -265,6 +265,7 @@ static inline void init_sigpending(struct sigpending *sig) @@ -11528,7 +11249,7 @@ index 3038a0610407..fff1656c6b6f 100644 /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ static inline int valid_signal(unsigned long sig) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index d16c8bd085f3..d7248f71dcc3 100644 +index d16c8bd08..d7248f71d 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -298,6 +298,7 @@ struct sk_buff_head { @@ -11553,7 +11274,7 @@ index d16c8bd085f3..d7248f71dcc3 100644 struct lock_class_key *class) { diff --git a/include/linux/smp.h b/include/linux/smp.h -index 84a0b4828f66..8348fa4127a0 100644 +index 84a0b4828..8348fa412 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -260,6 +260,9 @@ static inline int get_boot_cpu_id(void) @@ -11567,7 +11288,7 @@ index 84a0b4828f66..8348fa4127a0 100644 * Callback to arch code if there's nosmp or maxcpus=0 on the * boot command line: diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h -index 79897841a2cc..c3c70291b46c 100644 +index 79897841a..c3c70291b 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h @@ -309,7 +309,11 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) @@ -11604,7 +11325,7 @@ index 79897841a2cc..c3c70291b46c 100644 * Pull the atomic_t declaration: * (asm-mips/atomic.h needs above definitions) diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h -index 19a9be9d97ee..da38149f2843 100644 +index 19a9be9d9..da38149f2 100644 --- a/include/linux/spinlock_api_smp.h +++ b/include/linux/spinlock_api_smp.h @@ -187,6 +187,8 @@ static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock) @@ -11619,7 +11340,7 @@ index 19a9be9d97ee..da38149f2843 100644 #endif /* __LINUX_SPINLOCK_API_SMP_H */ diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h new file mode 100644 -index 000000000000..3085132eae38 +index 000000000..3085132ea --- /dev/null +++ b/include/linux/spinlock_rt.h @@ -0,0 +1,155 @@ @@ -11779,7 +11500,7 @@ index 000000000000..3085132eae38 + +#endif diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h -index b981caafe8bf..8d896d3e1a01 100644 +index b981caafe..8d896d3e1 100644 --- a/include/linux/spinlock_types.h +++ b/include/linux/spinlock_types.h @@ -9,93 +9,15 @@ @@ -11885,7 +11606,7 @@ index b981caafe8bf..8d896d3e1a01 100644 #endif /* __LINUX_SPINLOCK_TYPES_H */ diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h new file mode 100644 -index 000000000000..e4549f0dd197 +index 000000000..e4549f0dd --- /dev/null +++ b/include/linux/spinlock_types_nort.h @@ -0,0 +1,39 @@ @@ -11930,7 +11651,7 @@ index 000000000000..e4549f0dd197 +#endif diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h new file mode 100644 -index 000000000000..1d4a180e983d +index 000000000..1d4a180e9 --- /dev/null +++ b/include/linux/spinlock_types_raw.h @@ -0,0 +1,65 @@ @@ -12001,7 +11722,7 @@ index 000000000000..1d4a180e983d +#endif diff --git a/include/linux/spinlock_types_rt.h b/include/linux/spinlock_types_rt.h new file mode 100644 -index 000000000000..446da786e5d5 +index 000000000..446da786e --- /dev/null +++ b/include/linux/spinlock_types_rt.h @@ -0,0 +1,38 @@ @@ -12044,7 +11765,7 @@ index 000000000000..446da786e5d5 + +#endif diff --git a/include/linux/spinlock_types_up.h b/include/linux/spinlock_types_up.h -index c09b6407ae1b..d9b371fa13e0 100644 +index c09b6407a..d9b371fa1 100644 --- a/include/linux/spinlock_types_up.h +++ b/include/linux/spinlock_types_up.h @@ -1,7 +1,7 @@ @@ -12057,7 +11778,7 @@ index c09b6407ae1b..d9b371fa13e0 100644 #endif diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h -index 2959b9e52af4..f9f7c954baeb 100644 +index 2959b9e52..f9f7c954b 100644 --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h @@ -25,6 +25,7 @@ typedef int (*cpu_stop_fn_t)(void *arg); @@ -12087,7 +11808,7 @@ index 2959b9e52af4..f9f7c954baeb 100644 /* diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h -index 19f76d87f20f..7c841bf0a250 100644 +index 19f76d87f..7c841bf0a 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h @@ -36,7 +36,17 @@ static inline long set_restart_fn(struct restart_block *restart, @@ -12110,7 +11831,7 @@ index 19f76d87f20f..7c841bf0a250 100644 #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES static inline int arch_within_stack_frames(const void * const stack, diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 409385b25ecb..3b3c9de8247b 100644 +index 409385b25..3b3c9de82 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -67,6 +67,8 @@ struct trace_entry { @@ -12197,7 +11918,7 @@ index 409385b25ecb..3b3c9de8247b 100644 struct trace_event_file; diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h -index e81856c0ba13..66eb968a09d4 100644 +index e81856c0b..66eb968a0 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h @@ -66,7 +66,7 @@ @@ -12326,7 +12047,7 @@ index e81856c0ba13..66eb968a09d4 100644 #endif return __u64_stats_fetch_retry(syncp, start); diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h -index 322dcbfcc933..9a3a10ea3e3c 100644 +index 322dcbfcc..9a3a10ea3 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -63,7 +63,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states); @@ -12350,7 +12071,7 @@ index 322dcbfcc933..9a3a10ea3e3c 100644 static inline void count_vm_events(enum vm_event_item item, long delta) diff --git a/include/linux/vtime.h b/include/linux/vtime.h -index 2cdeca062db3..041d6524d144 100644 +index 2cdeca062..041d6524d 100644 --- a/include/linux/vtime.h +++ b/include/linux/vtime.h @@ -83,36 +83,46 @@ static inline void vtime_init_idle(struct task_struct *tsk, int cpu) { } @@ -12417,7 +12138,7 @@ index 2cdeca062db3..041d6524d144 100644 #endif /* _LINUX_KERNEL_VTIME_H */ diff --git a/include/linux/wait.h b/include/linux/wait.h -index 1663e47681a3..20aae69387aa 100644 +index 1663e4768..20aae6938 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -10,6 +10,7 @@ @@ -12429,7 +12150,7 @@ index 1663e47681a3..20aae69387aa 100644 typedef struct wait_queue_entry wait_queue_entry_t; diff --git a/include/linux/ww_mutex.h b/include/linux/ww_mutex.h -index 6ecf2a0220db..3145de598645 100644 +index 6ecf2a022..3145de598 100644 --- a/include/linux/ww_mutex.h +++ b/include/linux/ww_mutex.h @@ -28,6 +28,14 @@ struct ww_class { @@ -12448,7 +12169,7 @@ index 6ecf2a0220db..3145de598645 100644 struct task_struct *task; unsigned long stamp; diff --git a/include/net/gen_stats.h b/include/net/gen_stats.h -index 1424e02cef90..163f8415e5db 100644 +index 1424e02ce..163f8415e 100644 --- a/include/net/gen_stats.h +++ b/include/net/gen_stats.h @@ -6,6 +6,7 @@ @@ -12496,7 +12217,7 @@ index 1424e02cef90..163f8415e5db 100644 struct gnet_stats_rate_est64 *sample); diff --git a/include/net/net_seq_lock.h b/include/net/net_seq_lock.h new file mode 100644 -index 000000000000..67710bace741 +index 000000000..67710bace --- /dev/null +++ b/include/net/net_seq_lock.h @@ -0,0 +1,15 @@ @@ -12516,7 +12237,7 @@ index 000000000000..67710bace741 + +#endif diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h -index 9144e0f09a30..464d14b2aca3 100644 +index 9144e0f09..464d14b2a 100644 --- a/include/net/netns/xfrm.h +++ b/include/net/netns/xfrm.h @@ -74,7 +74,7 @@ struct netns_xfrm { @@ -12529,7 +12250,7 @@ index 9144e0f09a30..464d14b2aca3 100644 spinlock_t xfrm_policy_lock; diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h -index 73c699355470..8568edc0b633 100644 +index fad29c996..a0a8b6a3f 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -10,6 +10,7 @@ @@ -12607,7 +12328,7 @@ index 73c699355470..8568edc0b633 100644 struct Qdisc *root = qdisc_root_sleeping(qdisc); diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h -index eb5ec1fb66b4..122d96db9d26 100644 +index eb5ec1fb6..122d96db9 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -732,6 +732,18 @@ DEFINE_EVENT(psi_memstall_template, psi_memstall_leave, @@ -12630,7 +12351,7 @@ index eb5ec1fb66b4..122d96db9d26 100644 /* This part must be outside protection */ diff --git a/init/Kconfig b/init/Kconfig -index b137a6c043ac..ea2b1b7043a4 100644 +index 31fff350a..7cc9ec6ef 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -866,7 +866,7 @@ config NUMA_BALANCING @@ -12642,7 +12363,7 @@ index b137a6c043ac..ea2b1b7043a4 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 -@@ -1005,6 +1005,7 @@ config CFS_BANDWIDTH +@@ -1023,6 +1023,7 @@ config CFS_BANDWIDTH config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on CGROUP_SCHED @@ -12650,7 +12371,7 @@ index b137a6c043ac..ea2b1b7043a4 100644 default n help This feature lets you explicitly allocate real CPU bandwidth -@@ -1977,6 +1978,7 @@ choice +@@ -2005,6 +2006,7 @@ choice config SLAB bool "SLAB" @@ -12658,7 +12379,7 @@ index b137a6c043ac..ea2b1b7043a4 100644 select HAVE_HARDENED_USERCOPY_ALLOCATOR help The regular slab allocator that is established and known to work -@@ -1997,6 +1999,7 @@ config SLUB +@@ -2025,6 +2027,7 @@ config SLUB config SLOB depends on EXPERT bool "SLOB (Simple Allocator)" @@ -12666,7 +12387,7 @@ index b137a6c043ac..ea2b1b7043a4 100644 help SLOB replaces the stock allocator with a drastically simpler allocator. SLOB is generally more space efficient but -@@ -2063,7 +2066,7 @@ config SHUFFLE_PAGE_ALLOCATOR +@@ -2091,7 +2094,7 @@ config SHUFFLE_PAGE_ALLOCATOR config SLUB_CPU_PARTIAL default y @@ -12676,7 +12397,7 @@ index b137a6c043ac..ea2b1b7043a4 100644 help Per cpu partial caches accelerate objects allocation and freeing diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks -index 3de8fd11873b..4198f0273ecd 100644 +index 3de8fd118..4198f0273 100644 --- a/kernel/Kconfig.locks +++ b/kernel/Kconfig.locks @@ -251,7 +251,7 @@ config ARCH_USE_QUEUED_RWLOCKS @@ -12689,7 +12410,7 @@ index 3de8fd11873b..4198f0273ecd 100644 config ARCH_HAS_MMIOWB bool diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt -index e62a623031ea..b95f8784c4e4 100644 +index e62a62303..b95f8784c 100644 --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt @@ -1,5 +1,11 @@ @@ -12713,10 +12434,10 @@ index e62a623031ea..b95f8784c4e4 100644 This option turns the kernel into a real-time kernel by replacing various locking primitives (spinlocks, rwlocks, etc.) with diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c -index 60489cc5a92a..0a7c0a5635a1 100644 +index 90de01cc6..d3b1a03d8 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c -@@ -351,7 +351,7 @@ void cpuset_read_unlock(void) +@@ -358,7 +358,7 @@ void cpuset_read_unlock(void) percpu_up_read(&cpuset_rwsem); } @@ -12725,7 +12446,19 @@ index 60489cc5a92a..0a7c0a5635a1 100644 static struct workqueue_struct *cpuset_migrate_mm_wq; -@@ -1290,7 +1290,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, +@@ -737,9 +737,9 @@ static int update_prefer_cpumask(struct cpuset *cs, struct cpuset *trialcs, + if (!cpumask_empty(trialcs->prefer_cpus)) + dynamic_affinity_enable(); + +- spin_lock_irq(&callback_lock); ++ raw_spin_lock_irq(&callback_lock); + cpumask_copy(cs->prefer_cpus, trialcs->prefer_cpus); +- spin_unlock_irq(&callback_lock); ++ raw_spin_unlock_irq(&callback_lock); + + return 0; + } +@@ -1399,7 +1399,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, * Newly added CPUs will be removed from effective_cpus and * newly deleted ones will be added back to effective_cpus. */ @@ -12734,7 +12467,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (adding) { cpumask_or(parent->subparts_cpus, parent->subparts_cpus, tmp->addmask); -@@ -1312,7 +1312,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, +@@ -1421,7 +1421,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cpuset, int cmd, if (cpuset->partition_root_state != new_prs) cpuset->partition_root_state = new_prs; @@ -12743,7 +12476,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 return cmd == partcmd_update; } -@@ -1415,7 +1415,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) +@@ -1524,7 +1524,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) continue; rcu_read_unlock(); @@ -12752,7 +12485,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 cpumask_copy(cp->effective_cpus, tmp->new_cpus); if (cp->nr_subparts_cpus && (new_prs != PRS_ENABLED)) { -@@ -1449,7 +1449,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) +@@ -1558,7 +1558,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) if (new_prs != cp->partition_root_state) cp->partition_root_state = new_prs; @@ -12761,7 +12494,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 WARN_ON(!is_in_v2_mode() && !cpumask_equal(cp->cpus_allowed, cp->effective_cpus)); -@@ -1577,7 +1577,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, +@@ -1686,7 +1686,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, return -EINVAL; } @@ -12770,7 +12503,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 cpumask_copy(cs->cpus_allowed, trialcs->cpus_allowed); /* -@@ -1587,7 +1587,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, +@@ -1696,7 +1696,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, cpumask_and(cs->subparts_cpus, cs->subparts_cpus, cs->cpus_allowed); cs->nr_subparts_cpus = cpumask_weight(cs->subparts_cpus); } @@ -12779,7 +12512,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 update_cpumasks_hier(cs, &tmp); -@@ -1781,9 +1781,9 @@ static void update_nodemasks_hier(struct cpuset *cs, nodemask_t *new_mems) +@@ -1890,9 +1890,9 @@ static void update_nodemasks_hier(struct cpuset *cs, nodemask_t *new_mems) continue; rcu_read_unlock(); @@ -12791,7 +12524,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 WARN_ON(!is_in_v2_mode() && !nodes_equal(cp->mems_allowed, cp->effective_mems)); -@@ -1851,9 +1851,9 @@ static int update_nodemask(struct cpuset *cs, struct cpuset *trialcs, +@@ -1960,9 +1960,9 @@ static int update_nodemask(struct cpuset *cs, struct cpuset *trialcs, if (retval < 0) goto done; @@ -12803,7 +12536,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 /* use trialcs->mems_allowed as a temp variable */ update_nodemasks_hier(cs, &trialcs->mems_allowed); -@@ -1944,9 +1944,9 @@ static int update_flag(cpuset_flagbits_t bit, struct cpuset *cs, +@@ -2053,9 +2053,9 @@ static int update_flag(cpuset_flagbits_t bit, struct cpuset *cs, spread_flag_changed = ((is_spread_slab(cs) != is_spread_slab(trialcs)) || (is_spread_page(cs) != is_spread_page(trialcs))); @@ -12815,7 +12548,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (!cpumask_empty(trialcs->cpus_allowed) && balance_flag_changed) rebuild_sched_domains_locked(); -@@ -2037,9 +2037,9 @@ static int update_prstate(struct cpuset *cs, int new_prs) +@@ -2141,9 +2141,9 @@ static int update_prstate(struct cpuset *cs, int new_prs) rebuild_sched_domains_locked(); out: if (!err) { @@ -12827,7 +12560,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 } free_cpumasks(NULL, &tmpmask); -@@ -2456,7 +2456,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) +@@ -2575,7 +2575,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) cpuset_filetype_t type = seq_cft(sf)->private; int ret = 0; @@ -12836,7 +12569,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 switch (type) { case FILE_CPULIST: -@@ -2478,7 +2478,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) +@@ -2602,7 +2602,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) ret = -EINVAL; } @@ -12845,7 +12578,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 return ret; } -@@ -2791,14 +2791,14 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) +@@ -2923,14 +2923,14 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) cpuset_inc(); @@ -12862,7 +12595,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags)) goto out_unlock; -@@ -2825,12 +2825,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) +@@ -2957,7 +2957,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) } rcu_read_unlock(); @@ -12871,13 +12604,16 @@ index 60489cc5a92a..0a7c0a5635a1 100644 cs->mems_allowed = parent->mems_allowed; cs->effective_mems = parent->mems_allowed; cpumask_copy(cs->cpus_allowed, parent->cpus_allowed); - cpumask_copy(cs->effective_cpus, parent->cpus_allowed); +@@ -2965,7 +2965,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) + #ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY + cpumask_copy(cs->prefer_cpus, parent->prefer_cpus); + #endif - spin_unlock_irq(&callback_lock); + raw_spin_unlock_irq(&callback_lock); out_unlock: percpu_up_write(&cpuset_rwsem); put_online_cpus(); -@@ -2886,7 +2886,7 @@ static void cpuset_css_free(struct cgroup_subsys_state *css) +@@ -3021,7 +3021,7 @@ static void cpuset_css_free(struct cgroup_subsys_state *css) static void cpuset_bind(struct cgroup_subsys_state *root_css) { percpu_down_write(&cpuset_rwsem); @@ -12886,7 +12622,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (is_in_v2_mode()) { cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask); -@@ -2897,7 +2897,7 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) +@@ -3032,7 +3032,7 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) top_cpuset.mems_allowed = top_cpuset.effective_mems; } @@ -12895,8 +12631,8 @@ index 60489cc5a92a..0a7c0a5635a1 100644 percpu_up_write(&cpuset_rwsem); } -@@ -2994,12 +2994,12 @@ hotplug_update_tasks_legacy(struct cpuset *cs, - { +@@ -3144,12 +3144,12 @@ hotplug_update_tasks_legacy(struct cpuset *cs, + #endif bool is_empty; - spin_lock_irq(&callback_lock); @@ -12910,7 +12646,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 /* * Don't call update_tasks_cpumask() if the cpuset becomes empty, -@@ -3036,10 +3036,10 @@ hotplug_update_tasks(struct cpuset *cs, +@@ -3193,10 +3193,10 @@ hotplug_update_tasks(struct cpuset *cs, if (nodes_empty(*new_mems)) *new_mems = parent_cs(cs)->effective_mems; @@ -12923,7 +12659,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (cpus_updated) update_tasks_cpumask(cs); -@@ -3106,10 +3106,10 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp) +@@ -3263,10 +3263,10 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp) if (is_partition_root(cs) && (cpumask_empty(&new_cpus) || (parent->partition_root_state == PRS_ERROR))) { if (cs->nr_subparts_cpus) { @@ -12936,7 +12672,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 compute_effective_cpumask(&new_cpus, cs, parent); } -@@ -3123,9 +3123,9 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp) +@@ -3280,9 +3280,9 @@ static void cpuset_hotplug_update_tasks(struct cpuset *cs, struct tmpmasks *tmp) cpumask_empty(&new_cpus)) { update_parent_subparts_cpumask(cs, partcmd_disable, NULL, tmp); @@ -12948,7 +12684,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 } cpuset_force_rebuild(); } -@@ -3205,7 +3205,7 @@ static void cpuset_hotplug_workfn(struct work_struct *work) +@@ -3362,7 +3362,7 @@ static void cpuset_hotplug_workfn(struct work_struct *work) /* synchronize cpus_allowed to cpu_active_mask */ if (cpus_updated) { @@ -12957,7 +12693,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 if (!on_dfl) cpumask_copy(top_cpuset.cpus_allowed, &new_cpus); /* -@@ -3225,17 +3225,17 @@ static void cpuset_hotplug_workfn(struct work_struct *work) +@@ -3382,17 +3382,17 @@ static void cpuset_hotplug_workfn(struct work_struct *work) } } cpumask_copy(top_cpuset.effective_cpus, &new_cpus); @@ -12978,7 +12714,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 update_tasks_nodemask(&top_cpuset); } -@@ -3339,11 +3339,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) +@@ -3496,11 +3496,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) { unsigned long flags; @@ -12992,7 +12728,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 } /** -@@ -3404,11 +3404,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) +@@ -3561,11 +3561,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) nodemask_t mask; unsigned long flags; @@ -13006,7 +12742,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 return mask; } -@@ -3500,14 +3500,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) +@@ -3657,14 +3657,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) return true; /* Not hardwall and node outside mems_allowed: scan up cpusets */ @@ -13024,7 +12760,7 @@ index 60489cc5a92a..0a7c0a5635a1 100644 } diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c -index d2ae14d0b9e5..7b3bea56d593 100644 +index d2ae14d0b..7b3bea56d 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -156,8 +156,9 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp, bool may_sleep) @@ -13048,10 +12784,10 @@ index d2ae14d0b9e5..7b3bea56d593 100644 /* if @may_sleep, play nice and yield if necessary */ if (may_sleep && (need_resched() || diff --git a/kernel/cpu.c b/kernel/cpu.c -index c06ced18f78a..10b6287afe97 100644 +index 9eedba9ac..17f106ef2 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c -@@ -1662,7 +1662,7 @@ static struct cpuhp_step cpuhp_hp_states[] = { +@@ -1687,7 +1687,7 @@ static struct cpuhp_step cpuhp_hp_states[] = { .name = "ap:online", }, /* @@ -13060,7 +12796,7 @@ index c06ced18f78a..10b6287afe97 100644 * this itself. */ [CPUHP_TEARDOWN_CPU] = { -@@ -1671,6 +1671,13 @@ static struct cpuhp_step cpuhp_hp_states[] = { +@@ -1696,6 +1696,13 @@ static struct cpuhp_step cpuhp_hp_states[] = { .teardown.single = takedown_cpu, .cant_stop = true, }, @@ -13075,7 +12811,7 @@ index c06ced18f78a..10b6287afe97 100644 [CPUHP_AP_SMPBOOT_THREADS] = { .name = "smpboot/threads:online", diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c -index 4e09fab52faf..1f5c577b926e 100644 +index 4e09fab52..1f5c577b9 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -2157,7 +2157,7 @@ static int kdb_dmesg(int argc, const char **argv) @@ -13110,7 +12846,7 @@ index 4e09fab52faf..1f5c577b926e 100644 skip--; continue; diff --git a/kernel/entry/common.c b/kernel/entry/common.c -index a028b28daed5..382c0284a07f 100644 +index a028b28da..382c0284a 100644 --- a/kernel/entry/common.c +++ b/kernel/entry/common.c @@ -2,6 +2,7 @@ @@ -13158,7 +12894,7 @@ index a028b28daed5..382c0284a07f 100644 } } diff --git a/kernel/exit.c b/kernel/exit.c -index 26a81ea63156..c15ca545011a 100644 +index 26a81ea63..c15ca5450 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -153,7 +153,7 @@ static void __exit_signal(struct task_struct *tsk) @@ -13171,7 +12907,7 @@ index 26a81ea63156..c15ca545011a 100644 spin_unlock(&sighand->siglock); diff --git a/kernel/fork.c b/kernel/fork.c -index f0aa2da990b8..627f3d35cc0e 100644 +index 2547c6a6e..fd07bda90 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -42,6 +42,7 @@ @@ -13191,7 +12927,7 @@ index f0aa2da990b8..627f3d35cc0e 100644 return; } #endif -@@ -696,6 +697,19 @@ void __mmdrop(struct mm_struct *mm) +@@ -699,6 +700,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); @@ -13211,7 +12947,7 @@ index f0aa2da990b8..627f3d35cc0e 100644 static void mmdrop_async_fn(struct work_struct *work) { struct mm_struct *mm; -@@ -737,6 +751,15 @@ void __put_task_struct(struct task_struct *tsk) +@@ -740,6 +754,15 @@ void __put_task_struct(struct task_struct *tsk) WARN_ON(refcount_read(&tsk->usage)); WARN_ON(tsk == current); @@ -13227,7 +12963,7 @@ index f0aa2da990b8..627f3d35cc0e 100644 io_uring_free(tsk); cgroup_free(tsk); task_numa_free(tsk, true); -@@ -954,11 +977,13 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) +@@ -961,11 +984,13 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) tsk->task_frag.page = NULL; tsk->wake_q.next = NULL; tsk->pf_io_worker = NULL; @@ -13241,7 +12977,7 @@ index f0aa2da990b8..627f3d35cc0e 100644 #ifdef CONFIG_FAULT_INJECTION tsk->fail_nth = 0; #endif -@@ -2082,6 +2107,7 @@ static __latent_entropy struct task_struct *copy_process( +@@ -2102,6 +2127,7 @@ static __latent_entropy struct task_struct *copy_process( spin_lock_init(&p->alloc_lock); init_sigpending(&p->pending); @@ -13249,10 +12985,10 @@ index f0aa2da990b8..627f3d35cc0e 100644 p->utime = p->stime = p->gtime = 0; #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME -diff --git a/kernel/futex.c b/kernel/futex.c -index 98a6e1b80bfe..b2b275bc1958 100644 ---- a/kernel/futex.c -+++ b/kernel/futex.c +diff --git a/kernel/futex/core.c b/kernel/futex/core.c +index 8dd0bc50a..8056aa077 100644 +--- a/kernel/futex/core.c ++++ b/kernel/futex/core.c @@ -1498,6 +1498,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ struct task_struct *new_owner; bool postunlock = false; @@ -13419,7 +13155,7 @@ index 98a6e1b80bfe..b2b275bc1958 100644 ret = 0; diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c -index 8806444a6855..acbce92f99b8 100644 +index 8806444a6..acbce92f9 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -193,9 +193,17 @@ irqreturn_t handle_irq_event_percpu(struct irq_desc *desc) @@ -13441,7 +13177,7 @@ index 8806444a6855..acbce92f99b8 100644 if (!noirqdebug) note_interrupt(desc, retval); diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index 239f5084bfb2..bc59cb61fbe9 100644 +index 239f5084b..bc59cb61f 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1302,6 +1302,8 @@ static int irq_thread(void *data) @@ -13489,7 +13225,7 @@ index 239f5084bfb2..bc59cb61fbe9 100644 */ int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c -index f865e5f4d382..dc7311dd74b1 100644 +index f865e5f4d..dc7311dd7 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c @@ -443,6 +443,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true"); @@ -13515,7 +13251,7 @@ index f865e5f4d382..dc7311dd74b1 100644 printk(KERN_WARNING "Misrouted IRQ fixup and polling support " "enabled\n"); diff --git a/kernel/irq_work.c b/kernel/irq_work.c -index fbff25adb574..d3466e3bacc1 100644 +index fbff25adb..d3466e3ba 100644 --- a/kernel/irq_work.c +++ b/kernel/irq_work.c @@ -18,11 +18,36 @@ @@ -13718,7 +13454,7 @@ index fbff25adb574..d3466e3bacc1 100644 +} +early_initcall(irq_work_init_threads); diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c -index b9a6f4658f89..c26219f34445 100644 +index b9a6f4658..c26219f34 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -984,7 +984,6 @@ void crash_kexec(struct pt_regs *regs) @@ -13730,7 +13466,7 @@ index b9a6f4658f89..c26219f34445 100644 /* diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c -index 35859da8bd4f..dfff31ed644a 100644 +index 35859da8b..dfff31ed6 100644 --- a/kernel/ksysfs.c +++ b/kernel/ksysfs.c @@ -138,6 +138,15 @@ KERNEL_ATTR_RO(vmcoreinfo); @@ -13760,7 +13496,7 @@ index 35859da8bd4f..dfff31ed644a 100644 NULL }; diff --git a/kernel/kthread.c b/kernel/kthread.c -index 508fe5278285..3ce6a31db7b4 100644 +index 508fe5278..3ce6a31db 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -264,6 +264,7 @@ EXPORT_SYMBOL_GPL(kthread_parkme); @@ -13808,7 +13544,7 @@ index 508fe5278285..3ce6a31db7b4 100644 kfree(create); return task; diff --git a/kernel/locking/Makefile b/kernel/locking/Makefile -index 6d11cfb9b41f..c7fbf737e16e 100644 +index 6d11cfb9b..c7fbf737e 100644 --- a/kernel/locking/Makefile +++ b/kernel/locking/Makefile @@ -3,7 +3,7 @@ @@ -13847,7 +13583,7 @@ index 6d11cfb9b41f..c7fbf737e16e 100644 obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o obj-$(CONFIG_WW_MUTEX_SELFTEST) += test-ww_mutex.o diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index 6cbd2b444476..f2f5defaf4e7 100644 +index 6cbd2b444..f2f5defaf 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -5413,6 +5413,7 @@ static noinstr void check_flags(unsigned long flags) @@ -13868,7 +13604,7 @@ index 6cbd2b444476..f2f5defaf4e7 100644 print_irqtrace_events(current); diff --git a/kernel/locking/mutex-rt.c b/kernel/locking/mutex-rt.c new file mode 100644 -index 000000000000..2b849e6b9b4a +index 000000000..2b849e6b9 --- /dev/null +++ b/kernel/locking/mutex-rt.c @@ -0,0 +1,224 @@ @@ -14097,7 +13833,7 @@ index 000000000000..2b849e6b9b4a +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); diff --git a/kernel/locking/rtmutex-debug.c b/kernel/locking/rtmutex-debug.c -index 36e69100e8e0..fb150100335f 100644 +index 36e69100e..fb1501003 100644 --- a/kernel/locking/rtmutex-debug.c +++ b/kernel/locking/rtmutex-debug.c @@ -32,110 +32,12 @@ @@ -14236,7 +13972,7 @@ index 36e69100e8e0..fb150100335f 100644 } - diff --git a/kernel/locking/rtmutex-debug.h b/kernel/locking/rtmutex-debug.h -index fc549713bba3..659e93e256c6 100644 +index fc549713b..659e93e25 100644 --- a/kernel/locking/rtmutex-debug.h +++ b/kernel/locking/rtmutex-debug.h @@ -18,20 +18,9 @@ extern void debug_rt_mutex_unlock(struct rt_mutex *lock); @@ -14261,7 +13997,7 @@ index fc549713bba3..659e93e256c6 100644 - debug_rt_mutex_print_deadlock(w); -} diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c -index a82d1176e7c6..8fb8662160dd 100644 +index a82d1176e..8fb866216 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -8,6 +8,11 @@ @@ -15613,7 +15349,7 @@ index a82d1176e7c6..8fb8662160dd 100644 +EXPORT_SYMBOL(__rt_mutex_owner_current); +#endif diff --git a/kernel/locking/rtmutex.h b/kernel/locking/rtmutex.h -index 732f96abf462..338ccd29119a 100644 +index 732f96abf..338ccd291 100644 --- a/kernel/locking/rtmutex.h +++ b/kernel/locking/rtmutex.h @@ -19,15 +19,8 @@ @@ -15633,7 +15369,7 @@ index 732f96abf462..338ccd29119a 100644 enum rtmutex_chainwalk walk) { diff --git a/kernel/locking/rtmutex_common.h b/kernel/locking/rtmutex_common.h -index ca6fb489007b..248a7d91583b 100644 +index ca6fb4890..248a7d915 100644 --- a/kernel/locking/rtmutex_common.h +++ b/kernel/locking/rtmutex_common.h @@ -15,6 +15,7 @@ @@ -15707,7 +15443,7 @@ index ca6fb489007b..248a7d91583b 100644 # include "rtmutex-debug.h" diff --git a/kernel/locking/rwlock-rt.c b/kernel/locking/rwlock-rt.c new file mode 100644 -index 000000000000..3d2d1f14b513 +index 000000000..3d2d1f14b --- /dev/null +++ b/kernel/locking/rwlock-rt.c @@ -0,0 +1,334 @@ @@ -16047,7 +15783,7 @@ index 000000000000..3d2d1f14b513 +EXPORT_SYMBOL(__rt_rwlock_init); diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c new file mode 100644 -index 000000000000..b61edc4dcb73 +index 000000000..b61edc4dc --- /dev/null +++ b/kernel/locking/rwsem-rt.c @@ -0,0 +1,317 @@ @@ -16369,7 +16105,7 @@ index 000000000000..b61edc4dcb73 + __up_write_unlock(sem, WRITER_BIAS - 1, flags); +} diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c -index cc5cc889b5b7..f7c909ef1261 100644 +index 976b20b2d..51e1085e4 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -28,6 +28,7 @@ @@ -16380,7 +16116,7 @@ index cc5cc889b5b7..f7c909ef1261 100644 #include "lock_events.h" /* -@@ -1494,6 +1495,7 @@ static inline void __downgrade_write(struct rw_semaphore *sem) +@@ -1512,6 +1513,7 @@ static inline void __downgrade_write(struct rw_semaphore *sem) if (tmp & RWSEM_FLAG_WAITERS) rwsem_downgrade_wake(sem); } @@ -16388,7 +16124,7 @@ index cc5cc889b5b7..f7c909ef1261 100644 /* * lock for reading -@@ -1657,7 +1659,9 @@ void down_read_non_owner(struct rw_semaphore *sem) +@@ -1675,7 +1677,9 @@ void down_read_non_owner(struct rw_semaphore *sem) { might_sleep(); __down_read(sem); @@ -16398,7 +16134,7 @@ index cc5cc889b5b7..f7c909ef1261 100644 } EXPORT_SYMBOL(down_read_non_owner); -@@ -1686,7 +1690,9 @@ EXPORT_SYMBOL(down_write_killable_nested); +@@ -1704,7 +1708,9 @@ EXPORT_SYMBOL(down_write_killable_nested); void up_read_non_owner(struct rw_semaphore *sem) { @@ -16409,7 +16145,7 @@ index cc5cc889b5b7..f7c909ef1261 100644 } EXPORT_SYMBOL(up_read_non_owner); diff --git a/kernel/locking/spinlock.c b/kernel/locking/spinlock.c -index 0ff08380f531..45445a2f1799 100644 +index 0ff08380f..45445a2f1 100644 --- a/kernel/locking/spinlock.c +++ b/kernel/locking/spinlock.c @@ -124,8 +124,11 @@ void __lockfunc __raw_##op##_lock_bh(locktype##_t *lock) \ @@ -16443,7 +16179,7 @@ index 0ff08380f531..45445a2f1799 100644 void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) diff --git a/kernel/locking/spinlock_debug.c b/kernel/locking/spinlock_debug.c -index b9d93087ee66..72e306e0e8a3 100644 +index b9d93087e..72e306e0e 100644 --- a/kernel/locking/spinlock_debug.c +++ b/kernel/locking/spinlock_debug.c @@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, @@ -16477,7 +16213,7 @@ index b9d93087ee66..72e306e0e8a3 100644 + +#endif diff --git a/kernel/notifier.c b/kernel/notifier.c -index 1b019cbca594..c20782f07643 100644 +index 1b019cbca..c20782f07 100644 --- a/kernel/notifier.c +++ b/kernel/notifier.c @@ -142,9 +142,9 @@ int atomic_notifier_chain_register(struct atomic_notifier_head *nh, @@ -16517,10 +16253,10 @@ index 1b019cbca594..c20782f07643 100644 return ret; } diff --git a/kernel/panic.c b/kernel/panic.c -index d991c3b1b559..fa3025e0c601 100644 +index 2005a2029..9a7c9fd7c 100644 --- a/kernel/panic.c +++ b/kernel/panic.c -@@ -177,12 +177,28 @@ static void panic_print_sys_info(void) +@@ -241,11 +241,26 @@ void check_panic_on_warn(const char *origin) void panic(const char *fmt, ...) { static char buf[1024]; @@ -16530,7 +16266,6 @@ index d991c3b1b559..fa3025e0c601 100644 int state = 0; int old_cpu, this_cpu; bool _crash_kexec_post_notifiers = crash_kexec_post_notifiers; - + console_verbose(); + pr_emerg("Kernel panic - not syncing:\n"); + va_start(args2, fmt); @@ -16545,11 +16280,10 @@ index d991c3b1b559..fa3025e0c601 100644 + dump_stack(); +#endif + pr_flush(1000, true); -+ - /* - * Disable local interrupts. This will prevent panic_smp_self_stop - * from deadlocking the first cpu that invokes the panic, since -@@ -213,24 +229,13 @@ void panic(const char *fmt, ...) + + if (panic_on_warn) { + /* +@@ -287,24 +302,13 @@ void panic(const char *fmt, ...) if (old_cpu != PANIC_CPU_INVALID && old_cpu != this_cpu) panic_smp_self_stop(); @@ -16574,7 +16308,7 @@ index d991c3b1b559..fa3025e0c601 100644 /* * If kgdb is enabled, give it a chance to run before we stop all * the other CPUs or else we won't be able to debug processes left -@@ -247,7 +252,6 @@ void panic(const char *fmt, ...) +@@ -321,7 +325,6 @@ void panic(const char *fmt, ...) * Bypass the panic_cpu check and call __crash_kexec directly. */ if (!_crash_kexec_post_notifiers) { @@ -16582,7 +16316,7 @@ index d991c3b1b559..fa3025e0c601 100644 __crash_kexec(NULL); /* -@@ -298,8 +302,6 @@ void panic(const char *fmt, ...) +@@ -372,8 +375,6 @@ void panic(const char *fmt, ...) */ atomic_notifier_call_chain(&panic_notifier_list, 0, buf); @@ -16591,7 +16325,7 @@ index d991c3b1b559..fa3025e0c601 100644 kmsg_dump(KMSG_DUMP_PANIC); /* -@@ -569,9 +571,11 @@ static u64 oops_id; +@@ -643,9 +644,11 @@ static u64 oops_id; static int init_oops_id(void) { @@ -16603,7 +16337,7 @@ index d991c3b1b559..fa3025e0c601 100644 oops_id++; return 0; -@@ -582,6 +586,7 @@ static void print_oops_end_marker(void) +@@ -656,6 +659,7 @@ static void print_oops_end_marker(void) { init_oops_id(); pr_warn("---[ end trace %016llx ]---\n", (unsigned long long)oops_id); @@ -16612,7 +16346,7 @@ index d991c3b1b559..fa3025e0c601 100644 /* diff --git a/kernel/printk/Makefile b/kernel/printk/Makefile -index eee3dc9b60a9..59cb24e25f00 100644 +index eee3dc9b6..59cb24e25 100644 --- a/kernel/printk/Makefile +++ b/kernel/printk/Makefile @@ -1,5 +1,4 @@ @@ -16622,7 +16356,7 @@ index eee3dc9b60a9..59cb24e25f00 100644 obj-$(CONFIG_A11Y_BRAILLE_CONSOLE) += braille.o obj-$(CONFIG_PRINTK) += printk_ringbuffer.o diff --git a/kernel/printk/internal.h b/kernel/printk/internal.h -index b1c155328b04..059c3d876e33 100644 +index b1c155328..059c3d876 100644 --- a/kernel/printk/internal.h +++ b/kernel/printk/internal.h @@ -12,8 +12,6 @@ @@ -16650,7 +16384,7 @@ index b1c155328b04..059c3d876e33 100644 static inline bool printk_percpu_data_ready(void) { return false; } #endif /* CONFIG_PRINTK */ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index ecd28d4fa20e..e95b00f24c75 100644 +index ecd28d4fa..e95b00f24 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -44,6 +44,9 @@ @@ -18973,7 +18707,7 @@ index ecd28d4fa20e..e95b00f24c75 100644 +} +EXPORT_SYMBOL(pr_flush); diff --git a/kernel/printk/printk_safe.c b/kernel/printk/printk_safe.c -index b774685ccf80..218e42566550 100644 +index b774685cc..218e42566 100644 --- a/kernel/printk/printk_safe.c +++ b/kernel/printk/printk_safe.c @@ -15,295 +15,9 @@ @@ -19368,7 +19102,7 @@ index b774685ccf80..218e42566550 100644 - printk_safe_flush(); -} diff --git a/kernel/ptrace.c b/kernel/ptrace.c -index 6d82fba43c97..8a65ec16c512 100644 +index 6d82fba43..8a65ec16c 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -197,7 +197,14 @@ static bool ptrace_freeze_traced(struct task_struct *task) @@ -19425,7 +19159,7 @@ index 6d82fba43c97..8a65ec16c512 100644 } diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig -index b1d7aef10e6a..5e11e30f45eb 100644 +index b1d7aef10..5e11e30f4 100644 --- a/kernel/rcu/Kconfig +++ b/kernel/rcu/Kconfig @@ -190,8 +190,8 @@ config RCU_FAST_NO_HZ @@ -19440,7 +19174,7 @@ index b1d7aef10e6a..5e11e30f45eb 100644 This option boosts the priority of preempted RCU readers that block the current preemptible RCU grace period for too long. diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index 4d20763aea33..c85b881c99d9 100644 +index e1bbde264..c77b9873c 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -100,8 +100,10 @@ static struct rcu_state rcu_state = { @@ -19456,7 +19190,7 @@ index 4d20763aea33..c85b881c99d9 100644 static bool rcu_fanout_exact; module_param(rcu_fanout_exact, bool, 0444); diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c -index 849f0aa99333..dd94a602a6d2 100644 +index 849f0aa99..dd94a602a 100644 --- a/kernel/rcu/update.c +++ b/kernel/rcu/update.c @@ -56,8 +56,10 @@ @@ -19472,7 +19206,7 @@ index 849f0aa99333..dd94a602a6d2 100644 #ifdef CONFIG_DEBUG_LOCK_ALLOC diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a2ea3b0ab334..e7a295c4fd0a 100644 +index 468427a25..4f7610fd6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -65,7 +65,11 @@ const_debug unsigned int sysctl_sched_features = @@ -19823,11 +19557,11 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 + if (pending) + pending->stop_pending = false; + task_rq_unlock(rq, p, &rf); - -- local_irq_enable(); ++ + if (complete) + complete_all(&pending->done); -+ + +- local_irq_enable(); + return 0; +} + @@ -20379,7 +20113,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 static void ttwu_stat(struct task_struct *p, int cpu, int wake_flags) -@@ -3203,7 +3744,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) +@@ -3220,7 +3761,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) int cpu, success = 0; preempt_disable(); @@ -20388,7 +20122,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /* * We're waking current, this means 'p->on_rq' and 'task_cpu(p) * == smp_processor_id()'. Together this means we can special -@@ -3233,8 +3774,26 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) +@@ -3250,8 +3791,26 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) */ raw_spin_lock_irqsave(&p->pi_lock, flags); smp_mb__after_spinlock(); @@ -20416,7 +20150,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 trace_sched_waking(p); -@@ -3423,6 +3982,18 @@ int wake_up_process(struct task_struct *p) +@@ -3440,6 +3999,18 @@ int wake_up_process(struct task_struct *p) } EXPORT_SYMBOL(wake_up_process); @@ -20435,7 +20169,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 int wake_up_state(struct task_struct *p, unsigned int state) { return try_to_wake_up(p, state, 0); -@@ -3476,6 +4047,7 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) +@@ -3493,6 +4064,7 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) init_numa_balancing(clone_flags, p); #ifdef CONFIG_SMP p->wake_entry.u_flags = CSD_TYPE_TTWU; @@ -20443,7 +20177,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #endif #ifdef CONFIG_BPF_SCHED p->tag = 0; -@@ -3684,6 +4256,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) +@@ -3712,6 +4284,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) p->on_cpu = 0; #endif init_task_preempt_count(p); @@ -20453,13 +20187,14 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_SMP plist_node_init(&p->pushable_tasks, MAX_PRIO); RB_CLEAR_NODE(&p->pushable_dl_tasks); -@@ -3854,59 +4429,143 @@ __fire_sched_out_preempt_notifiers(struct task_struct *curr, +@@ -3882,60 +4457,145 @@ __fire_sched_out_preempt_notifiers(struct task_struct *curr, notifier->ops->sched_out(notifier, next); } -static __always_inline void -fire_sched_out_preempt_notifiers(struct task_struct *curr, - struct task_struct *next) ++ +static __always_inline void +fire_sched_out_preempt_notifiers(struct task_struct *curr, + struct task_struct *next) @@ -20604,7 +20339,8 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 - * Claim the task as running, we do this before switching to it - * such that any running task will have this set. - * -- * See the ttwu() WF_ON_CPU case and its ordering comment. +- * See the smp_load_acquire(&p->on_cpu) case in ttwu() and +- * its ordering comment. - */ - WRITE_ONCE(next->on_cpu, 1); -#endif @@ -20630,11 +20366,12 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 } +#endif ++ + static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next, struct rq_flags *rf) { -@@ -3947,6 +4606,22 @@ static inline void finish_lock_switch(struct rq *rq) +@@ -3976,6 +4636,22 @@ static inline void finish_lock_switch(struct rq *rq) # define finish_arch_post_lock_switch() do { } while (0) #endif @@ -20657,7 +20394,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /** * prepare_task_switch - prepare to switch tasks * @rq: the runqueue preparing to switch -@@ -3969,6 +4644,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev, +@@ -3998,6 +4674,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev, perf_event_task_sched_out(prev, next); rseq_preempt(prev); fire_sched_out_preempt_notifiers(prev, next); @@ -20665,7 +20402,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 prepare_task(next); prepare_arch_switch(next); } -@@ -4036,6 +4712,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) +@@ -4065,6 +4742,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) finish_lock_switch(rq); finish_arch_post_lock_switch(); kcov_finish_switch(current); @@ -20673,7 +20410,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 fire_sched_in_preempt_notifiers(current); /* -@@ -4052,63 +4729,19 @@ static struct rq *finish_task_switch(struct task_struct *prev) +@@ -4081,63 +4759,19 @@ static struct rq *finish_task_switch(struct task_struct *prev) */ if (mm) { membarrier_mm_sync_core_before_usermode(mm); @@ -20738,7 +20475,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /** * schedule_tail - first thing a freshly forked thread must call. -@@ -4129,7 +4762,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev) +@@ -4158,7 +4792,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev) */ rq = finish_task_switch(prev); @@ -20746,7 +20483,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 preempt_enable(); if (current->set_child_tid) -@@ -5286,7 +5918,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) +@@ -5314,7 +5947,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) * * WARNING: must be called with preemption disabled! */ @@ -20755,7 +20492,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 { struct task_struct *prev, *next; unsigned long *switch_count; -@@ -5339,7 +5971,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5367,7 +6000,7 @@ static void __sched notrace __schedule(bool preempt) * - ptrace_{,un}freeze_traced() can change ->state underneath us. */ prev_state = prev->state; @@ -20764,7 +20501,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 if (signal_pending_state(prev_state, prev)) { prev->state = TASK_RUNNING; } else { -@@ -5374,6 +6006,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5402,6 +6035,7 @@ static void __sched notrace __schedule(bool preempt) next = pick_next_task(rq, prev, &rf); clear_tsk_need_resched(prev); @@ -20772,7 +20509,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 clear_preempt_need_resched(); if (likely(prev != next)) { -@@ -5399,6 +6032,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5427,6 +6061,7 @@ static void __sched notrace __schedule(bool preempt) */ ++*switch_count; @@ -20780,7 +20517,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 psi_sched_switch(prev, next, !task_on_rq_queued(prev)); trace_sched_switch(preempt, prev, next); -@@ -5407,10 +6041,11 @@ static void __sched notrace __schedule(bool preempt) +@@ -5435,10 +6070,11 @@ static void __sched notrace __schedule(bool preempt) rq = context_switch(rq, prev, next, &rf); } else { rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP); @@ -20795,7 +20532,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 } void __noreturn do_task_dead(void) -@@ -5421,7 +6056,7 @@ void __noreturn do_task_dead(void) +@@ -5449,7 +6085,7 @@ void __noreturn do_task_dead(void) /* Tell freezer to ignore us: */ current->flags |= PF_NOFREEZE; @@ -20804,7 +20541,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 BUG(); /* Avoid "noreturn function does return" - but don't continue if BUG() is a NOP: */ -@@ -5454,9 +6089,6 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -5482,9 +6118,6 @@ static inline void sched_submit_work(struct task_struct *tsk) preempt_enable_no_resched(); } @@ -20814,7 +20551,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /* * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. -@@ -5482,7 +6114,7 @@ asmlinkage __visible void __sched schedule(void) +@@ -5510,7 +6143,7 @@ asmlinkage __visible void __sched schedule(void) sched_submit_work(tsk); do { preempt_disable(); @@ -20823,7 +20560,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 sched_preempt_enable_no_resched(); } while (need_resched()); sched_update_worker(tsk); -@@ -5510,7 +6142,7 @@ void __sched schedule_idle(void) +@@ -5538,7 +6171,7 @@ void __sched schedule_idle(void) */ WARN_ON_ONCE(current->state); do { @@ -20832,7 +20569,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 } while (need_resched()); } -@@ -5563,7 +6195,7 @@ static void __sched notrace preempt_schedule_common(void) +@@ -5591,7 +6224,7 @@ static void __sched notrace preempt_schedule_common(void) */ preempt_disable_notrace(); preempt_latency_start(1); @@ -20841,7 +20578,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 preempt_latency_stop(1); preempt_enable_no_resched_notrace(); -@@ -5574,6 +6206,30 @@ static void __sched notrace preempt_schedule_common(void) +@@ -5602,6 +6235,30 @@ static void __sched notrace preempt_schedule_common(void) } while (need_resched()); } @@ -20872,7 +20609,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_PREEMPTION /* * This is the entry point to schedule() from in-kernel preemption -@@ -5587,12 +6243,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) +@@ -5615,12 +6272,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) */ if (likely(!preemptible())) return; @@ -20900,7 +20637,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_PREEMPT_DYNAMIC DEFINE_STATIC_CALL(preempt_schedule, __preempt_schedule_func); EXPORT_STATIC_CALL(preempt_schedule); -@@ -5620,6 +6290,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) +@@ -5648,6 +6319,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) if (likely(!preemptible())) return; @@ -20910,7 +20647,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 do { /* * Because the function tracer can trace preempt_count_sub() -@@ -5642,7 +6315,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) +@@ -5670,7 +6344,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) * an infinite recursion. */ prev_ctx = exception_enter(); @@ -20919,7 +20656,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 exception_exit(prev_ctx); preempt_latency_stop(1); -@@ -5860,7 +6533,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) +@@ -5888,7 +6562,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) do { preempt_disable(); local_irq_enable(); @@ -20928,7 +20665,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 local_irq_disable(); sched_preempt_enable_no_resched(); } while (need_resched()); -@@ -6026,9 +6699,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) +@@ -6054,9 +6728,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) out_unlock: /* Avoid rq from going away on us: */ preempt_disable(); @@ -20942,7 +20679,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 preempt_enable(); } #else -@@ -6271,6 +6946,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6299,6 +6975,7 @@ static int __sched_setscheduler(struct task_struct *p, int oldpolicy = -1, policy = attr->sched_policy; int retval, oldprio, newprio, queued, running; const struct sched_class *prev_class; @@ -20950,7 +20687,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 struct rq_flags rf; int reset_on_fork; int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK; -@@ -6525,6 +7201,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6553,6 +7230,7 @@ static int __sched_setscheduler(struct task_struct *p, /* Avoid rq from going away on us: */ preempt_disable(); @@ -20958,7 +20695,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 task_rq_unlock(rq, p, &rf); if (pi) { -@@ -6533,7 +7210,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6561,7 +7239,7 @@ static int __sched_setscheduler(struct task_struct *p, } /* Run balance callbacks after we've adjusted the PI chain: */ @@ -20967,7 +20704,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 preempt_enable(); return 0; -@@ -7028,7 +7705,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) +@@ -7056,7 +7734,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) } #endif again: @@ -20976,7 +20713,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 if (!retval) { cpuset_cpus_allowed(p, cpus_allowed); -@@ -7614,7 +8291,7 @@ void __init init_idle(struct task_struct *idle, int cpu) +@@ -7642,7 +8320,7 @@ void __init init_idle(struct task_struct *idle, int cpu) * * And since this is boot we can forgo the serialization. */ @@ -20985,7 +20722,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #endif /* * We're having a chicken and egg problem, even though we are -@@ -7641,7 +8318,9 @@ void __init init_idle(struct task_struct *idle, int cpu) +@@ -7669,7 +8347,9 @@ void __init init_idle(struct task_struct *idle, int cpu) /* Set the preempt count _outside_ the spinlocks! */ init_idle_preempt_count(idle, cpu); @@ -20996,7 +20733,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /* * The idle tasks have their own, simple scheduling class: */ -@@ -7751,6 +8430,7 @@ void sched_setnuma(struct task_struct *p, int nid) +@@ -7779,6 +8459,7 @@ void sched_setnuma(struct task_struct *p, int nid) #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_HOTPLUG_CPU @@ -21004,7 +20741,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 /* * Ensure that the idle task is using init_mm right before its CPU goes * offline. -@@ -7770,119 +8450,126 @@ void idle_task_exit(void) +@@ -7798,119 +8479,126 @@ void idle_task_exit(void) /* finish_cpu(), as ran on the BP, will clean up the active_mm state */ } @@ -21221,7 +20958,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #endif /* CONFIG_HOTPLUG_CPU */ void set_rq_online(struct rq *rq) -@@ -7970,6 +8657,8 @@ int sched_cpu_activate(unsigned int cpu) +@@ -7998,6 +8686,8 @@ int sched_cpu_activate(unsigned int cpu) struct rq *rq = cpu_rq(cpu); struct rq_flags rf; @@ -21230,7 +20967,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_SCHED_SMT /* * When going up, increment the number of cores with SMT present. -@@ -8005,6 +8694,8 @@ int sched_cpu_activate(unsigned int cpu) +@@ -8033,6 +8723,8 @@ int sched_cpu_activate(unsigned int cpu) int sched_cpu_deactivate(unsigned int cpu) { @@ -21239,7 +20976,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 int ret; set_cpu_active(cpu, false); -@@ -8017,6 +8708,16 @@ int sched_cpu_deactivate(unsigned int cpu) +@@ -8045,6 +8737,16 @@ int sched_cpu_deactivate(unsigned int cpu) */ synchronize_rcu(); @@ -21256,15 +20993,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_SCHED_SMT /* * When going down, decrement the number of cores with SMT present. -@@ -8032,6 +8733,7 @@ int sched_cpu_deactivate(unsigned int cpu) - - ret = cpuset_cpu_inactive(cpu); - if (ret) { -+ balance_push_set(cpu, false); - set_cpu_active(cpu, true); - return ret; - } -@@ -8056,6 +8758,41 @@ int sched_cpu_starting(unsigned int cpu) +@@ -8088,6 +8790,41 @@ int sched_cpu_starting(unsigned int cpu) } #ifdef CONFIG_HOTPLUG_CPU @@ -21306,7 +21035,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 int sched_cpu_dying(unsigned int cpu) { struct rq *rq = cpu_rq(cpu); -@@ -8065,12 +8802,7 @@ int sched_cpu_dying(unsigned int cpu) +@@ -8097,12 +8834,7 @@ int sched_cpu_dying(unsigned int cpu) sched_tick_stop(cpu); rq_lock_irqsave(rq, &rf); @@ -21320,7 +21049,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 rq_unlock_irqrestore(rq, &rf); calc_load_migrate(rq); -@@ -8281,6 +9013,9 @@ void __init sched_init(void) +@@ -8320,6 +9052,9 @@ void __init sched_init(void) INIT_CSD(&rq->nohz_csd, nohz_csd_func, rq); #endif @@ -21330,7 +21059,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #endif /* CONFIG_SMP */ hrtick_rq_init(rq); atomic_set(&rq->nr_iowait, 0); -@@ -8331,7 +9066,7 @@ void __init sched_init(void) +@@ -8370,7 +9105,7 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { @@ -21339,7 +21068,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 return (nested == preempt_offset); } -@@ -8428,6 +9163,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset) +@@ -8467,6 +9202,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset) add_taint(TAINT_WARN, LOCKDEP_STILL_OK); } EXPORT_SYMBOL_GPL(__cant_sleep); @@ -21380,7 +21109,7 @@ index a2ea3b0ab334..e7a295c4fd0a 100644 #ifdef CONFIG_MAGIC_SYSRQ diff --git a/kernel/sched/cpudeadline.c b/kernel/sched/cpudeadline.c -index 8cb06c8c7eb1..ceb03d76c0cc 100644 +index 8cb06c8c7..ceb03d76c 100644 --- a/kernel/sched/cpudeadline.c +++ b/kernel/sched/cpudeadline.c @@ -120,7 +120,7 @@ int cpudl_find(struct cpudl *cp, struct task_struct *p, @@ -21402,7 +21131,7 @@ index 8cb06c8c7eb1..ceb03d76c0cc 100644 if (later_mask) cpumask_set_cpu(best_cpu, later_mask); diff --git a/kernel/sched/cpupri.c b/kernel/sched/cpupri.c -index 0033731a0797..11c4df2010de 100644 +index 0033731a0..11c4df201 100644 --- a/kernel/sched/cpupri.c +++ b/kernel/sched/cpupri.c @@ -73,11 +73,11 @@ static inline int __cpupri_find(struct cpupri *cp, struct task_struct *p, @@ -21420,7 +21149,7 @@ index 0033731a0797..11c4df2010de 100644 /* * We have to ensure that we have at least one bit diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c -index ca0eef7d3852..02a5aa60fe7e 100644 +index ca0eef7d3..02a5aa60f 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -44,12 +44,13 @@ static void irqtime_account_delta(struct irqtime *irqtime, u64 delta, @@ -21499,7 +21228,7 @@ index ca0eef7d3852..02a5aa60fe7e 100644 void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev, u64 *ut, u64 *st) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index c4c0d760d252..14252d5be166 100644 +index c4c0d760d..14252d5be 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -551,7 +551,7 @@ static int push_dl_task(struct rq *rq); @@ -21639,10 +21368,10 @@ index c4c0d760d252..14252d5be166 100644 .task_tick = task_tick_dl, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index d3c4b945c019..602bacf33e5d 100644 +index b8bf7acb9..1dcf17497 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4467,7 +4467,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4673,7 +4673,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) #endif if (delta_exec > ideal_runtime) { @@ -21651,7 +21380,7 @@ index d3c4b945c019..602bacf33e5d 100644 /* * The current task ran long enough, ensure it doesn't get * re-elected due to buddy favours. -@@ -4491,7 +4491,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4697,7 +4697,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) return; if (delta > ideal_runtime) @@ -21660,7 +21389,7 @@ index d3c4b945c019..602bacf33e5d 100644 } static void -@@ -4634,7 +4634,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -4840,7 +4840,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -21669,7 +21398,7 @@ index d3c4b945c019..602bacf33e5d 100644 return; } /* -@@ -4783,7 +4783,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -4989,7 +4989,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -21678,7 +21407,7 @@ index d3c4b945c019..602bacf33e5d 100644 } static __always_inline -@@ -5543,7 +5543,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -5783,7 +5783,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (rq->curr == p) @@ -21687,7 +21416,7 @@ index d3c4b945c019..602bacf33e5d 100644 return; } hrtick_start(rq, delta); -@@ -7267,7 +7267,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -7705,7 +7705,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -21696,7 +21425,7 @@ index d3c4b945c019..602bacf33e5d 100644 /* * Only set the backward buddy when the current task is still * on the rq. This can happen when a wakeup gets interleaved -@@ -11938,7 +11938,7 @@ static void task_fork_fair(struct task_struct *p) +@@ -12578,7 +12578,7 @@ static void task_fork_fair(struct task_struct *p) * 'current' within the tree based on its new key value. */ swap(curr->vruntime, se->vruntime); @@ -21705,7 +21434,7 @@ index d3c4b945c019..602bacf33e5d 100644 } se->vruntime -= cfs_rq->min_vruntime; -@@ -11965,7 +11965,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -12605,7 +12605,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (rq->curr == p) { if (p->prio > oldprio) @@ -21715,7 +21444,7 @@ index d3c4b945c019..602bacf33e5d 100644 check_preempt_curr(rq, p, 0); } diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index fef48f5be2fa..f8a556887472 100644 +index 76fade025..0a20427ef 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h @@ -45,11 +45,19 @@ SCHED_FEAT(DOUBLE_TICK, false) @@ -21739,7 +21468,7 @@ index fef48f5be2fa..f8a556887472 100644 /* * When doing wakeups, attempt to limit superfluous scans of the LLC domain. diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 0f349d8d076d..9cfb0948ea06 100644 +index ca868c04f..9798149b5 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -270,7 +270,7 @@ static void pull_rt_task(struct rq *this_rq); @@ -21838,7 +21567,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 if (WARN_ON(next_task == rq->curr)) return 0; -@@ -1944,12 +1977,10 @@ static int push_rt_task(struct rq *rq) +@@ -1947,12 +1980,10 @@ static int push_rt_task(struct rq *rq) deactivate_task(rq, next_task, 0); set_task_cpu(next_task, lowest_rq->cpu); activate_task(lowest_rq, next_task, 0); @@ -21852,7 +21581,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 out: put_task_struct(next_task); -@@ -1959,7 +1990,7 @@ static int push_rt_task(struct rq *rq) +@@ -1962,7 +1993,7 @@ static int push_rt_task(struct rq *rq) static void push_rt_tasks(struct rq *rq) { /* push_rt_task will return true if it moved an RT */ @@ -21861,7 +21590,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 ; } -@@ -2112,7 +2143,10 @@ void rto_push_irq_work_func(struct irq_work *work) +@@ -2115,7 +2146,10 @@ void rto_push_irq_work_func(struct irq_work *work) */ if (has_pushable_tasks(rq)) { raw_spin_rq_lock(rq); @@ -21873,7 +21602,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 raw_spin_rq_unlock(rq); } -@@ -2137,7 +2171,7 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2140,7 +2174,7 @@ static void pull_rt_task(struct rq *this_rq) { int this_cpu = this_rq->cpu, cpu; bool resched = false; @@ -21882,7 +21611,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 struct rq *src_rq; int rt_overload_count = rt_overloaded(this_rq); -@@ -2184,6 +2218,7 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2187,6 +2221,7 @@ static void pull_rt_task(struct rq *this_rq) * double_lock_balance, and another CPU could * alter this_rq */ @@ -21890,7 +21619,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 double_lock_balance(this_rq, src_rq); /* -@@ -2211,11 +2246,15 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2214,11 +2249,15 @@ static void pull_rt_task(struct rq *this_rq) if (p->prio < src_rq->curr->prio) goto skip; @@ -21911,7 +21640,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 /* * We continue with the search, just in * case there's an even higher prio task -@@ -2225,6 +2264,13 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2228,6 +2267,13 @@ static void pull_rt_task(struct rq *this_rq) } skip: double_unlock_balance(this_rq, src_rq); @@ -21925,7 +21654,7 @@ index 0f349d8d076d..9cfb0948ea06 100644 } if (resched) -@@ -2474,6 +2520,7 @@ const struct sched_class rt_sched_class +@@ -2477,6 +2523,7 @@ const struct sched_class rt_sched_class .rq_offline = rq_offline_rt, .task_woken = task_woken_rt, .switched_from = switched_from_rt, @@ -21934,10 +21663,10 @@ index 0f349d8d076d..9cfb0948ea06 100644 .task_tick = task_tick_rt, diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 0ab8e2532f2d..fb01ee6e50d0 100644 +index 0f871e9b1..9195d7dff 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -1032,6 +1032,7 @@ struct rq { +@@ -1043,6 +1043,7 @@ struct rq { unsigned long cpu_capacity_orig; struct callback_head *balance_callback; @@ -21945,7 +21674,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 unsigned char nohz_idle_balance; unsigned char idle_balance; -@@ -1062,6 +1063,10 @@ struct rq { +@@ -1073,6 +1074,10 @@ struct rq { /* This is used to determine avg_idle's max value */ u64 max_idle_balance_cost; @@ -21956,23 +21685,22 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 #endif /* CONFIG_SMP */ #ifdef CONFIG_IRQ_TIME_ACCOUNTING -@@ -1136,6 +1141,12 @@ struct rq { +@@ -1146,6 +1151,11 @@ struct rq { + unsigned char core_forceidle; unsigned int core_forceidle_seq; #endif - +#ifdef CONFIG_SMP + unsigned int nr_pinned; +#endif + unsigned int push_busy; + struct cpu_stop_work push_work; -+ - KABI_RESERVE(1) - KABI_RESERVE(2) - KABI_RESERVE(3) -@@ -1171,6 +1182,17 @@ static inline int cpu_of(struct rq *rq) + + #if defined(CONFIG_QOS_SCHED_PRIO_LB) && !defined(__GENKSYMS__) + struct list_head cfs_offline_tasks; +@@ -1185,6 +1195,16 @@ static inline int cpu_of(struct rq *rq) + return 0; #endif } - +#define MDF_PUSH 0x01 + +static inline bool is_migration_disabled(struct task_struct *p) @@ -21983,11 +21711,10 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 + return false; +#endif +} -+ + #ifdef CONFIG_QOS_SCHED - enum task_qos_level { - QOS_LEVEL_OFFLINE = -1, -@@ -1565,6 +1587,9 @@ static inline void rq_pin_lock(struct rq *rq, struct rq_flags *rf) + #ifdef CONFIG_QOS_SCHED_MULTILEVEL +@@ -1602,6 +1622,9 @@ static inline void rq_pin_lock(struct rq *rq, struct rq_flags *rf) rq->clock_update_flags &= (RQCF_REQ_SKIP|RQCF_ACT_SKIP); rf->clock_update_flags = 0; #endif @@ -21997,7 +21724,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 } static inline void rq_unpin_lock(struct rq *rq, struct rq_flags *rf) -@@ -1730,6 +1755,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p) +@@ -1773,6 +1796,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p) #ifdef CONFIG_SMP @@ -22007,7 +21734,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 static inline void queue_balance_callback(struct rq *rq, struct callback_head *head, -@@ -1737,12 +1765,13 @@ queue_balance_callback(struct rq *rq, +@@ -1780,12 +1806,13 @@ queue_balance_callback(struct rq *rq, { lockdep_assert_rq_held(rq); @@ -22022,15 +21749,16 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 } #define rcu_dereference_check_sched_domain(p) \ -@@ -2067,6 +2096,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) +@@ -2112,7 +2139,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) + #define WF_SYNC 0x01 /* Waker goes to sleep after wakeup */ #define WF_FORK 0x02 /* Child wakeup after fork */ #define WF_MIGRATED 0x04 /* Internal use, task got migrated */ - #define WF_ON_CPU 0x08 /* Wakee is on_cpu */ +- +#define WF_LOCK_SLEEPER 0x10 /* Wakeup spinlock "sleeper" */ - /* * To aid in avoiding the subversion of "niceness" due to uneven distribution -@@ -2148,10 +2178,13 @@ struct sched_class { + * of tasks with abnormal "nice" values across CPUs the contribution that +@@ -2193,10 +2220,13 @@ struct sched_class { void (*task_woken)(struct rq *this_rq, struct task_struct *task); void (*set_cpus_allowed)(struct task_struct *p, @@ -22045,7 +21773,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 #endif void (*task_tick)(struct rq *rq, struct task_struct *p, int queued); -@@ -2241,13 +2274,38 @@ static inline bool sched_fair_runnable(struct rq *rq) +@@ -2286,13 +2316,38 @@ static inline bool sched_fair_runnable(struct rq *rq) extern struct task_struct *pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf); extern struct task_struct *pick_next_task_idle(struct rq *rq); @@ -22085,7 +21813,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 #endif -@@ -2291,6 +2349,15 @@ extern void reweight_task(struct task_struct *p, int prio); +@@ -2336,6 +2391,15 @@ extern void reweight_task(struct task_struct *p, int prio); extern void resched_curr(struct rq *rq); extern void resched_cpu(int cpu); @@ -22102,7 +21830,7 @@ index 0ab8e2532f2d..fb01ee6e50d0 100644 extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); diff --git a/kernel/sched/swait.c b/kernel/sched/swait.c -index e1c655f928c7..f230b1ac7f91 100644 +index e1c655f92..f230b1ac7 100644 --- a/kernel/sched/swait.c +++ b/kernel/sched/swait.c @@ -64,6 +64,7 @@ void swake_up_all(struct swait_queue_head *q) @@ -22114,7 +21842,7 @@ index e1c655f928c7..f230b1ac7f91 100644 list_splice_init(&q->task_list, &tmp); while (!list_empty(&tmp)) { diff --git a/kernel/signal.c b/kernel/signal.c -index cf498d949f2f..9996986c22fa 100644 +index eed7a3a38..9769b462e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -20,6 +20,7 @@ @@ -22245,7 +21973,7 @@ index cf498d949f2f..9996986c22fa 100644 /* We only dequeue private signals from ourselves, we don't let * signalfd steal them */ -@@ -1320,6 +1380,34 @@ force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t) +@@ -1321,6 +1381,34 @@ force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t) struct k_sigaction *action; int sig = info->si_signo; @@ -22280,7 +22008,7 @@ index cf498d949f2f..9996986c22fa 100644 spin_lock_irqsave(&t->sighand->siglock, flags); action = &t->sighand->action[sig-1]; ignored = action->sa.sa_handler == SIG_IGN; -@@ -1813,7 +1901,8 @@ EXPORT_SYMBOL(kill_pid); +@@ -1814,7 +1902,8 @@ EXPORT_SYMBOL(kill_pid); */ struct sigqueue *sigqueue_alloc(void) { @@ -22290,7 +22018,7 @@ index cf498d949f2f..9996986c22fa 100644 if (q) q->flags |= SIGQUEUE_PREALLOC; -@@ -2199,16 +2288,8 @@ static void ptrace_stop(int exit_code, int why, int clear_code, kernel_siginfo_t +@@ -2200,16 +2289,8 @@ static void ptrace_stop(int exit_code, int why, int clear_code, kernel_siginfo_t if (gstop_done && ptrace_reparented(current)) do_notify_parent_cldstop(current, false, why); @@ -22308,7 +22036,7 @@ index cf498d949f2f..9996986c22fa 100644 cgroup_leave_frozen(true); } else { diff --git a/kernel/smp.c b/kernel/smp.c -index 114776d0d11e..6d35929a1990 100644 +index 114776d0d..6d35929a1 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -480,8 +480,18 @@ void flush_smp_call_function_from_idle(void) @@ -22333,7 +22061,7 @@ index 114776d0d11e..6d35929a1990 100644 local_irq_restore(flags); } diff --git a/kernel/softirq.c b/kernel/softirq.c -index 19668d614f47..aafbb7a0f9ca 100644 +index 4196b9f84..aebf2d468 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -13,6 +13,7 @@ @@ -22680,19 +22408,17 @@ index 19668d614f47..aafbb7a0f9ca 100644 local_irq_disable(); pending = local_softirq_pending(); -@@ -320,46 +581,23 @@ asmlinkage __visible void __softirq_entry __do_softirq(void) +@@ -320,29 +581,10 @@ asmlinkage __visible void __softirq_entry __do_softirq(void) wakeup_softirqd(); } -+ account_softirq_exit(current); - lockdep_softirq_end(in_hardirq); +- lockdep_softirq_end(in_hardirq); - account_irq_exit_time(current); - __local_bh_enable(SOFTIRQ_OFFSET); - WARN_ON_ONCE(in_interrupt()); -+ softirq_handle_end(); - current_restore_flags(old_flags, PF_MEMALLOC); - } - +- current_restore_flags(old_flags, PF_MEMALLOC); +-} +- -asmlinkage __visible void do_softirq(void) -{ - __u32 pending; @@ -22709,14 +22435,19 @@ index 19668d614f47..aafbb7a0f9ca 100644 - do_softirq_own_stack(); - - local_irq_restore(flags); --} -- ++ account_softirq_exit(current); ++ lockdep_softirq_end(in_hardirq); ++ softirq_handle_end(); ++ current_restore_flags(old_flags, PF_MEMALLOC); + } + /** - * irq_enter_rcu - Enter an interrupt context with RCU watching +@@ -350,17 +592,12 @@ asmlinkage __visible void do_softirq(void) */ void irq_enter_rcu(void) { -- if (is_idle_task(current) && !in_interrupt()) { +- if (tick_nohz_full_cpu(smp_processor_id()) || +- (is_idle_task(current) && !in_interrupt())) { - /* - * Prevent raise_softirq from needlessly waking up ksoftirqd - * here, as softirq will be serviced on return from interrupt. @@ -22734,7 +22465,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 } /** -@@ -371,31 +609,7 @@ void irq_enter(void) +@@ -372,31 +609,7 @@ void irq_enter(void) irq_enter_rcu(); } @@ -22766,7 +22497,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 static inline void tick_irq_exit(void) { -@@ -417,7 +631,7 @@ static inline void __irq_exit_rcu(void) +@@ -418,7 +631,7 @@ static inline void __irq_exit_rcu(void) #else lockdep_assert_irqs_disabled(); #endif @@ -22775,7 +22506,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 preempt_count_sub(HARDIRQ_OFFSET); if (!in_interrupt() && local_softirq_pending()) invoke_softirq(); -@@ -466,7 +680,7 @@ inline void raise_softirq_irqoff(unsigned int nr) +@@ -467,7 +680,7 @@ inline void raise_softirq_irqoff(unsigned int nr) * Otherwise we wake up ksoftirqd to make sure we * schedule the softirq soon. */ @@ -22784,7 +22515,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 wakeup_softirqd(); } -@@ -532,6 +746,16 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) +@@ -533,6 +746,16 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) } EXPORT_SYMBOL(__tasklet_hi_schedule); @@ -22801,7 +22532,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 static void tasklet_action_common(struct softirq_action *a, struct tasklet_head *tl_head, unsigned int softirq_nr) -@@ -551,8 +775,7 @@ static void tasklet_action_common(struct softirq_action *a, +@@ -552,8 +775,7 @@ static void tasklet_action_common(struct softirq_action *a, if (tasklet_trylock(t)) { if (!atomic_read(&t->count)) { @@ -22811,7 +22542,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 BUG(); if (t->use_callback) t->callback(t); -@@ -607,21 +830,62 @@ void tasklet_init(struct tasklet_struct *t, +@@ -608,21 +830,62 @@ void tasklet_init(struct tasklet_struct *t, } EXPORT_SYMBOL(tasklet_init); @@ -22880,7 +22611,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 void __init softirq_init(void) { int cpu; -@@ -644,18 +908,18 @@ static int ksoftirqd_should_run(unsigned int cpu) +@@ -645,18 +908,18 @@ static int ksoftirqd_should_run(unsigned int cpu) static void run_ksoftirqd(unsigned int cpu) { @@ -22903,7 +22634,7 @@ index 19668d614f47..aafbb7a0f9ca 100644 #ifdef CONFIG_HOTPLUG_CPU diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c -index d0bf6da49322..7a74b501a3e9 100644 +index d0bf6da49..7a74b501a 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -47,11 +47,27 @@ struct cpu_stopper { @@ -22981,7 +22712,7 @@ index d0bf6da49322..7a74b501a3e9 100644 "cpu_stop: %ps(%p) leaked preempt count\n", fn, arg); goto repeat; diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 544ce87ba38a..3db616aecb17 100644 +index 544ce87ba..3db616aec 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -2052,6 +2052,36 @@ SYSCALL_DEFINE2(nanosleep_time32, struct old_timespec32 __user *, rqtp, @@ -23022,7 +22753,7 @@ index 544ce87ba38a..3db616aecb17 100644 * Functions related to boot-time initialization: */ diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c -index 33750db5b564..90f3c8ad5f47 100644 +index aed5d6b6c..c26a7168f 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -989,7 +989,7 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) @@ -23035,10 +22766,10 @@ index 33750db5b564..90f3c8ad5f47 100644 pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n", (unsigned int) local_softirq_pending()); diff --git a/kernel/time/timer.c b/kernel/time/timer.c -index f7d3a108e27c..f24e6fed6633 100644 +index c1b52dab3..101a73eea 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1287,7 +1287,7 @@ static void del_timer_wait_running(struct timer_list *timer) +@@ -1454,7 +1454,7 @@ static void del_timer_wait_running(struct timer_list *timer) u32 tf; tf = READ_ONCE(timer->flags); @@ -23047,25 +22778,24 @@ index f7d3a108e27c..f24e6fed6633 100644 struct timer_base *base = get_timer_base(tf); /* -@@ -1371,6 +1371,13 @@ int del_timer_sync(struct timer_list *timer) +@@ -1522,6 +1522,12 @@ static int __timer_delete_sync(struct timer_list *timer, bool shutdown) + * could lead to deadlock. */ WARN_ON(in_irq() && !(timer->flags & TIMER_IRQSAFE)); - + /* + * Must be able to sleep on PREEMPT_RT because of the slowpath in + * del_timer_wait_running(). + */ + if (IS_ENABLED(CONFIG_PREEMPT_RT) && !(timer->flags & TIMER_IRQSAFE)) + lockdep_assert_preemption_enabled(); -+ - do { - ret = try_to_del_timer_sync(timer); + do { + ret = __try_to_del_timer_sync(timer, shutdown); diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 951181d5b9fb..9e4845cf65e4 100644 +index 6eead8a61..0cd86be3b 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -2592,60 +2592,43 @@ enum print_line_t trace_handle_return(struct trace_seq *s) +@@ -2607,60 +2607,43 @@ enum print_line_t trace_handle_return(struct trace_seq *s) } EXPORT_SYMBOL_GPL(trace_handle_return); @@ -23145,7 +22875,7 @@ index 951181d5b9fb..9e4845cf65e4 100644 } struct ring_buffer_event * -@@ -3841,14 +3824,17 @@ unsigned long trace_total_entries(struct trace_array *tr) +@@ -3863,14 +3846,17 @@ unsigned long trace_total_entries(struct trace_array *tr) static void print_lat_help_header(struct seq_file *m) { @@ -23171,7 +22901,7 @@ index 951181d5b9fb..9e4845cf65e4 100644 } static void print_event_info(struct array_buffer *buf, struct seq_file *m) -@@ -3882,13 +3868,16 @@ static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file +@@ -3904,13 +3890,16 @@ static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file print_event_info(buf, m); @@ -23195,7 +22925,7 @@ index 951181d5b9fb..9e4845cf65e4 100644 } void -@@ -9431,7 +9420,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) +@@ -9484,7 +9473,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) tracing_off(); local_irq_save(flags); @@ -23203,7 +22933,7 @@ index 951181d5b9fb..9e4845cf65e4 100644 /* Simulate the iterator */ trace_init_global_iter(&iter); -@@ -9511,7 +9499,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) +@@ -9564,7 +9552,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) atomic_dec(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled); } atomic_dec(&dump_running); @@ -23212,7 +22942,7 @@ index 951181d5b9fb..9e4845cf65e4 100644 } EXPORT_SYMBOL_GPL(ftrace_dump); diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index c0596e250c2a..44943a9be317 100644 +index 045cd3b14..b2a72a370 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -141,25 +141,6 @@ struct kretprobe_trace_entry_head { @@ -23242,7 +22972,7 @@ index c0596e250c2a..44943a9be317 100644 struct trace_array; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index d29a9a5e5743..9ad773198754 100644 +index d2ca0ca09..30c82c785 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -184,6 +184,8 @@ static int trace_define_common_fields(void) @@ -23255,7 +22985,7 @@ index d29a9a5e5743..9ad773198754 100644 return ret; } diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 7042544c5bde..c711eb334811 100644 +index 4778cecee..0c4cc486c 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -441,6 +441,7 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) @@ -23305,10 +23035,10 @@ index 7042544c5bde..c711eb334811 100644 } diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 9db32d9739f5..663f295f9948 100644 +index 3c40cf18d..d0870fc0d 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -4816,9 +4816,7 @@ void show_workqueue_state(void) +@@ -4847,9 +4847,7 @@ void show_workqueue_state(void) * drivers that queue work while holding locks * also taken in their write paths. */ @@ -23318,7 +23048,7 @@ index 9db32d9739f5..663f295f9948 100644 } raw_spin_unlock_irqrestore(&pwq->pool->lock, flags); /* -@@ -4842,7 +4840,6 @@ void show_workqueue_state(void) +@@ -4873,7 +4871,6 @@ void show_workqueue_state(void) * queue work while holding locks also taken in their write * paths. */ @@ -23326,7 +23056,7 @@ index 9db32d9739f5..663f295f9948 100644 pr_info("pool %d:", pool->id); pr_cont_pool_info(pool); pr_cont(" hung=%us workers=%d", -@@ -4857,7 +4854,6 @@ void show_workqueue_state(void) +@@ -4888,7 +4885,6 @@ void show_workqueue_state(void) first = false; } pr_cont("\n"); @@ -23334,7 +23064,7 @@ index 9db32d9739f5..663f295f9948 100644 next_pool: raw_spin_unlock_irqrestore(&pool->lock, flags); /* -@@ -4949,6 +4945,10 @@ static void unbind_workers(int cpu) +@@ -4980,6 +4976,10 @@ static void unbind_workers(int cpu) pool->flags |= POOL_DISASSOCIATED; raw_spin_unlock_irq(&pool->lock); @@ -23346,10 +23076,10 @@ index 9db32d9739f5..663f295f9948 100644 /* diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index f53afec6f7ae..b285b57741c2 100644 +index 5839cfdc1..cd5433600 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug -@@ -1406,7 +1406,7 @@ config DEBUG_ATOMIC_SLEEP +@@ -1420,7 +1420,7 @@ config DEBUG_ATOMIC_SLEEP config DEBUG_LOCKING_API_SELFTESTS bool "Locking API boot-time self-tests" @@ -23359,7 +23089,7 @@ index f53afec6f7ae..b285b57741c2 100644 Say Y here if you want the kernel to run a short self-test during bootup. The self-test checks whether common types of locking bugs diff --git a/lib/bug.c b/lib/bug.c -index 4ab398a2de93..9c681f29e61e 100644 +index 4ab398a2d..9c681f29e 100644 --- a/lib/bug.c +++ b/lib/bug.c @@ -202,6 +202,7 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs) @@ -23371,7 +23101,7 @@ index 4ab398a2de93..9c681f29e61e 100644 return BUG_TRAP_TYPE_BUG; } diff --git a/lib/cpumask.c b/lib/cpumask.c -index fb22fb266f93..c3c76b833384 100644 +index fb22fb266..c3c76b833 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c @@ -261,3 +261,21 @@ int cpumask_any_and_distribute(const struct cpumask *src1p, @@ -23397,10 +23127,10 @@ index fb22fb266f93..c3c76b833384 100644 +} +EXPORT_SYMBOL(cpumask_any_distribute); diff --git a/lib/debugobjects.c b/lib/debugobjects.c -index 9e14ae02306b..083882a3cf2f 100644 +index 71bdc167a..e5ab016ca 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c -@@ -557,7 +557,10 @@ __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack +@@ -564,7 +564,10 @@ __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack struct debug_obj *obj; unsigned long flags; @@ -23413,7 +23143,7 @@ index 9e14ae02306b..083882a3cf2f 100644 db = get_bucket((unsigned long) addr); diff --git a/lib/dump_stack.c b/lib/dump_stack.c -index a00ee6eedc7c..f5a33b6f773f 100644 +index a00ee6eed..f5a33b6f7 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -12,6 +12,7 @@ @@ -23433,7 +23163,7 @@ index a00ee6eedc7c..f5a33b6f773f 100644 /** diff --git a/lib/irq_poll.c b/lib/irq_poll.c -index 2f17b488d58e..7557bf7ecf1f 100644 +index 2f17b488d..7557bf7ec 100644 --- a/lib/irq_poll.c +++ b/lib/irq_poll.c @@ -37,6 +37,7 @@ void irq_poll_sched(struct irq_poll *iop) @@ -23477,7 +23207,7 @@ index 2f17b488d58e..7557bf7ecf1f 100644 return 0; } diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c -index 76c52b0b76d3..98c376b02dff 100644 +index 76c52b0b7..98c376b02 100644 --- a/lib/locking-selftest.c +++ b/lib/locking-selftest.c @@ -787,6 +787,8 @@ GENERATE_TESTCASE(init_held_rtmutex); @@ -23630,7 +23360,7 @@ index 76c52b0b76d3..98c376b02dff 100644 force_read_lock_recursive = 0; diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c -index 8abe1870dba4..b09a490f5f70 100644 +index 8abe1870d..b09a490f5 100644 --- a/lib/nmi_backtrace.c +++ b/lib/nmi_backtrace.c @@ -75,12 +75,6 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask, @@ -23647,7 +23377,7 @@ index 8abe1870dba4..b09a490f5f70 100644 put_cpu(); } diff --git a/lib/scatterlist.c b/lib/scatterlist.c -index a59778946404..907f59045998 100644 +index a59778946..907f59045 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -892,7 +892,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter) @@ -23660,7 +23390,7 @@ index a59778946404..907f59045998 100644 } else kunmap(miter->page); diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c -index 2916606a9333..0c0c42b14370 100644 +index 2916606a9..0c0c42b14 100644 --- a/lib/smp_processor_id.c +++ b/lib/smp_processor_id.c @@ -26,6 +26,11 @@ unsigned int check_preemption_disabled(const char *what1, const char *what2) @@ -23676,7 +23406,7 @@ index 2916606a9333..0c0c42b14370 100644 * It is valid to assume CPU-locality during early bootup: */ diff --git a/lib/test_lockup.c b/lib/test_lockup.c -index 78a630bbd03d..d27a80502204 100644 +index 78a630bbd..d27a80502 100644 --- a/lib/test_lockup.c +++ b/lib/test_lockup.c @@ -485,6 +485,21 @@ static int __init test_lockup_init(void) @@ -23710,7 +23440,7 @@ index 78a630bbd03d..d27a80502204 100644 if ((wait_state != TASK_RUNNING || diff --git a/mm/Kconfig b/mm/Kconfig -index f66457168de9..fccd4ebdbc1f 100644 +index 0fe459e79..46ef95511 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -404,7 +404,7 @@ config NOMMU_INITIAL_TRIM_EXCESS @@ -23722,7 +23452,7 @@ index f66457168de9..fccd4ebdbc1f 100644 select COMPACTION select XARRAY_MULTI help -@@ -943,6 +943,9 @@ config ARCH_HAS_HUGEPD +@@ -952,6 +952,9 @@ config ARCH_HAS_HUGEPD config MAPPING_DIRTY_HELPERS bool @@ -23733,7 +23463,7 @@ index f66457168de9..fccd4ebdbc1f 100644 bool "Support for pin memory" depends on MMU && ARM64 diff --git a/mm/highmem.c b/mm/highmem.c -index efe38ab479b5..ad72e587ce54 100644 +index efe38ab47..ad72e587c 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -31,10 +31,6 @@ @@ -24041,7 +23771,7 @@ index efe38ab479b5..ad72e587ce54 100644 #if defined(HASHED_PAGE_VIRTUAL) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 635cb8b65b86..a6fbb7f7a297 100644 +index 5082d0664..c574b293e 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -67,6 +67,7 @@ @@ -24052,7 +23782,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 #include -@@ -97,6 +98,14 @@ bool cgroup_memory_noswap __read_mostly; +@@ -100,6 +101,14 @@ bool cgroup_memory_noswap __read_mostly; static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); #endif @@ -24067,7 +23797,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 /* Whether legacy memory+swap accounting is active */ static bool do_memsw_account(void) { -@@ -756,6 +765,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, +@@ -764,6 +773,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec); memcg = pn->memcg; @@ -24075,7 +23805,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 /* Update memcg */ __this_cpu_add(memcg->vmstats_percpu->state[idx], val); -@@ -763,6 +773,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, +@@ -771,6 +781,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, __this_cpu_add(pn->lruvec_stats_percpu->state[idx], val); memcg_rstat_updated(memcg); @@ -24083,7 +23813,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 } /** -@@ -2169,6 +2180,7 @@ void unlock_page_memcg(struct page *page) +@@ -2174,6 +2185,7 @@ void unlock_page_memcg(struct page *page) EXPORT_SYMBOL(unlock_page_memcg); struct memcg_stock_pcp { @@ -24091,7 +23821,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 struct mem_cgroup *cached; /* this never be root cgroup */ unsigned int nr_pages; -@@ -2220,7 +2232,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2225,7 +2237,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) if (nr_pages > MEMCG_CHARGE_BATCH) return ret; @@ -24100,7 +23830,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 stock = this_cpu_ptr(&memcg_stock); if (memcg == stock->cached && stock->nr_pages >= nr_pages) { -@@ -2228,7 +2240,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2233,7 +2245,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) ret = true; } @@ -24109,7 +23839,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 return ret; } -@@ -2263,14 +2275,14 @@ static void drain_local_stock(struct work_struct *dummy) +@@ -2268,14 +2280,14 @@ static void drain_local_stock(struct work_struct *dummy) * The only protection from memory hotplug vs. drain_stock races is * that we always operate on local CPU stock here with IRQ disabled */ @@ -24126,7 +23856,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 } /* -@@ -2282,7 +2294,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2287,7 +2299,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) struct memcg_stock_pcp *stock; unsigned long flags; @@ -24135,7 +23865,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 stock = this_cpu_ptr(&memcg_stock); if (stock->cached != memcg) { /* reset if necessary */ -@@ -2295,7 +2307,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2300,7 +2312,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) if (stock->nr_pages > MEMCG_CHARGE_BATCH) drain_stock(stock); @@ -24144,7 +23874,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 } /* -@@ -2315,7 +2327,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) +@@ -2320,7 +2332,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) * as well as workers from this path always operate on the local * per-cpu data. CPU up doesn't touch memcg_stock at all. */ @@ -24153,7 +23883,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 for_each_online_cpu(cpu) { struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu); struct mem_cgroup *memcg; -@@ -2338,7 +2350,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) +@@ -2343,7 +2355,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) schedule_work_on(cpu, &stock->work); } } @@ -24162,7 +23892,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 mutex_unlock(&percpu_charge_mutex); } -@@ -3140,7 +3152,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3146,7 +3158,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) unsigned long flags; bool ret = false; @@ -24171,7 +23901,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 stock = this_cpu_ptr(&memcg_stock); if (objcg == stock->cached_objcg && stock->nr_bytes >= nr_bytes) { -@@ -3148,7 +3160,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3154,7 +3166,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) ret = true; } @@ -24180,7 +23910,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 return ret; } -@@ -3204,7 +3216,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3210,7 +3222,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) struct memcg_stock_pcp *stock; unsigned long flags; @@ -24189,7 +23919,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 stock = this_cpu_ptr(&memcg_stock); if (stock->cached_objcg != objcg) { /* reset if necessary */ -@@ -3218,7 +3230,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3224,7 +3236,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) if (stock->nr_bytes > PAGE_SIZE) drain_obj_stock(stock); @@ -24198,7 +23928,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 } int obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, size_t size) -@@ -6309,12 +6321,12 @@ static int mem_cgroup_move_account(struct page *page, +@@ -6827,12 +6839,12 @@ static int mem_cgroup_move_account(struct page *page, ret = 0; @@ -24213,7 +23943,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 out_unlock: unlock_page(page); out: -@@ -7291,10 +7303,10 @@ int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask) +@@ -7809,10 +7821,10 @@ int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask) css_get(&memcg->css); commit_charge(page, memcg); @@ -24226,7 +23956,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 /* * Cgroup1's unified memory+swap counter has been charged with the -@@ -7350,11 +7362,11 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -7868,11 +7880,11 @@ static void uncharge_batch(const struct uncharge_gather *ug) memcg_oom_recover(ug->memcg); } @@ -24240,7 +23970,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 /* drop reference from uncharge_page */ css_put(&ug->memcg->css); -@@ -7526,10 +7538,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) +@@ -8044,10 +8056,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) css_get(&memcg->css); commit_charge(newpage, memcg); @@ -24253,7 +23983,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 } DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key); -@@ -7659,9 +7671,13 @@ static int __init mem_cgroup_init(void) +@@ -8177,9 +8189,13 @@ static int __init mem_cgroup_init(void) cpuhp_setup_state_nocalls(CPUHP_MM_MEMCQ_DEAD, "mm/memctrl:dead", NULL, memcg_hotplug_cpu_dead); @@ -24270,7 +24000,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 for_each_node(node) { struct mem_cgroup_tree_per_node *rtpn; -@@ -7712,6 +7728,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -8230,6 +8246,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) struct mem_cgroup *memcg, *swap_memcg; unsigned int nr_entries; unsigned short oldid; @@ -24278,7 +24008,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -7757,9 +7774,13 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -8275,9 +8292,13 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) * important here to have the interrupts disabled because it is the * only synchronisation we have for updating the per-CPU variables. */ @@ -24293,7 +24023,7 @@ index 635cb8b65b86..a6fbb7f7a297 100644 css_put(&memcg->css); } diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 12da70f39e0c..bb19b160ecd8 100644 +index 9e85e8b52..8f0d4b6c3 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -61,6 +61,7 @@ @@ -24649,7 +24379,7 @@ index 12da70f39e0c..bb19b160ecd8 100644 return NULL; } -@@ -9336,7 +9406,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -9344,7 +9414,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -24658,7 +24388,7 @@ index 12da70f39e0c..bb19b160ecd8 100644 if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -9345,7 +9415,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -9353,7 +9423,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } @@ -24668,7 +24398,7 @@ index 12da70f39e0c..bb19b160ecd8 100644 #ifdef CONFIG_MEMORY_HOTREMOVE diff --git a/mm/shmem.c b/mm/shmem.c -index f7caf1dec81c..0ef372e7d126 100644 +index f7caf1dec..0ef372e7d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -307,10 +307,10 @@ static int shmem_reserve_inode(struct super_block *sb, ino_t *inop) @@ -24776,7 +24506,7 @@ index f7caf1dec81c..0ef372e7d126 100644 goto failed; spin_lock_init(&sbinfo->shrinklist_lock); diff --git a/mm/slab.c b/mm/slab.c -index ae84578f3fde..a65a5f169fd5 100644 +index ae84578f3..a65a5f169 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -234,7 +234,7 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) @@ -25127,7 +24857,7 @@ index ae84578f3fde..a65a5f169fd5 100644 num_objs = total_slabs * cachep->num; active_slabs = total_slabs - free_slabs; diff --git a/mm/slab.h b/mm/slab.h -index 8414c345127b..d937f8673193 100644 +index 8414c3451..d937f8673 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -523,7 +523,7 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, @@ -25140,7 +24870,7 @@ index 8414c345127b..d937f8673193 100644 #ifdef CONFIG_SLAB struct list_head slabs_partial; /* partial list first, better asm code */ diff --git a/mm/slub.c b/mm/slub.c -index ec1c3a376d36..559fcc2a3fbf 100644 +index ec1c3a376..559fcc2a3 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -458,7 +458,7 @@ static inline bool cmpxchg_double_slab(struct kmem_cache *s, struct page *page, @@ -25633,7 +25363,7 @@ index ec1c3a376d36..559fcc2a3fbf 100644 for (i = 0; i < t.count; i++) { diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index e27cd716ca95..1285e5cb072a 100644 +index e27cd716c..1285e5cb0 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1889,7 +1889,7 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask) @@ -25688,7 +25418,7 @@ index e27cd716ca95..1285e5cb072a 100644 /* Allocate new block if nothing was found */ diff --git a/mm/vmstat.c b/mm/vmstat.c -index 05433f66376b..afb32defb498 100644 +index 05433f663..afb32defb 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -321,6 +321,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, @@ -25788,7 +25518,7 @@ index 05433f66376b..afb32defb498 100644 void __dec_zone_page_state(struct page *page, enum zone_stat_item item) diff --git a/mm/workingset.c b/mm/workingset.c -index 4a30e4a813a5..4c92584ca34d 100644 +index 4a30e4a81..4c92584ca 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -431,6 +431,8 @@ static struct list_lru shadow_nodes; @@ -25811,7 +25541,7 @@ index 4a30e4a813a5..4c92584ca34d 100644 if (node->count && node->count == node->nr_values) { if (list_empty(&node->private_list)) { diff --git a/mm/z3fold.c b/mm/z3fold.c -index f75c638c69db..6fdf4774fdbe 100644 +index f75c638c6..6fdf4774f 100644 --- a/mm/z3fold.c +++ b/mm/z3fold.c @@ -623,14 +623,16 @@ static inline void add_to_unbuddied(struct z3fold_pool *pool, @@ -25873,7 +25603,7 @@ index f75c638c69db..6fdf4774fdbe 100644 if (!zhdr) { int cpu; diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c -index c18dc8e61d35..16ce2b05df90 100644 +index 6079f5625..a928c7136 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -57,6 +57,7 @@ @@ -25971,7 +25701,7 @@ index c18dc8e61d35..16ce2b05df90 100644 } /* zpool driver */ -@@ -455,7 +494,10 @@ MODULE_ALIAS("zpool-zsmalloc"); +@@ -458,7 +497,10 @@ MODULE_ALIAS("zpool-zsmalloc"); #endif /* CONFIG_ZPOOL */ /* per-cpu VM mapping areas for zspage accesses that cross page boundaries */ @@ -25983,7 +25713,7 @@ index c18dc8e61d35..16ce2b05df90 100644 static bool is_zspage_isolated(struct zspage *zspage) { -@@ -865,7 +907,13 @@ static unsigned long location_to_obj(struct page *page, unsigned int obj_idx) +@@ -868,7 +910,13 @@ static unsigned long location_to_obj(struct page *page, unsigned int obj_idx) static unsigned long handle_to_obj(unsigned long handle) { @@ -25997,7 +25727,7 @@ index c18dc8e61d35..16ce2b05df90 100644 } static unsigned long obj_to_head(struct page *page, void *obj) -@@ -879,22 +927,46 @@ static unsigned long obj_to_head(struct page *page, void *obj) +@@ -882,22 +930,46 @@ static unsigned long obj_to_head(struct page *page, void *obj) static inline int testpin_tag(unsigned long handle) { @@ -26044,7 +25774,7 @@ index c18dc8e61d35..16ce2b05df90 100644 } static void reset_page(struct page *page) -@@ -1278,7 +1350,8 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle, +@@ -1302,7 +1374,8 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle, class = pool->size_class[class_idx]; off = (class->size * obj_idx) & ~PAGE_MASK; @@ -26054,7 +25784,7 @@ index c18dc8e61d35..16ce2b05df90 100644 area->vm_mm = mm; if (off + class->size <= PAGE_SIZE) { /* this object is contained entirely within a page */ -@@ -1332,7 +1405,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) +@@ -1356,7 +1429,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) __zs_unmap_object(area, pages, off, class->size); } @@ -26064,10 +25794,10 @@ index c18dc8e61d35..16ce2b05df90 100644 migrate_read_unlock(zspage); unpin_tag(handle); diff --git a/net/Kconfig b/net/Kconfig -index d6567162c1cf..05b0f041f039 100644 +index a22c3fb88..5a17bded7 100644 --- a/net/Kconfig +++ b/net/Kconfig -@@ -282,7 +282,7 @@ config CGROUP_NET_CLASSID +@@ -280,7 +280,7 @@ config CGROUP_NET_CLASSID config NET_RX_BUSY_POLL bool @@ -26077,7 +25807,7 @@ index d6567162c1cf..05b0f041f039 100644 config BQL bool diff --git a/net/core/dev.c b/net/core/dev.c -index 64837bb056ee..dee3d89c80e6 100644 +index 5a1994be7..254a4221c 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -221,14 +221,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) @@ -26197,7 +25927,7 @@ index 64837bb056ee..dee3d89c80e6 100644 } EXPORT_SYMBOL(__napi_schedule); -@@ -10978,6 +10986,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -10987,6 +10995,7 @@ static int dev_cpu_dead(unsigned int oldcpu) raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); @@ -26205,7 +25935,7 @@ index 64837bb056ee..dee3d89c80e6 100644 #ifdef CONFIG_RPS remsd = oldsd->rps_ipi_list; -@@ -10991,7 +11000,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -11000,7 +11009,7 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -26214,7 +25944,7 @@ index 64837bb056ee..dee3d89c80e6 100644 netif_rx_ni(skb); input_queue_head_incr(oldsd); } -@@ -11307,7 +11316,7 @@ static int __init net_dev_init(void) +@@ -11316,7 +11325,7 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); @@ -26224,7 +25954,7 @@ index 64837bb056ee..dee3d89c80e6 100644 #ifdef CONFIG_XFRM_OFFLOAD skb_queue_head_init(&sd->xfrm_backlog); diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c -index 8e582e29a41e..e51f4854d8b2 100644 +index 8e582e29a..e51f4854d 100644 --- a/net/core/gen_estimator.c +++ b/net/core/gen_estimator.c @@ -42,7 +42,7 @@ @@ -26255,7 +25985,7 @@ index 8e582e29a41e..e51f4854d8b2 100644 return gen_new_estimator(bstats, cpu_bstats, rate_est, lock, running, opt); diff --git a/net/core/gen_stats.c b/net/core/gen_stats.c -index e491b083b348..ef432cea2e10 100644 +index e491b083b..ef432cea2 100644 --- a/net/core/gen_stats.c +++ b/net/core/gen_stats.c @@ -137,7 +137,7 @@ __gnet_stats_copy_basic_cpu(struct gnet_stats_basic_packed *bstats, @@ -26305,7 +26035,7 @@ index e491b083b348..ef432cea2e10 100644 struct gnet_stats_basic_cpu __percpu *cpu, struct gnet_stats_basic_packed *b) diff --git a/net/core/sock.c b/net/core/sock.c -index d8d42ff15d20..d23b79afa25f 100644 +index d8d42ff15..d23b79afa 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3068,12 +3068,11 @@ void lock_sock_nested(struct sock *sk, int subclass) @@ -26337,10 +26067,10 @@ index d8d42ff15d20..d23b79afa25f 100644 } EXPORT_SYMBOL(lock_sock_fast); diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c -index 54e2309315eb..ca72dffaa71d 100644 +index b8eecd670..070473934 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c -@@ -1270,7 +1270,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, +@@ -1271,7 +1271,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, rcu_assign_pointer(sch->stab, stab); } if (tca[TCA_RATE]) { @@ -26350,7 +26080,7 @@ index 54e2309315eb..ca72dffaa71d 100644 err = -EOPNOTSUPP; if (sch->flags & TCQ_F_MQROOT) { diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index ecdd9e83f2f4..73b5aa797645 100644 +index ecdd9e83f..73b5aa797 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -578,7 +578,11 @@ struct Qdisc noop_qdisc = { @@ -26382,7 +26112,7 @@ index ecdd9e83f2f4..73b5aa797645 100644 sch->ops = ops; sch->flags = ops->static_flags; diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c -index 362487f3a6de..5c6c31fc7890 100644 +index f56b4df6c..6cb833516 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -422,7 +422,7 @@ void svc_xprt_do_enqueue(struct svc_xprt *xprt) @@ -26404,7 +26134,7 @@ index 362487f3a6de..5c6c31fc7890 100644 } EXPORT_SYMBOL_GPL(svc_xprt_do_enqueue); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c -index ac2f1a7330c9..84f421e6b12c 100644 +index ac2f1a733..84f421e6b 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -2673,7 +2673,8 @@ int __net_init xfrm_state_init(struct net *net) @@ -26418,5 +26148,5 @@ index ac2f1a7330c9..84f421e6b12c 100644 out_byspi: -- -2.36.1 +2.33.0 diff --git a/0003-rpi4-extern.patch b/0003-rpi4-extern.patch new file mode 100644 index 0000000..35cf108 --- /dev/null +++ b/0003-rpi4-extern.patch @@ -0,0 +1,34 @@ +From 7f99ea180efb5d8fa80af772428c9f00de991773 Mon Sep 17 00:00:00 2001 +From: zhangyu +Date: Tue, 31 Oct 2023 11:22:42 +0800 +Subject: [PATCH] rpi4-extern + +--- + arch/arm64/kernel/fpsimd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c +index 84520f116..aa631771e 100644 +--- a/arch/arm64/kernel/fpsimd.c ++++ b/arch/arm64/kernel/fpsimd.c +@@ -180,7 +180,7 @@ static void __get_cpu_fpsimd_context(void) + */ + static void get_cpu_fpsimd_context(void) + { +- local_bh_disable(); ++ preempt_disable(); + __get_cpu_fpsimd_context(); + } + +@@ -201,7 +201,7 @@ static void __put_cpu_fpsimd_context(void) + static void put_cpu_fpsimd_context(void) + { + __put_cpu_fpsimd_context(); +- local_bh_enable(); ++ preempt_enable(); + } + + static bool have_cpu_fpsimd_context(void) +-- +2.25.1 + diff --git a/kernel-rt.spec b/kernel-rt.spec index 739196a..4fc925e 100644 --- a/kernel-rt.spec +++ b/kernel-rt.spec @@ -10,9 +10,9 @@ %global upstream_version 5.10 %global upstream_sublevel 0 -%global devel_release 146 +%global devel_release 161 %global maintenance_release .0.0 -%global pkg_release .59 +%global pkg_release .60 %global rt_release .rt62 %define with_debuginfo 1 @@ -52,7 +52,12 @@ Source0: kernel.tar.gz Source10: sign-modules Source11: x509.genkey Source12: extra_certificates -Source13: pubring.gpg +# openEuler RPM PGP certificates: +# 1. openeuler +Source13: RPM-GPG-KEY-openEuler-compass-ci +# 2. private OBS +Source14: RPM-GPG-KEY-openEuler-localobs +Source15: process_pgp_certs.sh %if 0%{?with_kabichk} Source18: check-kabi @@ -886,6 +891,8 @@ fi %endif %changelog +* Mon Nov 1 2023 zhangyu - 5.10.0-161.0.0.60 +- update kernel-rt version to 5.10.0-161.0.0 * Wed Apr 10 2023 liyulei - 5.10.0-146.0.0.59 - update kernel-rt version to 5.10.0-146.0.0 diff --git a/raspberrypi-kernel-rt.spec b/raspberrypi-kernel-rt.spec index 3c7fbe6..a01ddba 100644 --- a/raspberrypi-kernel-rt.spec +++ b/raspberrypi-kernel-rt.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 126.0.0 +%global hulkrelease 161.0.0 %global debug_package %{nil} Name: raspberrypi-kernel-rt Version: 5.10.0 -Release: %{hulkrelease}.rt62.9 +Release: %{hulkrelease}.rt62.10 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -16,6 +16,7 @@ Source0: kernel.tar.gz Patch0000: 0000-raspberrypi-kernel.patch Patch0001: 0001-apply-preempt-RT-patch.patch Patch0002: 0002-modify-bcm2711_defconfig-for-rt-rpi-kernel.patch +Patch0003: 0003-rpi4-extern.patch BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, tar BuildRequires: bzip2, xz, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk @@ -53,6 +54,7 @@ cd linux-%{KernelVer} %patch0000 -p1 %patch0001 -p1 %patch0002 -p1 +%patch0003 -p1 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null find . -name .gitignore -exec rm -f {} \; >/dev/null @@ -170,6 +172,9 @@ install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ /lib/modules/%{KernelVer} %changelog +* Mon Dec 30 2023 zhangyu - 5.10.0-161.0.0.10 +- - update preempt-RT to openEuler 5.10.0-161.0.0 + * Mon Nov 20 2022 zhangyu - 5.10.0-126.0.0.9 - - update preempt-RT to openEuler 5.10.0-126.0.0