diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 04:21:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 04:21:41 +0000 |
commit | b488a8b2c3eaf68ad4778dbdc99bdda0b0d1ce6d (patch) | |
tree | 9f60f0d41af253fa943e7811f231d36852f10f1e /debian/patches-rt | |
parent | Merging upstream version 4.19.304. (diff) | |
download | linux-b488a8b2c3eaf68ad4778dbdc99bdda0b0d1ce6d.tar.xz linux-b488a8b2c3eaf68ad4778dbdc99bdda0b0d1ce6d.zip |
Adding debian version 4.19.304-1.debian/4.19.304-1debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches-rt')
356 files changed, 1216 insertions, 1137 deletions
diff --git a/debian/patches-rt/0001-ARM-at91-add-TCB-registers-definitions.patch b/debian/patches-rt/0001-ARM-at91-add-TCB-registers-definitions.patch index fef3029d3..63ab657b2 100644 --- a/debian/patches-rt/0001-ARM-at91-add-TCB-registers-definitions.patch +++ b/debian/patches-rt/0001-ARM-at91-add-TCB-registers-definitions.patch @@ -1,7 +1,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:18 +0200 -Subject: [PATCH 001/353] ARM: at91: add TCB registers definitions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d5cb3db0db4af2d71851e972bde6defcd16e3d57 +Subject: [PATCH 001/354] ARM: at91: add TCB registers definitions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6bf97db6a22f57ff49dd88286bd67c1f746ae82e Add registers and bits definitions for the timer counter blocks found on Atmel ARM SoCs. diff --git a/debian/patches-rt/0002-clocksource-drivers-Add-a-new-driver-for-the-Atmel-A.patch b/debian/patches-rt/0002-clocksource-drivers-Add-a-new-driver-for-the-Atmel-A.patch index 5ac210598..8468f1e69 100644 --- a/debian/patches-rt/0002-clocksource-drivers-Add-a-new-driver-for-the-Atmel-A.patch +++ b/debian/patches-rt/0002-clocksource-drivers-Add-a-new-driver-for-the-Atmel-A.patch @@ -1,8 +1,8 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:19 +0200 -Subject: [PATCH 002/353] clocksource/drivers: Add a new driver for the Atmel +Subject: [PATCH 002/354] clocksource/drivers: Add a new driver for the Atmel ARM TC blocks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0043104c9ea190cfd4f18e03d31379ba173b14c3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22b86bcd097361e683ce2156edc1b6f845fcb8ea Add a driver for the Atmel Timer Counter Blocks. This driver provides a clocksource and two clockevent devices. @@ -50,7 +50,7 @@ index 06504384c376..9422ea3a52ac 100644 bool "Exynos multi core timer driver" if COMPILE_TEST depends on ARM || ARM64 diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile -index db51b2427e8a..0df9384a1230 100644 +index e33b21d3f9d8..9841a45293e3 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -3,7 +3,8 @@ obj-$(CONFIG_TIMER_OF) += timer-of.o diff --git a/debian/patches-rt/0003-clocksource-drivers-timer-atmel-tcb-add-clockevent-d.patch b/debian/patches-rt/0003-clocksource-drivers-timer-atmel-tcb-add-clockevent-d.patch index be67d6de9..463824e67 100644 --- a/debian/patches-rt/0003-clocksource-drivers-timer-atmel-tcb-add-clockevent-d.patch +++ b/debian/patches-rt/0003-clocksource-drivers-timer-atmel-tcb-add-clockevent-d.patch @@ -1,8 +1,8 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:20 +0200 -Subject: [PATCH 003/353] clocksource/drivers: timer-atmel-tcb: add clockevent +Subject: [PATCH 003/354] clocksource/drivers: timer-atmel-tcb: add clockevent device on separate channel -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e8db0c861ea79c7d74cf1dbc062edb0e89b0afd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=936bc406a7637a1bae905a544ac1940a216be130 Add an other clockevent device that uses a separate TCB channel when available. diff --git a/debian/patches-rt/0004-clocksource-drivers-atmel-pit-make-option-silent.patch b/debian/patches-rt/0004-clocksource-drivers-atmel-pit-make-option-silent.patch index 38dbdc5da..b0d696f0e 100644 --- a/debian/patches-rt/0004-clocksource-drivers-atmel-pit-make-option-silent.patch +++ b/debian/patches-rt/0004-clocksource-drivers-atmel-pit-make-option-silent.patch @@ -1,7 +1,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:21 +0200 -Subject: [PATCH 004/353] clocksource/drivers: atmel-pit: make option silent -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f7428d3f6ffc0509868983b6c335c1501a6fb5c +Subject: [PATCH 004/354] clocksource/drivers: atmel-pit: make option silent +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a13f7aa4cc2d8401185eee4461a6f9d27e603a7 To conform with the other option, make the ATMEL_PIT option silent so it can be selected from the platform diff --git a/debian/patches-rt/0005-ARM-at91-Implement-clocksource-selection.patch b/debian/patches-rt/0005-ARM-at91-Implement-clocksource-selection.patch index 27abb0473..59ad4745f 100644 --- a/debian/patches-rt/0005-ARM-at91-Implement-clocksource-selection.patch +++ b/debian/patches-rt/0005-ARM-at91-Implement-clocksource-selection.patch @@ -1,7 +1,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:22 +0200 -Subject: [PATCH 005/353] ARM: at91: Implement clocksource selection -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b6e573dad69145114e6fbfb9b10ed033e8d5023d +Subject: [PATCH 005/354] ARM: at91: Implement clocksource selection +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e801ae7f668cd169f8d460d72f35f94c6d5b911d Allow selecting and unselecting the PIT clocksource driver so it doesn't have to be compile when unused. diff --git a/debian/patches-rt/0006-ARM-configs-at91-use-new-TCB-timer-driver.patch b/debian/patches-rt/0006-ARM-configs-at91-use-new-TCB-timer-driver.patch index ee5b16005..20ef93a34 100644 --- a/debian/patches-rt/0006-ARM-configs-at91-use-new-TCB-timer-driver.patch +++ b/debian/patches-rt/0006-ARM-configs-at91-use-new-TCB-timer-driver.patch @@ -1,7 +1,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:23 +0200 -Subject: [PATCH 006/353] ARM: configs: at91: use new TCB timer driver -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7edca352b55054fcb7a53bdc57bcef99c54ea7c +Subject: [PATCH 006/354] ARM: configs: at91: use new TCB timer driver +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7226807183c1b4b56a28783e444055de25e18c3a Unselecting ATMEL_TCLIB switches the TCB timer driver from tcb_clksrc to timer-atmel-tcb. diff --git a/debian/patches-rt/0007-ARM-configs-at91-unselect-PIT.patch b/debian/patches-rt/0007-ARM-configs-at91-unselect-PIT.patch index 1540c11d9..440c4c366 100644 --- a/debian/patches-rt/0007-ARM-configs-at91-unselect-PIT.patch +++ b/debian/patches-rt/0007-ARM-configs-at91-unselect-PIT.patch @@ -1,7 +1,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com> Date: Thu, 13 Sep 2018 13:30:24 +0200 -Subject: [PATCH 007/353] ARM: configs: at91: unselect PIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6912e32d8641eaf3192f4af0473470c26f0a9cd7 +Subject: [PATCH 007/354] ARM: configs: at91: unselect PIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=55e819d88a02bae2e03ad8727e5b4e4d9cd07652 The PIT is not required anymore to successfully boot and may actually harm in case preempt-rt is used because the PIT interrupt is shared. diff --git a/debian/patches-rt/0008-irqchip-gic-v3-its-Move-pending-table-allocation-to-.patch b/debian/patches-rt/0008-irqchip-gic-v3-its-Move-pending-table-allocation-to-.patch index f0ec996b8..739f0621c 100644 --- a/debian/patches-rt/0008-irqchip-gic-v3-its-Move-pending-table-allocation-to-.patch +++ b/debian/patches-rt/0008-irqchip-gic-v3-its-Move-pending-table-allocation-to-.patch @@ -1,8 +1,8 @@ From: Marc Zyngier <marc.zyngier@arm.com> Date: Fri, 27 Jul 2018 13:38:54 +0100 -Subject: [PATCH 008/353] irqchip/gic-v3-its: Move pending table allocation to +Subject: [PATCH 008/354] irqchip/gic-v3-its: Move pending table allocation to init time -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7eb7d255b9739de589d1a2d546c8c1daf5633957 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4e6b70ea06e3e38867c8881d2f396bbfb99d4d5 Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> diff --git a/debian/patches-rt/0009-kthread-convert-worker-lock-to-raw-spinlock.patch b/debian/patches-rt/0009-kthread-convert-worker-lock-to-raw-spinlock.patch index 3f9100f87..7ba33e617 100644 --- a/debian/patches-rt/0009-kthread-convert-worker-lock-to-raw-spinlock.patch +++ b/debian/patches-rt/0009-kthread-convert-worker-lock-to-raw-spinlock.patch @@ -1,7 +1,7 @@ From: Julia Cartwright <julia@ni.com> Date: Fri, 28 Sep 2018 21:03:51 +0000 -Subject: [PATCH 009/353] kthread: convert worker lock to raw spinlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=426a6ad0a12bab66c4e88d71655e74d17e898091 +Subject: [PATCH 009/354] kthread: convert worker lock to raw spinlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d93945b78abb460e9d8216be8c84d0e2e0eebcf4 In order to enable the queuing of kthread work items from hardirq context even when PREEMPT_RT_FULL is enabled, convert the worker diff --git a/debian/patches-rt/0010-crypto-caam-qi-simplify-CGR-allocation-freeing.patch b/debian/patches-rt/0010-crypto-caam-qi-simplify-CGR-allocation-freeing.patch index 3c7dbbab5..ec1944e7f 100644 --- a/debian/patches-rt/0010-crypto-caam-qi-simplify-CGR-allocation-freeing.patch +++ b/debian/patches-rt/0010-crypto-caam-qi-simplify-CGR-allocation-freeing.patch @@ -1,10 +1,10 @@ From: =?UTF-8?q?Horia=20Geant=C4=83?= <horia.geanta@nxp.com> Date: Mon, 8 Oct 2018 14:09:37 +0300 -Subject: [PATCH 010/353] crypto: caam/qi - simplify CGR allocation, freeing +Subject: [PATCH 010/354] crypto: caam/qi - simplify CGR allocation, freeing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40431aa00beeaaf1d2e1f64b45e33a5da2bffb1a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8080c28d1eaf81d1ea79c5edc41dc05ba2fb774a [Upstream commit 29e83c757006fd751966bdc53392bb22d74179c6] diff --git a/debian/patches-rt/0011-sched-fair-Robustify-CFS-bandwidth-timer-locking.patch b/debian/patches-rt/0011-sched-fair-Robustify-CFS-bandwidth-timer-locking.patch index 80da6cd54..d0f4dd605 100644 --- a/debian/patches-rt/0011-sched-fair-Robustify-CFS-bandwidth-timer-locking.patch +++ b/debian/patches-rt/0011-sched-fair-Robustify-CFS-bandwidth-timer-locking.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Mon, 7 Jan 2019 13:52:31 +0100 -Subject: [PATCH 011/353] sched/fair: Robustify CFS-bandwidth timer locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23a5dc393375842c47361eba6404190b31263bfb +Subject: [PATCH 011/354] sched/fair: Robustify CFS-bandwidth timer locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d179a735692f4f5484e6a3bddee1363a64b9015 Traditionally hrtimer callbacks were run with IRQs disabled, but with the introduction of HRTIMER_MODE_SOFT it is possible they run from @@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index eb67f42fb96b..d19981efd980 100644 +index 09f82c84474b..2814b6b085bc 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4644,7 +4644,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) diff --git a/debian/patches-rt/0012-arm-Convert-arm-boot_lock-to-raw.patch b/debian/patches-rt/0012-arm-Convert-arm-boot_lock-to-raw.patch index ae495296f..68cdd6ad5 100644 --- a/debian/patches-rt/0012-arm-Convert-arm-boot_lock-to-raw.patch +++ b/debian/patches-rt/0012-arm-Convert-arm-boot_lock-to-raw.patch @@ -1,7 +1,7 @@ From: Frank Rowand <frank.rowand@am.sony.com> Date: Mon, 19 Sep 2011 14:51:14 -0700 -Subject: [PATCH 012/353] arm: Convert arm boot_lock to raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c17a706b066459255d4cc288052f9ebda6c9ab5 +Subject: [PATCH 012/354] arm: Convert arm boot_lock to raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=86ef4efef85945fbeb65ced345c39a5e2f08085f The arm boot_lock is used by the secondary processor startup code. The locking task is the idle thread, which has idle->sched_class == &idle_sched_class. diff --git a/debian/patches-rt/0013-x86-ioapic-Don-t-let-setaffinity-unmask-threaded-EOI.patch b/debian/patches-rt/0013-x86-ioapic-Don-t-let-setaffinity-unmask-threaded-EOI.patch index 181ea4ef4..7ce31b185 100644 --- a/debian/patches-rt/0013-x86-ioapic-Don-t-let-setaffinity-unmask-threaded-EOI.patch +++ b/debian/patches-rt/0013-x86-ioapic-Don-t-let-setaffinity-unmask-threaded-EOI.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 17 Jul 2018 18:25:31 +0200 -Subject: [PATCH 013/353] x86/ioapic: Don't let setaffinity unmask threaded EOI +Subject: [PATCH 013/354] x86/ioapic: Don't let setaffinity unmask threaded EOI interrupt too early -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6a012e6bfc9f9eee8339a470aedd643034212801 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f52d12d2c35ccba46699bf943a40c95d96ed99da There is an issue with threaded interrupts which are marked ONESHOT and using the fasteoi handler. diff --git a/debian/patches-rt/0014-cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch b/debian/patches-rt/0014-cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch index 368e55003..4dab77b08 100644 --- a/debian/patches-rt/0014-cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch +++ b/debian/patches-rt/0014-cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 3 Jul 2018 18:19:48 +0200 -Subject: [PATCH 014/353] cgroup: use irqsave in cgroup_rstat_flush_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c4d45fc5437cdc3df495f053b7d44a079d97bc19 +Subject: [PATCH 014/354] cgroup: use irqsave in cgroup_rstat_flush_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=70bfad37d0f39ecbf8b404a822c1d4673a575f54 All callers of cgroup_rstat_flush_locked() acquire cgroup_rstat_lock either with spin_lock_irq() or spin_lock_irqsave(). diff --git a/debian/patches-rt/0015-fscache-initialize-cookie-hash-table-raw-spinlocks.patch b/debian/patches-rt/0015-fscache-initialize-cookie-hash-table-raw-spinlocks.patch index 2f3ede44c..b44cda153 100644 --- a/debian/patches-rt/0015-fscache-initialize-cookie-hash-table-raw-spinlocks.patch +++ b/debian/patches-rt/0015-fscache-initialize-cookie-hash-table-raw-spinlocks.patch @@ -1,7 +1,7 @@ From: Clark Williams <williams@redhat.com> Date: Tue, 3 Jul 2018 13:34:30 -0500 -Subject: [PATCH 015/353] fscache: initialize cookie hash table raw spinlocks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d03db0ce50498e8f1128f15f1a7fff44e93dd108 +Subject: [PATCH 015/354] fscache: initialize cookie hash table raw spinlocks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fc6bd06feaaf1c2b40eb717811372015b3fd688e The fscache cookie mechanism uses a hash table of hlist_bl_head structures. The PREEMPT_RT patcheset adds a raw spinlock to this structure and so on PREEMPT_RT diff --git a/debian/patches-rt/0016-Drivers-hv-vmbus-include-header-for-get_irq_regs.patch b/debian/patches-rt/0016-Drivers-hv-vmbus-include-header-for-get_irq_regs.patch index 34ab476ce..1b407659a 100644 --- a/debian/patches-rt/0016-Drivers-hv-vmbus-include-header-for-get_irq_regs.patch +++ b/debian/patches-rt/0016-Drivers-hv-vmbus-include-header-for-get_irq_regs.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 29 Aug 2018 21:59:04 +0200 -Subject: [PATCH 016/353] Drivers: hv: vmbus: include header for get_irq_regs() +Subject: [PATCH 016/354] Drivers: hv: vmbus: include header for get_irq_regs() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b46679c0fc54720038289996be8974e624a51fec +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92f735fd5c2ea2871d7cbc3bc6b55a16f8550e33 On !RT the header file get_irq_regs() gets pulled in via other header files. On RT it does not and the build fails: diff --git a/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch b/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch index bce3fc9cd..898d107f7 100644 --- a/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch +++ b/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 11 Oct 2018 16:39:59 +0200 -Subject: [PATCH 017/353] percpu: include irqflags.h for raw_local_irq_save() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb2ad05fbeed482adb367eac354f01a14ce422c2 +Subject: [PATCH 017/354] percpu: include irqflags.h for raw_local_irq_save() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53bbbbe9659b13c02ba44eb2f53d6986bdd68851 The header percpu.h header file is using raw_local_irq_save() but does not include irqflags.h for its definition. It compiles because the diff --git a/debian/patches-rt/0018-efi-Allow-efi-runtime.patch b/debian/patches-rt/0018-efi-Allow-efi-runtime.patch index 3c155da1f..19919e76e 100644 --- a/debian/patches-rt/0018-efi-Allow-efi-runtime.patch +++ b/debian/patches-rt/0018-efi-Allow-efi-runtime.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 26 Jul 2018 15:06:10 +0200 -Subject: [PATCH 018/353] efi: Allow efi=runtime -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=44fb3795b5644ac330f53e863dfde7a740256b5a +Subject: [PATCH 018/354] efi: Allow efi=runtime +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f5b03c011b045300ed7880a711281f98c428408 In case the option "efi=noruntime" is default at built-time, the user could overwrite its sate by `efi=runtime' and allow it again. diff --git a/debian/patches-rt/0019-x86-efi-drop-task_lock-from-efi_switch_mm.patch b/debian/patches-rt/0019-x86-efi-drop-task_lock-from-efi_switch_mm.patch index 0782f485c..2ef0ae68a 100644 --- a/debian/patches-rt/0019-x86-efi-drop-task_lock-from-efi_switch_mm.patch +++ b/debian/patches-rt/0019-x86-efi-drop-task_lock-from-efi_switch_mm.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 24 Jul 2018 14:48:55 +0200 -Subject: [PATCH 019/353] x86/efi: drop task_lock() from efi_switch_mm() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d393f40689a14bc6d2304d35d22407d42a7f4ba +Subject: [PATCH 019/354] x86/efi: drop task_lock() from efi_switch_mm() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d40441a7b61dd9d7b060e96cfe714dd4bda746d1 efi_switch_mm() is a wrapper around switch_mm() which saves current's ->active_mm, sets the requests mm as ->active_mm and invokes diff --git a/debian/patches-rt/0020-arm64-KVM-compute_layout-before-altenates-are-applie.patch b/debian/patches-rt/0020-arm64-KVM-compute_layout-before-altenates-are-applie.patch index 0f9c80095..3a63d7365 100644 --- a/debian/patches-rt/0020-arm64-KVM-compute_layout-before-altenates-are-applie.patch +++ b/debian/patches-rt/0020-arm64-KVM-compute_layout-before-altenates-are-applie.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 26 Jul 2018 09:13:42 +0200 -Subject: [PATCH 020/353] arm64: KVM: compute_layout before altenates are +Subject: [PATCH 020/354] arm64: KVM: compute_layout before altenates are applied -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1a36d8911d9802ee0c9687be2029e83d2a30d67 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1b63d74e373eab981172b5f33c39d72977a5e828 compute_layout() is invoked as part of an alternative fixup under stop_machine() and needs a sleeping lock as part of get_random_long(). diff --git a/debian/patches-rt/0021-of-allocate-free-phandle-cache-outside-of-the-devtre.patch b/debian/patches-rt/0021-of-allocate-free-phandle-cache-outside-of-the-devtre.patch index d1ccfb0f4..87d930c63 100644 --- a/debian/patches-rt/0021-of-allocate-free-phandle-cache-outside-of-the-devtre.patch +++ b/debian/patches-rt/0021-of-allocate-free-phandle-cache-outside-of-the-devtre.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 31 Aug 2018 14:16:30 +0200 -Subject: [PATCH 021/353] of: allocate / free phandle cache outside of the +Subject: [PATCH 021/354] of: allocate / free phandle cache outside of the devtree_lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bb46fdc2bedd1a8eaa5e58329d772011b6026d47 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=81834521ea1fe3cb3881b516e1aa1043bc72bbc5 The phandle cache code allocates memory while holding devtree_lock which is a raw_spinlock_t. Memory allocation (and free()) is not possible on diff --git a/debian/patches-rt/0022-mm-kasan-make-quarantine_lock-a-raw_spinlock_t.patch b/debian/patches-rt/0022-mm-kasan-make-quarantine_lock-a-raw_spinlock_t.patch index 8da97a0f7..560a44c36 100644 --- a/debian/patches-rt/0022-mm-kasan-make-quarantine_lock-a-raw_spinlock_t.patch +++ b/debian/patches-rt/0022-mm-kasan-make-quarantine_lock-a-raw_spinlock_t.patch @@ -1,7 +1,7 @@ From: Clark Williams <williams@redhat.com> Date: Tue, 18 Sep 2018 10:29:31 -0500 -Subject: [PATCH 022/353] mm/kasan: make quarantine_lock a raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d17525668576fe63e80d4280e6f71cff37a8d9f5 +Subject: [PATCH 022/354] mm/kasan: make quarantine_lock a raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b8e41588ab5abaf6ae8c3725d84dcbe8d350ba74 The static lock quarantine_lock is used in quarantine.c to protect the quarantine queue datastructures. It is taken inside quarantine queue diff --git a/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch b/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch index 22f2c4437..d94286fc0 100644 --- a/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch +++ b/debian/patches-rt/0023-EXP-rcu-Revert-expedited-GP-parallelization-cleverne.patch @@ -1,8 +1,8 @@ From: "Paul E. McKenney" <paulmck@linux.ibm.com> Date: Mon, 29 Oct 2018 11:53:01 +0100 -Subject: [PATCH 023/353] EXP rcu: Revert expedited GP parallelization +Subject: [PATCH 023/354] EXP rcu: Revert expedited GP parallelization cleverness -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35450487569b7f5812ed1106763a3f2bfe8b0cb4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a50ce8827ef45c837089678792dc22371a4715bd (Commit 258ba8e089db23f760139266c232f01bad73f85c from linux-rcu) diff --git a/debian/patches-rt/0024-kmemleak-Turn-kmemleak_lock-to-raw-spinlock-on-RT.patch b/debian/patches-rt/0024-kmemleak-Turn-kmemleak_lock-to-raw-spinlock-on-RT.patch index 5e1db1970..d255a2038 100644 --- a/debian/patches-rt/0024-kmemleak-Turn-kmemleak_lock-to-raw-spinlock-on-RT.patch +++ b/debian/patches-rt/0024-kmemleak-Turn-kmemleak_lock-to-raw-spinlock-on-RT.patch @@ -1,10 +1,10 @@ From: He Zhe <zhe.he@windriver.com> Date: Wed, 19 Dec 2018 16:30:57 +0100 -Subject: [PATCH 024/353] kmemleak: Turn kmemleak_lock to raw spinlock on RT +Subject: [PATCH 024/354] kmemleak: Turn kmemleak_lock to raw spinlock on RT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2acd572061a0e1c538e61064e794da7ecb5f3b1d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aaca0331f02dfc36b0ca67ea9c0da7300a9daa4f kmemleak_lock, as a rwlock on RT, can possibly be held in atomic context and causes the follow BUG. diff --git a/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch b/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch index 95f7193d7..af2661f93 100644 --- a/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch +++ b/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 28 Oct 2016 23:05:11 +0200 -Subject: [PATCH 025/353] NFSv4: replace seqcount_t with a seqlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9de4c145bdbac174d7d6cfc31a27cb41edc0fac9 +Subject: [PATCH 025/354] NFSv4: replace seqcount_t with a seqlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bdd80b6fd4062ece2f62209386f07b7883ea1e66 The raw_write_seqcount_begin() in nfs4_reclaim_open_state() bugs me because it maps to preempt_disable() in -RT which I can't have at this @@ -57,7 +57,7 @@ index 2d438318681a..e6cecc00c379 100644 }; diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index 3651619468d7..f9d3fcb007a5 100644 +index c44efead1a32..d908f51e0149 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2882,7 +2882,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, diff --git a/debian/patches-rt/0026-kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch b/debian/patches-rt/0026-kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch index ff72663d5..f7f6ca669 100644 --- a/debian/patches-rt/0026-kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch +++ b/debian/patches-rt/0026-kernel-sched-Provide-a-pointer-to-the-valid-CPU-mask.patch @@ -1,11 +1,11 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 4 Apr 2017 12:50:16 +0200 -Subject: [PATCH 026/353] kernel: sched: Provide a pointer to the valid CPU +Subject: [PATCH 026/354] kernel: sched: Provide a pointer to the valid CPU mask MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=00783413cf324a173918f6f46c53eb248a11de23 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=118cce869ba59f58717eb40f3ac2a72e4e97e71e In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not @@ -209,7 +209,7 @@ index bb670249bebf..deced4654e66 100644 current->pid, current->comm, cpumask_pr_args(proc_mask)); diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c -index 33ff9eca28f6..6115a9902435 100644 +index 245f9505a9ac..f5f97eeb4056 100644 --- a/drivers/infiniband/hw/hfi1/sdma.c +++ b/drivers/infiniband/hw/hfi1/sdma.c @@ -853,14 +853,13 @@ struct sdma_engine *sdma_select_user_engine(struct hfi1_devdata *dd, @@ -572,7 +572,7 @@ index 29ed5d8d30d6..9243d0049714 100644 !dl_task(task) || !task_on_rq_queued(task))) { diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index d19981efd980..bd9a375c45f4 100644 +index 2814b6b085bc..3f6a613be8c3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1691,7 +1691,7 @@ static void task_numa_compare(struct task_numa_env *env, @@ -719,10 +719,10 @@ index d19981efd980..bd9a375c45f4 100644 flags); env.flags |= LBF_ALL_PINNED; diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 9c6c3572b131..a068884c369f 100644 +index 394c66442cff..0768ba9d2860 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c -@@ -1623,7 +1623,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) +@@ -1626,7 +1626,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) static int pick_rt_task(struct rq *rq, struct task_struct *p, int cpu) { if (!task_running(rq, p) && @@ -731,7 +731,7 @@ index 9c6c3572b131..a068884c369f 100644 return 1; return 0; -@@ -1760,7 +1760,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) +@@ -1763,7 +1763,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) * Also make sure that it wasn't scheduled on its rq. */ if (unlikely(task_rq(task) != rq || diff --git a/debian/patches-rt/0027-kernel-sched-core-add-migrate_disable.patch b/debian/patches-rt/0027-kernel-sched-core-add-migrate_disable.patch index ecffbbe5f..045483bf3 100644 --- a/debian/patches-rt/0027-kernel-sched-core-add-migrate_disable.patch +++ b/debian/patches-rt/0027-kernel-sched-core-add-migrate_disable.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Sat, 27 May 2017 19:02:06 +0200 -Subject: [PATCH 027/353] kernel/sched/core: add migrate_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=851169d906dda13e32de30f8fa91f2328d908f14 +Subject: [PATCH 027/354] kernel/sched/core: add migrate_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0aa14e0bb24532aa6862ed0dc4e5c029f10227fa --- include/linux/preempt.h | 23 +++++++ @@ -12,7 +12,7 @@ Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/comm 5 files changed, 165 insertions(+), 2 deletions(-) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index c01813c3fbe9..3196d0e76719 100644 +index abeec72b4d35..9d3e416fe497 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -185,6 +185,22 @@ do { \ diff --git a/debian/patches-rt/0028-sched-migrate_disable-Add-export_symbol_gpl-for-__mi.patch b/debian/patches-rt/0028-sched-migrate_disable-Add-export_symbol_gpl-for-__mi.patch index efc393758..1b9958255 100644 --- a/debian/patches-rt/0028-sched-migrate_disable-Add-export_symbol_gpl-for-__mi.patch +++ b/debian/patches-rt/0028-sched-migrate_disable-Add-export_symbol_gpl-for-__mi.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 9 Oct 2018 17:34:50 +0200 -Subject: [PATCH 028/353] sched/migrate_disable: Add export_symbol_gpl for +Subject: [PATCH 028/354] sched/migrate_disable: Add export_symbol_gpl for __migrate_disabled -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41cf8452f8cc8846c42387f5730f027836b38946 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95abb61946ae6f3c3fdf8f16fd77322b4f38582a Jonathan reported that lttng/modules can't use __migrate_disabled(). This function is only used by sched/core itself and the tracing diff --git a/debian/patches-rt/0029-arm-at91-do-not-disable-enable-clocks-in-a-row.patch b/debian/patches-rt/0029-arm-at91-do-not-disable-enable-clocks-in-a-row.patch index 0900d4057..1e41e94d1 100644 --- a/debian/patches-rt/0029-arm-at91-do-not-disable-enable-clocks-in-a-row.patch +++ b/debian/patches-rt/0029-arm-at91-do-not-disable-enable-clocks-in-a-row.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 9 Mar 2016 10:51:06 +0100 -Subject: [PATCH 029/353] arm: at91: do not disable/enable clocks in a row -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2de0b355b47912313998dc17af34f926e24fcb9b +Subject: [PATCH 029/354] arm: at91: do not disable/enable clocks in a row +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da9445fe136103f82bd20d49f344d448f1c80d88 Currently the driver will disable the clock and enable it one line later if it is switching from periodic mode into one shot. @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c -index 43f4d5c4d6fa..de6baf564dfe 100644 +index 998d9115add6..a9ba3cd24a67 100644 --- a/drivers/clocksource/tcb_clksrc.c +++ b/drivers/clocksource/tcb_clksrc.c @@ -126,6 +126,7 @@ static struct clocksource clksrc = { diff --git a/debian/patches-rt/0030-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch b/debian/patches-rt/0030-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch index 2063f79e1..d7136f330 100644 --- a/debian/patches-rt/0030-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch +++ b/debian/patches-rt/0030-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch @@ -1,11 +1,11 @@ From: Benedikt Spranger <b.spranger@linutronix.de> Date: Mon, 8 Mar 2010 18:57:04 +0100 -Subject: [PATCH 030/353] clocksource: TCLIB: Allow higher clock rates for +Subject: [PATCH 030/354] clocksource: TCLIB: Allow higher clock rates for clock events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=baee7768ee1f5b5c11151866389ccd758e799a26 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9f50fd4beefe484f198ca1ddf3585b9143b012f As default the TCLIB uses the 32KiHz base clock rate for clock events. Add a compile time selection to allow higher clock resulution. @@ -20,7 +20,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c -index de6baf564dfe..ba15242a6066 100644 +index a9ba3cd24a67..3f364ed57935 100644 --- a/drivers/clocksource/tcb_clksrc.c +++ b/drivers/clocksource/tcb_clksrc.c @@ -25,8 +25,7 @@ @@ -122,7 +122,7 @@ index de6baf564dfe..ba15242a6066 100644 return ret; } -@@ -435,7 +437,11 @@ static int __init tcb_clksrc_init(void) +@@ -436,7 +438,11 @@ static int __init tcb_clksrc_init(void) goto err_disable_t1; /* channel 2: periodic and oneshot timer support */ diff --git a/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch b/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch index d816ecd3b..4cc885b00 100644 --- a/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch +++ b/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 14 Feb 2013 22:36:59 +0100 -Subject: [PATCH 031/353] timekeeping: Split jiffies seqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e67616dbfa0b4e559a51d108930dbdf3b5ec8a8e +Subject: [PATCH 031/354] timekeeping: Split jiffies seqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fbd37b3a06031c2ac2b59675834a623c5f0cc32 Replace jiffies_lock seqlock with a simple seqcounter and a rawlock so it can be taken in atomic context on RT. diff --git a/debian/patches-rt/0032-signal-Revert-ptrace-preempt-magic.patch b/debian/patches-rt/0032-signal-Revert-ptrace-preempt-magic.patch index ebd057fb3..7bf037105 100644 --- a/debian/patches-rt/0032-signal-Revert-ptrace-preempt-magic.patch +++ b/debian/patches-rt/0032-signal-Revert-ptrace-preempt-magic.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 21 Sep 2011 19:57:12 +0200 -Subject: [PATCH 032/353] signal: Revert ptrace preempt magic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=644d41a2ad0eeb0b4c8f45d97302becdc9270125 +Subject: [PATCH 032/354] signal: Revert ptrace preempt magic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=153566887fab3e93e10339c0b3d8cc23f921b8da Upstream commit '53da1d9456fe7f8 fix ptrace slowness' is nothing more than a bandaid around the ptrace design trainwreck. It's not a diff --git a/debian/patches-rt/0033-net-sched-Use-msleep-instead-of-yield.patch b/debian/patches-rt/0033-net-sched-Use-msleep-instead-of-yield.patch index a795a7730..e1703b62c 100644 --- a/debian/patches-rt/0033-net-sched-Use-msleep-instead-of-yield.patch +++ b/debian/patches-rt/0033-net-sched-Use-msleep-instead-of-yield.patch @@ -1,7 +1,7 @@ From: Marc Kleine-Budde <mkl@pengutronix.de> Date: Wed, 5 Mar 2014 00:49:47 +0100 -Subject: [PATCH 033/353] net: sched: Use msleep() instead of yield() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a2606d8cca4f1676f8e4428ac09a81adb99272e +Subject: [PATCH 033/354] net: sched: Use msleep() instead of yield() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c872ce657d413044d7a779f3ae549565df0e0bee On PREEMPT_RT enabled systems the interrupt handler run as threads at prio 50 (by default). If a high priority userspace process tries to shut down a busy diff --git a/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch b/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch index 06535faa3..416f340b0 100644 --- a/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch +++ b/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 27 Mar 2018 16:24:15 +0200 -Subject: [PATCH 034/353] dm rq: remove BUG_ON(!irqs_disabled) check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a4df0ffc36cba9a71e739f5838df2eb08896256 +Subject: [PATCH 034/354] dm rq: remove BUG_ON(!irqs_disabled) check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5416350ddb9932f9225dc0a1f73aae78f476a89a In commit 052189a2ec95 ("dm: remove superfluous irq disablement in dm_request_fn") the spin_lock_irq() was replaced with spin_lock() + a diff --git a/debian/patches-rt/0035-usb-do-no-disable-interrupts-in-giveback.patch b/debian/patches-rt/0035-usb-do-no-disable-interrupts-in-giveback.patch index 02f48203c..3073c0f78 100644 --- a/debian/patches-rt/0035-usb-do-no-disable-interrupts-in-giveback.patch +++ b/debian/patches-rt/0035-usb-do-no-disable-interrupts-in-giveback.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 8 Nov 2013 17:34:54 +0100 -Subject: [PATCH 035/353] usb: do no disable interrupts in giveback -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=476b0e55e05f6dadc236e6f568f66c0907218ea2 +Subject: [PATCH 035/354] usb: do no disable interrupts in giveback +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=20c76a4d6ea56aceee98fe4a680f629fba675f39 Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet context") the USB code disables interrupts before invoking the complete diff --git a/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch b/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch index 13d19f8de..fb87af603 100644 --- a/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch +++ b/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 17 Jun 2011 12:39:57 +0200 -Subject: [PATCH 036/353] rt: Provide PREEMPT_RT_BASE config switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b0d131d186abf19fa4f22052f09aa9d1e4b8e67d +Subject: [PATCH 036/354] rt: Provide PREEMPT_RT_BASE config switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3cbb77ea49a343d86fc9db411aa4c3a5b62e0e55 Introduce PREEMPT_RT_BASE which enables parts of PREEMPT_RT_FULL. Forces interrupt threading and enables some of the RT diff --git a/debian/patches-rt/0037-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch b/debian/patches-rt/0037-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch index 18adcb82b..ded3fbc60 100644 --- a/debian/patches-rt/0037-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch +++ b/debian/patches-rt/0037-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 14 Dec 2011 01:03:49 +0100 -Subject: [PATCH 037/353] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa9cb2fbe6f5b5c488e7e709e18adf4cf45069eb +Subject: [PATCH 037/354] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51346d000e9dc2d42d8ae29ed226e0daaa74d4c2 There are "valid" GFP_ATOMIC allocations such as @@ -46,10 +46,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index be4403a8e1b4..a8ec5d0c024e 100644 +index 9fd2e3c2494a..c33cdb5bbf60 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -935,7 +935,7 @@ config CALGARY_IOMMU_ENABLED_BY_DEFAULT +@@ -936,7 +936,7 @@ config CALGARY_IOMMU_ENABLED_BY_DEFAULT config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes" depends on X86_64 && SMP && DEBUG_KERNEL diff --git a/debian/patches-rt/0038-jump-label-disable-if-stop_machine-is-used.patch b/debian/patches-rt/0038-jump-label-disable-if-stop_machine-is-used.patch index 2d36bb291..4b4779b93 100644 --- a/debian/patches-rt/0038-jump-label-disable-if-stop_machine-is-used.patch +++ b/debian/patches-rt/0038-jump-label-disable-if-stop_machine-is-used.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 8 Jul 2015 17:14:48 +0200 -Subject: [PATCH 038/353] jump-label: disable if stop_machine() is used -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7475498ce7b14345b197402b874347c3a8a55075 +Subject: [PATCH 038/354] jump-label: disable if stop_machine() is used +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5c249f153a374e1dcb6fa4ca4a19ceb8679b2060 Some architectures are using stop_machine() while switching the opcode which leads to latency spikes. @@ -24,10 +24,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 41bde0e62e90..48f7fcbe2f37 100644 +index 9b075719a7d9..96a5fa956e9b 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -51,7 +51,7 @@ config ARM +@@ -52,7 +52,7 @@ config ARM select HARDIRQS_SW_RESEND select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 diff --git a/debian/patches-rt/0039-kconfig-Disable-config-options-which-are-not-RT-comp.patch b/debian/patches-rt/0039-kconfig-Disable-config-options-which-are-not-RT-comp.patch index 092b6ffb0..413c4ae44 100644 --- a/debian/patches-rt/0039-kconfig-Disable-config-options-which-are-not-RT-comp.patch +++ b/debian/patches-rt/0039-kconfig-Disable-config-options-which-are-not-RT-comp.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 24 Jul 2011 12:11:43 +0200 -Subject: [PATCH 039/353] kconfig: Disable config options which are not RT +Subject: [PATCH 039/354] kconfig: Disable config options which are not RT compatible -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78e60f97bd4dc81d3b289ce9ba3bd50e6496b917 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=584a33635c1052a87eec55e66183751bb23d8d2e Disable stuff which is known to have issues on RT @@ -13,7 +13,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/Kconfig b/arch/Kconfig -index dd71b34fe4f5..f53e81602922 100644 +index 6e77e795517d..7aa61cc39d66 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -28,6 +28,7 @@ config OPROFILE diff --git a/debian/patches-rt/0040-lockdep-disable-self-test.patch b/debian/patches-rt/0040-lockdep-disable-self-test.patch index 5367e26e1..130320e8e 100644 --- a/debian/patches-rt/0040-lockdep-disable-self-test.patch +++ b/debian/patches-rt/0040-lockdep-disable-self-test.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 17 Oct 2017 16:36:18 +0200 -Subject: [PATCH 040/353] lockdep: disable self-test +Subject: [PATCH 040/354] lockdep: disable self-test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d493518f5ac0489a49fbb9c7768b49f43ed1add +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ecc35b769047b939a39ec23ec401814bbb79e3df The self-test wasn't always 100% accurate for RT. We disabled a few tests which failed because they had a different semantic for RT. Some diff --git a/debian/patches-rt/0041-mm-Allow-only-slub-on-RT.patch b/debian/patches-rt/0041-mm-Allow-only-slub-on-RT.patch index b90f803b6..f2894854d 100644 --- a/debian/patches-rt/0041-mm-Allow-only-slub-on-RT.patch +++ b/debian/patches-rt/0041-mm-Allow-only-slub-on-RT.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:44:03 -0500 -Subject: [PATCH 041/353] mm: Allow only slub on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb3b6e45e3f58dd010c7238697d1cf1a971f71e1 +Subject: [PATCH 041/354] mm: Allow only slub on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e42c139b4936e86894557651d1b38cdd4be53a7 Disable SLAB and SLOB on -RT. Only SLUB is adopted to -RT needs. diff --git a/debian/patches-rt/0042-locking-Disable-spin-on-owner-for-RT.patch b/debian/patches-rt/0042-locking-Disable-spin-on-owner-for-RT.patch index 88a1efae0..87007b2bc 100644 --- a/debian/patches-rt/0042-locking-Disable-spin-on-owner-for-RT.patch +++ b/debian/patches-rt/0042-locking-Disable-spin-on-owner-for-RT.patch @@ -1,10 +1,10 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 21:51:45 +0200 -Subject: [PATCH 042/353] locking: Disable spin on owner for RT +Subject: [PATCH 042/354] locking: Disable spin on owner for RT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af47a49386367ed0b848f393f5e6136cd83b69a5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c3ba92a80bbac5ad34982e9ab4d63123bdd4c5e Drop spin on owner for mutex / rwsem. We are most likely not using it but… diff --git a/debian/patches-rt/0043-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch b/debian/patches-rt/0043-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch index d96043a68..c97d0ef9e 100644 --- a/debian/patches-rt/0043-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch +++ b/debian/patches-rt/0043-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 28 Oct 2012 13:26:09 +0000 -Subject: [PATCH 043/353] rcu: Disable RCU_FAST_NO_HZ on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=807f7c93f7edb3fcca92051a329ae6c108de6b36 +Subject: [PATCH 043/354] rcu: Disable RCU_FAST_NO_HZ on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0ac62221fb175580cfd6d4cf41a4ed2c3f2e56b This uses a timer_list timer from the irq disabled guts of the idle code. Disable it for now to prevent wreckage. diff --git a/debian/patches-rt/0044-rcu-make-RCU_BOOST-default-on-RT.patch b/debian/patches-rt/0044-rcu-make-RCU_BOOST-default-on-RT.patch index 7eefd7726..4b03ecd59 100644 --- a/debian/patches-rt/0044-rcu-make-RCU_BOOST-default-on-RT.patch +++ b/debian/patches-rt/0044-rcu-make-RCU_BOOST-default-on-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Mar 2014 20:19:05 +0100 -Subject: [PATCH 044/353] rcu: make RCU_BOOST default on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b2d814594a0f22fef63b73eaa88d1ef3ba9e002 +Subject: [PATCH 044/354] rcu: make RCU_BOOST default on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4b8701bc61e2f689a33e0d0b3498e84a1cde68e6 Since it is no longer invoked from the softirq people run into OOM more often if the priority of the RCU thread is too low. Making boosting diff --git a/debian/patches-rt/0045-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch b/debian/patches-rt/0045-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch index 400617a80..cbc2958ed 100644 --- a/debian/patches-rt/0045-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch +++ b/debian/patches-rt/0045-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 18 Jul 2011 17:03:52 +0200 -Subject: [PATCH 045/353] sched: Disable CONFIG_RT_GROUP_SCHED on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b8c020a966bafec876d590b4a2fd9f7801e23d5a +Subject: [PATCH 045/354] sched: Disable CONFIG_RT_GROUP_SCHED on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99cae2f5fe3de2754132778ae2de245cc2b0fb3b Carsten reported problems when running: diff --git a/debian/patches-rt/0046-net-core-disable-NET_RX_BUSY_POLL.patch b/debian/patches-rt/0046-net-core-disable-NET_RX_BUSY_POLL.patch index 6f0477790..381a0bad1 100644 --- a/debian/patches-rt/0046-net-core-disable-NET_RX_BUSY_POLL.patch +++ b/debian/patches-rt/0046-net-core-disable-NET_RX_BUSY_POLL.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Sat, 27 May 2017 19:02:06 +0200 -Subject: [PATCH 046/353] net/core: disable NET_RX_BUSY_POLL +Subject: [PATCH 046/354] net/core: disable NET_RX_BUSY_POLL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c91e1d483f6d2e075683470a7e46a305c83a564c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4eec6dbe20db90fc9b5f39d1a97cc07bba43a39e sk_busy_loop() does preempt_disable() followed by a few operations which can take sleeping locks and may get long. @@ -20,10 +20,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/Kconfig b/net/Kconfig -index 228dfa382eec..bc8d01996f22 100644 +index 4bef62b4c806..490db7aef080 100644 --- a/net/Kconfig +++ b/net/Kconfig -@@ -275,7 +275,7 @@ config CGROUP_NET_CLASSID +@@ -273,7 +273,7 @@ config CGROUP_NET_CLASSID config NET_RX_BUSY_POLL bool diff --git a/debian/patches-rt/0047-arm-disable-NEON-in-kernel-mode.patch b/debian/patches-rt/0047-arm-disable-NEON-in-kernel-mode.patch index 4a2db17b6..ab9e881f8 100644 --- a/debian/patches-rt/0047-arm-disable-NEON-in-kernel-mode.patch +++ b/debian/patches-rt/0047-arm-disable-NEON-in-kernel-mode.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 1 Dec 2017 10:42:03 +0100 -Subject: [PATCH 047/353] arm*: disable NEON in kernel mode -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7239775653422e6ae509eb044c2e29549918751a +Subject: [PATCH 047/354] arm*: disable NEON in kernel mode +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f6f76a78d61981535e6eefb0acce1f7d2c25161 NEON in kernel mode is used by the crypto algorithms and raid6 code. While the raid6 code looks okay, the crypto algorithms do not: NEON @@ -20,10 +20,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 48f7fcbe2f37..d411fbbf13f0 100644 +index 96a5fa956e9b..d105a362d1ac 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -2165,7 +2165,7 @@ config NEON +@@ -2166,7 +2166,7 @@ config NEON config KERNEL_MODE_NEON bool "Support for NEON in kernel mode" diff --git a/debian/patches-rt/0048-powerpc-Use-generic-rwsem-on-RT.patch b/debian/patches-rt/0048-powerpc-Use-generic-rwsem-on-RT.patch index db78ee0b7..e6014f126 100644 --- a/debian/patches-rt/0048-powerpc-Use-generic-rwsem-on-RT.patch +++ b/debian/patches-rt/0048-powerpc-Use-generic-rwsem-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 048/353] powerpc: Use generic rwsem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51c73f280c36dda381651f877c21f25d176c2578 +Subject: [PATCH 048/354] powerpc: Use generic rwsem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9cf4b3cb52777ec9bfbd96ec42b3f1fc7161a25 Use generic code which uses rtmutex @@ -11,7 +11,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index f0e09d5f0bed..d6aae022d8c3 100644 +index 3be56d857d57..f4518b8a072b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -105,10 +105,11 @@ config LOCKDEP_SUPPORT diff --git a/debian/patches-rt/0049-powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch b/debian/patches-rt/0049-powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch index 1559437a0..0f2ad849a 100644 --- a/debian/patches-rt/0049-powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch +++ b/debian/patches-rt/0049-powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch @@ -1,8 +1,8 @@ From: Bogdan Purcareata <bogdan.purcareata@freescale.com> Date: Fri, 24 Apr 2015 15:53:13 +0000 -Subject: [PATCH 049/353] powerpc/kvm: Disable in-kernel MPIC emulation for +Subject: [PATCH 049/354] powerpc/kvm: Disable in-kernel MPIC emulation for PREEMPT_RT_FULL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d2178c38f47591486742dfaf8fef2b79fd85967a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=953ce30c2d9f83e2196c729ec5c2751b9b5974b7 While converting the openpic emulation code to use a raw_spinlock_t enables guests to run on RT, there's still a performance issue. For interrupts sent in diff --git a/debian/patches-rt/0050-powerpc-Disable-highmem-on-RT.patch b/debian/patches-rt/0050-powerpc-Disable-highmem-on-RT.patch index c08c00eae..86caa6ab9 100644 --- a/debian/patches-rt/0050-powerpc-Disable-highmem-on-RT.patch +++ b/debian/patches-rt/0050-powerpc-Disable-highmem-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 18 Jul 2011 17:08:34 +0200 -Subject: [PATCH 050/353] powerpc: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=881dee687f9b7382c752cad0833c67629c3e88fb +Subject: [PATCH 050/354] powerpc: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36e07675ce9495c0f1fd8450b52c92e0c15a5823 The current highmem handling on -RT is not compatible and needs fixups. @@ -11,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index d6aae022d8c3..f4517f4be192 100644 +index f4518b8a072b..cd338d971df2 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -400,7 +400,7 @@ menu "Kernel options" +@@ -401,7 +401,7 @@ menu "Kernel options" config HIGHMEM bool "High memory support" diff --git a/debian/patches-rt/0051-mips-Disable-highmem-on-RT.patch b/debian/patches-rt/0051-mips-Disable-highmem-on-RT.patch index 340ce777f..9061234e2 100644 --- a/debian/patches-rt/0051-mips-Disable-highmem-on-RT.patch +++ b/debian/patches-rt/0051-mips-Disable-highmem-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 18 Jul 2011 17:10:12 +0200 -Subject: [PATCH 051/353] mips: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e8faa268480a65b8ec2bc9731d9488ab238e5eee +Subject: [PATCH 051/354] mips: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b58be7fafe13fa007c6be9aa57a2efa62b2757f0 The current highmem handling on -RT is not compatible and needs fixups. @@ -11,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 8a227a80f6bd..bbd790058e46 100644 +index 8d1d065aac35..68bfe86b5aa8 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2523,7 +2523,7 @@ config MIPS_CRC_SUPPORT +@@ -2524,7 +2524,7 @@ config MIPS_CRC_SUPPORT # config HIGHMEM bool "High Memory Support" diff --git a/debian/patches-rt/0052-x86-Use-generic-rwsem_spinlocks-on-rt.patch b/debian/patches-rt/0052-x86-Use-generic-rwsem_spinlocks-on-rt.patch index 38b04824e..55f030e8c 100644 --- a/debian/patches-rt/0052-x86-Use-generic-rwsem_spinlocks-on-rt.patch +++ b/debian/patches-rt/0052-x86-Use-generic-rwsem_spinlocks-on-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 26 Jul 2009 02:21:32 +0200 -Subject: [PATCH 052/353] x86: Use generic rwsem_spinlocks on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c2d67e579a50998e69e63fc2e1d3b93ddecc564 +Subject: [PATCH 052/354] x86: Use generic rwsem_spinlocks on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7a9d74efed62faabbd429f85e9a0a26d864ec999 Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. @@ -12,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index a8ec5d0c024e..6ee7220e7f47 100644 +index c33cdb5bbf60..d2702e568153 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -264,8 +264,11 @@ config ARCH_MAY_HAVE_PC_FDC +@@ -265,8 +265,11 @@ config ARCH_MAY_HAVE_PC_FDC def_bool y depends on ISA_DMA_API diff --git a/debian/patches-rt/0053-leds-trigger-disable-CPU-trigger-on-RT.patch b/debian/patches-rt/0053-leds-trigger-disable-CPU-trigger-on-RT.patch index 8cb7e3811..61e2031b0 100644 --- a/debian/patches-rt/0053-leds-trigger-disable-CPU-trigger-on-RT.patch +++ b/debian/patches-rt/0053-leds-trigger-disable-CPU-trigger-on-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 23 Jan 2014 14:45:59 +0100 -Subject: [PATCH 053/353] leds: trigger: disable CPU trigger on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7a8d66dd761a516e265202481b854fff78c6b1b6 +Subject: [PATCH 053/354] leds: trigger: disable CPU trigger on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd2fc615fc4835279134c51053e56919925d551e as it triggers: |CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.8-rt10 #141 diff --git a/debian/patches-rt/0054-cpufreq-drop-K8-s-driver-from-beeing-selected.patch b/debian/patches-rt/0054-cpufreq-drop-K8-s-driver-from-beeing-selected.patch index cfeda51ca..7a20aa79e 100644 --- a/debian/patches-rt/0054-cpufreq-drop-K8-s-driver-from-beeing-selected.patch +++ b/debian/patches-rt/0054-cpufreq-drop-K8-s-driver-from-beeing-selected.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 9 Apr 2015 15:23:01 +0200 -Subject: [PATCH 054/353] cpufreq: drop K8's driver from beeing selected -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=69b2bc87d938e2f7c48cfae26f1bde516298648f +Subject: [PATCH 054/354] cpufreq: drop K8's driver from beeing selected +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d488ef98e1f108232f15eb23ea95ffbd29176adb Ralf posted a picture of a backtrace from diff --git a/debian/patches-rt/0055-md-disable-bcache.patch b/debian/patches-rt/0055-md-disable-bcache.patch index afe7f1fc4..27d7e36e1 100644 --- a/debian/patches-rt/0055-md-disable-bcache.patch +++ b/debian/patches-rt/0055-md-disable-bcache.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 29 Aug 2013 11:48:57 +0200 -Subject: [PATCH 055/353] md: disable bcache +Subject: [PATCH 055/354] md: disable bcache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f2b9a4942cf661040eaf50bcf2273f11609f78b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=332c64861b0d7fc7392a7bccb46df6481db40271 It uses anon semaphores |drivers/md/bcache/request.c: In function ‘cached_dev_write_complete’: diff --git a/debian/patches-rt/0056-efi-Disable-runtime-services-on-RT.patch b/debian/patches-rt/0056-efi-Disable-runtime-services-on-RT.patch index 1c79b3b41..f390b87da 100644 --- a/debian/patches-rt/0056-efi-Disable-runtime-services-on-RT.patch +++ b/debian/patches-rt/0056-efi-Disable-runtime-services-on-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 26 Jul 2018 15:03:16 +0200 -Subject: [PATCH 056/353] efi: Disable runtime services on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0ece58437734f184ee2b23f28f2677164de88ac9 +Subject: [PATCH 056/354] efi: Disable runtime services on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=86b7465596228b558b779c1d9ab8dde93f48010c Based on meassurements the EFI functions get_variable / get_next_variable take up to 2us which looks okay. diff --git a/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch b/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch index d72360c02..27ad3ddcb 100644 --- a/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch +++ b/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 22 Jul 2011 17:58:40 +0200 -Subject: [PATCH 057/353] printk: Add a printk kill switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41266168d2081efb4dce1f66cceb696bd642a639 +Subject: [PATCH 057/354] printk: Add a printk kill switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b0bd8c73adefa7c822cad0561539e02ed4dcf25 Add a prinkt-kill-switch. This is used from (NMI) watchdog to ensure that it does not dead-lock with the early printk code. @@ -134,7 +134,7 @@ index 2ba16c426ba5..963c20ab9548 100644 char *brl_options) { diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c -index 71381168dede..685443375dc0 100644 +index f8e460b4a59d..72a119b97f3e 100644 --- a/kernel/watchdog_hld.c +++ b/kernel/watchdog_hld.c @@ -24,6 +24,8 @@ static DEFINE_PER_CPU(bool, hard_watchdog_warn); diff --git a/debian/patches-rt/0058-printk-Add-force_early_printk-boot-param-to-help-wit.patch b/debian/patches-rt/0058-printk-Add-force_early_printk-boot-param-to-help-wit.patch index be5a84236..75c07a443 100644 --- a/debian/patches-rt/0058-printk-Add-force_early_printk-boot-param-to-help-wit.patch +++ b/debian/patches-rt/0058-printk-Add-force_early_printk-boot-param-to-help-wit.patch @@ -1,8 +1,8 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Fri, 2 Sep 2011 14:41:29 +0200 -Subject: [PATCH 058/353] printk: Add "force_early_printk" boot param to help +Subject: [PATCH 058/354] printk: Add "force_early_printk" boot param to help with debugging -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09a1a8262e58440d4f13b8c83c4b9df4f1e98b68 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a11c0ace01b746211f91fee9cf29a4b58cff546 Gives me an option to screw printk and actually see what the machine says. diff --git a/debian/patches-rt/0059-preempt-Provide-preempt_-_-no-rt-variants.patch b/debian/patches-rt/0059-preempt-Provide-preempt_-_-no-rt-variants.patch index 68a057a6d..6236266bc 100644 --- a/debian/patches-rt/0059-preempt-Provide-preempt_-_-no-rt-variants.patch +++ b/debian/patches-rt/0059-preempt-Provide-preempt_-_-no-rt-variants.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 24 Jul 2009 12:38:56 +0200 -Subject: [PATCH 059/353] preempt: Provide preempt_*_(no)rt variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c22473616742042d7220a7ed01109c20219aa122 +Subject: [PATCH 059/354] preempt: Provide preempt_*_(no)rt variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5dfe6e66695e244379db0cc9294b2c37c6420215 RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 3196d0e76719..f7a17fcc3fec 100644 +index 9d3e416fe497..02ba5c80bf0d 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -181,7 +181,11 @@ do { \ diff --git a/debian/patches-rt/0060-futex-workaround-migrate_disable-enable-in-different.patch b/debian/patches-rt/0060-futex-workaround-migrate_disable-enable-in-different.patch index 23da29124..7d3bae3ba 100644 --- a/debian/patches-rt/0060-futex-workaround-migrate_disable-enable-in-different.patch +++ b/debian/patches-rt/0060-futex-workaround-migrate_disable-enable-in-different.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 8 Mar 2017 14:23:35 +0100 -Subject: [PATCH 060/353] futex: workaround migrate_disable/enable in different +Subject: [PATCH 060/354] futex: workaround migrate_disable/enable in different context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=005385bd16d108692e1c126bc21baaf65247d41b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e1d4d1ef2aa4b23f0517ca379acd8d54408652a migrate_disable()/migrate_enable() takes a different path in atomic() vs !atomic() context. These little hacks ensure that we don't underflow / overflow @@ -16,7 +16,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 19 insertions(+) diff --git a/kernel/futex.c b/kernel/futex.c -index 3c67da9b8408..fac994367189 100644 +index ca2a2a894839..3fdcf5add961 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2998,6 +2998,14 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, diff --git a/debian/patches-rt/0061-rt-Add-local-irq-locks.patch b/debian/patches-rt/0061-rt-Add-local-irq-locks.patch index 6236eb37e..d7bb5ce82 100644 --- a/debian/patches-rt/0061-rt-Add-local-irq-locks.patch +++ b/debian/patches-rt/0061-rt-Add-local-irq-locks.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 20 Jun 2011 09:03:47 +0200 -Subject: [PATCH 061/353] rt: Add local irq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dcbbd166f143aaaf07a1a3b0b910448cad98807d +Subject: [PATCH 061/354] rt: Add local irq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a4a22dfa178b7ee663c4c3d476aa5e43c86a25e3 Introduce locallock. For !RT this maps to preempt_disable()/ local_irq_disable() so there is not much that changes. For RT this will diff --git a/debian/patches-rt/0062-locallock-provide-get-put-_locked_ptr-variants.patch b/debian/patches-rt/0062-locallock-provide-get-put-_locked_ptr-variants.patch index 47955c3d8..39b141e87 100644 --- a/debian/patches-rt/0062-locallock-provide-get-put-_locked_ptr-variants.patch +++ b/debian/patches-rt/0062-locallock-provide-get-put-_locked_ptr-variants.patch @@ -1,7 +1,7 @@ From: Julia Cartwright <julia@ni.com> Date: Mon, 7 May 2018 08:58:56 -0500 -Subject: [PATCH 062/353] locallock: provide {get,put}_locked_ptr() variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5dc9c8dde604d296946d3c972c85c62bc39ad790 +Subject: [PATCH 062/354] locallock: provide {get,put}_locked_ptr() variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3975702953f5f175e304d6c6be12b105188a1bd6 Provide a set of locallocked accessors for pointers to per-CPU data; this is useful for dynamically-allocated per-CPU regions, for example. diff --git a/debian/patches-rt/0063-mm-scatterlist-Do-not-disable-irqs-on-RT.patch b/debian/patches-rt/0063-mm-scatterlist-Do-not-disable-irqs-on-RT.patch index 11e75312b..bcb49e151 100644 --- a/debian/patches-rt/0063-mm-scatterlist-Do-not-disable-irqs-on-RT.patch +++ b/debian/patches-rt/0063-mm-scatterlist-Do-not-disable-irqs-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 3 Jul 2009 08:44:34 -0500 -Subject: [PATCH 063/353] mm/scatterlist: Do not disable irqs on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7ed7cd17a5a82c9c8339c813f8349b672892703e +Subject: [PATCH 063/354] mm/scatterlist: Do not disable irqs on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=12886ef6289d993f7142c036532d7a5036243b80 For -RT it is enough to keep pagefault disabled (which is currently handled by kmap_atomic()). diff --git a/debian/patches-rt/0064-signal-x86-Delay-calling-signals-in-atomic.patch b/debian/patches-rt/0064-signal-x86-Delay-calling-signals-in-atomic.patch index b200cf8da..b6c75156d 100644 --- a/debian/patches-rt/0064-signal-x86-Delay-calling-signals-in-atomic.patch +++ b/debian/patches-rt/0064-signal-x86-Delay-calling-signals-in-atomic.patch @@ -1,7 +1,7 @@ From: Oleg Nesterov <oleg@redhat.com> Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 064/353] signal/x86: Delay calling signals in atomic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f2e1eba7c6820604ba2f99dfb4e0cf6d1448b6a +Subject: [PATCH 064/354] signal/x86: Delay calling signals in atomic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a2bbbf69e3cc12da8d4755748647a5c0aea9fad On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using diff --git a/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch b/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch index b785f1133..53eb31683 100644 --- a/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch +++ b/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch @@ -1,7 +1,7 @@ From: Yang Shi <yang.shi@linaro.org> Date: Thu, 10 Dec 2015 10:58:51 -0800 -Subject: [PATCH 065/353] x86/signal: delay calling signals on 32bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bb7990ff39c4d55a438d1d98cd873b1a6a20ed25 +Subject: [PATCH 065/354] x86/signal: delay calling signals on 32bit +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c0ffc5f3ad8ee2e26aea8fb7e61c6535a26dc83e When running some ptrace single step tests on x86-32 machine, the below problem is triggered: diff --git a/debian/patches-rt/0066-buffer_head-Replace-bh_uptodate_lock-for-rt.patch b/debian/patches-rt/0066-buffer_head-Replace-bh_uptodate_lock-for-rt.patch index 39751173b..4cf4429b5 100644 --- a/debian/patches-rt/0066-buffer_head-Replace-bh_uptodate_lock-for-rt.patch +++ b/debian/patches-rt/0066-buffer_head-Replace-bh_uptodate_lock-for-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 18 Mar 2011 09:18:52 +0100 -Subject: [PATCH 066/353] buffer_head: Replace bh_uptodate_lock for -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b7112c7f2393168be4998583652cd82cfba26657 +Subject: [PATCH 066/354] buffer_head: Replace bh_uptodate_lock for -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83ae2e10f64a4ae559245504a71b2afe93d86254 Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. diff --git a/debian/patches-rt/0067-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch b/debian/patches-rt/0067-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch index 883de41c9..f0c8428d4 100644 --- a/debian/patches-rt/0067-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch +++ b/debian/patches-rt/0067-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 18 Mar 2011 10:11:25 +0100 -Subject: [PATCH 067/353] fs: jbd/jbd2: Make state lock and journal head lock +Subject: [PATCH 067/354] fs: jbd/jbd2: Make state lock and journal head lock rt safe -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=287a79f16976e509bad76ff2beb4d1fa36dee029 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec2dd6baab3f7078091842cb565ff049c6f59bcb bit_spin_locks break under RT. diff --git a/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch b/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch index 67bc835ac..527c2d15d 100644 --- a/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch +++ b/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch @@ -1,7 +1,7 @@ From: Paul Gortmaker <paul.gortmaker@windriver.com> Date: Fri, 21 Jun 2013 15:07:25 -0400 -Subject: [PATCH 068/353] list_bl: Make list head locking RT safe -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6a4a154a836de866df8224ccec73bd3326aa14ec +Subject: [PATCH 068/354] list_bl: Make list head locking RT safe +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=edb9ea73fd16246fc9b305420569bb616bd9e0cc As per changes in include/linux/jbd_common.h for avoiding the bit_spin_locks on RT ("fs: jbd/jbd2: Make state lock and journal diff --git a/debian/patches-rt/0069-list_bl-fixup-bogus-lockdep-warning.patch b/debian/patches-rt/0069-list_bl-fixup-bogus-lockdep-warning.patch index 48011bc68..47ae09367 100644 --- a/debian/patches-rt/0069-list_bl-fixup-bogus-lockdep-warning.patch +++ b/debian/patches-rt/0069-list_bl-fixup-bogus-lockdep-warning.patch @@ -1,7 +1,7 @@ From: Josh Cartwright <joshc@ni.com> Date: Thu, 31 Mar 2016 00:04:25 -0500 -Subject: [PATCH 069/353] list_bl: fixup bogus lockdep warning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f671f39416b991c8fef15e4e7c8734034043c90f +Subject: [PATCH 069/354] list_bl: fixup bogus lockdep warning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e8b711481d5915443ad3b0006faaa91b7c8a706 At first glance, the use of 'static inline' seems appropriate for INIT_HLIST_BL_HEAD(). diff --git a/debian/patches-rt/0070-genirq-Disable-irqpoll-on-rt.patch b/debian/patches-rt/0070-genirq-Disable-irqpoll-on-rt.patch index 1ec75d595..091573beb 100644 --- a/debian/patches-rt/0070-genirq-Disable-irqpoll-on-rt.patch +++ b/debian/patches-rt/0070-genirq-Disable-irqpoll-on-rt.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:29:57 -0500 -Subject: [PATCH 070/353] genirq: Disable irqpoll on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5e333637dade576a0bdd5032dc7b65746460db4 +Subject: [PATCH 070/354] genirq: Disable irqpoll on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cbe56279fd168570a4e72297bbdb239c7e3145ec Creates long latencies for no value diff --git a/debian/patches-rt/0071-genirq-Force-interrupt-thread-on-RT.patch b/debian/patches-rt/0071-genirq-Force-interrupt-thread-on-RT.patch index 6e8649eb6..ec124d559 100644 --- a/debian/patches-rt/0071-genirq-Force-interrupt-thread-on-RT.patch +++ b/debian/patches-rt/0071-genirq-Force-interrupt-thread-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 3 Apr 2011 11:57:29 +0200 -Subject: [PATCH 071/353] genirq: Force interrupt thread on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31da4391a9681dc99ba6fbb4e0a52f8aba734b83 +Subject: [PATCH 071/354] genirq: Force interrupt thread on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b5adeb3757805dd7763a428f437518de54162f3 Force threaded_irqs and optimize the code (force_irqthreads) in regard to this. diff --git a/debian/patches-rt/0072-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch b/debian/patches-rt/0072-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch index cb3e6d4a8..12a38a530 100644 --- a/debian/patches-rt/0072-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch +++ b/debian/patches-rt/0072-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch @@ -1,8 +1,8 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Mon, 28 May 2018 15:24:20 +0200 -Subject: [PATCH 072/353] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 072/354] Split IRQ-off and zone->lock while freeing pages from PCP list #1 -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9fd68ce8dfdfd97a4178efdda9dd37014f62b1d5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dc919396d0218b1f88ccb2f87883bc634548b56f Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. diff --git a/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch b/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch index 458e3a160..b3c353dd1 100644 --- a/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch +++ b/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch @@ -1,8 +1,8 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Mon, 28 May 2018 15:24:21 +0200 -Subject: [PATCH 073/353] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 073/354] Split IRQ-off and zone->lock while freeing pages from PCP list #2 -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2652116a3528f3658deb5a4dd32c704552b1080 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=52f95db6745cd55fcf4a66f563f810ffd1bf8f47 Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. diff --git a/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch index 7575989fe..86907b1dd 100644 --- a/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch +++ b/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 28 May 2018 15:24:22 +0200 -Subject: [PATCH 074/353] mm/SLxB: change list_lock to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02829e5ee70fc4951a1492d03d4ccff359b0a914 +Subject: [PATCH 074/354] mm/SLxB: change list_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3cb73473866649c184f151f02d424bfd6e7cf276 The list_lock is used with used with IRQs off on RT. Make it a raw_spinlock_t otherwise the interrupts won't be disabled on -RT. The locking rules remain @@ -398,11 +398,11 @@ index 0ed7a463f476..12b7da32bcd0 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 ef730ea8263c..97d2bd78534b 100644 +index edf766f1de63..cfb6e3ef42a6 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1182,7 +1182,7 @@ static noinline int free_debug_processing( - unsigned long uninitialized_var(flags); + unsigned long flags; int ret = 0; - spin_lock_irqsave(&n->list_lock, flags); diff --git a/debian/patches-rt/0075-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch b/debian/patches-rt/0075-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch index d52ca7c84..d50a5d136 100644 --- a/debian/patches-rt/0075-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch +++ b/debian/patches-rt/0075-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 21 Jun 2018 17:29:19 +0200 -Subject: [PATCH 075/353] mm/SLUB: delay giving back empty slubs to IRQ enabled +Subject: [PATCH 075/354] mm/SLUB: delay giving back empty slubs to IRQ enabled regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0bed7d4f488bcf540f7876a275217b9c398254bb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1dc00d80ab881dd1cc5bbd057d1aabfd233711c __free_slab() is invoked with disabled interrupts which increases the irq-off time while __free_pages() is doing the work. @@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/mm/slub.c b/mm/slub.c -index 97d2bd78534b..c62e0bf85d8e 100644 +index cfb6e3ef42a6..ead93b7fbd69 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1350,6 +1350,12 @@ static bool freelist_corrupted(struct kmem_cache *s, struct page *page, diff --git a/debian/patches-rt/0076-mm-page_alloc-rt-friendly-per-cpu-pages.patch b/debian/patches-rt/0076-mm-page_alloc-rt-friendly-per-cpu-pages.patch index 8130097c9..cbcb59f16 100644 --- a/debian/patches-rt/0076-mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/debian/patches-rt/0076-mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:29:37 -0500 -Subject: [PATCH 076/353] mm: page_alloc: rt-friendly per-cpu pages -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1bb66c1cc65535695f6d34f78086223ed4e87514 +Subject: [PATCH 076/354] mm: page_alloc: rt-friendly per-cpu pages +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=30ea7d8d8433206aa2ccfac0aed6a92604778a2a rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. diff --git a/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch b/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch index 8c4b4dfde..f80f4eda3 100644 --- a/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch +++ b/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:29:51 -0500 -Subject: [PATCH 077/353] mm/swap: Convert to percpu locked -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f11cbef82fab199491592055c6bd404867e5d463 +Subject: [PATCH 077/354] mm/swap: Convert to percpu locked +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41766d9e9f4c4460a518a83a4ffb657e262662bc Replace global locks (get_cpu + local_irq_save) with "local_locks()". Currently there is one of for "rotate" and one for "swap". @@ -70,7 +70,7 @@ index 51f71e7740b2..a34a071048d2 100644 /* diff --git a/mm/swap.c b/mm/swap.c -index 45fdbfb6b2a6..92f994b962f0 100644 +index ce13e428380e..4e75c8e59874 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -33,6 +33,7 @@ diff --git a/debian/patches-rt/0078-mm-perform-lru_add_drain_all-remotely.patch b/debian/patches-rt/0078-mm-perform-lru_add_drain_all-remotely.patch index 7b9ad0e55..3fe81fbb4 100644 --- a/debian/patches-rt/0078-mm-perform-lru_add_drain_all-remotely.patch +++ b/debian/patches-rt/0078-mm-perform-lru_add_drain_all-remotely.patch @@ -1,7 +1,7 @@ From: Luiz Capitulino <lcapitulino@redhat.com> Date: Fri, 27 May 2016 15:03:28 +0200 -Subject: [PATCH 078/353] mm: perform lru_add_drain_all() remotely -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ddbda00eeee4a9177a7ebc3d05932ebfe414742f +Subject: [PATCH 078/354] mm: perform lru_add_drain_all() remotely +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ff13cad74e3bd4a5d0545cf8fc09123c542768a3 lru_add_drain_all() works by scheduling lru_add_drain_cpu() to run on all CPUs that have non-empty LRU pagevecs and then waiting for @@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/mm/swap.c b/mm/swap.c -index 92f994b962f0..3885645a45ce 100644 +index 4e75c8e59874..90a4b4d0ba75 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -585,9 +585,15 @@ void lru_add_drain_cpu(int cpu) diff --git a/debian/patches-rt/0079-mm-vmstat-Protect-per-cpu-variables-with-preempt-dis.patch b/debian/patches-rt/0079-mm-vmstat-Protect-per-cpu-variables-with-preempt-dis.patch index 0db5adc93..580019edc 100644 --- a/debian/patches-rt/0079-mm-vmstat-Protect-per-cpu-variables-with-preempt-dis.patch +++ b/debian/patches-rt/0079-mm-vmstat-Protect-per-cpu-variables-with-preempt-dis.patch @@ -1,8 +1,8 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:30:13 -0500 -Subject: [PATCH 079/353] mm/vmstat: Protect per cpu variables with preempt +Subject: [PATCH 079/354] mm/vmstat: Protect per cpu variables with preempt disable on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0563dacda4ed0e4a61ba53f2a6ea8b8a50cf4914 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=325d611ea246e9a7ad505a6e913b64a9b761cd58 Disable preemption on -RT for the vmstat code. On vanila the code runs in IRQ-off regions while on -RT it is not. "preempt_disable" ensures that the diff --git a/debian/patches-rt/0080-ARM-Initialize-split-page-table-locks-for-vector-pag.patch b/debian/patches-rt/0080-ARM-Initialize-split-page-table-locks-for-vector-pag.patch index 4a3556c9b..93b449b56 100644 --- a/debian/patches-rt/0080-ARM-Initialize-split-page-table-locks-for-vector-pag.patch +++ b/debian/patches-rt/0080-ARM-Initialize-split-page-table-locks-for-vector-pag.patch @@ -1,8 +1,8 @@ From: Frank Rowand <frank.rowand@am.sony.com> Date: Sat, 1 Oct 2011 18:58:13 -0700 -Subject: [PATCH 080/353] ARM: Initialize split page table locks for vector +Subject: [PATCH 080/354] ARM: Initialize split page table locks for vector page -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbc577ca758067f49bde3100fa9b6cc3c26b0920 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f61f3fbeb88a5a83754e659248864f6af63e3463 Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a diff --git a/debian/patches-rt/0081-mm-Enable-SLUB-for-RT.patch b/debian/patches-rt/0081-mm-Enable-SLUB-for-RT.patch index 0ba5470e3..8a5e95b33 100644 --- a/debian/patches-rt/0081-mm-Enable-SLUB-for-RT.patch +++ b/debian/patches-rt/0081-mm-Enable-SLUB-for-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 25 Oct 2012 10:32:35 +0100 -Subject: [PATCH 081/353] mm: Enable SLUB for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cfa555ce1c0ad724598773bddd70e7b294a2680c +Subject: [PATCH 081/354] mm: Enable SLUB for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae26f21bcdaa681ae5199a8812163eaab2ee6736 Avoid the memory allocation in IRQ section @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 6 insertions(+) diff --git a/mm/slub.c b/mm/slub.c -index c62e0bf85d8e..1f32f64254a7 100644 +index ead93b7fbd69..2258ea8b4c10 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3734,6 +3734,11 @@ static void list_slab_objects(struct kmem_cache *s, struct page *page, diff --git a/debian/patches-rt/0082-slub-Enable-irqs-for-__GFP_WAIT.patch b/debian/patches-rt/0082-slub-Enable-irqs-for-__GFP_WAIT.patch index 6f5fe6a8e..26cdda7bb 100644 --- a/debian/patches-rt/0082-slub-Enable-irqs-for-__GFP_WAIT.patch +++ b/debian/patches-rt/0082-slub-Enable-irqs-for-__GFP_WAIT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 9 Jan 2013 12:08:15 +0100 -Subject: [PATCH 082/353] slub: Enable irqs for __GFP_WAIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=60c7bad2d7e7475f8030e910935d5a14901a21d3 +Subject: [PATCH 082/354] slub: Enable irqs for __GFP_WAIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36619847d2542bf988cb3db225d3bd5d6ac70061 SYSTEM_RUNNING might be too late for enabling interrupts. Allocations with GFP_WAIT can happen before that. So use this as an indicator. @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/slub.c b/mm/slub.c -index 1f32f64254a7..197bab70a05d 100644 +index 2258ea8b4c10..eb0107907043 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1597,10 +1597,17 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) diff --git a/debian/patches-rt/0083-slub-Disable-SLUB_CPU_PARTIAL.patch b/debian/patches-rt/0083-slub-Disable-SLUB_CPU_PARTIAL.patch index 3311789cf..44806b7a5 100644 --- a/debian/patches-rt/0083-slub-Disable-SLUB_CPU_PARTIAL.patch +++ b/debian/patches-rt/0083-slub-Disable-SLUB_CPU_PARTIAL.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 15 Apr 2015 19:00:47 +0200 -Subject: [PATCH 083/353] slub: Disable SLUB_CPU_PARTIAL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3b9b3f34e457d3e594cd093c5f1ed48a476eb5f +Subject: [PATCH 083/354] slub: Disable SLUB_CPU_PARTIAL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0003c1fd5f60d352bf099e872954d5c526e681da |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 |in_atomic(): 1, irqs_disabled(): 0, pid: 87, name: rcuop/7 diff --git a/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch index bce692843..2240be113 100644 --- a/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch +++ b/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch @@ -1,8 +1,8 @@ From: Yang Shi <yang.shi@windriver.com> Date: Wed, 30 Oct 2013 11:48:33 -0700 -Subject: [PATCH 084/353] mm/memcontrol: Don't call schedule_work_on in +Subject: [PATCH 084/354] mm/memcontrol: Don't call schedule_work_on in preemption disabled context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5031f9cdd61fdfdcb0a379e5595209eb3dac9a2f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cae3fe0ced09d550bd14f37b3c6c7e2d80a1fee9 The following trace is triggered when running ltp oom test cases: @@ -48,7 +48,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index bc4c61dcf95c..b828a208f5bd 100644 +index 5a366cf79821..e048d50de7aa 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2084,7 +2084,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) diff --git a/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch b/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch index 056411cab..435b7565c 100644 --- a/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch +++ b/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 28 Jan 2015 17:14:16 +0100 -Subject: [PATCH 085/353] mm/memcontrol: Replace local_irq_disable with local +Subject: [PATCH 085/354] mm/memcontrol: Replace local_irq_disable with local locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c81a3f5935dfdf459d8a0f1a1a23a8894bff122f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4be6dd731ba2e585304cdd9417cbe93c504c966 There are a few local_irq_disable() which then take sleeping locks. This patch converts them local locks. @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index b828a208f5bd..c6a58923da63 100644 +index e048d50de7aa..9c7d443a394c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -69,6 +69,7 @@ diff --git a/debian/patches-rt/0086-mm-zsmalloc-copy-with-get_cpu_var-and-locking.patch b/debian/patches-rt/0086-mm-zsmalloc-copy-with-get_cpu_var-and-locking.patch index 69a586a87..bf66b0149 100644 --- a/debian/patches-rt/0086-mm-zsmalloc-copy-with-get_cpu_var-and-locking.patch +++ b/debian/patches-rt/0086-mm-zsmalloc-copy-with-get_cpu_var-and-locking.patch @@ -1,7 +1,7 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Tue, 22 Mar 2016 11:16:09 +0100 -Subject: [PATCH 086/353] mm/zsmalloc: copy with get_cpu_var() and locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1066fad5edfca01fbe5e367fa7bbed89e4034677 +Subject: [PATCH 086/354] mm/zsmalloc: copy with get_cpu_var() and locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a16b224b63eca041af897a731e36428cb176b4c get_cpu_var() disables preemption and triggers a might_sleep() splat later. This is replaced with get_locked_var(). diff --git a/debian/patches-rt/0087-x86-mm-pat-disable-preemption-__split_large_page-aft.patch b/debian/patches-rt/0087-x86-mm-pat-disable-preemption-__split_large_page-aft.patch index e778b47ad..5ddd96a44 100644 --- a/debian/patches-rt/0087-x86-mm-pat-disable-preemption-__split_large_page-aft.patch +++ b/debian/patches-rt/0087-x86-mm-pat-disable-preemption-__split_large_page-aft.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 11 Dec 2018 21:53:43 +0100 -Subject: [PATCH 087/353] x86/mm/pat: disable preemption __split_large_page() +Subject: [PATCH 087/354] x86/mm/pat: disable preemption __split_large_page() after spin_lock() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93515e9f085077bbdb2a1a2aebd39cad36bfa04e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=afd5e9a628fabb388b8ccbfcac6eb9f74bc93528 Commit "x86/mm/pat: Disable preemption around __flush_tlb_all()" added a warning if __flush_tlb_all() is invoked in preemptible context. On !RT diff --git a/debian/patches-rt/0088-radix-tree-use-local-locks.patch b/debian/patches-rt/0088-radix-tree-use-local-locks.patch index 9b4233844..03bcac756 100644 --- a/debian/patches-rt/0088-radix-tree-use-local-locks.patch +++ b/debian/patches-rt/0088-radix-tree-use-local-locks.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 25 Jan 2017 16:34:27 +0100 -Subject: [PATCH 088/353] radix-tree: use local locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8e0178916a1bc31af350f62b7e539c9f5390605f +Subject: [PATCH 088/354] radix-tree: use local locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2760cc0c3631ffe08d8b7b7ef59610bbd3d53b64 The preload functionality uses per-CPU variables and preempt-disable to ensure that it does not switch CPUs during its usage. This patch adds @@ -59,7 +59,7 @@ index 34149e8b5f73..affb0fc4c5b6 100644 int radix_tree_split(struct radix_tree_root *, unsigned long index, unsigned new_order); diff --git a/lib/radix-tree.c b/lib/radix-tree.c -index e5cab5c4e383..9309e813bc1f 100644 +index 8d29fa5b2695..f568a9975a44 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c @@ -38,7 +38,7 @@ diff --git a/debian/patches-rt/0089-timers-Prepare-for-full-preemption.patch b/debian/patches-rt/0089-timers-Prepare-for-full-preemption.patch index 661221346..b08888501 100644 --- a/debian/patches-rt/0089-timers-Prepare-for-full-preemption.patch +++ b/debian/patches-rt/0089-timers-Prepare-for-full-preemption.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: [PATCH 089/353] timers: Prepare for full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9a83bbf72537fcc969c8058550534087860df01d +Subject: [PATCH 089/354] timers: Prepare for full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=617a0f83685f27fff83acb858be4a912491db426 When softirqs can be preempted we need to make sure that cancelling the timer from the active thread can not deadlock vs. a running timer diff --git a/debian/patches-rt/0090-x86-kvm-Require-const-tsc-for-RT.patch b/debian/patches-rt/0090-x86-kvm-Require-const-tsc-for-RT.patch index 887440c95..b3244eb3a 100644 --- a/debian/patches-rt/0090-x86-kvm-Require-const-tsc-for-RT.patch +++ b/debian/patches-rt/0090-x86-kvm-Require-const-tsc-for-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 6 Nov 2011 12:26:18 +0100 -Subject: [PATCH 090/353] x86: kvm Require const tsc for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=123d3ce568892f54102019bde255d003a1a3c046 +Subject: [PATCH 090/354] x86: kvm Require const tsc for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d3a9c9fd232b835f201eab86f906b4d789cf897 Non constant TSC is a nightmare on bare metal already, but with virtualization it becomes a complete disaster because the workarounds @@ -14,10 +14,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 7 insertions(+) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index ff7ec9b507e3..c52f6438e712 100644 +index 0548ae57826f..7946d440afe7 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -6878,6 +6878,13 @@ int kvm_arch_init(void *opaque) +@@ -6883,6 +6883,13 @@ int kvm_arch_init(void *opaque) goto out; } diff --git a/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch b/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch index cf520c9e4..0ea4bea92 100644 --- a/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch +++ b/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 4 Oct 2017 10:24:23 +0200 -Subject: [PATCH 091/353] pci/switchtec: Don't use completion's wait queue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb27dc96cb4eb0032a04412e84d7173316dcf1d7 +Subject: [PATCH 091/354] pci/switchtec: Don't use completion's wait queue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d0966cc0c8cfc3fc11cce555eec6aff6c72713d The poll callback is using completion's wait_queue_head_t member and puts it in poll_wait() so the poll() caller gets a wakeup after command diff --git a/debian/patches-rt/0092-wait.h-include-atomic.h.patch b/debian/patches-rt/0092-wait.h-include-atomic.h.patch index 9fcae2021..7c85a3e06 100644 --- a/debian/patches-rt/0092-wait.h-include-atomic.h.patch +++ b/debian/patches-rt/0092-wait.h-include-atomic.h.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 28 Oct 2013 12:19:57 +0100 -Subject: [PATCH 092/353] wait.h: include atomic.h +Subject: [PATCH 092/354] wait.h: include atomic.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92527c4268ea4c091b74080e2aca085023745549 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f5de0d7e2bd4466c2f91a3e3685a65e5a05cc1cc | CC init/main.o |In file included from include/linux/mmzone.h:9:0, diff --git a/debian/patches-rt/0093-work-simple-Simple-work-queue-implemenation.patch b/debian/patches-rt/0093-work-simple-Simple-work-queue-implemenation.patch index b1c63280b..d07bda2db 100644 --- a/debian/patches-rt/0093-work-simple-Simple-work-queue-implemenation.patch +++ b/debian/patches-rt/0093-work-simple-Simple-work-queue-implemenation.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <daniel.wagner@bmw-carit.de> Date: Fri, 11 Jul 2014 15:26:11 +0200 -Subject: [PATCH 093/353] work-simple: Simple work queue implemenation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=207d328d37b03b8fe78f7e50507c7276d3d574d6 +Subject: [PATCH 093/354] work-simple: Simple work queue implemenation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a1c4104c9c8d945109b4af41e261e11b5dde00f2 Provides a framework for enqueuing callbacks from irq context PREEMPT_RT_FULL safe. The callbacks are executed in kthread context. diff --git a/debian/patches-rt/0094-work-simple-drop-a-shit-statement-in-SWORK_EVENT_PEN.patch b/debian/patches-rt/0094-work-simple-drop-a-shit-statement-in-SWORK_EVENT_PEN.patch index 890b0bc23..dd7f21b82 100644 --- a/debian/patches-rt/0094-work-simple-drop-a-shit-statement-in-SWORK_EVENT_PEN.patch +++ b/debian/patches-rt/0094-work-simple-drop-a-shit-statement-in-SWORK_EVENT_PEN.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 10 Sep 2018 18:00:31 +0200 -Subject: [PATCH 094/353] work-simple: drop a shit statement in +Subject: [PATCH 094/354] work-simple: drop a shit statement in SWORK_EVENT_PENDING -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=89b96b26ee1e64dfeb6d4c2513baef4cf7e74da6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7dfa7d48bd1ecf57b5f1c9e351355d10f235a811 Dan Carpenter reported | smatch warnings: diff --git a/debian/patches-rt/0095-completion-Use-simple-wait-queues.patch b/debian/patches-rt/0095-completion-Use-simple-wait-queues.patch index 33e2c5620..9b333327f 100644 --- a/debian/patches-rt/0095-completion-Use-simple-wait-queues.patch +++ b/debian/patches-rt/0095-completion-Use-simple-wait-queues.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 11 Jan 2013 11:23:51 +0100 -Subject: [PATCH 095/353] completion: Use simple wait queues -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a49f4fe084f93cac4f50d134183b03ef7e86ab41 +Subject: [PATCH 095/354] completion: Use simple wait queues +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9b4932b83923af134e46dbd6f0734587fea051c Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -54,7 +54,7 @@ index a04d59843022..e0046c35a0bd 100644 break; default: diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c -index f9f324f76a72..0b503fcd9cee 100644 +index a8791b140679..7b557a1338e8 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -1631,7 +1631,7 @@ static void ffs_data_put(struct ffs_data *ffs) diff --git a/debian/patches-rt/0096-fs-aio-simple-simple-work.patch b/debian/patches-rt/0096-fs-aio-simple-simple-work.patch index 2d1e7e612..16a3e0b83 100644 --- a/debian/patches-rt/0096-fs-aio-simple-simple-work.patch +++ b/debian/patches-rt/0096-fs-aio-simple-simple-work.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 16 Feb 2015 18:49:10 +0100 -Subject: [PATCH 096/353] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04b62043344abb5d537d46a14ca3eab97b6380e2 +Subject: [PATCH 096/354] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f2737df5a64e62bdf8d1c34ff2b5d1ce6274d83 |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:768 |in_atomic(): 1, irqs_disabled(): 0, pid: 26, name: rcuos/2 diff --git a/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch b/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch index 95085a036..d7a2b80e9 100644 --- a/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch +++ b/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 15 Nov 2017 17:29:51 +0100 -Subject: [PATCH 097/353] time/hrtimer: avoid schedule_work() with interrupts +Subject: [PATCH 097/354] time/hrtimer: avoid schedule_work() with interrupts disabled -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ac94e556e7d6adbadd76a878334275ce3acd987 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a14913f4b6594b92a7134578db108acf234c10ba The NOHZ code tries to schedule a workqueue with interrupts disabled. Since this does not work -RT I am switching it to swork instead. diff --git a/debian/patches-rt/0098-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch b/debian/patches-rt/0098-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch index d83a27103..216360e31 100644 --- a/debian/patches-rt/0098-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch +++ b/debian/patches-rt/0098-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 3 Jul 2018 11:25:41 +0200 -Subject: [PATCH 098/353] hrtimer: consolidate hrtimer_init() + +Subject: [PATCH 098/354] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() calls -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=81d6386fe5a38dafb8561c5d8caae248bb3456c8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ca12213cb0d12355a4962b1e5f51063170dd120 hrtimer_init_sleeper() calls require a prior initialisation of the hrtimer object with hrtimer_init(). Lets make the initialisation of @@ -62,7 +62,7 @@ index 034d86869772..d089b2cb5dd7 100644 while (1) { diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h -index 542b4fa2cda9..cbd041b22088 100644 +index 3bdaa92a2cab..4b7ef1c6decb 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -364,10 +364,17 @@ DECLARE_PER_CPU(struct tick_device, tick_cpu_device); @@ -125,7 +125,7 @@ index 189da6e44756..523c68edc48a 100644 hrtimer_start_range_ns(&__t.timer, timeout, \ current->timer_slack_ns, \ diff --git a/kernel/futex.c b/kernel/futex.c -index fac994367189..ac015d1dd16c 100644 +index 3fdcf5add961..585082311ea3 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2816,10 +2816,9 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, @@ -169,7 +169,7 @@ index fac994367189..ac015d1dd16c 100644 current->timer_slack_ns); } diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 8512f06f0ebe..23c89873bf60 100644 +index bf74f43e42af..1b2aeab41c0b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1715,13 +1715,44 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer) @@ -249,7 +249,7 @@ index 8512f06f0ebe..23c89873bf60 100644 hrtimer_set_expires_range_ns(&t.timer, timespec64_to_ktime(*rqtp), slack); ret = do_nanosleep(&t, mode); if (ret != -ERESTART_RESTARTBLOCK) -@@ -2005,11 +2033,9 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, +@@ -1996,11 +2024,9 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, return -EINTR; } @@ -263,7 +263,7 @@ index 8512f06f0ebe..23c89873bf60 100644 if (likely(t.task)) diff --git a/net/core/pktgen.c b/net/core/pktgen.c -index 3714cd9e3111..2cea192b1475 100644 +index 3ade60ec4512..8aac00b6d491 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2160,7 +2160,8 @@ static void spin(struct pktgen_dev *pkt_dev, ktime_t spin_until) diff --git a/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch b/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch index 5e9ac99d4..e299e22d6 100644 --- a/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch +++ b/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch @@ -1,7 +1,7 @@ From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: [PATCH 099/353] hrtimers: Prepare full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d28d53d40629674ff58c7686726104f107c8e479 +Subject: [PATCH 099/354] hrtimers: Prepare full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea1a57d171dca96fde02fae81ca8d97eb756b8c6 Make cancellation of a running callback in softirq context safe against preemption. @@ -35,7 +35,7 @@ index d69ad801eb80..82d0f52414a6 100644 /* diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h -index cbd041b22088..8714f1a37d84 100644 +index 4b7ef1c6decb..684241f87e4d 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -22,6 +22,7 @@ @@ -107,7 +107,7 @@ index 56af8a97cf2d..dec68f9dab7b 100644 } EXPORT_SYMBOL_GPL(alarm_cancel); diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 23c89873bf60..ab38b51a96cc 100644 +index 1b2aeab41c0b..478ff82abd33 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -957,6 +957,33 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) @@ -184,10 +184,10 @@ index 2e2b335ef101..7650ee736964 100644 } expires = timeval_to_ktime(value->it_value); diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c -index 1234868b3b03..36ee80652208 100644 +index 8768ce2c4bf5..eae555df7ea3 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c -@@ -463,7 +463,7 @@ static struct k_itimer * alloc_posix_timer(void) +@@ -468,7 +468,7 @@ static struct k_itimer * alloc_posix_timer(void) static void k_itimer_rcu_free(struct rcu_head *head) { @@ -196,7 +196,7 @@ index 1234868b3b03..36ee80652208 100644 kmem_cache_free(posix_timers_cache, tmr); } -@@ -480,7 +480,7 @@ static void release_posix_timer(struct k_itimer *tmr, int it_id_set) +@@ -485,7 +485,7 @@ static void release_posix_timer(struct k_itimer *tmr, int it_id_set) } put_pid(tmr->it_pid); sigqueue_free(tmr->sigq); @@ -205,7 +205,7 @@ index 1234868b3b03..36ee80652208 100644 } static int common_timer_create(struct k_itimer *new_timer) -@@ -821,6 +821,22 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, +@@ -826,6 +826,22 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } @@ -228,7 +228,7 @@ index 1234868b3b03..36ee80652208 100644 static int common_hrtimer_try_to_cancel(struct k_itimer *timr) { return hrtimer_try_to_cancel(&timr->it.real.timer); -@@ -885,6 +901,7 @@ static int do_timer_settime(timer_t timer_id, int flags, +@@ -890,6 +906,7 @@ static int do_timer_settime(timer_t timer_id, int flags, if (!timr) return -EINVAL; @@ -236,7 +236,7 @@ index 1234868b3b03..36ee80652208 100644 kc = timr->kclock; if (WARN_ON_ONCE(!kc || !kc->timer_set)) error = -EINVAL; -@@ -893,9 +910,12 @@ static int do_timer_settime(timer_t timer_id, int flags, +@@ -898,9 +915,12 @@ static int do_timer_settime(timer_t timer_id, int flags, unlock_timer(timr, flag); if (error == TIMER_RETRY) { @@ -249,7 +249,7 @@ index 1234868b3b03..36ee80652208 100644 return error; } -@@ -977,10 +997,15 @@ SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) +@@ -982,10 +1002,15 @@ SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) if (!timer) return -EINVAL; @@ -265,7 +265,7 @@ index 1234868b3b03..36ee80652208 100644 spin_lock(¤t->sighand->siglock); list_del(&timer->list); -@@ -1006,8 +1031,18 @@ static void itimer_delete(struct k_itimer *timer) +@@ -1011,8 +1036,18 @@ static void itimer_delete(struct k_itimer *timer) retry_delete: spin_lock_irqsave(&timer->it_lock, flags); diff --git a/debian/patches-rt/0100-hrtimer-by-timers-by-default-into-the-softirq-contex.patch b/debian/patches-rt/0100-hrtimer-by-timers-by-default-into-the-softirq-contex.patch index de1e06f86..19a98e119 100644 --- a/debian/patches-rt/0100-hrtimer-by-timers-by-default-into-the-softirq-contex.patch +++ b/debian/patches-rt/0100-hrtimer-by-timers-by-default-into-the-softirq-contex.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 3 Jul 2009 08:44:31 -0500 -Subject: [PATCH 100/353] hrtimer: by timers by default into the softirq +Subject: [PATCH 100/354] hrtimer: by timers by default into the softirq context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f29c49b257f3002eb54b6303ac0fc6551f3180b2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9e206d0caa6d175533fd2973ecbb54d48c6f1bd1 We can't have hrtimers callbacks running in hardirq context on RT. Therefore the timers are deferred to the softirq context by default. @@ -28,10 +28,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 11 files changed, 37 insertions(+), 14 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c -index 027941e3df68..9699f3735a55 100644 +index 256b00f456e6..83c3421499aa 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c -@@ -2262,7 +2262,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu) +@@ -2266,7 +2266,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu) apic->vcpu = vcpu; hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, @@ -41,7 +41,7 @@ index 027941e3df68..9699f3735a55 100644 /* diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h -index 8714f1a37d84..082147c07831 100644 +index 684241f87e4d..f8b4818e6e08 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -42,6 +42,7 @@ enum hrtimer_mode { @@ -65,7 +65,7 @@ index 8714f1a37d84..082147c07831 100644 /* diff --git a/kernel/events/core.c b/kernel/events/core.c -index 2bf4b6b109bf..69524886cc89 100644 +index 4182e265176d..daeff994ae9c 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -1108,7 +1108,7 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu) @@ -77,7 +77,7 @@ index 2bf4b6b109bf..69524886cc89 100644 timer->function = perf_mux_hrtimer_handler; } -@@ -9311,7 +9311,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event) +@@ -9372,7 +9372,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event) if (!is_sampling_event(event)) return; @@ -113,7 +113,7 @@ index 9243d0049714..52acbb31a777 100644 } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index bd9a375c45f4..6d1911b08b7f 100644 +index 3f6a613be8c3..802471dbb24d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4998,9 +4998,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) @@ -129,7 +129,7 @@ index bd9a375c45f4..6d1911b08b7f 100644 cfs_b->distribute_running = 0; } diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index a068884c369f..b15428ede6cf 100644 +index 0768ba9d2860..41e73baf41ab 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -45,8 +45,8 @@ void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime) @@ -144,7 +144,7 @@ index a068884c369f..b15428ede6cf 100644 } diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index ab38b51a96cc..beb81024c287 100644 +index 478ff82abd33..764c360568f1 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1202,7 +1202,9 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, diff --git a/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch b/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch index d5d314974..091a60253 100644 --- a/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch +++ b/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 8 Jan 2019 12:31:06 +0100 -Subject: [PATCH 101/353] sched/fair: Make the hrtimers non-hard again -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=109040d80c1535285a4498e04a016f5ee2ba71e4 +Subject: [PATCH 101/354] sched/fair: Make the hrtimers non-hard again +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=01375dbf9778f635992d367eed1147551e7e15e0 Since commit "sched/fair: Robustify CFS-bandwidth timer locking" both hrtimer can run in softirq context because now interrupts are disabled @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 6d1911b08b7f..bd9a375c45f4 100644 +index 802471dbb24d..3f6a613be8c3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4998,9 +4998,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) diff --git a/debian/patches-rt/0102-hrtimer-Move-schedule_work-call-to-helper-thread.patch b/debian/patches-rt/0102-hrtimer-Move-schedule_work-call-to-helper-thread.patch index e30c432ee..7c323c318 100644 --- a/debian/patches-rt/0102-hrtimer-Move-schedule_work-call-to-helper-thread.patch +++ b/debian/patches-rt/0102-hrtimer-Move-schedule_work-call-to-helper-thread.patch @@ -1,7 +1,7 @@ From: Yang Shi <yang.shi@windriver.com> Date: Mon, 16 Sep 2013 14:09:19 -0700 -Subject: [PATCH 102/353] hrtimer: Move schedule_work call to helper thread -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eab2a2611acee0790f3b6b3d35ba10daf48aa0c8 +Subject: [PATCH 102/354] hrtimer: Move schedule_work call to helper thread +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f324afdd9684306cbe7514e92d0ba26f0d3e4788 When run ltp leapsec_timer test, the following call trace is caught: @@ -51,7 +51,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 24 insertions(+) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index beb81024c287..0dceea25f9f5 100644 +index 764c360568f1..c83c8609ac2c 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -748,6 +748,29 @@ static void hrtimer_switch_to_hres(void) diff --git a/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch b/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch index bc476ce12..9bc8f76d1 100644 --- a/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch +++ b/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 6 Dec 2018 10:15:13 +0100 -Subject: [PATCH 103/353] hrtimer: move state change before hrtimer_cancel in +Subject: [PATCH 103/354] hrtimer: move state change before hrtimer_cancel in do_nanosleep() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9cb841c278a15f27daf46f87af052919ae51861e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6cddb711df1e27bc89288790847fc3ea089899a9 There is a small window between setting t->task to NULL and waking the task up (which would set TASK_RUNNING). So the timer would fire, run and @@ -28,7 +28,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 0dceea25f9f5..4de39964594d 100644 +index c83c8609ac2c..260487c89a14 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1852,12 +1852,12 @@ static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mod diff --git a/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch b/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch index 8b27b06ed..b1eafc9a7 100644 --- a/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch +++ b/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch @@ -1,7 +1,7 @@ From: John Stultz <johnstul@us.ibm.com> Date: Fri, 3 Jul 2009 08:29:58 -0500 -Subject: [PATCH 104/353] posix-timers: Thread posix-cpu-timers on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a318dfc7f0d2ef94b30074a4a36311b3073bb55 +Subject: [PATCH 104/354] posix-timers: Thread posix-cpu-timers on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2eab86a476d1939be8d7ce19bb23cb521d01f16 posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. diff --git a/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch b/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch index 875f00e6e..344d6bb4a 100644 --- a/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch +++ b/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 31 May 2011 16:59:16 +0200 -Subject: [PATCH 105/353] sched: Move task_struct cleanup to RCU -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be35f1b200eb51447b20a7a2653e53c58c58ca09 +Subject: [PATCH 105/354] sched: Move task_struct cleanup to RCU +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=29680594be3ba97f56e6b5475adbe201f97ec34a __put_task_struct() does quite some expensive work. We don't want to burden random tasks with that. diff --git a/debian/patches-rt/0106-sched-Limit-the-number-of-task-migrations-per-batch.patch b/debian/patches-rt/0106-sched-Limit-the-number-of-task-migrations-per-batch.patch index 55b805f35..65ad49cad 100644 --- a/debian/patches-rt/0106-sched-Limit-the-number-of-task-migrations-per-batch.patch +++ b/debian/patches-rt/0106-sched-Limit-the-number-of-task-migrations-per-batch.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 6 Jun 2011 12:12:51 +0200 -Subject: [PATCH 106/353] sched: Limit the number of task migrations per batch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8cce7045319b606fb508c6c135bc17fec1297dea +Subject: [PATCH 106/354] sched: Limit the number of task migrations per batch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ecc6ac9f90731fae344e5b8d26cdd66db3c7082f Put an upper limit on the number of tasks which are migrated per batch to avoid large latencies. diff --git a/debian/patches-rt/0107-sched-Move-mmdrop-to-RCU-on-RT.patch b/debian/patches-rt/0107-sched-Move-mmdrop-to-RCU-on-RT.patch index d54373e88..2869d8726 100644 --- a/debian/patches-rt/0107-sched-Move-mmdrop-to-RCU-on-RT.patch +++ b/debian/patches-rt/0107-sched-Move-mmdrop-to-RCU-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 6 Jun 2011 12:20:33 +0200 -Subject: [PATCH 107/353] sched: Move mmdrop to RCU on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=29db13f93ec2cda8d72b6c38fe5049f15d68b107 +Subject: [PATCH 107/354] sched: Move mmdrop to RCU on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=44309940dca3b3feaece56208306b8f6a90c2aa2 Takes sleeping locks and calls into the memory allocator, so nothing we want to do in task switch and oder atomic contexts. diff --git a/debian/patches-rt/0108-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch b/debian/patches-rt/0108-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch index 0f58bd1a7..325adcc41 100644 --- a/debian/patches-rt/0108-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch +++ b/debian/patches-rt/0108-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 21 Nov 2016 19:31:08 +0100 -Subject: [PATCH 108/353] kernel/sched: move stack + kprobe clean up to +Subject: [PATCH 108/354] kernel/sched: move stack + kprobe clean up to __put_task_struct() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c1b81f616fe6d01f4c5b70aa47f0c45b5d52175 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1db44b0421629c2b4bdc460663dbd37506233b00 There is no need to free the stack before the task struct (except for reasons mentioned in commit 68f24b08ee89 ("sched/core: Free the stack early if diff --git a/debian/patches-rt/0109-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch b/debian/patches-rt/0109-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch index d7fcd9a98..578eef3f5 100644 --- a/debian/patches-rt/0109-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch +++ b/debian/patches-rt/0109-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sat, 25 Jun 2011 09:21:04 +0200 -Subject: [PATCH 109/353] sched: Add saved_state for tasks blocked on sleeping +Subject: [PATCH 109/354] sched: Add saved_state for tasks blocked on sleeping locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a6b7d4a6d256d704711eb8d0387c88b9d3343c8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5cc11825a12d7ebb78a87ce4687f736de882fa3 Spinlocks are state preserving in !RT. RT changes the state when a task gets blocked on a lock. So we need to remember the state before diff --git a/debian/patches-rt/0110-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch b/debian/patches-rt/0110-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch index bab17e24a..315a43495 100644 --- a/debian/patches-rt/0110-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch +++ b/debian/patches-rt/0110-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 7 Jun 2011 09:19:06 +0200 -Subject: [PATCH 110/353] sched: Do not account rcu_preempt_depth on RT in +Subject: [PATCH 110/354] sched: Do not account rcu_preempt_depth on RT in might_sleep() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c41cec71a19b50b70e158c340e365a1fabcb94ee +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aaff169a860588c5688c0e5941182d2888328000 RT changes the rcu_preempt_depth semantics, so we cannot check for it in might_sleep(). @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h -index 68cbe111420b..027c58cdbb6e 100644 +index cf139d6e5c1d..18262dd58476 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -73,6 +73,11 @@ void synchronize_rcu(void); diff --git a/debian/patches-rt/0111-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch b/debian/patches-rt/0111-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch index 2a1ddee4c..425c7f337 100644 --- a/debian/patches-rt/0111-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch +++ b/debian/patches-rt/0111-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 22:51:33 +0200 -Subject: [PATCH 111/353] sched: Use the proper LOCK_OFFSET for cond_resched() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40aea8333fd3327ba94572e05c29392ffbdad221 +Subject: [PATCH 111/354] sched: Use the proper LOCK_OFFSET for cond_resched() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5e119fb8d861fb7d3beeb30a7442174fc144f72d RT does not increment preempt count when a 'sleeping' spinlock is locked. Update PREEMPT_LOCK_OFFSET for that case. @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 4 insertions(+) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index f7a17fcc3fec..b7fe717eb1f4 100644 +index 02ba5c80bf0d..22829223534b 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -118,7 +118,11 @@ diff --git a/debian/patches-rt/0112-sched-Disable-TTWU_QUEUE-on-RT.patch b/debian/patches-rt/0112-sched-Disable-TTWU_QUEUE-on-RT.patch index 94e49f265..4fc75eb9e 100644 --- a/debian/patches-rt/0112-sched-Disable-TTWU_QUEUE-on-RT.patch +++ b/debian/patches-rt/0112-sched-Disable-TTWU_QUEUE-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 13 Sep 2011 16:42:35 +0200 -Subject: [PATCH 112/353] sched: Disable TTWU_QUEUE on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae86912b078e8b3dad48b75af006bd02f90f0ef9 +Subject: [PATCH 112/354] sched: Disable TTWU_QUEUE on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b075e8741903cb526cdf7222bdd3b4afb21c0de7 The queued remote wakeup mechanism can introduce rather large latencies if the number of migrated tasks is high. Disable it for RT. diff --git a/debian/patches-rt/0113-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch b/debian/patches-rt/0113-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch index bf74a8d7c..ccd9bb55e 100644 --- a/debian/patches-rt/0113-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch +++ b/debian/patches-rt/0113-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch @@ -1,8 +1,8 @@ From: Steven Rostedt <rostedt@goodmis.org> Date: Mon, 18 Mar 2013 15:12:49 -0400 -Subject: [PATCH 113/353] sched/workqueue: Only wake up idle workers if not +Subject: [PATCH 113/354] sched/workqueue: Only wake up idle workers if not blocked on sleeping spin lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a395882d6b37ec67f24df8f6feea9d75bf9a9b20 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6406e81dacdad66db971db5a0103502ef3b99139 In -rt, most spin_locks() turn into mutexes. One of these spin_lock conversions is performed on the workqueue gcwq->lock. When the idle diff --git a/debian/patches-rt/0114-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch b/debian/patches-rt/0114-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch index 7af709a7e..5d85bbfc8 100644 --- a/debian/patches-rt/0114-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch +++ b/debian/patches-rt/0114-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch @@ -1,8 +1,8 @@ From: Daniel Bristot de Oliveira <bristot@redhat.com> Date: Mon, 26 Jun 2017 17:07:15 +0200 -Subject: [PATCH 114/353] rt: Increase/decrease the nr of migratory tasks when +Subject: [PATCH 114/354] rt: Increase/decrease the nr of migratory tasks when enabling/disabling migration -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=286a1ecec4809b5fcd4dfe12f107909be4d17758 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1e41e004102108c90fda66e2f4d2c15ab504626 There is a problem in the migrate_disable()/enable() implementation regarding the number of migratory tasks in the rt/dl RQs. The problem diff --git a/debian/patches-rt/0115-hotplug-Lightweight-get-online-cpus.patch b/debian/patches-rt/0115-hotplug-Lightweight-get-online-cpus.patch index 0f2094998..81c079eed 100644 --- a/debian/patches-rt/0115-hotplug-Lightweight-get-online-cpus.patch +++ b/debian/patches-rt/0115-hotplug-Lightweight-get-online-cpus.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 15 Jun 2011 12:36:06 +0200 -Subject: [PATCH 115/353] hotplug: Lightweight get online cpus -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=622116c75e173f8a4be2422016f5047e8a72fda1 +Subject: [PATCH 115/354] hotplug: Lightweight get online cpus +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ba8eb74c6b86a06075162358d936bfe7e1c0dfa get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -19,7 +19,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 24 insertions(+) diff --git a/include/linux/cpu.h b/include/linux/cpu.h -index 12ed4cb751de..bddccdcd00ba 100644 +index c376a59a3e42..90985dbce8f4 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -124,6 +124,8 @@ extern void cpu_hotplug_disable(void); @@ -42,7 +42,7 @@ index 12ed4cb751de..bddccdcd00ba 100644 /* Wrappers which go away once all code is converted */ diff --git a/kernel/cpu.c b/kernel/cpu.c -index c9ca190ec034..f4c49bbc3fa3 100644 +index 34c09c3d37bc..b25993345ea6 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -284,6 +284,21 @@ static int cpu_hotplug_disabled; diff --git a/debian/patches-rt/0116-trace-Add-migrate-disabled-counter-to-tracing-output.patch b/debian/patches-rt/0116-trace-Add-migrate-disabled-counter-to-tracing-output.patch index 035c9ca49..8ee2c0f75 100644 --- a/debian/patches-rt/0116-trace-Add-migrate-disabled-counter-to-tracing-output.patch +++ b/debian/patches-rt/0116-trace-Add-migrate-disabled-counter-to-tracing-output.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 21:56:42 +0200 -Subject: [PATCH 116/353] trace: Add migrate-disabled counter to tracing output -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1f45a86c8d1602fa20f00359422fba7e099d9128 +Subject: [PATCH 116/354] trace: Add migrate-disabled counter to tracing output +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=686984a694ba79b89fbe3839fe563036cf9428af Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 0643c083ed86..1cc4d2da954c 100644 +index 93a1b5497bdf..963c19f03bef 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -62,6 +62,8 @@ struct trace_entry { @@ -25,7 +25,7 @@ index 0643c083ed86..1cc4d2da954c 100644 #define TRACE_EVENT_TYPE_MAX \ diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 98abff046236..b1c82b1dc3a6 100644 +index b43d681b072f..61fdbe0ddeb1 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2165,6 +2165,8 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, @@ -37,7 +37,7 @@ index 98abff046236..b1c82b1dc3a6 100644 } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -@@ -3367,9 +3369,10 @@ static void print_lat_help_header(struct seq_file *m) +@@ -3373,9 +3375,10 @@ static void print_lat_help_header(struct seq_file *m) "# | / _----=> need-resched \n" "# || / _---=> hardirq/softirq \n" "# ||| / _--=> preempt-depth \n" @@ -52,7 +52,7 @@ index 98abff046236..b1c82b1dc3a6 100644 static void print_event_info(struct trace_buffer *buf, struct seq_file *m) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index d2f9146d1ad7..ddda660b84f9 100644 +index ed39d3ec202e..b13fc846d2b2 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -189,6 +189,8 @@ static int trace_define_common_fields(void) diff --git a/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch b/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch index 1a98fb592..a5e3c3ca5 100644 --- a/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch +++ b/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 18:51:23 +0200 -Subject: [PATCH 117/353] lockdep: Make it RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=98130f1daaea2199bb162bdf605746816a0f48ac +Subject: [PATCH 117/354] lockdep: Make it RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6718615fb9830364e30c733248e75921005e6aaf teach lockdep that we don't really do softirqs on -RT. @@ -53,7 +53,7 @@ index 21619c92c377..b20eeb25e9fa 100644 defined(CONFIG_PREEMPT_TRACER) extern void stop_critical_timings(void); diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index 4dc79f57af82..4dd83428b56d 100644 +index 46a6d1f7c351..87006e19c9b0 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3831,6 +3831,7 @@ static void check_flags(unsigned long flags) diff --git a/debian/patches-rt/0118-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch b/debian/patches-rt/0118-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch index 89a83b3e8..0a3714644 100644 --- a/debian/patches-rt/0118-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch +++ b/debian/patches-rt/0118-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch @@ -1,8 +1,8 @@ From: Ingo Molnar <mingo@elte.hu> Date: Tue, 29 Nov 2011 20:18:22 -0500 -Subject: [PATCH 118/353] tasklet: Prevent tasklets from going into infinite +Subject: [PATCH 118/354] tasklet: Prevent tasklets from going into infinite spin in RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd8fc2358f7c3c54456ca0c7cb995db98c81fba1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=27595ffe739c6a33dd78d49888de4aebb16c8d64 When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with diff --git a/debian/patches-rt/0119-softirq-Check-preemption-after-reenabling-interrupts.patch b/debian/patches-rt/0119-softirq-Check-preemption-after-reenabling-interrupts.patch index 90826ae16..e3f55e764 100644 --- a/debian/patches-rt/0119-softirq-Check-preemption-after-reenabling-interrupts.patch +++ b/debian/patches-rt/0119-softirq-Check-preemption-after-reenabling-interrupts.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 13 Nov 2011 17:17:09 +0100 -Subject: [PATCH 119/353] softirq: Check preemption after reenabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d73dc06a3a63b3e883babd7e29fa160128c73e60 +Subject: [PATCH 119/354] softirq: Check preemption after reenabling interrupts +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7c68fecb29f3041ccce92063163f28179b408e4 raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -49,7 +49,7 @@ index 15c1f5e12eb8..1628277885a1 100644 EXPORT_SYMBOL(__blk_complete_request); diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index b7fe717eb1f4..9984f2b75b73 100644 +index 22829223534b..8dc7800151f0 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -187,8 +187,10 @@ do { \ @@ -116,7 +116,7 @@ index 86a709954f5a..9c069ef83d6d 100644 return 0; } diff --git a/net/core/dev.c b/net/core/dev.c -index 03903d3f1d69..4156bf7ca234 100644 +index 0f9214fb36e0..554590fc29f5 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2727,6 +2727,7 @@ static void __netif_reschedule(struct Qdisc *q) @@ -135,7 +135,7 @@ index 03903d3f1d69..4156bf7ca234 100644 } EXPORT_SYMBOL(__dev_kfree_skb_irq); -@@ -4273,6 +4275,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, +@@ -4275,6 +4277,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, rps_unlock(sd); local_irq_restore(flags); @@ -143,7 +143,7 @@ index 03903d3f1d69..4156bf7ca234 100644 atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -5824,12 +5827,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) +@@ -5826,12 +5829,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) sd->rps_ipi_list = NULL; local_irq_enable(); @@ -158,7 +158,7 @@ index 03903d3f1d69..4156bf7ca234 100644 } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -5907,6 +5912,7 @@ void __napi_schedule(struct napi_struct *n) +@@ -5909,6 +5914,7 @@ void __napi_schedule(struct napi_struct *n) local_irq_save(flags); ____napi_schedule(this_cpu_ptr(&softnet_data), n); local_irq_restore(flags); @@ -166,7 +166,7 @@ index 03903d3f1d69..4156bf7ca234 100644 } EXPORT_SYMBOL(__napi_schedule); -@@ -9531,6 +9537,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9523,6 +9529,7 @@ static int dev_cpu_dead(unsigned int oldcpu) raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); diff --git a/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch b/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch index 32713d256..ad073538d 100644 --- a/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch +++ b/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 18 Jul 2011 13:59:17 +0200 -Subject: [PATCH 120/353] softirq: Disable softirq stacks for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eecedc65a229f4e4fbdb24922843629e839edfe4 +Subject: [PATCH 120/354] softirq: Disable softirq stacks for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25ef37c2b78d37b8263e5d8efd1732227bca3520 Disable extra stacks for softirqs. We want to preempt softirqs and having them on special IRQ-stack does not make this easier. diff --git a/debian/patches-rt/0121-softirq-Split-softirq-locks.patch b/debian/patches-rt/0121-softirq-Split-softirq-locks.patch index ea0ad8b8d..0b8b3ac84 100644 --- a/debian/patches-rt/0121-softirq-Split-softirq-locks.patch +++ b/debian/patches-rt/0121-softirq-Split-softirq-locks.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 4 Oct 2012 14:20:47 +0100 -Subject: [PATCH 121/353] softirq: Split softirq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9087b85873c1e3cac33ac6ce45442cc13505b4c +Subject: [PATCH 121/354] softirq: Split softirq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92e843a596790848cb412927152e8e90db9797c3 The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which @@ -135,7 +135,7 @@ index eec4bec454b5..cf9860d49d57 100644 struct hrtimer timer; struct tasklet_struct tasklet; diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 9984f2b75b73..27c3176d88d2 100644 +index 8dc7800151f0..c196866734d3 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -51,7 +51,11 @@ @@ -198,10 +198,10 @@ index 44a5e80481bb..bf13a967491e 100644 #define PF_EXITING 0x00000004 /* Getting shut down */ #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ diff --git a/init/main.c b/init/main.c -index 489a5aa7ba53..703b627a6060 100644 +index 08c312abbaf1..298257e2cd42 100644 --- a/init/main.c +++ b/init/main.c -@@ -553,6 +553,7 @@ asmlinkage __visible void __init start_kernel(void) +@@ -549,6 +549,7 @@ asmlinkage __visible void __init start_kernel(void) setup_command_line(command_line); setup_nr_cpu_ids(); setup_per_cpu_areas(); diff --git a/debian/patches-rt/0122-net-core-use-local_bh_disable-in-netif_rx_ni.patch b/debian/patches-rt/0122-net-core-use-local_bh_disable-in-netif_rx_ni.patch index d91e6d4ea..36fdb5366 100644 --- a/debian/patches-rt/0122-net-core-use-local_bh_disable-in-netif_rx_ni.patch +++ b/debian/patches-rt/0122-net-core-use-local_bh_disable-in-netif_rx_ni.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 16 Jun 2017 19:03:16 +0200 -Subject: [PATCH 122/353] net/core: use local_bh_disable() in netif_rx_ni() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c6f220c3a41dbedd9271c75efa95557719cc9ac +Subject: [PATCH 122/354] net/core: use local_bh_disable() in netif_rx_ni() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbedc43d1bb26311167ea79af1a2c2db90192566 In 2004 netif_rx_ni() gained a preempt_disable() section around netif_rx() and its do_softirq() + testing for it. The do_softirq() part @@ -18,10 +18,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 4156bf7ca234..70a3cebdac89 100644 +index 554590fc29f5..c6c45f663539 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4541,11 +4541,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -4543,11 +4543,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); diff --git a/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch b/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch index 57d1e6fab..9c16bd686 100644 --- a/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch +++ b/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 31 Jan 2012 13:01:27 +0100 -Subject: [PATCH 123/353] genirq: Allow disabling of softirq processing in irq +Subject: [PATCH 123/354] genirq: Allow disabling of softirq processing in irq thread context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1128442014bca498569b0b81a4f6abbb3482eb8f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=68654dfb1961f5694087fea3e2f363d49a4290be The processing of softirqs in irq thread context is a performance gain for the non-rt workloads of a system, but it's counterproductive for diff --git a/debian/patches-rt/0124-softirq-split-timer-softirqs-out-of-ksoftirqd.patch b/debian/patches-rt/0124-softirq-split-timer-softirqs-out-of-ksoftirqd.patch index 1826644b8..c1c8af481 100644 --- a/debian/patches-rt/0124-softirq-split-timer-softirqs-out-of-ksoftirqd.patch +++ b/debian/patches-rt/0124-softirq-split-timer-softirqs-out-of-ksoftirqd.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 20 Jan 2016 16:34:17 +0100 -Subject: [PATCH 124/353] softirq: split timer softirqs out of ksoftirqd -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3fa18033c14dff72f82998b26a271e3927780eeb +Subject: [PATCH 124/354] softirq: split timer softirqs out of ksoftirqd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f10baa8f999772a669a0f44e3c931a9ac806443 The softirqd runs in -RT with SCHED_FIFO (prio 1) and deals mostly with timer wakeup which can not happen in hardirq context. The prio has been diff --git a/debian/patches-rt/0125-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch b/debian/patches-rt/0125-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch index 70463e376..861e0d303 100644 --- a/debian/patches-rt/0125-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch +++ b/debian/patches-rt/0125-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 18 Feb 2019 13:19:59 +0100 -Subject: [PATCH 125/353] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 125/354] softirq: Avoid "local_softirq_pending" messages if ksoftirqd is blocked -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=713369743f628d38df761d559c099513842a87e9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f5d9ba516bcc1de17e605468f209fff4aada1aae If the ksoftirqd thread has a softirq pending and is blocked on the `local_softirq_locks' lock then softirq_check_pending_idle() won't diff --git a/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-task.patch b/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-task.patch index 89c83b380..acc412d94 100644 --- a/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-task.patch +++ b/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-task.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 19 Feb 2019 16:49:29 +0100 -Subject: [PATCH 126/353] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 126/354] softirq: Avoid "local_softirq_pending" messages if task is in cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8da244f6216d1a906d97925913a4385e702abdd5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02a0c63da17299f0730158204003d851c7fceaca If the softirq thread enters cpu_chill() then ->state is UNINTERRUPTIBLE and has no ->pi_blocked_on set and so its mask is not taken into account. diff --git a/debian/patches-rt/0127-rtmutex-trylock-is-okay-on-RT.patch b/debian/patches-rt/0127-rtmutex-trylock-is-okay-on-RT.patch index e5f3e05fd..b4f250c04 100644 --- a/debian/patches-rt/0127-rtmutex-trylock-is-okay-on-RT.patch +++ b/debian/patches-rt/0127-rtmutex-trylock-is-okay-on-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 2 Dec 2015 11:34:07 +0100 -Subject: [PATCH 127/353] rtmutex: trylock is okay on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d80ea121d373f6048bf46fae7d5c4b7f78a26196 +Subject: [PATCH 127/354] rtmutex: trylock is okay on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1d31366fb82713fa3ddb743d9471fb4efdebc49d non-RT kernel could deadlock on rt_mutex_trylock() in softirq context. On -RT we don't run softirqs in IRQ context but in thread context so it is diff --git a/debian/patches-rt/0128-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch b/debian/patches-rt/0128-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch index b11a25b71..162acb412 100644 --- a/debian/patches-rt/0128-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch +++ b/debian/patches-rt/0128-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 15 Sep 2016 10:51:27 +0200 -Subject: [PATCH 128/353] fs/nfs: turn rmdir_sem into a semaphore -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a865901ab427b7d9016bdc42a706beb5a4da5903 +Subject: [PATCH 128/354] fs/nfs: turn rmdir_sem into a semaphore +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4653720889d33dac2c78ca95c5449677e76b86c7 The RW semaphore had a reader side which used the _non_owner version because it most likely took the reader lock in one thread and released it diff --git a/debian/patches-rt/0129-rtmutex-Handle-the-various-new-futex-race-conditions.patch b/debian/patches-rt/0129-rtmutex-Handle-the-various-new-futex-race-conditions.patch index ac2f9c97d..105e878e8 100644 --- a/debian/patches-rt/0129-rtmutex-Handle-the-various-new-futex-race-conditions.patch +++ b/debian/patches-rt/0129-rtmutex-Handle-the-various-new-futex-race-conditions.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 10 Jun 2011 11:04:15 +0200 -Subject: [PATCH 129/353] rtmutex: Handle the various new futex race conditions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d1a8f28a30981f0ab33f327955252d3cb4e4fbad +Subject: [PATCH 129/354] rtmutex: Handle the various new futex race conditions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c5ac737d6b9077aa40c32c26b38c39c67430329 RT opens a few new interesting race conditions in the rtmutex/futex combo due to futex hash bucket lock being a 'sleeping' spinlock and @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 94 insertions(+), 21 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index ac015d1dd16c..dc2d81d11b17 100644 +index 585082311ea3..f6339f8b4a1a 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2253,6 +2253,16 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, diff --git a/debian/patches-rt/0130-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch b/debian/patches-rt/0130-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch index 626040ee8..1d2895cce 100644 --- a/debian/patches-rt/0130-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch +++ b/debian/patches-rt/0130-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch @@ -1,7 +1,7 @@ From: Steven Rostedt <rostedt@goodmis.org> Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 130/353] futex: Fix bug on when a requeued RT task times out -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d606054e3bdfa5d9bb3a48d3fc44b2e6a534eb13 +Subject: [PATCH 130/354] futex: Fix bug on when a requeued RT task times out +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a83c3854b57a559a38595bdbe492220ea877e13 Requeue with timeout causes a bug with PREEMPT_RT_FULL. diff --git a/debian/patches-rt/0131-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch b/debian/patches-rt/0131-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch index 44d8687d4..ebd22f18d 100644 --- a/debian/patches-rt/0131-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch +++ b/debian/patches-rt/0131-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 1 Mar 2013 11:17:42 +0100 -Subject: [PATCH 131/353] futex: Ensure lock/unlock symetry versus pi_lock and +Subject: [PATCH 131/354] futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8dbfc8e2b84952857d4d225d3eff59b73f6e6021 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e2a08567239b469386e8d38952b48798b3b6f74 In exit_pi_state_list() we have the following locking construct: @@ -31,7 +31,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+) diff --git a/kernel/futex.c b/kernel/futex.c -index dc2d81d11b17..0e136045a720 100644 +index f6339f8b4a1a..12b658dc016a 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -962,7 +962,9 @@ static void exit_pi_state_list(struct task_struct *curr) diff --git a/debian/patches-rt/0132-pid.h-include-atomic.h.patch b/debian/patches-rt/0132-pid.h-include-atomic.h.patch index f42c2a4d3..e0f6c43db 100644 --- a/debian/patches-rt/0132-pid.h-include-atomic.h.patch +++ b/debian/patches-rt/0132-pid.h-include-atomic.h.patch @@ -1,7 +1,7 @@ From: Grygorii Strashko <Grygorii.Strashko@linaro.org> Date: Tue, 21 Jul 2015 19:43:56 +0300 -Subject: [PATCH 132/353] pid.h: include atomic.h -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d5cd905ca7ce7ab06694717b22dd20b102a4ad36 +Subject: [PATCH 132/354] pid.h: include atomic.h +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=027b875472bab6580820dcc916fbc716f73f22a8 This patch fixes build error: CC kernel/pid_namespace.o diff --git a/debian/patches-rt/0133-arm-include-definition-for-cpumask_t.patch b/debian/patches-rt/0133-arm-include-definition-for-cpumask_t.patch index 8ad18a033..5e2f5ee1c 100644 --- a/debian/patches-rt/0133-arm-include-definition-for-cpumask_t.patch +++ b/debian/patches-rt/0133-arm-include-definition-for-cpumask_t.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 22 Dec 2016 17:28:33 +0100 -Subject: [PATCH 133/353] arm: include definition for cpumask_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e5ee101b7130830a24ba3159856ad5b8d247616 +Subject: [PATCH 133/354] arm: include definition for cpumask_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa9961ff85fd8f9623657677efcb406b5a49d1fb This definition gets pulled in by other files. With the (later) split of RCU and spinlock.h it won't compile anymore. diff --git a/debian/patches-rt/0134-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch b/debian/patches-rt/0134-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch index d11bfb3e1..29370046f 100644 --- a/debian/patches-rt/0134-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch +++ b/debian/patches-rt/0134-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch @@ -1,8 +1,8 @@ From: "Wolfgang M. Reimer" <linuxball@gmail.com> Date: Tue, 21 Jul 2015 16:20:07 +0200 -Subject: [PATCH 134/353] locking: locktorture: Do NOT include rwlock.h +Subject: [PATCH 134/354] locking: locktorture: Do NOT include rwlock.h directly -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ad189ad0514c2094321f9fd0337ab57397db4f00 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=71bd2721e99a9d8670de8f976e8faae888e37d13 Including rwlock.h directly will cause kernel builds to fail if CONFIG_PREEMPT_RT_FULL is defined. The correct header file diff --git a/debian/patches-rt/0135-rtmutex-Add-rtmutex_lock_killable.patch b/debian/patches-rt/0135-rtmutex-Add-rtmutex_lock_killable.patch index 3d93b7062..76ed79b6a 100644 --- a/debian/patches-rt/0135-rtmutex-Add-rtmutex_lock_killable.patch +++ b/debian/patches-rt/0135-rtmutex-Add-rtmutex_lock_killable.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 9 Jun 2011 11:43:52 +0200 -Subject: [PATCH 135/353] rtmutex: Add rtmutex_lock_killable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d3b7dcdca0aece78c9009364661eb06688b6933 +Subject: [PATCH 135/354] rtmutex: Add rtmutex_lock_killable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d23d867cdcbc8148b9fe5400eb602a17e66f730 Add "killable" type to rtmutex. We need this since rtmutex are used as "normal" mutexes which do use this type. diff --git a/debian/patches-rt/0136-rtmutex-Make-lock_killable-work.patch b/debian/patches-rt/0136-rtmutex-Make-lock_killable-work.patch index d69c5254e..61b983cb2 100644 --- a/debian/patches-rt/0136-rtmutex-Make-lock_killable-work.patch +++ b/debian/patches-rt/0136-rtmutex-Make-lock_killable-work.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sat, 1 Apr 2017 12:50:59 +0200 -Subject: [PATCH 136/353] rtmutex: Make lock_killable work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=837062c3b2e57ec5d4c04c8b1cda3305c2c010f2 +Subject: [PATCH 136/354] rtmutex: Make lock_killable work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bb4aae3676300389c9ccc8985348f8fcd4e78d7e Locking an rt mutex killable does not work because signal handling is restricted to TASK_INTERRUPTIBLE. diff --git a/debian/patches-rt/0137-spinlock-Split-the-lock-types-header.patch b/debian/patches-rt/0137-spinlock-Split-the-lock-types-header.patch index 1f2dc144e..0f285b7cd 100644 --- a/debian/patches-rt/0137-spinlock-Split-the-lock-types-header.patch +++ b/debian/patches-rt/0137-spinlock-Split-the-lock-types-header.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 29 Jun 2011 19:34:01 +0200 -Subject: [PATCH 137/353] spinlock: Split the lock types header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31a8676e8d6709bfd284c94cdcba63304586dc2c +Subject: [PATCH 137/354] spinlock: Split the lock types header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02dfe1120282f42f29ad9f10a5c5fb743ea5db59 Split raw_spinlock into its own file and the remaining spinlock_t into its own non-RT header. The non-RT header will be replaced later by sleeping diff --git a/debian/patches-rt/0138-rtmutex-Avoid-include-hell.patch b/debian/patches-rt/0138-rtmutex-Avoid-include-hell.patch index 54dbdfe1b..5830c8f9e 100644 --- a/debian/patches-rt/0138-rtmutex-Avoid-include-hell.patch +++ b/debian/patches-rt/0138-rtmutex-Avoid-include-hell.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 29 Jun 2011 20:06:39 +0200 -Subject: [PATCH 138/353] rtmutex: Avoid include hell -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=318d1b407db029035da74bbd758aabc0352168ce +Subject: [PATCH 138/354] rtmutex: Avoid include hell +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b8ed93ab235d8cff7e8a01225efe33fb719ca22 Include only the required raw types. This avoids pulling in the complete spinlock header which in turn requires rtmutex.h at some point. diff --git a/debian/patches-rt/0139-rbtree-don-t-include-the-rcu-header.patch b/debian/patches-rt/0139-rbtree-don-t-include-the-rcu-header.patch index fac209896..8b7e41455 100644 --- a/debian/patches-rt/0139-rbtree-don-t-include-the-rcu-header.patch +++ b/debian/patches-rt/0139-rbtree-don-t-include-the-rcu-header.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 26 Feb 2019 16:56:02 +0100 -Subject: [PATCH 139/353] rbtree: don't include the rcu header +Subject: [PATCH 139/354] rbtree: don't include the rcu header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=01edc3f9e31e5153bde8f96cab83edc1259da691 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04dfb0f69dd66c9eab3498d4134bf7a04e6a0638 The RCU header pulls in spinlock.h and fails due not yet defined types: @@ -25,10 +25,12 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/rbtree.h | 2 +- include/linux/rcu_assign_pointer.h | 54 ++++++++++++++++++++++++++++++ - include/linux/rcupdate.h | 49 +-------------------------- - 3 files changed, 56 insertions(+), 49 deletions(-) + include/linux/rcupdate.h | 1 + + 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 include/linux/rcu_assign_pointer.h +diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h +index fcbeed4053ef..2aa2aec354c2 100644 --- a/include/linux/rbtree.h +++ b/include/linux/rbtree.h @@ -31,7 +31,7 @@ @@ -40,6 +42,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> struct rb_node { unsigned long __rb_parent_color; +diff --git a/include/linux/rcu_assign_pointer.h b/include/linux/rcu_assign_pointer.h +new file mode 100644 +index 000000000000..7066962a4379 --- /dev/null +++ b/include/linux/rcu_assign_pointer.h @@ -0,0 +1,54 @@ @@ -97,6 +102,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +}) + +#endif +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 18262dd58476..de6f65f69a71 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -42,6 +42,7 @@ @@ -107,58 +114,3 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #define ULONG_CMP_GE(a, b) (ULONG_MAX / 2 >= (a) - (b)) #define ULONG_CMP_LT(a, b) (ULONG_MAX / 2 < (a) - (b)) -@@ -370,54 +371,6 @@ static inline void rcu_preempt_sleep_che - }) - - /** -- * RCU_INITIALIZER() - statically initialize an RCU-protected global variable -- * @v: The value to statically initialize with. -- */ --#define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) -- --/** -- * rcu_assign_pointer() - assign to RCU-protected pointer -- * @p: pointer to assign to -- * @v: value to assign (publish) -- * -- * Assigns the specified value to the specified RCU-protected -- * pointer, ensuring that any concurrent RCU readers will see -- * any prior initialization. -- * -- * Inserts memory barriers on architectures that require them -- * (which is most of them), and also prevents the compiler from -- * reordering the code that initializes the structure after the pointer -- * assignment. More importantly, this call documents which pointers -- * will be dereferenced by RCU read-side code. -- * -- * In some special cases, you may use RCU_INIT_POINTER() instead -- * of rcu_assign_pointer(). RCU_INIT_POINTER() is a bit faster due -- * to the fact that it does not constrain either the CPU or the compiler. -- * That said, using RCU_INIT_POINTER() when you should have used -- * rcu_assign_pointer() is a very bad thing that results in -- * impossible-to-diagnose memory corruption. So please be careful. -- * See the RCU_INIT_POINTER() comment header for details. -- * -- * Note that rcu_assign_pointer() evaluates each of its arguments only -- * once, appearances notwithstanding. One of the "extra" evaluations -- * is in typeof() and the other visible only to sparse (__CHECKER__), -- * neither of which actually execute the argument. As with most cpp -- * macros, this execute-arguments-only-once property is important, so -- * please be careful when making changes to rcu_assign_pointer() and the -- * other macros that it invokes. -- */ --#define rcu_assign_pointer(p, v) \ --({ \ -- uintptr_t _r_a_p__v = (uintptr_t)(v); \ -- \ -- if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL) \ -- WRITE_ONCE((p), (typeof(p))(_r_a_p__v)); \ -- else \ -- smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ -- _r_a_p__v; \ --}) -- --/** - * rcu_replace_pointer() - replace an RCU pointer, returning its old value - * @rcu_ptr: RCU pointer, whose old value is returned - * @ptr: regular pointer diff --git a/debian/patches-rt/0140-rtmutex-Provide-rt_mutex_slowlock_locked.patch b/debian/patches-rt/0140-rtmutex-Provide-rt_mutex_slowlock_locked.patch index 889697bda..0adeba275 100644 --- a/debian/patches-rt/0140-rtmutex-Provide-rt_mutex_slowlock_locked.patch +++ b/debian/patches-rt/0140-rtmutex-Provide-rt_mutex_slowlock_locked.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 16:14:22 +0200 -Subject: [PATCH 140/353] rtmutex: Provide rt_mutex_slowlock_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4ed8a5378624e79f354f26b29f4ef135cabf19d5 +Subject: [PATCH 140/354] rtmutex: Provide rt_mutex_slowlock_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a9611be6785bf323146a1d7f70491567d922f356 This is the inner-part of rt_mutex_slowlock(), required for rwsem-rt. diff --git a/debian/patches-rt/0141-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch b/debian/patches-rt/0141-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch index 46da5b85f..ba660979e 100644 --- a/debian/patches-rt/0141-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch +++ b/debian/patches-rt/0141-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 16:36:39 +0200 -Subject: [PATCH 141/353] rtmutex: export lockdep-less version of rt_mutex's +Subject: [PATCH 141/354] rtmutex: export lockdep-less version of rt_mutex's lock, trylock and unlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=740b84a1d5c6a69733ac82835e4c7219eaa578d5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a9ac8aca91e9102d62c28cca5f48bc6b341c2fc Required for lock implementation ontop of rtmutex. diff --git a/debian/patches-rt/0142-rtmutex-add-sleeping-lock-implementation.patch b/debian/patches-rt/0142-rtmutex-add-sleeping-lock-implementation.patch index fd0264324..451ee0fd2 100644 --- a/debian/patches-rt/0142-rtmutex-add-sleeping-lock-implementation.patch +++ b/debian/patches-rt/0142-rtmutex-add-sleeping-lock-implementation.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 17:11:19 +0200 -Subject: [PATCH 142/353] rtmutex: add sleeping lock implementation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae1b6e0e9a014befed2b7bc5c4eece86daa446db +Subject: [PATCH 142/354] rtmutex: add sleeping lock implementation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f3963525766840f746101c9745815d57d5315e77 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> @@ -407,7 +407,7 @@ index efe690af29f1..51ec12803c0b 100644 account_kernel_stack(tsk, 1); diff --git a/kernel/futex.c b/kernel/futex.c -index 0e136045a720..a5a263a3efbf 100644 +index 12b658dc016a..3d2570e9c8c1 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1575,6 +1575,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ diff --git a/debian/patches-rt/0143-rtmutex-add-mutex-implementation-based-on-rtmutex.patch b/debian/patches-rt/0143-rtmutex-add-mutex-implementation-based-on-rtmutex.patch index 5f9de40bb..49a452177 100644 --- a/debian/patches-rt/0143-rtmutex-add-mutex-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0143-rtmutex-add-mutex-implementation-based-on-rtmutex.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 17:17:03 +0200 -Subject: [PATCH 143/353] rtmutex: add mutex implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4e5a93b3550756da1004d9a27f77ffe93790a22 +Subject: [PATCH 143/354] rtmutex: add mutex implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=833745671974a1e686de1c79673fe87edbec4269 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> diff --git a/debian/patches-rt/0144-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch b/debian/patches-rt/0144-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch index 8affbba1a..c07471313 100644 --- a/debian/patches-rt/0144-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0144-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 17:28:34 +0200 -Subject: [PATCH 144/353] rtmutex: add rwsem implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=19c04220398e1defbbc2ead7debf3effa79759a4 +Subject: [PATCH 144/354] rtmutex: add rwsem implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59e7908ea37732a98a6b91e4ebf272da7775c534 The RT specific R/W semaphore implementation restricts the number of readers to one because a writer cannot block on multiple readers and inherit its diff --git a/debian/patches-rt/0145-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch b/debian/patches-rt/0145-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch index 29d8d3732..d8d442114 100644 --- a/debian/patches-rt/0145-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0145-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 17:18:06 +0200 -Subject: [PATCH 145/353] rtmutex: add rwlock implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea18fa0cbcb369fa74a6d4f1f1a679dc0c41dd73 +Subject: [PATCH 145/354] rtmutex: add rwlock implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=60af7f285662cd574d8a5c490a23f23eb8bb81a7 The implementation is bias-based, similar to the rwsem implementation. diff --git a/debian/patches-rt/0146-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch b/debian/patches-rt/0146-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch index b75a172cf..9102b62a5 100644 --- a/debian/patches-rt/0146-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch +++ b/debian/patches-rt/0146-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 11 Jan 2019 21:16:31 +0100 -Subject: [PATCH 146/353] rtmutex/rwlock: preserve state like a sleeping lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b030b3a7e813383b360eb3c3b4971713d252707f +Subject: [PATCH 146/354] rtmutex/rwlock: preserve state like a sleeping lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8ae4c1a55ef2c1e7cb8e8ddd9a74c868d23f08e The rwlock is spinning while acquiring a lock. Therefore it must become a sleeping lock on RT and preserve its task state while sleeping and diff --git a/debian/patches-rt/0147-rtmutex-wire-up-RT-s-locking.patch b/debian/patches-rt/0147-rtmutex-wire-up-RT-s-locking.patch index 0509ec71f..537802aac 100644 --- a/debian/patches-rt/0147-rtmutex-wire-up-RT-s-locking.patch +++ b/debian/patches-rt/0147-rtmutex-wire-up-RT-s-locking.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 12 Oct 2017 17:31:14 +0200 -Subject: [PATCH 147/353] rtmutex: wire up RT's locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=82c70eaccd0321348a401a8ee751938f3be5f0e4 +Subject: [PATCH 147/354] rtmutex: wire up RT's locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c9a5bd5a5cb9559b8a27f7e3c47d28e8c7f49f6 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> diff --git a/debian/patches-rt/0148-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch b/debian/patches-rt/0148-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch index 994eb4348..3cd7d025f 100644 --- a/debian/patches-rt/0148-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch +++ b/debian/patches-rt/0148-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 12 Oct 2017 17:34:38 +0200 -Subject: [PATCH 148/353] rtmutex: add ww_mutex addon for mutex-rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5638b534fffb7e1464776909b8ea609101dceddb +Subject: [PATCH 148/354] rtmutex: add ww_mutex addon for mutex-rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa8b1482ff1b468ec5f2e8109be74448a28a0017 Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- diff --git a/debian/patches-rt/0149-kconfig-Add-PREEMPT_RT_FULL.patch b/debian/patches-rt/0149-kconfig-Add-PREEMPT_RT_FULL.patch index a8b54fe2f..88350133d 100644 --- a/debian/patches-rt/0149-kconfig-Add-PREEMPT_RT_FULL.patch +++ b/debian/patches-rt/0149-kconfig-Add-PREEMPT_RT_FULL.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 29 Jun 2011 14:58:57 +0200 -Subject: [PATCH 149/353] kconfig: Add PREEMPT_RT_FULL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=752046a4b227d6883a5b603f45e0987013571b82 +Subject: [PATCH 149/354] kconfig: Add PREEMPT_RT_FULL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=218b06866238a1f4f68d65f7904dc07730f7d675 Introduce the final symbol for PREEMPT_RT_FULL. diff --git a/debian/patches-rt/0150-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch b/debian/patches-rt/0150-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch index 3106ba866..9e036fe14 100644 --- a/debian/patches-rt/0150-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch +++ b/debian/patches-rt/0150-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch @@ -1,8 +1,8 @@ From: Mikulas Patocka <mpatocka@redhat.com> Date: Mon, 13 Nov 2017 12:56:53 -0500 -Subject: [PATCH 150/353] locking/rt-mutex: fix deadlock in device mapper / +Subject: [PATCH 150/354] locking/rt-mutex: fix deadlock in device mapper / block-IO -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2942d326ca47d9bea018e1e5ccfa2d11887bccbf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7fb3b608c2bac591dd3ff3f32230253a8706d312 When some block device driver creates a bio and submits it to another block device driver, the bio is added to current->bio_list (in order to diff --git a/debian/patches-rt/0151-locking-rt-mutex-Flush-block-plug-on-__down_read.patch b/debian/patches-rt/0151-locking-rt-mutex-Flush-block-plug-on-__down_read.patch index 1068113c5..dabf9560e 100644 --- a/debian/patches-rt/0151-locking-rt-mutex-Flush-block-plug-on-__down_read.patch +++ b/debian/patches-rt/0151-locking-rt-mutex-Flush-block-plug-on-__down_read.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Fri, 4 Jan 2019 15:33:21 -0500 -Subject: [PATCH 151/353] locking/rt-mutex: Flush block plug on __down_read() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e16669ece8894e9a9a0b506e37e957c05aafb084 +Subject: [PATCH 151/354] locking/rt-mutex: Flush block plug on __down_read() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cc5550a838341090c57c98f866384cd5c816aac6 __down_read() bypasses the rtmutex frontend to call rt_mutex_slowlock_locked() directly, and thus it needs to call diff --git a/debian/patches-rt/0152-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch b/debian/patches-rt/0152-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch index f807c7f17..73c77a74c 100644 --- a/debian/patches-rt/0152-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch +++ b/debian/patches-rt/0152-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 16 Nov 2017 16:48:48 +0100 -Subject: [PATCH 152/353] locking/rtmutex: re-init the wait_lock in +Subject: [PATCH 152/354] locking/rtmutex: re-init the wait_lock in rt_mutex_init_proxy_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5ae97ece9b790294f0706285373a1606659442eb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d794cd9c4646c6841de4068f1259a25c18221f09 We could provide a key-class for the lockdep (and fixup all callers) or move the init to all callers (like it was) in order to avoid lockdep diff --git a/debian/patches-rt/0153-ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/debian/patches-rt/0153-ptrace-fix-ptrace-vs-tasklist_lock-race.patch index 4d2f62a96..27702ff78 100644 --- a/debian/patches-rt/0153-ptrace-fix-ptrace-vs-tasklist_lock-race.patch +++ b/debian/patches-rt/0153-ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 29 Aug 2013 18:21:04 +0200 -Subject: [PATCH 153/353] ptrace: fix ptrace vs tasklist_lock race -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4db302711bda5e85a7be1eaaeaf80e330caf920 +Subject: [PATCH 153/354] ptrace: fix ptrace vs tasklist_lock race +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=457cc6e030ab04478a2659eb00fbe56b898f37b0 As explained by Alexander Fyodorov <halcy@yandex.ru>: diff --git a/debian/patches-rt/0154-rtmutex-annotate-sleeping-lock-context.patch b/debian/patches-rt/0154-rtmutex-annotate-sleeping-lock-context.patch index 3f4ee1298..b6148774c 100644 --- a/debian/patches-rt/0154-rtmutex-annotate-sleeping-lock-context.patch +++ b/debian/patches-rt/0154-rtmutex-annotate-sleeping-lock-context.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 21 Sep 2017 14:25:13 +0200 -Subject: [PATCH 154/353] rtmutex: annotate sleeping lock context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4229625b3748a394f2e8127fec95d6c42845c5a +Subject: [PATCH 154/354] rtmutex: annotate sleeping lock context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d9546d9f6ba2535079556b2da1c56b0f67b17e7 The RCU code complains on schedule() within a rcu_readlock() section. The valid scenario on -RT is if a sleeping is held. In order to suppress @@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 6 files changed, 109 insertions(+), 7 deletions(-) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 27c3176d88d2..9eafc34898b4 100644 +index c196866734d3..13e3f889b335 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -211,6 +211,15 @@ extern void migrate_enable(void); diff --git a/debian/patches-rt/0155-sched-migrate_disable-fallback-to-preempt_disable-in.patch b/debian/patches-rt/0155-sched-migrate_disable-fallback-to-preempt_disable-in.patch index 52c0508d4..fc576ebc0 100644 --- a/debian/patches-rt/0155-sched-migrate_disable-fallback-to-preempt_disable-in.patch +++ b/debian/patches-rt/0155-sched-migrate_disable-fallback-to-preempt_disable-in.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 5 Jul 2018 14:44:51 +0200 -Subject: [PATCH 155/353] sched/migrate_disable: fallback to preempt_disable() +Subject: [PATCH 155/354] sched/migrate_disable: fallback to preempt_disable() instead barrier() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=042d278b7e7b9f28417ae7c95ad95ba83065b1de +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6995caad3506ab5555fb756e251a94909ebaf0c7 On SMP + !RT migrate_disable() is still around. It is not part of spin_lock() anymore so it has almost no users. However the futex code has a workaround for @@ -46,7 +46,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 9eafc34898b4..ed8413e7140f 100644 +index 13e3f889b335..302f491b05ec 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -204,7 +204,7 @@ do { \ diff --git a/debian/patches-rt/0156-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch b/debian/patches-rt/0156-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch index f95b6cfce..5b529d881 100644 --- a/debian/patches-rt/0156-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch +++ b/debian/patches-rt/0156-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 4 Aug 2017 17:40:42 +0200 -Subject: [PATCH 156/353] locking: don't check for __LINUX_SPINLOCK_TYPES_H on +Subject: [PATCH 156/354] locking: don't check for __LINUX_SPINLOCK_TYPES_H on -RT archs -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1de5ba8a20471fbf228898156b626f15ddccf818 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d26c3e4878b2d3ebf3123cb736bd8e6de0032342 Upstream uses arch_spinlock_t within spinlock_t and requests that spinlock_types.h header file is included first. diff --git a/debian/patches-rt/0157-rcu-Frob-softirq-test.patch b/debian/patches-rt/0157-rcu-Frob-softirq-test.patch index b97fa394b..850c00048 100644 --- a/debian/patches-rt/0157-rcu-Frob-softirq-test.patch +++ b/debian/patches-rt/0157-rcu-Frob-softirq-test.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Sat, 13 Aug 2011 00:23:17 +0200 -Subject: [PATCH 157/353] rcu: Frob softirq test -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b22c921775db6303ca3915515934c5a07fe3bcc +Subject: [PATCH 157/354] rcu: Frob softirq test +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=328420704fbc5e6d8ceaafcbf1bfafcf01d315b6 With RT_FULL we get the below wreckage: diff --git a/debian/patches-rt/0158-rcu-Merge-RCU-bh-into-RCU-preempt.patch b/debian/patches-rt/0158-rcu-Merge-RCU-bh-into-RCU-preempt.patch index aa96498ec..318a8e28a 100644 --- a/debian/patches-rt/0158-rcu-Merge-RCU-bh-into-RCU-preempt.patch +++ b/debian/patches-rt/0158-rcu-Merge-RCU-bh-into-RCU-preempt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 5 Oct 2011 11:59:38 -0700 -Subject: [PATCH 158/353] rcu: Merge RCU-bh into RCU-preempt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea7433159b2ffcf58ecc592690f31311034372c7 +Subject: [PATCH 158/354] rcu: Merge RCU-bh into RCU-preempt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f5b41077696c1c5d7d2f00c3fa5a73b303c1920 The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, @@ -34,7 +34,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 7 files changed, 73 insertions(+), 2 deletions(-) diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h -index e6733d7911e9..08d64e5713fc 100644 +index de6f65f69a71..f30feeb1cbab 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -56,7 +56,11 @@ void call_rcu(struct rcu_head *head, rcu_callback_t func); @@ -64,7 +64,7 @@ index e6733d7911e9..08d64e5713fc 100644 int rcu_read_lock_sched_held(void); #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ -@@ -661,10 +672,14 @@ static inline void rcu_read_unlock(void) +@@ -727,10 +738,14 @@ static inline void rcu_read_unlock(void) static inline void rcu_read_lock_bh(void) { local_bh_disable(); @@ -79,7 +79,7 @@ index e6733d7911e9..08d64e5713fc 100644 } /* -@@ -674,10 +689,14 @@ static inline void rcu_read_lock_bh(void) +@@ -740,10 +755,14 @@ static inline void rcu_read_lock_bh(void) */ static inline void rcu_read_unlock_bh(void) { diff --git a/debian/patches-rt/0159-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch b/debian/patches-rt/0159-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch index 71ab01a58..c8a18041b 100644 --- a/debian/patches-rt/0159-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch +++ b/debian/patches-rt/0159-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch @@ -1,7 +1,7 @@ From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Date: Wed, 5 Oct 2011 11:45:18 -0700 -Subject: [PATCH 159/353] rcu: Make ksoftirqd do RCU quiescent states -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a04d9b0fd14c11feab735183e2390994a77db29 +Subject: [PATCH 159/354] rcu: Make ksoftirqd do RCU quiescent states +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0281fe4b1e64a1376cde400197af51ae6047b01e Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore diff --git a/debian/patches-rt/0160-rcu-Eliminate-softirq-processing-from-rcutree.patch b/debian/patches-rt/0160-rcu-Eliminate-softirq-processing-from-rcutree.patch index b78fba523..a894403bb 100644 --- a/debian/patches-rt/0160-rcu-Eliminate-softirq-processing-from-rcutree.patch +++ b/debian/patches-rt/0160-rcu-Eliminate-softirq-processing-from-rcutree.patch @@ -1,7 +1,7 @@ From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Date: Mon, 4 Nov 2013 13:21:10 -0800 -Subject: [PATCH 160/353] rcu: Eliminate softirq processing from rcutree -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b1567b981ee2c329d7c899c6cd49917803f4de2 +Subject: [PATCH 160/354] rcu: Eliminate softirq processing from rcutree +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b85f7944f59da7dd11767db41c98b3b038e45c50 Running RCU out of softirq is a problem for some workloads that would like to manage RCU core processing independently of other softirq work, diff --git a/debian/patches-rt/0161-srcu-use-cpu_online-instead-custom-check.patch b/debian/patches-rt/0161-srcu-use-cpu_online-instead-custom-check.patch index 555450b9a..dfb47dd86 100644 --- a/debian/patches-rt/0161-srcu-use-cpu_online-instead-custom-check.patch +++ b/debian/patches-rt/0161-srcu-use-cpu_online-instead-custom-check.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 13 Sep 2017 14:43:41 +0200 -Subject: [PATCH 161/353] srcu: use cpu_online() instead custom check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1423f183c0e3ff9419de9b9d3cd09bed0b84540 +Subject: [PATCH 161/354] srcu: use cpu_online() instead custom check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ba1b25e042b8c9b551d6ff8e7d35102ec77f544 The current check via srcu_online is slightly racy because after looking at srcu_online there could be an interrupt that interrupted us long diff --git a/debian/patches-rt/0162-srcu-replace-local_irqsave-with-a-locallock.patch b/debian/patches-rt/0162-srcu-replace-local_irqsave-with-a-locallock.patch index 1b8579494..ba736b670 100644 --- a/debian/patches-rt/0162-srcu-replace-local_irqsave-with-a-locallock.patch +++ b/debian/patches-rt/0162-srcu-replace-local_irqsave-with-a-locallock.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 12 Oct 2017 18:37:12 +0200 -Subject: [PATCH 162/353] srcu: replace local_irqsave() with a locallock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6e91931c31ac57dfd998afb20cf33c5db0211f1 +Subject: [PATCH 162/354] srcu: replace local_irqsave() with a locallock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cca3434820462a5c77afd4e917e4e4962cbbfa09 There are two instances which disable interrupts in order to become a stable this_cpu_ptr() pointer. The restore part is coupled with diff --git a/debian/patches-rt/0163-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch b/debian/patches-rt/0163-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch index 34de5c874..8b4939daf 100644 --- a/debian/patches-rt/0163-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch +++ b/debian/patches-rt/0163-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch @@ -1,7 +1,7 @@ From: Julia Cartwright <julia@ni.com> Date: Wed, 12 Oct 2016 11:21:14 -0500 -Subject: [PATCH 163/353] rcu: enable rcu_normal_after_boot by default for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=715730eb2e4c433fec91c0b5be88a42cf53250b1 +Subject: [PATCH 163/354] rcu: enable rcu_normal_after_boot by default for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3306adb347401d093d898e89580e9a309dc25ec4 The forcing of an expedited grace period is an expensive and very RT-application unfriendly operation, as it forcibly preempts all running diff --git a/debian/patches-rt/0164-tty-serial-omap-Make-the-locking-RT-aware.patch b/debian/patches-rt/0164-tty-serial-omap-Make-the-locking-RT-aware.patch index e31363e71..ea8a619c5 100644 --- a/debian/patches-rt/0164-tty-serial-omap-Make-the-locking-RT-aware.patch +++ b/debian/patches-rt/0164-tty-serial-omap-Make-the-locking-RT-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 28 Jul 2011 13:32:57 +0200 -Subject: [PATCH 164/353] tty/serial/omap: Make the locking RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43f213f089719957589286cb6d993219d226880f +Subject: [PATCH 164/354] tty/serial/omap: Make the locking RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1e8e3580f7c188a65f926326bd1b8eeba022fbb2 The lock is a sleeping lock and local_irq_save() is not the optimsation we are looking for. Redo it to make it work on -RT and diff --git a/debian/patches-rt/0165-tty-serial-pl011-Make-the-locking-work-on-RT.patch b/debian/patches-rt/0165-tty-serial-pl011-Make-the-locking-work-on-RT.patch index 3920ee816..0af1e53f2 100644 --- a/debian/patches-rt/0165-tty-serial-pl011-Make-the-locking-work-on-RT.patch +++ b/debian/patches-rt/0165-tty-serial-pl011-Make-the-locking-work-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 8 Jan 2013 21:36:51 +0100 -Subject: [PATCH 165/353] tty/serial/pl011: Make the locking work on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fc32db3abe672f6824c06bcc529972a74b1c7b44 +Subject: [PATCH 165/354] tty/serial/pl011: Make the locking work on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e42f8f75bde7e5d13fb4c18ed5c598305dfd5af The lock is a sleeping lock and local_irq_save() is not the optimsation we are looking for. Redo it to make it work on -RT and non-RT. diff --git a/debian/patches-rt/0166-tty-serial-pl011-explicitly-initialize-the-flags-var.patch b/debian/patches-rt/0166-tty-serial-pl011-explicitly-initialize-the-flags-var.patch index dd96a0f53..06b8a58c3 100644 --- a/debian/patches-rt/0166-tty-serial-pl011-explicitly-initialize-the-flags-var.patch +++ b/debian/patches-rt/0166-tty-serial-pl011-explicitly-initialize-the-flags-var.patch @@ -1,11 +1,11 @@ From: Kurt Kanzenbach <kurt@linutronix.de> Date: Mon, 24 Sep 2018 10:29:01 +0200 -Subject: [PATCH 166/353] tty: serial: pl011: explicitly initialize the flags +Subject: [PATCH 166/354] tty: serial: pl011: explicitly initialize the flags variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d9aaa3e016ce6e6c21fd051f669bc169ba8fb58 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=28e7bbd2ceab19819d33534f5ab2e3818fdd1fef Silence the following gcc warning: diff --git a/debian/patches-rt/0167-rt-Improve-the-serial-console-PASS_LIMIT.patch b/debian/patches-rt/0167-rt-Improve-the-serial-console-PASS_LIMIT.patch index e91a0dc2e..7f96a6424 100644 --- a/debian/patches-rt/0167-rt-Improve-the-serial-console-PASS_LIMIT.patch +++ b/debian/patches-rt/0167-rt-Improve-the-serial-console-PASS_LIMIT.patch @@ -1,10 +1,10 @@ From: Ingo Molnar <mingo@elte.hu> Date: Wed, 14 Dec 2011 13:05:54 +0100 -Subject: [PATCH 167/353] rt: Improve the serial console PASS_LIMIT +Subject: [PATCH 167/354] rt: Improve the serial console PASS_LIMIT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d67046491f07ce337099d9076f5d0af41457f4e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e40c1effb13fb57056db9f7172932fce5ba0bea Beyond the warning: diff --git a/debian/patches-rt/0168-tty-serial-8250-don-t-take-the-trylock-during-oops.patch b/debian/patches-rt/0168-tty-serial-8250-don-t-take-the-trylock-during-oops.patch index 2a649311b..c80a34250 100644 --- a/debian/patches-rt/0168-tty-serial-8250-don-t-take-the-trylock-during-oops.patch +++ b/debian/patches-rt/0168-tty-serial-8250-don-t-take-the-trylock-during-oops.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 11 Apr 2016 16:55:02 +0200 -Subject: [PATCH 168/353] tty: serial: 8250: don't take the trylock during oops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fedac9e5838862f2a77d0d8a34b4b0bffca76c83 +Subject: [PATCH 168/354] tty: serial: 8250: don't take the trylock during oops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9bf1e4e2c9ba1ddb81cd0be68e7d93f8ccb70a41 An oops with irqs off (panic() from irqsafe hrtimer like the watchdog timer) will lead to a lockdep warning on each invocation and as such @@ -14,10 +14,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index cba4888bc482..af7df5ca17a5 100644 +index 7f5d51de622d..766bdb1717d5 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c -@@ -3316,10 +3316,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3315,10 +3315,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, serial8250_rpm_get(up); diff --git a/debian/patches-rt/0169-locking-percpu-rwsem-Remove-preempt_disable-variants.patch b/debian/patches-rt/0169-locking-percpu-rwsem-Remove-preempt_disable-variants.patch index c94ddef0f..c87eee50f 100644 --- a/debian/patches-rt/0169-locking-percpu-rwsem-Remove-preempt_disable-variants.patch +++ b/debian/patches-rt/0169-locking-percpu-rwsem-Remove-preempt_disable-variants.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Wed, 23 Nov 2016 16:29:32 +0100 -Subject: [PATCH 169/353] locking/percpu-rwsem: Remove preempt_disable variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fddf5c58a99b20575b47df00a28f199e3c685d89 +Subject: [PATCH 169/354] locking/percpu-rwsem: Remove preempt_disable variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=42b6adadac37c91c1dde57d7c2852076ac4c17d9 Effective revert commit: diff --git a/debian/patches-rt/0170-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch b/debian/patches-rt/0170-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch index e6308c73d..facfc4bde 100644 --- a/debian/patches-rt/0170-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch +++ b/debian/patches-rt/0170-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch @@ -1,8 +1,8 @@ From: Yong Zhang <yong.zhang0@gmail.com> Date: Tue, 15 May 2012 13:53:56 +0800 -Subject: [PATCH 170/353] mm: Protect activate_mm() by +Subject: [PATCH 170/354] mm: Protect activate_mm() by preempt_[disable&enable]_rt() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=72765ad90ad37a0185e3be74225c144d5d83cfc8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca2a6dce0220e2384068a38b64a46d253e06ff3e User preempt_*_rt instead of local_irq_*_rt or otherwise there will be warning on ARM like below: diff --git a/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch b/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch index 8f5257657..c58750dd6 100644 --- a/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch +++ b/debian/patches-rt/0171-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 13 Sep 2017 12:32:34 +0200 -Subject: [PATCH 171/353] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD +Subject: [PATCH 171/354] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD init -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aecaf31f5a98b65e4f49dd9ecfddfe1da5b686e6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=429cb6881d65bc2a8c51883beecc8f44da66bf81 Commit 3d375d78593c ("mm: update callers to use HASH_ZERO flag") removed INIT_HLIST_BL_HEAD and uses the ZERO flag instead for the init. However diff --git a/debian/patches-rt/0172-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch b/debian/patches-rt/0172-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch index e05bfa94a..c91a896a1 100644 --- a/debian/patches-rt/0172-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch +++ b/debian/patches-rt/0172-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 20 Oct 2017 11:29:53 +0200 -Subject: [PATCH 172/353] fs/dcache: disable preemption on i_dir_seq's write +Subject: [PATCH 172/354] fs/dcache: disable preemption on i_dir_seq's write side -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=73dad1b4c735605f03c709d3631000ed38390d8e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dbb94b79e4151c3ff897d2df1ce2b2e24bdcd967 i_dir_seq is an opencoded seqcounter. Based on the code it looks like we could have two writers in parallel despite the fact that the d_lock is @@ -81,7 +81,7 @@ index 5df2e8ee23ed..9cdec5f41e40 100644 inode->dirtied_when = 0; diff --git a/include/linux/fs.h b/include/linux/fs.h -index 95b8ef09b76c..e77b126ea76a 100644 +index f89748aac8c3..23388d4d2fb8 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -679,7 +679,7 @@ struct inode { diff --git a/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch b/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch index be58e2840..e6016af58 100644 --- a/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch +++ b/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch @@ -1,8 +1,8 @@ From: Julia Cartwright <julia@ni.com> Date: Mon, 7 May 2018 08:58:57 -0500 -Subject: [PATCH 173/353] squashfs: make use of local lock in multi_cpu +Subject: [PATCH 173/354] squashfs: make use of local lock in multi_cpu decompressor -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1b53a7e12286b2e587e9bea1c4ab5ab4ebc5c892 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=54e8d9d122e7500d16ec29a7d0958b475b7df9c6 Currently, the squashfs multi_cpu decompressor makes use of get_cpu_ptr()/put_cpu_ptr(), which unconditionally disable preemption diff --git a/debian/patches-rt/0174-thermal-Defer-thermal-wakups-to-threads.patch b/debian/patches-rt/0174-thermal-Defer-thermal-wakups-to-threads.patch index 3e8f606ca..de3de4632 100644 --- a/debian/patches-rt/0174-thermal-Defer-thermal-wakups-to-threads.patch +++ b/debian/patches-rt/0174-thermal-Defer-thermal-wakups-to-threads.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> Date: Tue, 17 Feb 2015 09:37:44 +0100 -Subject: [PATCH 174/353] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ecea5d1de8aaf3cf20b90ce2dd1b811db8ca070b +Subject: [PATCH 174/354] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87c64d81690682f1d3d854aef4225d5ed65e4ef5 On RT the spin lock in pkg_temp_thermal_platfrom_thermal_notify will call schedule while we run in irq context. diff --git a/debian/patches-rt/0175-x86-fpu-Disable-preemption-around-local_bh_disable.patch b/debian/patches-rt/0175-x86-fpu-Disable-preemption-around-local_bh_disable.patch index 2c386a391..be7a2f708 100644 --- a/debian/patches-rt/0175-x86-fpu-Disable-preemption-around-local_bh_disable.patch +++ b/debian/patches-rt/0175-x86-fpu-Disable-preemption-around-local_bh_disable.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 11 Dec 2018 15:10:33 +0100 -Subject: [PATCH 175/353] x86/fpu: Disable preemption around local_bh_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9d155d7360346edcfd997c4f8857013a8c93466 +Subject: [PATCH 175/354] x86/fpu: Disable preemption around local_bh_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4dd3cc1c43c1bcc7763a2c7c010c40a76d292df8 __fpu__restore_sig() restores the content of the FPU state in the CPUs and in order to avoid concurency it disbles BH. On !RT it also disables diff --git a/debian/patches-rt/0176-fs-epoll-Do-not-disable-preemption-on-RT.patch b/debian/patches-rt/0176-fs-epoll-Do-not-disable-preemption-on-RT.patch index 1b43d2cda..b4414d2f9 100644 --- a/debian/patches-rt/0176-fs-epoll-Do-not-disable-preemption-on-RT.patch +++ b/debian/patches-rt/0176-fs-epoll-Do-not-disable-preemption-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 8 Jul 2011 16:35:35 +0200 -Subject: [PATCH 176/353] fs/epoll: Do not disable preemption on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ccbbabc4e09d6892351af5078f8d0992c4f33d98 +Subject: [PATCH 176/354] fs/epoll: Do not disable preemption on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5812793f2680e31a6631eb76d64b5faf489e8f43 ep_call_nested() takes a sleeping lock so we can't disable preemption. The light version is enough since ep_call_nested() doesn't mind beeing diff --git a/debian/patches-rt/0177-mm-vmalloc-Another-preempt-disable-region-which-suck.patch b/debian/patches-rt/0177-mm-vmalloc-Another-preempt-disable-region-which-suck.patch index 40f9e89d5..77193bec5 100644 --- a/debian/patches-rt/0177-mm-vmalloc-Another-preempt-disable-region-which-suck.patch +++ b/debian/patches-rt/0177-mm-vmalloc-Another-preempt-disable-region-which-suck.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 12 Jul 2011 11:39:36 +0200 -Subject: [PATCH 177/353] mm/vmalloc: Another preempt disable region which +Subject: [PATCH 177/354] mm/vmalloc: Another preempt disable region which sucks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a630b63e6f1caa67f15cc0d7503c051b9d5bed5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3fcab84b133f45d3c6ee9f2fa0e58448b73ceaf2 Avoid the preempt disable version of get_cpu_var(). The inner-lock should provide enough serialisation. diff --git a/debian/patches-rt/0178-block-mq-use-cpu_light.patch b/debian/patches-rt/0178-block-mq-use-cpu_light.patch index 7516eb79c..c62fa8bf0 100644 --- a/debian/patches-rt/0178-block-mq-use-cpu_light.patch +++ b/debian/patches-rt/0178-block-mq-use-cpu_light.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 9 Apr 2014 10:37:23 +0200 -Subject: [PATCH 178/353] block: mq: use cpu_light() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c5e8c04bf7fb78a2af8e0a2f3aebdf9afb0e134 +Subject: [PATCH 178/354] block: mq: use cpu_light() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=372cc57310b011197a496c5069171575b8678e4f there is a might sleep splat because get_cpu() disables preemption and later we grab a lock. As a workaround for this we use get_cpu_light(). diff --git a/debian/patches-rt/0179-block-mq-do-not-invoke-preempt_disable.patch b/debian/patches-rt/0179-block-mq-do-not-invoke-preempt_disable.patch index 51b6697fe..995996494 100644 --- a/debian/patches-rt/0179-block-mq-do-not-invoke-preempt_disable.patch +++ b/debian/patches-rt/0179-block-mq-do-not-invoke-preempt_disable.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 179/353] block/mq: do not invoke preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=653694f4e5539ad66c3c8094d1885337c2b9cb39 +Subject: [PATCH 179/354] block/mq: do not invoke preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=79747b5d405aba22927ec1f712a590812bd1d6a3 preempt_disable() and get_cpu() don't play well together with the sleeping locks it tries to allocate later. diff --git a/debian/patches-rt/0180-block-mq-don-t-complete-requests-via-IPI.patch b/debian/patches-rt/0180-block-mq-don-t-complete-requests-via-IPI.patch index 20844564a..32774c77b 100644 --- a/debian/patches-rt/0180-block-mq-don-t-complete-requests-via-IPI.patch +++ b/debian/patches-rt/0180-block-mq-don-t-complete-requests-via-IPI.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 29 Jan 2015 15:10:08 +0100 -Subject: [PATCH 180/353] block/mq: don't complete requests via IPI -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ddc500f1fab91f0709b7c883b688b12a63366890 +Subject: [PATCH 180/354] block/mq: don't complete requests via IPI +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4de202ade1f83a61b9dea261de4a26ef31092cb5 The IPI runs in hardirq context and there are sleeping locks. This patch moves the completion into a workqueue. diff --git a/debian/patches-rt/0181-md-raid5-Make-raid5_percpu-handling-RT-aware.patch b/debian/patches-rt/0181-md-raid5-Make-raid5_percpu-handling-RT-aware.patch index da3a64c76..6f27557bb 100644 --- a/debian/patches-rt/0181-md-raid5-Make-raid5_percpu-handling-RT-aware.patch +++ b/debian/patches-rt/0181-md-raid5-Make-raid5_percpu-handling-RT-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 6 Apr 2010 16:51:31 +0200 -Subject: [PATCH 181/353] md: raid5: Make raid5_percpu handling RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6903e12a02cec96bb490da0d8a8dda162a457e14 +Subject: [PATCH 181/354] md: raid5: Make raid5_percpu handling RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6fe116128639978d7c91654b6bf5aa0cc2054ce __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -19,7 +19,7 @@ Tested-by: Udo van den Heuvel <udovdh@xs4all.nl> 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 7eeae0301ccc..a93f05b9e3a2 100644 +index b98abe927d06..4363b0325b51 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2070,8 +2070,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) diff --git a/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch b/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch index 2c469cd98..382f0f055 100644 --- a/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch +++ b/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 7 Mar 2012 20:51:03 +0100 -Subject: [PATCH 182/353] rt: Introduce cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b039ab1c70ccae3ab8d445c85aed514ac4bf63ca +Subject: [PATCH 182/354] rt: Introduce cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=82c8b4098833aa717a4ef004ccf03e38df11f892 Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -76,7 +76,7 @@ index b78bab4395d8..7c4bc414a504 100644 + #endif /* defined(_LINUX_DELAY_H) */ diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 4de39964594d..768de46dba6b 100644 +index 260487c89a14..0ab19aa36357 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1963,6 +1963,27 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, diff --git a/debian/patches-rt/0183-hrtimer-Don-t-lose-state-in-cpu_chill.patch b/debian/patches-rt/0183-hrtimer-Don-t-lose-state-in-cpu_chill.patch index accdab949..7ef1e813f 100644 --- a/debian/patches-rt/0183-hrtimer-Don-t-lose-state-in-cpu_chill.patch +++ b/debian/patches-rt/0183-hrtimer-Don-t-lose-state-in-cpu_chill.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 19 Feb 2019 16:59:15 +0100 -Subject: [PATCH 183/353] hrtimer: Don't lose state in cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=721ff03f231a027cb0e48525bec4e1ecc07f0c86 +Subject: [PATCH 183/354] hrtimer: Don't lose state in cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b78f6c6c48e7f2394b77cdb736f146ea9f8b9ea6 In cpu_chill() the state is set to TASK_UNINTERRUPTIBLE and a timer is programmed. On return the state is always TASK_RUNNING which means we @@ -19,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 768de46dba6b..aa208a350a3b 100644 +index 0ab19aa36357..983c29fe0ff7 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1971,15 +1971,18 @@ void cpu_chill(void) diff --git a/debian/patches-rt/0184-hrtimer-cpu_chill-save-task-state-in-saved_state.patch b/debian/patches-rt/0184-hrtimer-cpu_chill-save-task-state-in-saved_state.patch index 4b0927b0a..376cd7800 100644 --- a/debian/patches-rt/0184-hrtimer-cpu_chill-save-task-state-in-saved_state.patch +++ b/debian/patches-rt/0184-hrtimer-cpu_chill-save-task-state-in-saved_state.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 26 Feb 2019 12:31:10 +0100 -Subject: [PATCH 184/353] hrtimer: cpu_chill(): save task state in +Subject: [PATCH 184/354] hrtimer: cpu_chill(): save task state in ->saved_state() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b619882e45a08ee21433ecd2b74d06981e22414 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7eadb4d1ffee649bab16b22b7328d9fcbc5376ac In the previous change I saved the current task state on stack. This was bad because while the task is scheduled-out it might receive a wake-up. @@ -20,7 +20,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index aa208a350a3b..1992f107599e 100644 +index 983c29fe0ff7..8f315ad08cd1 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1969,20 +1969,28 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, diff --git a/debian/patches-rt/0185-block-blk-mq-move-blk_queue_usage_counter_release-in.patch b/debian/patches-rt/0185-block-blk-mq-move-blk_queue_usage_counter_release-in.patch index 4ede7bb86..f028860fc 100644 --- a/debian/patches-rt/0185-block-blk-mq-move-blk_queue_usage_counter_release-in.patch +++ b/debian/patches-rt/0185-block-blk-mq-move-blk_queue_usage_counter_release-in.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 13 Mar 2018 13:49:16 +0100 -Subject: [PATCH 185/353] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 185/354] block: blk-mq: move blk_queue_usage_counter_release() into process context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=598cc45494b90c42a2f400150aaa3164ae26236a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c68a5d1db635c5eaa207649a4331bf1a22061b88 | BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 | in_atomic(): 1, irqs_disabled(): 0, pid: 255, name: kworker/u257:6 diff --git a/debian/patches-rt/0186-block-Use-cpu_chill-for-retry-loops.patch b/debian/patches-rt/0186-block-Use-cpu_chill-for-retry-loops.patch index 2d9c8eeab..e98c9b60e 100644 --- a/debian/patches-rt/0186-block-Use-cpu_chill-for-retry-loops.patch +++ b/debian/patches-rt/0186-block-Use-cpu_chill-for-retry-loops.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 20 Dec 2012 18:28:26 +0100 -Subject: [PATCH 186/353] block: Use cpu_chill() for retry loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=583684fb86328d92d6b173d67714e9560a07a940 +Subject: [PATCH 186/354] block: Use cpu_chill() for retry loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5f766c719ef5c289d94d119117d36b82f0901f86 Retry loops on RT might loop forever when the modifying side was preempted. Steven also observed a live lock when there was a diff --git a/debian/patches-rt/0187-fs-dcache-Use-cpu_chill-in-trylock-loops.patch b/debian/patches-rt/0187-fs-dcache-Use-cpu_chill-in-trylock-loops.patch index d0965cbcd..b08525a8b 100644 --- a/debian/patches-rt/0187-fs-dcache-Use-cpu_chill-in-trylock-loops.patch +++ b/debian/patches-rt/0187-fs-dcache-Use-cpu_chill-in-trylock-loops.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 7 Mar 2012 21:00:34 +0100 -Subject: [PATCH 187/353] fs: dcache: Use cpu_chill() in trylock loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=54fa302171c7878902ca36c506e0939142c4905d +Subject: [PATCH 187/354] fs: dcache: Use cpu_chill() in trylock loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d67bd1b8db1d9d56af792fc7904903578026f73 Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system diff --git a/debian/patches-rt/0188-net-Use-cpu_chill-instead-of-cpu_relax.patch b/debian/patches-rt/0188-net-Use-cpu_chill-instead-of-cpu_relax.patch index 0afbc3e71..c14608c3c 100644 --- a/debian/patches-rt/0188-net-Use-cpu_chill-instead-of-cpu_relax.patch +++ b/debian/patches-rt/0188-net-Use-cpu_chill-instead-of-cpu_relax.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 7 Mar 2012 21:10:04 +0100 -Subject: [PATCH 188/353] net: Use cpu_chill() instead of cpu_relax() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e96b68e550cd4012674a63859f68d242b7dbf31c +Subject: [PATCH 188/354] net: Use cpu_chill() instead of cpu_relax() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8531ec0fd1acd6c5810b1f7ee4780383546d616d Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index aa12bee4133a..dd652eae83e3 100644 +index 377832981178..24e4026017ec 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -63,6 +63,7 @@ @@ -25,7 +25,7 @@ index aa12bee4133a..dd652eae83e3 100644 #include <linux/kmod.h> #include <linux/slab.h> #include <linux/vmalloc.h> -@@ -668,7 +669,7 @@ static void prb_retire_rx_blk_timer_expired(struct timer_list *t) +@@ -672,7 +673,7 @@ static void prb_retire_rx_blk_timer_expired(struct timer_list *t) if (BLOCK_NUM_PKTS(pbd)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -34,7 +34,7 @@ index aa12bee4133a..dd652eae83e3 100644 } } -@@ -930,7 +931,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, +@@ -934,7 +935,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, if (!(status & TP_STATUS_BLK_TMO)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ diff --git a/debian/patches-rt/0189-fs-dcache-use-swait_queue-instead-of-waitqueue.patch b/debian/patches-rt/0189-fs-dcache-use-swait_queue-instead-of-waitqueue.patch index e8ef46f68..38127dfde 100644 --- a/debian/patches-rt/0189-fs-dcache-use-swait_queue-instead-of-waitqueue.patch +++ b/debian/patches-rt/0189-fs-dcache-use-swait_queue-instead-of-waitqueue.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 14 Sep 2016 14:35:49 +0200 -Subject: [PATCH 189/353] fs/dcache: use swait_queue instead of waitqueue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61d4045b9c6beeffcdd2c05d35c3214d65c595ed +Subject: [PATCH 189/354] fs/dcache: use swait_queue instead of waitqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=68ab83929039c1bf3c95833d1055613830ef96fb __d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock() which disables preemption. As a workaround convert it to swait. @@ -84,7 +84,7 @@ index 1ae163d54925..6e1c0b4c04f4 100644 hlist_bl_unlock(b); INIT_HLIST_NODE(&dentry->d_u.d_alias); diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c -index 6098e0c7f87b..9ce28840684a 100644 +index 0e03adbcf942..68df4ac61c30 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1234,7 +1234,7 @@ static int fuse_direntplus_link(struct file *file, @@ -97,7 +97,7 @@ index 6098e0c7f87b..9ce28840684a 100644 if (!o->nodeid) { /* diff --git a/fs/namei.c b/fs/namei.c -index 9e8fca598acc..277508fc3cbc 100644 +index 60b57e0bc174..219c3bd94a8f 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1646,7 +1646,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, @@ -109,7 +109,7 @@ index 9e8fca598acc..277508fc3cbc 100644 /* Don't go there if it's already dead */ if (unlikely(IS_DEADDIR(inode))) -@@ -3136,7 +3136,7 @@ static int lookup_open(struct nameidata *nd, struct path *path, +@@ -3156,7 +3156,7 @@ static int lookup_open(struct nameidata *nd, struct path *path, struct dentry *dentry; int error, create_error = 0; umode_t mode = op->mode; @@ -163,7 +163,7 @@ index ce9100b5604d..839bfa76f41e 100644 status = -EBUSY; spin_lock(&dentry->d_lock); diff --git a/fs/proc/base.c b/fs/proc/base.c -index e3f10c110b74..accc230079bb 100644 +index 69f48794b550..26334fa56e18 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1889,7 +1889,7 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx, diff --git a/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch b/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch index 53e612863..c6ecccd8f 100644 --- a/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch +++ b/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 24 Jul 2013 15:26:54 +0200 -Subject: [PATCH 190/353] workqueue: Use normal rcu -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37451e023726bbdd8de45fa86e8c5038be90e3ae +Subject: [PATCH 190/354] workqueue: Use normal rcu +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f077c23964fda23dcb109b53b423ca1b8f512573 There is no need for sched_rcu. The undocumented reason why sched_rcu is used is to avoid a few explicit rcu_read_lock()/unlock() pairs by @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 52 insertions(+), 43 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 4ea2f7fd20ce..d002a0ab68d6 100644 +index 017939097451..8bd6fe347a32 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -128,7 +128,7 @@ enum { @@ -107,7 +107,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 * read locked. * If the pwq needs to be used beyond the locking in effect, the caller is * responsible for guaranteeing that the pwq stays online. -@@ -695,8 +695,8 @@ static struct pool_workqueue *get_work_pwq(struct work_struct *work) +@@ -700,8 +700,8 @@ static struct pool_workqueue *get_work_pwq(struct work_struct *work) * @work: the work item of interest * * Pools are created and destroyed under wq_pool_mutex, and allows read @@ -118,7 +118,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 * * All fields of the returned pool are accessible as long as the above * mentioned locking is in effect. If the returned pool needs to be used -@@ -1101,7 +1101,7 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) +@@ -1104,7 +1104,7 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) { if (pwq) { /* @@ -127,7 +127,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 * following lock operations are safe. */ spin_lock_irq(&pwq->pool->lock); -@@ -1229,6 +1229,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1232,6 +1232,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) return 0; @@ -135,7 +135,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 /* * The queueing is in progress, or it is already queued. Try to * steal it from ->worklist without clearing WORK_STRUCT_PENDING. -@@ -1267,10 +1268,12 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1270,10 +1271,12 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, set_work_pool_and_keep_pending(work, pool->id); spin_unlock(&pool->lock); @@ -148,7 +148,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 local_irq_restore(*flags); if (work_is_canceling(work)) return -ENOENT; -@@ -1383,6 +1386,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1386,6 +1389,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, if (unlikely(wq->flags & __WQ_DRAINING) && WARN_ON_ONCE(!is_chained_work(wq))) return; @@ -156,7 +156,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 retry: /* pwq which will be used unless @work is executing elsewhere */ if (wq->flags & WQ_UNBOUND) { -@@ -1441,10 +1445,8 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1444,10 +1448,8 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, /* pwq determined, queue */ trace_workqueue_queue_work(req_cpu, pwq, work); @@ -169,7 +169,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 pwq->nr_in_flight[pwq->work_color]++; work_flags = work_color_to_flags(pwq->work_color); -@@ -1463,7 +1465,9 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1466,7 +1468,9 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, debug_work_activate(work); insert_work(pwq, work, worklist, work_flags); @@ -179,7 +179,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } /** -@@ -2861,14 +2865,14 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2864,14 +2868,14 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, might_sleep(); @@ -197,7 +197,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2900,10 +2904,11 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2903,10 +2907,11 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, lock_map_acquire(&pwq->wq->lockdep_map); lock_map_release(&pwq->wq->lockdep_map); } @@ -210,7 +210,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 return false; } -@@ -3348,7 +3353,7 @@ static void rcu_free_pool(struct rcu_head *rcu) +@@ -3351,7 +3356,7 @@ static void rcu_free_pool(struct rcu_head *rcu) * put_unbound_pool - put a worker_pool * @pool: worker_pool to put * @@ -219,7 +219,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 * safe manner. get_unbound_pool() calls this function on its failure path * and this function should be able to release pools which went through, * successfully or not, init_worker_pool(). -@@ -3402,8 +3407,8 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3405,8 +3410,8 @@ static void put_unbound_pool(struct worker_pool *pool) del_timer_sync(&pool->idle_timer); del_timer_sync(&pool->mayday_timer); @@ -230,7 +230,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } /** -@@ -3516,14 +3521,14 @@ static void pwq_unbound_release_workfn(struct work_struct *work) +@@ -3519,14 +3524,14 @@ static void pwq_unbound_release_workfn(struct work_struct *work) put_unbound_pool(pool); mutex_unlock(&wq_pool_mutex); @@ -247,7 +247,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } /** -@@ -4230,7 +4235,7 @@ void destroy_workqueue(struct workqueue_struct *wq) +@@ -4233,7 +4238,7 @@ void destroy_workqueue(struct workqueue_struct *wq) * The base ref is never dropped on per-cpu pwqs. Directly * schedule RCU free. */ @@ -256,7 +256,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } else { /* * We're the sole accessor of @wq at this point. Directly -@@ -4340,7 +4345,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4343,7 +4348,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) struct pool_workqueue *pwq; bool ret; @@ -266,7 +266,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4351,7 +4357,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4354,7 +4360,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); ret = !list_empty(&pwq->delayed_works); @@ -276,7 +276,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 return ret; } -@@ -4377,15 +4384,15 @@ unsigned int work_busy(struct work_struct *work) +@@ -4380,15 +4387,15 @@ unsigned int work_busy(struct work_struct *work) if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -296,7 +296,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 return ret; } -@@ -4570,7 +4577,7 @@ void show_workqueue_state(void) +@@ -4573,7 +4580,7 @@ void show_workqueue_state(void) unsigned long flags; int pi; @@ -305,7 +305,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 pr_info("Showing busy workqueues and worker pools:\n"); -@@ -4635,7 +4642,7 @@ void show_workqueue_state(void) +@@ -4638,7 +4645,7 @@ void show_workqueue_state(void) touch_nmi_watchdog(); } @@ -314,7 +314,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } /* used to show worker information through /proc/PID/{comm,stat,status} */ -@@ -5022,16 +5029,16 @@ bool freeze_workqueues_busy(void) +@@ -5025,16 +5032,16 @@ bool freeze_workqueues_busy(void) * nr_active is monotonically decreasing. It's safe * to peek without lock. */ @@ -334,7 +334,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 } out_unlock: mutex_unlock(&wq_pool_mutex); -@@ -5233,7 +5240,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5240,7 +5247,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, const char *delim = ""; int node, written = 0; @@ -344,7 +344,7 @@ index 4ea2f7fd20ce..d002a0ab68d6 100644 for_each_node(node) { written += scnprintf(buf + written, PAGE_SIZE - written, "%s%d:%d", delim, node, -@@ -5241,7 +5249,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5248,7 +5256,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, delim = " "; } written += scnprintf(buf + written, PAGE_SIZE - written, "\n"); diff --git a/debian/patches-rt/0191-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch b/debian/patches-rt/0191-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch index afc96c299..e2b10051b 100644 --- a/debian/patches-rt/0191-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch +++ b/debian/patches-rt/0191-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 21:42:26 +0200 -Subject: [PATCH 191/353] workqueue: Use local irq lock instead of irq disable +Subject: [PATCH 191/354] workqueue: Use local irq lock instead of irq disable regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f12d688441df0c1a59c7e65616a8a4eabe4d52c3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c620d30a8ecfc1a79d34431f64defe6afa24bfb9 Use a local_irq_lock as a replacement for irq off regions. We keep the semantic of irq-off in regard to the pool->lock and remain preemptible. @@ -13,7 +13,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index d002a0ab68d6..3cf50eac5351 100644 +index 8bd6fe347a32..71afa2de6aba 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,6 +50,7 @@ @@ -33,7 +33,7 @@ index d002a0ab68d6..3cf50eac5351 100644 static int worker_thread(void *__worker); static void workqueue_sysfs_unregister(struct workqueue_struct *wq); -@@ -1104,9 +1107,11 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) +@@ -1107,9 +1110,11 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) * As both pwqs and pools are RCU protected, the * following lock operations are safe. */ @@ -47,7 +47,7 @@ index d002a0ab68d6..3cf50eac5351 100644 } } -@@ -1210,7 +1215,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1213,7 +1218,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, struct worker_pool *pool; struct pool_workqueue *pwq; @@ -56,7 +56,7 @@ index d002a0ab68d6..3cf50eac5351 100644 /* try to steal the timer if it exists */ if (is_dwork) { -@@ -1274,7 +1279,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1277,7 +1282,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, spin_unlock(&pool->lock); fail: rcu_read_unlock(); @@ -65,7 +65,7 @@ index d002a0ab68d6..3cf50eac5351 100644 if (work_is_canceling(work)) return -ENOENT; cpu_relax(); -@@ -1379,7 +1384,13 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1382,7 +1387,13 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, * queued or lose PENDING. Grabbing PENDING and queueing should * happen with IRQ disabled. */ @@ -79,7 +79,7 @@ index d002a0ab68d6..3cf50eac5351 100644 /* if draining, only works from the same workqueue are allowed */ -@@ -1487,14 +1498,14 @@ bool queue_work_on(int cpu, struct workqueue_struct *wq, +@@ -1490,14 +1501,14 @@ bool queue_work_on(int cpu, struct workqueue_struct *wq, bool ret = false; unsigned long flags; @@ -96,7 +96,7 @@ index d002a0ab68d6..3cf50eac5351 100644 return ret; } EXPORT_SYMBOL(queue_work_on); -@@ -1503,8 +1514,11 @@ void delayed_work_timer_fn(struct timer_list *t) +@@ -1506,8 +1517,11 @@ void delayed_work_timer_fn(struct timer_list *t) { struct delayed_work *dwork = from_timer(dwork, t, timer); @@ -108,7 +108,7 @@ index d002a0ab68d6..3cf50eac5351 100644 } EXPORT_SYMBOL(delayed_work_timer_fn); -@@ -1559,14 +1573,14 @@ bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, +@@ -1562,14 +1576,14 @@ bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, unsigned long flags; /* read the comment in __queue_work() */ @@ -125,7 +125,7 @@ index d002a0ab68d6..3cf50eac5351 100644 return ret; } EXPORT_SYMBOL(queue_delayed_work_on); -@@ -1601,7 +1615,7 @@ bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, +@@ -1604,7 +1618,7 @@ bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, if (likely(ret >= 0)) { __queue_delayed_work(cpu, wq, dwork, delay); @@ -134,7 +134,7 @@ index d002a0ab68d6..3cf50eac5351 100644 } /* -ENOENT from try_to_grab_pending() becomes %true */ -@@ -1612,11 +1626,12 @@ EXPORT_SYMBOL_GPL(mod_delayed_work_on); +@@ -1615,11 +1629,12 @@ EXPORT_SYMBOL_GPL(mod_delayed_work_on); static void rcu_work_rcufn(struct rcu_head *rcu) { struct rcu_work *rwork = container_of(rcu, struct rcu_work, rcu); @@ -149,7 +149,7 @@ index d002a0ab68d6..3cf50eac5351 100644 } /** -@@ -3006,7 +3021,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3009,7 +3024,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -158,7 +158,7 @@ index d002a0ab68d6..3cf50eac5351 100644 /* * This allows canceling during early boot. We know that @work -@@ -3067,10 +3082,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3070,10 +3085,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -171,7 +171,7 @@ index d002a0ab68d6..3cf50eac5351 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3108,7 +3123,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3111,7 +3126,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) return false; set_work_pool_and_clear_pending(work, get_work_pool_id(work)); diff --git a/debian/patches-rt/0192-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch b/debian/patches-rt/0192-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch index 4c6b7160c..cf1ea6812 100644 --- a/debian/patches-rt/0192-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch +++ b/debian/patches-rt/0192-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 1 Jul 2013 11:02:42 +0200 -Subject: [PATCH 192/353] workqueue: Prevent workqueue versus ata-piix livelock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9576dddf691d00fbd07ff2e92b503f25c4c2d58 +Subject: [PATCH 192/354] workqueue: Prevent workqueue versus ata-piix livelock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb198a2ba0d915ad966bcec1f40b15f824f64c6c An Intel i7 system regularly detected rcu_preempt stalls after the kernel was upgraded from 3.6-rt to 3.8-rt. When the stall happened, disk I/O was no @@ -113,7 +113,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 3cf50eac5351..50b037b79101 100644 +index 71afa2de6aba..a44e5c245276 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -51,6 +51,7 @@ @@ -124,7 +124,7 @@ index 3cf50eac5351..50b037b79101 100644 #include "workqueue_internal.h" -@@ -1282,7 +1283,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1285,7 +1286,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, local_unlock_irqrestore(pendingb_lock, *flags); if (work_is_canceling(work)) return -ENOENT; diff --git a/debian/patches-rt/0193-sched-Distangle-worker-accounting-from-rqlock.patch b/debian/patches-rt/0193-sched-Distangle-worker-accounting-from-rqlock.patch index d68e7c167..e71c1b480 100644 --- a/debian/patches-rt/0193-sched-Distangle-worker-accounting-from-rqlock.patch +++ b/debian/patches-rt/0193-sched-Distangle-worker-accounting-from-rqlock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 22 Jun 2011 19:47:03 +0200 -Subject: [PATCH 193/353] sched: Distangle worker accounting from rqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f51bb16041ffffd9adf703fde1245e9afda898b9 +Subject: [PATCH 193/354] sched: Distangle worker accounting from rqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7d6a23596c58f6835f693f56efda15aedfe2e48b The worker accounting for cpu bound workers is plugged into the core scheduler code and the wakeup code. This is not a hard requirement and @@ -169,10 +169,10 @@ index 4a714c92dff2..20585605b2ac 100644 EXPORT_SYMBOL(schedule); diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 50b037b79101..7561ac884a3e 100644 +index a44e5c245276..21751b94b93a 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -844,43 +844,32 @@ static void wake_up_worker(struct worker_pool *pool) +@@ -847,43 +847,32 @@ static void wake_up_worker(struct worker_pool *pool) } /** @@ -227,7 +227,7 @@ index 50b037b79101..7561ac884a3e 100644 struct worker_pool *pool; /* -@@ -889,13 +878,15 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task) +@@ -892,13 +881,15 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task) * checking NOT_RUNNING. */ if (worker->flags & WORKER_NOT_RUNNING) @@ -247,7 +247,7 @@ index 50b037b79101..7561ac884a3e 100644 /* * The counterpart of the following dec_and_test, implied mb, -@@ -909,9 +900,12 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task) +@@ -912,9 +903,12 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task) * lock is safe. */ if (atomic_dec_and_test(&pool->nr_running) && diff --git a/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch b/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch index ec8411674..f05c8a424 100644 --- a/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch +++ b/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 17 Jul 2011 21:41:35 +0200 -Subject: [PATCH 194/353] debugobjects: Make RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b56a11fdddede9388a998f84bc84f86f0ed9197e +Subject: [PATCH 194/354] debugobjects: Make RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=752e1e6a5668d281e4d7fdeb624bcfa5e61264bd Avoid filling the pool / allocating memory with irqs off(). @@ -11,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c -index 5f23d896df55..e486693aea49 100644 +index 62d095fd0c52..08c372c65d10 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c -@@ -466,7 +466,7 @@ static void debug_objects_fill_pool(void) +@@ -475,7 +475,7 @@ static void debug_objects_fill_pool(void) * On RT enabled kernels the pool refill must happen in preemptible * context: */ diff --git a/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch b/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch index 84e014caa..697f122f2 100644 --- a/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch +++ b/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 22 Feb 2012 12:03:30 +0100 -Subject: [PATCH 195/353] seqlock: Prevent rt starvation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f274d1f15458bdf8a8f29a8e2e976e27ce2c1d93 +Subject: [PATCH 195/354] seqlock: Prevent rt starvation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3ba756f999110aa6ca549e1eaa5584bbd16c4ca If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. @@ -159,10 +159,10 @@ index a42a29952889..a3768cfce914 100644 } diff --git a/include/net/neighbour.h b/include/net/neighbour.h -index 5ce035984a4d..1166fc17b757 100644 +index e58ef9e338de..bd140597e068 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h -@@ -451,7 +451,7 @@ static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb) +@@ -444,7 +444,7 @@ static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb) } #endif @@ -171,7 +171,7 @@ index 5ce035984a4d..1166fc17b757 100644 { unsigned int hh_alen = 0; unsigned int seq; -@@ -493,7 +493,7 @@ static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb +@@ -486,7 +486,7 @@ static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb static inline int neigh_output(struct neighbour *n, struct sk_buff *skb) { @@ -180,7 +180,7 @@ index 5ce035984a4d..1166fc17b757 100644 if ((n->nud_state & NUD_CONNECTED) && hh->hh_len) return neigh_hh_output(hh, skb); -@@ -534,7 +534,7 @@ struct neighbour_cb { +@@ -527,7 +527,7 @@ struct neighbour_cb { #define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb) diff --git a/debian/patches-rt/0196-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch b/debian/patches-rt/0196-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch index 483c54fad..b4e59cbc4 100644 --- a/debian/patches-rt/0196-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch +++ b/debian/patches-rt/0196-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Wed, 18 Feb 2015 16:05:28 +0100 -Subject: [PATCH 196/353] sunrpc: Make svc_xprt_do_enqueue() use +Subject: [PATCH 196/354] sunrpc: Make svc_xprt_do_enqueue() use get_cpu_light() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=250fbc3d90c6ccd11c5c1aec106882f031bccfa8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=30de5199c391e2f9e845253c5287e3a46d588fc2 |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 |in_atomic(): 1, irqs_disabled(): 0, pid: 3194, name: rpc.nfsd diff --git a/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch b/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch index 9ea8b1ddc..0a66ef1ac 100644 --- a/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch +++ b/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 12 Jul 2011 15:38:34 +0200 -Subject: [PATCH 197/353] net: Use skbufhead with raw lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=128030e2370b7b2d2b5607a2e95202392ae79eaa +Subject: [PATCH 197/354] net: Use skbufhead with raw lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac48ebc6bbcdf2e311ceec73d31c14d14b172601 Use the rps lock as rawlock so we can keep irq-off regions. It looks low latency. However we can't kfree() from this context therefore we defer this @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 4d0f48e74755..d3e4b3f195ff 100644 +index ac87fcc4d44b..77209c1c2e7e 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2992,6 +2992,7 @@ struct softnet_data { +@@ -2998,6 +2998,7 @@ struct softnet_data { unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -52,7 +52,7 @@ index f97734f34746..3ede4f0eac10 100644 struct lock_class_key *class) { diff --git a/net/core/dev.c b/net/core/dev.c -index 70a3cebdac89..7bce4581d6f0 100644 +index c6c45f663539..97c74c2e500e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -219,14 +219,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) @@ -72,7 +72,7 @@ index 70a3cebdac89..7bce4581d6f0 100644 #endif } -@@ -5862,7 +5862,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5864,7 +5864,9 @@ static int process_backlog(struct napi_struct *napi, int quota) while (again) { struct sk_buff *skb; @@ -82,7 +82,7 @@ index 70a3cebdac89..7bce4581d6f0 100644 rcu_read_lock(); __netif_receive_skb(skb); rcu_read_unlock(); -@@ -5870,9 +5872,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5872,9 +5874,9 @@ static int process_backlog(struct napi_struct *napi, int quota) if (++work >= quota) return work; @@ -93,7 +93,7 @@ index 70a3cebdac89..7bce4581d6f0 100644 rps_lock(sd); if (skb_queue_empty(&sd->input_pkt_queue)) { /* -@@ -6345,13 +6347,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) +@@ -6347,13 +6349,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) unsigned long time_limit = jiffies + usecs_to_jiffies(READ_ONCE(netdev_budget_usecs)); int budget = READ_ONCE(netdev_budget); @@ -115,7 +115,7 @@ index 70a3cebdac89..7bce4581d6f0 100644 for (;;) { struct napi_struct *n; -@@ -9549,10 +9559,13 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9541,10 +9551,13 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -130,7 +130,7 @@ index 70a3cebdac89..7bce4581d6f0 100644 return 0; } -@@ -9863,8 +9876,9 @@ static int __init net_dev_init(void) +@@ -9855,8 +9868,9 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); diff --git a/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch index caf96c5f5..c4c909787 100644 --- a/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch +++ b/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch @@ -1,7 +1,7 @@ From: Clark Williams <williams@redhat.com> Date: Fri, 17 Dec 2021 14:31:31 -0600 -Subject: [PATCH 198/353] net: move xmit_recursion to per-task variable on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9fcf3310d12df456718d378ff2826b302f35c28b +Subject: [PATCH 198/354] net: move xmit_recursion to per-task variable on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0c1a3fa8d4d3a2a90e975e9aa5dea6e7144a06b A softirq on -RT can be preempted. That means one task is in __dev_queue_xmit(), gets preempted and another task may enter @@ -24,10 +24,10 @@ Signed-off-by: Clark Williams <williams@redhat.com> 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index d3e4b3f195ff..63a0574e2ac2 100644 +index 77209c1c2e7e..1644390430a3 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -590,7 +590,11 @@ struct netdev_queue { +@@ -597,7 +597,11 @@ struct netdev_queue { * write-mostly part */ spinlock_t _xmit_lock ____cacheline_aligned_in_smp; @@ -39,7 +39,7 @@ index d3e4b3f195ff..63a0574e2ac2 100644 /* * Time (in jiffies) of last Tx */ -@@ -3011,14 +3015,38 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd, +@@ -3017,14 +3021,38 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd, #endif } @@ -79,7 +79,7 @@ index d3e4b3f195ff..63a0574e2ac2 100644 static inline bool dev_xmit_recursion(void) { return unlikely(__this_cpu_read(softnet_data.xmit.recursion) > -@@ -3034,6 +3062,7 @@ static inline void dev_xmit_recursion_dec(void) +@@ -3040,6 +3068,7 @@ static inline void dev_xmit_recursion_dec(void) { __this_cpu_dec(softnet_data.xmit.recursion); } @@ -87,7 +87,7 @@ index d3e4b3f195ff..63a0574e2ac2 100644 void __netif_schedule(struct Qdisc *q); void netif_schedule_queue(struct netdev_queue *txq); -@@ -3843,6 +3872,44 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) +@@ -3849,6 +3878,44 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) return (1U << debug_value) - 1; } @@ -132,7 +132,7 @@ index d3e4b3f195ff..63a0574e2ac2 100644 static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); -@@ -3895,7 +3962,7 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) +@@ -3901,7 +3968,7 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) static inline void txq_trans_update(struct netdev_queue *txq) { @@ -156,7 +156,7 @@ index 3bc6b3206e14..7aa299de5ebf 100644 int pagefault_disabled; #ifdef CONFIG_MMU diff --git a/net/core/dev.c b/net/core/dev.c -index 7bce4581d6f0..32e8b237496c 100644 +index 97c74c2e500e..01f06514aed9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3837,10 +3837,14 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev) @@ -174,7 +174,7 @@ index 7bce4581d6f0..32e8b237496c 100644 if (dev_xmit_recursion()) goto recursion_alert; -@@ -8598,7 +8602,7 @@ static void netdev_init_one_queue(struct net_device *dev, +@@ -8600,7 +8604,7 @@ static void netdev_init_one_queue(struct net_device *dev, /* Initialize queue lock */ spin_lock_init(&queue->_xmit_lock); netdev_set_xmit_lockdep_class(&queue->_xmit_lock, dev->type); diff --git a/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch index 4138baf8e..49def276f 100644 --- a/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch +++ b/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 20 Jan 2016 15:39:05 +0100 -Subject: [PATCH 199/353] net: provide a way to delegate processing a softirq +Subject: [PATCH 199/354] net: provide a way to delegate processing a softirq to ksoftirqd -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=641249df860e32f2d7f64f5960c7eaa359ba7228 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb1f8d10fb922529f1cb373bc3d13996917e6c52 If the NET_RX uses up all of his budget it moves the following NAPI invocations into the `ksoftirqd`. On -RT it does not do so. Instead it @@ -71,10 +71,10 @@ index 27a4bb2303d0..25bcf2f2714b 100644 * This function must run with irqs disabled! */ diff --git a/net/core/dev.c b/net/core/dev.c -index 32e8b237496c..7a316f4ff13c 100644 +index 01f06514aed9..797f64ecc587 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -6395,7 +6395,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) +@@ -6397,7 +6397,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) list_splice_tail(&repoll, &list); list_splice(&list, &sd->poll_list); if (!list_empty(&sd->poll_list)) diff --git a/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch index 31ef66632..0b3c23de7 100644 --- a/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch +++ b/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 30 Mar 2016 13:36:29 +0200 -Subject: [PATCH 200/353] net: dev: always take qdisc's busylock in +Subject: [PATCH 200/354] net: dev: always take qdisc's busylock in __dev_xmit_skb() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07a4adaebe9b2f45b7f9e2a42138e8ca69d2aaeb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=15bb3174f03ace026888081b3341bcc51443e15c The root-lock is dropped before dev_hard_start_xmit() is invoked and after setting the __QDISC___STATE_RUNNING bit. If this task is now pushed away @@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 4 insertions(+) diff --git a/net/core/dev.c b/net/core/dev.c -index 7a316f4ff13c..face03c32651 100644 +index 797f64ecc587..2c563e0f6955 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3476,7 +3476,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, diff --git a/debian/patches-rt/0201-net-Qdisc-use-a-seqlock-instead-seqcount.patch b/debian/patches-rt/0201-net-Qdisc-use-a-seqlock-instead-seqcount.patch index 1862aa862..e67d7cca6 100644 --- a/debian/patches-rt/0201-net-Qdisc-use-a-seqlock-instead-seqcount.patch +++ b/debian/patches-rt/0201-net-Qdisc-use-a-seqlock-instead-seqcount.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 14 Sep 2016 17:36:35 +0200 -Subject: [PATCH 201/353] net/Qdisc: use a seqlock instead seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fec8c24ca8eae0c68bbd7edda06be39082985029 +Subject: [PATCH 201/354] net/Qdisc: use a seqlock instead seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d0f4cbf706e9a623aec379a6fec835c29d3feac7 The seqcount disables preemption on -RT while it is held which can't remove. Also we don't want the reader to spin for ages if the writer is @@ -241,10 +241,10 @@ index e2fd8baec65f..8bab88738691 100644 struct gnet_stats_basic_cpu __percpu *cpu, struct gnet_stats_basic_packed *b) diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c -index 41c67cfd264f..61dd555e6c35 100644 +index ab57c0ee9923..90d7c875eaf3 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c -@@ -1195,7 +1195,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, +@@ -1201,7 +1201,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, rcu_assign_pointer(sch->stab, stab); } if (tca[TCA_RATE]) { diff --git a/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch b/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch index ccec0ae2d..215a223b9 100644 --- a/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch +++ b/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch @@ -1,11 +1,11 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 31 Aug 2016 17:21:56 +0200 -Subject: [PATCH 202/353] net: add back the missing serialization in +Subject: [PATCH 202/354] net: add back the missing serialization in ip_send_unicast_reply() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=946961cab5d726a4f7915d9c76be44e043b4369b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bab40aee8dfd99ba465c12713ac1eea34b69d87d Some time ago Sami Pietikäinen reported a crash on -RT in ip_send_unicast_reply() which was later fixed by Nicholas Mc Guire diff --git a/debian/patches-rt/0203-net-add-a-lock-around-icmp_sk.patch b/debian/patches-rt/0203-net-add-a-lock-around-icmp_sk.patch index d55749788..09d3228fd 100644 --- a/debian/patches-rt/0203-net-add-a-lock-around-icmp_sk.patch +++ b/debian/patches-rt/0203-net-add-a-lock-around-icmp_sk.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 31 Aug 2016 17:54:09 +0200 -Subject: [PATCH 203/353] net: add a lock around icmp_sk() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c532906af442e35a3dd02bf538c432102b50cc63 +Subject: [PATCH 203/354] net: add a lock around icmp_sk() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=280a1e2774882bd9b04b8989380d85046f5d3da6 It looks like the this_cpu_ptr() access in icmp_sk() is protected with local_bh_disable(). To avoid missing serialization in -RT I am adding diff --git a/debian/patches-rt/0204-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch b/debian/patches-rt/0204-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch index 43e8e3793..d787da14a 100644 --- a/debian/patches-rt/0204-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch +++ b/debian/patches-rt/0204-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch @@ -1,8 +1,8 @@ From: Steven Rostedt <rostedt@goodmis.org> Date: Tue, 6 Dec 2016 17:50:30 -0500 -Subject: [PATCH 204/353] net: Have __napi_schedule_irqoff() disable interrupts +Subject: [PATCH 204/354] net: Have __napi_schedule_irqoff() disable interrupts on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be0d623b9eb2bb8865429d5196103ee6dea04611 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b01cd8898158a9ed0b54e85ca8642fe3fd17b27 A customer hit a crash where the napi sd->poll_list became corrupted. The customer had the bnx2x driver, which does a @@ -28,10 +28,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 2 files changed, 14 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 63a0574e2ac2..086cd650f555 100644 +index 1644390430a3..821337d81da2 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -425,7 +425,19 @@ typedef enum rx_handler_result rx_handler_result_t; +@@ -432,7 +432,19 @@ typedef enum rx_handler_result rx_handler_result_t; typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); void __napi_schedule(struct napi_struct *n); @@ -52,10 +52,10 @@ index 63a0574e2ac2..086cd650f555 100644 static inline bool napi_disable_pending(struct napi_struct *n) { diff --git a/net/core/dev.c b/net/core/dev.c -index face03c32651..209d15808646 100644 +index 2c563e0f6955..cd270a6c0f46 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5957,6 +5957,7 @@ bool napi_schedule_prep(struct napi_struct *n) +@@ -5959,6 +5959,7 @@ bool napi_schedule_prep(struct napi_struct *n) } EXPORT_SYMBOL(napi_schedule_prep); @@ -63,7 +63,7 @@ index face03c32651..209d15808646 100644 /** * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule -@@ -5975,6 +5976,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) +@@ -5977,6 +5978,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) __napi_schedule(n); } EXPORT_SYMBOL(__napi_schedule_irqoff); diff --git a/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch b/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch index 2a1aafa6b..1d1873aa3 100644 --- a/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch +++ b/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 23 Jun 2015 15:32:51 +0200 -Subject: [PATCH 205/353] irqwork: push most work into softirq context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c11f2c43e5bc12c20b6e8179f771e3b40a60d4d3 +Subject: [PATCH 205/354] irqwork: push most work into softirq context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6b1607475d4cf0886055d4d8275d94053a4eb16 Initially we defered all irqwork into softirq because we didn't want the latency spikes if perf or another user was busy and delayed the RT task. diff --git a/debian/patches-rt/0206-printk-Make-rt-aware.patch b/debian/patches-rt/0206-printk-Make-rt-aware.patch index 6ca2b29cb..4a69340e3 100644 --- a/debian/patches-rt/0206-printk-Make-rt-aware.patch +++ b/debian/patches-rt/0206-printk-Make-rt-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 19 Sep 2012 14:50:37 +0200 -Subject: [PATCH 206/353] printk: Make rt aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ca530b3ca6f68800d3328ff5683b171fdc02c0d +Subject: [PATCH 206/354] printk: Make rt aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=989c0b0f60d5d64106b7f95dfb5d5645c6c72f5b Drop the lock before calling the console driver and do not disable interrupts while printing to a serial console. diff --git a/debian/patches-rt/0207-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch b/debian/patches-rt/0207-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch index 2eafd4c58..1d6c62dc8 100644 --- a/debian/patches-rt/0207-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch +++ b/debian/patches-rt/0207-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 19 May 2016 17:45:27 +0200 -Subject: [PATCH 207/353] kernel/printk: Don't try to print from IRQ/NMI region -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34eed687e22358b9b77ca0faa44c2d356c421b59 +Subject: [PATCH 207/354] kernel/printk: Don't try to print from IRQ/NMI region +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26e8a12252345b8143e68679e2761db4ab19ad5c On -RT we try to acquire sleeping locks which might lead to warnings from lockdep or a warn_on() from spin_try_lock() (which is a rtmutex on diff --git a/debian/patches-rt/0208-printk-Drop-the-logbuf_lock-more-often.patch b/debian/patches-rt/0208-printk-Drop-the-logbuf_lock-more-often.patch index e117a9d89..8dce77125 100644 --- a/debian/patches-rt/0208-printk-Drop-the-logbuf_lock-more-often.patch +++ b/debian/patches-rt/0208-printk-Drop-the-logbuf_lock-more-often.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 21 Mar 2013 19:01:05 +0100 -Subject: [PATCH 208/353] printk: Drop the logbuf_lock more often -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5d3731456da72b3ea25aed4f5e169050d4be6ff +Subject: [PATCH 208/354] printk: Drop the logbuf_lock more often +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8fe31fb97da77ab275535360d70b086303fd425d The lock is hold with irgs off. The latency drops 500us+ on my arm bugs with a "full" buffer after executing "dmesg" on the shell. diff --git a/debian/patches-rt/0209-ARM-enable-irq-in-translation-section-permission-fau.patch b/debian/patches-rt/0209-ARM-enable-irq-in-translation-section-permission-fau.patch index 616080edd..1a59ff8f6 100644 --- a/debian/patches-rt/0209-ARM-enable-irq-in-translation-section-permission-fau.patch +++ b/debian/patches-rt/0209-ARM-enable-irq-in-translation-section-permission-fau.patch @@ -1,11 +1,11 @@ From: "Yadi.hu" <yadi.hu@windriver.com> Date: Wed, 10 Dec 2014 10:32:09 +0800 -Subject: [PATCH 209/353] ARM: enable irq in translation/section permission +Subject: [PATCH 209/354] ARM: enable irq in translation/section permission fault handlers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=934c8796b262e3cdce988bb5780874a78e8d023e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea727030ccc8a82d7445e2bdced527796f9966f9 Probably happens on all ARM, with CONFIG_PREEMPT_RT_FULL diff --git a/debian/patches-rt/0210-genirq-update-irq_set_irqchip_state-documentation.patch b/debian/patches-rt/0210-genirq-update-irq_set_irqchip_state-documentation.patch index fa0d2dee0..6cc82a89f 100644 --- a/debian/patches-rt/0210-genirq-update-irq_set_irqchip_state-documentation.patch +++ b/debian/patches-rt/0210-genirq-update-irq_set_irqchip_state-documentation.patch @@ -1,7 +1,7 @@ From: Josh Cartwright <joshc@ni.com> Date: Thu, 11 Feb 2016 11:54:00 -0600 -Subject: [PATCH 210/353] genirq: update irq_set_irqchip_state documentation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02c452a7c85dde40bbf980013c32089cd9009a7b +Subject: [PATCH 210/354] genirq: update irq_set_irqchip_state documentation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9d2bf702086e94b24cbd77e8d8319a789331cdd On -rt kernels, the use of migrate_disable()/migrate_enable() is sufficient to guarantee a task isn't moved to another CPU. Update the diff --git a/debian/patches-rt/0211-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch b/debian/patches-rt/0211-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch index 5dd50c842..9de8e02b7 100644 --- a/debian/patches-rt/0211-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch +++ b/debian/patches-rt/0211-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch @@ -1,8 +1,8 @@ From: Josh Cartwright <joshc@ni.com> Date: Thu, 11 Feb 2016 11:54:01 -0600 -Subject: [PATCH 211/353] KVM: arm/arm64: downgrade preempt_disable()d region +Subject: [PATCH 211/354] KVM: arm/arm64: downgrade preempt_disable()d region to migrate_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dcfba66a472f5d394a35d873563feccbf1ebde61 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4de46cf26e5e5ad6ea2ccc1673516999ecf58c42 kvm_arch_vcpu_ioctl_run() disables the use of preemption when updating the vgic and timer states to prevent the calling task from migrating to diff --git a/debian/patches-rt/0212-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch b/debian/patches-rt/0212-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch index cb7c0e1ff..3b4f2fb38 100644 --- a/debian/patches-rt/0212-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch +++ b/debian/patches-rt/0212-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 25 Jul 2018 14:02:38 +0200 -Subject: [PATCH 212/353] arm64: fpsimd: use preemp_disable in addition to +Subject: [PATCH 212/354] arm64: fpsimd: use preemp_disable in addition to local_bh_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=beea622c8b43d003ebb7013eaaeb2c68e8a514e3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4af86cd79bc5096f07fc7bb8fcb3aef2c1538510 In v4.16-RT I noticed a number of warnings from task_fpsimd_load(). The code disables BH and expects that it is not preemptible. On -RT the diff --git a/debian/patches-rt/0213-kgdb-serial-Short-term-workaround.patch b/debian/patches-rt/0213-kgdb-serial-Short-term-workaround.patch index 034c1b771..9980f7aa1 100644 --- a/debian/patches-rt/0213-kgdb-serial-Short-term-workaround.patch +++ b/debian/patches-rt/0213-kgdb-serial-Short-term-workaround.patch @@ -1,7 +1,7 @@ From: Jason Wessel <jason.wessel@windriver.com> Date: Thu, 28 Jul 2011 12:42:23 -0500 -Subject: [PATCH 213/353] kgdb/serial: Short term workaround -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1f05b193f51153e127f1d580cf9e2cac17c6a9e7 +Subject: [PATCH 213/354] kgdb/serial: Short term workaround +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1e51a694f26dd31ba81cff7eb578c548a15c1ae On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due @@ -24,7 +24,7 @@ Jason. 3 files changed, 7 insertions(+) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index af7df5ca17a5..214818b7242d 100644 +index 766bdb1717d5..7ab066606b25 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -32,6 +32,7 @@ @@ -35,7 +35,7 @@ index af7df5ca17a5..214818b7242d 100644 #include <linux/uaccess.h> #include <linux/pm_runtime.h> #include <linux/ktime.h> -@@ -3318,6 +3319,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3317,6 +3318,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, if (port->sysrq || oops_in_progress) locked = 0; diff --git a/debian/patches-rt/0214-sysfs-Add-sys-kernel-realtime-entry.patch b/debian/patches-rt/0214-sysfs-Add-sys-kernel-realtime-entry.patch index 9cb414805..a2e61ef45 100644 --- a/debian/patches-rt/0214-sysfs-Add-sys-kernel-realtime-entry.patch +++ b/debian/patches-rt/0214-sysfs-Add-sys-kernel-realtime-entry.patch @@ -1,7 +1,7 @@ From: Clark Williams <williams@redhat.com> Date: Sat, 30 Jul 2011 21:55:53 -0500 -Subject: [PATCH 214/353] sysfs: Add /sys/kernel/realtime entry -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=63cdf57144587bc178a94170e17c65477542af67 +Subject: [PATCH 214/354] sysfs: Add /sys/kernel/realtime entry +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c2360b6e369d7b39fd52d9d2fa1e9aa9df9f829d Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. diff --git a/debian/patches-rt/0215-mm-rt-kmap_atomic-scheduling.patch b/debian/patches-rt/0215-mm-rt-kmap_atomic-scheduling.patch index 1a444d7b5..c750c92b7 100644 --- a/debian/patches-rt/0215-mm-rt-kmap_atomic-scheduling.patch +++ b/debian/patches-rt/0215-mm-rt-kmap_atomic-scheduling.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Thu, 28 Jul 2011 10:43:51 +0200 -Subject: [PATCH 215/353] mm, rt: kmap_atomic scheduling -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3be727a86e41a0f4aba7f5030c288587ce649e6 +Subject: [PATCH 215/354] mm, rt: kmap_atomic scheduling +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e13b8e11be58c0c5c8fc50de9e96805c321f88db In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context diff --git a/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch b/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch index e60ea7966..06aae49a1 100644 --- a/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch +++ b/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 11 Mar 2013 17:09:55 +0100 -Subject: [PATCH 216/353] x86/highmem: Add a "already used pte" check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5900bcb024e34c92c262f0614b159d5d17abcc49 +Subject: [PATCH 216/354] x86/highmem: Add a "already used pte" check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e457740efed6fff0678501ec114d5b31f5a4e9e4 This is a copy from kmap_atomic_prot(). diff --git a/debian/patches-rt/0217-arm-highmem-Flush-tlb-on-unmap.patch b/debian/patches-rt/0217-arm-highmem-Flush-tlb-on-unmap.patch index ca88b9752..2272860bf 100644 --- a/debian/patches-rt/0217-arm-highmem-Flush-tlb-on-unmap.patch +++ b/debian/patches-rt/0217-arm-highmem-Flush-tlb-on-unmap.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 11 Mar 2013 21:37:27 +0100 -Subject: [PATCH 217/353] arm/highmem: Flush tlb on unmap -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa0deea1ec74cc60877cfc0ba29d1912148efec1 +Subject: [PATCH 217/354] arm/highmem: Flush tlb on unmap +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa8f2bb04b200fb53602b533e095d0aa0cf5fe01 The tlb should be flushed on unmap and thus make the mapping entry invalid. This is only done in the non-debug case which does not look diff --git a/debian/patches-rt/0218-arm-Enable-highmem-for-rt.patch b/debian/patches-rt/0218-arm-Enable-highmem-for-rt.patch index 67763f9da..0af86d7c8 100644 --- a/debian/patches-rt/0218-arm-Enable-highmem-for-rt.patch +++ b/debian/patches-rt/0218-arm-Enable-highmem-for-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 13 Feb 2013 11:03:11 +0100 -Subject: [PATCH 218/353] arm: Enable highmem for rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=97b385d587e0dd9f8d6413c6d2d0165685d55640 +Subject: [PATCH 218/354] arm: Enable highmem for rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2bd0467b8b04336d68eef05d01697c63805df8c4 fixup highmem for ARM. diff --git a/debian/patches-rt/0219-scsi-fcoe-Make-RT-aware.patch b/debian/patches-rt/0219-scsi-fcoe-Make-RT-aware.patch index dcc450382..d16735bdc 100644 --- a/debian/patches-rt/0219-scsi-fcoe-Make-RT-aware.patch +++ b/debian/patches-rt/0219-scsi-fcoe-Make-RT-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sat, 12 Nov 2011 14:00:48 +0100 -Subject: [PATCH 219/353] scsi/fcoe: Make RT aware. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7bb0107ed0c1ebc7b826f9a256cf992e73bda72 +Subject: [PATCH 219/354] scsi/fcoe: Make RT aware. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1cb9f2990ed6cea247ab6b0c7bfafdf32dacc07 Do not disable preemption while taking sleeping locks. All user look safe for migrate_diable() only. @@ -72,10 +72,10 @@ index c5c4805435f6..4316a451c67d 100644 } diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c -index 1e087a206f48..27624aac530f 100644 +index c49986eba47b..df686ef0fd82 100644 --- a/drivers/scsi/fcoe/fcoe_ctlr.c +++ b/drivers/scsi/fcoe/fcoe_ctlr.c -@@ -838,7 +838,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) +@@ -840,7 +840,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) INIT_LIST_HEAD(&del_list); @@ -84,7 +84,7 @@ index 1e087a206f48..27624aac530f 100644 list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2; -@@ -874,7 +874,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) +@@ -876,7 +876,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) sel_time = fcf->time; } } diff --git a/debian/patches-rt/0220-x86-crypto-Reduce-preempt-disabled-regions.patch b/debian/patches-rt/0220-x86-crypto-Reduce-preempt-disabled-regions.patch index d87440f95..c1fa98096 100644 --- a/debian/patches-rt/0220-x86-crypto-Reduce-preempt-disabled-regions.patch +++ b/debian/patches-rt/0220-x86-crypto-Reduce-preempt-disabled-regions.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Mon, 14 Nov 2011 18:19:27 +0100 -Subject: [PATCH 220/353] x86: crypto: Reduce preempt disabled regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b7f408d9b616faf238404b1480331aac3022e672 +Subject: [PATCH 220/354] x86: crypto: Reduce preempt disabled regions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=679110a6cd89bfb72ca601bad4cc399bcfa72fcc Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. diff --git a/debian/patches-rt/0221-crypto-Reduce-preempt-disabled-regions-more-algos.patch b/debian/patches-rt/0221-crypto-Reduce-preempt-disabled-regions-more-algos.patch index 99fa53916..58b13efa5 100644 --- a/debian/patches-rt/0221-crypto-Reduce-preempt-disabled-regions-more-algos.patch +++ b/debian/patches-rt/0221-crypto-Reduce-preempt-disabled-regions-more-algos.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Feb 2014 17:24:04 +0100 -Subject: [PATCH 221/353] crypto: Reduce preempt disabled regions, more algos -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=187af5ffa27f473e5ed6ac444fa6aed6487537ce +Subject: [PATCH 221/354] crypto: Reduce preempt disabled regions, more algos +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0dc4bb0d8f3f27f483b63cc5b0f236d42c1477fd Don Estabrook reported | kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100() diff --git a/debian/patches-rt/0222-crypto-limit-more-FPU-enabled-sections.patch b/debian/patches-rt/0222-crypto-limit-more-FPU-enabled-sections.patch index 368f34074..cf66afc04 100644 --- a/debian/patches-rt/0222-crypto-limit-more-FPU-enabled-sections.patch +++ b/debian/patches-rt/0222-crypto-limit-more-FPU-enabled-sections.patch @@ -1,10 +1,10 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 30 Nov 2017 13:40:10 +0100 -Subject: [PATCH 222/353] crypto: limit more FPU-enabled sections +Subject: [PATCH 222/354] crypto: limit more FPU-enabled sections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a64bee262410671ecf46e1d41ed29e91fe1ecaf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=39d1465173baadad8ba1467b1f4b4ba1d6437939 Those crypto drivers use SSE/AVX/… for their crypto work and in order to do so in kernel they need to enable the "FPU" in kernel mode which diff --git a/debian/patches-rt/0223-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch b/debian/patches-rt/0223-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch index 4bd49b8ae..4ba4a8f6e 100644 --- a/debian/patches-rt/0223-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch +++ b/debian/patches-rt/0223-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <efault@gmx.de> Date: Wed, 11 Jul 2018 17:14:47 +0200 -Subject: [PATCH 223/353] crypto: scompress - serialize RT percpu scratch +Subject: [PATCH 223/354] crypto: scompress - serialize RT percpu scratch buffer access with a local lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cdf7ff5e219e39c4dc6a7183c2803106be5dcb02 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb2a08d41c3456049f5bc307ab6b57cbe87fb27a | BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974 | in_atomic(): 1, irqs_disabled(): 0, pid: 1401, name: cryptomgr_test diff --git a/debian/patches-rt/0224-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch b/debian/patches-rt/0224-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch index ec84a2721..d0b929648 100644 --- a/debian/patches-rt/0224-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch +++ b/debian/patches-rt/0224-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 26 Jul 2018 18:52:00 +0200 -Subject: [PATCH 224/353] crypto: cryptd - add a lock instead +Subject: [PATCH 224/354] crypto: cryptd - add a lock instead preempt_disable/local_bh_disable -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c396da73e8a6a42ae9a68df15cbf94588c9798c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8e632c5cf2eb468ed6c74cd1e7992e3d51dfea47 cryptd has a per-CPU lock which protected with local_bh_disable() and preempt_disable(). diff --git a/debian/patches-rt/0225-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch b/debian/patches-rt/0225-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch index f0a2c5993..3b54d1f5f 100644 --- a/debian/patches-rt/0225-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch +++ b/debian/patches-rt/0225-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 225/353] panic: skip get_random_bytes for RT_FULL in +Subject: [PATCH 225/354] panic: skip get_random_bytes for RT_FULL in init_oops_id -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c487331a7bef1368299aed221809e4a8a0f051f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7dd5b80bbfca25a4215c5570ac68f7842ff3fc69 Disable on -RT. If this is invoked from irq-context we will have problems to acquire the sleeping lock. diff --git a/debian/patches-rt/0226-x86-stackprotector-Avoid-random-pool-on-rt.patch b/debian/patches-rt/0226-x86-stackprotector-Avoid-random-pool-on-rt.patch index 5c98a7326..277a46f37 100644 --- a/debian/patches-rt/0226-x86-stackprotector-Avoid-random-pool-on-rt.patch +++ b/debian/patches-rt/0226-x86-stackprotector-Avoid-random-pool-on-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 16 Dec 2010 14:25:18 +0100 -Subject: [PATCH 226/353] x86: stackprotector: Avoid random pool on rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1e5f4efc051fbe311c2d390c24fbf766637629c8 +Subject: [PATCH 226/354] x86: stackprotector: Avoid random pool on rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a65bc36ee80ef38869b199444d4ad958caefa1de CPU bringup calls into the random pool to initialize the stack canary. During boot that works nicely even on RT as the might sleep diff --git a/debian/patches-rt/0227-cpu-hotplug-Implement-CPU-pinning.patch b/debian/patches-rt/0227-cpu-hotplug-Implement-CPU-pinning.patch index 9f9d237db..438483853 100644 --- a/debian/patches-rt/0227-cpu-hotplug-Implement-CPU-pinning.patch +++ b/debian/patches-rt/0227-cpu-hotplug-Implement-CPU-pinning.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 19 Jul 2017 17:31:20 +0200 -Subject: [PATCH 227/353] cpu/hotplug: Implement CPU pinning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=44cbff5086ce5b39e85daacd494f6d5324fad422 +Subject: [PATCH 227/354] cpu/hotplug: Implement CPU pinning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3332bcb6539fd31588bc3c1c691a8e78b2a0083c Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- @@ -22,7 +22,7 @@ index b32eb75dd73b..19eb4838cf03 100644 int migrate_disable_atomic; # endif diff --git a/kernel/cpu.c b/kernel/cpu.c -index f4c49bbc3fa3..56cb58fce84c 100644 +index b25993345ea6..97d5f24fa435 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -78,6 +78,11 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = { diff --git a/debian/patches-rt/0228-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch b/debian/patches-rt/0228-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch index cf68e45b5..998306982 100644 --- a/debian/patches-rt/0228-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch +++ b/debian/patches-rt/0228-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <efault@gmx.de> Date: Sun, 19 Aug 2018 08:28:35 +0200 -Subject: [PATCH 228/353] sched: Allow pinned user tasks to be awakened to the +Subject: [PATCH 228/354] sched: Allow pinned user tasks to be awakened to the CPU they pinned -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56987c491a72d184677be3667a26f9227563bba6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38cd7a53efab921d02e62d5abc9bbb30286b5e2b Since commit 7af443ee16976 ("sched/core: Require cpu_active() in select_task_rq(), for user tasks") select_fallback_rq() will BUG() if diff --git a/debian/patches-rt/0229-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch b/debian/patches-rt/0229-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch index 93a807011..cacc7825f 100644 --- a/debian/patches-rt/0229-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch +++ b/debian/patches-rt/0229-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 4 Aug 2017 18:31:00 +0200 -Subject: [PATCH 229/353] hotplug: duct-tape RT-rwlock usage for non-RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7ae887b25fab969ed4ef6e13d9fe4180f7bcf1ca +Subject: [PATCH 229/354] hotplug: duct-tape RT-rwlock usage for non-RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=821ee7012851443150f058ee24efe13f6bb4e00d This type is only available on -RT. We need to craft something for non-RT. Since the only migrate_disable() user is -RT only, there is no @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/kernel/cpu.c b/kernel/cpu.c -index 56cb58fce84c..6ae5b18bf3a5 100644 +index 97d5f24fa435..605276e96143 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -78,7 +78,7 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = { diff --git a/debian/patches-rt/0230-net-Remove-preemption-disabling-in-netif_rx.patch b/debian/patches-rt/0230-net-Remove-preemption-disabling-in-netif_rx.patch index b0b267424..7a336d16a 100644 --- a/debian/patches-rt/0230-net-Remove-preemption-disabling-in-netif_rx.patch +++ b/debian/patches-rt/0230-net-Remove-preemption-disabling-in-netif_rx.patch @@ -1,7 +1,7 @@ From: Priyanka Jain <Priyanka.Jain@freescale.com> Date: Thu, 17 May 2012 09:35:11 +0530 -Subject: [PATCH 230/353] net: Remove preemption disabling in netif_rx() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e78188710318015f790503e2e67d09b0ee2edfcf +Subject: [PATCH 230/354] net: Remove preemption disabling in netif_rx() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=66277e014d40db0577c37eaf1c7f27aa8e9e96fd 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -35,10 +35,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 209d15808646..1fb0a5340e94 100644 +index cd270a6c0f46..579fd24318ba 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4498,7 +4498,7 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4500,7 +4500,7 @@ static int netif_rx_internal(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -47,7 +47,7 @@ index 209d15808646..1fb0a5340e94 100644 rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -4508,14 +4508,14 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4510,14 +4510,14 @@ static int netif_rx_internal(struct sk_buff *skb) ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); diff --git a/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch b/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch index 7b7ae5f83..59b58393b 100644 --- a/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch +++ b/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 26 Sep 2012 16:21:08 +0200 -Subject: [PATCH 231/353] net: Another local_irq_disable/kmalloc headache -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3867697d62230796c70714c4e8d81e71625d80ae +Subject: [PATCH 231/354] net: Another local_irq_disable/kmalloc headache +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fc469f3cfe9e53f50d01ca47215ef170b0c9d282 Replace it by a local lock. Though that's pretty inefficient :( @@ -11,7 +11,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index b7314a6cf8c2..c7d1f0c81c97 100644 +index e03cd719b86b..3a0f92e2e7de 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -63,6 +63,7 @@ diff --git a/debian/patches-rt/0232-net-core-protect-users-of-napi_alloc_cache-against-r.patch b/debian/patches-rt/0232-net-core-protect-users-of-napi_alloc_cache-against-r.patch index 91d964093..828a9c16e 100644 --- a/debian/patches-rt/0232-net-core-protect-users-of-napi_alloc_cache-against-r.patch +++ b/debian/patches-rt/0232-net-core-protect-users-of-napi_alloc_cache-against-r.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 15 Jan 2016 16:33:34 +0100 -Subject: [PATCH 232/353] net/core: protect users of napi_alloc_cache against +Subject: [PATCH 232/354] net/core: protect users of napi_alloc_cache against reentrance -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dc5ea742864b9a2748639c80614d47e6e6484b34 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=98dd65dc1537ab5f1b3e12381502c5febf673c5c On -RT the code running in BH can not be moved to another CPU so CPU local variable remain local. However the code can be preempted @@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index c7d1f0c81c97..d3706fa458a5 100644 +index 3a0f92e2e7de..28161e1c33cc 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -332,6 +332,7 @@ struct napi_alloc_cache { diff --git a/debian/patches-rt/0233-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch b/debian/patches-rt/0233-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch index 90b2c493f..1204c032d 100644 --- a/debian/patches-rt/0233-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch +++ b/debian/patches-rt/0233-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Sun, 28 Oct 2012 11:18:08 +0100 -Subject: [PATCH 233/353] net: netfilter: Serialize xt_write_recseq sections on +Subject: [PATCH 233/354] net: netfilter: Serialize xt_write_recseq sections on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e76817dc5bdd2d6f035635f97eaf654f7a2a7a8c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=251bf58c5997c5f2cf7c27f941f89a74d8620722 The netfilter code relies only on the implicit semantics of local_bh_disable() for serializing wt_write_recseq sections. RT breaks @@ -55,7 +55,7 @@ index 0ade4d1e4dd9..3e21ce64ce54 100644 /* diff --git a/net/netfilter/core.c b/net/netfilter/core.c -index 722d1b057f61..5b8ebd8abcb0 100644 +index 0c6540780cb4..937363a528da 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c @@ -20,6 +20,7 @@ diff --git a/debian/patches-rt/0234-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch b/debian/patches-rt/0234-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch index 57ad16162..4ee5efeca 100644 --- a/debian/patches-rt/0234-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch +++ b/debian/patches-rt/0234-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch @@ -1,8 +1,8 @@ From: Yong Zhang <yong.zhang@windriver.com> Date: Mon, 16 Apr 2012 15:01:56 +0800 -Subject: [PATCH 234/353] lockdep: selftest: Only do hardirq context test for +Subject: [PATCH 234/354] lockdep: selftest: Only do hardirq context test for raw spinlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d2e4c16601ca6e9890cac6bf92cc92dbe5fa6175 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=606b7870906064a803bbe45f27b139e89c4e9e80 On -rt there is no softirq context any more and rwlock is sleepable, disable softirq context test and rwlock+irq test. diff --git a/debian/patches-rt/0235-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch b/debian/patches-rt/0235-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch index c4e80691c..406dc808f 100644 --- a/debian/patches-rt/0235-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch +++ b/debian/patches-rt/0235-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch @@ -1,8 +1,8 @@ From: Josh Cartwright <josh.cartwright@ni.com> Date: Wed, 28 Jan 2015 13:08:45 -0600 -Subject: [PATCH 235/353] lockdep: selftest: fix warnings due to missing +Subject: [PATCH 235/354] lockdep: selftest: fix warnings due to missing PREEMPT_RT conditionals -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2452260ecc7926026432821df728b508592d226b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=999d90ceb93214b5290f3422d123dfc6dff86c60 "lockdep: Selftest: Only do hardirq context test for raw spinlock" disabled the execution of certain tests with PREEMPT_RT_FULL, but did diff --git a/debian/patches-rt/0236-sched-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0236-sched-Add-support-for-lazy-preemption.patch index 200adb4ca..bb989798a 100644 --- a/debian/patches-rt/0236-sched-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0236-sched-Add-support-for-lazy-preemption.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 26 Oct 2012 18:50:54 +0100 -Subject: [PATCH 236/353] sched: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=091e3b619256c38a1ca8760bea7e44d40b465fef +Subject: [PATCH 236/354] sched: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec120f921bf1ff7f3d689a805e139127117b89a1 It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -69,7 +69,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 13 files changed, 228 insertions(+), 29 deletions(-) diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index ed8413e7140f..9c74a019bf57 100644 +index 302f491b05ec..29ecd13afdda 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -180,6 +180,20 @@ extern void preempt_count_sub(int val); @@ -215,7 +215,7 @@ index 62dbecfe9132..57a3d99dc067 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 1cc4d2da954c..72864a11cec0 100644 +index 963c19f03bef..61011ac41b41 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -64,6 +64,7 @@ struct trace_entry { @@ -244,7 +244,7 @@ index 907d72b3ba95..306567f72a3e 100644 prompt "Preemption Model" default PREEMPT_NONE diff --git a/kernel/cpu.c b/kernel/cpu.c -index 6ae5b18bf3a5..396394ebbc5b 100644 +index 605276e96143..9547c5bcbbc4 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -307,11 +307,13 @@ void pin_current_cpu(void) @@ -419,7 +419,7 @@ index 41219ea235eb..e581ce1edc12 100644 } EXPORT_SYMBOL(migrate_enable); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index bd9a375c45f4..430248f46f72 100644 +index 3f6a613be8c3..b735b6088124 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4151,7 +4151,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) @@ -529,7 +529,7 @@ index 637c408fb2dc..87a05bb90124 100644 extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index b1c82b1dc3a6..d137601eed0e 100644 +index 61fdbe0ddeb1..3484c741261d 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2153,6 +2153,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, @@ -550,7 +550,7 @@ index b1c82b1dc3a6..d137601eed0e 100644 (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0); entry->migrate_disable = (tsk) ? __migrate_disabled(tsk) & 0xFF : 0; -@@ -3364,15 +3366,17 @@ get_total_entries(struct trace_buffer *buf, +@@ -3370,15 +3372,17 @@ get_total_entries(struct trace_buffer *buf, static void print_lat_help_header(struct seq_file *m) { @@ -577,7 +577,7 @@ index b1c82b1dc3a6..d137601eed0e 100644 } static void print_event_info(struct trace_buffer *buf, struct seq_file *m) -@@ -3410,15 +3414,17 @@ static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file +@@ -3416,15 +3420,17 @@ static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file tgid ? tgid_space : space); seq_printf(m, "# %s / _----=> need-resched\n", tgid ? tgid_space : space); @@ -601,7 +601,7 @@ index b1c82b1dc3a6..d137601eed0e 100644 } diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index 0923d1b18d1f..80a2d3f56c35 100644 +index f4d83b552a47..00fbf2cb505c 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -127,6 +127,7 @@ struct kretprobe_trace_entry_head { diff --git a/debian/patches-rt/0237-ftrace-Fix-trace-header-alignment.patch b/debian/patches-rt/0237-ftrace-Fix-trace-header-alignment.patch index 571294311..59891df57 100644 --- a/debian/patches-rt/0237-ftrace-Fix-trace-header-alignment.patch +++ b/debian/patches-rt/0237-ftrace-Fix-trace-header-alignment.patch @@ -1,7 +1,7 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Sun, 16 Oct 2016 05:08:30 +0200 -Subject: [PATCH 237/353] ftrace: Fix trace header alignment -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac1c2ec880d53a9353f6c53c68ce7879566a7766 +Subject: [PATCH 237/354] ftrace: Fix trace header alignment +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b7565d7df1f29be3963b8d037516a0f6435a3a5d Line up helper arrows to the right column. @@ -14,10 +14,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index d137601eed0e..32a2a0e2c6ae 100644 +index 3484c741261d..3700c9f0bebb 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -3366,17 +3366,17 @@ get_total_entries(struct trace_buffer *buf, +@@ -3372,17 +3372,17 @@ get_total_entries(struct trace_buffer *buf, static void print_lat_help_header(struct seq_file *m) { diff --git a/debian/patches-rt/0238-x86-Support-for-lazy-preemption.patch b/debian/patches-rt/0238-x86-Support-for-lazy-preemption.patch index 53242df97..e1ce9cdfc 100644 --- a/debian/patches-rt/0238-x86-Support-for-lazy-preemption.patch +++ b/debian/patches-rt/0238-x86-Support-for-lazy-preemption.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 1 Nov 2012 11:03:47 +0100 -Subject: [PATCH 238/353] x86: Support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=abc7166676f6a451a3f3db148ae0fbc4ffeefa38 +Subject: [PATCH 238/354] x86: Support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1abdacb2004c070b2ed0a0ae92bc6badf6b21e45 Implement the x86 pieces for lazy preempt. @@ -17,10 +17,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 7 files changed, 79 insertions(+), 3 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 6ee7220e7f47..7299aeaa7cbb 100644 +index d2702e568153..72e7521a577b 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -180,6 +180,7 @@ config X86 +@@ -181,6 +181,7 @@ config X86 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP diff --git a/debian/patches-rt/0239-x86-lazy-preempt-properly-check-against-preempt-mask.patch b/debian/patches-rt/0239-x86-lazy-preempt-properly-check-against-preempt-mask.patch index 393d663f7..e1e918fad 100644 --- a/debian/patches-rt/0239-x86-lazy-preempt-properly-check-against-preempt-mask.patch +++ b/debian/patches-rt/0239-x86-lazy-preempt-properly-check-against-preempt-mask.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 18 Feb 2019 16:57:09 +0100 -Subject: [PATCH 239/353] x86: lazy-preempt: properly check against +Subject: [PATCH 239/354] x86: lazy-preempt: properly check against preempt-mask -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4995c1328ec0d736291b9781a7d4588dd71cd1c2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a9e9841f86f934018cafab8e7dd5304dd36031c should_resched() should check against preempt_offset after unmasking the need-resched-bit. Otherwise should_resched() won't work for diff --git a/debian/patches-rt/0240-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch b/debian/patches-rt/0240-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch index 8c7a64443..1011b294f 100644 --- a/debian/patches-rt/0240-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch +++ b/debian/patches-rt/0240-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 26 Feb 2019 14:53:49 +0100 -Subject: [PATCH 240/353] x86: lazy-preempt: use proper return label on +Subject: [PATCH 240/354] x86: lazy-preempt: use proper return label on 32bit-x86 -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1c5ed7041c4abdb434de892ee97ec129a0401779 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6bd3f321c942e96626ea294ef9c73f0e35f9cab The lazy-preempt uses the wrong return label in case preemption isn't possible. This results crash while returning to the kernel. diff --git a/debian/patches-rt/0241-arm-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0241-arm-Add-support-for-lazy-preemption.patch index 63098df1a..fa4a28c81 100644 --- a/debian/patches-rt/0241-arm-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0241-arm-Add-support-for-lazy-preemption.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 31 Oct 2012 12:04:11 +0100 -Subject: [PATCH 241/353] arm: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b8a6ce72961961bf578e8b1c1f6aafff622a9ee5 +Subject: [PATCH 241/354] arm: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f212b3b028a34674be56ccaf16296edafb0d21fc Implement the arm pieces for lazy preempt. @@ -16,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 6 files changed, 33 insertions(+), 8 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index d411fbbf13f0..11757b141c4a 100644 +index d105a362d1ac..6a467a56b628 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -91,6 +91,7 @@ config ARM +@@ -92,6 +92,7 @@ config ARM select HAVE_PERF_EVENTS select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP diff --git a/debian/patches-rt/0242-powerpc-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0242-powerpc-Add-support-for-lazy-preemption.patch index b6e0a456b..99db59aab 100644 --- a/debian/patches-rt/0242-powerpc-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0242-powerpc-Add-support-for-lazy-preemption.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Thu, 1 Nov 2012 10:14:11 +0100 -Subject: [PATCH 242/353] powerpc: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=11f2dca2c4c3c03a672652346d9b11e8543018e4 +Subject: [PATCH 242/354] powerpc: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0261a63d9f224979b3642ab6913ebbde09a23a0 Implement the powerpc pieces for lazy preempt. @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index f4517f4be192..4536d047cdff 100644 +index cd338d971df2..3d9a02fb5879 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -217,6 +217,7 @@ config PPC +@@ -218,6 +218,7 @@ config PPC select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -76,10 +76,10 @@ index 3c0002044bc9..ce316076bc52 100644 /* Bits in local_flags */ /* Don't move TLF_NAPPING without adjusting the code in entry_32.S */ diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c -index 50400f213bbf..1bb82c5dc1d9 100644 +index c2288c73d56d..082d01ba2ecb 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c -@@ -156,6 +156,7 @@ int main(void) +@@ -159,6 +159,7 @@ int main(void) OFFSET(TI_FLAGS, thread_info, flags); OFFSET(TI_LOCAL_FLAGS, thread_info, local_flags); OFFSET(TI_PREEMPT, thread_info, preempt_count); diff --git a/debian/patches-rt/0243-arch-arm64-Add-lazy-preempt-support.patch b/debian/patches-rt/0243-arch-arm64-Add-lazy-preempt-support.patch index 2c185cf43..0aaaa519d 100644 --- a/debian/patches-rt/0243-arch-arm64-Add-lazy-preempt-support.patch +++ b/debian/patches-rt/0243-arch-arm64-Add-lazy-preempt-support.patch @@ -1,7 +1,7 @@ From: Anders Roxell <anders.roxell@linaro.org> Date: Thu, 14 May 2015 17:52:17 +0200 -Subject: [PATCH 243/353] arch/arm64: Add lazy preempt support -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=309988716af0204cb8c7af13c25074fbef91dd00 +Subject: [PATCH 243/354] arch/arm64: Add lazy preempt support +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b94781e1c5cbccd2bfdf1e70d7aa3e71680a9737 arm64 is missing support for PREEMPT_RT. The main feature which is lacking is support for lazy preemption. The arch-specific entry code, diff --git a/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch b/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch index cc7cca86e..c100e73a7 100644 --- a/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch +++ b/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Sun, 16 Oct 2016 05:11:54 +0200 -Subject: [PATCH 244/353] connector/cn_proc: Protect send_msg() with a local +Subject: [PATCH 244/354] connector/cn_proc: Protect send_msg() with a local lock on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0cc39551b5bc2d4a4bd55315967a7cfba0dbf1de +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2b4d085a00e21140a39d5bb85bd860bfea856bc4 |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931 |in_atomic(): 1, irqs_disabled(): 0, pid: 31807, name: sleep diff --git a/debian/patches-rt/0245-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch b/debian/patches-rt/0245-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch index bbbf51237..34a4c4b01 100644 --- a/debian/patches-rt/0245-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch +++ b/debian/patches-rt/0245-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Thu, 31 Mar 2016 04:08:28 +0200 -Subject: [PATCH 245/353] drivers/block/zram: Replace bit spinlocks with +Subject: [PATCH 245/354] drivers/block/zram: Replace bit spinlocks with rtmutex for -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=16a2a63efa558226cdeb70a9789d896d6d5aef14 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b2237f0f7980ad75b97686fa2897f62eda03e6a They're nondeterministic, and lead to ___might_sleep() splats in -rt. OTOH, they're a lot less wasteful than an rtmutex per page. diff --git a/debian/patches-rt/0246-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch b/debian/patches-rt/0246-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch index e672a47b7..1574cb6b1 100644 --- a/debian/patches-rt/0246-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch +++ b/debian/patches-rt/0246-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Thu, 20 Oct 2016 11:15:22 +0200 -Subject: [PATCH 246/353] drivers/zram: Don't disable preemption in +Subject: [PATCH 246/354] drivers/zram: Don't disable preemption in zcomp_stream_get/put() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eed0f6e6ca04788c5325b248305c08647e399e3d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=39be29a3de4e6a826198aaae82190db9446bb2cc In v4.7, the driver switched to percpu compression streams, disabling preemption via get/put_cpu_ptr(). Use a per-zcomp_strm lock here. We diff --git a/debian/patches-rt/0247-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch b/debian/patches-rt/0247-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch index 1709307da..72aecf48c 100644 --- a/debian/patches-rt/0247-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch +++ b/debian/patches-rt/0247-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <efault@gmx.de> Date: Wed, 23 Aug 2017 11:57:29 +0200 -Subject: [PATCH 247/353] drivers/zram: fix zcomp_stream_get() +Subject: [PATCH 247/354] drivers/zram: fix zcomp_stream_get() smp_processor_id() use in preemptible code -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f40751d885752803c938fea8dc199c9280337925 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b3a858719098c213c588ce4df8ae8dfbbc4c2a7 Use get_local_ptr() instead this_cpu_ptr() to avoid a warning regarding smp_processor_id() in preemptible code. diff --git a/debian/patches-rt/0248-tpm_tis-fix-stall-after-iowrite-s.patch b/debian/patches-rt/0248-tpm_tis-fix-stall-after-iowrite-s.patch index 1ba216990..6a1fcf399 100644 --- a/debian/patches-rt/0248-tpm_tis-fix-stall-after-iowrite-s.patch +++ b/debian/patches-rt/0248-tpm_tis-fix-stall-after-iowrite-s.patch @@ -1,7 +1,7 @@ From: Haris Okanovic <haris.okanovic@ni.com> Date: Tue, 15 Aug 2017 15:13:08 -0500 -Subject: [PATCH 248/353] tpm_tis: fix stall after iowrite*()s -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7ca6b216bbcdb3daf45864e995aecf3d94de9a2 +Subject: [PATCH 248/354] tpm_tis: fix stall after iowrite*()s +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2b5c1d30e161cbb01f23d497de714131740ac292 ioread8() operations to TPM MMIO addresses can stall the cpu when immediately following a sequence of iowrite*()'s to the same region. diff --git a/debian/patches-rt/0249-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch b/debian/patches-rt/0249-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch index 458671102..f6b23d691 100644 --- a/debian/patches-rt/0249-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch +++ b/debian/patches-rt/0249-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch @@ -1,7 +1,7 @@ From: Julia Cartwright <julia@ni.com> Date: Fri, 28 Sep 2018 21:03:51 +0000 -Subject: [PATCH 249/353] watchdog: prevent deferral of watchdogd wakeup on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa8246032a3d912469805835a62695523d0f5069 +Subject: [PATCH 249/354] watchdog: prevent deferral of watchdogd wakeup on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=46dca4c860cbbd117f6f8c609fb6e131c60aae24 When PREEMPT_RT_FULL is enabled, all hrtimer expiry functions are deferred for execution into the context of ktimersoftd unless otherwise diff --git a/debian/patches-rt/0250-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch b/debian/patches-rt/0250-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch index 88e644461..816ad71c1 100644 --- a/debian/patches-rt/0250-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch +++ b/debian/patches-rt/0250-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Sat, 27 Feb 2016 08:09:11 +0100 -Subject: [PATCH 250/353] drm,radeon,i915: Use preempt_disable/enable_rt() +Subject: [PATCH 250/354] drm,radeon,i915: Use preempt_disable/enable_rt() where recommended -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a78df9205d320b7f34f95c2576ba325f0fc7af9c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a86ea6081adf9f7422ae28bf0d9d4f70f39f0c36 DRM folks identified the spots, so use them. diff --git a/debian/patches-rt/0251-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch b/debian/patches-rt/0251-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch index c273dd874..bc7ee19a5 100644 --- a/debian/patches-rt/0251-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch +++ b/debian/patches-rt/0251-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch @@ -1,8 +1,8 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com> Date: Sat, 27 Feb 2016 09:01:42 +0100 -Subject: [PATCH 251/353] drm,i915: Use local_lock/unlock_irq() in +Subject: [PATCH 251/354] drm,i915: Use local_lock/unlock_irq() in intel_pipe_update_start/end() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac57ad46b6fc7b30de016fa07ff78274aaf46fc1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=14fe0cf1f27bba843b81b0d0263cd74d9fd769ce [ 8.014039] BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:918 [ 8.014041] in_atomic(): 0, irqs_disabled(): 1, pid: 78, name: kworker/u4:4 diff --git a/debian/patches-rt/0252-drm-i915-disable-tracing-on-RT.patch b/debian/patches-rt/0252-drm-i915-disable-tracing-on-RT.patch index b1f3aa473..dd1f3ce5b 100644 --- a/debian/patches-rt/0252-drm-i915-disable-tracing-on-RT.patch +++ b/debian/patches-rt/0252-drm-i915-disable-tracing-on-RT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 6 Dec 2018 09:52:20 +0100 -Subject: [PATCH 252/353] drm/i915: disable tracing on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=702718725e855afb60c278b30eda18eeb5a0351e +Subject: [PATCH 252/354] drm/i915: disable tracing on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0eaacd7820bd23ea6f22175e2106f2923fb50b1f Luca Abeni reported this: | BUG: scheduling while atomic: kworker/u8:2/15203/0x00000003 diff --git a/debian/patches-rt/0253-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch b/debian/patches-rt/0253-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch index 9cab945e6..4c298ab62 100644 --- a/debian/patches-rt/0253-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch +++ b/debian/patches-rt/0253-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 19 Dec 2018 10:47:02 +0100 -Subject: [PATCH 253/353] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with +Subject: [PATCH 253/354] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with NOTRACE -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=639fc3d63f892e6406abea876f17cd94f2ebcdc7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ea56325e3e4962721ccb45d19bc814001e25fe0 The order of the header files is important. If this header file is included after tracepoint.h was included then the NOTRACE here becomes a diff --git a/debian/patches-rt/0254-cgroups-use-simple-wait-in-css_release.patch b/debian/patches-rt/0254-cgroups-use-simple-wait-in-css_release.patch index 9cef137b8..fc7b9ac67 100644 --- a/debian/patches-rt/0254-cgroups-use-simple-wait-in-css_release.patch +++ b/debian/patches-rt/0254-cgroups-use-simple-wait-in-css_release.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 13 Feb 2015 15:52:24 +0100 -Subject: [PATCH 254/353] cgroups: use simple wait in css_release() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e78c393381fac00d8163d30d56e9d4161880f64e +Subject: [PATCH 254/354] cgroups: use simple wait in css_release() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eaaf08f8685909a9bcd18431f0ebb9afafaac17b To avoid: |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 @@ -54,10 +54,10 @@ index 56442d3b651d..1d2275287f0e 100644 /* diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c -index a8185cdb8587..da19cf179b27 100644 +index 6322b56529e9..8df1b3cdfc42 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -4787,10 +4787,10 @@ static void css_free_rwork_fn(struct work_struct *work) +@@ -4801,10 +4801,10 @@ static void css_free_rwork_fn(struct work_struct *work) } } @@ -70,7 +70,7 @@ index a8185cdb8587..da19cf179b27 100644 struct cgroup_subsys *ss = css->ss; struct cgroup *cgrp = css->cgroup; -@@ -4852,8 +4852,8 @@ static void css_release(struct percpu_ref *ref) +@@ -4866,8 +4866,8 @@ static void css_release(struct percpu_ref *ref) struct cgroup_subsys_state *css = container_of(ref, struct cgroup_subsys_state, refcnt); @@ -81,7 +81,7 @@ index a8185cdb8587..da19cf179b27 100644 } static void init_and_link_css(struct cgroup_subsys_state *css, -@@ -5573,6 +5573,7 @@ static int __init cgroup_wq_init(void) +@@ -5587,6 +5587,7 @@ static int __init cgroup_wq_init(void) */ cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); BUG_ON(!cgroup_destroy_wq); diff --git a/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch index a96f6d2a0..aea28cb96 100644 --- a/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch +++ b/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch @@ -1,7 +1,7 @@ From: Mike Galbraith <efault@gmx.de> Date: Sun, 8 Jan 2017 09:32:25 +0100 -Subject: [PATCH 255/353] cpuset: Convert callback_lock to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cfb4edac99fdac0f650f2f27e04ba655fcae5475 +Subject: [PATCH 255/354] cpuset: Convert callback_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=630ca59f289413c66eadebf07807ad4c36076590 The two commits below add up to a cpuset might_sleep() splat for RT: diff --git a/debian/patches-rt/0256-apparmor-use-a-locallock-instead-preempt_disable.patch b/debian/patches-rt/0256-apparmor-use-a-locallock-instead-preempt_disable.patch index 5b92f0674..1671e8068 100644 --- a/debian/patches-rt/0256-apparmor-use-a-locallock-instead-preempt_disable.patch +++ b/debian/patches-rt/0256-apparmor-use-a-locallock-instead-preempt_disable.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 11 Oct 2017 17:43:49 +0200 -Subject: [PATCH 256/353] apparmor: use a locallock instead preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53cae7e6f1ece1546a58a538f6a685162e44350e +Subject: [PATCH 256/354] apparmor: use a locallock instead preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=826b05942ea2bb41956e147e1af9476f6a9b1ee6 get_buffers() disables preemption which acts as a lock for the per-CPU variable. Since we can't disable preemption here on RT, a local_lock is diff --git a/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch b/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch index 6fb41c49a..ecade5cd6 100644 --- a/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch +++ b/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 27 Jun 2014 16:24:52 +0200 -Subject: [PATCH 257/353] workqueue: Prevent deadlock/stall on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a62b1ced9d802c6c953e854a71ef4c2bfabfb7e1 +Subject: [PATCH 257/354] workqueue: Prevent deadlock/stall on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78b64dbd9f7ad3fb3e34cca02f8d504f1596ef7e Austin reported a XFS deadlock/stall on RT where scheduled work gets never exececuted and tasks are waiting for each other for ever. @@ -67,7 +67,7 @@ index e581ce1edc12..fd1a7d1ff9f4 100644 * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 7561ac884a3e..cb81c7767b17 100644 +index 21751b94b93a..c148b0b8bda9 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -126,6 +126,11 @@ enum { @@ -114,7 +114,7 @@ index 7561ac884a3e..cb81c7767b17 100644 #ifdef CONFIG_DEBUG_OBJECTS_WORK static struct debug_obj_descr work_debug_descr; -@@ -837,10 +867,16 @@ static struct worker *first_idle_worker(struct worker_pool *pool) +@@ -840,10 +870,16 @@ static struct worker *first_idle_worker(struct worker_pool *pool) */ static void wake_up_worker(struct worker_pool *pool) { @@ -132,7 +132,7 @@ index 7561ac884a3e..cb81c7767b17 100644 } /** -@@ -869,7 +905,7 @@ void wq_worker_running(struct task_struct *task) +@@ -872,7 +908,7 @@ void wq_worker_running(struct task_struct *task) */ void wq_worker_sleeping(struct task_struct *task) { @@ -141,7 +141,7 @@ index 7561ac884a3e..cb81c7767b17 100644 struct worker_pool *pool; /* -@@ -886,26 +922,18 @@ void wq_worker_sleeping(struct task_struct *task) +@@ -889,26 +925,18 @@ void wq_worker_sleeping(struct task_struct *task) return; worker->sleeping = 1; @@ -171,7 +171,7 @@ index 7561ac884a3e..cb81c7767b17 100644 } /** -@@ -1678,7 +1706,9 @@ static void worker_enter_idle(struct worker *worker) +@@ -1681,7 +1709,9 @@ static void worker_enter_idle(struct worker *worker) worker->last_active = jiffies; /* idle_list is LIFO */ @@ -181,7 +181,7 @@ index 7561ac884a3e..cb81c7767b17 100644 if (too_many_workers(pool) && !timer_pending(&pool->idle_timer)) mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT); -@@ -1711,7 +1741,9 @@ static void worker_leave_idle(struct worker *worker) +@@ -1714,7 +1744,9 @@ static void worker_leave_idle(struct worker *worker) return; worker_clr_flags(worker, WORKER_IDLE); pool->nr_idle--; @@ -191,7 +191,7 @@ index 7561ac884a3e..cb81c7767b17 100644 } static struct worker *alloc_worker(int node) -@@ -1876,7 +1908,9 @@ static void destroy_worker(struct worker *worker) +@@ -1879,7 +1911,9 @@ static void destroy_worker(struct worker *worker) pool->nr_workers--; pool->nr_idle--; diff --git a/debian/patches-rt/0258-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/debian/patches-rt/0258-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch index 773ec4c14..bd986ff3a 100644 --- a/debian/patches-rt/0258-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/debian/patches-rt/0258-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 3 Jul 2009 08:44:56 -0500 -Subject: [PATCH 258/353] signals: Allow rt tasks to cache one sigqueue struct -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c055281201f5bb1b85dcba7b89a0a1b047c98e0 +Subject: [PATCH 258/354] signals: Allow rt tasks to cache one sigqueue struct +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7647e29fb06af1ac834bd062decf98ebd753761 To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -41,7 +41,7 @@ index 0be5ce2375cb..6495fda18c2c 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/kernel/exit.c b/kernel/exit.c -index 02360ec3b122..51b36d58c872 100644 +index 0d1cca15e66f..cbe99ab0ac19 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -207,7 +207,7 @@ static void __exit_signal(struct task_struct *tsk) diff --git a/debian/patches-rt/0259-Add-localversion-for-RT-release.patch b/debian/patches-rt/0259-Add-localversion-for-RT-release.patch index b09cec7d2..e90b2e65a 100644 --- a/debian/patches-rt/0259-Add-localversion-for-RT-release.patch +++ b/debian/patches-rt/0259-Add-localversion-for-RT-release.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 8 Jul 2011 20:25:16 +0200 -Subject: [PATCH 259/353] Add localversion for -RT release -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f71c0632cb0b366bd2a4edecf6dad65f3ebdedf9 +Subject: [PATCH 259/354] Add localversion for -RT release +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2abbbe313516165ed8e9db8dda916ee77c5fe717 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- diff --git a/debian/patches-rt/0260-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch b/debian/patches-rt/0260-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch index 61320b922..9ed0de3ca 100644 --- a/debian/patches-rt/0260-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch +++ b/debian/patches-rt/0260-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 26 Mar 2019 18:31:54 +0100 -Subject: [PATCH 260/353] powerpc/pseries/iommu: Use a locallock instead +Subject: [PATCH 260/354] powerpc/pseries/iommu: Use a locallock instead local_irq_save() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=13ea01525e38daab61ff0fa8ea1c8d1d263ab08a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45d089d7b59373f276a0c170618fa8f18d1eca9d The locallock protects the per-CPU variable tce_page. The function attempts to allocate memory while tce_page is protected (by disabling diff --git a/debian/patches-rt/0261-powerpc-reshuffle-TIF-bits.patch b/debian/patches-rt/0261-powerpc-reshuffle-TIF-bits.patch index 6072a9b52..05081f8d4 100644 --- a/debian/patches-rt/0261-powerpc-reshuffle-TIF-bits.patch +++ b/debian/patches-rt/0261-powerpc-reshuffle-TIF-bits.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 22 Mar 2019 17:15:58 +0100 -Subject: [PATCH 261/353] powerpc: reshuffle TIF bits -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=57b4c00fd16824d19063a3e5d3f9e7cdd25edb1d +Subject: [PATCH 261/354] powerpc: reshuffle TIF bits +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d0fb40ac9c0ef280c5ebaaf6d05709c088e4504 Powerpc32/64 does not compile because TIF_SYSCALL_TRACE's bit is higher than 15 and the assembly instructions don't expect that. diff --git a/debian/patches-rt/0262-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0262-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch index 02391a4da..aab37da60 100644 --- a/debian/patches-rt/0262-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch +++ b/debian/patches-rt/0262-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch @@ -1,7 +1,7 @@ From: Julien Grall <julien.grall@arm.com> Date: Wed, 13 Mar 2019 11:40:34 +0000 -Subject: [PATCH 262/353] tty/sysrq: Convert show_lock to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8cc84fa9dbfd5700804c0fe27200ffaf9b715a77 +Subject: [PATCH 262/354] tty/sysrq: Convert show_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f8bdb802a6c55deb5f4d5d19c3e4f573d221a0e Systems which don't provide arch_trigger_cpumask_backtrace() will invoke showacpu() from a smp_call_function() function which is invoked diff --git a/debian/patches-rt/0263-drm-i915-Don-t-disable-interrupts-independently-of-t.patch b/debian/patches-rt/0263-drm-i915-Don-t-disable-interrupts-independently-of-t.patch index 2af6325b9..1766dd0aa 100644 --- a/debian/patches-rt/0263-drm-i915-Don-t-disable-interrupts-independently-of-t.patch +++ b/debian/patches-rt/0263-drm-i915-Don-t-disable-interrupts-independently-of-t.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 10 Apr 2019 11:01:37 +0200 -Subject: [PATCH 263/353] drm/i915: Don't disable interrupts independently of +Subject: [PATCH 263/354] drm/i915: Don't disable interrupts independently of the lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cdf7e141f6f0c4257c28cb10cd300d374ea421d7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26f2ceb748093524cf155c42530de064585c8d21 The locks (timeline->lock and rq->lock) need to be taken with disabled interrupts. This is done in __retire_engine_request() by disabling the diff --git a/debian/patches-rt/0264-sched-completion-Fix-a-lockup-in-wait_for_completion.patch b/debian/patches-rt/0264-sched-completion-Fix-a-lockup-in-wait_for_completion.patch index bc1c27b81..58d52232f 100644 --- a/debian/patches-rt/0264-sched-completion-Fix-a-lockup-in-wait_for_completion.patch +++ b/debian/patches-rt/0264-sched-completion-Fix-a-lockup-in-wait_for_completion.patch @@ -1,8 +1,8 @@ From: Corey Minyard <cminyard@mvista.com> Date: Thu, 9 May 2019 14:33:20 -0500 -Subject: [PATCH 264/353] sched/completion: Fix a lockup in +Subject: [PATCH 264/354] sched/completion: Fix a lockup in wait_for_completion() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=393e1673710468a59fe22a98375a2f184a8f0bdc +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40df6ffd0c4ce90d987a432656bd24e8c24b2c41 Consider following race: diff --git a/debian/patches-rt/0265-kthread-add-a-global-worker-thread.patch b/debian/patches-rt/0265-kthread-add-a-global-worker-thread.patch index 3a0f56950..b1403337b 100644 --- a/debian/patches-rt/0265-kthread-add-a-global-worker-thread.patch +++ b/debian/patches-rt/0265-kthread-add-a-global-worker-thread.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 12 Feb 2019 15:09:38 +0100 -Subject: [PATCH 265/353] kthread: add a global worker thread. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94597b54548d7027857d3bf84a450098c8ca1953 +Subject: [PATCH 265/354] kthread: add a global worker thread. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=df30ae90dd2374a42334e46231f7b6db84c07baa [ Upstream commit 0532e87d9d44795221aa921ba7024bde689cc894 ] @@ -28,7 +28,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> create mode 100644 include/linux/kthread-cgroup.h diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 12eb48980df7..b8c2c469ce7e 100644 +index 2e6c3f658894..2ba7391c4560 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -70,7 +70,7 @@ @@ -131,10 +131,10 @@ index e0498e46d642..31140f0a6c2c 100644 + #endif /* _LINUX_KTHREAD_H */ diff --git a/init/main.c b/init/main.c -index 703b627a6060..8555afc3f3e1 100644 +index 298257e2cd42..c90444ec2990 100644 --- a/init/main.c +++ b/init/main.c -@@ -1136,6 +1136,7 @@ static noinline void __init kernel_init_freeable(void) +@@ -1126,6 +1126,7 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); diff --git a/debian/patches-rt/0266-arm-imx6-cpuidle-Use-raw_spinlock_t.patch b/debian/patches-rt/0266-arm-imx6-cpuidle-Use-raw_spinlock_t.patch index 73c01a559..63ac55b62 100644 --- a/debian/patches-rt/0266-arm-imx6-cpuidle-Use-raw_spinlock_t.patch +++ b/debian/patches-rt/0266-arm-imx6-cpuidle-Use-raw_spinlock_t.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 14 May 2019 17:07:44 +0200 -Subject: [PATCH 266/353] arm: imx6: cpuidle: Use raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9aae4da52d8263b477fd6bd5eb93f84d4f233a4d +Subject: [PATCH 266/354] arm: imx6: cpuidle: Use raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c27c1c162dd5f7fd50f118bea89515944652f93f [ Upstream commit 40d0332ec8312e9c090f0a5414d9c90e12b13611 ] diff --git a/debian/patches-rt/0267-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch b/debian/patches-rt/0267-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch index e1aecd800..ff7013400 100644 --- a/debian/patches-rt/0267-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch +++ b/debian/patches-rt/0267-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 24 Jun 2019 18:29:13 +0200 -Subject: [PATCH 267/353] rcu: Don't allow to change rcu_normal_after_boot on +Subject: [PATCH 267/354] rcu: Don't allow to change rcu_normal_after_boot on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=67bcea9091d3ff86f96550f5d264ce29bce86c49 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=65c42116ca4d41fd6e9f9aae46911caa0e424280 [ Upstream commit c6c058c10577815a2491ce661876cff00a4c3b15 ] diff --git a/debian/patches-rt/0268-pci-switchtec-fix-stream_open.cocci-warnings.patch b/debian/patches-rt/0268-pci-switchtec-fix-stream_open.cocci-warnings.patch index fd945f513..1522e9db2 100644 --- a/debian/patches-rt/0268-pci-switchtec-fix-stream_open.cocci-warnings.patch +++ b/debian/patches-rt/0268-pci-switchtec-fix-stream_open.cocci-warnings.patch @@ -1,7 +1,7 @@ From: kbuild test robot <lkp@intel.com> Date: Sat, 13 Apr 2019 11:22:51 +0800 -Subject: [PATCH 268/353] pci/switchtec: fix stream_open.cocci warnings -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=824356358c4e0d421b1f6fd2f0ac4a0120fdb9b2 +Subject: [PATCH 268/354] pci/switchtec: fix stream_open.cocci warnings +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdc3765d092d16144b362fefc6755e046813190c [ Upstream commit 9462c69e29307adc95c289f50839d5d683973891 ] diff --git a/debian/patches-rt/0269-sched-core-Drop-a-preempt_disable_rt-statement.patch b/debian/patches-rt/0269-sched-core-Drop-a-preempt_disable_rt-statement.patch index 2b822b87f..e3a7d4471 100644 --- a/debian/patches-rt/0269-sched-core-Drop-a-preempt_disable_rt-statement.patch +++ b/debian/patches-rt/0269-sched-core-Drop-a-preempt_disable_rt-statement.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 24 Jun 2019 19:33:16 +0200 -Subject: [PATCH 269/353] sched/core: Drop a preempt_disable_rt() statement -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b7a96c1b8fa82f1ef908b15c0fce7f6e977a848 +Subject: [PATCH 269/354] sched/core: Drop a preempt_disable_rt() statement +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d82baed9d4cf7eb11be5cb47d403acb450781e11 [ Upstream commit 761126efdcbe3fa3e99c9079fa0ad6eca2f251f2 ] diff --git a/debian/patches-rt/0270-timers-Redo-the-notification-of-canceling-timers-on-.patch b/debian/patches-rt/0270-timers-Redo-the-notification-of-canceling-timers-on-.patch index 69d6e3478..9b11c1128 100644 --- a/debian/patches-rt/0270-timers-Redo-the-notification-of-canceling-timers-on-.patch +++ b/debian/patches-rt/0270-timers-Redo-the-notification-of-canceling-timers-on-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 24 Jun 2019 19:39:06 +0200 -Subject: [PATCH 270/353] timers: Redo the notification of canceling timers on +Subject: [PATCH 270/354] timers: Redo the notification of canceling timers on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c8867b2f2275355c1aec09e3b07c2020fc6234fa +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f3beb62163e553487a4e1edb78d0409869cbde42 [ Upstream commit c71273154c2ad12e13333aada340ff30e826a11b ] @@ -57,7 +57,7 @@ index 82d0f52414a6..f845093466be 100644 /* diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h -index 082147c07831..aee31b1f0cc3 100644 +index f8b4818e6e08..5112913e419f 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -22,7 +22,6 @@ @@ -148,7 +148,7 @@ index dec68f9dab7b..85c7f4a6b9c1 100644 } EXPORT_SYMBOL_GPL(alarm_cancel); diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 1992f107599e..6e19604eaa00 100644 +index 8f315ad08cd1..fb28793cb87b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -981,33 +981,16 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) @@ -317,10 +317,10 @@ index 2d29b269dc83..54632ed51c65 100644 * We need to handle case when timer was or is in the * middle of firing. In other cases we already freed diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c -index 36ee80652208..9f1d4c092f54 100644 +index eae555df7ea3..ba508c0924b9 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c -@@ -821,25 +821,20 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, +@@ -826,25 +826,20 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } @@ -356,7 +356,7 @@ index 36ee80652208..9f1d4c092f54 100644 } /* Set a POSIX.1b interval timer. */ -@@ -901,21 +896,21 @@ static int do_timer_settime(timer_t timer_id, int flags, +@@ -906,21 +901,21 @@ static int do_timer_settime(timer_t timer_id, int flags, if (!timr) return -EINVAL; @@ -382,7 +382,7 @@ index 36ee80652208..9f1d4c092f54 100644 return error; } -@@ -977,13 +972,21 @@ int common_timer_del(struct k_itimer *timer) +@@ -982,13 +977,21 @@ int common_timer_del(struct k_itimer *timer) return 0; } @@ -406,7 +406,7 @@ index 36ee80652208..9f1d4c092f54 100644 } /* Delete a POSIX.1b interval timer. */ -@@ -997,15 +1000,8 @@ SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) +@@ -1002,15 +1005,8 @@ SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) if (!timer) return -EINVAL; @@ -423,7 +423,7 @@ index 36ee80652208..9f1d4c092f54 100644 spin_lock(¤t->sighand->siglock); list_del(&timer->list); -@@ -1031,20 +1027,9 @@ static void itimer_delete(struct k_itimer *timer) +@@ -1036,20 +1032,9 @@ static void itimer_delete(struct k_itimer *timer) retry_delete: spin_lock_irqsave(&timer->it_lock, flags); diff --git a/debian/patches-rt/0271-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch b/debian/patches-rt/0271-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch index 9c9191ec7..e6d02dd9b 100644 --- a/debian/patches-rt/0271-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch +++ b/debian/patches-rt/0271-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 26 Jun 2019 17:44:13 +0200 -Subject: [PATCH 271/353] Revert "futex: Ensure lock/unlock symetry versus +Subject: [PATCH 271/354] Revert "futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=30396c61217580d4225fdb2e20eaf9aecea54a9a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4015f4555d680fed5664a5a70ba7301c112dfec4 [ Upstream commit 6a773b70cf105b46298ed3b44e77c102ce31d9ec ] @@ -16,7 +16,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 2 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index a5a263a3efbf..3449a716a378 100644 +index 3d2570e9c8c1..2cfeaa8e9379 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -962,9 +962,7 @@ static void exit_pi_state_list(struct task_struct *curr) diff --git a/debian/patches-rt/0272-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch b/debian/patches-rt/0272-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch index 442adae1e..479fdd107 100644 --- a/debian/patches-rt/0272-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch +++ b/debian/patches-rt/0272-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 26 Jun 2019 17:44:18 +0200 -Subject: [PATCH 272/353] Revert "futex: Fix bug on when a requeued RT task +Subject: [PATCH 272/354] Revert "futex: Fix bug on when a requeued RT task times out" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95059a1e8417cb772e741a05b1bbd6684bbc6d56 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=32dd9bc78f9b08338de79eed6301329c292e03f2 [ Upstream commit f1a170cb3289a48df26cae3c60d77608f7a988bb ] diff --git a/debian/patches-rt/0273-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch b/debian/patches-rt/0273-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch index 6a1bb0658..7d8b42c98 100644 --- a/debian/patches-rt/0273-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch +++ b/debian/patches-rt/0273-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 26 Jun 2019 17:44:21 +0200 -Subject: [PATCH 273/353] Revert "rtmutex: Handle the various new futex race +Subject: [PATCH 273/354] Revert "rtmutex: Handle the various new futex race conditions" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c1d1aee640dced483d8f2f6144bd691cfe3524e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a196113022056a21ebcd3eb961b51392505682ce [ Upstream commit 9e0265c21af4d6388d47dcd5ce20f76ec3a2e468 ] @@ -18,7 +18,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 3 files changed, 20 insertions(+), 93 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 3449a716a378..bcd01b5a47df 100644 +index 2cfeaa8e9379..dd0d6a166a83 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2255,16 +2255,6 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, diff --git a/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch b/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch index efd697df7..18736f90c 100644 --- a/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch +++ b/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 26 Jun 2019 17:44:27 +0200 -Subject: [PATCH 274/353] Revert "futex: workaround migrate_disable/enable in +Subject: [PATCH 274/354] Revert "futex: workaround migrate_disable/enable in different context" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d2dcb7eaaa0efc8bfa45966437cd717ab6318c99 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94d4be2c5195ea06136c948348e7152fc56bc4a3 [ Upstream commit a71221d81cc4873891ae44f3aa02df596079b786 ] @@ -16,7 +16,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 19 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index bcd01b5a47df..9bcfdcffb2dd 100644 +index dd0d6a166a83..b0667c419509 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2998,14 +2998,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, diff --git a/debian/patches-rt/0275-futex-Make-the-futex_hash_bucket-lock-raw.patch b/debian/patches-rt/0275-futex-Make-the-futex_hash_bucket-lock-raw.patch index db685f174..1dca75e7e 100644 --- a/debian/patches-rt/0275-futex-Make-the-futex_hash_bucket-lock-raw.patch +++ b/debian/patches-rt/0275-futex-Make-the-futex_hash_bucket-lock-raw.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 26 Jun 2019 11:59:44 +0200 -Subject: [PATCH 275/353] futex: Make the futex_hash_bucket lock raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a322e04cc1a2220cedbada7ba39667daef47ec7 +Subject: [PATCH 275/354] futex: Make the futex_hash_bucket lock raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5b6ef0830dd3e7e9f413acc3bade0e8dbc97cc7 [ Upstream commit f646521aadedab78801c9befe193e2e8a0c99298 ] @@ -22,7 +22,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 9bcfdcffb2dd..8a49dd71b233 100644 +index b0667c419509..f41a08629734 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -243,7 +243,7 @@ struct futex_q { diff --git a/debian/patches-rt/0276-futex-Delay-deallocation-of-pi_state.patch b/debian/patches-rt/0276-futex-Delay-deallocation-of-pi_state.patch index fbf1d4a06..538e4e3ff 100644 --- a/debian/patches-rt/0276-futex-Delay-deallocation-of-pi_state.patch +++ b/debian/patches-rt/0276-futex-Delay-deallocation-of-pi_state.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Wed, 26 Jun 2019 13:35:36 +0200 -Subject: [PATCH 276/353] futex: Delay deallocation of pi_state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9d2af42f0b95c0309539ea7ace7d8fe31300517b +Subject: [PATCH 276/354] futex: Delay deallocation of pi_state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=651f0822e72728ab29a264da74d83fe6d2a22c6f [ Upstream commit d7c7cf8cb68b7df17e6e50be1f25f35d83e686c7 ] @@ -17,7 +17,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 8a49dd71b233..2fc6bedb460e 100644 +index f41a08629734..5708382157c4 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -871,13 +871,13 @@ static void get_pi_state(struct futex_pi_state *pi_state) diff --git a/debian/patches-rt/0277-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch b/debian/patches-rt/0277-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch index bfc38b697..73f2bc096 100644 --- a/debian/patches-rt/0277-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch +++ b/debian/patches-rt/0277-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch @@ -1,8 +1,8 @@ From: "Luis Claudio R. Goncalves" <lclaudio@uudg.org> Date: Tue, 25 Jun 2019 11:28:04 -0300 -Subject: [PATCH 277/353] mm/zswap: Do not disable preemption in +Subject: [PATCH 277/354] mm/zswap: Do not disable preemption in zswap_frontswap_store() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=76b124c411d62a490954f663e6408c62b0b5ae0c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dff3515e460d7c4c9cd059bf814de36c6946de11 [ Upstream commit 4e4cf4be79635e67144632d9135286381acbc95a ] diff --git a/debian/patches-rt/0278-revert-aio.patch b/debian/patches-rt/0278-revert-aio.patch index f543db86b..495515509 100644 --- a/debian/patches-rt/0278-revert-aio.patch +++ b/debian/patches-rt/0278-revert-aio.patch @@ -1,7 +1,7 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> Date: Fri, 20 Sep 2019 17:50:53 -0400 -Subject: [PATCH 278/353] revert-aio -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6fe31f853eb820787f9cb92c68cf3cc1a3e9aa98 +Subject: [PATCH 278/354] revert-aio +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0d09d14f7562d9de2c4c353e3cb0b81fbf4262d revert: fs/aio: simple simple work diff --git a/debian/patches-rt/0279-fs-aio-simple-simple-work.patch b/debian/patches-rt/0279-fs-aio-simple-simple-work.patch index 3e169ddab..71013b344 100644 --- a/debian/patches-rt/0279-fs-aio-simple-simple-work.patch +++ b/debian/patches-rt/0279-fs-aio-simple-simple-work.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 16 Feb 2015 18:49:10 +0100 -Subject: [PATCH 279/353] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3185b0aa6832a8d6f779ba17eb2caf236247c6fc +Subject: [PATCH 279/354] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9e5660cfe47703d44bf51ffc9a29c9a4853f492a [ Upstream commit 1a142116f6435ef070ecebb66d2d599507c10601 ] diff --git a/debian/patches-rt/0280-revert-thermal.patch b/debian/patches-rt/0280-revert-thermal.patch index 522a2eaf7..41394bc92 100644 --- a/debian/patches-rt/0280-revert-thermal.patch +++ b/debian/patches-rt/0280-revert-thermal.patch @@ -1,7 +1,7 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> Date: Fri, 20 Sep 2019 17:50:53 -0400 -Subject: [PATCH 280/353] revert-thermal -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53bcb94a7e0108446c6a61b4006ccf32ed238929 +Subject: [PATCH 280/354] revert-thermal +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0043083bcd86f75d1352329a5762072df127562 Revert: thermal: Defer thermal wakups to threads diff --git a/debian/patches-rt/0281-thermal-Defer-thermal-wakups-to-threads.patch b/debian/patches-rt/0281-thermal-Defer-thermal-wakups-to-threads.patch index 3757fa2d6..79ef71bb3 100644 --- a/debian/patches-rt/0281-thermal-Defer-thermal-wakups-to-threads.patch +++ b/debian/patches-rt/0281-thermal-Defer-thermal-wakups-to-threads.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> Date: Tue, 17 Feb 2015 09:37:44 +0100 -Subject: [PATCH 281/353] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f7fbdef70212226ebc92dad2324314a8622bc932 +Subject: [PATCH 281/354] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6002dd0f95978c47d63b2bb6f4cbe0b45992f86 [ Upstream commit ad2408dc248fe58536eef5b2b5734d8f9d3a280b ] diff --git a/debian/patches-rt/0282-revert-block.patch b/debian/patches-rt/0282-revert-block.patch index 64822be0f..5920267bd 100644 --- a/debian/patches-rt/0282-revert-block.patch +++ b/debian/patches-rt/0282-revert-block.patch @@ -1,7 +1,7 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> Date: Fri, 20 Sep 2019 17:50:54 -0400 -Subject: [PATCH 282/353] revert-block -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f49ff6cc5e6ab3714c16d7862f65881092c8f64 +Subject: [PATCH 282/354] revert-block +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95122234de3af61b19ef45185fa478a95f1d09d2 Revert swork version of: block: blk-mq: move blk_queue_usage_counter_release() into process context diff --git a/debian/patches-rt/0283-block-blk-mq-move-blk_queue_usage_counter_release-in.patch b/debian/patches-rt/0283-block-blk-mq-move-blk_queue_usage_counter_release-in.patch index fd1086f94..053124d02 100644 --- a/debian/patches-rt/0283-block-blk-mq-move-blk_queue_usage_counter_release-in.patch +++ b/debian/patches-rt/0283-block-blk-mq-move-blk_queue_usage_counter_release-in.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 13 Mar 2018 13:49:16 +0100 -Subject: [PATCH 283/353] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 283/354] block: blk-mq: move blk_queue_usage_counter_release() into process context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=468da645fc327d9551d6d834526fdd7d7da951b0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bfe7ba6f78580409d44da6ece04b07c0a957b268 [ Upstream commit 61c928ecf4fe200bda9b49a0813b5ba0f43995b5 ] diff --git a/debian/patches-rt/0284-workqueue-rework.patch b/debian/patches-rt/0284-workqueue-rework.patch index 7acedd9ad..9d553557f 100644 --- a/debian/patches-rt/0284-workqueue-rework.patch +++ b/debian/patches-rt/0284-workqueue-rework.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 29 May 2019 18:52:27 +0200 -Subject: [PATCH 284/353] workqueue: rework -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=11c0b968a11a4a0c4e9b0e4f4129c5d3dbf995ac +Subject: [PATCH 284/354] workqueue: rework +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f331f53f8783ce6f1a36700c65f3760236ded195 [ Upstream commit d15a862f24df983458533aebd6fa207ecdd1095a ] @@ -65,7 +65,7 @@ index aa40960ef4c0..732913d4966c 100644 /* * Init percpu_ref in atomic mode so that it's faster to shutdown. diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index b8c2c469ce7e..12eb48980df7 100644 +index 2ba7391c4560..2e6c3f658894 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -70,7 +70,7 @@ @@ -293,10 +293,10 @@ index f426a0661aa0..21ae66cd41d3 100644 + #endif /* _LINUX_SWAIT_H */ diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h -index 60d673e15632..546aa73fba6a 100644 +index a7224fec99a7..7e77fe3900c2 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h -@@ -455,10 +455,6 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, +@@ -456,10 +456,6 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, extern void destroy_workqueue(struct workqueue_struct *wq); @@ -308,10 +308,10 @@ index 60d673e15632..546aa73fba6a 100644 extern bool queue_work_on(int cpu, struct workqueue_struct *wq, diff --git a/init/main.c b/init/main.c -index 8555afc3f3e1..703b627a6060 100644 +index c90444ec2990..298257e2cd42 100644 --- a/init/main.c +++ b/init/main.c -@@ -1136,7 +1136,6 @@ static noinline void __init kernel_init_freeable(void) +@@ -1126,7 +1126,6 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); @@ -364,7 +364,7 @@ index ab64a3c261bc..dded9ca916eb 100644 * If a worker went to sleep, notify and ask workqueue whether * it wants to wake up a task to maintain concurrency. diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 6e19604eaa00..92ee6cf49c24 100644 +index fb28793cb87b..089c74ff0511 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -748,29 +748,6 @@ static void hrtimer_switch_to_hres(void) @@ -406,7 +406,7 @@ index 6e19604eaa00..92ee6cf49c24 100644 #else diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index cb81c7767b17..c047a647146e 100644 +index c148b0b8bda9..8e012510425e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,8 +50,6 @@ @@ -491,7 +491,7 @@ index cb81c7767b17..c047a647146e 100644 #ifdef CONFIG_DEBUG_OBJECTS_WORK static struct debug_obj_descr work_debug_descr; -@@ -863,20 +829,14 @@ static struct worker *first_idle_worker(struct worker_pool *pool) +@@ -866,20 +832,14 @@ static struct worker *first_idle_worker(struct worker_pool *pool) * Wake up the first idle worker of @pool. * * CONTEXT: @@ -514,7 +514,7 @@ index cb81c7767b17..c047a647146e 100644 } /** -@@ -905,7 +865,7 @@ void wq_worker_running(struct task_struct *task) +@@ -908,7 +868,7 @@ void wq_worker_running(struct task_struct *task) */ void wq_worker_sleeping(struct task_struct *task) { @@ -523,7 +523,7 @@ index cb81c7767b17..c047a647146e 100644 struct worker_pool *pool; /* -@@ -922,18 +882,26 @@ void wq_worker_sleeping(struct task_struct *task) +@@ -925,18 +885,26 @@ void wq_worker_sleeping(struct task_struct *task) return; worker->sleeping = 1; @@ -553,7 +553,7 @@ index cb81c7767b17..c047a647146e 100644 } /** -@@ -944,7 +912,7 @@ void wq_worker_sleeping(struct task_struct *task) +@@ -947,7 +915,7 @@ void wq_worker_sleeping(struct task_struct *task) * Set @flags in @worker->flags and adjust nr_running accordingly. * * CONTEXT: @@ -562,7 +562,7 @@ index cb81c7767b17..c047a647146e 100644 */ static inline void worker_set_flags(struct worker *worker, unsigned int flags) { -@@ -969,7 +937,7 @@ static inline void worker_set_flags(struct worker *worker, unsigned int flags) +@@ -972,7 +940,7 @@ static inline void worker_set_flags(struct worker *worker, unsigned int flags) * Clear @flags in @worker->flags and adjust nr_running accordingly. * * CONTEXT: @@ -571,7 +571,7 @@ index cb81c7767b17..c047a647146e 100644 */ static inline void worker_clr_flags(struct worker *worker, unsigned int flags) { -@@ -1017,7 +985,7 @@ static inline void worker_clr_flags(struct worker *worker, unsigned int flags) +@@ -1020,7 +988,7 @@ static inline void worker_clr_flags(struct worker *worker, unsigned int flags) * actually occurs, it should be easy to locate the culprit work function. * * CONTEXT: @@ -580,7 +580,7 @@ index cb81c7767b17..c047a647146e 100644 * * Return: * Pointer to worker which is executing @work if found, %NULL -@@ -1052,7 +1020,7 @@ static struct worker *find_worker_executing_work(struct worker_pool *pool, +@@ -1055,7 +1023,7 @@ static struct worker *find_worker_executing_work(struct worker_pool *pool, * nested inside outer list_for_each_entry_safe(). * * CONTEXT: @@ -589,7 +589,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void move_linked_works(struct work_struct *work, struct list_head *head, struct work_struct **nextp) -@@ -1130,11 +1098,9 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) +@@ -1133,11 +1101,9 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq) * As both pwqs and pools are RCU protected, the * following lock operations are safe. */ @@ -603,7 +603,7 @@ index cb81c7767b17..c047a647146e 100644 } } -@@ -1167,7 +1133,7 @@ static void pwq_activate_first_delayed(struct pool_workqueue *pwq) +@@ -1170,7 +1136,7 @@ static void pwq_activate_first_delayed(struct pool_workqueue *pwq) * decrement nr_in_flight of its pwq and handle workqueue flushing. * * CONTEXT: @@ -612,7 +612,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void pwq_dec_nr_in_flight(struct pool_workqueue *pwq, int color) { -@@ -1238,7 +1204,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1241,7 +1207,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, struct worker_pool *pool; struct pool_workqueue *pwq; @@ -621,7 +621,7 @@ index cb81c7767b17..c047a647146e 100644 /* try to steal the timer if it exists */ if (is_dwork) { -@@ -1266,7 +1232,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1269,7 +1235,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, if (!pool) goto fail; @@ -630,7 +630,7 @@ index cb81c7767b17..c047a647146e 100644 /* * work->data is guaranteed to point to pwq only while the work * item is queued on pwq->wq, and both updating work->data to point -@@ -1295,17 +1261,17 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1298,17 +1264,17 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, /* work->data points to pwq iff queued, point to pool */ set_work_pool_and_keep_pending(work, pool->id); @@ -652,7 +652,7 @@ index cb81c7767b17..c047a647146e 100644 return -EAGAIN; } -@@ -1320,7 +1286,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, +@@ -1323,7 +1289,7 @@ static int try_to_grab_pending(struct work_struct *work, bool is_dwork, * work_struct flags. * * CONTEXT: @@ -661,7 +661,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void insert_work(struct pool_workqueue *pwq, struct work_struct *work, struct list_head *head, unsigned int extra_flags) -@@ -1407,13 +1373,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1410,13 +1376,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, * queued or lose PENDING. Grabbing PENDING and queueing should * happen with IRQ disabled. */ @@ -675,7 +675,7 @@ index cb81c7767b17..c047a647146e 100644 /* if draining, only works from the same workqueue are allowed */ -@@ -1442,7 +1402,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1445,7 +1405,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, if (last_pool && last_pool != pwq->pool) { struct worker *worker; @@ -684,7 +684,7 @@ index cb81c7767b17..c047a647146e 100644 worker = find_worker_executing_work(last_pool, work); -@@ -1450,11 +1410,11 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1453,11 +1413,11 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, pwq = worker->current_pwq; } else { /* meh... not running there, queue here */ @@ -699,7 +699,7 @@ index cb81c7767b17..c047a647146e 100644 } /* -@@ -1467,7 +1427,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1470,7 +1430,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, */ if (unlikely(!pwq->refcnt)) { if (wq->flags & WQ_UNBOUND) { @@ -708,7 +708,7 @@ index cb81c7767b17..c047a647146e 100644 cpu_relax(); goto retry; } -@@ -1500,7 +1460,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, +@@ -1503,7 +1463,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, insert_work(pwq, work, worklist, work_flags); out: @@ -717,7 +717,7 @@ index cb81c7767b17..c047a647146e 100644 rcu_read_unlock(); } -@@ -1521,14 +1481,14 @@ bool queue_work_on(int cpu, struct workqueue_struct *wq, +@@ -1524,14 +1484,14 @@ bool queue_work_on(int cpu, struct workqueue_struct *wq, bool ret = false; unsigned long flags; @@ -734,7 +734,7 @@ index cb81c7767b17..c047a647146e 100644 return ret; } EXPORT_SYMBOL(queue_work_on); -@@ -1536,12 +1496,11 @@ EXPORT_SYMBOL(queue_work_on); +@@ -1539,12 +1499,11 @@ EXPORT_SYMBOL(queue_work_on); void delayed_work_timer_fn(struct timer_list *t) { struct delayed_work *dwork = from_timer(dwork, t, timer); @@ -750,7 +750,7 @@ index cb81c7767b17..c047a647146e 100644 } EXPORT_SYMBOL(delayed_work_timer_fn); -@@ -1596,14 +1555,14 @@ bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, +@@ -1599,14 +1558,14 @@ bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, unsigned long flags; /* read the comment in __queue_work() */ @@ -767,7 +767,7 @@ index cb81c7767b17..c047a647146e 100644 return ret; } EXPORT_SYMBOL(queue_delayed_work_on); -@@ -1638,7 +1597,7 @@ bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, +@@ -1641,7 +1600,7 @@ bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, if (likely(ret >= 0)) { __queue_delayed_work(cpu, wq, dwork, delay); @@ -776,7 +776,7 @@ index cb81c7767b17..c047a647146e 100644 } /* -ENOENT from try_to_grab_pending() becomes %true */ -@@ -1649,12 +1608,11 @@ EXPORT_SYMBOL_GPL(mod_delayed_work_on); +@@ -1652,12 +1611,11 @@ EXPORT_SYMBOL_GPL(mod_delayed_work_on); static void rcu_work_rcufn(struct rcu_head *rcu) { struct rcu_work *rwork = container_of(rcu, struct rcu_work, rcu); @@ -791,7 +791,7 @@ index cb81c7767b17..c047a647146e 100644 } /** -@@ -1689,7 +1647,7 @@ EXPORT_SYMBOL(queue_rcu_work); +@@ -1692,7 +1650,7 @@ EXPORT_SYMBOL(queue_rcu_work); * necessary. * * LOCKING: @@ -800,7 +800,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void worker_enter_idle(struct worker *worker) { -@@ -1706,9 +1664,7 @@ static void worker_enter_idle(struct worker *worker) +@@ -1709,9 +1667,7 @@ static void worker_enter_idle(struct worker *worker) worker->last_active = jiffies; /* idle_list is LIFO */ @@ -810,7 +810,7 @@ index cb81c7767b17..c047a647146e 100644 if (too_many_workers(pool) && !timer_pending(&pool->idle_timer)) mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT); -@@ -1731,7 +1687,7 @@ static void worker_enter_idle(struct worker *worker) +@@ -1734,7 +1690,7 @@ static void worker_enter_idle(struct worker *worker) * @worker is leaving idle state. Update stats. * * LOCKING: @@ -819,7 +819,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void worker_leave_idle(struct worker *worker) { -@@ -1741,9 +1697,7 @@ static void worker_leave_idle(struct worker *worker) +@@ -1744,9 +1700,7 @@ static void worker_leave_idle(struct worker *worker) return; worker_clr_flags(worker, WORKER_IDLE); pool->nr_idle--; @@ -829,7 +829,7 @@ index cb81c7767b17..c047a647146e 100644 } static struct worker *alloc_worker(int node) -@@ -1868,11 +1822,11 @@ static struct worker *create_worker(struct worker_pool *pool) +@@ -1871,11 +1825,11 @@ static struct worker *create_worker(struct worker_pool *pool) worker_attach_to_pool(worker, pool); /* start the newly created worker */ @@ -843,7 +843,7 @@ index cb81c7767b17..c047a647146e 100644 return worker; -@@ -1891,7 +1845,7 @@ static struct worker *create_worker(struct worker_pool *pool) +@@ -1894,7 +1848,7 @@ static struct worker *create_worker(struct worker_pool *pool) * be idle. * * CONTEXT: @@ -852,7 +852,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void destroy_worker(struct worker *worker) { -@@ -1908,9 +1862,7 @@ static void destroy_worker(struct worker *worker) +@@ -1911,9 +1865,7 @@ static void destroy_worker(struct worker *worker) pool->nr_workers--; pool->nr_idle--; @@ -862,7 +862,7 @@ index cb81c7767b17..c047a647146e 100644 worker->flags |= WORKER_DIE; wake_up_process(worker->task); } -@@ -1919,7 +1871,7 @@ static void idle_worker_timeout(struct timer_list *t) +@@ -1922,7 +1874,7 @@ static void idle_worker_timeout(struct timer_list *t) { struct worker_pool *pool = from_timer(pool, t, idle_timer); @@ -871,7 +871,7 @@ index cb81c7767b17..c047a647146e 100644 while (too_many_workers(pool)) { struct worker *worker; -@@ -1937,7 +1889,7 @@ static void idle_worker_timeout(struct timer_list *t) +@@ -1940,7 +1892,7 @@ static void idle_worker_timeout(struct timer_list *t) destroy_worker(worker); } @@ -880,7 +880,7 @@ index cb81c7767b17..c047a647146e 100644 } static void send_mayday(struct work_struct *work) -@@ -1968,8 +1920,8 @@ static void pool_mayday_timeout(struct timer_list *t) +@@ -1971,8 +1923,8 @@ static void pool_mayday_timeout(struct timer_list *t) struct worker_pool *pool = from_timer(pool, t, mayday_timer); struct work_struct *work; @@ -891,7 +891,7 @@ index cb81c7767b17..c047a647146e 100644 if (need_to_create_worker(pool)) { /* -@@ -1982,8 +1934,8 @@ static void pool_mayday_timeout(struct timer_list *t) +@@ -1985,8 +1937,8 @@ static void pool_mayday_timeout(struct timer_list *t) send_mayday(work); } @@ -902,7 +902,7 @@ index cb81c7767b17..c047a647146e 100644 mod_timer(&pool->mayday_timer, jiffies + MAYDAY_INTERVAL); } -@@ -2002,7 +1954,7 @@ static void pool_mayday_timeout(struct timer_list *t) +@@ -2005,7 +1957,7 @@ static void pool_mayday_timeout(struct timer_list *t) * may_start_working() %true. * * LOCKING: @@ -911,7 +911,7 @@ index cb81c7767b17..c047a647146e 100644 * multiple times. Does GFP_KERNEL allocations. Called only from * manager. */ -@@ -2011,7 +1963,7 @@ __releases(&pool->lock) +@@ -2014,7 +1966,7 @@ __releases(&pool->lock) __acquires(&pool->lock) { restart: @@ -920,7 +920,7 @@ index cb81c7767b17..c047a647146e 100644 /* if we don't make progress in MAYDAY_INITIAL_TIMEOUT, call for help */ mod_timer(&pool->mayday_timer, jiffies + MAYDAY_INITIAL_TIMEOUT); -@@ -2027,7 +1979,7 @@ __acquires(&pool->lock) +@@ -2030,7 +1982,7 @@ __acquires(&pool->lock) } del_timer_sync(&pool->mayday_timer); @@ -929,7 +929,7 @@ index cb81c7767b17..c047a647146e 100644 /* * This is necessary even after a new worker was just successfully * created as @pool->lock was dropped and the new worker might have -@@ -2050,7 +2002,7 @@ __acquires(&pool->lock) +@@ -2053,7 +2005,7 @@ __acquires(&pool->lock) * and may_start_working() is true. * * CONTEXT: @@ -938,7 +938,7 @@ index cb81c7767b17..c047a647146e 100644 * multiple times. Does GFP_KERNEL allocations. * * Return: -@@ -2073,7 +2025,7 @@ static bool manage_workers(struct worker *worker) +@@ -2076,7 +2028,7 @@ static bool manage_workers(struct worker *worker) pool->manager = NULL; pool->flags &= ~POOL_MANAGER_ACTIVE; @@ -947,7 +947,7 @@ index cb81c7767b17..c047a647146e 100644 return true; } -@@ -2089,7 +2041,7 @@ static bool manage_workers(struct worker *worker) +@@ -2092,7 +2044,7 @@ static bool manage_workers(struct worker *worker) * call this function to process a work. * * CONTEXT: @@ -956,7 +956,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void process_one_work(struct worker *worker, struct work_struct *work) __releases(&pool->lock) -@@ -2171,7 +2123,7 @@ __acquires(&pool->lock) +@@ -2174,7 +2126,7 @@ __acquires(&pool->lock) */ set_work_pool_and_clear_pending(work, pool->id); @@ -965,7 +965,7 @@ index cb81c7767b17..c047a647146e 100644 lock_map_acquire(&pwq->wq->lockdep_map); lock_map_acquire(&lockdep_map); -@@ -2226,7 +2178,7 @@ __acquires(&pool->lock) +@@ -2229,7 +2181,7 @@ __acquires(&pool->lock) */ cond_resched(); @@ -974,7 +974,7 @@ index cb81c7767b17..c047a647146e 100644 /* clear cpu intensive status */ if (unlikely(cpu_intensive)) -@@ -2249,7 +2201,7 @@ __acquires(&pool->lock) +@@ -2252,7 +2204,7 @@ __acquires(&pool->lock) * fetches a work from the top and executes it. * * CONTEXT: @@ -983,7 +983,7 @@ index cb81c7767b17..c047a647146e 100644 * multiple times. */ static void process_scheduled_works(struct worker *worker) -@@ -2291,11 +2243,11 @@ static int worker_thread(void *__worker) +@@ -2294,11 +2246,11 @@ static int worker_thread(void *__worker) /* tell the scheduler that this is a workqueue worker */ set_pf_worker(true); woke_up: @@ -997,7 +997,7 @@ index cb81c7767b17..c047a647146e 100644 WARN_ON_ONCE(!list_empty(&worker->entry)); set_pf_worker(false); -@@ -2361,7 +2313,7 @@ static int worker_thread(void *__worker) +@@ -2364,7 +2316,7 @@ static int worker_thread(void *__worker) */ worker_enter_idle(worker); __set_current_state(TASK_IDLE); @@ -1006,7 +1006,7 @@ index cb81c7767b17..c047a647146e 100644 schedule(); goto woke_up; } -@@ -2415,7 +2367,7 @@ static int rescuer_thread(void *__rescuer) +@@ -2418,7 +2370,7 @@ static int rescuer_thread(void *__rescuer) should_stop = kthread_should_stop(); /* see whether any pwq is asking for help */ @@ -1015,7 +1015,7 @@ index cb81c7767b17..c047a647146e 100644 while (!list_empty(&wq->maydays)) { struct pool_workqueue *pwq = list_first_entry(&wq->maydays, -@@ -2427,11 +2379,11 @@ static int rescuer_thread(void *__rescuer) +@@ -2430,11 +2382,11 @@ static int rescuer_thread(void *__rescuer) __set_current_state(TASK_RUNNING); list_del_init(&pwq->mayday_node); @@ -1029,7 +1029,7 @@ index cb81c7767b17..c047a647146e 100644 /* * Slurp in all works issued via this workqueue and -@@ -2460,7 +2412,7 @@ static int rescuer_thread(void *__rescuer) +@@ -2463,7 +2415,7 @@ static int rescuer_thread(void *__rescuer) * incur MAYDAY_INTERVAL delay inbetween. */ if (need_to_create_worker(pool)) { @@ -1038,7 +1038,7 @@ index cb81c7767b17..c047a647146e 100644 /* * Queue iff we aren't racing destruction * and somebody else hasn't queued it already. -@@ -2469,7 +2421,7 @@ static int rescuer_thread(void *__rescuer) +@@ -2472,7 +2424,7 @@ static int rescuer_thread(void *__rescuer) get_pwq(pwq); list_add_tail(&pwq->mayday_node, &wq->maydays); } @@ -1047,7 +1047,7 @@ index cb81c7767b17..c047a647146e 100644 } } -@@ -2487,14 +2439,14 @@ static int rescuer_thread(void *__rescuer) +@@ -2490,14 +2442,14 @@ static int rescuer_thread(void *__rescuer) if (need_more_worker(pool)) wake_up_worker(pool); @@ -1065,7 +1065,7 @@ index cb81c7767b17..c047a647146e 100644 if (should_stop) { __set_current_state(TASK_RUNNING); -@@ -2574,7 +2526,7 @@ static void wq_barrier_func(struct work_struct *work) +@@ -2577,7 +2529,7 @@ static void wq_barrier_func(struct work_struct *work) * underneath us, so we can't reliably determine pwq from @target. * * CONTEXT: @@ -1074,7 +1074,7 @@ index cb81c7767b17..c047a647146e 100644 */ static void insert_wq_barrier(struct pool_workqueue *pwq, struct wq_barrier *barr, -@@ -2661,7 +2613,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, +@@ -2664,7 +2616,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, for_each_pwq(pwq, wq) { struct worker_pool *pool = pwq->pool; @@ -1083,7 +1083,7 @@ index cb81c7767b17..c047a647146e 100644 if (flush_color >= 0) { WARN_ON_ONCE(pwq->flush_color != -1); -@@ -2678,7 +2630,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, +@@ -2681,7 +2633,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, pwq->work_color = work_color; } @@ -1092,7 +1092,7 @@ index cb81c7767b17..c047a647146e 100644 } if (flush_color >= 0 && atomic_dec_and_test(&wq->nr_pwqs_to_flush)) -@@ -2878,9 +2830,9 @@ void drain_workqueue(struct workqueue_struct *wq) +@@ -2881,9 +2833,9 @@ void drain_workqueue(struct workqueue_struct *wq) for_each_pwq(pwq, wq) { bool drained; @@ -1104,7 +1104,7 @@ index cb81c7767b17..c047a647146e 100644 if (drained) continue; -@@ -2916,7 +2868,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2919,7 +2871,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, return false; } @@ -1113,7 +1113,7 @@ index cb81c7767b17..c047a647146e 100644 /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2932,7 +2884,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2935,7 +2887,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, check_flush_dependency(pwq->wq, work); insert_wq_barrier(pwq, barr, work, worker); @@ -1122,7 +1122,7 @@ index cb81c7767b17..c047a647146e 100644 /* * Force a lock recursion deadlock when using flush_work() inside a -@@ -2951,7 +2903,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2954,7 +2906,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, rcu_read_unlock(); return true; already_gone: @@ -1131,7 +1131,7 @@ index cb81c7767b17..c047a647146e 100644 rcu_read_unlock(); return false; } -@@ -3050,7 +3002,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3053,7 +3005,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -1140,7 +1140,7 @@ index cb81c7767b17..c047a647146e 100644 /* * This allows canceling during early boot. We know that @work -@@ -3111,10 +3063,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3114,10 +3066,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -1153,7 +1153,7 @@ index cb81c7767b17..c047a647146e 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3152,7 +3104,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3155,7 +3107,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) return false; set_work_pool_and_clear_pending(work, get_work_pool_id(work)); @@ -1162,7 +1162,7 @@ index cb81c7767b17..c047a647146e 100644 return ret; } -@@ -3262,7 +3214,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); +@@ -3265,7 +3217,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); * * Undo alloc_workqueue_attrs(). */ @@ -1171,7 +1171,7 @@ index cb81c7767b17..c047a647146e 100644 { if (attrs) { free_cpumask_var(attrs->cpumask); -@@ -3272,21 +3224,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) +@@ -3275,21 +3227,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) /** * alloc_workqueue_attrs - allocate a workqueue_attrs @@ -1196,7 +1196,7 @@ index cb81c7767b17..c047a647146e 100644 goto fail; cpumask_copy(attrs->cpumask, cpu_possible_mask); -@@ -3343,7 +3294,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, +@@ -3346,7 +3297,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, */ static int init_worker_pool(struct worker_pool *pool) { @@ -1205,7 +1205,7 @@ index cb81c7767b17..c047a647146e 100644 pool->id = -1; pool->cpu = -1; pool->node = NUMA_NO_NODE; -@@ -3364,7 +3315,7 @@ static int init_worker_pool(struct worker_pool *pool) +@@ -3367,7 +3318,7 @@ static int init_worker_pool(struct worker_pool *pool) pool->refcnt = 1; /* shouldn't fail above this point */ @@ -1214,7 +1214,7 @@ index cb81c7767b17..c047a647146e 100644 if (!pool->attrs) return -ENOMEM; return 0; -@@ -3429,15 +3380,15 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3432,15 +3383,15 @@ static void put_unbound_pool(struct worker_pool *pool) * @pool's workers from blocking on attach_mutex. We're the last * manager and @pool gets freed with the flag set. */ @@ -1233,7 +1233,7 @@ index cb81c7767b17..c047a647146e 100644 mutex_lock(&wq_pool_attach_mutex); if (!list_empty(&pool->workers)) -@@ -3597,7 +3548,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3600,7 +3551,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) return; /* this function can be called during early boot w/ irq disabled */ @@ -1242,7 +1242,7 @@ index cb81c7767b17..c047a647146e 100644 /* * During [un]freezing, the caller is responsible for ensuring that -@@ -3627,7 +3578,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3630,7 +3581,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) pwq->max_active = 0; } @@ -1251,7 +1251,7 @@ index cb81c7767b17..c047a647146e 100644 } /* initialize newly alloced @pwq which is associated with @wq and @pool */ -@@ -3800,8 +3751,8 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, +@@ -3803,8 +3754,8 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, ctx = kzalloc(struct_size(ctx, pwq_tbl, nr_node_ids), GFP_KERNEL); @@ -1262,7 +1262,7 @@ index cb81c7767b17..c047a647146e 100644 if (!ctx || !new_attrs || !tmp_attrs) goto out_free; -@@ -3937,7 +3888,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, +@@ -3940,7 +3891,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, * * Return: 0 on success and -errno on failure. */ @@ -1271,7 +1271,7 @@ index cb81c7767b17..c047a647146e 100644 const struct workqueue_attrs *attrs) { int ret; -@@ -3948,7 +3899,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, +@@ -3951,7 +3902,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, return ret; } @@ -1279,7 +1279,7 @@ index cb81c7767b17..c047a647146e 100644 /** * wq_update_unbound_numa - update NUMA affinity of a wq for CPU hot[un]plug -@@ -4026,9 +3976,9 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, +@@ -4029,9 +3979,9 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, use_dfl_pwq: mutex_lock(&wq->mutex); @@ -1291,7 +1291,7 @@ index cb81c7767b17..c047a647146e 100644 old_pwq = numa_pwq_tbl_install(wq, node, wq->dfl_pwq); out_unlock: mutex_unlock(&wq->mutex); -@@ -4147,7 +4097,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, +@@ -4150,7 +4100,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, return NULL; if (flags & WQ_UNBOUND) { @@ -1300,7 +1300,7 @@ index cb81c7767b17..c047a647146e 100644 if (!wq->unbound_attrs) goto err_free_wq; } -@@ -4234,9 +4184,9 @@ void destroy_workqueue(struct workqueue_struct *wq) +@@ -4237,9 +4187,9 @@ void destroy_workqueue(struct workqueue_struct *wq) struct worker *rescuer = wq->rescuer; /* this prevents new queueing */ @@ -1312,7 +1312,7 @@ index cb81c7767b17..c047a647146e 100644 /* rescuer will empty maydays list before exiting */ kthread_stop(rescuer->task); -@@ -4431,10 +4381,10 @@ unsigned int work_busy(struct work_struct *work) +@@ -4434,10 +4384,10 @@ unsigned int work_busy(struct work_struct *work) rcu_read_lock(); pool = get_work_pool(work); if (pool) { @@ -1325,7 +1325,7 @@ index cb81c7767b17..c047a647146e 100644 } rcu_read_unlock(); -@@ -4641,10 +4591,10 @@ void show_workqueue_state(void) +@@ -4644,10 +4594,10 @@ void show_workqueue_state(void) pr_info("workqueue %s: flags=0x%x\n", wq->name, wq->flags); for_each_pwq(pwq, wq) { @@ -1338,7 +1338,7 @@ index cb81c7767b17..c047a647146e 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4658,7 +4608,7 @@ void show_workqueue_state(void) +@@ -4661,7 +4611,7 @@ void show_workqueue_state(void) struct worker *worker; bool first = true; @@ -1347,7 +1347,7 @@ index cb81c7767b17..c047a647146e 100644 if (pool->nr_workers == pool->nr_idle) goto next_pool; -@@ -4677,7 +4627,7 @@ void show_workqueue_state(void) +@@ -4680,7 +4630,7 @@ void show_workqueue_state(void) } pr_cont("\n"); next_pool: @@ -1356,7 +1356,7 @@ index cb81c7767b17..c047a647146e 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4707,7 +4657,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4710,7 +4660,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) struct worker_pool *pool = worker->pool; if (pool) { @@ -1365,7 +1365,7 @@ index cb81c7767b17..c047a647146e 100644 /* * ->desc tracks information (wq name or * set_worker_desc()) for the latest execution. If -@@ -4721,7 +4671,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4724,7 +4674,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) scnprintf(buf + off, size - off, "-%s", worker->desc); } @@ -1374,7 +1374,7 @@ index cb81c7767b17..c047a647146e 100644 } } -@@ -4752,7 +4702,7 @@ static void unbind_workers(int cpu) +@@ -4755,7 +4705,7 @@ static void unbind_workers(int cpu) for_each_cpu_worker_pool(pool, cpu) { mutex_lock(&wq_pool_attach_mutex); @@ -1383,7 +1383,7 @@ index cb81c7767b17..c047a647146e 100644 /* * We've blocked all attach/detach operations. Make all workers -@@ -4766,7 +4716,7 @@ static void unbind_workers(int cpu) +@@ -4769,7 +4719,7 @@ static void unbind_workers(int cpu) pool->flags |= POOL_DISASSOCIATED; @@ -1392,7 +1392,7 @@ index cb81c7767b17..c047a647146e 100644 mutex_unlock(&wq_pool_attach_mutex); /* -@@ -4792,9 +4742,9 @@ static void unbind_workers(int cpu) +@@ -4795,9 +4745,9 @@ static void unbind_workers(int cpu) * worker blocking could lead to lengthy stalls. Kick off * unbound chain execution of currently pending work items. */ @@ -1404,7 +1404,7 @@ index cb81c7767b17..c047a647146e 100644 } } -@@ -4821,7 +4771,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4824,7 +4774,7 @@ static void rebind_workers(struct worker_pool *pool) WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask) < 0); @@ -1413,7 +1413,7 @@ index cb81c7767b17..c047a647146e 100644 pool->flags &= ~POOL_DISASSOCIATED; -@@ -4860,7 +4810,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4863,7 +4813,7 @@ static void rebind_workers(struct worker_pool *pool) WRITE_ONCE(worker->flags, worker_flags); } @@ -1422,7 +1422,7 @@ index cb81c7767b17..c047a647146e 100644 } /** -@@ -5319,7 +5269,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) +@@ -5326,7 +5276,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) lockdep_assert_held(&wq_pool_mutex); @@ -1431,7 +1431,7 @@ index cb81c7767b17..c047a647146e 100644 if (!attrs) return NULL; -@@ -5748,7 +5698,7 @@ static void __init wq_numa_init(void) +@@ -5755,7 +5705,7 @@ static void __init wq_numa_init(void) return; } @@ -1440,7 +1440,7 @@ index cb81c7767b17..c047a647146e 100644 BUG_ON(!wq_update_unbound_numa_attrs_buf); /* -@@ -5823,7 +5773,7 @@ int __init workqueue_init_early(void) +@@ -5830,7 +5780,7 @@ int __init workqueue_init_early(void) for (i = 0; i < NR_STD_WORKER_POOLS; i++) { struct workqueue_attrs *attrs; @@ -1449,7 +1449,7 @@ index cb81c7767b17..c047a647146e 100644 attrs->nice = std_nice[i]; unbound_std_wq_attrs[i] = attrs; -@@ -5832,7 +5782,7 @@ int __init workqueue_init_early(void) +@@ -5839,7 +5789,7 @@ int __init workqueue_init_early(void) * guaranteed by max_active which is enforced by pwqs. * Turn off NUMA so that dfl_pwq is used for all nodes. */ diff --git a/debian/patches-rt/0285-i2c-exynos5-Remove-IRQF_ONESHOT.patch b/debian/patches-rt/0285-i2c-exynos5-Remove-IRQF_ONESHOT.patch index 656441dba..8105a0518 100644 --- a/debian/patches-rt/0285-i2c-exynos5-Remove-IRQF_ONESHOT.patch +++ b/debian/patches-rt/0285-i2c-exynos5-Remove-IRQF_ONESHOT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 13 Aug 2019 12:30:12 +0200 -Subject: [PATCH 285/353] i2c: exynos5: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e4f0bc9902f8516a6a18918ebdea0cc946225762 +Subject: [PATCH 285/354] i2c: exynos5: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92b3710a41893b9fec5d7e30b30167e052b6f858 [ Upstream commit 4b217df0ab3f7910c96e42091cc7d9f221d05f01 ] diff --git a/debian/patches-rt/0286-i2c-hix5hd2-Remove-IRQF_ONESHOT.patch b/debian/patches-rt/0286-i2c-hix5hd2-Remove-IRQF_ONESHOT.patch index 1b56bc7d6..d72e96acf 100644 --- a/debian/patches-rt/0286-i2c-hix5hd2-Remove-IRQF_ONESHOT.patch +++ b/debian/patches-rt/0286-i2c-hix5hd2-Remove-IRQF_ONESHOT.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 13 Aug 2019 12:30:37 +0200 -Subject: [PATCH 286/353] i2c: hix5hd2: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cc1104b08361696b6b71dffd43e16583ce515fd5 +Subject: [PATCH 286/354] i2c: hix5hd2: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95604809c4c2d56015d7a04a775bc373be7bc1eb [ Upstream commit e88b481f3f86f11e3243e0808a830e5ca5782a9d ] diff --git a/debian/patches-rt/0287-sched-deadline-Ensure-inactive_timer-runs-in-hardirq.patch b/debian/patches-rt/0287-sched-deadline-Ensure-inactive_timer-runs-in-hardirq.patch index 0f3777794..394f4a487 100644 --- a/debian/patches-rt/0287-sched-deadline-Ensure-inactive_timer-runs-in-hardirq.patch +++ b/debian/patches-rt/0287-sched-deadline-Ensure-inactive_timer-runs-in-hardirq.patch @@ -1,8 +1,8 @@ From: Juri Lelli <juri.lelli@redhat.com> Date: Wed, 31 Jul 2019 12:37:15 +0200 -Subject: [PATCH 287/353] sched/deadline: Ensure inactive_timer runs in hardirq +Subject: [PATCH 287/354] sched/deadline: Ensure inactive_timer runs in hardirq context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=33b8449cf20c75ee255c7b492f6ae53c013e3def +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=015cef02b3a90264f060ee3459f1b0593f459110 [ Upstream commit ba94e7aed7405c58251b1380e6e7d73aa8284b41 ] diff --git a/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch b/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch index 1632d9893..14f0f2c88 100644 --- a/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch +++ b/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch @@ -1,8 +1,8 @@ From: Clark Williams <williams@redhat.com> Date: Mon, 15 Jul 2019 15:25:00 -0500 -Subject: [PATCH 288/353] thermal/x86_pkg_temp: make pkg_temp_lock a raw +Subject: [PATCH 288/354] thermal/x86_pkg_temp: make pkg_temp_lock a raw spinlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d9572955bd495cac1572c1d3bbc28b80c3f0999 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7b439f8ddef4bbd86bd6c6a92f6fa578afccd1a1 [ Upstream commit 8b03bb3ea7861b70b506199a69b1c8f81fe2d4d0 ] diff --git a/debian/patches-rt/0289-dma-buf-Use-seqlock_t-instread-disabling-preemption.patch b/debian/patches-rt/0289-dma-buf-Use-seqlock_t-instread-disabling-preemption.patch index 79c39bf9c..756b6880a 100644 --- a/debian/patches-rt/0289-dma-buf-Use-seqlock_t-instread-disabling-preemption.patch +++ b/debian/patches-rt/0289-dma-buf-Use-seqlock_t-instread-disabling-preemption.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 14 Aug 2019 16:38:43 +0200 -Subject: [PATCH 289/353] dma-buf: Use seqlock_t instread disabling preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f06b5fe097018422f3d5981c51e0355b5dd6cfc4 +Subject: [PATCH 289/354] dma-buf: Use seqlock_t instread disabling preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1c39223381cec7a342ce1f99ed7eeb049d4cd47 [ Upstream commit 240610aa31094f51f299f06eb8dae8d4cd8d4500 ] diff --git a/debian/patches-rt/0290-KVM-arm-arm64-Let-the-timer-expire-in-hardirq-contex.patch b/debian/patches-rt/0290-KVM-arm-arm64-Let-the-timer-expire-in-hardirq-contex.patch index 3bb0fbfc9..c8b1b5325 100644 --- a/debian/patches-rt/0290-KVM-arm-arm64-Let-the-timer-expire-in-hardirq-contex.patch +++ b/debian/patches-rt/0290-KVM-arm-arm64-Let-the-timer-expire-in-hardirq-contex.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 13 Aug 2019 14:29:41 +0200 -Subject: [PATCH 290/353] KVM: arm/arm64: Let the timer expire in hardirq +Subject: [PATCH 290/354] KVM: arm/arm64: Let the timer expire in hardirq context on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2b21d451eb954108eaafe77777e228684fe1a204 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=135c92672dc057f73fa6e86908082e6ae340554e [ Upstream commit 719cc080c914045a6e35787bf4dc3ba91cfd3efb ] diff --git a/debian/patches-rt/0291-x86-preempt-Check-preemption-level-before-looking-at.patch b/debian/patches-rt/0291-x86-preempt-Check-preemption-level-before-looking-at.patch index 81ad5f5cc..824286a8a 100644 --- a/debian/patches-rt/0291-x86-preempt-Check-preemption-level-before-looking-at.patch +++ b/debian/patches-rt/0291-x86-preempt-Check-preemption-level-before-looking-at.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 14 Aug 2019 17:08:58 +0200 -Subject: [PATCH 291/353] x86: preempt: Check preemption level before looking +Subject: [PATCH 291/354] x86: preempt: Check preemption level before looking at lazy-preempt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8cbc52c4edd1435f24f0aee500f2b44e6091b345 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=05b92de6612a8913b14e0f51a4a998fcfcf90d27 [ Upstream commit 19fc8557f2323c52b26561651ed4d51fc688a740 ] diff --git a/debian/patches-rt/0292-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch b/debian/patches-rt/0292-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch index c16df6892..36ca6b33f 100644 --- a/debian/patches-rt/0292-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch +++ b/debian/patches-rt/0292-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch @@ -1,8 +1,8 @@ From: Julien Grall <julien.grall@arm.com> Date: Wed, 21 Aug 2019 10:24:07 +0100 -Subject: [PATCH 292/353] hrtimer: Use READ_ONCE to access timer->base in +Subject: [PATCH 292/354] hrtimer: Use READ_ONCE to access timer->base in hrimer_grab_expiry_lock() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5817dd3ce58d48f4407ab82766339582745ff505 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=633223e872d06689128bafec90d4f2454a3218c9 [ Upstream commit 2c8fdbe7ef0ad06c1a326886c5954e117b5657d6 ] @@ -24,7 +24,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 92ee6cf49c24..a868444c6154 100644 +index 089c74ff0511..648e41adf4ac 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -959,7 +959,7 @@ EXPORT_SYMBOL_GPL(hrtimer_forward); diff --git a/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch b/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch index 67a06e013..bc74b61ed 100644 --- a/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch +++ b/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch @@ -1,8 +1,8 @@ From: Julien Grall <julien.grall@arm.com> Date: Wed, 21 Aug 2019 10:24:08 +0100 -Subject: [PATCH 293/353] hrtimer: Don't grab the expiry lock for non-soft +Subject: [PATCH 293/354] hrtimer: Don't grab the expiry lock for non-soft hrtimer -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=092ae9a94d427cc8e7f9785d080600083352ff51 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9ee4f927ee17ee9abcc7af060180675b20086060 [ Upstream commit fd420354bea2f57c11f3de191dffdeea76531e76 ] @@ -23,7 +23,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index a868444c6154..303e8cb2b52b 100644 +index 648e41adf4ac..834295861161 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -961,7 +961,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch b/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch index d4e68cff4..4e84053e8 100644 --- a/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch +++ b/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch @@ -1,8 +1,8 @@ From: Julien Grall <julien.grall@arm.com> Date: Wed, 21 Aug 2019 10:24:09 +0100 -Subject: [PATCH 294/353] hrtimer: Prevent using hrtimer_grab_expiry_lock() on +Subject: [PATCH 294/354] hrtimer: Prevent using hrtimer_grab_expiry_lock() on migration_base -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6152518bccba12b3bbdd47b5d5c4cdd56541609 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e353598442a0afb191f9b7779c632aa906882d1e [ Upstream commit cef1b87f98823af923a386f3f69149acb212d4a1 ] @@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 303e8cb2b52b..5a053bef18e7 100644 +index 834295861161..d643a1a7c06b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -961,7 +961,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch b/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch index 7dd4d0442..0501aefde 100644 --- a/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch +++ b/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 4 Sep 2019 16:55:27 +0200 -Subject: [PATCH 295/353] hrtimer: Add a missing bracket and hide +Subject: [PATCH 295/354] hrtimer: Add a missing bracket and hide `migration_base' on !SMP -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4d0aa6302835846430bf1cde91bb94ec6ec8987 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b7a0249ca4a351df0c66ba1cc3e12830d3c89e7 [ Upstream commit 47b6de0b7f22c28b40275aeede3993d807668c3b ] @@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 5a053bef18e7..3a5e258c243a 100644 +index d643a1a7c06b..67b91ab1c7e2 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -150,6 +150,11 @@ static struct hrtimer_cpu_base migration_cpu_base = { diff --git a/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch b/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch index bd957b6ab..e4c974706 100644 --- a/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch +++ b/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 16 Sep 2019 12:33:59 +0200 -Subject: [PATCH 296/353] posix-timers: Unlock expiry lock in the early return -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6786bf935fdb78423332e7a435b63a52809facde +Subject: [PATCH 296/354] posix-timers: Unlock expiry lock in the early return +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41718885273a82017896606e12cd8d23188cdb8d [ Upstream commit 356a2781375ec58521a9bc3f500488745990c242 ] diff --git a/debian/patches-rt/0297-sched-migrate_dis-enable-Use-sleeping_lock-to-annota.patch b/debian/patches-rt/0297-sched-migrate_dis-enable-Use-sleeping_lock-to-annota.patch index ccd295d1a..0d230fa20 100644 --- a/debian/patches-rt/0297-sched-migrate_dis-enable-Use-sleeping_lock-to-annota.patch +++ b/debian/patches-rt/0297-sched-migrate_dis-enable-Use-sleeping_lock-to-annota.patch @@ -1,11 +1,11 @@ From: Scott Wood <swood@redhat.com> Date: Tue, 24 Sep 2019 14:36:41 +0200 -Subject: [PATCH 297/353] =?UTF-8?q?sched:=20migrate=5Fdis/enable:=20Use=20?= +Subject: [PATCH 297/354] =?UTF-8?q?sched:=20migrate=5Fdis/enable:=20Use=20?= =?UTF-8?q?sleeping=5Flock=E2=80=A6()=20to=20annotate=20sleeping=20points?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b49a31f9d5d7fdda03f5bcb45ad967ef89f9821d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1a7c6b6fc4b40b5f8abbf40f75ba741feb4d95a [ Upstream commit 4230dd3824c3e1785504e6f757ce79a4b55651fa ] @@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 2 files changed, 5 insertions(+) diff --git a/kernel/cpu.c b/kernel/cpu.c -index 396394ebbc5b..4bf82665f28c 100644 +index 9547c5bcbbc4..e0b8387ac924 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -310,7 +310,9 @@ void pin_current_cpu(void) diff --git a/debian/patches-rt/0298-sched-__set_cpus_allowed_ptr-Check-cpus_mask-not-cpu.patch b/debian/patches-rt/0298-sched-__set_cpus_allowed_ptr-Check-cpus_mask-not-cpu.patch index f07e9bd54..74f6de3c6 100644 --- a/debian/patches-rt/0298-sched-__set_cpus_allowed_ptr-Check-cpus_mask-not-cpu.patch +++ b/debian/patches-rt/0298-sched-__set_cpus_allowed_ptr-Check-cpus_mask-not-cpu.patch @@ -1,8 +1,8 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 27 Jul 2019 00:56:32 -0500 -Subject: [PATCH 298/353] sched: __set_cpus_allowed_ptr: Check cpus_mask, not +Subject: [PATCH 298/354] sched: __set_cpus_allowed_ptr: Check cpus_mask, not cpus_ptr -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e8e6aa43a48f6597b211cf6f6b1642c21051eaf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b652417cdc333726e0b9c9e09fd6f3aa1d2f0c1 [ Upstream commit e5606fb7b042db634ed62b4dd733d62e050e468f ] diff --git a/debian/patches-rt/0299-sched-Remove-dead-__migrate_disabled-check.patch b/debian/patches-rt/0299-sched-Remove-dead-__migrate_disabled-check.patch index 131c65868..582212b03 100644 --- a/debian/patches-rt/0299-sched-Remove-dead-__migrate_disabled-check.patch +++ b/debian/patches-rt/0299-sched-Remove-dead-__migrate_disabled-check.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 27 Jul 2019 00:56:33 -0500 -Subject: [PATCH 299/353] sched: Remove dead __migrate_disabled() check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2beb0e09e6c79687ac5e46b7ab9466ad18b542f6 +Subject: [PATCH 299/354] sched: Remove dead __migrate_disabled() check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5cde8b3ae4d59d8eebe0d476017d50fa1cdf6a28 [ Upstream commit 14d9272d534ea91262e15db99443fc5995c7c016 ] diff --git a/debian/patches-rt/0300-sched-migrate-disable-Protect-cpus_ptr-with-lock.patch b/debian/patches-rt/0300-sched-migrate-disable-Protect-cpus_ptr-with-lock.patch index a77c8fa71..f4318df05 100644 --- a/debian/patches-rt/0300-sched-migrate-disable-Protect-cpus_ptr-with-lock.patch +++ b/debian/patches-rt/0300-sched-migrate-disable-Protect-cpus_ptr-with-lock.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 27 Jul 2019 00:56:34 -0500 -Subject: [PATCH 300/353] sched: migrate disable: Protect cpus_ptr with lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4eaf7716d710661a89298b3997982fcd46bd3736 +Subject: [PATCH 300/354] sched: migrate disable: Protect cpus_ptr with lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f3b8b37e45500cb5acedde9918c9596258397ab6 [ Upstream commit 27ee52a891ed2c7e2e2c8332ccae0de7c2674b09 ] diff --git a/debian/patches-rt/0301-lib-smp_processor_id-Don-t-use-cpumask_equal.patch b/debian/patches-rt/0301-lib-smp_processor_id-Don-t-use-cpumask_equal.patch index 241ea05fa..8e6114231 100644 --- a/debian/patches-rt/0301-lib-smp_processor_id-Don-t-use-cpumask_equal.patch +++ b/debian/patches-rt/0301-lib-smp_processor_id-Don-t-use-cpumask_equal.patch @@ -1,7 +1,7 @@ From: Waiman Long <longman@redhat.com> Date: Thu, 3 Oct 2019 16:36:08 -0400 -Subject: [PATCH 301/353] lib/smp_processor_id: Don't use cpumask_equal() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=79718592757dc1a6c28913770376a3027354b206 +Subject: [PATCH 301/354] lib/smp_processor_id: Don't use cpumask_equal() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aea3f526050f40b5e4d2b67a02cea91c6c23782a [ Upstream commit 659252061477862f45b79e1de169e6030f5c8918 ] diff --git a/debian/patches-rt/0302-futex-Make-the-futex_hash_bucket-spinlock_t-again-an.patch b/debian/patches-rt/0302-futex-Make-the-futex_hash_bucket-spinlock_t-again-an.patch index 69e64ecf0..832793727 100644 --- a/debian/patches-rt/0302-futex-Make-the-futex_hash_bucket-spinlock_t-again-an.patch +++ b/debian/patches-rt/0302-futex-Make-the-futex_hash_bucket-spinlock_t-again-an.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 7 Oct 2019 16:45:18 +0200 -Subject: [PATCH 302/353] futex: Make the futex_hash_bucket spinlock_t again +Subject: [PATCH 302/354] futex: Make the futex_hash_bucket spinlock_t again and bring back its old state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b3bea588f7b01159f2b0bcab282f896c81489d9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ea570f419f2a5741da44d1b3212b300e9a6061d [ Upstream commit 954ad80c23edfe71f4e8ce70b961eac884320c3a ] @@ -25,7 +25,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 3 files changed, 193 insertions(+), 103 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 2fc6bedb460e..81090f7a3ed9 100644 +index 5708382157c4..22bfcf109e31 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -243,7 +243,7 @@ struct futex_q { diff --git a/debian/patches-rt/0303-locking-rtmutex-Clean-pi_blocked_on-in-the-error-cas.patch b/debian/patches-rt/0303-locking-rtmutex-Clean-pi_blocked_on-in-the-error-cas.patch index ec76caba1..34c4fc44f 100644 --- a/debian/patches-rt/0303-locking-rtmutex-Clean-pi_blocked_on-in-the-error-cas.patch +++ b/debian/patches-rt/0303-locking-rtmutex-Clean-pi_blocked_on-in-the-error-cas.patch @@ -1,8 +1,8 @@ From: Peter Zijlstra <peterz@infradead.org> Date: Mon, 30 Sep 2019 18:15:44 +0200 -Subject: [PATCH 303/353] locking/rtmutex: Clean ->pi_blocked_on in the error +Subject: [PATCH 303/354] locking/rtmutex: Clean ->pi_blocked_on in the error case -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a109377bbb679cbd71529e00c9ae728d776b8485 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35dc50badae9c42b195097bfb4f713f3ecf7f258 [ Upstream commit 0be4ea6e3ce693101be0fbd55a0cc7ce238ab2eb ] diff --git a/debian/patches-rt/0304-lib-ubsan-Don-t-seralize-UBSAN-report.patch b/debian/patches-rt/0304-lib-ubsan-Don-t-seralize-UBSAN-report.patch index 9db2c1f50..4172a2ff2 100644 --- a/debian/patches-rt/0304-lib-ubsan-Don-t-seralize-UBSAN-report.patch +++ b/debian/patches-rt/0304-lib-ubsan-Don-t-seralize-UBSAN-report.patch @@ -1,7 +1,7 @@ From: Julien Grall <julien.grall@arm.com> Date: Fri, 20 Sep 2019 11:08:35 +0100 -Subject: [PATCH 304/353] lib/ubsan: Don't seralize UBSAN report -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ed4fc163a128fd089195be065a07314330b013a +Subject: [PATCH 304/354] lib/ubsan: Don't seralize UBSAN report +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6a6c566d780fd68e447ebd1b8f8e435778bf971b [ Upstream commit 4702c28ac777b27acb499cbd5e8e787ce1a7d82d ] diff --git a/debian/patches-rt/0305-kmemleak-Change-the-lock-of-kmemleak_object-to-raw_s.patch b/debian/patches-rt/0305-kmemleak-Change-the-lock-of-kmemleak_object-to-raw_s.patch index 425441d82..f61cd33ad 100644 --- a/debian/patches-rt/0305-kmemleak-Change-the-lock-of-kmemleak_object-to-raw_s.patch +++ b/debian/patches-rt/0305-kmemleak-Change-the-lock-of-kmemleak_object-to-raw_s.patch @@ -1,8 +1,8 @@ From: Liu Haitao <haitao.liu@windriver.com> Date: Fri, 27 Sep 2019 16:22:30 +0800 -Subject: [PATCH 305/353] kmemleak: Change the lock of kmemleak_object to +Subject: [PATCH 305/354] kmemleak: Change the lock of kmemleak_object to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=824ae2cb991ab667f8333f4863bb5e9bf3b9552c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aaba0ac740352bd7398131c2ccf43b42f5ead3e9 [ Upstream commit 217847f57119b5fdd377bfa3d344613ddb98d9fc ] diff --git a/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch b/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch index 265fdd120..9c7e119b2 100644 --- a/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch +++ b/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 12 Oct 2019 01:52:12 -0500 -Subject: [PATCH 306/353] sched: migrate_enable: Use select_fallback_rq() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d5eebc90b5a02e2cbf415e6b056bd92cee740473 +Subject: [PATCH 306/354] sched: migrate_enable: Use select_fallback_rq() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e25daf6bebeeaf1c3064fae99e0f9aa0b68c8937 [ Upstream commit adfa969d4cfcc995a9d866020124e50f1827d2d1 ] diff --git a/debian/patches-rt/0307-sched-Lazy-migrate_disable-processing.patch b/debian/patches-rt/0307-sched-Lazy-migrate_disable-processing.patch index 83d5fabda..6608745b3 100644 --- a/debian/patches-rt/0307-sched-Lazy-migrate_disable-processing.patch +++ b/debian/patches-rt/0307-sched-Lazy-migrate_disable-processing.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 12 Oct 2019 01:52:13 -0500 -Subject: [PATCH 307/353] sched: Lazy migrate_disable processing -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e59f409c017d0df927609e4fe742e7db56c48fe5 +Subject: [PATCH 307/354] sched: Lazy migrate_disable processing +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56d627e63870618c3968cb3a77b0970003cebae4 [ Upstream commit 425c5b38779a860062aa62219dc920d374b13c17 ] @@ -44,7 +44,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 7 files changed, 129 insertions(+), 182 deletions(-) diff --git a/include/linux/cpu.h b/include/linux/cpu.h -index bddccdcd00ba..7f41ac9cf2ad 100644 +index 90985dbce8f4..0ce8ca019734 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -124,8 +124,6 @@ extern void cpu_hotplug_disable(void); @@ -120,7 +120,7 @@ index 634becebd713..45b84137c4b3 100644 .active_mm = &init_mm, .restart_block = { diff --git a/kernel/cpu.c b/kernel/cpu.c -index 4bf82665f28c..f603ea80af2e 100644 +index e0b8387ac924..00c78fb73172 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -78,11 +78,6 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = { diff --git a/debian/patches-rt/0308-sched-migrate_enable-Use-stop_one_cpu_nowait.patch b/debian/patches-rt/0308-sched-migrate_enable-Use-stop_one_cpu_nowait.patch index 7eca722a0..711464fbe 100644 --- a/debian/patches-rt/0308-sched-migrate_enable-Use-stop_one_cpu_nowait.patch +++ b/debian/patches-rt/0308-sched-migrate_enable-Use-stop_one_cpu_nowait.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Sat, 12 Oct 2019 01:52:14 -0500 -Subject: [PATCH 308/353] sched: migrate_enable: Use stop_one_cpu_nowait() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9a569a7f7c153ae5367090acad55faedba51cf23 +Subject: [PATCH 308/354] sched: migrate_enable: Use stop_one_cpu_nowait() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f944f2e36c575574ee90c945facabcae11978d13 [ Upstream commit 6b39a1fa8c53cae08dc03afdae193b7d3a78a173 ] diff --git a/debian/patches-rt/0309-Revert-ARM-Initialize-split-page-table-locks-for-vec.patch b/debian/patches-rt/0309-Revert-ARM-Initialize-split-page-table-locks-for-vec.patch index 24fad7ff6..02ddd2cd3 100644 --- a/debian/patches-rt/0309-Revert-ARM-Initialize-split-page-table-locks-for-vec.patch +++ b/debian/patches-rt/0309-Revert-ARM-Initialize-split-page-table-locks-for-vec.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 18 Oct 2019 13:04:15 +0200 -Subject: [PATCH 309/353] Revert "ARM: Initialize split page table locks for +Subject: [PATCH 309/354] Revert "ARM: Initialize split page table locks for vector page" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a423ed25b55ccf69e009630f23c3c7812d250a7b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db376ab7528fe056f8223e16b263b5385b1616ef [ Upstream commit 247074c44d8c3e619dfde6404a52295d8d671d38 ] diff --git a/debian/patches-rt/0310-locking-Make-spinlock_t-and-rwlock_t-a-RCU-section-o.patch b/debian/patches-rt/0310-locking-Make-spinlock_t-and-rwlock_t-a-RCU-section-o.patch index cfb9000e5..2eda2002f 100644 --- a/debian/patches-rt/0310-locking-Make-spinlock_t-and-rwlock_t-a-RCU-section-o.patch +++ b/debian/patches-rt/0310-locking-Make-spinlock_t-and-rwlock_t-a-RCU-section-o.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 19 Nov 2019 09:25:04 +0100 -Subject: [PATCH 310/353] locking: Make spinlock_t and rwlock_t a RCU section +Subject: [PATCH 310/354] locking: Make spinlock_t and rwlock_t a RCU section on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=516e5a915abdd48d23f01890a9ddd9b495a2524a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=55715717eaf0d2bb6cebfae536fc392194803d08 [ Upstream commit 84440022a0e1c8c936d61f8f97593674a295d409 ] diff --git a/debian/patches-rt/0311-sched-core-migrate_enable-must-access-takedown_cpu_t.patch b/debian/patches-rt/0311-sched-core-migrate_enable-must-access-takedown_cpu_t.patch index ec57af7e9..e15028b2a 100644 --- a/debian/patches-rt/0311-sched-core-migrate_enable-must-access-takedown_cpu_t.patch +++ b/debian/patches-rt/0311-sched-core-migrate_enable-must-access-takedown_cpu_t.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 29 Nov 2019 17:24:55 +0100 -Subject: [PATCH 311/353] sched/core: migrate_enable() must access +Subject: [PATCH 311/354] sched/core: migrate_enable() must access takedown_cpu_task on !HOTPLUG_CPU -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=375d4a2f36224a330bd486396a51a8a469047e76 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93492d4e5196d37f1ea9a204ef6000b122fe8c31 [ Upstream commit a61d1977f692e46bad99a100f264981ba08cb4bd ] @@ -20,7 +20,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 2 files changed, 4 insertions(+) diff --git a/kernel/cpu.c b/kernel/cpu.c -index f603ea80af2e..57bd32c83c9e 100644 +index 00c78fb73172..4b0c5788a369 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -913,7 +913,9 @@ static int take_cpu_down(void *_param) diff --git a/debian/patches-rt/0312-lib-smp_processor_id-Adjust-check_preemption_disable.patch b/debian/patches-rt/0312-lib-smp_processor_id-Adjust-check_preemption_disable.patch index 6c351ef5a..7d6f79de5 100644 --- a/debian/patches-rt/0312-lib-smp_processor_id-Adjust-check_preemption_disable.patch +++ b/debian/patches-rt/0312-lib-smp_processor_id-Adjust-check_preemption_disable.patch @@ -1,8 +1,8 @@ From: Daniel Wagner <dwagner@suse.de> Date: Mon, 16 Dec 2019 16:15:57 +0100 -Subject: [PATCH 312/353] lib/smp_processor_id: Adjust +Subject: [PATCH 312/354] lib/smp_processor_id: Adjust check_preemption_disabled() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b193fe7dfc2b15576e3306658dbaa48f908c32c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=321a8a33a1446356caf5c0d33688d9ee1e7476a7 [ Upstream commit af3c1c5fdf177870fb5e6e16b24e374696ab28f5 ] diff --git a/debian/patches-rt/0313-sched-migrate_enable-Busy-loop-until-the-migration-r.patch b/debian/patches-rt/0313-sched-migrate_enable-Busy-loop-until-the-migration-r.patch index 2acb322cd..86b8b4560 100644 --- a/debian/patches-rt/0313-sched-migrate_enable-Busy-loop-until-the-migration-r.patch +++ b/debian/patches-rt/0313-sched-migrate_enable-Busy-loop-until-the-migration-r.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 12 Dec 2019 10:53:59 +0100 -Subject: [PATCH 313/353] sched: migrate_enable: Busy loop until the migration +Subject: [PATCH 313/354] sched: migrate_enable: Busy loop until the migration request is completed -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9b679103886ae636c06f0709528b4679f910594 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=beff8b5fccdf27e1461b86857ec338375515653f [ Upstream commit 140d7f54a5fff02898d2ca9802b39548bf7455f1 ] diff --git a/debian/patches-rt/0314-userfaultfd-Use-a-seqlock-instead-of-seqcount.patch b/debian/patches-rt/0314-userfaultfd-Use-a-seqlock-instead-of-seqcount.patch index b77ed53fc..a175d44a0 100644 --- a/debian/patches-rt/0314-userfaultfd-Use-a-seqlock-instead-of-seqcount.patch +++ b/debian/patches-rt/0314-userfaultfd-Use-a-seqlock-instead-of-seqcount.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 18 Dec 2019 12:25:09 +0100 -Subject: [PATCH 314/353] userfaultfd: Use a seqlock instead of seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=221d4d744e0fa4cbf6cbdfa93f36418495297c42 +Subject: [PATCH 314/354] userfaultfd: Use a seqlock instead of seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a32132970bbcaf578458944b83a17a8083f6440b [ Upstream commit dc952a564d02997330654be9628bbe97ba2a05d3 ] diff --git a/debian/patches-rt/0315-sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch b/debian/patches-rt/0315-sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch index 0de7d0707..109b65eec 100644 --- a/debian/patches-rt/0315-sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch +++ b/debian/patches-rt/0315-sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Fri, 24 Jan 2020 06:11:46 -0500 -Subject: [PATCH 315/353] sched: migrate_enable: Use per-cpu cpu_stop_work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0a6804b47754240ecad3efe8bd2aafa0abf6157 +Subject: [PATCH 315/354] sched: migrate_enable: Use per-cpu cpu_stop_work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c26519915b999d68b2d9a97722e58ff0bfa807f2 [ Upstream commit 2dcd94b443c5dcbc20281666321b7f025f9cc85c ] diff --git a/debian/patches-rt/0316-sched-migrate_enable-Remove-__schedule-call.patch b/debian/patches-rt/0316-sched-migrate_enable-Remove-__schedule-call.patch index aba027930..c482f3dcd 100644 --- a/debian/patches-rt/0316-sched-migrate_enable-Remove-__schedule-call.patch +++ b/debian/patches-rt/0316-sched-migrate_enable-Remove-__schedule-call.patch @@ -1,7 +1,7 @@ From: Scott Wood <swood@redhat.com> Date: Fri, 24 Jan 2020 06:11:47 -0500 -Subject: [PATCH 316/353] sched: migrate_enable: Remove __schedule() call -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dcbbd0ba34f84adb2b09fd1ee03c288bedb5e1af +Subject: [PATCH 316/354] sched: migrate_enable: Remove __schedule() call +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c61a1d147ace3541a44386351841dc46be6ba897 [ Upstream commit b8162e61e9a33bd1de6452eb838fbf50a93ddd9a ] diff --git a/debian/patches-rt/0317-mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch b/debian/patches-rt/0317-mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch index bdb5d4a85..21d7e9868 100644 --- a/debian/patches-rt/0317-mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch +++ b/debian/patches-rt/0317-mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch @@ -1,8 +1,8 @@ From: Matt Fleming <matt@codeblueprint.co.uk> Date: Sun, 26 Jan 2020 21:19:45 +0000 -Subject: [PATCH 317/353] mm/memcontrol: Move misplaced +Subject: [PATCH 317/354] mm/memcontrol: Move misplaced local_unlock_irqrestore() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed8021a659bdfe9a30303ccb240b40eb36771a34 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb31243590cf5862da1af6d51dfc5c77d8414696 [ Upstream commit 071a1d6a6e14d0dec240a8c67b425140d7f92f6a ] @@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index c6a58923da63..692cc519232d 100644 +index 9c7d443a394c..c14cfb0b9474 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -6552,10 +6552,10 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) diff --git a/debian/patches-rt/0318-locallock-Include-header-for-the-current-macro.patch b/debian/patches-rt/0318-locallock-Include-header-for-the-current-macro.patch index be1ff1e39..78bca23ed 100644 --- a/debian/patches-rt/0318-locallock-Include-header-for-the-current-macro.patch +++ b/debian/patches-rt/0318-locallock-Include-header-for-the-current-macro.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 4 Feb 2020 13:29:50 +0100 -Subject: [PATCH 318/353] locallock: Include header for the `current' macro -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a699b8aaf4126a54c3e112e47b036ee8148c84fd +Subject: [PATCH 318/354] locallock: Include header for the `current' macro +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c8d994b76e512e18e9adddb072421ae82ff3c7e [ Upstream commit e693075a5fd852043fa8d2b0467e078d9e5cb782 ] diff --git a/debian/patches-rt/0319-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch b/debian/patches-rt/0319-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch index 885be9b8a..e5c239b54 100644 --- a/debian/patches-rt/0319-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch +++ b/debian/patches-rt/0319-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Feb 2020 18:57:11 +0100 -Subject: [PATCH 319/353] drm/vmwgfx: Drop preempt_disable() in +Subject: [PATCH 319/354] drm/vmwgfx: Drop preempt_disable() in vmw_fifo_ping_host() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a787c3baf377eff975557e64faa98ca20dc393de +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6f457134aeff747dd446a6a0187eebf19cd71db [ Upstream commit b901491e7b9b7a676818d84e482b69be72fc142f ] diff --git a/debian/patches-rt/0320-tracing-make-preempt_lazy-and-migrate_disable-counte.patch b/debian/patches-rt/0320-tracing-make-preempt_lazy-and-migrate_disable-counte.patch index 2037ca514..285bfb392 100644 --- a/debian/patches-rt/0320-tracing-make-preempt_lazy-and-migrate_disable-counte.patch +++ b/debian/patches-rt/0320-tracing-make-preempt_lazy-and-migrate_disable-counte.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Feb 2020 18:15:15 +0100 -Subject: [PATCH 320/353] tracing: make preempt_lazy and migrate_disable +Subject: [PATCH 320/354] tracing: make preempt_lazy and migrate_disable counter smaller -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8777fd9207cf67d412307c122667798803ce279 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c8c60bb96fd330de0cc50ab97e90bd0144265fc [ Upstream commit dd430bf5ecb40f9a89679c85868826475d71de54 ] @@ -22,7 +22,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 72864a11cec0..e26a85c1b7ba 100644 +index 61011ac41b41..98e59711a391 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -62,8 +62,7 @@ struct trace_entry { @@ -36,7 +36,7 @@ index 72864a11cec0..e26a85c1b7ba 100644 }; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index ddda660b84f9..91df34a11341 100644 +index b13fc846d2b2..fc5c032d4b66 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -189,8 +189,8 @@ static int trace_define_common_fields(void) diff --git a/debian/patches-rt/0321-lib-ubsan-Remove-flags-parameter-from-calls-to-ubsan.patch b/debian/patches-rt/0321-lib-ubsan-Remove-flags-parameter-from-calls-to-ubsan.patch index c9aea148d..ce2caaf06 100644 --- a/debian/patches-rt/0321-lib-ubsan-Remove-flags-parameter-from-calls-to-ubsan.patch +++ b/debian/patches-rt/0321-lib-ubsan-Remove-flags-parameter-from-calls-to-ubsan.patch @@ -1,8 +1,8 @@ From: Tiejun Chen <tiejunc@vmware.com> Date: Mon, 30 Mar 2020 18:45:23 -0400 -Subject: [PATCH 321/353] lib/ubsan: Remove flags parameter from calls to +Subject: [PATCH 321/354] lib/ubsan: Remove flags parameter from calls to ubsan_prologue() and ubsan_epilogue() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=219d304f02bbff8a65f6b38d0d10c6c8d927c59a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ec7f8239df50fde154033d2f88eeea08f3327c1 Fails to build with CONFIG_UBSAN=y diff --git a/debian/patches-rt/0322-irq_work-Fix-checking-of-IRQ_WORK_LAZY-flag-set-on-n.patch b/debian/patches-rt/0322-irq_work-Fix-checking-of-IRQ_WORK_LAZY-flag-set-on-n.patch index 2a6b3f344..65f27656d 100644 --- a/debian/patches-rt/0322-irq_work-Fix-checking-of-IRQ_WORK_LAZY-flag-set-on-n.patch +++ b/debian/patches-rt/0322-irq_work-Fix-checking-of-IRQ_WORK_LAZY-flag-set-on-n.patch @@ -1,8 +1,8 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> Date: Sun, 22 Mar 2020 00:00:28 +0100 -Subject: [PATCH 322/353] irq_work: Fix checking of IRQ_WORK_LAZY flag set on +Subject: [PATCH 322/354] irq_work: Fix checking of IRQ_WORK_LAZY flag set on non PREEMPT_RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=50eb3f852f4931603f68d0fc6893082686f63e78 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b15d7241db677b8819e86d3268c2c7a2344202c2 When CONFIG_PREEMPT_RT_FULL is not set, some of the checks for using lazy_list are not properly made as the IRQ_WORK_LAZY is not checked. There's diff --git a/debian/patches-rt/0323-tasklet-Address-a-race-resulting-in-double-enqueue.patch b/debian/patches-rt/0323-tasklet-Address-a-race-resulting-in-double-enqueue.patch index aea3373e7..cd6fd0c46 100644 --- a/debian/patches-rt/0323-tasklet-Address-a-race-resulting-in-double-enqueue.patch +++ b/debian/patches-rt/0323-tasklet-Address-a-race-resulting-in-double-enqueue.patch @@ -1,7 +1,7 @@ From: Zhang Xiao <xiao.zhang@windriver.com> Date: Tue, 17 Mar 2020 12:47:43 +0100 -Subject: [PATCH 323/353] tasklet: Address a race resulting in double-enqueue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea8e37e3c5f3c8e0c22c0e1b35c43e7158d0bc77 +Subject: [PATCH 323/354] tasklet: Address a race resulting in double-enqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5855b2dbcc0f544e60f173ba5969ac265c6a3ec7 The kernel bugzilla has the following race condition reported: diff --git a/debian/patches-rt/0324-hrtimer-fix-logic-for-when-grabbing-softirq_expiry_l.patch b/debian/patches-rt/0324-hrtimer-fix-logic-for-when-grabbing-softirq_expiry_l.patch index 52c96be18..dbfbae407 100644 --- a/debian/patches-rt/0324-hrtimer-fix-logic-for-when-grabbing-softirq_expiry_l.patch +++ b/debian/patches-rt/0324-hrtimer-fix-logic-for-when-grabbing-softirq_expiry_l.patch @@ -1,8 +1,8 @@ From: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Date: Tue, 28 Apr 2020 16:40:26 +0200 -Subject: [PATCH 324/353] hrtimer: fix logic for when grabbing +Subject: [PATCH 324/354] hrtimer: fix logic for when grabbing softirq_expiry_lock can be elided -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6659590de622d7f415b973112a6b2523d18d92ce +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6b5a96a321a92a81eb95e9eb43941abd48984a8 Commit @@ -32,7 +32,7 @@ Signed-off-by: Tom Zanussi <zanussi@kernel.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 3a5e258c243a..a522cebdaa21 100644 +index 67b91ab1c7e2..59a754881976 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -971,7 +971,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch b/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch index 58036225a..a1d601502 100644 --- a/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch +++ b/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 16 Apr 2020 12:42:15 +0200 -Subject: [PATCH 325/353] fs/dcache: Include swait.h header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=89692e5769f533ce4a925ada1420f709e388b9dd +Subject: [PATCH 325/354] fs/dcache: Include swait.h header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4b99c8fbc72131d81b1e1e6d59e4459d04c75b88 [ Upstream commit 279f90ddf53cd6bd3c203fbbf488d642ea2603de ] @@ -19,7 +19,7 @@ Signed-off-by: Tom Zanussi <zanussi@kernel.org> 1 file changed, 1 insertion(+) diff --git a/fs/proc/base.c b/fs/proc/base.c -index accc230079bb..8806344af241 100644 +index 26334fa56e18..7ccc9115a722 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -95,6 +95,7 @@ diff --git a/debian/patches-rt/0326-mm-slub-Always-flush-the-delayed-empty-slubs-in-flus.patch b/debian/patches-rt/0326-mm-slub-Always-flush-the-delayed-empty-slubs-in-flus.patch index 9811dfe0c..47cedc77c 100644 --- a/debian/patches-rt/0326-mm-slub-Always-flush-the-delayed-empty-slubs-in-flus.patch +++ b/debian/patches-rt/0326-mm-slub-Always-flush-the-delayed-empty-slubs-in-flus.patch @@ -1,8 +1,8 @@ From: Kevin Hao <haokexin@gmail.com> Date: Mon, 4 May 2020 11:34:07 +0800 -Subject: [PATCH 326/353] mm: slub: Always flush the delayed empty slubs in +Subject: [PATCH 326/354] mm: slub: Always flush the delayed empty slubs in flush_all() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b445fe16bd98d9edf5f1d4f1c822149fa84f649 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a1c31a76c976c40a53e30bbedeea791df963842 [ Upstream commit 23a2c31b19e99beaf5107071b0f32a596202cdae ] @@ -45,7 +45,7 @@ Signed-off-by: Tom Zanussi <zanussi@kernel.org> 1 file changed, 3 deletions(-) diff --git a/mm/slub.c b/mm/slub.c -index 197bab70a05d..d16d390df21e 100644 +index eb0107907043..10378efbaba2 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2375,9 +2375,6 @@ static void flush_all(struct kmem_cache *s) diff --git a/debian/patches-rt/0327-tasklet-Fix-UP-case-for-tasklet-CHAINED-state.patch b/debian/patches-rt/0327-tasklet-Fix-UP-case-for-tasklet-CHAINED-state.patch index eec172526..8007deb9e 100644 --- a/debian/patches-rt/0327-tasklet-Fix-UP-case-for-tasklet-CHAINED-state.patch +++ b/debian/patches-rt/0327-tasklet-Fix-UP-case-for-tasklet-CHAINED-state.patch @@ -1,7 +1,7 @@ From: Tom Zanussi <zanussi@kernel.org> Date: Tue, 9 Jun 2020 11:04:08 -0500 -Subject: [PATCH 327/353] tasklet: Fix UP case for tasklet CHAINED state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=73881f36e14be59b92716efa0b760ccadfd3d80a +Subject: [PATCH 327/354] tasklet: Fix UP case for tasklet CHAINED state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34e5c6d5ef4573cc2cff33ef455565bb9dc1ec45 commit 62d0a2a30cd0 (tasklet: Address a race resulting in double-enqueue) addresses a problem that can result in a tasklet being diff --git a/debian/patches-rt/0328-signal-Prevent-double-free-of-user-struct.patch b/debian/patches-rt/0328-signal-Prevent-double-free-of-user-struct.patch index 8459155a8..41b88055b 100644 --- a/debian/patches-rt/0328-signal-Prevent-double-free-of-user-struct.patch +++ b/debian/patches-rt/0328-signal-Prevent-double-free-of-user-struct.patch @@ -1,7 +1,7 @@ From: Matt Fleming <matt@codeblueprint.co.uk> Date: Tue, 7 Apr 2020 10:54:13 +0100 -Subject: [PATCH 328/353] signal: Prevent double-free of user struct -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cddd4506f6c3f229f53fe39a335aa71759afdac0 +Subject: [PATCH 328/354] signal: Prevent double-free of user struct +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0043fb759d35265f1fdf30825785457731cdbfad [ Upsteam commit 9567db2ebe566a93485e1a27d8759969d0002d7a ] diff --git a/debian/patches-rt/0329-Bluetooth-Acquire-sk_lock.slock-without-disabling-in.patch b/debian/patches-rt/0329-Bluetooth-Acquire-sk_lock.slock-without-disabling-in.patch index 34d2b4506..55a520dce 100644 --- a/debian/patches-rt/0329-Bluetooth-Acquire-sk_lock.slock-without-disabling-in.patch +++ b/debian/patches-rt/0329-Bluetooth-Acquire-sk_lock.slock-without-disabling-in.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 28 May 2020 14:35:12 +0200 -Subject: [PATCH 329/353] Bluetooth: Acquire sk_lock.slock without disabling +Subject: [PATCH 329/354] Bluetooth: Acquire sk_lock.slock without disabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38d73bc2a2c03859f6a80ca126c7b767ab88bd17 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5cc1511702f99012a5afff76934a2c4fd42724c0 [ Upstream commit e6da0edc24eecef2f6964d92fa9044e1821deace ] diff --git a/debian/patches-rt/0330-net-phy-fixed_phy-Remove-unused-seqcount.patch b/debian/patches-rt/0330-net-phy-fixed_phy-Remove-unused-seqcount.patch index 7c5730f91..7a74bfe40 100644 --- a/debian/patches-rt/0330-net-phy-fixed_phy-Remove-unused-seqcount.patch +++ b/debian/patches-rt/0330-net-phy-fixed_phy-Remove-unused-seqcount.patch @@ -1,7 +1,7 @@ From: "Ahmed S. Darwish" <a.darwish@linutronix.de> Date: Wed, 10 Jun 2020 12:53:00 +0200 -Subject: [PATCH 330/353] net: phy: fixed_phy: Remove unused seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c70e959108784a6bb33739d00f5a2006aeadb918 +Subject: [PATCH 330/354] net: phy: fixed_phy: Remove unused seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6d45476559686ca999d7ab782c8b2ef05dc7d04 [ Upstream commit 6554eac9ef2bd1c968886b31cc7266b49258a463 ] diff --git a/debian/patches-rt/0331-net-xfrm-fix-compress-vs-decompress-serialization.patch b/debian/patches-rt/0331-net-xfrm-fix-compress-vs-decompress-serialization.patch index 9a3f6226f..9a4bc40f9 100644 --- a/debian/patches-rt/0331-net-xfrm-fix-compress-vs-decompress-serialization.patch +++ b/debian/patches-rt/0331-net-xfrm-fix-compress-vs-decompress-serialization.patch @@ -1,7 +1,7 @@ From: Davidlohr Bueso <dave@stgolabs.net> Date: Tue, 18 Aug 2020 09:20:53 -0700 -Subject: [PATCH 331/353] net: xfrm: fix compress vs decompress serialization -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d8c3fecb2bb207af061cd67523dbd5f4dd4b1568 +Subject: [PATCH 331/354] net: xfrm: fix compress vs decompress serialization +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45a5f019e2ee5a29f1c05f5614a5047f29353caf A crash was seen in xfrm when running ltp's 'tcp4_ipsec06' stresser on v4.x based RT kernels. diff --git a/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch b/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch index 4aeee1f66..02a356499 100644 --- a/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch +++ b/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 28 Oct 2020 18:15:32 +0100 -Subject: [PATCH 332/353] mm/memcontrol: Disable preemption in +Subject: [PATCH 332/354] mm/memcontrol: Disable preemption in __mod_memcg_lruvec_state() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2ccf8a5b5c9a75d1b9815c53f9c64266084f366 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e4562549c0b4a9e6b27d7bf88c6a9a1134232a9a [ Upstream commit 74858f0d38a8d3c069a0745ff53ae084c8e7cabb ] diff --git a/debian/patches-rt/0333-ptrace-fix-ptrace_unfreeze_traced-race-with-rt-lock.patch b/debian/patches-rt/0333-ptrace-fix-ptrace_unfreeze_traced-race-with-rt-lock.patch index d03ccd768..010243186 100644 --- a/debian/patches-rt/0333-ptrace-fix-ptrace_unfreeze_traced-race-with-rt-lock.patch +++ b/debian/patches-rt/0333-ptrace-fix-ptrace_unfreeze_traced-race-with-rt-lock.patch @@ -1,8 +1,8 @@ From: Oleg Nesterov <oleg@redhat.com> Date: Tue, 3 Nov 2020 12:39:01 +0100 -Subject: [PATCH 333/353] ptrace: fix ptrace_unfreeze_traced() race with +Subject: [PATCH 333/354] ptrace: fix ptrace_unfreeze_traced() race with rt-lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d2b2d216c3757a65a5eb1319c52bbda77c82356 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ecd4f5ea6a952939d8312791205efb91f4a4c0e7 [ Upstream commit 0fdc91971b34cf6857b4cfd8c322ae936cfc189b ] diff --git a/debian/patches-rt/0334-mm-slub-Don-t-resize-the-location-tracking-cache-on-.patch b/debian/patches-rt/0334-mm-slub-Don-t-resize-the-location-tracking-cache-on-.patch index 9e4166063..72bd87225 100644 --- a/debian/patches-rt/0334-mm-slub-Don-t-resize-the-location-tracking-cache-on-.patch +++ b/debian/patches-rt/0334-mm-slub-Don-t-resize-the-location-tracking-cache-on-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 26 Feb 2021 17:26:04 +0100 -Subject: [PATCH 334/353] mm: slub: Don't resize the location tracking cache on +Subject: [PATCH 334/354] mm: slub: Don't resize the location tracking cache on PREEMPT_RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ee1d963b8014a9e47ac550d50830c7b3f9e183eb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=049825a4a253ca3adcad44ba5821f8c31146466f The location tracking cache has a size of a page and is resized if its current size is too small. @@ -19,7 +19,7 @@ Signed-off-by: Clark Williams <williams@redhat.com> 1 file changed, 3 insertions(+) diff --git a/mm/slub.c b/mm/slub.c -index d16d390df21e..869a3be27980 100644 +index 10378efbaba2..f0c0aa5f2688 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -4591,6 +4591,9 @@ static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags) diff --git a/debian/patches-rt/0335-locking-rwsem_rt-Add-__down_read_interruptible.patch b/debian/patches-rt/0335-locking-rwsem_rt-Add-__down_read_interruptible.patch index 21eccadc2..cb15f208e 100644 --- a/debian/patches-rt/0335-locking-rwsem_rt-Add-__down_read_interruptible.patch +++ b/debian/patches-rt/0335-locking-rwsem_rt-Add-__down_read_interruptible.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 19 Jan 2021 18:54:33 +0100 -Subject: [PATCH 335/353] locking/rwsem_rt: Add __down_read_interruptible() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e17b509364cf1b4d4e8adf01a5b64e986db7ad2 +Subject: [PATCH 335/354] locking/rwsem_rt: Add __down_read_interruptible() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ce30ad373ef28e21f51911a6fc0ba4b05e5b46c The stable backported a patch which adds __down_read_interruptible() for the generic rwsem implementation. diff --git a/debian/patches-rt/0336-locking-rwsem-rt-Remove-might_sleep-in-__up_read.patch b/debian/patches-rt/0336-locking-rwsem-rt-Remove-might_sleep-in-__up_read.patch index a2ca4849d..5c6208cbc 100644 --- a/debian/patches-rt/0336-locking-rwsem-rt-Remove-might_sleep-in-__up_read.patch +++ b/debian/patches-rt/0336-locking-rwsem-rt-Remove-might_sleep-in-__up_read.patch @@ -1,7 +1,7 @@ From: Andrew Halaney <ahalaney@redhat.com> Date: Tue, 6 Apr 2021 17:19:52 -0500 -Subject: [PATCH 336/353] locking/rwsem-rt: Remove might_sleep() in __up_read() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a677d98bed32e05401274cf48d9e8c762b0d8280 +Subject: [PATCH 336/354] locking/rwsem-rt: Remove might_sleep() in __up_read() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a8717d24e00c14302e860515a623aafe2f1284b4 There's no chance of sleeping here, the reader is giving up the lock and possibly waking up the writer who is waiting on it. diff --git a/debian/patches-rt/0337-fscache-fix-initialisation-of-cookie-hash-table-raw-.patch b/debian/patches-rt/0337-fscache-fix-initialisation-of-cookie-hash-table-raw-.patch index 9dc2e995b..08e69333a 100644 --- a/debian/patches-rt/0337-fscache-fix-initialisation-of-cookie-hash-table-raw-.patch +++ b/debian/patches-rt/0337-fscache-fix-initialisation-of-cookie-hash-table-raw-.patch @@ -1,8 +1,8 @@ From: Gregor Beck <gbeck@esigma-technology.com> Date: Fri, 3 Sep 2021 14:19:11 +0200 -Subject: [PATCH 337/353] fscache: fix initialisation of cookie hash table raw +Subject: [PATCH 337/354] fscache: fix initialisation of cookie hash table raw spinlocks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e94615d52b66ddd8c3a6d3e0117137daf5ee7b21 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80b208b075589fc2eaad9f86e735c248b34a65b6 The original patch, 602660600bcd ("fscache: initialize cookie hash table raw spinlocks"), subtracted 1 from the shift and so still left diff --git a/debian/patches-rt/0338-rt-PREEMPT_RT-safety-net-for-backported-patches.patch b/debian/patches-rt/0338-rt-PREEMPT_RT-safety-net-for-backported-patches.patch index 914daf15f..229890e08 100644 --- a/debian/patches-rt/0338-rt-PREEMPT_RT-safety-net-for-backported-patches.patch +++ b/debian/patches-rt/0338-rt-PREEMPT_RT-safety-net-for-backported-patches.patch @@ -1,7 +1,7 @@ From: Clark Williams <clark.williams@gmail.com> Date: Sun, 30 Jan 2022 15:46:27 -0600 -Subject: [PATCH 338/353] rt: PREEMPT_RT safety net for backported patches -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb8f7f5be98adee5f754c337967de9684afc1ab6 +Subject: [PATCH 338/354] rt: PREEMPT_RT safety net for backported patches +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be2ee0a6206e6b69bac9ad5bfbff2ec493bc97e7 While doing some 4.19-rt cleanup work, I stumbled across the fact that parts of two backported patches were dependent on CONFIG_PREEMPT_RT, rather than diff --git a/debian/patches-rt/0339-net-Add-missing-xmit_lock_owner-hunks.patch b/debian/patches-rt/0339-net-Add-missing-xmit_lock_owner-hunks.patch index cb88391ac..b556a94dd 100644 --- a/debian/patches-rt/0339-net-Add-missing-xmit_lock_owner-hunks.patch +++ b/debian/patches-rt/0339-net-Add-missing-xmit_lock_owner-hunks.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Wed, 22 Dec 2021 20:35:22 +0100 -Subject: [PATCH 339/353] net: Add missing xmit_lock_owner hunks. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=32fdfaaf1dbe68aedd03460e61be623bba9dff09 +Subject: [PATCH 339/354] net: Add missing xmit_lock_owner hunks. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d66285c0f87e3ec7848625a69f330f13219e0d0c The patch net: move xmit_recursion to per-task variable on -RT @@ -17,10 +17,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 086cd650f555..25557901d020 100644 +index 821337d81da2..1bead7088f4d 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -3887,17 +3887,17 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) +@@ -3893,17 +3893,17 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) #ifdef CONFIG_PREEMPT_RT_FULL static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu) { @@ -41,7 +41,7 @@ index 086cd650f555..25557901d020 100644 return true; return false; } -@@ -3906,17 +3906,19 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) +@@ -3912,17 +3912,19 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu) { @@ -64,7 +64,7 @@ index 086cd650f555..25557901d020 100644 return true; return false; } -@@ -3925,8 +3927,7 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) +@@ -3931,8 +3933,7 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); @@ -74,7 +74,7 @@ index 086cd650f555..25557901d020 100644 } static inline bool __netif_tx_acquire(struct netdev_queue *txq) -@@ -3943,8 +3944,7 @@ static inline void __netif_tx_release(struct netdev_queue *txq) +@@ -3949,8 +3950,7 @@ static inline void __netif_tx_release(struct netdev_queue *txq) static inline void __netif_tx_lock_bh(struct netdev_queue *txq) { spin_lock_bh(&txq->_xmit_lock); @@ -84,7 +84,7 @@ index 086cd650f555..25557901d020 100644 } static inline bool __netif_tx_trylock(struct netdev_queue *txq) -@@ -3952,23 +3952,20 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq) +@@ -3958,23 +3958,20 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq) bool ok = spin_trylock(&txq->_xmit_lock); if (likely(ok)) { diff --git a/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch b/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch index dbcdfcba5..3fc035fad 100644 --- a/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch +++ b/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 29 Apr 2022 11:02:18 -0500 -Subject: [PATCH 340/353] genirq: Add lost hunk to irq_forced_thread_fn(). -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d976532ebe34ef620ed2aa1f6e2be711d7a6a902 +Subject: [PATCH 340/354] genirq: Add lost hunk to irq_forced_thread_fn(). +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f7b4a0b525a3a73796d656e049f4d902b3fc74b The irq_settings_no_softirq_call() related handling got lost in process, here are the missing bits. diff --git a/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch b/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch index 654b55878..da1f6dcc4 100644 --- a/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch +++ b/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:38 +0200 -Subject: [PATCH 341/353] random: Bring back the local_locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7ba891aa13c535f5d95c4fab0c44253694b36bc0 +Subject: [PATCH 341/354] random: Bring back the local_locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ce35a2b802aafd40aad5e645c004a41469fade8f As part of the backports the random code lost its local_lock_t type and the whole operation became a local_irq_{disable|enable}() simply because diff --git a/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch b/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch index 0856f6fc7..0aecdff50 100644 --- a/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch +++ b/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2022 15:55:39 +0200 -Subject: [PATCH 342/353] local_lock: Provide INIT_LOCAL_LOCK(). -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=49c901af0340e7621905b09bafc0c23c4b12624e +Subject: [PATCH 342/354] local_lock: Provide INIT_LOCAL_LOCK(). +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1479c2185d99567ddab8ca94047b5be80caafcc The original code was using INIT_LOCAL_LOCK() and I tried to sneak around it and forgot that this code also needs to compile on !RT diff --git a/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch b/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch index 1e3004793..a30fa16e7 100644 --- a/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch +++ b/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2022 16:15:56 +0200 -Subject: [PATCH 343/353] Revert "workqueue: Use local irq lock instead of irq +Subject: [PATCH 343/354] Revert "workqueue: Use local irq lock instead of irq disable regions" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=60087367b50b95abf48d954ffb59b9b22c1f9f99 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2fe895f00f08cac8f1bbbdc146b489b821d5347f This reverts the PREEMPT_RT related changes to workqueue. It reverts the usage of local_locks() and cpu_chill(). @@ -20,10 +20,10 @@ Signed-off-by: Daniel Wagner <wagi@monom.org> 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index c047a647146e..e0ab9febe11f 100644 +index 8e012510425e..0f2450425879 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -1496,11 +1496,9 @@ EXPORT_SYMBOL(queue_work_on); +@@ -1499,11 +1499,9 @@ EXPORT_SYMBOL(queue_work_on); void delayed_work_timer_fn(struct timer_list *t) { struct delayed_work *dwork = from_timer(dwork, t, timer); diff --git a/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch b/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch index 30109fcaf..11443ee47 100644 --- a/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch +++ b/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:42 +0200 -Subject: [PATCH 344/353] timers: Keep interrupts disabled for TIMER_IRQSAFE +Subject: [PATCH 344/354] timers: Keep interrupts disabled for TIMER_IRQSAFE timer. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=594dfc20b8af70e4ba45812364ece21d433bda57 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d24ad5ccbf32a6ae6e175958ff2ee5b5bf40e630 Keep interrupts disabled across callback invocation for the TIMER_IRQSAFE as expected. diff --git a/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch b/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch index 58c7159ea..40eeabeff 100644 --- a/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +++ b/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 24 Oct 2022 10:17:22 +0200 -Subject: [PATCH 345/353] timers: Don't block on ->expiry_lock for +Subject: [PATCH 345/354] timers: Don't block on ->expiry_lock for TIMER_IRQSAFE timers -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=84306a94872a513876119e0b5f299d4d3987a8db +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3413ac266d8c5f1ffc233cbc0a1f7732833891e7 Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 diff --git a/debian/patches-rt/0346-rcu-Update-rcuwait.patch b/debian/patches-rt/0346-rcu-Update-rcuwait.patch index 57afe7c3e..9c9d9838f 100644 --- a/debian/patches-rt/0346-rcu-Update-rcuwait.patch +++ b/debian/patches-rt/0346-rcu-Update-rcuwait.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> Date: Mon, 24 Oct 2022 10:58:29 +0200 -Subject: [PATCH 346/353] rcu: Update rcuwait -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=587f7f0c0ba24632fa86dd7122366221664f116f +Subject: [PATCH 346/354] rcu: Update rcuwait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4ed77cc76087b8eb072eefe9a337f5a80f5e098 This is an all in one commit backporting updates for rcuwait: - 03f4b48edae7 ("rcuwait: Annotate task_struct with __rcu") @@ -109,7 +109,7 @@ index 90bfa3279a01..4fe9ecd56aac 100644 #endif /* _LINUX_RCUWAIT_H_ */ diff --git a/kernel/exit.c b/kernel/exit.c -index 51b36d58c872..94a51c53985b 100644 +index cbe99ab0ac19..9522c5b06199 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -338,8 +338,9 @@ struct task_struct *task_rcu_dereference(struct task_struct **ptask) diff --git a/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch b/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch index 0978310bc..3d77d325b 100644 --- a/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch +++ b/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:45 +0200 -Subject: [PATCH 347/353] workqueue: Use rcuwait for wq_manager_wait -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f194473966fbca2b59765c07b6ce08a7aa4579f1 +Subject: [PATCH 347/354] workqueue: Use rcuwait for wq_manager_wait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f5b1e7bc4ff615a9f94e9c24e34c93321a4859a Upstream commit d8bb65ab70f702531aaaa11d9710f9450078e295 @@ -36,7 +36,7 @@ Signed-off-by: Daniel Wagner <wagi@monom.org> 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index e0ab9febe11f..a9f3cc02bdc1 100644 +index 0f2450425879..0c7033deaef2 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,6 +50,7 @@ @@ -57,7 +57,7 @@ index e0ab9febe11f..a9f3cc02bdc1 100644 static LIST_HEAD(workqueues); /* PR: list of all workqueues */ static bool workqueue_freezing; /* PL: have wqs started freezing? */ -@@ -2023,7 +2025,7 @@ static bool manage_workers(struct worker *worker) +@@ -2026,7 +2028,7 @@ static bool manage_workers(struct worker *worker) pool->manager = NULL; pool->flags &= ~POOL_MANAGER_ACTIVE; @@ -66,7 +66,7 @@ index e0ab9febe11f..a9f3cc02bdc1 100644 return true; } -@@ -3342,6 +3344,18 @@ static void rcu_free_pool(struct rcu_head *rcu) +@@ -3345,6 +3347,18 @@ static void rcu_free_pool(struct rcu_head *rcu) kfree(pool); } @@ -85,7 +85,7 @@ index e0ab9febe11f..a9f3cc02bdc1 100644 /** * put_unbound_pool - put a worker_pool * @pool: worker_pool to put -@@ -3377,10 +3391,12 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3380,10 +3394,12 @@ static void put_unbound_pool(struct worker_pool *pool) * Become the manager and destroy all workers. This prevents * @pool's workers from blocking on attach_mutex. We're the last * manager and @pool gets freed with the flag set. diff --git a/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch b/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch index caa280599..ace5bfbb0 100644 --- a/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch +++ b/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch @@ -1,7 +1,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de> Date: Mon, 31 Oct 2022 16:50:04 +0100 -Subject: [PATCH 348/353] timers: Prepare support for PREEMPT_RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f90995ffd999e658dbb9146f2436b4fde40ed9d9 +Subject: [PATCH 348/354] timers: Prepare support for PREEMPT_RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=803c1efa1d5d5b533488704c75c6fb9c67ba78b5 Upstream commit 030dcdd197d77374879bb5603d091eee7d8aba80 diff --git a/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch b/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch index 2744908b4..e50d0cc14 100644 --- a/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch +++ b/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 31 Oct 2022 16:50:05 +0100 -Subject: [PATCH 349/353] timers: Move clearing of base::timer_running under +Subject: [PATCH 349/354] timers: Move clearing of base::timer_running under base:: Lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a66d72d875ad3ceffbfc55419dc883fa702a1794 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b70aa3d0e796508c098caab46376bf27a9473357 Upstream commit bb7262b295472eb6858b5c49893954794027cd84 diff --git a/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch b/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch index a095b5965..af2a70caf 100644 --- a/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +++ b/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 31 Oct 2022 16:50:06 +0100 -Subject: [PATCH 350/353] timers: Don't block on ->expiry_lock for +Subject: [PATCH 350/354] timers: Don't block on ->expiry_lock for TIMER_IRQSAFE timers -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d585a000a1b7f50740d6851fb62230022452f891 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=06ed86eac63f21f446c9be321cc55f029c59c844 Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 diff --git a/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch b/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch index 7695dbdcb..922159c7c 100644 --- a/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch +++ b/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch @@ -1,8 +1,8 @@ From: Ben Hutchings <ben@decadent.org.uk> Date: Sat, 10 Dec 2022 00:06:17 +0100 -Subject: [PATCH 351/353] Revert "percpu: include irqflags.h for +Subject: [PATCH 351/354] Revert "percpu: include irqflags.h for raw_local_irq_save()" -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fc2f775b05752f219dd8a10129509e0b23a1742 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=744516702f55a39c76b0b600abcba9e91942df0c This reverts commit 0d796a9e6a93608b4dd84fbd09f01e912ae34bdc. diff --git a/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch b/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch index 847f5978e..bb3bb03cf 100644 --- a/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch +++ b/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch @@ -1,8 +1,8 @@ From: "Brennan Lamoreaux (VMware)" <brennanlamoreaux@gmail.com> Date: Tue, 28 Feb 2023 14:49:38 -0800 -Subject: [PATCH 352/353] workqueue: Fix deadlock due to recursive locking of +Subject: [PATCH 352/354] workqueue: Fix deadlock due to recursive locking of pool->lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ad25c1a19c04844c75d94d93a22d5879cdcede1c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ddf6c4f69cacbc7afe70679003327744ecf8e39 Upstream commit d8bb65ab70f7 ("workqueue: Use rcuwait for wq_manager_wait") replaced the waitqueue with rcuwait in the workqueue code. This change @@ -55,10 +55,10 @@ Signed-off-by: Daniel Wagner <wagi@monom.org> 1 file changed, 1 deletion(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index a9f3cc02bdc1..55ebdd56a5de 100644 +index 0c7033deaef2..e6e1923c88eb 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -3394,7 +3394,6 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3397,7 +3397,6 @@ static void put_unbound_pool(struct worker_pool *pool) * Because of how wq_manager_inactive() works, we will hold the * spinlock after a successful wait. */ diff --git a/debian/patches-rt/0353-Revert-sched-rt-Provide-migrate_disable-enable-inlin.patch b/debian/patches-rt/0353-Revert-sched-rt-Provide-migrate_disable-enable-inlin.patch new file mode 100644 index 000000000..c31c75707 --- /dev/null +++ b/debian/patches-rt/0353-Revert-sched-rt-Provide-migrate_disable-enable-inlin.patch @@ -0,0 +1,58 @@ +From: Daniel Wagner <wagi@monom.org> +Date: Thu, 7 Dec 2023 15:54:10 +0100 +Subject: [PATCH 353/354] Revert "sched/rt: Provide migrate_disable/enable() + inlines" +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c127f3a8909b2dc34b7e211dba228ce6f63ec46c + +This reverts commit 56e8949825226341d28dd5156b3d0057684ff669. + +The tree contains already the migrate_disable/enable() helpers thus this +stable backport conflicts (b) with the existing definition (compiler +complains with conflicting definition). Thus we don't need this +backported functions and can avoid the conflict by just dropping the +backport. + +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + include/linux/preempt.h | 30 ------------------------------ + 1 file changed, 30 deletions(-) + +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index 29ecd13afdda..9c74a019bf57 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h +@@ -422,34 +422,4 @@ static inline void preempt_notifier_init(struct preempt_notifier *notifier, + + #endif + +-/** +- * migrate_disable - Prevent migration of the current task +- * +- * Maps to preempt_disable() which also disables preemption. Use +- * migrate_disable() to annotate that the intent is to prevent migration, +- * but not necessarily preemption. +- * +- * Can be invoked nested like preempt_disable() and needs the corresponding +- * number of migrate_enable() invocations. +- */ +-static __always_inline void migrate_disable(void) +-{ +- preempt_disable(); +-} +- +-/** +- * migrate_enable - Allow migration of the current task +- * +- * Counterpart to migrate_disable(). +- * +- * As migrate_disable() can be invoked nested, only the outermost invocation +- * reenables migration. +- * +- * Currently mapped to preempt_enable(). +- */ +-static __always_inline void migrate_enable(void) +-{ +- preempt_enable(); +-} +- + #endif /* __LINUX_PREEMPT_H */ diff --git a/debian/patches-rt/0353-Linux-4.19.284-rt125-REBASE.patch b/debian/patches-rt/0354-Linux-4.19.302-rt131-REBASE.patch index cd165fd18..93f1fb689 100644 --- a/debian/patches-rt/0353-Linux-4.19.284-rt125-REBASE.patch +++ b/debian/patches-rt/0354-Linux-4.19.302-rt131-REBASE.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> -Date: Thu, 1 Jun 2023 08:03:33 +0200 -Subject: [PATCH 353/353] Linux 4.19.284-rt125 REBASE -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c159f8ff7cf6c82d53a066c78a054d0244b7fb61 +Date: Wed, 20 Dec 2023 13:45:00 +0100 +Subject: [PATCH 354/354] Linux 4.19.302-rt131 REBASE +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56c9e3ba52d1f30bad6ff3ba2042ef9fe30525e8 Signed-off-by: Daniel Wagner <wagi@monom.org> --- @@ -9,9 +9,9 @@ Signed-off-by: Daniel Wagner <wagi@monom.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localversion-rt b/localversion-rt -index 1199ebade17b..9d0cfbcac7f4 100644 +index 1199ebade17b..a328b97369c2 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt16 -+-rt125 ++-rt131 diff --git a/debian/patches-rt/rcupdate-delete-duplicated-macros.patch b/debian/patches-rt/rcupdate-delete-duplicated-macros.patch new file mode 100644 index 000000000..f597ccedf --- /dev/null +++ b/debian/patches-rt/rcupdate-delete-duplicated-macros.patch @@ -0,0 +1,67 @@ +From: Ben Hutchings <benh@debian.org> +Date: Sun, 24 Sep 2023 20:31:44 +0200 +Subject: rcupdate: Delete duplicated macros + +Commit e7d849eab72f mismerged include/linux/rcupdate.h, resulting in +two macros being defined in both include/linux/rcupdate.h and +include/linux/rcu_assign_pointer.h. Delete them from rcupdate.h as +was intended. + +--- +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -382,54 +382,6 @@ static inline void rcu_preempt_sleep_che + }) + + /** +- * RCU_INITIALIZER() - statically initialize an RCU-protected global variable +- * @v: The value to statically initialize with. +- */ +-#define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) +- +-/** +- * rcu_assign_pointer() - assign to RCU-protected pointer +- * @p: pointer to assign to +- * @v: value to assign (publish) +- * +- * Assigns the specified value to the specified RCU-protected +- * pointer, ensuring that any concurrent RCU readers will see +- * any prior initialization. +- * +- * Inserts memory barriers on architectures that require them +- * (which is most of them), and also prevents the compiler from +- * reordering the code that initializes the structure after the pointer +- * assignment. More importantly, this call documents which pointers +- * will be dereferenced by RCU read-side code. +- * +- * In some special cases, you may use RCU_INIT_POINTER() instead +- * of rcu_assign_pointer(). RCU_INIT_POINTER() is a bit faster due +- * to the fact that it does not constrain either the CPU or the compiler. +- * That said, using RCU_INIT_POINTER() when you should have used +- * rcu_assign_pointer() is a very bad thing that results in +- * impossible-to-diagnose memory corruption. So please be careful. +- * See the RCU_INIT_POINTER() comment header for details. +- * +- * Note that rcu_assign_pointer() evaluates each of its arguments only +- * once, appearances notwithstanding. One of the "extra" evaluations +- * is in typeof() and the other visible only to sparse (__CHECKER__), +- * neither of which actually execute the argument. As with most cpp +- * macros, this execute-arguments-only-once property is important, so +- * please be careful when making changes to rcu_assign_pointer() and the +- * other macros that it invokes. +- */ +-#define rcu_assign_pointer(p, v) \ +-({ \ +- uintptr_t _r_a_p__v = (uintptr_t)(v); \ +- \ +- if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL) \ +- WRITE_ONCE((p), (typeof(p))(_r_a_p__v)); \ +- else \ +- smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ +- _r_a_p__v; \ +-}) +- +-/** + * rcu_replace_pointer() - replace an RCU pointer, returning its old value + * @rcu_ptr: RCU pointer, whose old value is returned + * @ptr: regular pointer diff --git a/debian/patches-rt/series b/debian/patches-rt/series index e9fd48c8f..737d56925 100644 --- a/debian/patches-rt/series +++ b/debian/patches-rt/series @@ -350,5 +350,7 @@ 0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch 0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch 0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch -0353-Linux-4.19.284-rt125-REBASE.patch +0353-Revert-sched-rt-Provide-migrate_disable-enable-inlin.patch +0354-Linux-4.19.302-rt131-REBASE.patch netpoll-fix-netif_local_xmit_active-for-4.19-rt.patch +rcupdate-delete-duplicated-macros.patch |