diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 03:43:38 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 03:43:38 +0000 |
commit | 1ff870768c5cacf4bdc05cce822ac61837666b0f (patch) | |
tree | 94a1b1fd6d42485c062620781ed0ac16e05bf60c /debian/patches-rt | |
parent | Merging upstream version 4.19.269. (diff) | |
download | linux-1ff870768c5cacf4bdc05cce822ac61837666b0f.tar.xz linux-1ff870768c5cacf4bdc05cce822ac61837666b0f.zip |
Adding debian version 4.19.269-1.debian/4.19.269-1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches-rt')
353 files changed, 1960 insertions, 1044 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 b1156f3d4..b8f80db73 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/342] ARM: at91: add TCB registers definitions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3122df320b5f6ba0e36a28168877c8205ab46747 +Subject: [PATCH 001/351] ARM: at91: add TCB registers definitions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=066bff5bc180d4a40c961efbbe8bc938044d0bb3 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 650f9b842..2c0e2a003 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/342] clocksource/drivers: Add a new driver for the Atmel +Subject: [PATCH 002/351] 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=3a947a9a5de4fc114b407c5648b6f71e9f825856 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=732ba9ebea0cec8807da3283f075fc7ce32cfc0d Add a driver for the Atmel Timer Counter Blocks. This driver provides a clocksource and two clockevent devices. 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 fb37f66d2..395a38d75 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/342] clocksource/drivers: timer-atmel-tcb: add clockevent +Subject: [PATCH 003/351] 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=13133ffb22ec065c30837eceb253ab60a7f86715 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=403681deaff8ad3197633616efee3524cda04e60 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 812239f21..0883db9c8 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/342] clocksource/drivers: atmel-pit: make option silent -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec89b134f165b0003da705e1eb33db69f8b105f5 +Subject: [PATCH 004/351] clocksource/drivers: atmel-pit: make option silent +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f68d0ac524af4688ccf7b9466c047fb9852b005a 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 1ca294cdf..55116bc8c 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/342] ARM: at91: Implement clocksource selection -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=86f4900f6f6c9c8786a1162b473598e6f83fa5fd +Subject: [PATCH 005/351] ARM: at91: Implement clocksource selection +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f2cee27973350059b967705738e817b161fd383 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 1e3746718..818572855 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/342] ARM: configs: at91: use new TCB timer driver -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f91582449e7283518ad5c49a625b35d49dceb3d +Subject: [PATCH 006/351] ARM: configs: at91: use new TCB timer driver +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d63f340509cda48540e06ddaec11870de0600a51 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 7627ee614..724b65991 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/342] ARM: configs: at91: unselect PIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9a3f3c8892299e5539c6ae47a682c3c77e9a3dd +Subject: [PATCH 007/351] ARM: configs: at91: unselect PIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b77e847f5681b5ee54a353133ff5519679c6bca6 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 fecbdb3e6..ede2dd62d 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/342] irqchip/gic-v3-its: Move pending table allocation to +Subject: [PATCH 008/351] 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=9b8978ba6e95562abffb58dc7969127f4c05afe0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9fb57db9ae54bc1252eb9cb8eb620889742c94e 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 c60ad230c..f8b78ab00 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/342] kthread: convert worker lock to raw spinlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25ba83fe78235738f65e2c7b07943e346ccb9452 +Subject: [PATCH 009/351] kthread: convert worker lock to raw spinlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b0e39ae62c0db19890ea0909adb3c41b6251b095 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 9d2fafcd8..373c60ab9 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/342] crypto: caam/qi - simplify CGR allocation, freeing +Subject: [PATCH 010/351] 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=268ff461cf60c56307d742d6937380187c150147 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b728fd1725301cc64ba51b9c679496bf9d376e7 [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 7df648712..8b2a7828a 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/342] sched/fair: Robustify CFS-bandwidth timer locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3b58e86ed0fa1cd05db063c8da6034a698bd96d +Subject: [PATCH 011/351] sched/fair: Robustify CFS-bandwidth timer locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=323a0b247762ebfba81f76799d150d2735e97f21 Traditionally hrtimer callbacks were run with IRQs disabled, but with the introduction of HRTIMER_MODE_SOFT it is possible they run from 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 56625fdcb..5b582426f 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/342] arm: Convert arm boot_lock to raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=832bd38726e8de90d400c1708e3c68c0eb97f0ae +Subject: [PATCH 012/351] arm: Convert arm boot_lock to raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22e18dfa9b5585e6655106684c3e05b7ceaf13de 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 fa5207746..5c9b99218 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/342] x86/ioapic: Don't let setaffinity unmask threaded EOI +Subject: [PATCH 013/351] 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=6d53bf26f7092895193d947150b8de66ea8e226a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2291d37f1f88b1e7c56dcc321af436a85891e3d5 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 cfef075fd..1a23d4bbf 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/342] cgroup: use irqsave in cgroup_rstat_flush_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1c2c072c291f7bcf9e3480cc8474ff68ecebb31 +Subject: [PATCH 014/351] cgroup: use irqsave in cgroup_rstat_flush_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4452139e74bc5b77978cf9d783bde7761584ba56 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 e4b2a74a6..bbd52033c 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/342] fscache: initialize cookie hash table raw spinlocks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5f9b412940e746eb7fd8900f57db7046efe4f2e0 +Subject: [PATCH 015/351] fscache: initialize cookie hash table raw spinlocks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4dbc2ab3ba55810cfe4d50e68409b00364df869 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 ff80542d2..5cca3d2ce 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/342] Drivers: hv: vmbus: include header for get_irq_regs() +Subject: [PATCH 016/351] 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=d64aa2fd269aac918b112984f2dab94ad18aff89 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08d5b89869038b04508e01db3d9c2823f1d18c1c 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 deleted file mode 100644 index 2a9367801..000000000 --- a/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Thu, 11 Oct 2018 16:39:59 +0200 -Subject: [PATCH 017/342] 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=83573d1e9158243e6190ff7a90a1fe73c4794a8b - -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 -header file is included via an other header file. -On -RT the build fails because raw_local_irq_save() is not defined. - -Include irqflags.h in percpu.h. - -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - include/asm-generic/percpu.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h -index 1817a8415a5e..942d64c0476e 100644 ---- a/include/asm-generic/percpu.h -+++ b/include/asm-generic/percpu.h -@@ -5,6 +5,7 @@ - #include <linux/compiler.h> - #include <linux/threads.h> - #include <linux/percpu-defs.h> -+#include <linux/irqflags.h> - - #ifdef CONFIG_SMP - diff --git a/debian/patches-rt/0018-efi-Allow-efi-runtime.patch b/debian/patches-rt/0018-efi-Allow-efi-runtime.patch index 592a3e9fc..983c323c8 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/342] efi: Allow efi=runtime -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd99215d19fcabe2d1580cda61ff189cc41aa689 +Subject: [PATCH 018/351] efi: Allow efi=runtime +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbe76f6e74b065be6b21849333fcee093baff12a In case the option "efi=noruntime" is default at built-time, the user could overwrite its sate by `efi=runtime' and allow it again. @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 3 insertions(+) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 7098744f9276..e89932f1ae65 100644 +index f0ef2643b70e..9137fb107ae4 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -113,6 +113,9 @@ static int __init parse_efi_cmdline(char *str) 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 1aaf6ca75..5f26c186b 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/342] 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=420295d524170fe978692f9ccc424105b7a6f4a7 +Subject: [PATCH 019/351] 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=5d8cc223618ac465b6dba6bedfe4ca7f060dea01 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 c1af4d95b..ce3da1517 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/342] arm64: KVM: compute_layout before altenates are +Subject: [PATCH 020/351] arm64: KVM: compute_layout before altenates are applied -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a7c21c9d8dd18466e30c7b471e0e9ad276f38de +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3e7a19db684d20c99425ab89480c71931f76aed3 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 910dd1aa1..afa46a183 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/342] of: allocate / free phandle cache outside of the +Subject: [PATCH 021/351] 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=811c1552ba8fc9c2522834455cc7a0f0421cc149 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d365b804f891b5e1e3554be17d8c834db3330e3 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 d6f6279fa..2b2115681 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/342] 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=320da726e91aaaedde9f1b6921f60f7ff8dd76d8 +Subject: [PATCH 022/351] 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=880f96c5ded03733219b97b647369b7ac19052aa 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 78dca5721..1f1bbe53f 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/342] EXP rcu: Revert expedited GP parallelization +Subject: [PATCH 023/351] EXP rcu: Revert expedited GP parallelization cleverness -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bbc41f565212047da61ffb6763bb9843c6ea9775 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0bd926ced576e698b47251d7867b02d829e4115 (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 cbe6080bc..0081cb724 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/342] kmemleak: Turn kmemleak_lock to raw spinlock on RT +Subject: [PATCH 024/351] 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=214db2ab9702fd60e0549651edf19dcfb17d9f20 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd3b951faee26093ccec1213cffb509f40cb19d0 kmemleak_lock, as a rwlock on RT, can possibly be held in atomic context and causes the follow BUG. @@ -78,7 +78,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c -index 639acbb91fd5..5b6718dd3a64 100644 +index f54734abf946..86caf2025c35 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -26,7 +26,7 @@ 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 38cd44c91..108d1a08a 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/342] NFSv4: replace seqcount_t with a seqlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b840fb9c0979726ce4cf8e6136da1ce9be6baeb8 +Subject: [PATCH 025/351] NFSv4: replace seqcount_t with a seqlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94e5754505317d785d438d9fcf7e0130ed11b8f3 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 5ac7bf24c507..b15a7a2f64fe 100644 }; diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index f48a11fa78bb..93dcfcd1424d 100644 +index f9f76594b866..7feb4c11471a 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2874,7 +2874,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, @@ -79,7 +79,7 @@ index f48a11fa78bb..93dcfcd1424d 100644 } diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c -index 30576a10a1f4..e0b94cbce3bf 100644 +index 5ab021f87ecf..f97c63038ff2 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -516,7 +516,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, 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 56d89ace2..1732dfed8 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/342] kernel: sched: Provide a pointer to the valid CPU +Subject: [PATCH 026/351] 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=3a742715efe880a8606d4b57cd2d1ee4715afa3c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b52972c9d7da09d15e44aad1448655ebdbb87553 In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not @@ -270,10 +270,10 @@ index 9eb99a43f849..e4d0cfebaac5 100644 static inline void task_core_dumping(struct seq_file *m, struct mm_struct *mm) diff --git a/include/linux/sched.h b/include/linux/sched.h -index f92d5ae6d04e..fc5f476c2aca 100644 +index fd4899236037..6d5937fc782e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -660,7 +660,8 @@ struct task_struct { +@@ -664,7 +664,8 @@ struct task_struct { unsigned int policy; int nr_cpus_allowed; @@ -283,7 +283,7 @@ index f92d5ae6d04e..fc5f476c2aca 100644 #ifdef CONFIG_PREEMPT_RCU int rcu_read_lock_nesting; -@@ -1398,7 +1399,7 @@ extern struct pid *cad_pid; +@@ -1402,7 +1403,7 @@ extern struct pid *cad_pid; #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */ #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ @@ -333,7 +333,7 @@ index b65871600507..a18d695259af 100644 /* * One for us, one for whoever does the "release_task()" (usually diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 32af895bd86b..3fb7638a8863 100644 +index a03464249771..985cfa10fda5 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -878,7 +878,7 @@ static inline bool is_per_cpu_kthread(struct task_struct *p) @@ -456,7 +456,7 @@ index 32af895bd86b..3fb7638a8863 100644 * - any previously selected CPU might disappear through hotplug * * Use __set_task_cpu() to avoid calling sched_class::migrate_task_rq, -@@ -4322,7 +4322,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -4323,7 +4323,7 @@ static int __sched_setscheduler(struct task_struct *p, * the entire root_domain to become SCHED_DEADLINE. We * will also fail if there's no bandwidth available. */ @@ -465,7 +465,7 @@ index 32af895bd86b..3fb7638a8863 100644 rq->rd->dl_bw.bw == 0) { task_rq_unlock(rq, p, &rf); return -EPERM; -@@ -4921,7 +4921,7 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask) +@@ -4922,7 +4922,7 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask) goto out_unlock; raw_spin_lock_irqsave(&p->pi_lock, flags); @@ -474,7 +474,7 @@ index 32af895bd86b..3fb7638a8863 100644 raw_spin_unlock_irqrestore(&p->pi_lock, flags); out_unlock: -@@ -5498,7 +5498,7 @@ int task_can_attach(struct task_struct *p, +@@ -5499,7 +5499,7 @@ int task_can_attach(struct task_struct *p, * allowed nodes is unnecessary. Thus, cpusets are not * applicable for such threads. This prevents checking for * success of set_cpus_allowed_ptr() on all attached tasks @@ -483,7 +483,7 @@ index 32af895bd86b..3fb7638a8863 100644 */ if (p->flags & PF_NO_SETAFFINITY) { ret = -EINVAL; -@@ -5525,7 +5525,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) +@@ -5526,7 +5526,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) if (curr_cpu == target_cpu) return 0; @@ -492,7 +492,7 @@ index 32af895bd86b..3fb7638a8863 100644 return -EINVAL; /* TODO: This is not properly updating schedstats */ -@@ -5664,7 +5664,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) +@@ -5665,7 +5665,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) put_prev_task(rq, next); /* @@ -541,10 +541,10 @@ index daaadf939ccb..f7d2c10b4c92 100644 /* * We have to ensure that we have at least one bit diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index beec5081a55a..95ebbb2074c7 100644 +index 29ed5d8d30d6..9243d0049714 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c -@@ -539,7 +539,7 @@ static struct rq *dl_task_offline_migration(struct rq *rq, struct task_struct *p +@@ -561,7 +561,7 @@ static struct rq *dl_task_offline_migration(struct rq *rq, struct task_struct *p * If we cannot preempt any rq, fall back to pick any * online CPU: */ @@ -553,7 +553,7 @@ index beec5081a55a..95ebbb2074c7 100644 if (cpu >= nr_cpu_ids) { /* * Failed to find any suitable CPU. -@@ -1857,7 +1857,7 @@ static void set_curr_task_dl(struct rq *rq) +@@ -1887,7 +1887,7 @@ static void set_curr_task_dl(struct rq *rq) static int pick_dl_task(struct rq *rq, struct task_struct *p, int cpu) { if (!task_running(rq, p) && @@ -562,7 +562,7 @@ index beec5081a55a..95ebbb2074c7 100644 return 1; return 0; } -@@ -2007,7 +2007,7 @@ static struct rq *find_lock_later_rq(struct task_struct *task, struct rq *rq) +@@ -2037,7 +2037,7 @@ static struct rq *find_lock_later_rq(struct task_struct *task, struct rq *rq) /* Retry if something changed. */ if (double_lock_balance(rq, later_rq)) { if (unlikely(task_rq(task) != rq || @@ -719,10 +719,10 @@ index e84a056f783f..16940416d526 100644 flags); env.flags |= LBF_ALL_PINNED; diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 70e8cd395474..52b55144d8ad 100644 +index 9c6c3572b131..a068884c369f 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c -@@ -1620,7 +1620,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) +@@ -1623,7 +1623,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 70e8cd395474..52b55144d8ad 100644 return 1; return 0; -@@ -1757,7 +1757,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) +@@ -1760,7 +1760,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 3f81197cb..84c4e061a 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/342] kernel/sched/core: add migrate_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=530f57e728e9d76193a46746650e621d832ef4ce +Subject: [PATCH 027/351] kernel/sched/core: add migrate_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41846fc4c5b1eb7d7629a63f70673bccf13cda15 --- include/linux/preempt.h | 23 +++++++ @@ -53,10 +53,10 @@ index c01813c3fbe9..3196d0e76719 100644 #ifdef MODULE diff --git a/include/linux/sched.h b/include/linux/sched.h -index fc5f476c2aca..52069b9ddce8 100644 +index 6d5937fc782e..6a4e7b2d27d3 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -662,6 +662,13 @@ struct task_struct { +@@ -666,6 +666,13 @@ struct task_struct { int nr_cpus_allowed; const cpumask_t *cpus_ptr; cpumask_t cpus_mask; @@ -85,7 +85,7 @@ index 6bb7f07bc1dd..039da089482c 100644 * Callback to arch code if there's nosmp or maxcpus=0 on the * boot command line: diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3fb7638a8863..5a691d2bfbfe 100644 +index 985cfa10fda5..116529019d34 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1008,7 +1008,15 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma @@ -144,7 +144,7 @@ index 3fb7638a8863..5a691d2bfbfe 100644 if (task_running(rq, p) || p->state == TASK_WAKING) { struct migration_arg arg = { p, dest_cpu }; /* Need help from migration thread: drop lock and wait. */ -@@ -7108,3 +7137,100 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7109,3 +7138,100 @@ const u32 sched_prio_to_wmult[40] = { }; #undef CREATE_TRACE_POINTS 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 7ad746c36..99ca1fe43 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/342] sched/migrate_disable: Add export_symbol_gpl for +Subject: [PATCH 028/351] 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=4b2f85c983f4170f60b4cbcaad98639bae7f7405 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4dbb7a73b2a3ff8390b1f6733f765388d12fd95e Jonathan reported that lttng/modules can't use __migrate_disabled(). This function is only used by sched/core itself and the tracing @@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 5a691d2bfbfe..0a51a66f5a63 100644 +index 116529019d34..80234d096926 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1013,6 +1013,7 @@ int __migrate_disabled(struct task_struct *p) 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 36959604c..78a167c2a 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/342] 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=c36a4aed62bdfc4b3139d5eb2a696dbe27949d8a +Subject: [PATCH 029/351] 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=31e72cd5369cf2c6403f07abc1374030c991f005 Currently the driver will disable the clock and enable it one line later if it is switching from periodic mode into one shot. 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 7a86c07d1..495092d59 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/342] clocksource: TCLIB: Allow higher clock rates for +Subject: [PATCH 030/351] 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=08b49c99b7289f44964d91fe316ef6ae8c374390 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8e1f1b7959b48c060d868f85bb9c5b76388a7883 As default the TCLIB uses the 32KiHz base clock rate for clock events. Add a compile time selection to allow higher clock resulution. diff --git a/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch b/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch index 5fdbb3432..378a88d2a 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/342] timekeeping: Split jiffies seqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d75e269bb6eae9e11c610942b292d51c3c196eb +Subject: [PATCH 031/351] timekeeping: Split jiffies seqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a342f5aed55ec0615985281f556def2909aa3b11 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 b4180b71a..696c0bc14 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/342] signal: Revert ptrace preempt magic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51da8853d991fbd0844a069e36176cf6ed659a37 +Subject: [PATCH 032/351] signal: Revert ptrace preempt magic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f259904935b748e2ab49a6b3fc0fbb67ad9f55c2 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 527f92bbf..e73719d2c 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/342] net: sched: Use msleep() instead of yield() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a94458b4bbc9b3a16e8bb4a00125a37f47e8b599 +Subject: [PATCH 033/351] net: sched: Use msleep() instead of yield() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=270824f61f11dda318237b2f8494e41a6e14732a 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 @@ -46,7 +46,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index cad2586c3473..8d8a9ac2562f 100644 +index c966dacf1130..a5262b2ba536 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -1254,7 +1254,7 @@ void dev_deactivate_many(struct list_head *head) 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 e3e7ed5f9..1de6e1025 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/342] dm rq: remove BUG_ON(!irqs_disabled) check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04040555cbe921e190bb0678f83732b0d6fa3874 +Subject: [PATCH 034/351] dm rq: remove BUG_ON(!irqs_disabled) check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=86a1d7b3dd8d77fc353216b123a5aa3e71b8fba2 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 4980cdeb8..98222b1f9 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/342] usb: do no disable interrupts in giveback -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0fb80d18f8ca1e31e157b7f8a6730906446c1841 +Subject: [PATCH 035/351] usb: do no disable interrupts in giveback +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=24285ec394cfc5b1b4af44f56548cfa9e879b892 Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet context") the USB code disables interrupts before invoking the complete @@ -19,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 3 deletions(-) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index df661460e9f9..1a1487d312d0 100644 +index 59d5d506d73c..79133ba4b9e0 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1752,7 +1752,6 @@ static void __usb_hcd_giveback_urb(struct urb *urb) 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 f3c92a375..d5f98c1ec 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/342] rt: Provide PREEMPT_RT_BASE config switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b37dde63f1b8d26b2f65461293519ec99abe4dbd +Subject: [PATCH 036/351] rt: Provide PREEMPT_RT_BASE config switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2eb43bebcb9669b59a2fee6a5327f8bef73f8e45 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 3e1d44c0e..64998e81a 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/342] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8131bb6f8295c7b4fabd12a0c0c3eb1713c9d48 +Subject: [PATCH 037/351] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2cefbc94c90efe8efe8f34c679b8600166c9e826 There are "valid" GFP_ATOMIC allocations such as 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 25e6be2d0..2876262cf 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/342] jump-label: disable if stop_machine() is used -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6a7f82ff6e79a284d2d7daccbc50d25896e6f846 +Subject: [PATCH 038/351] jump-label: disable if stop_machine() is used +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be64e97ee85c4a5f15eef0c12f3bcb8e4733404b Some architectures are using stop_machine() while switching the opcode which leads to latency spikes. @@ -24,7 +24,7 @@ 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 d89d013f586c..32d59b815b52 100644 +index 41bde0e62e90..48f7fcbe2f37 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -51,7 +51,7 @@ config ARM 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 b1012ea33..469d33439 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/342] kconfig: Disable config options which are not RT +Subject: [PATCH 039/351] 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=d20dc87ef027ae10b83e8aa13ba63fcde819da26 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0115c06a2e96d73db09183ec6d9db3a8a916f168 Disable stuff which is known to have issues on RT diff --git a/debian/patches-rt/0040-lockdep-disable-self-test.patch b/debian/patches-rt/0040-lockdep-disable-self-test.patch index 3679cc993..cdd1dc8fc 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/342] lockdep: disable self-test +Subject: [PATCH 040/351] 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=af6ae5f97037f7668869705020867edf0a5e09c6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40abab90b52c85179850b096d37f4f2a0a04ee49 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 c876f8229..adcde3e0a 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/342] mm: Allow only slub on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=24f9bbf38dfd0fd57553176d5d441c91a7a2c0a1 +Subject: [PATCH 041/351] mm: Allow only slub on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b272dce3cb99163ddf66752f5a4d0085072bb984 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 dc1e1715f..569236d53 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/342] locking: Disable spin on owner for RT +Subject: [PATCH 042/351] 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=595a698c628e8a06b9aa23ee86ce93052b1e9cf4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdeb43a61a34faa550bb24553035571b0a6e160e 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 f4486a279..be2d75221 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/342] rcu: Disable RCU_FAST_NO_HZ on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2906b81a2b2eac6c3a6ca5e7e782008896eacf43 +Subject: [PATCH 043/351] rcu: Disable RCU_FAST_NO_HZ on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8079abf731bf56879717176964b971cbdf3f1007 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 8bff8ab7d..7a63fa141 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/342] rcu: make RCU_BOOST default on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c6db36bde45dd585557217b67660ac13aff8c9e +Subject: [PATCH 044/351] rcu: make RCU_BOOST default on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea2fee0dd85d7e32fcfa89eea3b57994d27b1492 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 8ab2262eb..cd1174615 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/342] sched: Disable CONFIG_RT_GROUP_SCHED on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35fe4c7ed5f8c8dbd6fc8dbc4ea79f38e6709cbc +Subject: [PATCH 045/351] sched: Disable CONFIG_RT_GROUP_SCHED on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c9ef7626c9f8d1e755ff347bdc8d0eb77bd19f2 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 4997d3125..f03a5afa9 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/342] net/core: disable NET_RX_BUSY_POLL +Subject: [PATCH 046/351] 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=9ddd1e187d289bf0b0e0ed40eb776010526c95fb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c53647c0ba6c1f26e6684ce58e6e205fb868384 sk_busy_loop() does preempt_disable() followed by a few operations which can take sleeping locks and may get long. 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 6081352c4..09b6657f7 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/342] arm*: disable NEON in kernel mode -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3871acb68bb4ed0ffe77ad68b497182a4aaf9cce +Subject: [PATCH 047/351] arm*: disable NEON in kernel mode +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a20492d0466c0b896707e1bb5225999bbb783327 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 32d59b815b52..ec99422059e3 100644 +index 48f7fcbe2f37..d411fbbf13f0 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -2166,7 +2166,7 @@ config NEON +@@ -2165,7 +2165,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 d0fdba62d..9ed135890 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/342] powerpc: Use generic rwsem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31c7f2b069511b279e94f8dcd85a919944e98866 +Subject: [PATCH 048/351] powerpc: Use generic rwsem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f98dbe22ff6729a05890070df7f061addd2072c5 Use generic code which uses rtmutex 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 72d40f076..78bf7aa86 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/342] powerpc/kvm: Disable in-kernel MPIC emulation for +Subject: [PATCH 049/351] 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=157f0f9e40401380eeb97d8cba087b4f8380c2f3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40dc5a0139f7bb54e9ff37b419e08850140eaa3d 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 4f2ce559d..d6706d97a 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/342] powerpc: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea4bdea3cd8b827c68cf8d5b7622f834dadc2761 +Subject: [PATCH 050/351] powerpc: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43fee54156012d317e4f417de670622288a4ec80 The current highmem handling on -RT is not compatible and needs fixups. 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 939256714..113daf105 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/342] mips: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=269a64247aeed7cb930850d38719a815cedbfebc +Subject: [PATCH 051/351] mips: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08ad5cb52632f61ee11020cbe7f684782091da8e The current highmem handling on -RT is not compatible and needs fixups. 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 1c01fec7e..54041ff48 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/342] x86: Use generic rwsem_spinlocks on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f6a1a4dffbffb8bc4e0b4dbcf46fa6409d3635c +Subject: [PATCH 052/351] x86: Use generic rwsem_spinlocks on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=52a4ac8fb5330560387dd1f03c526ebe8d0f013f Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. 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 6584b8eb6..ac1056a2b 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/342] leds: trigger: disable CPU trigger on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=33c8d8dbc6da63c95050f879b153aeec536b820b +Subject: [PATCH 053/351] leds: trigger: disable CPU trigger on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=214376063f567b46e8ebaf5f459ba8f7e1ee5d2f 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 4b2f990f2..2e2f27606 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/342] cpufreq: drop K8's driver from beeing selected -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5418743cfe93bd81d0666a754324fbb8c0d094bd +Subject: [PATCH 054/351] cpufreq: drop K8's driver from beeing selected +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cd711b3f7f067737c313778a19f497b70348423b 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 64e79c786..ce8e3c7ac 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/342] md: disable bcache +Subject: [PATCH 055/351] 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=b43ef7e1e9d0f8f376c1cbecd5603eed7ffd27c3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c4eb5c4adb3eed5b47e5abf6d8b648c67c448d02 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 a3991fa44..e80997e9f 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/342] efi: Disable runtime services on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=365411fe5df7eb06fef3644a96222b96878107f6 +Subject: [PATCH 056/351] efi: Disable runtime services on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a9fddbab9b46d9c5cda5f28666c9c11f878c4d74 Based on meassurements the EFI functions get_variable / get_next_variable take up to 2us which looks okay. @@ -28,7 +28,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index e89932f1ae65..221957ccdb0b 100644 +index 9137fb107ae4..2d4ce39e23ff 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -87,7 +87,7 @@ struct mm_struct efi_mm = { 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 8bab85c4e..a9d7ef34b 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/342] printk: Add a printk kill switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed296a69a4f4cc1e1df5a29c87fe629f9f7a61c5 +Subject: [PATCH 057/351] printk: Add a printk kill switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2559bd7b8660e9dedcc64e3eaf5178080dfb8c12 Add a prinkt-kill-switch. This is used from (NMI) watchdog to ensure that it does not dead-lock with the early printk code. 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 891f76a59..891dea427 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/342] printk: Add "force_early_printk" boot param to help +Subject: [PATCH 058/351] 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=5bc26d1775b46f51023f203f4eab5c1068cc165c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=575558ec674727f3a61f5176e1a3a48bd0b2ef6e 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 06a260365..55e10f9d5 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/342] preempt: Provide preempt_*_(no)rt variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53b5cbf2736307303fe726f09c6036bc8490fa9e +Subject: [PATCH 059/351] preempt: Provide preempt_*_(no)rt variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b19ac3da49fd7a3ac66300e5bf4f4aa01e7245a5 RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. 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 f589e420b..b6b8724cf 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/342] futex: workaround migrate_disable/enable in different +Subject: [PATCH 060/351] futex: workaround migrate_disable/enable in different context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1b4d3dbc8790453456e4eed79e76cc04c35af965 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a3ce7af87dbe96b38d528cbbc440801f469834d migrate_disable()/migrate_enable() takes a different path in atomic() vs !atomic() context. These little hacks ensure that we don't underflow / overflow 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 3b46f2259..7038eef6d 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/342] rt: Add local irq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c059c18f3ffb8049cb8d1e3f674ce1dadd9e1716 +Subject: [PATCH 061/351] rt: Add local irq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e3a1711c49812c82c1af8e5b82624a8a3f2b4687 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 59782baab..f4fe95d0f 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/342] locallock: provide {get,put}_locked_ptr() variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a103d13e1c82e65714758163ca6a573a1192099c +Subject: [PATCH 062/351] locallock: provide {get,put}_locked_ptr() variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=138eba591ac83924b533005888b35e070687a49d 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 41f44b72e..4450f22f5 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/342] mm/scatterlist: Do not disable irqs on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e9f18c257d54ad5d2aab765ab83165b1f914a211 +Subject: [PATCH 063/351] mm/scatterlist: Do not disable irqs on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d5136392a21ed50d1b5ef6243092b5e33b53cd45 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 fac2bd9ec..aeef1f1be 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/342] signal/x86: Delay calling signals in atomic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b34409a64f8206c8591fe1e49021a5b10f2da5d8 +Subject: [PATCH 064/351] signal/x86: Delay calling signals in atomic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2cb53deb143489d57d80cf98be7e5c9566cd599e On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using @@ -79,10 +79,10 @@ index 33d3c88a7225..fb0438d06ca7 100644 typedef sigset_t compat_sigset_t; #endif diff --git a/include/linux/sched.h b/include/linux/sched.h -index 52069b9ddce8..56047f57ebc7 100644 +index 6a4e7b2d27d3..96b1e60d2444 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -881,6 +881,10 @@ struct task_struct { +@@ -885,6 +885,10 @@ struct task_struct { /* Restored if set_restore_sigmask() was used: */ sigset_t saved_sigmask; struct sigpending pending; 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 c5e0394ae..fc46fa878 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/342] x86/signal: delay calling signals on 32bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=634425200c2407f794e54dfa9f59786e87b81860 +Subject: [PATCH 065/351] x86/signal: delay calling signals on 32bit +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea5a8c6c4661a9a1d808238ce345d32911b7529f 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 4fb0d2e07..cdcf535e0 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/342] buffer_head: Replace bh_uptodate_lock for -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83ebb8fff9183675790a74c7d47700e4498cc51a +Subject: [PATCH 066/351] buffer_head: Replace bh_uptodate_lock for -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26279f7db2149b404506e6dec0c13effa245c8b6 Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -145,7 +145,7 @@ index 8946130c87ad..71d0b3ba70f8 100644 /** diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h -index 9168fc33a4f7..572541d6cc90 100644 +index 87fbaa84b0df..00028e4f7410 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -76,8 +76,42 @@ struct buffer_head { 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 3f88de87a..19a6a89c0 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/342] fs: jbd/jbd2: Make state lock and journal head lock +Subject: [PATCH 067/351] 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=f91a99950e81ad7b0afc52a031624f5c58aab806 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9524014ae5950c28836dd2d963362c3cde072f8 bit_spin_locks break under RT. @@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 32 insertions(+) diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h -index 572541d6cc90..703bf3335a3d 100644 +index 00028e4f7410..ba488c24f969 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -78,6 +78,10 @@ struct buffer_head { 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 4a6b621f2..6d3b88828 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/342] list_bl: Make list head locking RT safe -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51b2c6abf67d49a7986b6c833aed0acb1392865e +Subject: [PATCH 068/351] list_bl: Make list head locking RT safe +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4381d71fe99bf7961742680738c30d1b889ebdb7 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 bbb6e593d..fa98c04d8 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/342] list_bl: fixup bogus lockdep warning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31f4da06270d71015ad1d8d03c45fdba34ef07bb +Subject: [PATCH 069/351] list_bl: fixup bogus lockdep warning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93ff082fd139fddc2c77c34b99c59ec82d491121 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 d05578e64..8a25680b5 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/342] genirq: Disable irqpoll on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb89b91111430b636ef8decb3c4b1043fff1658b +Subject: [PATCH 070/351] genirq: Disable irqpoll on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1671eff698dc6a676b4de310bef9366eae254f8 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 70501763b..ccccd5f9b 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/342] genirq: Force interrupt thread on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9ed3c480f56be478ccd03c80943df887b0e0baa6 +Subject: [PATCH 071/351] genirq: Force interrupt thread on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ea2cafd86841f3d75cea13a28c385e6c65e6bad 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 71f2952c5..d626c2fb0 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/342] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 072/351] 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=214e6808e3ae9655e1530a4da1698e20754a33a5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=afd0fba4aeb3f625c26f744e174d4c03e3d3b914 Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. @@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 9c35403d9646..6763dfc2dde0 100644 +index 1cffd4e1fd8f..7b48a742f235 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1096,7 +1096,7 @@ static inline void prefetch_buddy(struct page *page) 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 eddc1c4de..3c89ad68e 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/342] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 073/351] 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=0a4d7be1a0591f795f80c043627b1c30d633459a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a7fcfa2efb2d8e57db62b3e3ad5cd632a2876bf9 Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. @@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 6763dfc2dde0..ba6f9b334073 100644 +index 7b48a742f235..ea7c80e38b83 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1106,8 +1106,8 @@ static inline void prefetch_buddy(struct page *page) 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 e3bd8de68..b73a35943 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/342] 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=d8c58de5abafe875e6c797d46f6a9272262d1358 +Subject: [PATCH 074/351] 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=5f15fea3b62af963babcb686a09026b8dc07d9cf 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,7 +398,7 @@ 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 0fefe0ad8f57..ef6fc4df3ed5 100644 +index ef730ea8263c..97d2bd78534b 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1182,7 +1182,7 @@ static noinline int free_debug_processing( 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 0035016fb..010e70a62 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/342] mm/SLUB: delay giving back empty slubs to IRQ enabled +Subject: [PATCH 075/351] 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=2ea46cd4066413ae217e7307020fa0e4a4cbc223 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0fe365431dc1420c65024651a7ec5df624151761 __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 ef6fc4df3ed5..e9abe4aa5801 100644 +index 97d2bd78534b..c62e0bf85d8e 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 3422be6dc..23fdb3335 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/342] mm: page_alloc: rt-friendly per-cpu pages -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a85fb64e5e9bd14a4754af946d40a154f966492 +Subject: [PATCH 076/351] mm: page_alloc: rt-friendly per-cpu pages +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b8a62914995f0e36b3121b5f0076ecd2553592f rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. @@ -17,7 +17,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index ba6f9b334073..59ea701ecfe0 100644 +index ea7c80e38b83..94ab9500f9d7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -60,6 +60,7 @@ @@ -215,7 +215,7 @@ index ba6f9b334073..59ea701ecfe0 100644 return NULL; } -@@ -8146,7 +8169,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -8191,7 +8214,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -224,7 +224,7 @@ index ba6f9b334073..59ea701ecfe0 100644 if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -8155,7 +8178,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -8200,7 +8223,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } 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 46e35b420..0dfa1bb5b 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/342] mm/swap: Convert to percpu locked -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40bb64bdb9f08a966387ce191c13d6042c979062 +Subject: [PATCH 077/351] mm/swap: Convert to percpu locked +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83abd37b431627122bf19be29ff45a520f8bfc2e Replace global locks (get_cpu + local_irq_save) with "local_locks()". Currently there is one of for "rotate" and one for "swap". @@ -55,10 +55,10 @@ index 5079ddbec8f9..c40d3a13cbbd 100644 cc->last_migrated_pfn = 0; } diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 59ea701ecfe0..11c08cfd6dfb 100644 +index 94ab9500f9d7..27808409a25c 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -7257,8 +7257,9 @@ void __init free_area_init(unsigned long *zones_size) +@@ -7302,8 +7302,9 @@ void __init free_area_init(unsigned long *zones_size) static int page_alloc_cpu_dead(unsigned int cpu) { 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 1c1bc4128..86d38f6f7 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/342] mm: perform lru_add_drain_all() remotely -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0db71c6d6c532698314525788c98376e43ab8792 +Subject: [PATCH 078/351] mm: perform lru_add_drain_all() remotely +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=166029f4c6a938230690bb19a404b305f0ea9ae3 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 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 0a244ba6a..09b3d390b 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/342] mm/vmstat: Protect per cpu variables with preempt +Subject: [PATCH 079/351] 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=2f41021e38ad41f3fa1580a7d2562c242d06be06 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bf0eea4c0c30f7f5ee33168a9bffef98fac66058 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 e9ce703fa..0b3f95cfc 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/342] ARM: Initialize split page table locks for vector +Subject: [PATCH 080/351] 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=004b09285edbce245a32c7ba47b4c0d1ce080afe +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9bba7707b5620080399ae9a97342c1c4176740f3 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 6636ce493..27a4a5c14 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/342] mm: Enable SLUB for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=66a902f49030b2d9bfb39fe4f55b1896c93f213d +Subject: [PATCH 081/351] mm: Enable SLUB for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1cd2fa84f5e951db996b0064abaf351e9f6dfede 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 e9abe4aa5801..ae6ab2cb4fbf 100644 +index c62e0bf85d8e..1f32f64254a7 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 280d17588..3f83dc8d1 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/342] slub: Enable irqs for __GFP_WAIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34456ee6c4c856f7cce8ac33edc699d985d3a9ed +Subject: [PATCH 082/351] slub: Enable irqs for __GFP_WAIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1be9be5f873d2a5d5743064f8e1a0c80d7ecc737 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 ae6ab2cb4fbf..676006f34077 100644 +index 1f32f64254a7..197bab70a05d 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 737240239..aa2554ed4 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/342] slub: Disable SLUB_CPU_PARTIAL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3cd2c1912d56bbd633cd7fb9da7e156ec2c8019f +Subject: [PATCH 083/351] slub: Disable SLUB_CPU_PARTIAL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=128abebd45e2b89746bff62be16e68a3495a9452 |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 a48bfa868..1cc2389a0 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/342] mm/memcontrol: Don't call schedule_work_on in +Subject: [PATCH 084/351] 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=1453dc8469e34b538adc7c22d2e33f0c4b017153 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bb8889975c22e66f0bf04ba78ed03491594216ef The following trace is triggered when running ltp oom test cases: 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 c58a81b82..45df0f80c 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/342] mm/memcontrol: Replace local_irq_disable with local +Subject: [PATCH 085/351] 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=c695d8d84b8950d1dbadfb23f5135d0482c74014 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=872cfe2b863a1a9a32e60bf73b7bff0e800b94f9 There are a few local_irq_disable() which then take sleeping locks. This patch converts them local locks. 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 5933d34ed..7eca257bb 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/342] 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=0d02aa51348471acca9af9ec915069b45e1709da +Subject: [PATCH 086/351] 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=796f74fb5cf504dbc2bf1f3af13f16e0c09d3877 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 ef0db33f5..100c313a1 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/342] x86/mm/pat: disable preemption __split_large_page() +Subject: [PATCH 087/351] 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=ee35c399cafe97f822c232c385f3e5be619dbe9e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=652e2139defe970fd2d82b04d5aeb12394c008d9 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 8a8531ebb..fe8ec191b 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/342] radix-tree: use local locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=234dfd00f2c617fbc93207317ac69f2dba0bb05a +Subject: [PATCH 088/351] radix-tree: use local locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=005680192f8aae72026cff0eff54af2ae3cb0b49 The preload functionality uses per-CPU variables and preempt-disable to ensure that it does not switch CPUs during its usage. This patch adds 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 8fba12012..9587a5ee8 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/342] timers: Prepare for full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e530eb3ecf4c019b3d4a2b5f00c0dcd295c741f +Subject: [PATCH 089/351] timers: Prepare for full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51fd00e00d7474c27ef7cd2453cedcd5e6b4ffd4 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 @@ -29,7 +29,7 @@ index 7b066fd38248..54627d046b3a 100644 #else # define del_timer_sync(t) del_timer(t) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 0a51a66f5a63..974d92afd23e 100644 +index 80234d096926..4becc6f1f56c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -498,11 +498,14 @@ void resched_cpu(int cpu) 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 1f8082f04..365c5fb03 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/342] x86: kvm Require const tsc for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6a78a1abd53560fa236781a743b6991f1d2115c5 +Subject: [PATCH 090/351] x86: kvm Require const tsc for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3636d60b0c62a884fa793ba6bcc2503b3904c635 Non constant TSC is a nightmare on bare metal already, but with virtualization it becomes a complete disaster because the workarounds 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 9b54f7f8b..5a87aa93c 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/342] 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=bc4efd9eda261dc33bbd4879e5372415434f2b73 +Subject: [PATCH 091/351] 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=48d756630ef34726f78831f9de78387269714991 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 c41af172e..425ec9dfe 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/342] wait.h: include atomic.h +Subject: [PATCH 092/351] 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=c5650d84f71a6e552239a8cb37bfd4c4f71c3694 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=198558e88fadd7681aaf9b8900de684fd7d79536 | 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 9e5fcdae8..9503e8341 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/342] work-simple: Simple work queue implemenation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1db798e94e6356004af3d7f40120bfa1d3085575 +Subject: [PATCH 093/351] work-simple: Simple work queue implemenation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f39471a941908be762004e90ebabdc80fa6aa7d 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 870364e7c..a485ebc6d 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/342] work-simple: drop a shit statement in +Subject: [PATCH 094/351] 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=0792de6350ded4bfe1e75e38094d9a96714f2345 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4659d4d28e8ce492dc3843111b15d19df9618039 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 03ed158d5..a48a363e6 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/342] completion: Use simple wait queues -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d23a63b2ce2dac0f15ecccec672b163dc974c1b +Subject: [PATCH 095/351] completion: Use simple wait queues +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f1a04f32f49733171bb6bf7b2f512a9b3581a02 Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -67,7 +67,7 @@ index 49eb4e3c760f..49fc75368aa2 100644 destroy_workqueue(ffs->io_completion_wq); kfree(ffs->dev_name); diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c -index 3ebcbd199a79..a2240aa9f4ab 100644 +index b0a2b8805f41..2da5a1bb0d01 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c @@ -345,7 +345,7 @@ ep_io (struct ep_data *epdata, void *buf, unsigned len) @@ -160,7 +160,7 @@ index 73e06e9986d4..f426a0661aa0 100644 extern long prepare_to_swait_event(struct swait_queue_head *q, struct swait_queue *wait, int state); diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c -index 6abdfdf571ee..7020a6582a4c 100644 +index 6737ae6ffbae..7f90441a6238 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -690,6 +690,10 @@ static int load_image_and_restore(void) @@ -319,10 +319,10 @@ index a1ad5b7d5521..755a58084978 100644 } EXPORT_SYMBOL(completion_done); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 974d92afd23e..3c5999476609 100644 +index 4becc6f1f56c..116b2d65f4e3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7157,7 +7157,10 @@ void migrate_disable(void) +@@ -7158,7 +7158,10 @@ void migrate_disable(void) return; } #ifdef CONFIG_SCHED_DEBUG @@ -334,7 +334,7 @@ index 974d92afd23e..3c5999476609 100644 #endif if (p->migrate_disable) { -@@ -7187,7 +7190,10 @@ void migrate_enable(void) +@@ -7188,7 +7191,10 @@ void migrate_enable(void) } #ifdef CONFIG_SCHED_DEBUG 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 862846974..08f95b2db 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/342] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4617d96a1bbab94f3bcd001e87d8180e39423e14 +Subject: [PATCH 096/351] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6b2f2ea19d44e55222b3d0455ec4b279a8cef52 |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 0ecc12bf9..52fb77753 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/342] time/hrtimer: avoid schedule_work() with interrupts +Subject: [PATCH 097/351] time/hrtimer: avoid schedule_work() with interrupts disabled -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aedfbca1bdb44eeadb289b485e48abe2fb8f387c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6226cda643b8168dc02c740131337f68dd450370 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 fcc2e35a7..ae86d0335 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/342] hrtimer: consolidate hrtimer_init() + +Subject: [PATCH 098/351] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() calls -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07da73a0fed15ec8893cb1866155b59c290a3238 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd0ab4b50f5c1acee380ca0e57f43d8300d6c6b8 hrtimer_init_sleeper() calls require a prior initialisation of the hrtimer object with hrtimer_init(). Lets make the initialisation of diff --git a/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch b/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch index 8883a33f1..5715e057d 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/342] hrtimers: Prepare full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ff266a71965e444605aee13d7b449196b60a9cb6 +Subject: [PATCH 099/351] hrtimers: Prepare full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=18791268204a236b73607c8e4cbb4734da37426e Make cancellation of a running callback in softirq context safe against preemption. 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 06a7570b8..fc8506ceb 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/342] hrtimer: by timers by default into the softirq +Subject: [PATCH 100/351] 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=f68468a5cbe2c273bed160e13102b7ed2a2dc653 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=89282e2a055b47694e78836cc63efb94ec30aa73 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 89d07312e58c..037dbe04fda2 100644 +index 027941e3df68..9699f3735a55 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c -@@ -2258,7 +2258,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu) +@@ -2262,7 +2262,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu) apic->vcpu = vcpu; hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, @@ -87,7 +87,7 @@ index ba66ea3ca705..11e9bbad4878 100644 /* diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3c5999476609..0f949b7738fd 100644 +index 116b2d65f4e3..98a994f98fbd 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -315,7 +315,7 @@ static void hrtick_rq_init(struct rq *rq) @@ -100,10 +100,10 @@ index 3c5999476609..0f949b7738fd 100644 } #else /* CONFIG_SCHED_HRTICK */ diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index 95ebbb2074c7..1a285367081c 100644 +index 9243d0049714..52acbb31a777 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c -@@ -1086,7 +1086,7 @@ void init_dl_task_timer(struct sched_dl_entity *dl_se) +@@ -1105,7 +1105,7 @@ void init_dl_task_timer(struct sched_dl_entity *dl_se) { struct hrtimer *timer = &dl_se->dl_timer; @@ -129,7 +129,7 @@ index 16940416d526..d804b5443bb9 100644 cfs_b->distribute_running = 0; } diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 52b55144d8ad..a2f2c6c91e05 100644 +index a068884c369f..b15428ede6cf 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) @@ -219,7 +219,7 @@ index e774a49176cc..012bc81879bf 100644 /* Get the next period (per-CPU) */ diff --git a/kernel/watchdog.c b/kernel/watchdog.c -index 6d60701dc636..328620fe85f6 100644 +index 44096c4f4d60..bd381bfe7fa4 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -485,7 +485,7 @@ static void watchdog_enable(unsigned int cpu) 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 f80f74104..10703885b 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/342] sched/fair: Make the hrtimers non-hard again -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=90e4dd88198300e2cff6390921e007f8c9b65cd2 +Subject: [PATCH 101/351] sched/fair: Make the hrtimers non-hard again +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f95707e37e5a72313b6af6c3a680339ecd28c984 Since commit "sched/fair: Robustify CFS-bandwidth timer locking" both hrtimer can run in softirq context because now interrupts are disabled 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 1090eca9f..0fc9d2f2f 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/342] hrtimer: Move schedule_work call to helper thread -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb8fb1f4b937d13140f8318d40aa918bb3d56c6a +Subject: [PATCH 102/351] hrtimer: Move schedule_work call to helper thread +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9e8e9dc46083762d86515ef6889930f05d128cb3 When run ltp leapsec_timer test, the following call trace is caught: 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 1f6332c5b..4a6296d99 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/342] hrtimer: move state change before hrtimer_cancel in +Subject: [PATCH 103/351] 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=caa78d03cd12d437e13c46990f9bbf0d5e4213a2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=267d544f94bf3b3faae448fb614cde6ea57d1bb1 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 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 cfb97e0ec..21c4c89f4 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/342] posix-timers: Thread posix-cpu-timers on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9fccc98390795269e7eadabb5d45da878152469 +Subject: [PATCH 104/351] posix-timers: Thread posix-cpu-timers on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=869ba66cccb83e6b6fa385a378e1a0eb62b30e06 posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -18,10 +18,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 4 files changed, 164 insertions(+), 3 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 56047f57ebc7..5369eb1fd456 100644 +index 96b1e60d2444..92faffe9ecf0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -832,6 +832,9 @@ struct task_struct { +@@ -836,6 +836,9 @@ struct task_struct { #ifdef CONFIG_POSIX_TIMERS struct task_cputime cputime_expires; struct list_head cpu_timers[3]; 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 35ae45e9c..2ef8de15f 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/342] sched: Move task_struct cleanup to RCU -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db20a0cee5b392d2b8ed3c4190f110cb0bb4190f +Subject: [PATCH 105/351] sched: Move task_struct cleanup to RCU +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a264f82c1ecb578701edbdf97f8d040ad1f9cba __put_task_struct() does quite some expensive work. We don't want to burden random tasks with that. @@ -14,10 +14,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 5369eb1fd456..5e2ec9c86b4b 100644 +index 92faffe9ecf0..d627469bab35 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1196,6 +1196,9 @@ struct task_struct { +@@ -1200,6 +1200,9 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif 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 9be17c7d6..9693134b7 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/342] 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=f99e05418d4105ecba282a7b0f8213164425f903 +Subject: [PATCH 106/351] 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=c8d0aca09270aaacbb5a4ffd4e9e42e9cf28531a Put an upper limit on the number of tasks which are migrated per batch to avoid large latencies. @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 4 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 0f949b7738fd..4cc39856c4c6 100644 +index 98a994f98fbd..a291133f169f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -44,7 +44,11 @@ const_debug unsigned int sysctl_sched_features = 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 c0c665ee2..5c561e80e 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/342] sched: Move mmdrop to RCU on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8de90b6c82e68a3d721e0eab2caedb37ba27386a +Subject: [PATCH 107/351] sched: Move mmdrop to RCU on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1fda01d66505c00694bf701fee98783bfd51188 Takes sleeping locks and calls into the memory allocator, so nothing we want to do in task switch and oder atomic contexts. @@ -83,7 +83,7 @@ index f5a4c42233f0..114ff9724b02 100644 { struct mm_struct *mm; diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 4cc39856c4c6..676b9b213991 100644 +index a291133f169f..632999d01f73 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2734,9 +2734,13 @@ static struct rq *finish_task_switch(struct task_struct *prev) @@ -101,7 +101,7 @@ index 4cc39856c4c6..676b9b213991 100644 } if (unlikely(prev_state == TASK_DEAD)) { if (prev->sched_class->task_dead) -@@ -5603,6 +5607,7 @@ void sched_setnuma(struct task_struct *p, int nid) +@@ -5604,6 +5608,7 @@ void sched_setnuma(struct task_struct *p, int nid) #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_HOTPLUG_CPU 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 b5ae2dbe7..4f27963b7 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/342] kernel/sched: move stack + kprobe clean up to +Subject: [PATCH 108/351] 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=3dd0ebab3223ff2fcf7a12a1ee3bf1ad46d17b85 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7845c522934f431f6d3ca31934e2461c89800c38 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 @@ -45,7 +45,7 @@ index 114ff9724b02..efe690af29f1 100644 task_numa_free(tsk, true); security_task_free(tsk); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 676b9b213991..089779e18440 100644 +index 632999d01f73..4763faddac6b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2746,15 +2746,6 @@ static struct rq *finish_task_switch(struct task_struct *prev) 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 0340f4f44..3a5c8ac62 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/342] sched: Add saved_state for tasks blocked on sleeping +Subject: [PATCH 109/351] 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=2b049915c871102cb82a98f65f734bdf7963f933 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93ed8db7e6295b227c390bffa860f7e5e833d6e4 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 @@ -18,10 +18,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 5e2ec9c86b4b..1b2884889dd0 100644 +index d627469bab35..44a5e80481bb 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -600,6 +600,8 @@ struct task_struct { +@@ -604,6 +604,8 @@ struct task_struct { #endif /* -1 unrunnable, 0 runnable, >0 stopped: */ volatile long state; @@ -30,7 +30,7 @@ index 5e2ec9c86b4b..1b2884889dd0 100644 /* * This begins the randomizable portion of task_struct. Only -@@ -1621,6 +1623,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); +@@ -1625,6 +1627,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -39,7 +39,7 @@ index 5e2ec9c86b4b..1b2884889dd0 100644 #ifdef CONFIG_SMP diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 089779e18440..3ec69104d0e0 100644 +index 4763faddac6b..165df30aad7b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2002,8 +2002,27 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) 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 9d2a2a801..574609567 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/342] sched: Do not account rcu_preempt_depth on RT in +Subject: [PATCH 110/351] 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=46c7e6ef6b0afa0ef14f78ebafb0de5027ff2a1a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c33fbefa2d8dbc37a5298a428f24021f34b3285 RT changes the rcu_preempt_depth semantics, so we cannot check for it in might_sleep(). @@ -39,10 +39,10 @@ index 68cbe111420b..027c58cdbb6e 100644 /* Internal to kernel */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3ec69104d0e0..52e821ac5872 100644 +index 165df30aad7b..b375f10ca8f8 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -6192,7 +6192,7 @@ void __init sched_init(void) +@@ -6193,7 +6193,7 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { 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 02abd27d7..66930bd89 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/342] 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=ad711b8b50c3ec2c9eb719a8dd713462e9480baa +Subject: [PATCH 111/351] 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=4951308b85f29382d1cf1f29287bf908dd20c9f9 RT does not increment preempt count when a 'sleeping' spinlock is locked. Update PREEMPT_LOCK_OFFSET for that case. 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 0cc8404ca..71a35061c 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/342] sched: Disable TTWU_QUEUE on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c761744fc89f74ee4646f732e2f7589faa095af3 +Subject: [PATCH 112/351] sched: Disable TTWU_QUEUE on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2f3635713fb3360b9ce65703477a4db96cd8064 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 cac51e0af..47f7cff3e 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/342] sched/workqueue: Only wake up idle workers if not +Subject: [PATCH 113/351] 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=317447a5b3d776b6cfd3c4c98050fcd97322e4d8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb80c24da74db0be170d2e19868ad5eb355a27b0 In -rt, most spin_locks() turn into mutexes. One of these spin_lock conversions is performed on the workqueue gcwq->lock. When the idle @@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 52e821ac5872..dadf92046f01 100644 +index b375f10ca8f8..54f22c835740 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3544,8 +3544,10 @@ static void __sched notrace __schedule(bool preempt) 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 40b318eb7..26a09df27 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/342] rt: Increase/decrease the nr of migratory tasks when +Subject: [PATCH 114/351] 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=7cec25c101288e60f1ff32098dcf7f6ddb34cce0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f12714dbfa30e40ef8023d652f115cb6ff2ad99d There is a problem in the migrate_disable()/enable() implementation regarding the number of migratory tasks in the rt/dl RQs. The problem @@ -81,10 +81,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index dadf92046f01..ba6f445ac9e8 100644 +index 54f22c835740..7b4752fa34d1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7179,6 +7179,47 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7180,6 +7180,47 @@ const u32 sched_prio_to_wmult[40] = { #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) @@ -132,7 +132,7 @@ index dadf92046f01..ba6f445ac9e8 100644 void migrate_disable(void) { struct task_struct *p = current; -@@ -7202,10 +7243,9 @@ void migrate_disable(void) +@@ -7203,10 +7244,9 @@ void migrate_disable(void) } preempt_disable(); @@ -145,7 +145,7 @@ index dadf92046f01..ba6f445ac9e8 100644 preempt_enable(); } -@@ -7237,9 +7277,8 @@ void migrate_enable(void) +@@ -7238,9 +7278,8 @@ void migrate_enable(void) preempt_disable(); 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 dce52eae4..594e332d9 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/342] hotplug: Lightweight get online cpus -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9830fd079687f2127d5cfc53c16f8d4d0e1cfb19 +Subject: [PATCH 115/351] hotplug: Lightweight get online cpus +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e035a899f179507ef0a952663aaa96e83989be51 get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -68,10 +68,10 @@ index c9ca190ec034..f4c49bbc3fa3 100644 void cpus_read_lock(void) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index ba6f445ac9e8..ed79f921a84e 100644 +index 7b4752fa34d1..b1771f3de84a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7243,6 +7243,7 @@ void migrate_disable(void) +@@ -7244,6 +7244,7 @@ void migrate_disable(void) } preempt_disable(); @@ -79,7 +79,7 @@ index ba6f445ac9e8..ed79f921a84e 100644 migrate_disable_update_cpus_allowed(p); p->migrate_disable = 1; -@@ -7308,12 +7309,15 @@ void migrate_enable(void) +@@ -7309,12 +7310,15 @@ void migrate_enable(void) arg.task = p; arg.dest_cpu = dest_cpu; 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 26dc37a7e..e612118cc 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/342] trace: Add migrate-disabled counter to tracing output -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5252ba8da88a7390c388073a08dcc5eba3206046 +Subject: [PATCH 116/351] trace: Add migrate-disabled counter to tracing output +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4f8fdde1b3678b5833d803cc42a6be3c119fe2af Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- @@ -52,10 +52,10 @@ index 5b7a6e9b0ab6..5cb37fa71316 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 1ca64a9296d0..fbb04cf1d5bc 100644 +index d2f9146d1ad7..ddda660b84f9 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c -@@ -188,6 +188,8 @@ static int trace_define_common_fields(void) +@@ -189,6 +189,8 @@ static int trace_define_common_fields(void) __common_field(unsigned char, flags); __common_field(unsigned char, preempt_count); __common_field(int, pid); 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 edeec8c3e..3ea9b9bcc 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/342] lockdep: Make it RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3079bca07ad3f83c30c86e9542e7edb1c7f2ed70 +Subject: [PATCH 117/351] lockdep: Make it RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=111ccdb78876a9e7e8dbec25cb2b1815aa53ab20 teach lockdep that we don't really do softirqs on -RT. 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 6c3880cdb..4d51123ea 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/342] tasklet: Prevent tasklets from going into infinite +Subject: [PATCH 118/351] 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=e11d4ceb7976f9f4bb42ed76c972b28cc32c295f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=842018f53f2583b16e1553f3443162e7f8e5e4e9 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 c12437f64..163f9d22a 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/342] softirq: Check preemption after reenabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c36de62cf384d49f3a0f23f7502b17c1be03ceb +Subject: [PATCH 119/351] softirq: Check preemption after reenabling interrupts +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=edfadd52335e1c2709012ff052173aaa8bee23f7 raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -116,7 +116,7 @@ index 86a709954f5a..9c069ef83d6d 100644 return 0; } diff --git a/net/core/dev.c b/net/core/dev.c -index 42f6ff8b9703..b8e3ae050bcc 100644 +index 880b096eef8a..b11a0189124d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2725,6 +2725,7 @@ static void __netif_reschedule(struct Qdisc *q) 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 458995fb2..5f1ebbc71 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/342] softirq: Disable softirq stacks for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=accf186584b07cb6c604b5f165381367dad68b9e +Subject: [PATCH 120/351] softirq: Disable softirq stacks for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8aff4d895825375152ceb183fd81b8a9d4921921 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 1744900fe..8940a458a 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/342] softirq: Split softirq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b2084eea88470c1ab4999158ba663263ffe62cc +Subject: [PATCH 121/351] softirq: Split softirq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b4331c68b1951abae16632083ed35fd2f6d7789 The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which @@ -177,10 +177,10 @@ index 9984f2b75b73..27c3176d88d2 100644 #define in_task() (!(preempt_count() & \ (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET))) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 1b2884889dd0..63a97f24d138 100644 +index 44a5e80481bb..bf13a967491e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1200,6 +1200,8 @@ struct task_struct { +@@ -1204,6 +1204,8 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; @@ -189,7 +189,7 @@ index 1b2884889dd0..63a97f24d138 100644 #endif #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; -@@ -1397,6 +1399,7 @@ extern struct pid *cad_pid; +@@ -1401,6 +1403,7 @@ extern struct pid *cad_pid; /* * Per process flags */ 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 2bad52b3c..35e7901f4 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/342] 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=90c011694ab18ee6bf1ed891fd489a5ec95ffb1a +Subject: [PATCH 122/351] 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=3dd730875c01ae6a3216ede09dafed368fcd7a8a 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,7 +18,7 @@ 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 b8e3ae050bcc..315bdaf00ac8 100644 +index b11a0189124d..add05f74ba38 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4537,11 +4537,9 @@ int netif_rx_ni(struct sk_buff *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 75cdbf25f..14943be50 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/342] genirq: Allow disabling of softirq processing in irq +Subject: [PATCH 123/351] 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=fcae9108c6950e37988deba7ca6c824ccb1c97cc +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5c7cadec0dc0ec451f60a23a21c8e1c9dbd298f2 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 4413600e9..195df2b00 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/342] softirq: split timer softirqs out of ksoftirqd -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=df12f0ccfce0f4ac8542c56f719e8f2f71a65f2a +Subject: [PATCH 124/351] softirq: split timer softirqs out of ksoftirqd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=00591fd6ff8548bff5a45ad725a435f31da6484b 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 ce57380af..ec8958196 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/342] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 125/351] 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=96d9095dbc28be31e65da4563d72dca0813eccbf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3656ad07294bb694dcb23d7c402b6f28339beafc 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 3615bb40a..3fc9df139 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/342] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 126/351] 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=29f30ebce0eb689baf7f7b34e71797872822a58d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=69f5153e7f1652483c78774022844be37eefbcd4 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 291d8d372..535a5bcaa 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/342] rtmutex: trylock is okay on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f76f4735aed998bb2c03c61a89230b757a4fe952 +Subject: [PATCH 127/351] rtmutex: trylock is okay on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aca2cbeb348d796df3306d9f3aee897235b3dc19 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 bf211c1b5..235a9a1c3 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/342] fs/nfs: turn rmdir_sem into a semaphore -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6fb5ec130d9a1ccb20b3cea61c5b177c798e898c +Subject: [PATCH 128/351] fs/nfs: turn rmdir_sem into a semaphore +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3506eb98111a4728cff279a6efc90db5600a1e73 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 8befd5d3f..c9005afe2 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/342] rtmutex: Handle the various new futex race conditions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f36213e96b6be3d94dda72b8b3d6dbe386346a1 +Subject: [PATCH 129/351] rtmutex: Handle the various new futex race conditions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87defa1c67a6936496ff138d852327de93790c03 RT opens a few new interesting race conditions in the rtmutex/futex combo due to futex hash bucket lock being a 'sleeping' spinlock and 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 74ad7a1cb..b296aebdc 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/342] 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=a211a6391b03430c4bd22cf99ebe8e4412a76fc1 +Subject: [PATCH 130/351] 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=b91f0a4ed2048e086d3787e48816c961fefb74f3 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 aecdc337a..1ef64a486 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/342] futex: Ensure lock/unlock symetry versus pi_lock and +Subject: [PATCH 131/351] 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=9b9b23148e1ee440fb6709067736cfa33b4c4f27 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c0e7d88a0e4c773f20ccfc49eaaa5e2a4a4d2a98 In exit_pi_state_list() we have the following locking construct: 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 25d9273ac..c488054a3 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/342] pid.h: include atomic.h -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ebc8e476657349538056e71e80aa977057972195 +Subject: [PATCH 132/351] pid.h: include atomic.h +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56bdb37f8349a9206791ca7112f76f085cd97053 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 1b2825108..89f7999d5 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/342] arm: include definition for cpumask_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d65c1c9c5bf77db5005a8b99a0c703f5bb892fcb +Subject: [PATCH 133/351] arm: include definition for cpumask_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af54c02857b13e640014f46b568c88244623fbf6 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 b548ef966..b244586f7 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/342] locking: locktorture: Do NOT include rwlock.h +Subject: [PATCH 134/351] locking: locktorture: Do NOT include rwlock.h directly -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cc9d1be680177e81b590286d422a410a747aaeb4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fe91471c8c82661ea5869a8f4fe29226dcdea4a4 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 d97f3545b..4553d5e5d 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/342] rtmutex: Add rtmutex_lock_killable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ab6b6c8bc1aabe6b845f3f27a2e1177591c6f619 +Subject: [PATCH 135/351] rtmutex: Add rtmutex_lock_killable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88f6577c4fb59ca7ef8760561f80a6dea788ddbc 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 394058af8..865eee08c 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/342] rtmutex: Make lock_killable work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61fa01d84f2b1b35d66b69c4b7fda86f45ad7d50 +Subject: [PATCH 136/351] rtmutex: Make lock_killable work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbf7123998ba54e81012475000c6708088804590 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 1b5e85469..e5c86f274 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/342] spinlock: Split the lock types header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c79f3fea34f5b6aa30f2e97c8d5dcb95fd161f64 +Subject: [PATCH 137/351] spinlock: Split the lock types header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=835910505452d94466b0d87fee584b8159b3b6eb 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 44a5be729..c6832a94f 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/342] rtmutex: Avoid include hell -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c34fc8975a05f3be15d042b8e1a195fe2e406e7e +Subject: [PATCH 138/351] rtmutex: Avoid include hell +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6cf62501b5f4caa77de7214c81ba71f60d38f517 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 ef16640ab..d31fd381b 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/342] rbtree: don't include the rcu header +Subject: [PATCH 139/351] 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=89a313db5ff54e6ebe97cd147bc27e27e7448732 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3aae1dd0ed999b612c527c0a456f2ff5db5042e2 The RCU header pulls in spinlock.h and fails due not yet defined types: 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 17f0a56e5..d15c1d325 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/342] rtmutex: Provide rt_mutex_slowlock_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53cb0c772c30a3f534246da306630892657aee07 +Subject: [PATCH 140/351] rtmutex: Provide rt_mutex_slowlock_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=32da04034f5c21e8dd44d8859a74b44f4a75437b 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 41b28d266..3253b2eb6 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/342] rtmutex: export lockdep-less version of rt_mutex's +Subject: [PATCH 141/351] 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=5dbdcffac97ac1a307e15a14592c3e8d837766c4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c24a0727689de5d4de97056bd23226d5ea1d5d5e 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 0891c9fa3..554cf0dac 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/342] rtmutex: add sleeping lock implementation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba50c47e65ffab81bd256813390bbdf7f4c7ff22 +Subject: [PATCH 142/351] rtmutex: add sleeping lock implementation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aeb2fe1f0d08e5e10e6cdccad7ebc570e2412d4f Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> @@ -102,7 +102,7 @@ index a355289b1fa1..138bd1e183e0 100644 * rt_mutex_is_locked - is the mutex locked * @lock: the mutex to be queried diff --git a/include/linux/sched.h b/include/linux/sched.h -index 63a97f24d138..e4e206a1e7dd 100644 +index bf13a967491e..1bdb44910261 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -134,6 +134,9 @@ struct task_group; @@ -133,7 +133,7 @@ index 63a97f24d138..e4e206a1e7dd 100644 /* * set_special_state() should be used for those states when the blocking task * can not use the regular condition based wait-loop. In that case we must -@@ -914,6 +921,7 @@ struct task_struct { +@@ -918,6 +925,7 @@ struct task_struct { raw_spinlock_t pi_lock; struct wake_q_node wake_q; @@ -1144,7 +1144,7 @@ index 53a8c5d03d28..7c1dd1bd95c7 100644 #ifdef CONFIG_DEBUG_RT_MUTEXES # include "rtmutex-debug.h" diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index ed79f921a84e..1f450a7649f0 100644 +index b1771f3de84a..d448d4768507 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -401,9 +401,15 @@ static bool set_nr_if_polling(struct task_struct *p) 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 ab0dfe716..81ac49bbe 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/342] rtmutex: add mutex implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0721909250ea1708b9a71d403791a6d0d1c847bf +Subject: [PATCH 143/351] rtmutex: add mutex implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=692bc4be34ce8b072c663df403dee5d1ff2d1edf 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 b045cbb85..b403e34de 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/342] rtmutex: add rwsem implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a50802f1a28bc3efc3da58b2dc02e2ce9e262bf7 +Subject: [PATCH 144/351] rtmutex: add rwsem implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9d009b9784f5fb819228761e8c43c15eed2c456 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 a23eb96df..ca4ec6522 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/342] rtmutex: add rwlock implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=15018c2ebb240be9c688212d67e7ccef0a0b76c3 +Subject: [PATCH 145/351] rtmutex: add rwlock implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7e575d30efc07fdf41c42e279cfc7e86f770bee5 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 6eca4e175..169c589c9 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/342] rtmutex/rwlock: preserve state like a sleeping lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a394b6d10212e9724d148f88c5ca736270ad2967 +Subject: [PATCH 146/351] rtmutex/rwlock: preserve state like a sleeping lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c6ae3427e4d697b6c663c992da53d43f4e9c9e3 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 30f210655..0b5eb09bd 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/342] rtmutex: wire up RT's locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=15d882ef5f548758242ab6f1ef81b06189619403 +Subject: [PATCH 147/351] rtmutex: wire up RT's locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40562ef5910bd6b47337d1c78e86aeabf4ffe5ef 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 6241aed37..f4030c34a 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/342] rtmutex: add ww_mutex addon for mutex-rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09033e8bd64e77065eceb62cd95fa1054dbd4b84 +Subject: [PATCH 148/351] rtmutex: add ww_mutex addon for mutex-rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=364264a221705e0d3168cee361d8c33cd0b8765a 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 4e04f34aa..e297312f2 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/342] kconfig: Add PREEMPT_RT_FULL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=602f4e43efe1b27b4acd0a6f09186d0d2aa71a24 +Subject: [PATCH 149/351] kconfig: Add PREEMPT_RT_FULL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=50403d3662b97dc86aad24ce9aaf70eac7243e9d 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 baf9bfc92..0759be8c6 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/342] locking/rt-mutex: fix deadlock in device mapper / +Subject: [PATCH 150/351] 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=5d5e1d7efa41d6c8e4e40b2505c073c13555f8cf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1b102410a832da4c5605c6bcd58840065a6c371 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 27c354d1d..a35807a76 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/342] 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=0997f874d638be3d2f65de4bf3d9710d1e5bc2d8 +Subject: [PATCH 151/351] 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=1581ef1c4659083458124c21aeca498adf9951b1 __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 d79f148a7..d6671ebf2 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/342] locking/rtmutex: re-init the wait_lock in +Subject: [PATCH 152/351] 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=33986efd8958c2bf3bbd528799dcb6cba9aaef50 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=969797c8c974dc599312a4609570f755bead0c4b 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 2fffa6e73..1ed66fb0d 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/342] ptrace: fix ptrace vs tasklist_lock race -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb675ae1b0511d73895bd276d65c88740717b40b +Subject: [PATCH 153/351] ptrace: fix ptrace vs tasklist_lock race +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb736d5bbc7154b40fd917ad3d2c6b6665f9cf0b As explained by Alexander Fyodorov <halcy@yandex.ru>: @@ -30,7 +30,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 3 files changed, 68 insertions(+), 7 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h -index e4e206a1e7dd..5374ade34b87 100644 +index 1bdb44910261..c0ee1caf5a9b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -101,12 +101,8 @@ struct task_group; @@ -46,7 +46,7 @@ index e4e206a1e7dd..5374ade34b87 100644 #define task_contributes_to_load(task) ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ (task->flags & PF_FROZEN) == 0 && \ (task->state & TASK_NOLOAD) == 0) -@@ -1717,6 +1713,51 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) +@@ -1721,6 +1717,51 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -119,7 +119,7 @@ index bf8360e86f62..9078fdefc6e0 100644 } spin_unlock_irq(&task->sighand->siglock); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 1f450a7649f0..9494e2007118 100644 +index d448d4768507..8586d8834f5e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1349,6 +1349,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, 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 0780d303e..ac6bf85ef 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/342] rtmutex: annotate sleeping lock context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=776ea97a6f953041a1ba42eafc4148ee1687f731 +Subject: [PATCH 154/351] rtmutex: annotate sleeping lock context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=553e5540bb68f9d632ea835f006f7285a0656d62 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 @@ -53,10 +53,10 @@ index 27c3176d88d2..9eafc34898b4 100644 #define migrate_disable() barrier() #define migrate_enable() barrier() diff --git a/include/linux/sched.h b/include/linux/sched.h -index 5374ade34b87..4f8fcba23c1d 100644 +index c0ee1caf5a9b..08971062c194 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -673,6 +673,15 @@ struct task_struct { +@@ -677,6 +677,15 @@ struct task_struct { # ifdef CONFIG_SCHED_DEBUG int migrate_disable_atomic; # endif @@ -72,7 +72,7 @@ index 5374ade34b87..4f8fcba23c1d 100644 #endif #ifdef CONFIG_PREEMPT_RCU -@@ -1810,6 +1819,23 @@ static __always_inline bool need_resched(void) +@@ -1814,6 +1823,23 @@ static __always_inline bool need_resched(void) return unlikely(tif_need_resched()); } @@ -249,10 +249,10 @@ index 5f6de49dc78e..35f3552b7463 100644 !t->rcu_read_unlock_special.b.blocked) { diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 9494e2007118..555dea10764e 100644 +index 8586d8834f5e..22b49744a3d9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7348,4 +7348,49 @@ void migrate_enable(void) +@@ -7349,4 +7349,49 @@ void migrate_enable(void) preempt_enable(); } EXPORT_SYMBOL(migrate_enable); 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 4ed82ea97..2c050e602 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/342] sched/migrate_disable: fallback to preempt_disable() +Subject: [PATCH 155/351] 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=1e31f6ab66216ee3cd7976b73cf11a8f8f0ab55f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45c69023a6783aef1cdde83c05006953e80582b6 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 @@ -70,10 +70,10 @@ index 9eafc34898b4..ed8413e7140f 100644 { return 0; diff --git a/include/linux/sched.h b/include/linux/sched.h -index 4f8fcba23c1d..ceb3bdfb6bc4 100644 +index 08971062c194..3bc6b3206e14 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -667,7 +667,7 @@ struct task_struct { +@@ -671,7 +671,7 @@ struct task_struct { int nr_cpus_allowed; const cpumask_t *cpus_ptr; cpumask_t cpus_mask; @@ -82,7 +82,7 @@ index 4f8fcba23c1d..ceb3bdfb6bc4 100644 int migrate_disable; int migrate_disable_update; # ifdef CONFIG_SCHED_DEBUG -@@ -675,8 +675,8 @@ struct task_struct { +@@ -679,8 +679,8 @@ struct task_struct { # endif #elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) @@ -93,7 +93,7 @@ index 4f8fcba23c1d..ceb3bdfb6bc4 100644 # endif #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 555dea10764e..0c44c16244a1 100644 +index 22b49744a3d9..630e726acdd2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1031,7 +1031,7 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma @@ -123,7 +123,7 @@ index 555dea10764e..0c44c16244a1 100644 if (__migrate_disabled(p)) { p->migrate_disable_update = 1; goto out; -@@ -7204,7 +7204,7 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7205,7 +7205,7 @@ const u32 sched_prio_to_wmult[40] = { #undef CREATE_TRACE_POINTS @@ -132,7 +132,7 @@ index 555dea10764e..0c44c16244a1 100644 static inline void update_nr_migratory(struct task_struct *p, long delta) -@@ -7352,45 +7352,44 @@ EXPORT_SYMBOL(migrate_enable); +@@ -7353,45 +7353,44 @@ EXPORT_SYMBOL(migrate_enable); #elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) void migrate_disable(void) { 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 cca123ab3..02a185487 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/342] locking: don't check for __LINUX_SPINLOCK_TYPES_H on +Subject: [PATCH 156/351] 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=8ab0fecbe8b849e10b94a02f931ef52a238372cc +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ff53da4bff019a3522340011b04e29fe2d045bb4 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 6598a1655..306a8cc2f 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/342] rcu: Frob softirq test -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=628969206bda92fd3cb80f9a7f60d46f759f6ff3 +Subject: [PATCH 157/351] rcu: Frob softirq test +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f70612a68dc5b44cc40eae34d239e05d06c754ab 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 2b96eb9c6..9bd8f8d5a 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/342] rcu: Merge RCU-bh into RCU-preempt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e8243820023d1864d3416ab5ecae7c3537625b9e +Subject: [PATCH 158/351] rcu: Merge RCU-bh into RCU-preempt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=06862d99cf60d93afdc8bdb45b8c8859a61f48cb The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, 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 e166211d1..31e7a7f08 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/342] rcu: Make ksoftirqd do RCU quiescent states -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=910ed8de1b690c46028f322611f08647be22a46e +Subject: [PATCH 159/351] rcu: Make ksoftirqd do RCU quiescent states +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=79dcd4ab14bb75bb6a07e7d03c68eea1a2e59e14 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 00533902b..740e5df8c 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/342] rcu: Eliminate softirq processing from rcutree -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6956a4a5226c57030ab0f03a099961a7912622c +Subject: [PATCH 160/351] rcu: Eliminate softirq processing from rcutree +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=67b40435052173f46e033a6efab379495f1c875e 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 f59184c6f..26401b4bb 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/342] srcu: use cpu_online() instead custom check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40f0daab09838e3cb2bb289fd81961d4b99a371b +Subject: [PATCH 161/351] srcu: use cpu_online() instead custom check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f05eb0c288f3567fef98eb7f15cf10c0d127ebe 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 b6f85e0af..0feb71e70 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/342] srcu: replace local_irqsave() with a locallock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2fc8ab8893cf5d21d8f969355bfafef1e2d061f9 +Subject: [PATCH 162/351] srcu: replace local_irqsave() with a locallock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7197d35e35853da7cd81d701e92c1ea09e0d8fbb 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 deabd95f6..5cd7caddc 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/342] 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=2a0165d80207502259764b4e08ff9292ec282d14 +Subject: [PATCH 163/351] 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=55cb72a44f355ceafa38471122b23a51ac59fdd9 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 34496fcb7..c78c8cc0c 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/342] tty/serial/omap: Make the locking RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=21dad8bb64706a3b67bd55dc0e9bbc20e87e5975 +Subject: [PATCH 164/351] tty/serial/omap: Make the locking RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c332491e79cabb61063862a86e0cbddd7704c39 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 9bb7c51b0..209ed61bd 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/342] 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=4fdbc8d0d5cf770ae17bc4112cb279784d1e78de +Subject: [PATCH 165/351] 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=ea773575f22c250996b10c85b48267f6266a47bb 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 963fe9faf..33d88b4c3 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/342] tty: serial: pl011: explicitly initialize the flags +Subject: [PATCH 166/351] 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=2a2684c06eb6b87c6cd8a915f01cd285ae4acec1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3bb62a5bc5bf67845e898bd9b8ce8e44502def17 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 5fbfa68c3..e9c728350 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/342] rt: Improve the serial console PASS_LIMIT +Subject: [PATCH 167/351] 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=c489a37730ab7dc6711eaf529e620ffa4a040083 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=54f38c5acf4d18362d5186c7756b78e5321249ed 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 e80b1a15e..838a8f725 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/342] 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=9baedf4a77e41542731e04db12fe39ec29b3f547 +Subject: [PATCH 168/351] 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=d293d6a4bedffd2f361e3057a0290331aab3caa7 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 f11d1202566e..33d489691fdf 100644 +index 6fc89888a52e..15a92d855ca7 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c -@@ -3298,10 +3298,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3303,10 +3303,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 2691f7f99..7748d1b46 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/342] locking/percpu-rwsem: Remove preempt_disable variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6144b3d320a51f37923f97565c2075acfa272e2 +Subject: [PATCH 169/351] locking/percpu-rwsem: Remove preempt_disable variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3996cc801bbcf1bf7982692116491a05d11e6d98 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 efb35b78d..81e988eb8 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/342] mm: Protect activate_mm() by +Subject: [PATCH 170/351] 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=9c267b77756364bd7e03dfa8c35b44e8aac88a92 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2744d7008885b27cae3644145fcd16d9375ef68f 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 fd867af3a..a7bb2fed5 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/342] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD +Subject: [PATCH 171/351] 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=16d7e388305072fa331ed9314f101642caf833df +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa1bbdefa768d6776aa9355dbf060438c97cf3c8 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 5e95883cd..ffd494fa5 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/342] fs/dcache: disable preemption on i_dir_seq's write +Subject: [PATCH 172/351] 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=e5aa3cd1fb61377548b05992478366fa06df648a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=243086d979b7ad6dd457418734fd3bf7b36eac62 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 @@ -68,7 +68,7 @@ index b5e53587d14b..1ae163d54925 100644 rcu_read_unlock(); goto retry; diff --git a/fs/inode.c b/fs/inode.c -index c9eb5041ffae..e1fb0b743c96 100644 +index 5df2e8ee23ed..9cdec5f41e40 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -156,7 +156,7 @@ int inode_init_always(struct super_block *sb, struct inode *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 a8c04adce..b14dc20e9 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/342] squashfs: make use of local lock in multi_cpu +Subject: [PATCH 173/351] 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=cd15b8ea0b373f60c52fd336a51db28780e51ddf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=28a5885425f7c1b1988b6f9778abdf2ac6618820 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 55f25516b..0abd92c40 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/342] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80d2debabf144ce9ed2ba4ef7be880809eb9415e +Subject: [PATCH 174/351] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a5eb814bba630b57b3b562a0cbb1f43b755455d 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 83ea602c2..f6634261f 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/342] x86/fpu: Disable preemption around local_bh_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=71e8b8cd3f9e13bcfed104c93718b61839917f12 +Subject: [PATCH 175/351] x86/fpu: Disable preemption around local_bh_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43e9f2f66d607d2d2c00cd783b48ce1fbb6b3f8e __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 a38bf0919..1f24c35e3 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/342] fs/epoll: Do not disable preemption on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=39465cb875c530ab48723b2d7631fd7f39e0a332 +Subject: [PATCH 176/351] fs/epoll: Do not disable preemption on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de20909c36add2592e1fd5ec37b2c116b1054e20 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 a0fd78510..872bd62ce 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/342] mm/vmalloc: Another preempt disable region which +Subject: [PATCH 177/351] mm/vmalloc: Another preempt disable region which sucks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08f4a1f48722a9046148340af70b3e2fcde3eb75 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f2e80e7c6aa95e16a3bf5d27afb1bb6b0ba5f0d 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 ed3ebd629..1f4b0697e 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/342] block: mq: use cpu_light() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ceaaa62b2d57cc6c4ea2ea7dba6f6c266bd208b5 +Subject: [PATCH 178/351] block: mq: use cpu_light() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1db4f0ed568e7f616c7d8dfc6985231ae050beb 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 859ff09e8..fdd7ee444 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/342] block/mq: do not invoke preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb97e375c69de88bac89ad2d4b152f3ae23637ad +Subject: [PATCH 179/351] block/mq: do not invoke preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c970ba38e5079fc6d1560ce719231ec332f5da28 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 207cd80ff..7ee729b61 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/342] block/mq: don't complete requests via IPI -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e9380971f8b08119840af917fb3d20b44697363 +Subject: [PATCH 180/351] block/mq: don't complete requests via IPI +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7923bcefeab753e50d06c209f4af8832dda27365 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 148b94e4b..90a497e14 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/342] md: raid5: Make raid5_percpu handling RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ee5b72719d2eaaef95179f02ba27140ecc010e87 +Subject: [PATCH 181/351] md: raid5: Make raid5_percpu handling RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=215c75ad291ac658b1b6756853fcf92b7e781daa __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -19,10 +19,10 @@ 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 dad426cc0f90..73083d826cb5 100644 +index 7fe0619c487a..fdbe17d1b1c4 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -2069,8 +2069,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) +@@ -2070,8 +2070,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) struct raid5_percpu *percpu; unsigned long cpu; @@ -33,7 +33,7 @@ index dad426cc0f90..73083d826cb5 100644 if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { ops_run_biofill(sh); overlap_clear++; -@@ -2129,7 +2130,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) +@@ -2130,7 +2131,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) if (test_and_clear_bit(R5_Overlap, &dev->flags)) wake_up(&sh->raid_conf->wait_for_overlap); } @@ -43,7 +43,7 @@ index dad426cc0f90..73083d826cb5 100644 } static void free_stripe(struct kmem_cache *sc, struct stripe_head *sh) -@@ -6816,6 +6818,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) +@@ -6828,6 +6830,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) __func__, cpu); return -ENOMEM; } @@ -51,7 +51,7 @@ index dad426cc0f90..73083d826cb5 100644 return 0; } -@@ -6826,7 +6829,6 @@ static int raid5_alloc_percpu(struct r5conf *conf) +@@ -6838,7 +6841,6 @@ static int raid5_alloc_percpu(struct r5conf *conf) conf->percpu = alloc_percpu(struct raid5_percpu); if (!conf->percpu) return -ENOMEM; diff --git a/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch b/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch index 45763af0f..4eb51619d 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/342] rt: Introduce cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a90e8a8114c8293b082950723f161fb291c9a98 +Subject: [PATCH 182/351] rt: Introduce cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c23ee57332cab70fefb6e4bfdc189f61d600fac8 Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() 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 f559f43c0..2a32274a1 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/342] hrtimer: Don't lose state in cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=97dde541f771635fac327fcb3c43579f5a62e644 +Subject: [PATCH 183/351] hrtimer: Don't lose state in cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b04ba7e4cf4e2eaacd7cef517ff353dd3c7c0a74 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 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 7c2b86a09..9372f0ce4 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/342] hrtimer: cpu_chill(): save task state in +Subject: [PATCH 184/351] 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=250017b35e442ec3f0c0de915bc759b7c09970a4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=781af25fa18a1586f4a6e1690b49521a79ebd7cf 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. 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 a408a43f9..24cc36bab 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/342] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 185/351] 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=6a7adb1b98617edcc96b31d7e0540fa0c3e0028e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea6963bba2bb29ce40ebaf69a1911cb113ffb0f2 | 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 96077e1de..91a666ab0 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/342] block: Use cpu_chill() for retry loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09fd64566fb6662245eaad575fa0c9639974f404 +Subject: [PATCH 186/351] block: Use cpu_chill() for retry loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b021010d1896544df3c81965258e0911ce63f14 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 e25f891db..5764362ef 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/342] fs: dcache: Use cpu_chill() in trylock loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e02df13d5d60689b59c3c616e8d5e8b0b590f5ac +Subject: [PATCH 187/351] fs: dcache: Use cpu_chill() in trylock loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3842106559d0b7f9b1b644b62e0943bf41d0f1c0 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 842d973e9..c2d475d7c 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/342] net: Use cpu_chill() instead of cpu_relax() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08d2287893d5effd32a2d1c8821c3cf55702d8c2 +Subject: [PATCH 188/351] net: Use cpu_chill() instead of cpu_relax() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=005f9cf4461533015d3a1b5ccc5bbdbeeaf7b4bd 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/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 5e37f719f..1cf46cb64 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/342] fs/dcache: use swait_queue instead of waitqueue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7dde6c012afca804e922a5e807f06908f9170fe +Subject: [PATCH 189/351] fs/dcache: use swait_queue instead of waitqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6af69d2bbc226ecdacb1f944d8798b02c19c738 __d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock() which disables preemption. As a workaround convert it to swait. @@ -97,7 +97,7 @@ index 6098e0c7f87b..9ce28840684a 100644 if (!o->nodeid) { /* diff --git a/fs/namei.c b/fs/namei.c -index 327844fedf3d..5114c8111807 100644 +index c34ee9653559..83294b91b6bf 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1646,7 +1646,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, diff --git a/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch b/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch index da306db75..6e3b1f2b5 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/342] workqueue: Use normal rcu -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=320456e9c705d27e54f3896084adce4fc4930f86 +Subject: [PATCH 190/351] workqueue: Use normal rcu +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cee67a8812386cf151098b840ad3f043ec198571 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 b1bb6cb5802e..3e2f67b77ab8 100644 +index 4ea2f7fd20ce..d002a0ab68d6 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -128,7 +128,7 @@ enum { @@ -210,7 +210,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 return false; } -@@ -3350,7 +3355,7 @@ static void rcu_free_pool(struct rcu_head *rcu) +@@ -3348,7 +3353,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 b1bb6cb5802e..3e2f67b77ab8 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(). -@@ -3404,8 +3409,8 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3402,8 +3407,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 b1bb6cb5802e..3e2f67b77ab8 100644 } /** -@@ -3518,14 +3523,14 @@ static void pwq_unbound_release_workfn(struct work_struct *work) +@@ -3516,14 +3521,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 b1bb6cb5802e..3e2f67b77ab8 100644 } /** -@@ -4232,7 +4237,7 @@ void destroy_workqueue(struct workqueue_struct *wq) +@@ -4230,7 +4235,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 b1bb6cb5802e..3e2f67b77ab8 100644 } else { /* * We're the sole accessor of @wq at this point. Directly -@@ -4342,7 +4347,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4340,7 +4345,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) struct pool_workqueue *pwq; bool ret; @@ -266,7 +266,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4353,7 +4359,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4351,7 +4357,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 b1bb6cb5802e..3e2f67b77ab8 100644 return ret; } -@@ -4379,15 +4386,15 @@ unsigned int work_busy(struct work_struct *work) +@@ -4377,15 +4384,15 @@ unsigned int work_busy(struct work_struct *work) if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -296,7 +296,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 return ret; } -@@ -4572,7 +4579,7 @@ void show_workqueue_state(void) +@@ -4570,7 +4577,7 @@ void show_workqueue_state(void) unsigned long flags; int pi; @@ -305,7 +305,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 pr_info("Showing busy workqueues and worker pools:\n"); -@@ -4637,7 +4644,7 @@ void show_workqueue_state(void) +@@ -4635,7 +4642,7 @@ void show_workqueue_state(void) touch_nmi_watchdog(); } @@ -314,7 +314,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 } /* used to show worker information through /proc/PID/{comm,stat,status} */ -@@ -5024,16 +5031,16 @@ bool freeze_workqueues_busy(void) +@@ -5022,16 +5029,16 @@ bool freeze_workqueues_busy(void) * nr_active is monotonically decreasing. It's safe * to peek without lock. */ @@ -334,7 +334,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 } out_unlock: mutex_unlock(&wq_pool_mutex); -@@ -5235,7 +5242,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5233,7 +5240,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, const char *delim = ""; int node, written = 0; @@ -344,7 +344,7 @@ index b1bb6cb5802e..3e2f67b77ab8 100644 for_each_node(node) { written += scnprintf(buf + written, PAGE_SIZE - written, "%s%d:%d", delim, node, -@@ -5243,7 +5251,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5241,7 +5249,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 af0123dec..14b34fc5f 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/342] workqueue: Use local irq lock instead of irq disable +Subject: [PATCH 191/351] 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=db677b16afffaae08d8aa77b72025ae6155646ca +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c1728ed1dd59c5957012b24a6234fc3cf170af4 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 3e2f67b77ab8..2b4c052c51b3 100644 +index d002a0ab68d6..3cf50eac5351 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,6 +50,7 @@ @@ -149,7 +149,7 @@ index 3e2f67b77ab8..2b4c052c51b3 100644 } /** -@@ -3008,7 +3023,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3006,7 +3021,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 3e2f67b77ab8..2b4c052c51b3 100644 /* * This allows canceling during early boot. We know that @work -@@ -3069,10 +3084,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3067,10 +3082,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -171,7 +171,7 @@ index 3e2f67b77ab8..2b4c052c51b3 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3110,7 +3125,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3108,7 +3123,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 998f230b3..231bdc15f 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/342] workqueue: Prevent workqueue versus ata-piix livelock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7e44200efbc637bb4e2d7632e624fae8d13d050f +Subject: [PATCH 192/351] workqueue: Prevent workqueue versus ata-piix livelock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2d0ca5fb649be6d26aee5f3ff19ec8e870f37b9 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 2b4c052c51b3..6e73e3eaca5e 100644 +index 3cf50eac5351..50b037b79101 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -51,6 +51,7 @@ 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 a973153f3..f885d3f3e 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/342] sched: Distangle worker accounting from rqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ca2a73886fa457834e49ae8f2488d39428f7a6b +Subject: [PATCH 193/351] sched: Distangle worker accounting from rqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35aa7cdaff0e8ddfff9de6beb12bae216c821157 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 @@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 3 files changed, 47 insertions(+), 100 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 0c44c16244a1..11afaa2c618a 100644 +index 630e726acdd2..3849015303f6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1704,10 +1704,6 @@ static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_fl @@ -169,7 +169,7 @@ index 0c44c16244a1..11afaa2c618a 100644 EXPORT_SYMBOL(schedule); diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 6e73e3eaca5e..0c529f920232 100644 +index 50b037b79101..7561ac884a3e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -844,43 +844,32 @@ static void wake_up_worker(struct worker_pool *pool) diff --git a/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch b/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch index 84ba1e2bb..3eed7ea32 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/342] debugobjects: Make RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f4b31a6cffe2e681eb6631ee488dfb405b2cd8c +Subject: [PATCH 194/351] debugobjects: Make RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d6dea4e57ada7166ad21527d1f6153022aa1687f Avoid filling the pool / allocating memory with irqs off(). diff --git a/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch b/debian/patches-rt/0195-seqlock-Prevent-rt-starvation.patch index 9be672971..292195b07 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/342] seqlock: Prevent rt starvation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8072825488181a21a2f501d13d57d3220abcb7f3 +Subject: [PATCH 195/351] seqlock: Prevent rt starvation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=55168c0a00e26c468f05faedee2a4196eb0d6e6f If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. 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 c5f235d1e..851ab91fa 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/342] sunrpc: Make svc_xprt_do_enqueue() use +Subject: [PATCH 196/351] 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=228ab644582c29253ee82c543e2ebb2e63f1d55b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3f5bcdedbb0bb449888702e291046bdbbc85b56 |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 4625d57cb..b107d36b4 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,20 +1,21 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 12 Jul 2011 15:38:34 +0200 -Subject: [PATCH 197/342] net: Use skbufhead with raw lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f524a61883a8ae93a669bc5d257d7bd5ecb25b4f +Subject: [PATCH 197/351] net: Use skbufhead with raw lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=619cb3448d91f55316735c1ca4725b7d8b3d73e3 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 to the softirq and use the tofree_queue list for it (similar to process_queue). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -[bwh: Adjust context to apply on top of 4.19.257] --- include/linux/netdevice.h | 1 + include/linux/skbuff.h | 7 +++++++ net/core/dev.c | 26 ++++++++++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) +diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h +index 8d48b352ee74..d893dc112afc 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2990,6 +2990,7 @@ struct softnet_data { @@ -25,6 +26,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> }; +diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h +index f97734f34746..3ede4f0eac10 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -287,6 +287,7 @@ struct sk_buff_head { @@ -35,7 +38,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> }; struct sk_buff; -@@ -1735,6 +1736,12 @@ static inline void skb_queue_head_init(s +@@ -1735,6 +1736,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list) __skb_queue_head_init(list); } @@ -48,9 +51,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { +diff --git a/net/core/dev.c b/net/core/dev.c +index add05f74ba38..8ea1c7347987 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -219,14 +219,14 @@ static inline struct hlist_head *dev_ind +@@ -219,14 +219,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) static inline void rps_lock(struct softnet_data *sd) { #ifdef CONFIG_RPS @@ -67,7 +72,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #endif } -@@ -5858,7 +5858,9 @@ static int process_backlog(struct napi_s +@@ -5858,7 +5858,9 @@ static int process_backlog(struct napi_struct *napi, int quota) while (again) { struct sk_buff *skb; @@ -77,7 +82,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rcu_read_lock(); __netif_receive_skb(skb); rcu_read_unlock(); -@@ -5866,9 +5868,9 @@ static int process_backlog(struct napi_s +@@ -5866,9 +5868,9 @@ static int process_backlog(struct napi_struct *napi, int quota) if (++work >= quota) return work; @@ -88,7 +93,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rps_lock(sd); if (skb_queue_empty(&sd->input_pkt_queue)) { /* -@@ -6341,13 +6343,21 @@ static __latent_entropy void net_rx_acti +@@ -6341,13 +6343,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); @@ -110,7 +115,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> for (;;) { struct napi_struct *n; -@@ -9545,10 +9555,13 @@ static int dev_cpu_dead(unsigned int old +@@ -9545,10 +9555,13 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } 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 8bcd7bc6b..6a82958eb 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/342] 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=94836799f3c24696f98f3517a0681f167007fd18 +Subject: [PATCH 198/351] 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=0cd54619f2ddfd939c73b97d5318d50ffc142ee0 A softirq on -RT can be preempted. That means one task is in __dev_queue_xmit(), gets preempted and another task may enter @@ -142,10 +142,10 @@ index d893dc112afc..dfec34087039 100644 } diff --git a/include/linux/sched.h b/include/linux/sched.h -index ceb3bdfb6bc4..b7a357635d60 100644 +index 3bc6b3206e14..7aa299de5ebf 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1218,6 +1218,9 @@ struct task_struct { +@@ -1222,6 +1222,9 @@ struct task_struct { #endif #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; @@ -156,7 +156,7 @@ index ceb3bdfb6bc4..b7a357635d60 100644 int pagefault_disabled; #ifdef CONFIG_MMU diff --git a/net/core/dev.c b/net/core/dev.c -index c279375fa5b9..a59b1db02f8b 100644 +index 8ea1c7347987..78fd4ac06a1b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3833,10 +3833,14 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev) 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 ab1e08c6b..1baa7a1dd 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/342] net: provide a way to delegate processing a softirq +Subject: [PATCH 199/351] 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=9c6bc0e0c15e8990049af42ea7f423c9057c262d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78bd50361c1f17ea23a805e1b5903a9eb04afd0e 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,7 +71,7 @@ index 27a4bb2303d0..25bcf2f2714b 100644 * This function must run with irqs disabled! */ diff --git a/net/core/dev.c b/net/core/dev.c -index a59b1db02f8b..2bf357d5602b 100644 +index 78fd4ac06a1b..480c6d91c004 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6391,7 +6391,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) 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 ad802bb69..686152480 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/342] net: dev: always take qdisc's busylock in +Subject: [PATCH 200/351] 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=1722e39cfe183bfcf871f6e35ffcf2b3f1738b3e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=150c0292b648aa25d172ce53afe6a9cdc9611a72 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 2bf357d5602b..7c59fa4d3ecf 100644 +index 480c6d91c004..8e3cee96ce87 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3472,7 +3472,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 dac59a0ed..a9a97dd3c 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/342] net/Qdisc: use a seqlock instead seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3887369aebc1200946b977b1291a1226f40613d +Subject: [PATCH 201/351] net/Qdisc: use a seqlock instead seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=69530287cd70d715146a3988edfd92a69846f65b 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 @@ -254,7 +254,7 @@ index 424e70907b96..6b4ee7c98d69 100644 err = -EOPNOTSUPP; if (sch->flags & TCQ_F_MQROOT) { diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 8d8a9ac2562f..cc777abd16da 100644 +index a5262b2ba536..881467d3afb9 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -576,7 +576,11 @@ struct Qdisc noop_qdisc = { 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 7201414d9..e143d3a55 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/342] net: add back the missing serialization in +Subject: [PATCH 202/351] 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=513fe58b8aa1cf9e2d118103cc28854c01e83ab1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=507b155f20020ad477cfe379fe332536dd19a7d2 Some time ago Sami Pietikäinen reported a crash on -RT in ip_send_unicast_reply() which was later fixed by Nicholas Mc Guire @@ -42,7 +42,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 6 insertions(+) diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index ddc1af8731e3..2a080d70d64c 100644 +index 6549e07ce19c..84adb4755c5e 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -62,6 +62,7 @@ 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 4ee80f7e7..1a3f490d3 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/342] net: add a lock around icmp_sk() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0034f22f94d4dda2d9486dfb4e8acabc8f947c17 +Subject: [PATCH 203/351] net: add a lock around icmp_sk() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd065d2184568c5188dc758e617b4cef3eecd9de 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 11f3b2b95..f029d1482 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/342] net: Have __napi_schedule_irqoff() disable interrupts +Subject: [PATCH 204/351] 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=4171dffd1a3b19e920140745da11771243ac3631 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba1f28e1110d9c8ae7ddf71f24246835e166956e A customer hit a crash where the napi sd->poll_list became corrupted. The customer had the bnx2x driver, which does a @@ -52,7 +52,7 @@ index dfec34087039..c4713217b20e 100644 static inline bool napi_disable_pending(struct napi_struct *n) { diff --git a/net/core/dev.c b/net/core/dev.c -index 7c59fa4d3ecf..e65dc7a7cc13 100644 +index 8e3cee96ce87..ad8f5563c85e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5953,6 +5953,7 @@ bool napi_schedule_prep(struct napi_struct *n) 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 314809d7b..4f6ed8687 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/342] irqwork: push most work into softirq context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b91447711938ba1aee8c66249408ab12ba1b8f2 +Subject: [PATCH 205/351] irqwork: push most work into softirq context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3061f788ba9b0f332281c8117a8d9df4a1fda0d9 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 0a5220da2..9c28e2a28 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/342] printk: Make rt aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=338dc05ea3a9f2fc4900771ff722965bf1a72427 +Subject: [PATCH 206/351] printk: Make rt aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=14966a4441f9a55fa1334f6959c0c40c217a8d8c 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 b7e92b8c4..b84e2d438 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/342] 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=5d98d6ee2ef71f23a1efd1f0a393f41b7329acfd +Subject: [PATCH 207/351] 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=4c21b40f9d1d5a3c6b0b2bb8bc0292f3ee9f8bbb 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 07a845599..c91872e66 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/342] printk: Drop the logbuf_lock more often -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51849f67a7bf243a541853e4d207d4e94fd82a78 +Subject: [PATCH 208/351] printk: Drop the logbuf_lock more often +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a7251c41471c363cfc01a070c987ce820b30cc17 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 94a0637df..db2ea74d9 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/342] ARM: enable irq in translation/section permission +Subject: [PATCH 209/351] 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=339dbf4f42b071e7f56b9dcb8e219d4d4e0656d6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8559825d974faa51e55b46c4b0af5ffaf869e2ed 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 dd1b4df51..3e8221038 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/342] genirq: update irq_set_irqchip_state documentation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fd9790f0effc20eb941a4073134c21ca951f238c +Subject: [PATCH 210/351] genirq: update irq_set_irqchip_state documentation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0941ee84264e2a31d516413da6d4f0a23333958 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 2ab74f6ae..959f82605 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/342] KVM: arm/arm64: downgrade preempt_disable()d region +Subject: [PATCH 211/351] 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=3da26421c3fe48964d225679c51bda781c92b5e2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca8704ae000da9439b5b1a0073a8861fdcd12a6e 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 bf251dfc5..37f587e80 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/342] arm64: fpsimd: use preemp_disable in addition to +Subject: [PATCH 212/351] 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=008f9bc0512899030ddd5356f45dae391302fa9b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dfa86674c318427ff210232a6fa270db15c539ec 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 71f829e94..6e0f4c731 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/342] kgdb/serial: Short term workaround -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=85172618f0e8bf15a8cf9029d0eca810de4ce722 +Subject: [PATCH 213/351] kgdb/serial: Short term workaround +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1afcd2e2254c5cb03c06b402aff96238833bce7 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 33d489691fdf..8f6239892d39 100644 +index 15a92d855ca7..df931895cdcb 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -31,6 +31,7 @@ @@ -35,7 +35,7 @@ index 33d489691fdf..8f6239892d39 100644 #include <linux/uaccess.h> #include <linux/pm_runtime.h> #include <linux/ktime.h> -@@ -3300,6 +3301,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3305,6 +3306,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 f9b72b5dd..146e03265 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/342] sysfs: Add /sys/kernel/realtime entry -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=377be180fa8ca554fbf62d9c8c01fe9e4d007f47 +Subject: [PATCH 214/351] sysfs: Add /sys/kernel/realtime entry +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db314e5983fff75e4f9ebbfc9d2fcfea6bdc43ea 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 fc23f6506..e7616609e 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/342] mm, rt: kmap_atomic scheduling -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92ff3d2e6bfe3adeccf410f7b9e9a95ce2bf8d53 +Subject: [PATCH 215/351] mm, rt: kmap_atomic scheduling +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4490d82f97c961c35eeeef1031e9e45a410ec5d6 In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context @@ -247,7 +247,7 @@ index 0690679832d4..1ac89e4718bf 100644 } diff --git a/include/linux/sched.h b/include/linux/sched.h -index b7a357635d60..577045ae8693 100644 +index 7aa299de5ebf..b32eb75dd73b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -28,6 +28,7 @@ @@ -258,7 +258,7 @@ index b7a357635d60..577045ae8693 100644 /* task_struct member predeclarations (sorted alphabetically): */ struct audit_context; -@@ -1216,6 +1217,12 @@ struct task_struct { +@@ -1220,6 +1221,12 @@ struct task_struct { int softirq_nestcnt; unsigned int softirqs_raised; #endif 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 b04db4e0c..ec6e6fd06 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/342] x86/highmem: Add a "already used pte" check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f6be1300407789b3a66f5ca8fa2bceef903b897 +Subject: [PATCH 216/351] x86/highmem: Add a "already used pte" check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9bd9625b954ad877bc89bb1e87c19f343a242053 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 47cc179f0..51b7e37c1 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/342] arm/highmem: Flush tlb on unmap -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=176869557b04f77d08189ccf8f2acf9f07da4b26 +Subject: [PATCH 217/351] arm/highmem: Flush tlb on unmap +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99e954248856729b307ba145a5491f706844d90e 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 3b7aa387a..194d63743 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/342] arm: Enable highmem for rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9a34408767001844806b3b8225682c8afdc6c17a +Subject: [PATCH 218/351] arm: Enable highmem for rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8372a8317fceb409bba55ae9a39490d9a41cffb9 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 068b8f620..e46379659 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/342] scsi/fcoe: Make RT aware. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4940a288f7cc4f9cf09fbdb0084921be93d92152 +Subject: [PATCH 219/351] scsi/fcoe: Make RT aware. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=901ee7587b93437dcfc3b92c8e5cb8c5ebd51001 Do not disable preemption while taking sleeping locks. All user look safe for migrate_diable() only. 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 38357c7ba..eed8bc5ad 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/342] x86: crypto: Reduce preempt disabled regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4fad8b937dfa74e2ccba8a8e492be8f8249cc9c +Subject: [PATCH 220/351] x86: crypto: Reduce preempt disabled regions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09d9a12df974fceb589eb81af36faa09d8d39605 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 f2dda2f5b..7737e932b 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/342] crypto: Reduce preempt disabled regions, more algos -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ceb1792fc68a494695be3551b6a796af177f2f30 +Subject: [PATCH 221/351] crypto: Reduce preempt disabled regions, more algos +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0b6f228d90b5135e33a5c8936a9c411264efb38 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 57c9a4d1c..4bea15cd7 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/342] crypto: limit more FPU-enabled sections +Subject: [PATCH 222/351] 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=d77f41fea4c23bf15b65b4703f0a70c3e8c633c2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a9dd547cc7ef845c4fbd93163ed42d7d623848a2 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 eb8b1dde8..f809de546 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/342] crypto: scompress - serialize RT percpu scratch +Subject: [PATCH 223/351] 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=3ded7053ca92ed84c6a4aa9392ce406faaca6e12 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=18eaf07ec37f2f06619b6b90d309748e0e86dc94 | 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 883b1e747..de5706d3e 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/342] crypto: cryptd - add a lock instead +Subject: [PATCH 224/351] 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=a65b405a299e90f7a3a0de278af917a86e2c1f07 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=728b5a4f8b9b88f5fc53c480dcaedc107740554c 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 4104ddf50..8b4c6d561 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/342] panic: skip get_random_bytes for RT_FULL in +Subject: [PATCH 225/351] 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=4859e3416b599547296a1970d9b8fef5c72bb671 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5786af4abd4135796d537815f1dd27c8759a09d4 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 3021c7916..02aa72603 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/342] x86: stackprotector: Avoid random pool on rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=899dd6a87172ba4ef8839115bce7f4393a0274bc +Subject: [PATCH 226/351] x86: stackprotector: Avoid random pool on rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=816d0fb08c3857907dadc22cd2c4a1f28a111650 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 1a1ee7954..65d876792 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/342] cpu/hotplug: Implement CPU pinning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6fa443c6c513b0e160a42bfbc0a4f3023fdf4edb +Subject: [PATCH 227/351] cpu/hotplug: Implement CPU pinning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f0de8987ce46748aebdeb23f492c0775194b0bc Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- @@ -10,10 +10,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 39 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 577045ae8693..7523c0786a63 100644 +index b32eb75dd73b..19eb4838cf03 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -671,6 +671,7 @@ struct task_struct { +@@ -675,6 +675,7 @@ struct task_struct { #if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) int migrate_disable; int migrate_disable_update; 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 817e0736d..e25f81c84 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/342] sched: Allow pinned user tasks to be awakened to the +Subject: [PATCH 228/351] 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=1a7a03ac5f6eb866ddd317630b747d6e8f81013b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3bd1c0c38b284bb75335fcd8be89eb82e0b7b59 Since commit 7af443ee16976 ("sched/core: Require cpu_active() in select_task_rq(), for user tasks") select_fallback_rq() will BUG() if @@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 11afaa2c618a..dba425296275 100644 +index 3849015303f6..7def8ae96342 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -904,7 +904,7 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) 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 357c70d07..83302ea8a 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/342] 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=c925857dee98daf7eea5dd1e206a94a9d9cd72cf +Subject: [PATCH 229/351] 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=45d4e64fe28e0a883774697dedd82e54e653d2ef 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 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 190c702a6..548b50b30 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/342] net: Remove preemption disabling in netif_rx() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=857d0eea97c02863c4283d4ece826762ed4ae3f3 +Subject: [PATCH 230/351] net: Remove preemption disabling in netif_rx() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0604caaea4458fb904513d7935dc21c3de51db67 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -35,7 +35,7 @@ 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 e65dc7a7cc13..3df1fe052863 100644 +index ad8f5563c85e..ebe7e6939269 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4494,7 +4494,7 @@ static int netif_rx_internal(struct sk_buff *skb) 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 14d695001..37924f0c1 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/342] net: Another local_irq_disable/kmalloc headache -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=10e37587e11821472945b3a1cfe2306a3ca12b8f +Subject: [PATCH 231/351] net: Another local_irq_disable/kmalloc headache +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3bd7c599dd78f9fcd4ae90f84556e0544741e343 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 c623c129d0ab..0696d3cb809d 100644 +index e0be1f8651bb..e2561c9c20bd 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 137625f8c..998ea0844 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/342] net/core: protect users of napi_alloc_cache against +Subject: [PATCH 232/351] 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=2a676f69c03cd2c988d61efa9af4089f653fd83f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04e22c7dd016cc14e1c3df677791677ff9260c68 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 0696d3cb809d..58f78205585c 100644 +index e2561c9c20bd..5e58555405a7 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 3f6319ef4..e53a91df1 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/342] net: netfilter: Serialize xt_write_recseq sections on +Subject: [PATCH 233/351] 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=a9374258672d870fd9fa14c86167cf3fb4186859 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=768a90f9da24fea4a57dfef2c174142befc033be The netfilter code relies only on the implicit semantics of local_bh_disable() for serializing wt_write_recseq sections. RT breaks 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 5b9098659..98e28dbba 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/342] lockdep: selftest: Only do hardirq context test for +Subject: [PATCH 234/351] 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=f4f917f2cf46718b42d1954b657f756852896a52 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae44753fb09a79252061f21c051ab94de6a4e2c5 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 22b6ac89b..c4d7b9c80 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/342] lockdep: selftest: fix warnings due to missing +Subject: [PATCH 235/351] 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=55b0653e2c4e3159bdfece0f545e959b2583de30 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09b57e155c7dce80d5c4d9593ddc091cc97046b1 "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 0c7ff0691..8ab7c4c53 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/342] sched: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f58baddb785517ba67a7470fb9278fcf919590ff +Subject: [PATCH 236/351] sched: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=48ddc8513cc012c5cf3c2da038c2544f6c3f591e It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -143,10 +143,10 @@ index ed8413e7140f..9c74a019bf57 100644 } while (0) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 7523c0786a63..044bebd3d16f 100644 +index 19eb4838cf03..00b307a4156c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1733,6 +1733,44 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) +@@ -1737,6 +1737,44 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -262,7 +262,7 @@ index 6ae5b18bf3a5..396394ebbc5b 100644 __read_rt_unlock(cpuhp_pin); goto again; diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index dba425296275..0995748a3a1d 100644 +index 7def8ae96342..cf60731667bf 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -493,6 +493,48 @@ void resched_curr(struct rq *rq) @@ -383,7 +383,7 @@ index dba425296275..0995748a3a1d 100644 do { /* * Because the function tracer can trace preempt_count_sub() -@@ -5505,7 +5579,9 @@ void init_idle(struct task_struct *idle, int cpu) +@@ -5506,7 +5580,9 @@ void init_idle(struct task_struct *idle, int cpu) /* Set the preempt count _outside_ the spinlocks! */ init_idle_preempt_count(idle, cpu); @@ -394,7 +394,7 @@ index dba425296275..0995748a3a1d 100644 /* * The idle tasks have their own, simple scheduling class: */ -@@ -7222,6 +7298,7 @@ void migrate_disable(void) +@@ -7223,6 +7299,7 @@ void migrate_disable(void) } preempt_disable(); @@ -402,7 +402,7 @@ index dba425296275..0995748a3a1d 100644 pin_current_cpu(); migrate_disable_update_cpus_allowed(p); -@@ -7289,6 +7366,7 @@ void migrate_enable(void) +@@ -7290,6 +7367,7 @@ void migrate_enable(void) arg.dest_cpu = dest_cpu; unpin_current_cpu(); @@ -410,7 +410,7 @@ index dba425296275..0995748a3a1d 100644 preempt_enable(); stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); tlb_migrate_finish(p->mm); -@@ -7297,6 +7375,7 @@ void migrate_enable(void) +@@ -7298,6 +7376,7 @@ void migrate_enable(void) } } unpin_current_cpu(); 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 45a8800f7..a8793b330 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/342] ftrace: Fix trace header alignment -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5e921de659bd00cd76e89aded2b7d6b63533a6a +Subject: [PATCH 237/351] ftrace: Fix trace header alignment +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9486468d82f8e5fb18a4a23ed97e890ccea93835 Line up helper arrows to the right column. 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 563d97c84..5ff97f123 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/342] x86: Support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ebf6918cf9f47fbdd3414aacbc7091e776654392 +Subject: [PATCH 238/351] x86: Support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4baee5bc17c6cc95083544e897256d6438135bc9 Implement the x86 pieces for lazy preempt. 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 2c287d8e1..e90a9e067 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/342] x86: lazy-preempt: properly check against +Subject: [PATCH 239/351] x86: lazy-preempt: properly check against preempt-mask -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=62de1107905ffc4ce432b5192aa4e86cba2ea98b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=75513510857bff0bd24e1366af7d6aa055a69b12 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 2d6a1424f..e38dc3355 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/342] x86: lazy-preempt: use proper return label on +Subject: [PATCH 240/351] 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=af7aacae59cd66ea1a797fb9f9e333423d3d7c71 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f573c1654480f0cf483d8970b1bbbd982643053 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 477fe5af0..540ed8df5 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/342] arm: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=33e85292f4a1b6620af83c5904889dfba4732126 +Subject: [PATCH 241/351] arm: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26375d10447b34ed31c960277109eca22b4ee37c Implement the arm pieces for lazy preempt. @@ -16,7 +16,7 @@ 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 ec99422059e3..2607cae04885 100644 +index d411fbbf13f0..11757b141c4a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -91,6 +91,7 @@ config ARM 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 45e464dee..a0552d68c 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/342] powerpc: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=807f60d61d5538e5acc319218a368950deb6fcdf +Subject: [PATCH 242/351] powerpc: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e57b5b18ecdd01a4d6c25f64b9bdd7fdf64bbc91 Implement the powerpc pieces for lazy preempt. 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 385d63933..70a1cbc09 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/342] arch/arm64: Add lazy preempt support -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d78ec4a3e861e9c07b84fa323cfd72f647808a23 +Subject: [PATCH 243/351] arch/arm64: Add lazy preempt support +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6da57ed2b5ca1bfb6c77726d034721566678bbce arm64 is missing support for PREEMPT_RT. The main feature which is lacking is support for lazy preemption. The arch-specific entry code, @@ -20,7 +20,7 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index a101f5d2fbed..84f53dc1a75b 100644 +index e16f0d45b47a..82a85559fa17 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -141,6 +141,7 @@ config ARM64 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 038bec03d..ae25fbe96 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/342] connector/cn_proc: Protect send_msg() with a local +Subject: [PATCH 244/351] 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=b4f0ce722072d0e6ea67db8c7f6936abe9de0764 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80e11a209b70e7abefdffaf06e69fc55f0705b6e |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 b33d8a7a0..20c0c905b 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/342] drivers/block/zram: Replace bit spinlocks with +Subject: [PATCH 245/351] 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=e9c40001860ea506bbb2d75c4f9a704fdce8b98c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca01c73a094a833d8d65788bede4ad0112047eca 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 dfb12a9b2..c8b605d85 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/342] drivers/zram: Don't disable preemption in +Subject: [PATCH 246/351] 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=2689fcbfe8b15a102ec207f5b8c94095333fae9c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ac83a7513fa9bd4761845b295a8caf6dd72668e 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 6c1508d32..84417e01f 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/342] drivers/zram: fix zcomp_stream_get() +Subject: [PATCH 247/351] 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=8623e80cefb82edf752c74cb790d33a96410271d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dbce882bb932648fcafed8562053feddff71a443 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 97554882b..c576819b3 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/342] tpm_tis: fix stall after iowrite*()s -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=704fbd8b3a5c6a211e3b96b92a5a73ee0bba800c +Subject: [PATCH 248/351] tpm_tis: fix stall after iowrite*()s +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bfbcd15a1738d0dd3d63567813c6a2927520f286 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 2a7057825..5a9269708 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/342] watchdog: prevent deferral of watchdogd wakeup on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2bdd12a025e0691b88a6b524a8bf4659f64211d0 +Subject: [PATCH 249/351] watchdog: prevent deferral of watchdogd wakeup on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b6a3322fb480a542ab32635329f69b82a5f52b05 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 9dc4e81e3..2e1de7365 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/342] drm,radeon,i915: Use preempt_disable/enable_rt() +Subject: [PATCH 250/351] 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=d94a37f0014c1bfccacffb6a70f731af4c289090 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9106310f90277b39dfedd4c7b133ff340c8f183 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 9d529c66e..eb6a76332 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/342] drm,i915: Use local_lock/unlock_irq() in +Subject: [PATCH 251/351] 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=7f085a648643b652361155e0b483d114b769aaeb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9d9ae462ce5439ff82d0b2177b4cc6b88cd7c4c [ 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 714ab87a8..bed2b6737 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/342] drm/i915: disable tracing on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac5ab95c075b23b5b71b8c9727bc0e4aabe64906 +Subject: [PATCH 252/351] drm/i915: disable tracing on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c289c4929e1de551836ec24f7516915727d8e818 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 b80f180b8..4f6231bd1 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/342] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with +Subject: [PATCH 253/351] 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=a8537101898e867f331b1425ee9d3ed7c42e479d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36d9355e7da732bec8f0a8871e6c40f4f9fdf63d 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 dc69d3b4d..e09e9da8d 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/342] cgroups: use simple wait in css_release() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5ac1545190c5a7071dc36c3dfda12707af3664c9 +Subject: [PATCH 254/351] cgroups: use simple wait in css_release() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=70e2e15afe58caecf956527ffcfb2f121f6bbbef To avoid: |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 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 0b163ce8b..afa21c505 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/342] cpuset: Convert callback_lock to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a75ea5624901308867ac5949e01e65b349192283 +Subject: [PATCH 255/351] cpuset: Convert callback_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a910bd62761360c31ffecd586b2c36bf03d74e7e 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 2c7d17fea..55a057e01 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/342] apparmor: use a locallock instead preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f1cf26d60407ea931cff7f1be73bf279a69dd56 +Subject: [PATCH 256/351] apparmor: use a locallock instead preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22e81dfb9afdef3fa2bb494852610c0672e02579 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 730a017ed..4aa84f292 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/342] workqueue: Prevent deadlock/stall on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3250e54d2a2051a789ae9c8fe3a7191f56f4e205 +Subject: [PATCH 257/351] workqueue: Prevent deadlock/stall on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87d9d53971f4e410e1ad22c2c9a80c3b1de7b58c Austin reported a XFS deadlock/stall on RT where scheduled work gets never exececuted and tasks are waiting for each other for ever. @@ -42,7 +42,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org> 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 0995748a3a1d..feaf4d5683af 100644 +index cf60731667bf..f9babcec1afc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3615,9 +3615,8 @@ void __noreturn do_task_dead(void) @@ -67,7 +67,7 @@ index 0995748a3a1d..feaf4d5683af 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 0c529f920232..91f5696cf335 100644 +index 7561ac884a3e..cb81c7767b17 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -126,6 +126,11 @@ enum { 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 b4b502df1..feaa41c25 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/342] 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=5aac397e1ae3068a8bef5c75bbfbdb268c95b2c5 +Subject: [PATCH 258/351] 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=5f8513444a7cd90b248465aa547d0d9a6bf79d1e To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -16,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 5 files changed, 70 insertions(+), 5 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h -index 044bebd3d16f..e567fe2d7058 100644 +index 00b307a4156c..72255bf2166e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -895,6 +895,8 @@ struct task_struct { +@@ -899,6 +899,8 @@ struct task_struct { /* Signal handlers: */ struct signal_struct *signal; struct sighand_struct *sighand; 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 9b39dc39c..e31b74d66 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/342] Add localversion for -RT release -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=830df089aa5bd42afcc7733ada793ae405e532b0 +Subject: [PATCH 259/351] Add localversion for -RT release +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9c4840798b87941665de0d03e2e0ae4d1aea3f6 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 b5d7da2d1..349428d20 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/342] powerpc/pseries/iommu: Use a locallock instead +Subject: [PATCH 260/351] 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=8c0eed1d8e078239e15aeb6ebf028c167f62c92f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e34d2f882b8f50dc56fb17c2671eefcd3a10613 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 dd5e0dafe..689688d42 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/342] powerpc: reshuffle TIF bits -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e383507c4f1cd7ac67d8fa323e18757106326c37 +Subject: [PATCH 261/351] powerpc: reshuffle TIF bits +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bbd147e21279831b99859a1403741a7ea5cb0cc1 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 0c8bcf942..c2174d734 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/342] 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=bc471880b65be979c4ee19553ef62c6ab0af5b73 +Subject: [PATCH 262/351] 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=0fa8918b8835b046e47ce2bc5de45e815faebd80 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 5e76fee9c..c6202c76b 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/342] drm/i915: Don't disable interrupts independently of +Subject: [PATCH 263/351] 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=11d12db319077ee47d28ed241e8947c5b86762b7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=797d3c7e24d525fcadd72c6f71220656625c88ef 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 4174df41c..184364493 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/342] sched/completion: Fix a lockup in +Subject: [PATCH 264/351] 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=83dfd5e7c7759d10ab5260a4ed98cdd46efa7213 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d147c6201655ace488f41a1c271d3da10e48853 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 304316c46..834d19ea4 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/342] kthread: add a global worker thread. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3be1221a15666a2cca554da5c38c39d106bcbdf +Subject: [PATCH 265/351] kthread: add a global worker thread. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=416cf118ae8b8fea6609bc01fbc4d63db005b100 [ 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 c31a76485c9c..d24660961343 100644 +index 12eb48980df7..b8c2c469ce7e 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -70,7 +70,7 @@ 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 f4ab668e2..59c1f4834 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/342] arm: imx6: cpuidle: Use raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=18215a774fb6f25e6044f44d0bb7285b03a1e151 +Subject: [PATCH 266/351] arm: imx6: cpuidle: Use raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec05cab0fe0a4fff3110ce62e12882bf66cbcc09 [ 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 6d0413f44..4aa1d5fb3 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/342] rcu: Don't allow to change rcu_normal_after_boot on +Subject: [PATCH 267/351] 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=ab3e64d17f40661769b76ad4ec295ced23d15efd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=565e362156219f5a3f23c65e806e5954a72382ba [ 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 b31baf7b4..7a943fe6c 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/342] pci/switchtec: fix stream_open.cocci warnings -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=69a465fae034c3aa1f134b2802bc4edfa7b60016 +Subject: [PATCH 268/351] pci/switchtec: fix stream_open.cocci warnings +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87dcdc9e40513a9725f065cabfd72fedf704f655 [ 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 a4b7753db..b0a231d28 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/342] sched/core: Drop a preempt_disable_rt() statement -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=74d2e1a7300ec02a7bea54ed43fbabaa4e8e1193 +Subject: [PATCH 269/351] sched/core: Drop a preempt_disable_rt() statement +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3022be56ad0e3024dbedc053260b0773ae09f8d [ Upstream commit 761126efdcbe3fa3e99c9079fa0ad6eca2f251f2 ] @@ -15,7 +15,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index feaf4d5683af..3b0f62be3ece 100644 +index f9babcec1afc..5473824aee5b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -558,14 +558,11 @@ void resched_cpu(int cpu) 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 1f5b2ab81..47bf2c336 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/342] timers: Redo the notification of canceling timers on +Subject: [PATCH 270/351] 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=e0d1c4cbc44a31f090ff94e4c029f31c97d2391d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8b3a6db4434a0ee962dcb2dc5b1fc160d0cfeaa [ Upstream commit c71273154c2ad12e13333aada340ff30e826a11b ] 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 c4309368f..3f9d61e96 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/342] Revert "futex: Ensure lock/unlock symetry versus +Subject: [PATCH 271/351] 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=d00bb8bbc139fe4cd03a34a820bc7ed395b791ea +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b6f5a87870f7fd1194b5f15cef6e73343b5478b0 [ Upstream commit 6a773b70cf105b46298ed3b44e77c102ce31d9ec ] 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 d622e9bf3..104f75dae 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/342] Revert "futex: Fix bug on when a requeued RT task +Subject: [PATCH 272/351] 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=424bdc4ecbdf891bb9781c66827c6552d45ec9c3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b06b941626e30f9c6a9743a2a280d4592965bcf8 [ 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 391c7c48c..6e515c0f5 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/342] Revert "rtmutex: Handle the various new futex race +Subject: [PATCH 273/351] 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=3cc6426a21b537ce05a7acb6a499a205559ae766 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=71b0e401fc6afe8f443f4dc34a8ddbc0bf2fb37e [ Upstream commit 9e0265c21af4d6388d47dcd5ce20f76ec3a2e468 ] 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 b2f940fe5..e2f90f5d5 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/342] Revert "futex: workaround migrate_disable/enable in +Subject: [PATCH 274/351] 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=188a1d1aaac5e0288814560fad22b3c638bad3bd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=046fd715e485046870aeebf9354a5387a9ad2aeb [ Upstream commit a71221d81cc4873891ae44f3aa02df596079b786 ] 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 b10825ac3..9a932ce48 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/342] futex: Make the futex_hash_bucket lock raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26753445b4537710a56a34c3e43828b16269f682 +Subject: [PATCH 275/351] futex: Make the futex_hash_bucket lock raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99f26cff18e9f6698cdf1f624047844a144ed1b7 [ Upstream commit f646521aadedab78801c9befe193e2e8a0c99298 ] 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 e041db583..89ef520db 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/342] futex: Delay deallocation of pi_state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=47e8761ab84ff28b2cbff2d64018bdedb9be7d11 +Subject: [PATCH 276/351] futex: Delay deallocation of pi_state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45894c2eaf4378a9492d096c550577887d9bce85 [ Upstream commit d7c7cf8cb68b7df17e6e50be1f25f35d83e686c7 ] 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 e85c24bc9..be12c7dff 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/342] mm/zswap: Do not disable preemption in +Subject: [PATCH 277/351] 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=bf2f37b64408cdd6fd6be0309d0a7bfe88a20d29 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db3636ad52c6dfbee7ff55e3b61dce331b8a5c90 [ Upstream commit 4e4cf4be79635e67144632d9135286381acbc95a ] diff --git a/debian/patches-rt/0278-revert-aio.patch b/debian/patches-rt/0278-revert-aio.patch index 6cca2777c..719785852 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/342] revert-aio -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3385a4e70adb04e8ac905d0b889452f53b8348cd +Subject: [PATCH 278/351] revert-aio +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25cccdfad7fb4bc477ed3f2c9b092f86cbc6ea47 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 a7752d7d2..7030c4269 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/342] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f620c96e59582f313de1000b3bebf41c6ee7d382 +Subject: [PATCH 279/351] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02a5fd9f02f332e1556257ef9efdda4f8e1260f6 [ Upstream commit 1a142116f6435ef070ecebb66d2d599507c10601 ] diff --git a/debian/patches-rt/0280-revert-thermal.patch b/debian/patches-rt/0280-revert-thermal.patch index ef4bca6e0..ca446853b 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/342] revert-thermal -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=889019b2cc23787f62b86f2a97fdb25dd13861d5 +Subject: [PATCH 280/351] revert-thermal +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5d1f189fd154780b94568b1d742c74815d52b62 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 8f7a05e42..f68a5f066 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/342] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37fb59a4561847466dd2ca567dfab731f99f9611 +Subject: [PATCH 281/351] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=165114700f74a8d7040fcbe78d65d5fd1e8ca582 [ Upstream commit ad2408dc248fe58536eef5b2b5734d8f9d3a280b ] diff --git a/debian/patches-rt/0282-revert-block.patch b/debian/patches-rt/0282-revert-block.patch index dd7be9b97..f60c96ddb 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/342] revert-block -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e13e0ac0a7e8bc9f08dae4cab727db6ad6ee35a4 +Subject: [PATCH 282/351] revert-block +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09cadfb1381e0e9d3cc991688646273a58cbdbd7 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 957d8d5d8..c7a2fe397 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/342] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 283/351] 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=99bc7e0dc93da8bfa71231dc359276a09819c7e6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=63413a20c60b9b1637830ec4294e0b437d598005 [ Upstream commit 61c928ecf4fe200bda9b49a0813b5ba0f43995b5 ] diff --git a/debian/patches-rt/0284-workqueue-rework.patch b/debian/patches-rt/0284-workqueue-rework.patch index ea00e194a..38e6a71e4 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/342] workqueue: rework -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ef48b1fd6691fa627afcf72bba3295c66c23da41 +Subject: [PATCH 284/351] workqueue: rework +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=03a1d47bc6d2f2e32d7c26fae2809fd8050a8226 [ Upstream commit d15a862f24df983458533aebd6fa207ecdd1095a ] @@ -65,7 +65,7 @@ index a67a50dd714a..ed6ae335756d 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 d24660961343..c31a76485c9c 100644 +index b8c2c469ce7e..12eb48980df7 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -70,7 +70,7 @@ @@ -352,7 +352,7 @@ index 6bbd391f0d9c..c8cf4731ced8 100644 /** * kthread_associate_blkcg - associate blkcg to current kthread diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3b0f62be3ece..1d4d4780dd79 100644 +index 5473824aee5b..ea275b4b3d0a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3612,6 +3612,7 @@ static inline void sched_submit_work(struct task_struct *tsk) @@ -406,7 +406,7 @@ index bbc408f24f5d..eb2db7e6a241 100644 #else diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 91f5696cf335..4ed22776b2ee 100644 +index cb81c7767b17..c047a647146e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,8 +50,6 @@ @@ -1131,7 +1131,7 @@ index 91f5696cf335..4ed22776b2ee 100644 rcu_read_unlock(); return false; } -@@ -3052,7 +3004,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3050,7 +3002,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 91f5696cf335..4ed22776b2ee 100644 /* * This allows canceling during early boot. We know that @work -@@ -3113,10 +3065,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3111,10 +3063,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -1153,7 +1153,7 @@ index 91f5696cf335..4ed22776b2ee 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3154,7 +3106,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3152,7 +3104,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 91f5696cf335..4ed22776b2ee 100644 return ret; } -@@ -3264,7 +3216,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); +@@ -3262,7 +3214,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); * * Undo alloc_workqueue_attrs(). */ @@ -1171,7 +1171,7 @@ index 91f5696cf335..4ed22776b2ee 100644 { if (attrs) { free_cpumask_var(attrs->cpumask); -@@ -3274,21 +3226,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) +@@ -3272,21 +3224,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) /** * alloc_workqueue_attrs - allocate a workqueue_attrs @@ -1196,7 +1196,7 @@ index 91f5696cf335..4ed22776b2ee 100644 goto fail; cpumask_copy(attrs->cpumask, cpu_possible_mask); -@@ -3345,7 +3296,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, +@@ -3343,7 +3294,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, */ static int init_worker_pool(struct worker_pool *pool) { @@ -1205,7 +1205,7 @@ index 91f5696cf335..4ed22776b2ee 100644 pool->id = -1; pool->cpu = -1; pool->node = NUMA_NO_NODE; -@@ -3366,7 +3317,7 @@ static int init_worker_pool(struct worker_pool *pool) +@@ -3364,7 +3315,7 @@ static int init_worker_pool(struct worker_pool *pool) pool->refcnt = 1; /* shouldn't fail above this point */ @@ -1214,7 +1214,7 @@ index 91f5696cf335..4ed22776b2ee 100644 if (!pool->attrs) return -ENOMEM; return 0; -@@ -3431,15 +3382,15 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3429,15 +3380,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 91f5696cf335..4ed22776b2ee 100644 mutex_lock(&wq_pool_attach_mutex); if (!list_empty(&pool->workers)) -@@ -3599,7 +3550,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3597,7 +3548,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 91f5696cf335..4ed22776b2ee 100644 /* * During [un]freezing, the caller is responsible for ensuring that -@@ -3629,7 +3580,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3627,7 +3578,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) pwq->max_active = 0; } @@ -1251,7 +1251,7 @@ index 91f5696cf335..4ed22776b2ee 100644 } /* initialize newly alloced @pwq which is associated with @wq and @pool */ -@@ -3802,8 +3753,8 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, +@@ -3800,8 +3751,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 91f5696cf335..4ed22776b2ee 100644 if (!ctx || !new_attrs || !tmp_attrs) goto out_free; -@@ -3939,7 +3890,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, +@@ -3937,7 +3888,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, * * Return: 0 on success and -errno on failure. */ @@ -1271,7 +1271,7 @@ index 91f5696cf335..4ed22776b2ee 100644 const struct workqueue_attrs *attrs) { int ret; -@@ -3950,7 +3901,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, +@@ -3948,7 +3899,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, return ret; } @@ -1279,7 +1279,7 @@ index 91f5696cf335..4ed22776b2ee 100644 /** * wq_update_unbound_numa - update NUMA affinity of a wq for CPU hot[un]plug -@@ -4028,9 +3978,9 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, +@@ -4026,9 +3976,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 91f5696cf335..4ed22776b2ee 100644 old_pwq = numa_pwq_tbl_install(wq, node, wq->dfl_pwq); out_unlock: mutex_unlock(&wq->mutex); -@@ -4149,7 +4099,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, +@@ -4147,7 +4097,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, return NULL; if (flags & WQ_UNBOUND) { @@ -1300,7 +1300,7 @@ index 91f5696cf335..4ed22776b2ee 100644 if (!wq->unbound_attrs) goto err_free_wq; } -@@ -4236,9 +4186,9 @@ void destroy_workqueue(struct workqueue_struct *wq) +@@ -4234,9 +4184,9 @@ void destroy_workqueue(struct workqueue_struct *wq) struct worker *rescuer = wq->rescuer; /* this prevents new queueing */ @@ -1312,7 +1312,7 @@ index 91f5696cf335..4ed22776b2ee 100644 /* rescuer will empty maydays list before exiting */ kthread_stop(rescuer->task); -@@ -4433,10 +4383,10 @@ unsigned int work_busy(struct work_struct *work) +@@ -4431,10 +4381,10 @@ unsigned int work_busy(struct work_struct *work) rcu_read_lock(); pool = get_work_pool(work); if (pool) { @@ -1325,7 +1325,7 @@ index 91f5696cf335..4ed22776b2ee 100644 } rcu_read_unlock(); -@@ -4643,10 +4593,10 @@ void show_workqueue_state(void) +@@ -4641,10 +4591,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 91f5696cf335..4ed22776b2ee 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4660,7 +4610,7 @@ void show_workqueue_state(void) +@@ -4658,7 +4608,7 @@ void show_workqueue_state(void) struct worker *worker; bool first = true; @@ -1347,7 +1347,7 @@ index 91f5696cf335..4ed22776b2ee 100644 if (pool->nr_workers == pool->nr_idle) goto next_pool; -@@ -4679,7 +4629,7 @@ void show_workqueue_state(void) +@@ -4677,7 +4627,7 @@ void show_workqueue_state(void) } pr_cont("\n"); next_pool: @@ -1356,7 +1356,7 @@ index 91f5696cf335..4ed22776b2ee 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4709,7 +4659,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4707,7 +4657,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 91f5696cf335..4ed22776b2ee 100644 /* * ->desc tracks information (wq name or * set_worker_desc()) for the latest execution. If -@@ -4723,7 +4673,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4721,7 +4671,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 91f5696cf335..4ed22776b2ee 100644 } } -@@ -4754,7 +4704,7 @@ static void unbind_workers(int cpu) +@@ -4752,7 +4702,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 91f5696cf335..4ed22776b2ee 100644 /* * We've blocked all attach/detach operations. Make all workers -@@ -4768,7 +4718,7 @@ static void unbind_workers(int cpu) +@@ -4766,7 +4716,7 @@ static void unbind_workers(int cpu) pool->flags |= POOL_DISASSOCIATED; @@ -1392,7 +1392,7 @@ index 91f5696cf335..4ed22776b2ee 100644 mutex_unlock(&wq_pool_attach_mutex); /* -@@ -4794,9 +4744,9 @@ static void unbind_workers(int cpu) +@@ -4792,9 +4742,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 91f5696cf335..4ed22776b2ee 100644 } } -@@ -4823,7 +4773,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4821,7 +4771,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 91f5696cf335..4ed22776b2ee 100644 pool->flags &= ~POOL_DISASSOCIATED; -@@ -4862,7 +4812,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4860,7 +4810,7 @@ static void rebind_workers(struct worker_pool *pool) WRITE_ONCE(worker->flags, worker_flags); } @@ -1422,7 +1422,7 @@ index 91f5696cf335..4ed22776b2ee 100644 } /** -@@ -5321,7 +5271,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) +@@ -5319,7 +5269,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) lockdep_assert_held(&wq_pool_mutex); @@ -1431,7 +1431,7 @@ index 91f5696cf335..4ed22776b2ee 100644 if (!attrs) return NULL; -@@ -5750,7 +5700,7 @@ static void __init wq_numa_init(void) +@@ -5748,7 +5698,7 @@ static void __init wq_numa_init(void) return; } @@ -1440,7 +1440,7 @@ index 91f5696cf335..4ed22776b2ee 100644 BUG_ON(!wq_update_unbound_numa_attrs_buf); /* -@@ -5825,7 +5775,7 @@ int __init workqueue_init_early(void) +@@ -5823,7 +5773,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 91f5696cf335..4ed22776b2ee 100644 attrs->nice = std_nice[i]; unbound_std_wq_attrs[i] = attrs; -@@ -5834,7 +5784,7 @@ int __init workqueue_init_early(void) +@@ -5832,7 +5782,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 8291cc7fa..9044aa353 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/342] i2c: exynos5: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5d059b45c5670000931198afbd5e767ea166d2af +Subject: [PATCH 285/351] i2c: exynos5: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07d92bd6d58b8af4f6e1eaa685ac0add6ffa1964 [ 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 7ced2b106..4dd9d4c3e 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/342] i2c: hix5hd2: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de0840ad000a4cd09abdbf0beb44a736108ecbf5 +Subject: [PATCH 286/351] i2c: hix5hd2: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37b47c7d3a8b23ff0998283736ca06252760556e [ 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 b3668b2fe..0b8da97ac 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/342] sched/deadline: Ensure inactive_timer runs in hardirq +Subject: [PATCH 287/351] 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=428e3bd4726ac6ebbd987f67871d11fcb95f8369 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5602a664dba672cb7db6fa266ad071e12b18bf71 [ Upstream commit ba94e7aed7405c58251b1380e6e7d73aa8284b41 ] @@ -23,10 +23,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index 1a285367081c..0bc1bad199c1 100644 +index 52acbb31a777..85310fed26f0 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c -@@ -287,7 +287,7 @@ static void task_non_contending(struct task_struct *p) +@@ -309,7 +309,7 @@ static void task_non_contending(struct task_struct *p) dl_se->dl_non_contending = 1; get_task_struct(p); @@ -35,7 +35,7 @@ index 1a285367081c..0bc1bad199c1 100644 } static void task_contending(struct sched_dl_entity *dl_se, int flags) -@@ -1325,7 +1325,7 @@ void init_dl_inactive_task_timer(struct sched_dl_entity *dl_se) +@@ -1344,7 +1344,7 @@ void init_dl_inactive_task_timer(struct sched_dl_entity *dl_se) { struct hrtimer *timer = &dl_se->inactive_timer; 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 889c850ef..8f9bf0644 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/342] thermal/x86_pkg_temp: make pkg_temp_lock a raw +Subject: [PATCH 288/351] 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=592471e36b3b2ac61c32c4b93503fccbb7adab5b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c616b99c8cf7cecda61613c288b20b072976ea58 [ 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 aef963401..b36afad41 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/342] dma-buf: Use seqlock_t instread disabling preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=540c895b043eda1c43ae57fff6829d6e210ca69e +Subject: [PATCH 289/351] dma-buf: Use seqlock_t instread disabling preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=74f78801989fbf28092a53ce1c657e83766bb5cd [ 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 8ce7e3d98..da7dd555d 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/342] KVM: arm/arm64: Let the timer expire in hardirq +Subject: [PATCH 290/351] 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=ee72e57437b6b664bd7784277353a5dfd529c67e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a23f7d6d0f46020f64841837901f0cf715710edf [ 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 0101e802e..49af18ed9 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/342] x86: preempt: Check preemption level before looking +Subject: [PATCH 291/351] 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=cbcd32705234c16095b150867b2191151ca8a9be +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a4e037ca583b2e9c0cf1b8e0b41d57393c66a46 [ 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 96b0c6320..70de0ecbc 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/342] hrtimer: Use READ_ONCE to access timer->base in +Subject: [PATCH 292/351] 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=651af665014e442103551831276cb17778ec5ffa +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9d2a65bdb9560dfbe48c47b9b104952b9888cd7 [ Upstream commit 2c8fdbe7ef0ad06c1a326886c5954e117b5657d6 ] 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 74c1274db..37b4d080e 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/342] hrtimer: Don't grab the expiry lock for non-soft +Subject: [PATCH 293/351] 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=c08561e4507bece7acce0e54872524c3c670260c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=257d3ed6a99a9055a4b7725652f0608a0c19dfab [ Upstream commit fd420354bea2f57c11f3de191dffdeea76531e76 ] 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 8618d61b5..2317ddfbe 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/342] hrtimer: Prevent using hrtimer_grab_expiry_lock() on +Subject: [PATCH 294/351] 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=93b879f6d94c9ca346d233d70a5afdb03d97355f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ef8d3a148a827f4f173179ea176d6deae3a4517 [ Upstream commit cef1b87f98823af923a386f3f69149acb212d4a1 ] 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 f24fd1199..248781694 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/342] hrtimer: Add a missing bracket and hide +Subject: [PATCH 295/351] 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=44e95bce9a5f97221e79be2d034fafe617dff0f7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78e97bf152629ea0dc4890964d9a8e92be8c0844 [ Upstream commit 47b6de0b7f22c28b40275aeede3993d807668c3b ] 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 c5827397e..8003370ff 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/342] 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=6d94a6b1400f572d9acbb7e045afb65c8d8fa530 +Subject: [PATCH 296/351] 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=c607c24d4378ebe9be9bb641703e00d28eca3c75 [ 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 11ce037e5..964a19590 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/342] =?UTF-8?q?sched:=20migrate=5Fdis/enable:=20Use=20?= +Subject: [PATCH 297/351] =?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=cb7f34c0ba155510ebd0db8410614eca88812750 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=302ef1699867ae23b2531b0f689517b615c25866 [ Upstream commit 4230dd3824c3e1785504e6f757ce79a4b55651fa ] @@ -38,10 +38,10 @@ index 396394ebbc5b..4bf82665f28c 100644 preempt_disable(); preempt_lazy_disable(); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 1d4d4780dd79..33c1ae19410e 100644 +index ea275b4b3d0a..b5675306ebed 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7366,7 +7366,10 @@ void migrate_enable(void) +@@ -7367,7 +7367,10 @@ void migrate_enable(void) unpin_current_cpu(); preempt_lazy_enable(); preempt_enable(); 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 91f4c497c..267ecd233 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/342] sched: __set_cpus_allowed_ptr: Check cpus_mask, not +Subject: [PATCH 298/351] 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=1cc9480667aa314a5de466bc624262f1aa2cf19a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db7cc169d8ef63ea459c7fde68b248a2789e895a [ Upstream commit e5606fb7b042db634ed62b4dd733d62e050e468f ] @@ -21,7 +21,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 33c1ae19410e..4f5242c9ca78 100644 +index b5675306ebed..6fd462e18949 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1157,7 +1157,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, 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 11109f24e..5f98d4e46 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/342] sched: Remove dead __migrate_disabled() check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4abc9fbc0662890ad6eecb6b9daaf7d0544c7d22 +Subject: [PATCH 299/351] sched: Remove dead __migrate_disabled() check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=163461f3eff2e283b92faac40ea6c6be1830bc28 [ Upstream commit 14d9272d534ea91262e15db99443fc5995c7c016 ] @@ -16,7 +16,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 4f5242c9ca78..e64d2b2b3a69 100644 +index 6fd462e18949..473413b83ffc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1182,13 +1182,6 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, 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 98a2369c2..f86cc9e80 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/342] sched: migrate disable: Protect cpus_ptr with lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51a9977c0b69716f9a2ca78d92686b134d5fe5e3 +Subject: [PATCH 300/351] sched: migrate disable: Protect cpus_ptr with lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5227db1c9c24b2c6feb8209f3f43cf53ed100cdf [ Upstream commit 27ee52a891ed2c7e2e2c8332ccae0de7c2674b09 ] @@ -16,10 +16,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index e64d2b2b3a69..6f91ee2b7e91 100644 +index 473413b83ffc..07a46769ca3d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7244,9 +7244,8 @@ migrate_disable_update_cpus_allowed(struct task_struct *p) +@@ -7245,9 +7245,8 @@ migrate_disable_update_cpus_allowed(struct task_struct *p) struct rq *rq; struct rq_flags rf; @@ -30,7 +30,7 @@ index e64d2b2b3a69..6f91ee2b7e91 100644 update_nr_migratory(p, -1); p->nr_cpus_allowed = 1; task_rq_unlock(rq, p, &rf); -@@ -7258,9 +7257,8 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) +@@ -7259,9 +7258,8 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) struct rq *rq; struct rq_flags rf; 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 456e9caae..703a448db 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/342] 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=83c7d978aa1fe629e0c8c48204de93e5555cdc24 +Subject: [PATCH 301/351] 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=abc76798c863ebc7979792b6f6f45bafccf1eeb3 [ 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 224b6a81a..df7d5f0e9 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/342] futex: Make the futex_hash_bucket spinlock_t again +Subject: [PATCH 302/351] 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=db07179f5403257fab1645f3d1b5016389d2d3bb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e51d697ea4fe1c6c06a7033c81af8d3d482dfbfe [ Upstream commit 954ad80c23edfe71f4e8ce70b961eac884320c3a ] 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 8ec5a16d0..1f210b1ba 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/342] locking/rtmutex: Clean ->pi_blocked_on in the error +Subject: [PATCH 303/351] 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=aa4169c26b331ce5542238710c17b2bfe9cab704 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=20cb8227d2f37fdf374e404baf9cfa92b0c72598 [ 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 d2b221679..75f1fc148 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/342] lib/ubsan: Don't seralize UBSAN report -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9d8814df58e1f97746fa2da50d282d631c11542d +Subject: [PATCH 304/351] lib/ubsan: Don't seralize UBSAN report +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a271296613b17df1188c72b23a8cdeb3bc4ccd87 [ 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 81533bee0..36bf1a733 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/342] kmemleak: Change the lock of kmemleak_object to +Subject: [PATCH 305/351] 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=6b143bcf21b5a432f5fd03c79ff17188dfb00790 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f32f13e58f0ece8a428a1a4eb5536bac51044c1 [ Upstream commit 217847f57119b5fdd377bfa3d344613ddb98d9fc ] @@ -24,7 +24,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c -index 5b6718dd3a64..23e2837501d6 100644 +index 86caf2025c35..e8a7eebc27a5 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -147,7 +147,7 @@ struct kmemleak_scan_area { 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 8177c1f0a..06db45615 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/342] sched: migrate_enable: Use select_fallback_rq() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b19de5d2c7678334eef4c5e764fcbe08f4fce1f6 +Subject: [PATCH 306/351] sched: migrate_enable: Use select_fallback_rq() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eab7e025879588c20239f95ac003add1390422a8 [ Upstream commit adfa969d4cfcc995a9d866020124e50f1827d2d1 ] @@ -18,10 +18,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 6f91ee2b7e91..7eb3037c0b35 100644 +index 07a46769ca3d..57e8dee4e7ce 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7329,6 +7329,7 @@ void migrate_enable(void) +@@ -7330,6 +7330,7 @@ void migrate_enable(void) if (p->migrate_disable_update) { struct rq *rq; struct rq_flags rf; @@ -29,7 +29,7 @@ index 6f91ee2b7e91..7eb3037c0b35 100644 rq = task_rq_lock(p, &rf); update_rq_clock(rq); -@@ -7338,21 +7339,15 @@ void migrate_enable(void) +@@ -7339,21 +7340,15 @@ void migrate_enable(void) p->migrate_disable_update = 0; 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 0db42edaa..29c41aec9 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/342] sched: Lazy migrate_disable processing -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80bc8f45b65be158feec72e427e42b77fcf0745a +Subject: [PATCH 307/351] sched: Lazy migrate_disable processing +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ef6c7cbc5053f8db6f2493ab56a9e0f2a9d4b523 [ Upstream commit 425c5b38779a860062aa62219dc920d374b13c17 ] @@ -66,7 +66,7 @@ index a3c246214d28..81ce109caec3 100644 #endif /* !CONFIG_HOTPLUG_CPU */ diff --git a/include/linux/sched.h b/include/linux/sched.h -index e567fe2d7058..65069db8923c 100644 +index 72255bf2166e..072dc9da7838 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -227,6 +227,8 @@ extern void io_schedule_finish(int token); @@ -78,7 +78,7 @@ index e567fe2d7058..65069db8923c 100644 /** * struct prev_cputime - snapshot of system and user cputime * @utime: time spent in user mode -@@ -670,16 +672,13 @@ struct task_struct { +@@ -674,16 +676,13 @@ struct task_struct { cpumask_t cpus_mask; #if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) int migrate_disable; @@ -97,7 +97,7 @@ index e567fe2d7058..65069db8923c 100644 # endif #endif #ifdef CONFIG_PREEMPT_RT_FULL -@@ -2058,4 +2057,6 @@ static inline void rseq_syscall(struct pt_regs *regs) +@@ -2062,4 +2061,6 @@ static inline void rseq_syscall(struct pt_regs *regs) #endif @@ -278,7 +278,7 @@ index 4bf82665f28c..f603ea80af2e 100644 /* Interrupts are moved away from the dying cpu, reenable alloc/free */ irq_unlock_sparse(); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 7eb3037c0b35..de6514e13e0c 100644 +index 57e8dee4e7ce..a2c0f199f362 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1065,7 +1065,8 @@ static int migration_cpu_stop(void *data) @@ -351,7 +351,7 @@ index 7eb3037c0b35..de6514e13e0c 100644 /* Promote REQ to ACT */ rq->clock_update_flags <<= 1; update_rq_clock(rq); -@@ -5777,6 +5769,8 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) +@@ -5778,6 +5770,8 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) BUG_ON(!next); put_prev_task(rq, next); @@ -360,7 +360,7 @@ index 7eb3037c0b35..de6514e13e0c 100644 /* * Rules for changing task_struct::cpus_mask are holding * both pi_lock and rq->lock, such that holding either -@@ -7241,14 +7235,9 @@ update_nr_migratory(struct task_struct *p, long delta) +@@ -7242,14 +7236,9 @@ update_nr_migratory(struct task_struct *p, long delta) static inline void migrate_disable_update_cpus_allowed(struct task_struct *p) { @@ -375,7 +375,7 @@ index 7eb3037c0b35..de6514e13e0c 100644 } static inline void -@@ -7266,54 +7255,35 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) +@@ -7267,54 +7256,35 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) void migrate_disable(void) { @@ -446,7 +446,7 @@ index 7eb3037c0b35..de6514e13e0c 100644 WARN_ON_ONCE(p->migrate_disable <= 0); if (p->migrate_disable > 1) { -@@ -7323,67 +7293,69 @@ void migrate_enable(void) +@@ -7324,67 +7294,69 @@ void migrate_enable(void) preempt_disable(); @@ -556,7 +556,7 @@ index 7eb3037c0b35..de6514e13e0c 100644 #endif barrier(); } -@@ -7394,20 +7366,14 @@ void migrate_enable(void) +@@ -7395,20 +7367,14 @@ void migrate_enable(void) #ifdef CONFIG_SCHED_DEBUG struct task_struct *p = current; 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 306caf6c4..6bb640a4b 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/342] sched: migrate_enable: Use stop_one_cpu_nowait() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=519fb3634f6b249f1ffe9e72c3df31ac00b7797e +Subject: [PATCH 308/351] sched: migrate_enable: Use stop_one_cpu_nowait() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1c8f8380a7031358ac5fc4177bbbe5d03bc6cfd2 [ Upstream commit 6b39a1fa8c53cae08dc03afdae193b7d3a78a173 ] @@ -34,7 +34,7 @@ index ccdaa8fd5657..150e886ed83d 100644 int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index de6514e13e0c..dff9d26a8625 100644 +index a2c0f199f362..eeb53ea1483c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -990,6 +990,7 @@ static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf, @@ -69,7 +69,7 @@ index de6514e13e0c..dff9d26a8625 100644 } rq_unlock(rq, &rf); raw_spin_unlock(&p->pi_lock); -@@ -7316,6 +7322,7 @@ void migrate_enable(void) +@@ -7317,6 +7323,7 @@ void migrate_enable(void) WARN_ON(smp_processor_id() != cpu); if (!is_cpu_allowed(p, cpu)) { struct migration_arg arg = { p }; @@ -77,7 +77,7 @@ index de6514e13e0c..dff9d26a8625 100644 struct rq_flags rf; rq = task_rq_lock(p, &rf); -@@ -7323,15 +7330,11 @@ void migrate_enable(void) +@@ -7324,15 +7331,11 @@ void migrate_enable(void) arg.dest_cpu = select_fallback_rq(cpu, p); task_rq_unlock(rq, p, &rf); 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 511698c42..14509bfa5 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/342] Revert "ARM: Initialize split page table locks for +Subject: [PATCH 309/351] 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=954608a19dde6afa6ee3fcbc50ad717c888a9050 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=feaae0c27de4b8a4a10bd422d11b702fadd4c801 [ 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 fa066cce6..c8b3f4f22 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/342] locking: Make spinlock_t and rwlock_t a RCU section +Subject: [PATCH 310/351] 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=5a4cb6344d94ce566d562e036d4fd69ead0338f3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=307384e8ca0050ff69a708ea239e7fd25688d1a2 [ 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 b616edaed..69d771ead 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/342] sched/core: migrate_enable() must access +Subject: [PATCH 311/351] 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=ea00648e17779a1d2d3f7f21bcc8f1d0455f20d4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a046dca6cadf46d37e6a42f5f5f950191bbec3cc [ Upstream commit a61d1977f692e46bad99a100f264981ba08cb4bd ] @@ -34,10 +34,10 @@ index f603ea80af2e..57bd32c83c9e 100644 static int takedown_cpu(unsigned int cpu) { diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index dff9d26a8625..270adb525d93 100644 +index eeb53ea1483c..577bec75ffd8 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7308,9 +7308,11 @@ void migrate_enable(void) +@@ -7309,9 +7309,11 @@ void migrate_enable(void) p->migrate_disable = 0; rq->nr_pinned--; 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 106756de0..a690ce31b 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/342] lib/smp_processor_id: Adjust +Subject: [PATCH 312/351] lib/smp_processor_id: Adjust check_preemption_disabled() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8234196f578cabadf98da643b83e2904de6a2ef4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e1705477262342382e7423129edb2e570567b53 [ 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 fc1b7bd92..667c9ca00 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/342] sched: migrate_enable: Busy loop until the migration +Subject: [PATCH 313/351] 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=f1f1be8e83c25527d3890d98c6e176bd41c63562 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7212bfd2c5351861cd36c82fe6cbdd37c202a2e6 [ Upstream commit 140d7f54a5fff02898d2ca9802b39548bf7455f1 ] @@ -27,10 +27,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 270adb525d93..d190d9e6b10f 100644 +index 577bec75ffd8..89133dff3161 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7323,7 +7323,7 @@ void migrate_enable(void) +@@ -7324,7 +7324,7 @@ void migrate_enable(void) WARN_ON(smp_processor_id() != cpu); if (!is_cpu_allowed(p, cpu)) { @@ -39,7 +39,7 @@ index 270adb525d93..d190d9e6b10f 100644 struct cpu_stop_work work; struct rq_flags rf; -@@ -7336,7 +7336,10 @@ void migrate_enable(void) +@@ -7337,7 +7337,10 @@ void migrate_enable(void) &arg, &work); tlb_migrate_finish(p->mm); __schedule(true); 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 89cafe5b9..188c99523 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/342] userfaultfd: Use a seqlock instead of seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3691ae6ce62505ebd9eaf9e6589a857b5eb5e4ea +Subject: [PATCH 314/351] userfaultfd: Use a seqlock instead of seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fc997a6a8f23cd5880f5e0eee2860490e6e45145 [ 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 e14b98f42..28352517c 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/342] 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=eb1e75f22c7c7fef03f9ff0441ae1e7d7275a470 +Subject: [PATCH 315/351] 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=a7e94b3eb9610ca7f198abf96699a5d2eab443e7 [ Upstream commit 2dcd94b443c5dcbc20281666321b7f025f9cc85c ] @@ -29,10 +29,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index d190d9e6b10f..8b946353b1d7 100644 +index 89133dff3161..96edb14cb099 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7285,6 +7285,9 @@ static void migrate_disabled_sched(struct task_struct *p) +@@ -7286,6 +7286,9 @@ static void migrate_disabled_sched(struct task_struct *p) p->migrate_disable_scheduled = 1; } @@ -42,7 +42,7 @@ index d190d9e6b10f..8b946353b1d7 100644 void migrate_enable(void) { struct task_struct *p = current; -@@ -7323,23 +7326,26 @@ void migrate_enable(void) +@@ -7324,23 +7327,26 @@ void migrate_enable(void) WARN_ON(smp_processor_id() != cpu); if (!is_cpu_allowed(p, cpu)) { 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 a47b24169..4ab22e205 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/342] sched: migrate_enable: Remove __schedule() call -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f416311d786e940c55fab1dfcdbdd03188b6855f +Subject: [PATCH 316/351] sched: migrate_enable: Remove __schedule() call +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5e75bce9b51a26fc1280cff002de35b13ba3cb50 [ Upstream commit b8162e61e9a33bd1de6452eb838fbf50a93ddd9a ] @@ -24,10 +24,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 8b946353b1d7..410882ff2007 100644 +index 96edb14cb099..64e3371c8955 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7345,7 +7345,6 @@ void migrate_enable(void) +@@ -7346,7 +7346,6 @@ void migrate_enable(void) stop_one_cpu_nowait(task_cpu(p), migration_cpu_stop, arg, work); tlb_migrate_finish(p->mm); 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 1ddd98611..ff4a95c31 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/342] mm/memcontrol: Move misplaced +Subject: [PATCH 317/351] mm/memcontrol: Move misplaced local_unlock_irqrestore() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7a4f4c7b57d3592b7ea282256ec21e120299aae +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e93c1cdf2659fdb41c0c23a64d4560bf76bc4b3 [ Upstream commit 071a1d6a6e14d0dec240a8c67b425140d7f92f6a ] 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 5308f4706..282b0db95 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/342] locallock: Include header for the `current' macro -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d1a63f5abebd6be6dcb7f06632d6c0970db1ce9 +Subject: [PATCH 318/351] locallock: Include header for the `current' macro +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4385eeb59c07fb490f19cf69b08793f40a6272c [ 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 016783a60..0bb95f485 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/342] drm/vmwgfx: Drop preempt_disable() in +Subject: [PATCH 319/351] 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=d41c023d443b698d184f54f642578b0c195f140c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=795750d817cf7962fcfd63ea8437d5b0f21a30a3 [ 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 d4c857412..5cfc9994b 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/342] tracing: make preempt_lazy and migrate_disable +Subject: [PATCH 320/351] 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=023b81c02c171c25b54507f6e10f8627e4427041 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=81699e3e656db0e83047e22cde247331924cd87f [ Upstream commit dd430bf5ecb40f9a89679c85868826475d71de54 ] @@ -36,10 +36,10 @@ index 72864a11cec0..e26a85c1b7ba 100644 }; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index fbb04cf1d5bc..9b1b1c6de2bd 100644 +index ddda660b84f9..91df34a11341 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c -@@ -188,8 +188,8 @@ static int trace_define_common_fields(void) +@@ -189,8 +189,8 @@ static int trace_define_common_fields(void) __common_field(unsigned char, flags); __common_field(unsigned char, preempt_count); __common_field(int, pid); 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 ec71bc2b2..3af21c13f 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/342] lib/ubsan: Remove flags parameter from calls to +Subject: [PATCH 321/351] 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=be2cad96ad54e4a1f5795790aad7ca8091567cce +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c2d2b43f417cbedc676f8b28e93683716416a719 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 ce3238a88..b2e7f8fe1 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/342] irq_work: Fix checking of IRQ_WORK_LAZY flag set on +Subject: [PATCH 322/351] 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=7d8e3a7d353467d377d3b32fdf759c2c3171fb89 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3cf00ce224f7ecd568bd3f766fb8ff671136d88 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 7ebdfe086..3dd7cb745 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/342] tasklet: Address a race resulting in double-enqueue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f0945b4e8c94333caf5c9384103ebfc0a055375 +Subject: [PATCH 323/351] tasklet: Address a race resulting in double-enqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3e88f16112d045918ea1e4df41674cb1e411434 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 557ca56b3..835a8530f 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/342] hrtimer: fix logic for when grabbing +Subject: [PATCH 324/351] 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=44b8364a13277bc84e81f619bd8db3c98cd5f63d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36b0eadf58daa2135f9139436ccfd778db315f0f Commit 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 8aef11928..a8d8db93b 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/342] fs/dcache: Include swait.h header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80f3096d3e0bf8ea0482b3c1dd1c3bb835580d7f +Subject: [PATCH 325/351] fs/dcache: Include swait.h header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=939289738f60a2ab3070c16e629d31642b0d5765 [ Upstream commit 279f90ddf53cd6bd3c203fbbf488d642ea2603de ] 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 e47281eae..ebf74571a 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/342] mm: slub: Always flush the delayed empty slubs in +Subject: [PATCH 326/351] 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=e7c1ebce4ab716a7ddb59afbd334d1ab5b89c684 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=029a41eeabb734eb30dcd02bdb9ed92e79f6db2f [ 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 676006f34077..de80b015fb99 100644 +index 197bab70a05d..d16d390df21e 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 448ee797a..099504d3a 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/342] tasklet: Fix UP case for tasklet CHAINED state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca828148bcc43ec7ed745e6bb0c076441138f09f +Subject: [PATCH 327/351] tasklet: Fix UP case for tasklet CHAINED state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d2b462527f8c10c0c852efeda88dd2cef218261 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 728a5ce48..f8bfa30d6 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/342] signal: Prevent double-free of user struct -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c247eea7618fab8dc4ca5b123a7708de3550a64b +Subject: [PATCH 328/351] signal: Prevent double-free of user struct +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b97bd6ce365304c4417b3cd0c5bf49d026b772f4 [ 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 662a647b7..90e6ed5cf 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/342] Bluetooth: Acquire sk_lock.slock without disabling +Subject: [PATCH 329/351] Bluetooth: Acquire sk_lock.slock without disabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f70f452aa211f4c64f5a8cf1c8a97cf8d4f1f2b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a1175c05ff74dd57894ec2ef7ca2e1cad31042a [ 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 b69e98a7f..5450494b9 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/342] net: phy: fixed_phy: Remove unused seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac41b33982062b3bee7c5c1823f179d6fec787ad +Subject: [PATCH 330/351] net: phy: fixed_phy: Remove unused seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=040ef37710adeb660b0585546fbaac550e082c2b [ 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 7d3f711b4..db936e83b 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/342] net: xfrm: fix compress vs decompress serialization -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=232e27733feb20a490b99f63f08c073c9ed9e9d9 +Subject: [PATCH 331/351] net: xfrm: fix compress vs decompress serialization +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d6098c916ec421ca3c89cd072e73cd3b410b208d A crash was seen in xfrm when running ltp's 'tcp4_ipsec06' stresser on v4.x based RT kernels. @@ -23,7 +23,7 @@ Signed-off-by: Tom Zanussi <zanussi@kernel.org> 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c -index a00ec715aa46..a97997385423 100644 +index 32aed1d0f6ee..2fb55dba4b08 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c @@ -20,6 +20,7 @@ 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 40b467019..6594106cf 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/342] mm/memcontrol: Disable preemption in +Subject: [PATCH 332/351] 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=63d8d55e818822e2fbbcc26d07e498d22d21f001 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c8d747a7c7dd6b59f68b8466893b0c18d1fa2074 [ 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 a6f016150..bea8ce154 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/342] ptrace: fix ptrace_unfreeze_traced() race with +Subject: [PATCH 333/351] 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=8b07e7ff85bd9cfa73d79f1f133ad4b96dc3369c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bde585ceef8712a993226213ef25ea54bfde9b57 [ 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 827afb4dd..defd91d5d 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/342] mm: slub: Don't resize the location tracking cache on +Subject: [PATCH 334/351] 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=cbb851e2f49e471db5e2ea40478394b48139f4ca +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7139a83bac66eb7a530553197e6a2fcc06ed74a7 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 de80b015fb99..46158ba761ce 100644 +index d16d390df21e..869a3be27980 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 312f6f2ef..670d73338 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/342] locking/rwsem_rt: Add __down_read_interruptible() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95f51b5f0caacd4978a39b16473ca035f8047fdf +Subject: [PATCH 335/351] locking/rwsem_rt: Add __down_read_interruptible() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23f2c13df9cedc58f454be0e03543a9398ec0402 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 1055aed23..30df1882f 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/342] 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=f4cae546c87033b52ee5a80dc860427ebd02568e +Subject: [PATCH 336/351] 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=108f1a36454ac1403c140d7cba07f1d7b5139ef5 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 8895d4c16..b2b2ef69d 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/342] fscache: fix initialisation of cookie hash table raw +Subject: [PATCH 337/351] 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=324135b9a8f1539dd356c377beaf882164634c5f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b8c3c6e6c2ee7f63ad0673d179d48439e00a4e1 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 927d47cb0..434b61807 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/342] rt: PREEMPT_RT safety net for backported patches -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7c847666d7341feb472045cb36e599fc76b63a6 +Subject: [PATCH 338/351] rt: PREEMPT_RT safety net for backported patches +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=97df0b15ec78b16f27b176cfedf8ed11d2b4ac56 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 c5bf85313..8fc335457 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/342] net: Add missing xmit_lock_owner hunks. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9ce408f7c095f80030cfb2f6671eab84a42e643 +Subject: [PATCH 339/351] net: Add missing xmit_lock_owner hunks. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=42062a2e27ad3a9da95ef7c4c799c1ca71a6bd66 The patch net: move xmit_recursion to per-task variable on -RT 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 7297c027c..c04e34617 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/342] 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=d872802a6e9cfbe98d85409cd78d88b6ea9ffc51 +Subject: [PATCH 340/351] 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=0fd11e70e0f3922f30320f2105366514df7b5bf9 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 new file mode 100644 index 000000000..1b9e30364 --- /dev/null +++ b/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch @@ -0,0 +1,97 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Fri, 19 Aug 2022 11:24:38 +0200 +Subject: [PATCH 341/351] random: Bring back the local_locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=269eda25b7a58b0397934d72f6fef03f0301d696 + +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 +the older kernel did not provide those primitives. + +RT as of v4.9 has a slightly different variant of local_locks. +Replace the local_irq_*() operations with matching local_lock_irq*() +operations which were there as part of commit + 77760fd7f7ae3 ("random: remove batched entropy locking") + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Link: https://lore.kernel.org/all/20220819092446.980320-2-bigeasy@linutronix.de/ +Signed-off-by: Daniel Wagner <dwagner@suse.de> +--- + drivers/char/random.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/drivers/char/random.c b/drivers/char/random.c +index 6aea12fa48ba..be2b7520ade9 100644 +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -53,6 +53,7 @@ + #include <linux/uaccess.h> + #include <linux/siphash.h> + #include <linux/uio.h> ++#include <linux/locallock.h> + #include <crypto/chacha20.h> + #include <crypto/blake2s.h> + #include <asm/processor.h> +@@ -229,10 +230,12 @@ static struct { + struct crng { + u8 key[CHACHA20_KEY_SIZE]; + unsigned long generation; ++ struct local_irq_lock lock; + }; + + static DEFINE_PER_CPU(struct crng, crngs) = { +- .generation = ULONG_MAX ++ .generation = ULONG_MAX, ++ .lock.lock = __SPIN_LOCK_UNLOCKED(crngs.lock.lock), + }; + + /* Used by crng_reseed() and crng_make_state() to extract a new seed from the input pool. */ +@@ -362,7 +365,7 @@ static void crng_make_state(u32 chacha_state[CHACHA20_BLOCK_SIZE / sizeof(u32)], + if (unlikely(crng_has_old_seed())) + crng_reseed(); + +- local_irq_save(flags); ++ local_lock_irqsave(crngs.lock, flags); + crng = raw_cpu_ptr(&crngs); + + /* +@@ -387,7 +390,7 @@ static void crng_make_state(u32 chacha_state[CHACHA20_BLOCK_SIZE / sizeof(u32)], + * should wind up here immediately. + */ + crng_fast_key_erasure(crng->key, chacha_state, random_data, random_data_len); +- local_irq_restore(flags); ++ local_unlock_irqrestore(crngs.lock, flags); + } + + static void _get_random_bytes(void *buf, size_t len) +@@ -505,11 +508,13 @@ struct batch_ ##type { \ + * formula of (integer_blocks + 0.5) * CHACHA20_BLOCK_SIZE. \ + */ \ + type entropy[CHACHA20_BLOCK_SIZE * 3 / (2 * sizeof(type))]; \ ++ struct local_irq_lock lock; \ + unsigned long generation; \ + unsigned int position; \ + }; \ + \ + static DEFINE_PER_CPU(struct batch_ ##type, batched_entropy_ ##type) = { \ ++ .lock.lock = __SPIN_LOCK_UNLOCKED(batched_entropy_ ##type.lock.lock), \ + .position = UINT_MAX \ + }; \ + \ +@@ -527,7 +532,7 @@ type get_random_ ##type(void) \ + return ret; \ + } \ + \ +- local_irq_save(flags); \ ++ local_lock_irqsave(batched_entropy_ ##type.lock, flags); \ + batch = raw_cpu_ptr(&batched_entropy_##type); \ + \ + next_gen = READ_ONCE(base_crng.generation); \ +@@ -541,7 +546,7 @@ type get_random_ ##type(void) \ + ret = batch->entropy[batch->position]; \ + batch->entropy[batch->position] = 0; \ + ++batch->position; \ +- local_irq_restore(flags); \ ++ local_unlock_irqrestore(batched_entropy_ ##type.lock, flags); \ + return ret; \ + } \ + EXPORT_SYMBOL(get_random_ ##type); diff --git a/debian/patches-rt/0341-random-Use-local-locks-for-crng-context-access.patch b/debian/patches-rt/0341-random-Use-local-locks-for-crng-context-access.patch deleted file mode 100644 index acf66335b..000000000 --- a/debian/patches-rt/0341-random-Use-local-locks-for-crng-context-access.patch +++ /dev/null @@ -1,80 +0,0 @@ -From: Daniel Wagner <wagi@monom.org> -Date: Wed, 13 Jul 2022 15:02:30 +0200 -Subject: [PATCH 341/342] random: Use local locks for crng context access -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78c61f9bc5797149c2dfbd84ee4c5ee0fdd9ab6c - -The backport of 5f1bb112006b ("random: group initialization wait -functions") changed the upstream local locks to normal spin locks -because the local infrastructure in v4.19 is missing. As spin locks -are turned into sleeping locks for RT we have to add the local locks -back using the v4.19-rt API. - -Signed-off-by: Daniel Wagner <dwagner@suse.de> ---- - drivers/char/random.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git a/drivers/char/random.c b/drivers/char/random.c -index 2be38780a7f7..c06705a32246 100644 ---- a/drivers/char/random.c -+++ b/drivers/char/random.c -@@ -53,6 +53,7 @@ - #include <linux/uaccess.h> - #include <linux/siphash.h> - #include <linux/uio.h> -+#include <linux/locallock.h> - #include <crypto/chacha20.h> - #include <crypto/blake2s.h> - #include <asm/processor.h> -@@ -234,6 +235,7 @@ struct crng { - static DEFINE_PER_CPU(struct crng, crngs) = { - .generation = ULONG_MAX - }; -+DEFINE_LOCAL_IRQ_LOCK(crngs_lock); - - /* Used by crng_reseed() and crng_make_state() to extract a new seed from the input pool. */ - static void extract_entropy(void *buf, size_t len); -@@ -362,7 +364,7 @@ static void crng_make_state(u32 chacha_state[CHACHA20_BLOCK_SIZE / sizeof(u32)], - if (unlikely(crng_has_old_seed())) - crng_reseed(); - -- local_irq_save(flags); -+ local_lock_irqsave(crngs_lock, flags); - crng = raw_cpu_ptr(&crngs); - - /* -@@ -387,7 +389,7 @@ static void crng_make_state(u32 chacha_state[CHACHA20_BLOCK_SIZE / sizeof(u32)], - * should wind up here immediately. - */ - crng_fast_key_erasure(crng->key, chacha_state, random_data, random_data_len); -- local_irq_restore(flags); -+ local_unlock_irqrestore(crngs_lock, flags); - } - - static void _get_random_bytes(void *buf, size_t len) -@@ -512,6 +514,7 @@ struct batch_ ##type { \ - static DEFINE_PER_CPU(struct batch_ ##type, batched_entropy_ ##type) = { \ - .position = UINT_MAX \ - }; \ -+static DEFINE_LOCAL_IRQ_LOCK(batched_entropy_lock_ ##type); \ - \ - type get_random_ ##type(void) \ - { \ -@@ -527,7 +530,7 @@ type get_random_ ##type(void) \ - return ret; \ - } \ - \ -- local_irq_save(flags); \ -+ local_lock_irqsave(batched_entropy_lock_ ##type, flags); \ - batch = raw_cpu_ptr(&batched_entropy_##type); \ - \ - next_gen = READ_ONCE(base_crng.generation); \ -@@ -541,7 +544,7 @@ type get_random_ ##type(void) \ - ret = batch->entropy[batch->position]; \ - batch->entropy[batch->position] = 0; \ - ++batch->position; \ -- local_irq_restore(flags); \ -+ local_unlock_irqrestore(batched_entropy_lock_ ##type, flags); \ - return ret; \ - } \ - EXPORT_SYMBOL(get_random_ ##type); 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 new file mode 100644 index 000000000..553e72e58 --- /dev/null +++ b/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch @@ -0,0 +1,66 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Fri, 21 Oct 2022 15:55:39 +0200 +Subject: [PATCH 342/351] local_lock: Provide INIT_LOCAL_LOCK(). +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c9ff512c96a416b8c82964b8f03b81d1cf76c80 + +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 +platforms. + +Provide INIT_LOCAL_LOCK() to initialize properly on RT and do nothing on +!RT. Let random.c use which is the only user so far and oes not compile +on !RT otherwise. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Link: https://lore.kernel.org/all/YzcEIU17EIZ7ZIF5@linutronix.de/ +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + drivers/char/random.c | 4 ++-- + include/linux/locallock.h | 5 +++++ + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/drivers/char/random.c b/drivers/char/random.c +index be2b7520ade9..c72dcfbff608 100644 +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -235,7 +235,7 @@ struct crng { + + static DEFINE_PER_CPU(struct crng, crngs) = { + .generation = ULONG_MAX, +- .lock.lock = __SPIN_LOCK_UNLOCKED(crngs.lock.lock), ++ .lock = INIT_LOCAL_LOCK(crngs.lock), + }; + + /* Used by crng_reseed() and crng_make_state() to extract a new seed from the input pool. */ +@@ -514,7 +514,7 @@ struct batch_ ##type { \ + }; \ + \ + static DEFINE_PER_CPU(struct batch_ ##type, batched_entropy_ ##type) = { \ +- .lock.lock = __SPIN_LOCK_UNLOCKED(batched_entropy_ ##type.lock.lock), \ ++ .lock = INIT_LOCAL_LOCK(batched_entropy_ ##type.lock), \ + .position = UINT_MAX \ + }; \ + \ +diff --git a/include/linux/locallock.h b/include/linux/locallock.h +index 81c89d87723b..7964ee6b998c 100644 +--- a/include/linux/locallock.h ++++ b/include/linux/locallock.h +@@ -23,6 +23,8 @@ struct local_irq_lock { + unsigned long flags; + }; + ++#define INIT_LOCAL_LOCK(lvar) { .lock = __SPIN_LOCK_UNLOCKED((lvar).lock.lock) } ++ + #define DEFINE_LOCAL_IRQ_LOCK(lvar) \ + DEFINE_PER_CPU(struct local_irq_lock, lvar) = { \ + .lock = __SPIN_LOCK_UNLOCKED((lvar).lock) } +@@ -241,6 +243,9 @@ static inline int __local_unlock_irqrestore(struct local_irq_lock *lv, + + #else /* PREEMPT_RT_BASE */ + ++struct local_irq_lock { }; ++#define INIT_LOCAL_LOCK(lvar) { } ++ + #define DEFINE_LOCAL_IRQ_LOCK(lvar) __typeof__(const int) lvar + #define DECLARE_LOCAL_IRQ_LOCK(lvar) extern __typeof__(const int) lvar + 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 new file mode 100644 index 000000000..b2cf769f2 --- /dev/null +++ b/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch @@ -0,0 +1,38 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Fri, 21 Oct 2022 16:15:56 +0200 +Subject: [PATCH 343/351] 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=673b95794c85f76d4c99994d288cc41ecc8b02bd + +This reverts the PREEMPT_RT related changes to workqueue. It reverts the +usage of local_locks() and cpu_chill(). + +This is a preparation to pull in the PREEMPT_RT related changes which +were merged upstream. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +[wagi: 827b6f6962da ("workqueue: rework") already reverted + most of the changes, except the missing update in + put_pwq_unlocked.] +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/workqueue.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index c047a647146e..e0ab9febe11f 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1496,11 +1496,9 @@ EXPORT_SYMBOL(queue_work_on); + void delayed_work_timer_fn(struct timer_list *t) + { + struct delayed_work *dwork = from_timer(dwork, t, timer); +- unsigned long flags; + +- local_irq_save(flags); ++ /* should have been called from irqsafe timer with irq already off */ + __queue_work(dwork->cpu, dwork->wq, &dwork->work); +- local_irq_restore(flags); + } + EXPORT_SYMBOL(delayed_work_timer_fn); + 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 new file mode 100644 index 000000000..a9e4b14ab --- /dev/null +++ b/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch @@ -0,0 +1,31 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Fri, 19 Aug 2022 11:24:42 +0200 +Subject: [PATCH 344/351] timers: Keep interrupts disabled for TIMER_IRQSAFE + timer. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c954214601502e0896ac0b81f1222879dad55393 + +Keep interrupts disabled across callback invocation for the +TIMER_IRQSAFE as expected. +This is required for the timer used by workqueue after the upcomming +rework. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/time/timer.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index a2be2277506d..3e2c0bd03004 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1397,8 +1397,7 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head) + + fn = timer->function; + +- if (!IS_ENABLED(CONFIG_PREEMPT_RT_FULL) && +- timer->flags & TIMER_IRQSAFE) { ++ if (timer->flags & TIMER_IRQSAFE) { + raw_spin_unlock(&base->lock); + call_timer_fn(timer, fn); + base->running_timer = NULL; 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 new file mode 100644 index 000000000..c7a563449 --- /dev/null +++ b/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -0,0 +1,68 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Mon, 24 Oct 2022 10:17:22 +0200 +Subject: [PATCH 345/351] 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=9841dc5af8b334fa1a9f4c0e9acde4a0b3839d6f + +Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 + +PREEMPT_RT does not spin and wait until a running timer completes its +callback but instead it blocks on a sleeping lock to prevent a livelock in +the case that the task waiting for the callback completion preempted the +callback. + +This cannot be done for timers flagged with TIMER_IRQSAFE. These timers can +be canceled from an interrupt disabled context even on RT kernels. + +The expiry callback of such timers is invoked with interrupts disabled so +there is no need to use the expiry lock mechanism because obviously the +callback cannot be preempted even on RT kernels. + +Do not use the timer_base::expiry_lock mechanism when waiting for a running +callback to complete if the timer is flagged with TIMER_IRQSAFE. + +Also add a lockdep assertion for RT kernels to validate that the expiry +lock mechanism is always invoked in preemptible context. + +Reported-by: Mike Galbraith <efault@gmx.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Link: https://lore.kernel.org/r/20201103190937.hga67rqhvknki3tp@linutronix.de +[bigeasy: The logic in v4.19 is slightly different but the outcome is the + same as we must not sleep while waiting for the irqsafe timer to + complete. The IRQSAFE timer can not be preempted. + The "lockdep annotation" is not available and has been replaced with + might_sleep()] +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/time/timer.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index 3e2c0bd03004..0a6d60b3e67c 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1272,6 +1272,9 @@ static int __del_timer_sync(struct timer_list *timer) + if (ret >= 0) + return ret; + ++ if (READ_ONCE(timer->flags) & TIMER_IRQSAFE) ++ continue; ++ + /* + * When accessing the lock, timers of base are no longer expired + * and so timer is no longer running. +@@ -1336,6 +1339,12 @@ int del_timer_sync(struct timer_list *timer) + * could lead to deadlock. + */ + WARN_ON(in_irq() && !(timer->flags & TIMER_IRQSAFE)); ++ /* ++ * Must be able to sleep on PREEMPT_RT because of the slowpath in ++ * __del_timer_sync(). ++ */ ++ if (IS_ENABLED(CONFIG_PREEMPT_RT) && !(timer->flags & TIMER_IRQSAFE)) ++ might_sleep(); + + return __del_timer_sync(timer); + } diff --git a/debian/patches-rt/0346-rcu-Update-rcuwait.patch b/debian/patches-rt/0346-rcu-Update-rcuwait.patch new file mode 100644 index 000000000..c54c65f9c --- /dev/null +++ b/debian/patches-rt/0346-rcu-Update-rcuwait.patch @@ -0,0 +1,176 @@ +From: Daniel Wagner <wagi@monom.org> +Date: Mon, 24 Oct 2022 10:58:29 +0200 +Subject: [PATCH 346/351] rcu: Update rcuwait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f1be9e81d653b56aeefbff1883d1f762e8b594e + +This is an all in one commit backporting updates for rcuwait: + - 03f4b48edae7 ("rcuwait: Annotate task_struct with __rcu") + - 191a43be61d6 ("rcuwait: Introduce rcuwait_active()") + - 5c21f7b322cb ("rcuwait: Introduce prepare_to and finish_rcuwait") + - 80fbaf1c3f29 ("rcuwait: Add @state argument to rcuwait_wait_event()") + - 9d9a6ebfea32 ("rcuwait: Let rcuwait_wake_up() return whether or not a task was awoken") + - 58d4292bd037 ("rcu: Uninline multi-use function: finish_rcuwait()") + +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + include/linux/rcuwait.h | 42 +++++++++++++++++++++++++++-------- + kernel/exit.c | 7 ++++-- + kernel/locking/percpu-rwsem.c | 2 +- + kernel/rcu/update.c | 8 +++++++ + 4 files changed, 47 insertions(+), 12 deletions(-) + +diff --git a/include/linux/rcuwait.h b/include/linux/rcuwait.h +index 90bfa3279a01..4fe9ecd56aac 100644 +--- a/include/linux/rcuwait.h ++++ b/include/linux/rcuwait.h +@@ -3,6 +3,7 @@ + #define _LINUX_RCUWAIT_H_ + + #include <linux/rcupdate.h> ++#include <linux/sched/signal.h> + + /* + * rcuwait provides a way of blocking and waking up a single +@@ -18,7 +19,7 @@ + * awoken. + */ + struct rcuwait { +- struct task_struct *task; ++ struct task_struct __rcu *task; + }; + + #define __RCUWAIT_INITIALIZER(name) \ +@@ -29,14 +30,33 @@ static inline void rcuwait_init(struct rcuwait *w) + w->task = NULL; + } + +-extern void rcuwait_wake_up(struct rcuwait *w); ++extern int rcuwait_wake_up(struct rcuwait *w); ++ ++/* ++ * Note: this provides no serialization and, just as with waitqueues, ++ * requires care to estimate as to whether or not the wait is active. ++ */ ++static inline int rcuwait_active(struct rcuwait *w) ++{ ++ return !!rcu_access_pointer(w->task); ++} + + /* + * The caller is responsible for locking around rcuwait_wait_event(), +- * such that writes to @task are properly serialized. ++ * and [prepare_to/finish]_rcuwait() such that writes to @task are ++ * properly serialized. + */ +-#define rcuwait_wait_event(w, condition) \ ++ ++static inline void prepare_to_rcuwait(struct rcuwait *w) ++{ ++ rcu_assign_pointer(w->task, current); ++} ++ ++extern void finish_rcuwait(struct rcuwait *w); ++ ++#define rcuwait_wait_event(w, condition, state) \ + ({ \ ++ int __ret = 0; \ + /* \ + * Complain if we are called after do_exit()/exit_notify(), \ + * as we cannot rely on the rcu critical region for the \ +@@ -44,21 +64,25 @@ extern void rcuwait_wake_up(struct rcuwait *w); + */ \ + WARN_ON(current->exit_state); \ + \ +- rcu_assign_pointer((w)->task, current); \ ++ prepare_to_rcuwait(w); \ + for (;;) { \ + /* \ + * Implicit barrier (A) pairs with (B) in \ + * rcuwait_wake_up(). \ + */ \ +- set_current_state(TASK_UNINTERRUPTIBLE); \ ++ set_current_state(state); \ + if (condition) \ + break; \ + \ ++ if (signal_pending_state(state, current)) { \ ++ __ret = -EINTR; \ ++ break; \ ++ } \ ++ \ + schedule(); \ + } \ +- \ +- WRITE_ONCE((w)->task, NULL); \ +- __set_current_state(TASK_RUNNING); \ ++ finish_rcuwait(w); \ ++ __ret; \ + }) + + #endif /* _LINUX_RCUWAIT_H_ */ +diff --git a/kernel/exit.c b/kernel/exit.c +index 2a414fc71b87..cf68896a94fa 100644 +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -291,8 +291,9 @@ struct task_struct *task_rcu_dereference(struct task_struct **ptask) + return task; + } + +-void rcuwait_wake_up(struct rcuwait *w) ++int rcuwait_wake_up(struct rcuwait *w) + { ++ int ret = 0; + struct task_struct *task; + + rcu_read_lock(); +@@ -316,8 +317,10 @@ void rcuwait_wake_up(struct rcuwait *w) + */ + task = rcu_dereference(w->task); + if (task) +- wake_up_process(task); ++ ret = wake_up_process(task); + rcu_read_unlock(); ++ ++ return ret; + } + + /* +diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c +index 883cf1b92d90..41787e80dbde 100644 +--- a/kernel/locking/percpu-rwsem.c ++++ b/kernel/locking/percpu-rwsem.c +@@ -159,7 +159,7 @@ void percpu_down_write(struct percpu_rw_semaphore *sem) + */ + + /* Wait for all now active readers to complete. */ +- rcuwait_wait_event(&sem->writer, readers_active_check(sem)); ++ rcuwait_wait_event(&sem->writer, readers_active_check(sem), TASK_UNINTERRUPTIBLE); + } + EXPORT_SYMBOL_GPL(percpu_down_write); + +diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c +index ed75addd3ccd..4b2ce6bb94a4 100644 +--- a/kernel/rcu/update.c ++++ b/kernel/rcu/update.c +@@ -53,6 +53,7 @@ + #include <linux/rcupdate_wait.h> + #include <linux/sched/isolation.h> + #include <linux/kprobes.h> ++#include <linux/rcuwait.h> + + #define CREATE_TRACE_POINTS + +@@ -375,6 +376,13 @@ void __wait_rcu_gp(bool checktiny, int n, call_rcu_func_t *crcu_array, + } + EXPORT_SYMBOL_GPL(__wait_rcu_gp); + ++void finish_rcuwait(struct rcuwait *w) ++{ ++ rcu_assign_pointer(w->task, NULL); ++ __set_current_state(TASK_RUNNING); ++} ++EXPORT_SYMBOL_GPL(finish_rcuwait); ++ + #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD + void init_rcu_head(struct rcu_head *head) + { 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 new file mode 100644 index 000000000..c1a587ec4 --- /dev/null +++ b/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch @@ -0,0 +1,102 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Fri, 19 Aug 2022 11:24:45 +0200 +Subject: [PATCH 347/351] workqueue: Use rcuwait for wq_manager_wait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c577abd14a242e742d69c94d1bb2d469212db82 + +Upstream commit d8bb65ab70f702531aaaa11d9710f9450078e295 + +The workqueue code has it's internal spinlock (pool::lock) and also +implicit spinlock usage in the wq_manager waitqueue. These spinlocks +are converted to 'sleeping' spinlocks on a RT-kernel. + +Workqueue functions can be invoked from contexts which are truly atomic +even on a PREEMPT_RT enabled kernel. Taking sleeping locks from such +contexts is forbidden. + +pool::lock can be converted to a raw spinlock as the lock held times +are short. But the workqueue manager waitqueue is handled inside of +pool::lock held regions which again violates the lock nesting rules +of raw and regular spinlocks. + +The manager waitqueue has no special requirements like custom wakeup +callbacks or mass wakeups. While it does not use exclusive wait mode +explicitly there is no strict requirement to queue the waiters in a +particular order as there is only one waiter at a time. + +This allows to replace the waitqueue with rcuwait which solves the +locking problem because rcuwait relies on existing locking. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Tejun Heo <tj@kernel.org> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +[wagi: Updated context as v4.19-rt was using swait] +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/workqueue.c | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index e0ab9febe11f..a9f3cc02bdc1 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -50,6 +50,7 @@ + #include <linux/sched/isolation.h> + #include <linux/nmi.h> + #include <linux/kvm_para.h> ++#include <linux/rcuwait.h> + + #include "workqueue_internal.h" + +@@ -299,7 +300,8 @@ static struct workqueue_attrs *wq_update_unbound_numa_attrs_buf; + static DEFINE_MUTEX(wq_pool_mutex); /* protects pools and workqueues list */ + static DEFINE_MUTEX(wq_pool_attach_mutex); /* protects worker attach/detach */ + static DEFINE_RAW_SPINLOCK(wq_mayday_lock); /* protects wq->maydays list */ +-static DECLARE_SWAIT_QUEUE_HEAD(wq_manager_wait); /* wait for manager to go away */ ++/* wait for manager to go away */ ++static struct rcuwait manager_wait = __RCUWAIT_INITIALIZER(manager_wait); + + 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) + + pool->manager = NULL; + pool->flags &= ~POOL_MANAGER_ACTIVE; +- swake_up_one(&wq_manager_wait); ++ rcuwait_wake_up(&manager_wait); + return true; + } + +@@ -3342,6 +3344,18 @@ static void rcu_free_pool(struct rcu_head *rcu) + kfree(pool); + } + ++/* This returns with the lock held on success (pool manager is inactive). */ ++static bool wq_manager_inactive(struct worker_pool *pool) ++{ ++ raw_spin_lock_irq(&pool->lock); ++ ++ if (pool->flags & POOL_MANAGER_ACTIVE) { ++ raw_spin_unlock_irq(&pool->lock); ++ return false; ++ } ++ return true; ++} ++ + /** + * 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) + * 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. ++ * Because of how wq_manager_inactive() works, we will hold the ++ * spinlock after a successful wait. + */ + raw_spin_lock_irq(&pool->lock); +- swait_event_lock_irq(wq_manager_wait, +- !(pool->flags & POOL_MANAGER_ACTIVE), pool->lock); ++ rcuwait_wait_event(&manager_wait, wq_manager_inactive(pool), ++ TASK_UNINTERRUPTIBLE); + pool->flags |= POOL_MANAGER_ACTIVE; + + while ((worker = first_idle_worker(pool))) 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 new file mode 100644 index 000000000..625a2434f --- /dev/null +++ b/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch @@ -0,0 +1,280 @@ +From: Anna-Maria Gleixner <anna-maria@linutronix.de> +Date: Mon, 31 Oct 2022 16:50:04 +0100 +Subject: [PATCH 348/351] timers: Prepare support for PREEMPT_RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c0246ab42f10c23cc1af06c6b651507b612eb8f + +Upstream commit 030dcdd197d77374879bb5603d091eee7d8aba80 + +When PREEMPT_RT is enabled, the soft interrupt thread can be preempted. If +the soft interrupt thread is preempted in the middle of a timer callback, +then calling del_timer_sync() can lead to two issues: + + - If the caller is on a remote CPU then it has to spin wait for the timer + handler to complete. This can result in unbound priority inversion. + + - If the caller originates from the task which preempted the timer + handler on the same CPU, then spin waiting for the timer handler to + complete is never going to end. + +To avoid these issues, add a new lock to the timer base which is held +around the execution of the timer callbacks. If del_timer_sync() detects +that the timer callback is currently running, it blocks on the expiry +lock. When the callback is finished, the expiry lock is dropped by the +softirq thread which wakes up the waiter and the system makes progress. + +This addresses both the priority inversion and the life lock issues. + +This mechanism is not used for timers which are marked IRQSAFE as for those +preemption is disabled accross the callback and therefore this situation +cannot happen. The callbacks for such timers need to be individually +audited for RT compliance. + +The same issue can happen in virtual machines when the vCPU which runs a +timer callback is scheduled out. If a second vCPU of the same guest calls +del_timer_sync() it will spin wait for the other vCPU to be scheduled back +in. The expiry lock mechanism would avoid that. It'd be trivial to enable +this when paravirt spinlocks are enabled in a guest, but it's not clear +whether this is an actual problem in the wild, so for now it's an RT only +mechanism. + +As the softirq thread can be preempted with PREEMPT_RT=y, the SMP variant +of del_timer_sync() needs to be used on UP as well. + +[ tglx: Refactored it for mainline ] + +Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> +Link: https://lkml.kernel.org/r/20190726185753.832418500@linutronix.de +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/time/timer.c | 130 ++++++++++++++++++++++++++++++-------------- + 1 file changed, 88 insertions(+), 42 deletions(-) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index 0a6d60b3e67c..b859ecf6424b 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -198,7 +198,10 @@ EXPORT_SYMBOL(jiffies_64); + struct timer_base { + raw_spinlock_t lock; + struct timer_list *running_timer; ++#ifdef CONFIG_PREEMPT_RT + spinlock_t expiry_lock; ++ atomic_t timer_waiters; ++#endif + unsigned long clk; + unsigned long next_expiry; + unsigned int cpu; +@@ -1227,8 +1230,14 @@ int del_timer(struct timer_list *timer) + } + EXPORT_SYMBOL(del_timer); + +-static int __try_to_del_timer_sync(struct timer_list *timer, +- struct timer_base **basep) ++/** ++ * try_to_del_timer_sync - Try to deactivate a timer ++ * @timer: timer to delete ++ * ++ * This function tries to deactivate a timer. Upon successful (ret >= 0) ++ * exit the timer is not queued and the handler is not running on any CPU. ++ */ ++int try_to_del_timer_sync(struct timer_list *timer) + { + struct timer_base *base; + unsigned long flags; +@@ -1236,7 +1245,7 @@ static int __try_to_del_timer_sync(struct timer_list *timer, + + debug_assert_init(timer); + +- *basep = base = lock_timer_base(timer, &flags); ++ base = lock_timer_base(timer, &flags); + + if (base->running_timer != timer) + ret = detach_if_pending(timer, base, true); +@@ -1245,45 +1254,80 @@ static int __try_to_del_timer_sync(struct timer_list *timer, + + return ret; + } ++EXPORT_SYMBOL(try_to_del_timer_sync); + +-/** +- * try_to_del_timer_sync - Try to deactivate a timer +- * @timer: timer to delete +- * +- * This function tries to deactivate a timer. Upon successful (ret >= 0) +- * exit the timer is not queued and the handler is not running on any CPU. +- */ +-int try_to_del_timer_sync(struct timer_list *timer) ++#ifdef CONFIG_PREEMPT_RT ++static __init void timer_base_init_expiry_lock(struct timer_base *base) + { +- struct timer_base *base; ++ spin_lock_init(&base->expiry_lock); ++} + +- return __try_to_del_timer_sync(timer, &base); ++static inline void timer_base_lock_expiry(struct timer_base *base) ++{ ++ spin_lock(&base->expiry_lock); + } +-EXPORT_SYMBOL(try_to_del_timer_sync); + +-#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) +-static int __del_timer_sync(struct timer_list *timer) ++static inline void timer_base_unlock_expiry(struct timer_base *base) + { +- struct timer_base *base; +- int ret; ++ spin_unlock(&base->expiry_lock); ++} + +- for (;;) { +- ret = __try_to_del_timer_sync(timer, &base); +- if (ret >= 0) +- return ret; ++/* ++ * The counterpart to del_timer_wait_running(). ++ * ++ * If there is a waiter for base->expiry_lock, then it was waiting for the ++ * timer callback to finish. Drop expiry_lock and reaquire it. That allows ++ * the waiter to acquire the lock and make progress. ++ */ ++static void timer_sync_wait_running(struct timer_base *base) ++{ ++ if (atomic_read(&base->timer_waiters)) { ++ spin_unlock(&base->expiry_lock); ++ spin_lock(&base->expiry_lock); ++ } ++} + +- if (READ_ONCE(timer->flags) & TIMER_IRQSAFE) +- continue; ++/* ++ * This function is called on PREEMPT_RT kernels when the fast path ++ * deletion of a timer failed because the timer callback function was ++ * running. ++ * ++ * This prevents priority inversion, if the softirq thread on a remote CPU ++ * got preempted, and it prevents a life lock when the task which tries to ++ * delete a timer preempted the softirq thread running the timer callback ++ * function. ++ */ ++static void del_timer_wait_running(struct timer_list *timer) ++{ ++ u32 tf; ++ ++ tf = READ_ONCE(timer->flags); ++ if (!(tf & TIMER_MIGRATING)) { ++ struct timer_base *base = get_timer_base(tf); + + /* +- * When accessing the lock, timers of base are no longer expired +- * and so timer is no longer running. ++ * Mark the base as contended and grab the expiry lock, ++ * which is held by the softirq across the timer ++ * callback. Drop the lock immediately so the softirq can ++ * expire the next timer. In theory the timer could already ++ * be running again, but that's more than unlikely and just ++ * causes another wait loop. + */ +- spin_lock(&base->expiry_lock); +- spin_unlock(&base->expiry_lock); ++ atomic_inc(&base->timer_waiters); ++ spin_lock_bh(&base->expiry_lock); ++ atomic_dec(&base->timer_waiters); ++ spin_unlock_bh(&base->expiry_lock); + } + } ++#else ++static inline void timer_base_init_expiry_lock(struct timer_base *base) { } ++static inline void timer_base_lock_expiry(struct timer_base *base) { } ++static inline void timer_base_unlock_expiry(struct timer_base *base) { } ++static inline void timer_sync_wait_running(struct timer_base *base) { } ++static inline void del_timer_wait_running(struct timer_list *timer) { } ++#endif + ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT_FULL) + /** + * del_timer_sync - deactivate a timer and wait for the handler to finish. + * @timer: the timer to be deactivated +@@ -1322,6 +1366,8 @@ static int __del_timer_sync(struct timer_list *timer) + */ + int del_timer_sync(struct timer_list *timer) + { ++ int ret; ++ + #ifdef CONFIG_LOCKDEP + unsigned long flags; + +@@ -1339,14 +1385,17 @@ int del_timer_sync(struct timer_list *timer) + * could lead to deadlock. + */ + WARN_ON(in_irq() && !(timer->flags & TIMER_IRQSAFE)); +- /* +- * Must be able to sleep on PREEMPT_RT because of the slowpath in +- * __del_timer_sync(). +- */ +- if (IS_ENABLED(CONFIG_PREEMPT_RT) && !(timer->flags & TIMER_IRQSAFE)) +- might_sleep(); + +- return __del_timer_sync(timer); ++ do { ++ ret = try_to_del_timer_sync(timer); ++ ++ if (unlikely(ret < 0)) { ++ del_timer_wait_running(timer); ++ cpu_relax(); ++ } ++ } while (ret < 0); ++ ++ return ret; + } + EXPORT_SYMBOL(del_timer_sync); + #endif +@@ -1410,15 +1459,12 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head) + raw_spin_unlock(&base->lock); + call_timer_fn(timer, fn); + base->running_timer = NULL; +- spin_unlock(&base->expiry_lock); +- spin_lock(&base->expiry_lock); + raw_spin_lock(&base->lock); + } else { + raw_spin_unlock_irq(&base->lock); + call_timer_fn(timer, fn); + base->running_timer = NULL; +- spin_unlock(&base->expiry_lock); +- spin_lock(&base->expiry_lock); ++ timer_sync_wait_running(base); + raw_spin_lock_irq(&base->lock); + } + } +@@ -1715,7 +1761,7 @@ static inline void __run_timers(struct timer_base *base) + if (!time_after_eq(jiffies, base->clk)) + return; + +- spin_lock(&base->expiry_lock); ++ timer_base_lock_expiry(base); + raw_spin_lock_irq(&base->lock); + + /* +@@ -1743,7 +1789,7 @@ static inline void __run_timers(struct timer_base *base) + expire_timers(base, heads + levels); + } + raw_spin_unlock_irq(&base->lock); +- spin_unlock(&base->expiry_lock); ++ timer_base_unlock_expiry(base); + } + + /* +@@ -1990,7 +2036,7 @@ static void __init init_timer_cpu(int cpu) + base->cpu = cpu; + raw_spin_lock_init(&base->lock); + base->clk = jiffies; +- spin_lock_init(&base->expiry_lock); ++ timer_base_init_expiry_lock(base); + } + } + 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 new file mode 100644 index 000000000..d01940b4c --- /dev/null +++ b/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch @@ -0,0 +1,86 @@ +From: Thomas Gleixner <tglx@linutronix.de> +Date: Mon, 31 Oct 2022 16:50:05 +0100 +Subject: [PATCH 349/351] 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=eee43f1aec23fc7a8d80e59c805ddfeacfe1eac5 + +Upstream commit bb7262b295472eb6858b5c49893954794027cd84 + +syzbot reported KCSAN data races vs. timer_base::timer_running being set to +NULL without holding base::lock in expire_timers(). + +This looks innocent and most reads are clearly not problematic, but +Frederic identified an issue which is: + + int data = 0; + + void timer_func(struct timer_list *t) + { + data = 1; + } + + CPU 0 CPU 1 + ------------------------------ -------------------------- + base = lock_timer_base(timer, &flags); raw_spin_unlock(&base->lock); + if (base->running_timer != timer) call_timer_fn(timer, fn, baseclk); + ret = detach_if_pending(timer, base, true); base->running_timer = NULL; + raw_spin_unlock_irqrestore(&base->lock, flags); raw_spin_lock(&base->lock); + + x = data; + +If the timer has previously executed on CPU 1 and then CPU 0 can observe +base->running_timer == NULL and returns, assuming the timer has completed, +but it's not guaranteed on all architectures. The comment for +del_timer_sync() makes that guarantee. Moving the assignment under +base->lock prevents this. + +For non-RT kernel it's performance wise completely irrelevant whether the +store happens before or after taking the lock. For an RT kernel moving the +store under the lock requires an extra unlock/lock pair in the case that +there is a waiter for the timer, but that's not the end of the world. + +Reported-by: syzbot+aa7c2385d46c5eba0b89@syzkaller.appspotmail.com +Reported-by: syzbot+abea4558531bae1ba9fe@syzkaller.appspotmail.com +Fixes: 030dcdd197d7 ("timers: Prepare support for PREEMPT_RT") +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Link: https://lore.kernel.org/r/87lfea7gw8.fsf@nanos.tec.linutronix.de +Cc: stable@vger.kernel.org +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/time/timer.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index b859ecf6424b..603985720f54 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1282,8 +1282,10 @@ static inline void timer_base_unlock_expiry(struct timer_base *base) + static void timer_sync_wait_running(struct timer_base *base) + { + if (atomic_read(&base->timer_waiters)) { ++ raw_spin_unlock_irq(&base->lock); + spin_unlock(&base->expiry_lock); + spin_lock(&base->expiry_lock); ++ raw_spin_lock_irq(&base->lock); + } + } + +@@ -1458,14 +1460,14 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head) + if (timer->flags & TIMER_IRQSAFE) { + raw_spin_unlock(&base->lock); + call_timer_fn(timer, fn); +- base->running_timer = NULL; + raw_spin_lock(&base->lock); ++ base->running_timer = NULL; + } else { + raw_spin_unlock_irq(&base->lock); + call_timer_fn(timer, fn); ++ raw_spin_lock_irq(&base->lock); + base->running_timer = NULL; + timer_sync_wait_running(base); +- raw_spin_lock_irq(&base->lock); + } + } + } 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 new file mode 100644 index 000000000..7bf384e14 --- /dev/null +++ b/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -0,0 +1,68 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Mon, 31 Oct 2022 16:50:06 +0100 +Subject: [PATCH 350/351] 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=deb2c700cef1bff119c5b7fe75b105e1918ad70f + +Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 + +PREEMPT_RT does not spin and wait until a running timer completes its +callback but instead it blocks on a sleeping lock to prevent a livelock in +the case that the task waiting for the callback completion preempted the +callback. + +This cannot be done for timers flagged with TIMER_IRQSAFE. These timers can +be canceled from an interrupt disabled context even on RT kernels. + +The expiry callback of such timers is invoked with interrupts disabled so +there is no need to use the expiry lock mechanism because obviously the +callback cannot be preempted even on RT kernels. + +Do not use the timer_base::expiry_lock mechanism when waiting for a running +callback to complete if the timer is flagged with TIMER_IRQSAFE. + +Also add a lockdep assertion for RT kernels to validate that the expiry +lock mechanism is always invoked in preemptible context. + +[ bigeasy: Dropping that lockdep_assert_preemption_enabled() check in + backport ] + +Reported-by: Mike Galbraith <efault@gmx.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Link: https://lore.kernel.org/r/20201103190937.hga67rqhvknki3tp@linutronix.de +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/time/timer.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index 603985720f54..8c7bfcee9609 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -1304,7 +1304,7 @@ static void del_timer_wait_running(struct timer_list *timer) + u32 tf; + + tf = READ_ONCE(timer->flags); +- if (!(tf & TIMER_MIGRATING)) { ++ if (!(tf & (TIMER_MIGRATING | TIMER_IRQSAFE))) { + struct timer_base *base = get_timer_base(tf); + + /* +@@ -1388,6 +1388,15 @@ int del_timer_sync(struct timer_list *timer) + */ + WARN_ON(in_irq() && !(timer->flags & TIMER_IRQSAFE)); + ++ /* ++ * Must be able to sleep on PREEMPT_RT because of the slowpath in ++ * del_timer_wait_running(). ++ */ ++#if 0 ++ if (IS_ENABLED(CONFIG_PREEMPT_RT) && !(timer->flags & TIMER_IRQSAFE)) ++ lockdep_assert_preemption_enabled(); ++#endif ++ + do { + ret = try_to_del_timer_sync(timer); + diff --git a/debian/patches-rt/0342-Linux-4.19.255-rt113-REBASE.patch b/debian/patches-rt/0351-Linux-4.19.265-rt117-REBASE.patch index 35ac2d84b..794dd1786 100644 --- a/debian/patches-rt/0342-Linux-4.19.255-rt113-REBASE.patch +++ b/debian/patches-rt/0351-Linux-4.19.265-rt117-REBASE.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> -Date: Sat, 13 Aug 2022 18:54:48 +0200 -Subject: [PATCH 342/342] Linux 4.19.255-rt113 REBASE -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0d99014e3dd9542fa47ea03e0d4cde570e34928 +Date: Tue, 15 Nov 2022 17:47:25 +0100 +Subject: [PATCH 351/351] Linux 4.19.265-rt117 REBASE +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=562b4732685f0fb3dc0a4abe804fe6e31f47d6b9 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..fdcd9167ca0b 100644 +index 1199ebade17b..9788245dd428 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt16 -+-rt113 ++-rt117 diff --git a/debian/patches-rt/series b/debian/patches-rt/series index 1bf3392fd..0e5bb8615 100644 --- a/debian/patches-rt/series +++ b/debian/patches-rt/series @@ -14,7 +14,6 @@ 0014-cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch 0015-fscache-initialize-cookie-hash-table-raw-spinlocks.patch 0016-Drivers-hv-vmbus-include-header-for-get_irq_regs.patch -0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch 0018-efi-Allow-efi-runtime.patch 0019-x86-efi-drop-task_lock-from-efi_switch_mm.patch 0020-arm64-KVM-compute_layout-before-altenates-are-applie.patch @@ -338,5 +337,14 @@ 0338-rt-PREEMPT_RT-safety-net-for-backported-patches.patch 0339-net-Add-missing-xmit_lock_owner-hunks.patch 0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch -0341-random-Use-local-locks-for-crng-context-access.patch -0342-Linux-4.19.255-rt113-REBASE.patch +0341-random-Bring-back-the-local_locks.patch +0342-local_lock-Provide-INIT_LOCAL_LOCK.patch +0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch +0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch +0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +0346-rcu-Update-rcuwait.patch +0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch +0348-timers-Prepare-support-for-PREEMPT_RT.patch +0349-timers-Move-clearing-of-base-timer_running-under-bas.patch +0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +0351-Linux-4.19.265-rt117-REBASE.patch |