diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 04:15:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-08 04:15:14 +0000 |
commit | e549f10391e1fc78dab80e9b9ef524d214d4af40 (patch) | |
tree | 5358015c2d151febc170684ed8ddf2011b3ac4af /debian/patches-rt | |
parent | Merging upstream version 4.19.282. (diff) | |
download | linux-e549f10391e1fc78dab80e9b9ef524d214d4af40.tar.xz linux-e549f10391e1fc78dab80e9b9ef524d214d4af40.zip |
Adding debian version 4.19.282-1.debian/4.19.282-1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
355 files changed, 1244 insertions, 1069 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 b8f80db73..19f5afda8 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/351] ARM: at91: add TCB registers definitions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=066bff5bc180d4a40c961efbbe8bc938044d0bb3 +Subject: [PATCH 001/353] ARM: at91: add TCB registers definitions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f8e76648608be71aae7edafa6a30b171f2b2970 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 2c0e2a003..3f3c3ec86 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/351] clocksource/drivers: Add a new driver for the Atmel +Subject: [PATCH 002/353] 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=732ba9ebea0cec8807da3283f075fc7ce32cfc0d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cad9f391ef986da64693de122126c3a608dd70b3 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 395a38d75..28f7478e9 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/351] clocksource/drivers: timer-atmel-tcb: add clockevent +Subject: [PATCH 003/353] 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=403681deaff8ad3197633616efee3524cda04e60 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8438734137350f7aacf45ae690020de5b97db0b8 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 0883db9c8..e555c91a0 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/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 +Subject: [PATCH 004/353] clocksource/drivers: atmel-pit: make option silent +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e66e709351a5e6817ed00d12c566292332019881 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 55116bc8c..743b9b878 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/351] ARM: at91: Implement clocksource selection -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f2cee27973350059b967705738e817b161fd383 +Subject: [PATCH 005/353] ARM: at91: Implement clocksource selection +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e008608018ce1dd7be4bfaeb9f5cc7a5eee0f30 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 818572855..b03132bb2 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/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 +Subject: [PATCH 006/353] ARM: configs: at91: use new TCB timer driver +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=607b76bcfc8f2a8ec770b43b487ad235d4b7b940 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 724b65991..4d3057ba1 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/351] ARM: configs: at91: unselect PIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b77e847f5681b5ee54a353133ff5519679c6bca6 +Subject: [PATCH 007/353] ARM: configs: at91: unselect PIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9026dc7b1b9265e610fb56548d2229f75e7071d2 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 ede2dd62d..fa2e8a043 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/351] irqchip/gic-v3-its: Move pending table allocation to +Subject: [PATCH 008/353] 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=d9fb57db9ae54bc1252eb9cb8eb620889742c94e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b992344075e68d94c0630e2db5a77c6da7ffa0d 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 f8b78ab00..5c2b54f07 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/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 +Subject: [PATCH 009/353] kthread: convert worker lock to raw spinlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1157b789e0af47a4aae36797f66080a417be1735 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 373c60ab9..55459f795 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/351] crypto: caam/qi - simplify CGR allocation, freeing +Subject: [PATCH 010/353] 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=3b728fd1725301cc64ba51b9c679496bf9d376e7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f2433c8b8290b53c76f9a6fdf0decd581fb0ead2 [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 8b2a7828a..9c21a31ee 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/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 +Subject: [PATCH 011/353] sched/fair: Robustify CFS-bandwidth timer locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f49715d6f5238237e005258f1d8c7b0c4c87e82 Traditionally hrtimer callbacks were run with IRQs disabled, but with the introduction of HRTIMER_MODE_SOFT it is possible they run from @@ -29,10 +29,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 84e7efda98da..e84a056f783f 100644 +index eb67f42fb96b..d19981efd980 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4597,7 +4597,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) +@@ -4644,7 +4644,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) struct rq *rq = rq_of(cfs_rq); struct rq_flags rf; @@ -41,7 +41,7 @@ index 84e7efda98da..e84a056f783f 100644 if (!cfs_rq_throttled(cfs_rq)) goto next; -@@ -4616,7 +4616,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) +@@ -4663,7 +4663,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) unthrottle_cfs_rq(cfs_rq); next: @@ -50,7 +50,7 @@ index 84e7efda98da..e84a056f783f 100644 if (!remaining) break; -@@ -4632,7 +4632,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) +@@ -4679,7 +4679,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) * period the timer is deactivated until scheduling resumes; cfs_b->idle is * used to track this state. */ @@ -59,7 +59,7 @@ index 84e7efda98da..e84a056f783f 100644 { u64 runtime; int throttled; -@@ -4672,10 +4672,10 @@ static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun) +@@ -4719,10 +4719,10 @@ static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun) while (throttled && cfs_b->runtime > 0 && !cfs_b->distribute_running) { runtime = cfs_b->runtime; cfs_b->distribute_running = 1; @@ -72,7 +72,7 @@ index 84e7efda98da..e84a056f783f 100644 cfs_b->distribute_running = 0; throttled = !list_empty(&cfs_b->throttled_cfs_rq); -@@ -4783,16 +4783,17 @@ static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) +@@ -4830,16 +4830,17 @@ static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b) { u64 runtime = 0, slice = sched_cfs_bandwidth_slice(); @@ -93,7 +93,7 @@ index 84e7efda98da..e84a056f783f 100644 return; } -@@ -4802,17 +4803,17 @@ static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b) +@@ -4849,17 +4850,17 @@ static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b) if (runtime) cfs_b->distribute_running = 1; @@ -114,7 +114,7 @@ index 84e7efda98da..e84a056f783f 100644 } /* -@@ -4892,11 +4893,12 @@ static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer) +@@ -4939,11 +4940,12 @@ static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer) { struct cfs_bandwidth *cfs_b = container_of(timer, struct cfs_bandwidth, period_timer); @@ -128,7 +128,7 @@ index 84e7efda98da..e84a056f783f 100644 for (;;) { overrun = hrtimer_forward_now(timer, cfs_b->period); if (!overrun) -@@ -4932,11 +4934,11 @@ static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer) +@@ -4979,11 +4981,11 @@ static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer) count = 0; } 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 5b582426f..7eca0c56b 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/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 +Subject: [PATCH 012/353] arm: Convert arm boot_lock to raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c98a1f617672a545b5c841bf7c320048a96a00c 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 5c9b99218..c0c88207e 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/351] x86/ioapic: Don't let setaffinity unmask threaded EOI +Subject: [PATCH 013/353] 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=2291d37f1f88b1e7c56dcc321af436a85891e3d5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5c75c30b266d93ca24a3352c4c16e53fe5812d8 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 1a23d4bbf..fa18111f9 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/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 +Subject: [PATCH 014/353] cgroup: use irqsave in cgroup_rstat_flush_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=512f4cf1610e17ab70fda9dcb826e50bc06f93e2 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 bbd52033c..a3f208de2 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/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 +Subject: [PATCH 015/353] fscache: initialize cookie hash table raw spinlocks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a4e04766b8db37296bb1c0f0176b5c7d04b7cfe 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 5cca3d2ce..a08a94124 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/351] Drivers: hv: vmbus: include header for get_irq_regs() +Subject: [PATCH 016/353] 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=08d5b89869038b04508e01db3d9c2823f1d18c1c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=98a00dcbef7d9d6355cde8351c7b0dee85730f03 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 new file mode 100644 index 000000000..7785c3a81 --- /dev/null +++ b/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch @@ -0,0 +1,29 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Thu, 11 Oct 2018 16:39:59 +0200 +Subject: [PATCH 017/353] percpu: include irqflags.h for raw_local_irq_save() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=19884a6cad964e920a1662b946593ab6020f8957 + +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 983c323c8..8d0b33065 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/351] efi: Allow efi=runtime -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbe76f6e74b065be6b21849333fcee093baff12a +Subject: [PATCH 018/353] efi: Allow efi=runtime +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a72511f8ea9247ecac927b587eeb0813d4ed5505 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 f0ef2643b70e..9137fb107ae4 100644 +index c966a23de85d..3f93e54e094b 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 5f26c186b..435aa8376 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/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 +Subject: [PATCH 019/353] x86/efi: drop task_lock() from efi_switch_mm() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d699a62eefdeeedd604142d90cae7489eb8b6314 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 ce3da1517..3e817c016 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/351] arm64: KVM: compute_layout before altenates are +Subject: [PATCH 020/353] arm64: KVM: compute_layout before altenates are applied -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3e7a19db684d20c99425ab89480c71931f76aed3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7df97bdc241a6170c71afc0082bb56e823fd51cb 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 afa46a183..971d7d4e5 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/351] of: allocate / free phandle cache outside of the +Subject: [PATCH 021/353] 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=3d365b804f891b5e1e3554be17d8c834db3330e3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bbce4567a74bf51efe5f4bc4f1bbdb59e21dd3c7 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 2b2115681..4311cc6d1 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/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 +Subject: [PATCH 022/353] mm/kasan: make quarantine_lock a raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4e300c23eb18371d4ba57e1e3cbcb590f614059 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 1f1bbe53f..8e2e9cfd4 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/351] EXP rcu: Revert expedited GP parallelization +Subject: [PATCH 023/353] EXP rcu: Revert expedited GP parallelization cleverness -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0bd926ced576e698b47251d7867b02d829e4115 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4fc273a9ba585393a5651eade8a6f01a83743594 (Commit 258ba8e089db23f760139266c232f01bad73f85c from linux-rcu) @@ -19,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h -index 72770a551c24..ac6d6fdf5783 100644 +index fa6ae9ed2e1d..289a26b81fd7 100644 --- a/kernel/rcu/tree_exp.h +++ b/kernel/rcu/tree_exp.h @@ -472,7 +472,6 @@ static void sync_rcu_exp_select_node_cpus(struct work_struct *wp) 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 0081cb724..d62678ee9 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/351] kmemleak: Turn kmemleak_lock to raw spinlock on RT +Subject: [PATCH 024/353] 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=bd3b951faee26093ccec1213cffb509f40cb19d0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=65641f1f87399bb60a3060026b35a48cbc12e5db kmemleak_lock, as a rwlock on RT, can possibly be held in atomic context and causes the follow BUG. diff --git a/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch b/debian/patches-rt/0025-NFSv4-replace-seqcount_t-with-a-seqlock_t.patch index 108d1a08a..f127a36d7 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/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 +Subject: [PATCH 025/353] NFSv4: replace seqcount_t with a seqlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e36671ce4bf576f03e10887842cb4d4d18b2373c 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,10 +57,10 @@ index 5ac7bf24c507..b15a7a2f64fe 100644 }; diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index f9f76594b866..7feb4c11471a 100644 +index 250fa88303fa..b61a0f4b2ae8 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, +@@ -2879,7 +2879,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, unsigned int seq; int ret; @@ -69,7 +69,7 @@ index f9f76594b866..7feb4c11471a 100644 ret = _nfs4_proc_open(opendata, ctx); if (ret != 0) -@@ -2915,7 +2915,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, +@@ -2920,7 +2920,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, if (d_inode(dentry) == state->inode) { nfs_inode_attach_open_context(ctx); @@ -79,7 +79,7 @@ index f9f76594b866..7feb4c11471a 100644 } diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c -index 5ab021f87ecf..f97c63038ff2 100644 +index b9fbd01ef4cf..cd0cd6594947 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -516,7 +516,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, @@ -91,7 +91,7 @@ index 5ab021f87ecf..f97c63038ff2 100644 mutex_init(&sp->so_delegreturn_mutex); return sp; } -@@ -1584,8 +1584,12 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs +@@ -1586,8 +1586,12 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs * recovering after a network partition or a reboot from a * server that doesn't support a grace period. */ @@ -105,7 +105,7 @@ index 5ab021f87ecf..f97c63038ff2 100644 restart: list_for_each_entry(state, &sp->so_states, open_states) { if (!test_and_clear_bit(ops->state_flag_bit, &state->flags)) -@@ -1672,14 +1676,20 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs +@@ -1674,14 +1678,20 @@ static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs spin_lock(&sp->so_lock); goto restart; } 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 1732dfed8..aae3ea1c6 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/351] kernel: sched: Provide a pointer to the valid CPU +Subject: [PATCH 026/353] 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=b52972c9d7da09d15e44aad1448655ebdbb87553 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ef5ef947f2c50bf428e512ab5499199c373b0311 In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not @@ -132,7 +132,7 @@ index a7c0f97e4b0d..1a08428eedcf 100644 out_unlock: diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c -index 0ca4185cc5e3..97bf5291130a 100644 +index 01c85d37c47a..ec938f26cc24 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -1174,12 +1174,12 @@ static void mt_ase_fp_affinity(void) @@ -178,10 +178,10 @@ index a999a58ca331..d6410d0740ea 100644 return -EINVAL; } diff --git a/drivers/infiniband/hw/hfi1/affinity.c b/drivers/infiniband/hw/hfi1/affinity.c -index 01ed0a667928..2c62de6b5bf1 100644 +index bb670249bebf..deced4654e66 100644 --- a/drivers/infiniband/hw/hfi1/affinity.c +++ b/drivers/infiniband/hw/hfi1/affinity.c -@@ -1039,7 +1039,7 @@ int hfi1_get_proc_affinity(int node) +@@ -1041,7 +1041,7 @@ int hfi1_get_proc_affinity(int node) struct hfi1_affinity_node *entry; cpumask_var_t diff, hw_thread_mask, available_mask, intrs_mask; const struct cpumask *node_mask, @@ -190,7 +190,7 @@ index 01ed0a667928..2c62de6b5bf1 100644 struct hfi1_affinity_node_list *affinity = &node_affinity; struct cpu_mask_set *set = &affinity->proc; -@@ -1047,7 +1047,7 @@ int hfi1_get_proc_affinity(int node) +@@ -1049,7 +1049,7 @@ int hfi1_get_proc_affinity(int node) * check whether process/context affinity has already * been set */ @@ -199,7 +199,7 @@ index 01ed0a667928..2c62de6b5bf1 100644 hfi1_cdbg(PROC, "PID %u %s affinity set to CPU %*pbl", current->pid, current->comm, cpumask_pr_args(proc_mask)); -@@ -1058,7 +1058,7 @@ int hfi1_get_proc_affinity(int node) +@@ -1060,7 +1060,7 @@ int hfi1_get_proc_affinity(int node) cpu = cpumask_first(proc_mask); cpumask_set_cpu(cpu, &set->used); goto done; @@ -307,10 +307,10 @@ index 994ffe018120..d71054b95528 100644 .mm = NULL, .active_mm = &init_mm, diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c -index dcd5755b1fe2..35541e1dfad9 100644 +index c6d412cebc43..b5a1dca1d4d1 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c -@@ -2096,7 +2096,7 @@ static void cpuset_fork(struct task_struct *task) +@@ -2101,7 +2101,7 @@ static void cpuset_fork(struct task_struct *task) if (task_css_is_root(task, cpuset_cgrp_id)) return; @@ -333,10 +333,10 @@ 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 a03464249771..985cfa10fda5 100644 +index 8d5a9fa8a951..81f86841b841 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) +@@ -881,7 +881,7 @@ static inline bool is_per_cpu_kthread(struct task_struct *p) */ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) { @@ -345,7 +345,7 @@ index a03464249771..985cfa10fda5 100644 return false; if (is_per_cpu_kthread(p)) -@@ -973,7 +973,7 @@ static int migration_cpu_stop(void *data) +@@ -976,7 +976,7 @@ static int migration_cpu_stop(void *data) local_irq_disable(); /* * We need to explicitly wake pending tasks before running @@ -354,7 +354,7 @@ index a03464249771..985cfa10fda5 100644 * during wakeups, see set_cpus_allowed_ptr()'s TASK_WAKING test. */ sched_ttwu_pending(); -@@ -1004,7 +1004,7 @@ static int migration_cpu_stop(void *data) +@@ -1007,7 +1007,7 @@ static int migration_cpu_stop(void *data) */ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask) { @@ -363,7 +363,7 @@ index a03464249771..985cfa10fda5 100644 p->nr_cpus_allowed = cpumask_weight(new_mask); } -@@ -1074,7 +1074,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -1077,7 +1077,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, goto out; } @@ -372,7 +372,7 @@ index a03464249771..985cfa10fda5 100644 goto out; dest_cpu = cpumask_any_and(cpu_valid_mask, new_mask); -@@ -1237,10 +1237,10 @@ static int migrate_swap_stop(void *data) +@@ -1240,10 +1240,10 @@ static int migrate_swap_stop(void *data) if (task_cpu(arg->src_task) != arg->src_cpu) goto unlock; @@ -385,7 +385,7 @@ index a03464249771..985cfa10fda5 100644 goto unlock; __migrate_swap_task(arg->src_task, arg->dst_cpu); -@@ -1282,10 +1282,10 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, +@@ -1285,10 +1285,10 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, if (!cpu_active(arg.src_cpu) || !cpu_active(arg.dst_cpu)) goto out; @@ -398,7 +398,7 @@ index a03464249771..985cfa10fda5 100644 goto out; trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu); -@@ -1430,7 +1430,7 @@ void kick_process(struct task_struct *p) +@@ -1433,7 +1433,7 @@ void kick_process(struct task_struct *p) EXPORT_SYMBOL_GPL(kick_process); /* @@ -407,7 +407,7 @@ index a03464249771..985cfa10fda5 100644 * * A few notes on cpu_active vs cpu_online: * -@@ -1470,14 +1470,14 @@ static int select_fallback_rq(int cpu, struct task_struct *p) +@@ -1473,14 +1473,14 @@ static int select_fallback_rq(int cpu, struct task_struct *p) for_each_cpu(dest_cpu, nodemask) { if (!cpu_active(dest_cpu)) continue; @@ -424,7 +424,7 @@ index a03464249771..985cfa10fda5 100644 if (!is_cpu_allowed(p, dest_cpu)) continue; -@@ -1521,7 +1521,7 @@ static int select_fallback_rq(int cpu, struct task_struct *p) +@@ -1524,7 +1524,7 @@ static int select_fallback_rq(int cpu, struct task_struct *p) } /* @@ -433,7 +433,7 @@ index a03464249771..985cfa10fda5 100644 */ static inline int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) -@@ -1531,11 +1531,11 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) +@@ -1534,11 +1534,11 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) if (p->nr_cpus_allowed > 1) cpu = p->sched_class->select_task_rq(p, cpu, sd_flags, wake_flags); else @@ -447,7 +447,7 @@ index a03464249771..985cfa10fda5 100644 * CPU. * * Since this is common to all placement strategies, this lives here. -@@ -2406,7 +2406,7 @@ void wake_up_new_task(struct task_struct *p) +@@ -2409,7 +2409,7 @@ void wake_up_new_task(struct task_struct *p) #ifdef CONFIG_SMP /* * Fork balancing, do it here and not earlier because: @@ -456,7 +456,7 @@ index a03464249771..985cfa10fda5 100644 * - any previously selected CPU might disappear through hotplug * * Use __set_task_cpu() to avoid calling sched_class::migrate_task_rq, -@@ -4323,7 +4323,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -4325,7 +4325,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 a03464249771..985cfa10fda5 100644 rq->rd->dl_bw.bw == 0) { task_rq_unlock(rq, p, &rf); return -EPERM; -@@ -4922,7 +4922,7 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask) +@@ -4924,7 +4924,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 a03464249771..985cfa10fda5 100644 raw_spin_unlock_irqrestore(&p->pi_lock, flags); out_unlock: -@@ -5499,7 +5499,7 @@ int task_can_attach(struct task_struct *p, +@@ -5501,7 +5501,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 a03464249771..985cfa10fda5 100644 */ if (p->flags & PF_NO_SETAFFINITY) { ret = -EINVAL; -@@ -5526,7 +5526,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) +@@ -5528,7 +5528,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) if (curr_cpu == target_cpu) return 0; @@ -492,7 +492,7 @@ index a03464249771..985cfa10fda5 100644 return -EINVAL; /* TODO: This is not properly updating schedstats */ -@@ -5665,7 +5665,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) +@@ -5667,7 +5667,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) put_prev_task(rq, next); /* @@ -572,7 +572,7 @@ index 29ed5d8d30d6..9243d0049714 100644 !dl_task(task) || !task_on_rq_queued(task))) { diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index e84a056f783f..16940416d526 100644 +index d19981efd980..bd9a375c45f4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1691,7 +1691,7 @@ static void task_numa_compare(struct task_numa_env *env, @@ -593,7 +593,7 @@ index e84a056f783f..16940416d526 100644 continue; env->dst_cpu = cpu; -@@ -5803,7 +5803,7 @@ find_idlest_group(struct sched_domain *sd, struct task_struct *p, +@@ -5850,7 +5850,7 @@ find_idlest_group(struct sched_domain *sd, struct task_struct *p, /* Skip over this group if it has no CPUs allowed */ if (!cpumask_intersects(sched_group_span(group), @@ -602,7 +602,7 @@ index e84a056f783f..16940416d526 100644 continue; local_group = cpumask_test_cpu(this_cpu, -@@ -5935,7 +5935,7 @@ find_idlest_group_cpu(struct sched_group *group, struct task_struct *p, int this +@@ -5982,7 +5982,7 @@ find_idlest_group_cpu(struct sched_group *group, struct task_struct *p, int this return cpumask_first(sched_group_span(group)); /* Traverse only the allowed CPUs */ @@ -611,7 +611,7 @@ index e84a056f783f..16940416d526 100644 if (available_idle_cpu(i)) { struct rq *rq = cpu_rq(i); struct cpuidle_state *idle = idle_get_state(rq); -@@ -5975,7 +5975,7 @@ static inline int find_idlest_cpu(struct sched_domain *sd, struct task_struct *p +@@ -6022,7 +6022,7 @@ static inline int find_idlest_cpu(struct sched_domain *sd, struct task_struct *p { int new_cpu = cpu; @@ -620,7 +620,7 @@ index e84a056f783f..16940416d526 100644 return prev_cpu; /* -@@ -6092,7 +6092,7 @@ static int select_idle_core(struct task_struct *p, struct sched_domain *sd, int +@@ -6139,7 +6139,7 @@ static int select_idle_core(struct task_struct *p, struct sched_domain *sd, int if (!test_idle_cores(target, false)) return -1; @@ -629,7 +629,7 @@ index e84a056f783f..16940416d526 100644 for_each_cpu_wrap(core, cpus, target) { bool idle = true; -@@ -6126,7 +6126,7 @@ static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int t +@@ -6173,7 +6173,7 @@ static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int t return -1; for_each_cpu(cpu, cpu_smt_mask(target)) { @@ -638,7 +638,7 @@ index e84a056f783f..16940416d526 100644 continue; if (available_idle_cpu(cpu)) return cpu; -@@ -6187,7 +6187,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t +@@ -6234,7 +6234,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t time = local_clock(); @@ -647,7 +647,7 @@ index e84a056f783f..16940416d526 100644 for_each_cpu_wrap(cpu, cpus, target) { if (!--nr) -@@ -6227,7 +6227,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) +@@ -6274,7 +6274,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) recent_used_cpu != target && cpus_share_cache(recent_used_cpu, target) && available_idle_cpu(recent_used_cpu) && @@ -656,7 +656,7 @@ index e84a056f783f..16940416d526 100644 /* * Replace recent_used_cpu with prev as it is a potential * candidate for the next wake: -@@ -6445,7 +6445,7 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f +@@ -6492,7 +6492,7 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f if (sd_flag & SD_BALANCE_WAKE) { record_wakee(p); want_affine = !wake_wide(p) && !wake_cap(p, cpu, prev_cpu) @@ -665,7 +665,7 @@ index e84a056f783f..16940416d526 100644 } rcu_read_lock(); -@@ -7184,14 +7184,14 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) +@@ -7228,14 +7228,14 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) /* * We do not migrate tasks that are: * 1) throttled_lb_pair, or @@ -682,7 +682,7 @@ index e84a056f783f..16940416d526 100644 int cpu; schedstat_inc(p->se.statistics.nr_failed_migrations_affine); -@@ -7211,7 +7211,7 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) +@@ -7255,7 +7255,7 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) /* Prevent to re-select dst_cpu via env's CPUs: */ for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) { @@ -691,7 +691,7 @@ index e84a056f783f..16940416d526 100644 env->flags |= LBF_DST_PINNED; env->new_dst_cpu = cpu; break; -@@ -7836,7 +7836,7 @@ check_cpu_capacity(struct rq *rq, struct sched_domain *sd) +@@ -7880,7 +7880,7 @@ check_cpu_capacity(struct rq *rq, struct sched_domain *sd) /* * Group imbalance indicates (and tries to solve) the problem where balancing @@ -700,7 +700,7 @@ index e84a056f783f..16940416d526 100644 * * Imagine a situation of two groups of 4 CPUs each and 4 tasks each with a * cpumask covering 1 CPU of the first group and 3 CPUs of the second group. -@@ -8451,7 +8451,7 @@ static struct sched_group *find_busiest_group(struct lb_env *env) +@@ -8495,7 +8495,7 @@ static struct sched_group *find_busiest_group(struct lb_env *env) /* * If the busiest group is imbalanced the below checks don't * work because they assume all things are equal, which typically @@ -709,7 +709,7 @@ index e84a056f783f..16940416d526 100644 */ if (busiest->group_type == group_imbalanced) goto force_balance; -@@ -8847,7 +8847,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, +@@ -8891,7 +8891,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, * if the curr task on busiest CPU can't be * moved to this_cpu: */ 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 84c4e061a..4fb258a1f 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/351] kernel/sched/core: add migrate_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41846fc4c5b1eb7d7629a63f70673bccf13cda15 +Subject: [PATCH 027/353] kernel/sched/core: add migrate_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f0d9f74555c7b5e54700bf2156e7a6526a6c964 --- include/linux/preempt.h | 23 +++++++ @@ -85,10 +85,10 @@ 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 985cfa10fda5..116529019d34 100644 +index 81f86841b841..cf896da8cb0e 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 +@@ -1011,7 +1011,15 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma p->nr_cpus_allowed = cpumask_weight(new_mask); } @@ -105,7 +105,7 @@ index 985cfa10fda5..116529019d34 100644 { struct rq *rq = task_rq(p); bool queued, running; -@@ -1037,6 +1045,20 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) +@@ -1040,6 +1048,20 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) set_curr_task(rq, p); } @@ -126,7 +126,7 @@ index 985cfa10fda5..116529019d34 100644 /* * Change a given task's CPU affinity. Migrate the thread to a * proper CPU and schedule it away if the CPU it's executing on -@@ -1096,9 +1118,16 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -1099,9 +1121,16 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, } /* Can the task run on the task's current CPU? If so, we're done */ @@ -144,7 +144,7 @@ index 985cfa10fda5..116529019d34 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. */ -@@ -7109,3 +7138,100 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7111,3 +7140,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 99ca1fe43..f9c9c6973 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/351] sched/migrate_disable: Add export_symbol_gpl for +Subject: [PATCH 028/353] 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=4dbb7a73b2a3ff8390b1f6733f765388d12fd95e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0e5698b2249f75e5e7561e46ed842f4a7bfb76d Jonathan reported that lttng/modules can't use __migrate_disabled(). This function is only used by sched/core itself and the tracing @@ -21,10 +21,10 @@ 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 116529019d34..80234d096926 100644 +index cf896da8cb0e..d29ae6ac0036 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1013,6 +1013,7 @@ int __migrate_disabled(struct task_struct *p) +@@ -1016,6 +1016,7 @@ int __migrate_disabled(struct task_struct *p) { return p->migrate_disable; } 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 78a167c2a..265686761 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/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 +Subject: [PATCH 029/353] arm: at91: do not disable/enable clocks in a row +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fe2024e9a496e95918eb6b6ea0324d9dca860c57 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 495092d59..c232f65dc 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/351] clocksource: TCLIB: Allow higher clock rates for +Subject: [PATCH 030/353] 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=8e1f1b7959b48c060d868f85bb9c5b76388a7883 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04a617da7431cd2055b92d5ac229e41722f86c24 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 378a88d2a..70a06f239 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/351] timekeeping: Split jiffies seqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a342f5aed55ec0615985281f556def2909aa3b11 +Subject: [PATCH 031/353] timekeeping: Split jiffies seqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ceacbb2bbf0eee08d70691be812182f653e90015 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 696c0bc14..6cec5c7ea 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/351] signal: Revert ptrace preempt magic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f259904935b748e2ab49a6b3fc0fbb67ad9f55c2 +Subject: [PATCH 032/353] signal: Revert ptrace preempt magic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b481a14b078d0fad673ad63e23b1b56dec0cb94 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 e73719d2c..39c78bed1 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/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 +Subject: [PATCH 033/353] net: sched: Use msleep() instead of yield() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a105c0124877dd2964aac535777189eba38176e On PREEMPT_RT enabled systems the interrupt handler run as threads at prio 50 (by default). If a high priority userspace process tries to shut down a busy diff --git a/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch b/debian/patches-rt/0034-dm-rq-remove-BUG_ON-irqs_disabled-check.patch index 1de6e1025..b6052a6ce 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/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 +Subject: [PATCH 034/353] dm rq: remove BUG_ON(!irqs_disabled) check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37cb923def4a48797389fe3a7c21bde78798bf27 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 98222b1f9..799437d21 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/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 +Subject: [PATCH 035/353] usb: do no disable interrupts in giveback +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f847ddd27f34eff4e942a9f35a4b254bb16abed8 Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet context") the USB code disables interrupts before invoking the complete diff --git a/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch b/debian/patches-rt/0036-rt-Provide-PREEMPT_RT_BASE-config-switch.patch index d5f98c1ec..6ce99674d 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/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 +Subject: [PATCH 036/353] rt: Provide PREEMPT_RT_BASE config switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dc2f5c58bfd187b942910304abcd1b3d3469310d 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 64998e81a..f40d70689 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/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 +Subject: [PATCH 037/353] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=952c945d9fc29c58a035417e6c55f808f1377cab 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 2876262cf..896cc203a 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/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 +Subject: [PATCH 038/353] jump-label: disable if stop_machine() is used +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6b5444866b72dc483901482491924d3dd303223 Some architectures are using stop_machine() while switching the opcode which leads to latency spikes. 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 469d33439..3a6204f03 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/351] kconfig: Disable config options which are not RT +Subject: [PATCH 039/353] 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=0115c06a2e96d73db09183ec6d9db3a8a916f168 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=46a6c39e9812501f60ae7231a8cd10d40a133757 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 cdd1dc8fc..8b7300625 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/351] lockdep: disable self-test +Subject: [PATCH 040/353] 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=40abab90b52c85179850b096d37f4f2a0a04ee49 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=46ee29532b5b9e1210141d05bcc94973558b9f44 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 @@ -17,10 +17,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index 9a4277034c64..ee81b31aa9c5 100644 +index d03fe7780184..965b257dd007 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug -@@ -1206,7 +1206,7 @@ config DEBUG_ATOMIC_SLEEP +@@ -1208,7 +1208,7 @@ config DEBUG_ATOMIC_SLEEP config DEBUG_LOCKING_API_SELFTESTS bool "Locking API boot-time self-tests" 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 adcde3e0a..09be4ffde 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/351] mm: Allow only slub on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b272dce3cb99163ddf66752f5a4d0085072bb984 +Subject: [PATCH 041/353] mm: Allow only slub on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=034926d870cc644f9749f756bec5f4c328f8bbc9 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 569236d53..b0e660b66 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/351] locking: Disable spin on owner for RT +Subject: [PATCH 042/353] 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=fdeb43a61a34faa550bb24553035571b0a6e160e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb70dbff62f04d85313f9ea6fd09ebe5fd00fc7d 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 be2d75221..f84ab6037 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/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 +Subject: [PATCH 043/353] rcu: Disable RCU_FAST_NO_HZ on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e260655473eacb8537b3e4f437747c1a18530191 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 7a63fa141..0853e8420 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/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 +Subject: [PATCH 044/353] rcu: make RCU_BOOST default on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d59067f0eebc3f17a4aacc039c67a5adc75f7ced 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 cd1174615..a3228ca11 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/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 +Subject: [PATCH 045/353] sched: Disable CONFIG_RT_GROUP_SCHED on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ce65f9eabca71fd892cecbed0713ccf17bc59cb 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 f03a5afa9..6a56e3b9e 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/351] net/core: disable NET_RX_BUSY_POLL +Subject: [PATCH 046/353] 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=8c53647c0ba6c1f26e6684ce58e6e205fb868384 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=502072d5b069c14b3de75fe7056c58d493f92d02 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 09b6657f7..d4a6dea02 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/351] arm*: disable NEON in kernel mode -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a20492d0466c0b896707e1bb5225999bbb783327 +Subject: [PATCH 047/353] arm*: disable NEON in kernel mode +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f20c0b9253ea4b5d975df077f7c4ddbbaa2dd70d 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 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 9ed135890..19e77d805 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/351] powerpc: Use generic rwsem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f98dbe22ff6729a05890070df7f061addd2072c5 +Subject: [PATCH 048/353] powerpc: Use generic rwsem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=093578a8c3f5ac7b43be32a4f6b9bd0a4fe19842 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 78bf7aa86..b933dd67d 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/351] powerpc/kvm: Disable in-kernel MPIC emulation for +Subject: [PATCH 049/353] 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=40dc5a0139f7bb54e9ff37b419e08850140eaa3d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dcdb6700fbc6eeac31e2250c931df82e8bbe7c0a 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 d6706d97a..bc18bf72e 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/351] powerpc: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43fee54156012d317e4f417de670622288a4ec80 +Subject: [PATCH 050/353] powerpc: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=42f6f091805e728a4eacca4829e87a77de5c1e1b 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 113daf105..fc6a5fa34 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/351] mips: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08ad5cb52632f61ee11020cbe7f684782091da8e +Subject: [PATCH 051/353] mips: Disable highmem on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6fe479664379eeda3263be26ac744e9c10aca19 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 54041ff48..ebf335f22 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/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 +Subject: [PATCH 052/353] x86: Use generic rwsem_spinlocks on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2616ab41e6efdb625bff430005de8f0b70881644 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 ac1056a2b..33fadb16b 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/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 +Subject: [PATCH 053/353] leds: trigger: disable CPU trigger on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=462ad08a0fef7b27c741a6cd5e49ab7e430bb97c 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 2e2f27606..bdc816c9f 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/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 +Subject: [PATCH 054/353] cpufreq: drop K8's driver from beeing selected +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7644f056b07841ff9b1f0984caed7ed5db699030 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 ce8e3c7ac..1b00143c2 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/351] md: disable bcache +Subject: [PATCH 055/353] 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=c4eb5c4adb3eed5b47e5abf6d8b648c67c448d02 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5ea385604780686a520c21a2ea4e32f09226e33 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 e80997e9f..76edd0149 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/351] efi: Disable runtime services on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a9fddbab9b46d9c5cda5f28666c9c11f878c4d74 +Subject: [PATCH 056/353] efi: Disable runtime services on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b0e8136232443e042b5c44c852f280009801317f 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 9137fb107ae4..2d4ce39e23ff 100644 +index 3f93e54e094b..5cabfde529e9 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 a9d7ef34b..243c6a1af 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/351] printk: Add a printk kill switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2559bd7b8660e9dedcc64e3eaf5178080dfb8c12 +Subject: [PATCH 057/353] printk: Add a printk kill switch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f062ada5016529787b9a1fce14332b05eee8df10 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 891dea427..fbba46604 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/351] printk: Add "force_early_printk" boot param to help +Subject: [PATCH 058/353] 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=575558ec674727f3a61f5176e1a3a48bd0b2ef6e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7258ee726dae2e8518580e1eca871149c2802532 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 55e10f9d5..0b2cfba3a 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/351] preempt: Provide preempt_*_(no)rt variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b19ac3da49fd7a3ac66300e5bf4f4aa01e7245a5 +Subject: [PATCH 059/353] preempt: Provide preempt_*_(no)rt variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4e2a181620b6f226f127cbe13a958a106a86b61 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 b6b8724cf..8817b2fff 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/351] futex: workaround migrate_disable/enable in different +Subject: [PATCH 060/353] futex: workaround migrate_disable/enable in different context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a3ce7af87dbe96b38d528cbbc440801f469834d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f7cdc070566c6d7d8a76b1b0ffdc87b135cbdae0 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 7038eef6d..7081e180a 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/351] rt: Add local irq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e3a1711c49812c82c1af8e5b82624a8a3f2b4687 +Subject: [PATCH 061/353] rt: Add local irq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6ae384120c0556824963a74ab901944ef4ee797 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 f4fe95d0f..b3c1d288f 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/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 +Subject: [PATCH 062/353] locallock: provide {get,put}_locked_ptr() variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=528d9d996bca8f3122200d9873400c61cd07bc28 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 4450f22f5..eb6d4a2d6 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/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 +Subject: [PATCH 063/353] mm/scatterlist: Do not disable irqs on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=44fe2fd54347e2dd0cdc3c69d217877623865c57 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 aeef1f1be..5b6577cb6 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/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 +Subject: [PATCH 064/353] signal/x86: Delay calling signals in atomic +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e48d85154e3afe0754d64e08de79a08733c4a9b7 On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using diff --git a/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch b/debian/patches-rt/0065-x86-signal-delay-calling-signals-on-32bit.patch index fc46fa878..1eca98375 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/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 +Subject: [PATCH 065/353] x86/signal: delay calling signals on 32bit +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bbf815eb2ad51dc84ee8d99aa757d321801c029a 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 cdcf535e0..a0677ed8b 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/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 +Subject: [PATCH 066/353] buffer_head: Replace bh_uptodate_lock for -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=14e3bd221af4b7aec2bfa48507b1cd4ee48fa60e Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c -index 356e289d19f2..ab18ec733ed3 100644 +index 5bc0877f223f..85ce01feffe9 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -274,8 +274,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) @@ -86,7 +86,7 @@ index 356e289d19f2..ab18ec733ed3 100644 __this_cpu_inc(bh_accounting.nr); recalc_bh_state(); diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c -index 3de933354a08..838d9f4fc554 100644 +index bf910f266469..391308566035 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -95,8 +95,7 @@ static void ext4_finish_bio(struct bio *bio) 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 19a6a89c0..c4cad8a32 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/351] fs: jbd/jbd2: Make state lock and journal head lock +Subject: [PATCH 067/353] 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=c9524014ae5950c28836dd2d963362c3cde072f8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dd0d7f0e4488d93b9fe0d12f516651da802db06c bit_spin_locks break under RT. diff --git a/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch b/debian/patches-rt/0068-list_bl-Make-list-head-locking-RT-safe.patch index 6d3b88828..862afe8ef 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/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 +Subject: [PATCH 068/353] list_bl: Make list head locking RT safe +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7bdc6e7f097af89dc86c3909e9446f50fc8c5daa 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 fa98c04d8..94437bea7 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/351] list_bl: fixup bogus lockdep warning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93ff082fd139fddc2c77c34b99c59ec82d491121 +Subject: [PATCH 069/353] list_bl: fixup bogus lockdep warning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a22e7f3fc7bbc9dad2043bcbfc0d38ce9e4b00bb 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 8a25680b5..8590c373f 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/351] genirq: Disable irqpoll on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1671eff698dc6a676b4de310bef9366eae254f8 +Subject: [PATCH 070/353] genirq: Disable irqpoll on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5f86f00187743accf6007c4ba236ebab8e289434 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 ccccd5f9b..f65c2a766 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/351] genirq: Force interrupt thread on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ea2cafd86841f3d75cea13a28c385e6c65e6bad +Subject: [PATCH 071/353] genirq: Force interrupt thread on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e16716c355e269ae24d289794cb4276d1fab663 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 d626c2fb0..455ecb372 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/351] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 072/353] 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=afd0fba4aeb3f625c26f744e174d4c03e3d3b914 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0073312549bfa62ca583d487d14b2e78056df9c6 Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. diff --git a/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch b/debian/patches-rt/0073-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch index 3c89ad68e..5d5b67729 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/351] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 073/353] 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=a7fcfa2efb2d8e57db62b3e3ad5cd632a2876bf9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd91ba53f0f96f7f7fffe763ae93d2afa8fd62cd Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. diff --git a/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0074-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch index b73a35943..2ca62168d 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/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 +Subject: [PATCH 074/353] mm/SLxB: change list_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7aa4f7d11c84b41d032ceb5904778d4022996619 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 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 010e70a62..e2d38d0a6 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/351] mm/SLUB: delay giving back empty slubs to IRQ enabled +Subject: [PATCH 075/353] 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=0fe365431dc1420c65024651a7ec5df624151761 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9b8e390ea0ef59c3639bcab8ec9f4b5a2ead974c __free_slab() is invoked with disabled interrupts which increases the irq-off time while __free_pages() is doing the work. 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 23fdb3335..550c2897f 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/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 +Subject: [PATCH 076/353] mm: page_alloc: rt-friendly per-cpu pages +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ce3abcc61c9877b35570af7ecbd3a2ab1bca2912 rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. diff --git a/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch b/debian/patches-rt/0077-mm-swap-Convert-to-percpu-locked.patch index 0dfa1bb5b..6456961f1 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/351] mm/swap: Convert to percpu locked -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83abd37b431627122bf19be29ff45a520f8bfc2e +Subject: [PATCH 077/353] mm/swap: Convert to percpu locked +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ee82fc26b4dd832c47e196fb58f0a0cbdd18039 Replace global locks (get_cpu + local_irq_save) with "local_locks()". Currently there is one of for "rotate" and one for "swap". 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 86d38f6f7..9c7805300 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/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 +Subject: [PATCH 078/353] mm: perform lru_add_drain_all() remotely +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ab6f63019d1a38c79d64bc6f54c0be70dfb526c8 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 09b3d390b..eb1ba8fd6 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/351] mm/vmstat: Protect per cpu variables with preempt +Subject: [PATCH 079/353] 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=bf0eea4c0c30f7f5ee33168a9bffef98fac66058 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=130ffa47348bc9aca027e32e23b62bfc86593200 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 0b3f95cfc..818c94fb8 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/351] ARM: Initialize split page table locks for vector +Subject: [PATCH 080/353] 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=9bba7707b5620080399ae9a97342c1c4176740f3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be5374988b402d2bc249b848d12564514c117bbf 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 27a4a5c14..bad9dfe59 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/351] mm: Enable SLUB for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1cd2fa84f5e951db996b0064abaf351e9f6dfede +Subject: [PATCH 081/353] mm: Enable SLUB for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b09ad0805341ba4229b82deea465ab1460b94b3b Avoid the memory allocation in IRQ section 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 3f83dc8d1..b72d9e4bc 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/351] slub: Enable irqs for __GFP_WAIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1be9be5f873d2a5d5743064f8e1a0c80d7ecc737 +Subject: [PATCH 082/353] slub: Enable irqs for __GFP_WAIT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=baec10672dad99cc0be8bd6afa2fc6f4abc04a64 SYSTEM_RUNNING might be too late for enabling interrupts. Allocations with GFP_WAIT can happen before that. So use this as an indicator. 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 aa2554ed4..785d43545 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/351] slub: Disable SLUB_CPU_PARTIAL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=128abebd45e2b89746bff62be16e68a3495a9452 +Subject: [PATCH 083/353] slub: Disable SLUB_CPU_PARTIAL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be80f86f288a2e22f6d85ea2df8a49dccf483658 |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 1cc2389a0..5178be91b 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/351] mm/memcontrol: Don't call schedule_work_on in +Subject: [PATCH 084/353] 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=bb8889975c22e66f0bf04ba78ed03491594216ef +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5850c5f1b14f535ec88b2b429b43e7a249133ebc The following trace is triggered when running ltp oom test cases: @@ -48,7 +48,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index f3aa6e6214d5..281d74f86892 100644 +index bc4c61dcf95c..b828a208f5bd 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2084,7 +2084,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) diff --git a/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch b/debian/patches-rt/0085-mm-memcontrol-Replace-local_irq_disable-with-local-l.patch index 45df0f80c..814203277 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/351] mm/memcontrol: Replace local_irq_disable with local +Subject: [PATCH 085/353] 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=872cfe2b863a1a9a32e60bf73b7bff0e800b94f9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40534c4e3cc25eea0d7369472c85247a02a6b1df There are a few local_irq_disable() which then take sleeping locks. This patch converts them local locks. @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 281d74f86892..239fec6eac9f 100644 +index b828a208f5bd..c6a58923da63 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -69,6 +69,7 @@ @@ -33,7 +33,7 @@ index 281d74f86892..239fec6eac9f 100644 /* Whether legacy memory+swap accounting is active */ static bool do_memsw_account(void) { -@@ -4933,12 +4936,12 @@ static int mem_cgroup_move_account(struct page *page, +@@ -4944,12 +4947,12 @@ static int mem_cgroup_move_account(struct page *page, ret = 0; @@ -48,7 +48,7 @@ index 281d74f86892..239fec6eac9f 100644 out_unlock: unlock_page(page); out: -@@ -6057,10 +6060,10 @@ void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, +@@ -6068,10 +6071,10 @@ void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, commit_charge(page, memcg, lrucare); @@ -61,7 +61,7 @@ index 281d74f86892..239fec6eac9f 100644 if (do_memsw_account() && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; -@@ -6129,7 +6132,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -6140,7 +6143,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) memcg_oom_recover(ug->memcg); } @@ -70,7 +70,7 @@ index 281d74f86892..239fec6eac9f 100644 __mod_memcg_state(ug->memcg, MEMCG_RSS, -ug->nr_anon); __mod_memcg_state(ug->memcg, MEMCG_CACHE, -ug->nr_file); __mod_memcg_state(ug->memcg, MEMCG_RSS_HUGE, -ug->nr_huge); -@@ -6137,7 +6140,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -6148,7 +6151,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) __count_memcg_events(ug->memcg, PGPGOUT, ug->pgpgout); __this_cpu_add(ug->memcg->stat_cpu->nr_page_events, nr_pages); memcg_check_events(ug->memcg, ug->dummy_page); @@ -79,7 +79,7 @@ index 281d74f86892..239fec6eac9f 100644 if (!mem_cgroup_is_root(ug->memcg)) css_put_many(&ug->memcg->css, nr_pages); -@@ -6300,10 +6303,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) +@@ -6311,10 +6314,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) commit_charge(newpage, memcg, false); @@ -92,7 +92,7 @@ index 281d74f86892..239fec6eac9f 100644 } DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key); -@@ -6485,6 +6488,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -6496,6 +6499,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) struct mem_cgroup *memcg, *swap_memcg; unsigned int nr_entries; unsigned short oldid; @@ -100,7 +100,7 @@ index 281d74f86892..239fec6eac9f 100644 VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -6530,13 +6534,17 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -6541,13 +6545,17 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) * important here to have the interrupts disabled because it is the * only synchronisation we have for updating the per-CPU variables. */ 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 7eca257bb..0eac84c98 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/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 +Subject: [PATCH 086/353] mm/zsmalloc: copy with get_cpu_var() and locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=84f042cbdce6d963014e063db861eddc61d60e4d 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 100c313a1..f8f0bcb58 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/351] x86/mm/pat: disable preemption __split_large_page() +Subject: [PATCH 087/353] 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=652e2139defe970fd2d82b04d5aeb12394c008d9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b725467f11035d389d63f879fb7cd07ea96576ad 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 fe8ec191b..efdd7c060 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/351] radix-tree: use local locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=005680192f8aae72026cff0eff54af2ae3cb0b49 +Subject: [PATCH 088/353] radix-tree: use local locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9b6bbce6c471509e1ad2927ef5a6af2e5d86a791 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 9587a5ee8..91bc985c1 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/351] timers: Prepare for full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51fd00e00d7474c27ef7cd2453cedcd5e6b4ffd4 +Subject: [PATCH 089/353] timers: Prepare for full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fcad9b9dd52a53e32b23ee738fde8ccae781456 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 80234d096926..4becc6f1f56c 100644 +index d29ae6ac0036..4041ab1b0c4b 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 365c5fb03..7befca5e9 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/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 +Subject: [PATCH 090/353] x86: kvm Require const tsc for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9bbf7670cd85f3c920766f29e2930c070912e5e7 Non constant TSC is a nightmare on bare metal already, but with virtualization it becomes a complete disaster because the workarounds @@ -14,10 +14,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 7 insertions(+) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index be4697d91bb2..11391b7ace1e 100644 +index ff7ec9b507e3..c52f6438e712 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -6879,6 +6879,13 @@ int kvm_arch_init(void *opaque) +@@ -6878,6 +6878,13 @@ int kvm_arch_init(void *opaque) goto out; } diff --git a/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch b/debian/patches-rt/0091-pci-switchtec-Don-t-use-completion-s-wait-queue.patch index 5a87aa93c..45dad1a0f 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/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 +Subject: [PATCH 091/353] pci/switchtec: Don't use completion's wait queue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb7284f51972e4e3ba3be66b3c4ced7782166bd5 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 425ec9dfe..4c6d6f7f5 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/351] wait.h: include atomic.h +Subject: [PATCH 092/353] 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=198558e88fadd7681aaf9b8900de684fd7d79536 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da826d59e71cf1ab2beedc9257a6889f7c09debb | 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 9503e8341..714814f4f 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/351] work-simple: Simple work queue implemenation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f39471a941908be762004e90ebabdc80fa6aa7d +Subject: [PATCH 093/353] work-simple: Simple work queue implemenation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f6a609922ca4d15e35ab8e012e7ae99e635b98c 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 a485ebc6d..76adc9b71 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/351] work-simple: drop a shit statement in +Subject: [PATCH 094/353] 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=4659d4d28e8ce492dc3843111b15d19df9618039 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c7879b914f12f9837e5dd25ad85fc3a08b7c4e98 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 a48a363e6..159745162 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/351] completion: Use simple wait queues -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f1a04f32f49733171bb6bf7b2f512a9b3581a02 +Subject: [PATCH 095/353] completion: Use simple wait queues +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c312711581de92d031637f11edb5dc0742276b3b Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -54,10 +54,10 @@ index a04d59843022..e0046c35a0bd 100644 break; default: diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c -index 49eb4e3c760f..49fc75368aa2 100644 +index f9f324f76a72..0b503fcd9cee 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c -@@ -1626,7 +1626,7 @@ static void ffs_data_put(struct ffs_data *ffs) +@@ -1631,7 +1631,7 @@ static void ffs_data_put(struct ffs_data *ffs) ffs_data_clear(ffs); ffs_release_dev(ffs->private_data); BUG_ON(waitqueue_active(&ffs->ev.waitq) || @@ -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 4becc6f1f56c..116b2d65f4e3 100644 +index 4041ab1b0c4b..cdaf83d26695 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7158,7 +7158,10 @@ void migrate_disable(void) +@@ -7160,7 +7160,10 @@ void migrate_disable(void) return; } #ifdef CONFIG_SCHED_DEBUG @@ -334,7 +334,7 @@ index 4becc6f1f56c..116b2d65f4e3 100644 #endif if (p->migrate_disable) { -@@ -7188,7 +7191,10 @@ void migrate_enable(void) +@@ -7190,7 +7193,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 08f95b2db..aa2679c81 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/351] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6b2f2ea19d44e55222b3d0455ec4b279a8cef52 +Subject: [PATCH 096/353] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94821aaab24207586e09fd2fa7203bce01a03394 |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:768 |in_atomic(): 1, irqs_disabled(): 0, pid: 26, name: rcuos/2 @@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c -index 9635c29b83da..21eacb0f3f56 100644 +index 1bd934eccbf6..ab1bb9260056 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -42,6 +42,7 @@ @@ -56,7 +56,7 @@ index 9635c29b83da..21eacb0f3f56 100644 aio_mnt = kern_mount(&aio_fs); if (IS_ERR(aio_mnt)) panic("Failed to create aio fs mount."); -@@ -608,9 +611,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) +@@ -612,9 +615,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) * and ctx->users has dropped to 0, so we know no more kiocbs can be submitted - * now it's safe to cancel any that need to be. */ @@ -68,7 +68,7 @@ index 9635c29b83da..21eacb0f3f56 100644 struct aio_kiocb *req; spin_lock_irq(&ctx->ctx_lock); -@@ -628,6 +631,14 @@ static void free_ioctx_users(struct percpu_ref *ref) +@@ -632,6 +635,14 @@ static void free_ioctx_users(struct percpu_ref *ref) percpu_ref_put(&ctx->reqs); } 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 52fb77753..12575740a 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/351] time/hrtimer: avoid schedule_work() with interrupts +Subject: [PATCH 097/353] time/hrtimer: avoid schedule_work() with interrupts disabled -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6226cda643b8168dc02c740131337f68dd450370 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d2fb48ecf9c8e6bd92570c06ad7fe50e7073573 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 ae86d0335..b2204b266 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/351] hrtimer: consolidate hrtimer_init() + +Subject: [PATCH 098/353] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() calls -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd0ab4b50f5c1acee380ca0e57f43d8300d6c6b8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1865ef7c70b641378b27eff7cce5f66a48bb4d8 hrtimer_init_sleeper() calls require a prior initialisation of the hrtimer object with hrtimer_init(). Lets make the initialisation of @@ -169,7 +169,7 @@ index fac994367189..ac015d1dd16c 100644 current->timer_slack_ns); } diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 32ee24f5142a..1e03d7fab81c 100644 +index 8512f06f0ebe..23c89873bf60 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1715,13 +1715,44 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer) @@ -249,7 +249,7 @@ index 32ee24f5142a..1e03d7fab81c 100644 hrtimer_set_expires_range_ns(&t.timer, timespec64_to_ktime(*rqtp), slack); ret = do_nanosleep(&t, mode); if (ret != -ERESTART_RESTARTBLOCK) -@@ -2003,11 +2031,9 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, +@@ -2005,11 +2033,9 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, return -EINTR; } diff --git a/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch b/debian/patches-rt/0099-hrtimers-Prepare-full-preemption.patch index 5715e057d..88a248b0a 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/351] hrtimers: Prepare full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=18791268204a236b73607c8e4cbb4734da37426e +Subject: [PATCH 099/353] hrtimers: Prepare full preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7a50602af3afa6a0e114b242bddae024f794c68 Make cancellation of a running callback in softirq context safe against preemption. @@ -94,7 +94,7 @@ index ee7e987ea1b4..0571b498db73 100644 void run_posix_cpu_timers(struct task_struct *task); diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c -index 6a2ba39889bd..f4c8cfde00b0 100644 +index 56af8a97cf2d..dec68f9dab7b 100644 --- a/kernel/time/alarmtimer.c +++ b/kernel/time/alarmtimer.c @@ -438,7 +438,7 @@ int alarm_cancel(struct alarm *alarm) @@ -107,7 +107,7 @@ index 6a2ba39889bd..f4c8cfde00b0 100644 } EXPORT_SYMBOL_GPL(alarm_cancel); diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 1e03d7fab81c..8bbde17325c7 100644 +index 23c89873bf60..ab38b51a96cc 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -957,6 +957,33 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) @@ -161,7 +161,7 @@ index 1e03d7fab81c..8bbde17325c7 100644 } #ifdef CONFIG_HIGH_RES_TIMERS -@@ -1913,6 +1941,9 @@ int hrtimers_prepare_cpu(unsigned int cpu) +@@ -1915,6 +1943,9 @@ int hrtimers_prepare_cpu(unsigned int cpu) cpu_base->softirq_next_timer = NULL; cpu_base->expires_next = KTIME_MAX; cpu_base->softirq_expires_next = KTIME_MAX; @@ -184,7 +184,7 @@ index 2e2b335ef101..7650ee736964 100644 } expires = timeval_to_ktime(value->it_value); diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c -index 48758108e055..2cf5aa704106 100644 +index 1234868b3b03..36ee80652208 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c @@ -463,7 +463,7 @@ static struct k_itimer * alloc_posix_timer(void) 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 fc8506ceb..374e4f9aa 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/351] hrtimer: by timers by default into the softirq +Subject: [PATCH 100/353] 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=89282e2a055b47694e78836cc63efb94ec30aa73 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6117abca429d5fae96db4e3437aa1d6f818fe1d2 We can't have hrtimers callbacks running in hardirq context on RT. Therefore the timers are deferred to the softirq context by default. @@ -65,7 +65,7 @@ index 8714f1a37d84..082147c07831 100644 /* diff --git a/kernel/events/core.c b/kernel/events/core.c -index ba66ea3ca705..11e9bbad4878 100644 +index 668e5492e4c4..f374d3a250eb 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -1108,7 +1108,7 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu) @@ -87,7 +87,7 @@ index ba66ea3ca705..11e9bbad4878 100644 /* diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 116b2d65f4e3..98a994f98fbd 100644 +index cdaf83d26695..b307f7c8ce14 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -315,7 +315,7 @@ static void hrtick_rq_init(struct rq *rq) @@ -113,10 +113,10 @@ index 9243d0049714..52acbb31a777 100644 } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 16940416d526..d804b5443bb9 100644 +index bd9a375c45f4..6d1911b08b7f 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4951,9 +4951,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) +@@ -4998,9 +4998,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) cfs_b->period = ns_to_ktime(default_cfs_period()); INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq); @@ -144,7 +144,7 @@ index a068884c369f..b15428ede6cf 100644 } diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 8bbde17325c7..e947f3b344ac 100644 +index ab38b51a96cc..beb81024c287 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1202,7 +1202,9 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, diff --git a/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch b/debian/patches-rt/0101-sched-fair-Make-the-hrtimers-non-hard-again.patch index 10703885b..eb0c57d89 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/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 +Subject: [PATCH 101/353] sched/fair: Make the hrtimers non-hard again +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2f34a9350f04580eb6e8a4059a9a18752b659d0 Since commit "sched/fair: Robustify CFS-bandwidth timer locking" both hrtimer can run in softirq context because now interrupts are disabled @@ -13,10 +13,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index d804b5443bb9..16940416d526 100644 +index 6d1911b08b7f..bd9a375c45f4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4951,9 +4951,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) +@@ -4998,9 +4998,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) cfs_b->period = ns_to_ktime(default_cfs_period()); INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq); 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 0fc9d2f2f..7143f6037 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/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 +Subject: [PATCH 102/353] hrtimer: Move schedule_work call to helper thread +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5d5022d508a66a31166520507eebb0b2325af7e When run ltp leapsec_timer test, the following call trace is caught: @@ -51,7 +51,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 24 insertions(+) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index e947f3b344ac..0833e5cf224d 100644 +index beb81024c287..0dceea25f9f5 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -748,6 +748,29 @@ static void hrtimer_switch_to_hres(void) diff --git a/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch b/debian/patches-rt/0103-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch index 4a6296d99..a136f89e4 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/351] hrtimer: move state change before hrtimer_cancel in +Subject: [PATCH 103/353] 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=267d544f94bf3b3faae448fb614cde6ea57d1bb1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=208c5ed45b86d053d5c2f157a5e7d22ac12a57d8 There is a small window between setting t->task to NULL and waking the task up (which would set TASK_RUNNING). So the timer would fire, run and @@ -28,7 +28,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 0833e5cf224d..009001f06d33 100644 +index 0dceea25f9f5..4de39964594d 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1852,12 +1852,12 @@ static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mod diff --git a/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch b/debian/patches-rt/0104-posix-timers-Thread-posix-cpu-timers-on-rt.patch index 21c4c89f4..b640c1d73 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/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 +Subject: [PATCH 104/353] posix-timers: Thread posix-cpu-timers on -rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93d6691678e3b2f624878e8ba031fbbb16094def posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. diff --git a/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch b/debian/patches-rt/0105-sched-Move-task_struct-cleanup-to-RCU.patch index 2ef8de15f..64bb12029 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/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 +Subject: [PATCH 105/353] sched: Move task_struct cleanup to RCU +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=21fe322dc25999644838f95e2b60e8ff2fe4470b __put_task_struct() does quite some expensive work. We don't want to burden random tasks with that. @@ -28,10 +28,10 @@ index 92faffe9ecf0..d627469bab35 100644 unsigned long task_state_change; #endif diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h -index 91401309b1aa..5f8c1d53bc11 100644 +index 0ee9aab3e309..803f01d1e1d3 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h -@@ -90,6 +90,15 @@ extern void sched_exec(void); +@@ -91,6 +91,15 @@ extern void sched_exec(void); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) @@ -47,7 +47,7 @@ index 91401309b1aa..5f8c1d53bc11 100644 extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -97,7 +106,7 @@ static inline void put_task_struct(struct task_struct *t) +@@ -98,7 +107,7 @@ static inline void put_task_struct(struct task_struct *t) if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } 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 9693134b7..49fcac403 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/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 +Subject: [PATCH 106/353] sched: Limit the number of task migrations per batch +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d297271b3df20a2d9838865017eae3d13045fe3b 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 98a994f98fbd..a291133f169f 100644 +index b307f7c8ce14..4425acb33942 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 5c561e80e..24a2efb83 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/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 +Subject: [PATCH 107/353] sched: Move mmdrop to RCU on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=42db7ca081d6aa3d9770edef684724386404be3a Takes sleeping locks and calls into the memory allocator, so nothing we want to do in task switch and oder atomic contexts. @@ -83,10 +83,10 @@ index f5a4c42233f0..114ff9724b02 100644 { struct mm_struct *mm; diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a291133f169f..632999d01f73 100644 +index 4425acb33942..5fd7cb47879c 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) +@@ -2737,9 +2737,13 @@ static struct rq *finish_task_switch(struct task_struct *prev) * provided by mmdrop(), * - a sync_core for SYNC_CORE. */ @@ -101,7 +101,7 @@ index a291133f169f..632999d01f73 100644 } if (unlikely(prev_state == TASK_DEAD)) { if (prev->sched_class->task_dead) -@@ -5604,6 +5608,7 @@ void sched_setnuma(struct task_struct *p, int nid) +@@ -5606,6 +5610,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 4f27963b7..0359a432a 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/351] kernel/sched: move stack + kprobe clean up to +Subject: [PATCH 108/353] 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=7845c522934f431f6d3ca31934e2461c89800c38 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=497784364b305a90cfa4248f61fd0aacae170e83 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,10 +45,10 @@ 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 632999d01f73..4763faddac6b 100644 +index 5fd7cb47879c..61b5db727d1b 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) +@@ -2749,15 +2749,6 @@ static struct rq *finish_task_switch(struct task_struct *prev) if (prev->sched_class->task_dead) prev->sched_class->task_dead(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 3a5c8ac62..b6af59149 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/351] sched: Add saved_state for tasks blocked on sleeping +Subject: [PATCH 109/353] 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=93ed8db7e6295b227c390bffa860f7e5e833d6e4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=30034b98c640a6a9c7b194126aece2584e08ed87 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 @@ -39,10 +39,10 @@ index d627469bab35..44a5e80481bb 100644 #ifdef CONFIG_SMP diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 4763faddac6b..165df30aad7b 100644 +index 61b5db727d1b..b84f883d052c 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) +@@ -2005,8 +2005,27 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) */ raw_spin_lock_irqsave(&p->pi_lock, flags); smp_mb__after_spinlock(); @@ -71,7 +71,7 @@ index 4763faddac6b..165df30aad7b 100644 trace_sched_waking(p); -@@ -2167,6 +2186,18 @@ int wake_up_process(struct task_struct *p) +@@ -2170,6 +2189,18 @@ int wake_up_process(struct task_struct *p) } EXPORT_SYMBOL(wake_up_process); 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 574609567..320a34726 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/351] sched: Do not account rcu_preempt_depth on RT in +Subject: [PATCH 110/353] 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=4c33fbefa2d8dbc37a5298a428f24021f34b3285 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b8c3cbc37fb534302c5f76165ca8fd97b8a8191f 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 165df30aad7b..b375f10ca8f8 100644 +index b84f883d052c..7adf8d6597e0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -6193,7 +6193,7 @@ void __init sched_init(void) +@@ -6195,7 +6195,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 66930bd89..42c0c2642 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/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 +Subject: [PATCH 111/353] sched: Use the proper LOCK_OFFSET for cond_resched() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0bccce0bffc921ecc31e25af9048b469d94307cb 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 71a35061c..7902f1365 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/351] sched: Disable TTWU_QUEUE on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2f3635713fb3360b9ce65703477a4db96cd8064 +Subject: [PATCH 112/353] sched: Disable TTWU_QUEUE on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a65ed683581796d2003972da1191aae74f61a206 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 47f7cff3e..404738299 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/351] sched/workqueue: Only wake up idle workers if not +Subject: [PATCH 113/353] 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=eb80c24da74db0be170d2e19868ad5eb355a27b0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da701b3e08c4318b7d21fc6cf856e9f3ace912c0 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,10 +24,10 @@ 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 b375f10ca8f8..54f22c835740 100644 +index 7adf8d6597e0..217b63c76553 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -3544,8 +3544,10 @@ static void __sched notrace __schedule(bool preempt) +@@ -3546,8 +3546,10 @@ static void __sched notrace __schedule(bool preempt) * If a worker went to sleep, notify and ask workqueue * whether it wants to wake up a task to maintain * concurrency. 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 26a09df27..284b46f3f 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/351] rt: Increase/decrease the nr of migratory tasks when +Subject: [PATCH 114/353] 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=f12714dbfa30e40ef8023d652f115cb6ff2ad99d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ab761de0e3bce2d40f8415159a1683a6b44b741 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 54f22c835740..7b4752fa34d1 100644 +index 217b63c76553..3c1f897b8b70 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7180,6 +7180,47 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7182,6 +7182,47 @@ const u32 sched_prio_to_wmult[40] = { #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) @@ -132,7 +132,7 @@ index 54f22c835740..7b4752fa34d1 100644 void migrate_disable(void) { struct task_struct *p = current; -@@ -7203,10 +7244,9 @@ void migrate_disable(void) +@@ -7205,10 +7246,9 @@ void migrate_disable(void) } preempt_disable(); @@ -145,7 +145,7 @@ index 54f22c835740..7b4752fa34d1 100644 preempt_enable(); } -@@ -7238,9 +7278,8 @@ void migrate_enable(void) +@@ -7240,9 +7280,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 594e332d9..b4b5e28b1 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/351] hotplug: Lightweight get online cpus -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e035a899f179507ef0a952663aaa96e83989be51 +Subject: [PATCH 115/353] hotplug: Lightweight get online cpus +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=359ee8bad3d184681c5f7f7fc89bb3cba2feccae get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -19,10 +19,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 24 insertions(+) diff --git a/include/linux/cpu.h b/include/linux/cpu.h -index 8cc06e1d4fc2..a3c246214d28 100644 +index 12ed4cb751de..bddccdcd00ba 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h -@@ -122,6 +122,8 @@ extern void cpu_hotplug_disable(void); +@@ -124,6 +124,8 @@ extern void cpu_hotplug_disable(void); extern void cpu_hotplug_enable(void); void clear_tasks_mm_cpumask(int cpu); int cpu_down(unsigned int cpu); @@ -31,7 +31,7 @@ index 8cc06e1d4fc2..a3c246214d28 100644 #else /* CONFIG_HOTPLUG_CPU */ -@@ -133,6 +135,9 @@ static inline int cpus_read_trylock(void) { return true; } +@@ -135,6 +137,9 @@ static inline int cpus_read_trylock(void) { return true; } static inline void lockdep_assert_cpus_held(void) { } static inline void cpu_hotplug_disable(void) { } static inline void cpu_hotplug_enable(void) { } @@ -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 7b4752fa34d1..b1771f3de84a 100644 +index 3c1f897b8b70..be29571fa5dc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7244,6 +7244,7 @@ void migrate_disable(void) +@@ -7246,6 +7246,7 @@ void migrate_disable(void) } preempt_disable(); @@ -79,7 +79,7 @@ index 7b4752fa34d1..b1771f3de84a 100644 migrate_disable_update_cpus_allowed(p); p->migrate_disable = 1; -@@ -7309,12 +7310,15 @@ void migrate_enable(void) +@@ -7311,12 +7312,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 e612118cc..d7bf41f1e 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/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 +Subject: [PATCH 116/353] trace: Add migrate-disabled counter to tracing output +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61b8ff2192098121277ab68ca02b398e9fc861da Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- @@ -25,7 +25,7 @@ index 0643c083ed86..1cc4d2da954c 100644 #define TRACE_EVENT_TYPE_MAX \ diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 5b7a6e9b0ab6..5cb37fa71316 100644 +index 98abff046236..b1c82b1dc3a6 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2165,6 +2165,8 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, @@ -65,7 +65,7 @@ index d2f9146d1ad7..ddda660b84f9 100644 return ret; } diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 6e6cc64faa38..46c96744f09d 100644 +index 62015d62dd6f..9255100cf9fa 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -494,6 +494,11 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) 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 3ea9b9bcc..a36708b80 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/351] lockdep: Make it RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=111ccdb78876a9e7e8dbec25cb2b1815aa53ab20 +Subject: [PATCH 117/353] lockdep: Make it RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0510c3772a827facfad8410adbc698faf3d8d73a 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 4d51123ea..b11fea3b2 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/351] tasklet: Prevent tasklets from going into infinite +Subject: [PATCH 118/353] 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=842018f53f2583b16e1553f3443162e7f8e5e4e9 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5317e9e199124dac93d3bc6866525e8857942d0c 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 163f9d22a..de8977ce4 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/351] softirq: Check preemption after reenabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=edfadd52335e1c2709012ff052173aaa8bee23f7 +Subject: [PATCH 119/353] softirq: Check preemption after reenabling interrupts +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d032bdf0faf17bd875c0068a076abeeca0d21b54 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 880b096eef8a..b11a0189124d 100644 +index b778f3596543..f766df2bd01d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2725,6 +2725,7 @@ static void __netif_reschedule(struct Qdisc *q) @@ -135,7 +135,7 @@ index 880b096eef8a..b11a0189124d 100644 } EXPORT_SYMBOL(__dev_kfree_skb_irq); -@@ -4269,6 +4271,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, +@@ -4271,6 +4273,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, rps_unlock(sd); local_irq_restore(flags); @@ -143,7 +143,7 @@ index 880b096eef8a..b11a0189124d 100644 atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -5820,12 +5823,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) +@@ -5822,12 +5825,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) sd->rps_ipi_list = NULL; local_irq_enable(); @@ -158,7 +158,7 @@ index 880b096eef8a..b11a0189124d 100644 } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -5903,6 +5908,7 @@ void __napi_schedule(struct napi_struct *n) +@@ -5905,6 +5910,7 @@ void __napi_schedule(struct napi_struct *n) local_irq_save(flags); ____napi_schedule(this_cpu_ptr(&softnet_data), n); local_irq_restore(flags); @@ -166,7 +166,7 @@ index 880b096eef8a..b11a0189124d 100644 } EXPORT_SYMBOL(__napi_schedule); -@@ -9527,6 +9533,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9529,6 +9535,7 @@ static int dev_cpu_dead(unsigned int oldcpu) raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); diff --git a/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch b/debian/patches-rt/0120-softirq-Disable-softirq-stacks-for-RT.patch index 5f1ebbc71..7a15474f4 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/351] softirq: Disable softirq stacks for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8aff4d895825375152ceb183fd81b8a9d4921921 +Subject: [PATCH 120/353] softirq: Disable softirq stacks for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fd9bd08b1b2f9c99314b78b5e9e402a877996522 Disable extra stacks for softirqs. We want to preempt softirqs and having them on special IRQ-stack does not make this easier. @@ -119,10 +119,10 @@ index 713670e6d13d..5dfc715343f9 100644 #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S -index dfe26f3cfffc..f53d995b1370 100644 +index ef693d3689aa..891b7b2f5d3b 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -1084,6 +1084,7 @@ EXPORT_SYMBOL(native_load_gs_index) +@@ -1087,6 +1087,7 @@ EXPORT_SYMBOL(native_load_gs_index) jmp 2b .previous @@ -130,7 +130,7 @@ index dfe26f3cfffc..f53d995b1370 100644 /* Call softirq on interrupt stack. Interrupts are off. */ ENTRY(do_softirq_own_stack) pushq %rbp -@@ -1094,6 +1095,7 @@ ENTRY(do_softirq_own_stack) +@@ -1097,6 +1098,7 @@ ENTRY(do_softirq_own_stack) leaveq ret ENDPROC(do_softirq_own_stack) diff --git a/debian/patches-rt/0121-softirq-Split-softirq-locks.patch b/debian/patches-rt/0121-softirq-Split-softirq-locks.patch index 8940a458a..e3d7997bf 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/351] softirq: Split softirq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b4331c68b1951abae16632083ed35fd2f6d7789 +Subject: [PATCH 121/353] softirq: Split softirq locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=29d8ccd21fdb6c5e33e3446e8c49125fb34671bb The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which 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 35e7901f4..dd988bc8e 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/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 +Subject: [PATCH 122/353] net/core: use local_bh_disable() in netif_rx_ni() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7de1df0fa1a0b414d2b01d063d2ff2a378e950c0 In 2004 netif_rx_ni() gained a preempt_disable() section around netif_rx() and its do_softirq() + testing for it. The do_softirq() part @@ -18,10 +18,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index b11a0189124d..add05f74ba38 100644 +index f766df2bd01d..d03162a1828b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4537,11 +4537,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -4539,11 +4539,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); diff --git a/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch b/debian/patches-rt/0123-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch index 14943be50..b8f5084ef 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/351] genirq: Allow disabling of softirq processing in irq +Subject: [PATCH 123/353] 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=5c7cadec0dc0ec451f60a23a21c8e1c9dbd298f2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b07249105058ae8ec7335b6ec9779601e4d341f4 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 195df2b00..3650a4da9 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/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 +Subject: [PATCH 124/353] softirq: split timer softirqs out of ksoftirqd +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5711afd63593c8fa83510c91331d112849c42dec 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 ec8958196..9fa84e537 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/351] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 125/353] 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=3656ad07294bb694dcb23d7c402b6f28339beafc +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8aac8aeeb6dff25147615545ec92b2fd57aa028f 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 3fc9df139..070e519c5 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/351] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 126/353] 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=69f5153e7f1652483c78774022844be37eefbcd4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d3d51e9bd90f4be486484246f68c1521d1e4e54e 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 535a5bcaa..71746a73a 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/351] rtmutex: trylock is okay on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aca2cbeb348d796df3306d9f3aee897235b3dc19 +Subject: [PATCH 127/353] rtmutex: trylock is okay on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6dbe549bbeb502121ea580edefb29863902d7468 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 235a9a1c3..45eaa8cd4 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/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 +Subject: [PATCH 128/353] fs/nfs: turn rmdir_sem into a semaphore +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e0548b5b0a78375c3deb843c9ab50a020017ab12 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 c9005afe2..b9f476ac3 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/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 +Subject: [PATCH 129/353] rtmutex: Handle the various new futex race conditions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1794981fa5586d5e3f6b95e4aca0d5ce6c796e96 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 b296aebdc..b027a728c 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/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 +Subject: [PATCH 130/353] futex: Fix bug on when a requeued RT task times out +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be1fc540aed468dfcbf80e9c71f01820b8f0a52f 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 1ef64a486..7e889df8c 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/351] futex: Ensure lock/unlock symetry versus pi_lock and +Subject: [PATCH 131/353] 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=c0e7d88a0e4c773f20ccfc49eaaa5e2a4a4d2a98 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23f27ea471e98d5da15deefac2fcde0b21acae64 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 c488054a3..3d9eb5cf4 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/351] pid.h: include atomic.h -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56bdb37f8349a9206791ca7112f76f085cd97053 +Subject: [PATCH 132/353] pid.h: include atomic.h +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=69d5a6dfa4f25dba3239c09c3a55eeb2770c81d1 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 89f7999d5..bd650852b 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/351] arm: include definition for cpumask_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af54c02857b13e640014f46b568c88244623fbf6 +Subject: [PATCH 133/353] arm: include definition for cpumask_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be6f89e8f376adecf3d36e212c02a8b859527799 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 b244586f7..3a59f9004 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/351] locking: locktorture: Do NOT include rwlock.h +Subject: [PATCH 134/353] locking: locktorture: Do NOT include rwlock.h directly -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fe91471c8c82661ea5869a8f4fe29226dcdea4a4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=933ed5242a21a10b5f10ce6e05be063086357ce7 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 4553d5e5d..0b1b1ba73 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/351] rtmutex: Add rtmutex_lock_killable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88f6577c4fb59ca7ef8760561f80a6dea788ddbc +Subject: [PATCH 135/353] rtmutex: Add rtmutex_lock_killable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6bf366a458e4c6adfd69dff87d9639f03597dc37 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 865eee08c..25cf3362b 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/351] rtmutex: Make lock_killable work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fbf7123998ba54e81012475000c6708088804590 +Subject: [PATCH 136/353] rtmutex: Make lock_killable work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34fff3c8ffefec20772cbbdf521a1ac4f1532a39 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 e5c86f274..bc18e6277 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/351] spinlock: Split the lock types header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=835910505452d94466b0d87fee584b8159b3b6eb +Subject: [PATCH 137/353] spinlock: Split the lock types header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d4ce354fa85d34205ad2b563e004cd382a103fc 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 c6832a94f..9e853354b 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/351] rtmutex: Avoid include hell -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6cf62501b5f4caa77de7214c81ba71f60d38f517 +Subject: [PATCH 138/353] rtmutex: Avoid include hell +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5e1b56fe5c87456f81d0e26f7da86eacb2716d2a 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 d31fd381b..650a12c91 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/351] rbtree: don't include the rcu header +Subject: [PATCH 139/353] 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=3aae1dd0ed999b612c527c0a456f2ff5db5042e2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=692b6f51268cd63d3c6eba42d2d8c3689b084b17 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 d15c1d325..46f6b1110 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/351] rtmutex: Provide rt_mutex_slowlock_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=32da04034f5c21e8dd44d8859a74b44f4a75437b +Subject: [PATCH 140/353] rtmutex: Provide rt_mutex_slowlock_locked() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=279436be8b65c09efc0f9d940eee24bc7fb51a80 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 3253b2eb6..d314eb23c 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/351] rtmutex: export lockdep-less version of rt_mutex's +Subject: [PATCH 141/353] 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=c24a0727689de5d4de97056bd23226d5ea1d5d5e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88c13a33c56797b4d34e53eb637550a90fdfbfae 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 554cf0dac..d1dc59fa2 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/351] rtmutex: add sleeping lock implementation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aeb2fe1f0d08e5e10e6cdccad7ebc570e2412d4f +Subject: [PATCH 142/353] rtmutex: add sleeping lock implementation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f2c038c213b5f2b57c10d39c71eaf980e0a53fb7 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> @@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> create mode 100644 include/linux/spinlock_types_rt.h diff --git a/include/linux/kernel.h b/include/linux/kernel.h -index 50733abbe548..64ef575435bb 100644 +index a28ec4c2f3f5..71efa419997d 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -260,6 +260,9 @@ extern int _cond_resched(void); @@ -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 b1771f3de84a..d448d4768507 100644 +index be29571fa5dc..910a827a073d 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 81ac49bbe..bef1d7aaa 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/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 +Subject: [PATCH 143/353] rtmutex: add mutex implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b8da67338f528499c225579b3f4e20153b03f9eb 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 b403e34de..8edda0f51 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/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 +Subject: [PATCH 144/353] rtmutex: add rwsem implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d14aad145f516eb0c89d01284c76b73bf26cb97a 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 ca4ec6522..750d5a3dd 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/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 +Subject: [PATCH 145/353] rtmutex: add rwlock implementation based on rtmutex +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a76302a27e22396747d726861bc4f3e6b8ac828b 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 169c589c9..e0ce83b18 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/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 +Subject: [PATCH 146/353] rtmutex/rwlock: preserve state like a sleeping lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=432de9d1a9e2f43bee9d57d6fd09f79dfe66f1ae 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 0b5eb09bd..a2570ff72 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/351] rtmutex: wire up RT's locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40562ef5910bd6b47337d1c78e86aeabf4ffe5ef +Subject: [PATCH 147/353] rtmutex: wire up RT's locking +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d0952f752129588f34b27e59293fb8a53e167dfd 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 f4030c34a..ab7c5c446 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/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 +Subject: [PATCH 148/353] rtmutex: add ww_mutex addon for mutex-rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0266b089fe88193628a2c654eb8af52da00aeca5 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 e297312f2..2585c7c36 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/351] kconfig: Add PREEMPT_RT_FULL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=50403d3662b97dc86aad24ce9aaf70eac7243e9d +Subject: [PATCH 149/353] kconfig: Add PREEMPT_RT_FULL +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ff7dd2555046f812d000ad21c1c67aafbff173c1 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 0759be8c6..4ac96c650 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/351] locking/rt-mutex: fix deadlock in device mapper / +Subject: [PATCH 150/353] 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=c1b102410a832da4c5605c6bcd58840065a6c371 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8cc6247f13f918defb8afea1919bd25ccaa73d7a 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 a35807a76..d70daa607 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/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 +Subject: [PATCH 151/353] locking/rt-mutex: Flush block plug on __down_read() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a71fa1fdf3f1ef6d5e828679178652c39c1af496 __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 d6671ebf2..cc6035b38 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/351] locking/rtmutex: re-init the wait_lock in +Subject: [PATCH 152/353] 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=969797c8c974dc599312a4609570f755bead0c4b +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d63321ef2952eb3e1d27c14e90f06aaa7e47284 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 1ed66fb0d..9bb16368e 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/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 +Subject: [PATCH 153/353] ptrace: fix ptrace vs tasklist_lock race +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=82bd62e233762e18c9a01a6a3ce8a675e140e0d1 As explained by Alexander Fyodorov <halcy@yandex.ru>: @@ -119,10 +119,10 @@ index bf8360e86f62..9078fdefc6e0 100644 } spin_unlock_irq(&task->sighand->siglock); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index d448d4768507..8586d8834f5e 100644 +index 910a827a073d..c327c969e778 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, +@@ -1352,6 +1352,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, } #endif /* CONFIG_NUMA_BALANCING */ @@ -141,7 +141,7 @@ index d448d4768507..8586d8834f5e 100644 /* * wait_task_inactive - wait for a thread to unschedule. * -@@ -1393,7 +1405,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -1396,7 +1408,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) * is actually now running somewhere else! */ while (task_running(rq, p)) { @@ -150,7 +150,7 @@ index d448d4768507..8586d8834f5e 100644 return 0; cpu_relax(); } -@@ -1408,7 +1420,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -1411,7 +1423,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) running = task_running(rq, p); queued = task_on_rq_queued(p); ncsw = 0; 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 ac6bf85ef..55de07317 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/351] rtmutex: annotate sleeping lock context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=553e5540bb68f9d632ea835f006f7285a0656d62 +Subject: [PATCH 154/353] rtmutex: annotate sleeping lock context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af577af144bd8f017929ef79a0789f5fd1bc9f6b 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 @@ -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 8586d8834f5e..22b49744a3d9 100644 +index c327c969e778..9e6b8b3cdd88 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7349,4 +7349,49 @@ void migrate_enable(void) +@@ -7351,4 +7351,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 2c050e602..abfc8a741 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/351] sched/migrate_disable: fallback to preempt_disable() +Subject: [PATCH 155/353] 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=45c69023a6783aef1cdde83c05006953e80582b6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=72fc975c09efd55a42502cd8ae4346f9e884afba 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 @@ -93,10 +93,10 @@ index 08971062c194..3bc6b3206e14 100644 # endif #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 22b49744a3d9..630e726acdd2 100644 +index 9e6b8b3cdd88..4a714c92dff2 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 +@@ -1034,7 +1034,7 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma p->nr_cpus_allowed = cpumask_weight(new_mask); } @@ -105,7 +105,7 @@ index 22b49744a3d9..630e726acdd2 100644 int __migrate_disabled(struct task_struct *p) { return p->migrate_disable; -@@ -1071,7 +1071,7 @@ static void __do_set_cpus_allowed_tail(struct task_struct *p, +@@ -1074,7 +1074,7 @@ static void __do_set_cpus_allowed_tail(struct task_struct *p, void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -114,7 +114,7 @@ index 22b49744a3d9..630e726acdd2 100644 if (__migrate_disabled(p)) { lockdep_assert_held(&p->pi_lock); -@@ -1145,7 +1145,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -1148,7 +1148,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, if (cpumask_test_cpu(task_cpu(p), new_mask) || __migrate_disabled(p)) goto out; @@ -123,7 +123,7 @@ index 22b49744a3d9..630e726acdd2 100644 if (__migrate_disabled(p)) { p->migrate_disable_update = 1; goto out; -@@ -7205,7 +7205,7 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7207,7 +7207,7 @@ const u32 sched_prio_to_wmult[40] = { #undef CREATE_TRACE_POINTS @@ -132,7 +132,7 @@ index 22b49744a3d9..630e726acdd2 100644 static inline void update_nr_migratory(struct task_struct *p, long delta) -@@ -7353,45 +7353,44 @@ EXPORT_SYMBOL(migrate_enable); +@@ -7355,45 +7355,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 02a185487..4f9f11456 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/351] locking: don't check for __LINUX_SPINLOCK_TYPES_H on +Subject: [PATCH 156/353] 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=ff53da4bff019a3522340011b04e29fe2d045bb4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fda1a9fe6a34dade0ceac16470d54e828941fcc8 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 306a8cc2f..4385bfe72 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/351] rcu: Frob softirq test -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f70612a68dc5b44cc40eae34d239e05d06c754ab +Subject: [PATCH 157/353] rcu: Frob softirq test +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d4b5f8c0ab11edb2200bcade237168fc5734d16c 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 9bd8f8d5a..0b0d06626 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/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 +Subject: [PATCH 158/353] rcu: Merge RCU-bh into RCU-preempt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=afbdadf1575158f6bd024e7a21b9e26bedf2bdd4 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 31e7a7f08..a6aa291fb 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/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 +Subject: [PATCH 159/353] rcu: Make ksoftirqd do RCU quiescent states +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=838d41a37a62dfbe7591b0d8ae7f65c0dd2a28be 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 740e5df8c..6cc9c1904 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/351] rcu: Eliminate softirq processing from rcutree -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=67b40435052173f46e033a6efab379495f1c875e +Subject: [PATCH 160/353] rcu: Eliminate softirq processing from rcutree +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22c7a16aa53b5659a3ae5a1d6b340dd75b7010bf 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 26401b4bb..f3438a7e5 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/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 +Subject: [PATCH 161/353] srcu: use cpu_online() instead custom check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1cf84fbe102004dc42ac21f8f35479ed4c8fcb82 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 0feb71e70..ce3b21609 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/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 +Subject: [PATCH 162/353] srcu: replace local_irqsave() with a locallock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ddb3ccfdf419687e43f793f16d2419bf602cdc01 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 5cd7caddc..9bb6cc029 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/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 +Subject: [PATCH 163/353] rcu: enable rcu_normal_after_boot by default for RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4acc0cb23edfbed83bc7d11bd34e672ab6184271 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 c78c8cc0c..312dc19ac 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/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 +Subject: [PATCH 164/353] tty/serial/omap: Make the locking RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e32f42dec1d7691554247fb98ec3ce674161faef 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 209ed61bd..6c52801fb 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/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 +Subject: [PATCH 165/353] tty/serial/pl011: Make the locking work on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0078406dbe103225ceb07433c4d141a02e66e775 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. @@ -12,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 7de4bed1ddba..c93f742f1d9d 100644 +index d1f4882d9f40..2773d08e1d4a 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2215,13 +2215,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2227,13 +2227,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) clk_enable(uap->clk); @@ -38,7 +38,7 @@ index 7de4bed1ddba..c93f742f1d9d 100644 /* * First save the CR then disable the interrupts -@@ -2247,8 +2253,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2259,8 +2265,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) pl011_write(old_cr, uap, REG_CR); if (locked) 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 33d88b4c3..74d6d9429 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/351] tty: serial: pl011: explicitly initialize the flags +Subject: [PATCH 166/353] 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=3bb62a5bc5bf67845e898bd9b8ce8e44502def17 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=05baf33d95eafd9fbd45219ba9c092e895d4c2c1 Silence the following gcc warning: @@ -27,10 +27,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index c93f742f1d9d..925c3556ffb9 100644 +index 2773d08e1d4a..ff1c89fd8dd8 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2210,7 +2210,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2222,7 +2222,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) { struct uart_amba_port *uap = amba_ports[co->index]; unsigned int old_cr = 0, new_cr; 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 e9c728350..9ef734dba 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/351] rt: Improve the serial console PASS_LIMIT +Subject: [PATCH 167/353] 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=54f38c5acf4d18362d5186c7756b78e5321249ed +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d63c1d7bbac2b675e43917a5424ab95886b3e17c 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 838a8f725..70193d051 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/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 +Subject: [PATCH 168/353] tty: serial: 8250: don't take the trylock during oops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b19afc5231b5f29a6fb7b7ed672f22415ee4225 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 6fc89888a52e..15a92d855ca7 100644 +index ce266e10a21e..b3f88d2b827c 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c -@@ -3303,10 +3303,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3306,10 +3306,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 7748d1b46..159a43680 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/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 +Subject: [PATCH 169/353] locking/percpu-rwsem: Remove preempt_disable variants +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f23b7c37251f54a939964734185e877c8310a98e 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 81e988eb8..4657d298f 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/351] mm: Protect activate_mm() by +Subject: [PATCH 170/353] 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=2744d7008885b27cae3644145fcd16d9375ef68f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5dd256559b94c820735d12dc8b1202bd8389dcb 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 a7bb2fed5..9198a9095 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/351] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD +Subject: [PATCH 171/353] 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=fa1bbdefa768d6776aa9355dbf060438c97cf3c8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3e666296c2ab2a54ddee377ed852844bf64b5025 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 ffd494fa5..882beaf2a 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/351] fs/dcache: disable preemption on i_dir_seq's write +Subject: [PATCH 172/353] 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=243086d979b7ad6dd457418734fd3bf7b36eac62 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8577a84b152281fcbf75fd979b6d7e2c8a00b548 i_dir_seq is an opencoded seqcounter. Based on the code it looks like we could have two writers in parallel despite the fact that the d_lock is @@ -81,7 +81,7 @@ index 5df2e8ee23ed..9cdec5f41e40 100644 inode->dirtied_when = 0; diff --git a/include/linux/fs.h b/include/linux/fs.h -index 86f884e78b6b..029870aca4ff 100644 +index 95b8ef09b76c..e77b126ea76a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -679,7 +679,7 @@ struct inode { diff --git a/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch b/debian/patches-rt/0173-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch index b14dc20e9..e9bbaf222 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/351] squashfs: make use of local lock in multi_cpu +Subject: [PATCH 173/353] 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=28a5885425f7c1b1988b6f9778abdf2ac6618820 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f06d224da259dc2afc2df08e8727baffcbecec4 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 0abd92c40..99469c024 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/351] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a5eb814bba630b57b3b562a0cbb1f43b755455d +Subject: [PATCH 174/353] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b0c6911c9c53f3797c55aff7fc1f5b04d48957a 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 f6634261f..2eaa4b273 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/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 +Subject: [PATCH 175/353] x86/fpu: Disable preemption around local_bh_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=114edba091d0c40209a550913271f2e11a5b1f6f __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 1f24c35e3..ca93052a5 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/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 +Subject: [PATCH 176/353] fs/epoll: Do not disable preemption on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3e9c486a84a703a80d2a499ee40a8f3ac1577296 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 872bd62ce..3c408003b 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/351] mm/vmalloc: Another preempt disable region which +Subject: [PATCH 177/353] mm/vmalloc: Another preempt disable region which sucks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f2e80e7c6aa95e16a3bf5d27afb1bb6b0ba5f0d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f02eeca1b32f22a0c620153c56d2ed7699cc61a1 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 1f4b0697e..369314b34 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/351] block: mq: use cpu_light() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1db4f0ed568e7f616c7d8dfc6985231ae050beb +Subject: [PATCH 178/353] block: mq: use cpu_light() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=57ddc2744ca0ee7109ca15ef46ca65627a8c0eee 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 fdd7ee444..abf569476 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/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 +Subject: [PATCH 179/353] block/mq: do not invoke preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=81393db3cca69b34aa356006c5163af2146f4132 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 7ee729b61..76110a527 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/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 +Subject: [PATCH 180/353] block/mq: don't complete requests via IPI +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6d57b360ab19c13d32ed9b351e65e666361ca76 The IPI runs in hardirq context and there are sleeping locks. This patch moves the completion into a workqueue. @@ -15,7 +15,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 80f3e729fdd4..461a93c08c14 100644 +index 4fbf915d9cb0..24b1d8b195d8 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -189,6 +189,9 @@ void blk_rq_init(struct request_queue *q, struct request *rq) 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 90a497e14..c418db355 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/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 +Subject: [PATCH 181/353] md: raid5: Make raid5_percpu handling RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=674c914ac9e49b2d3204b4a351b1dc0292f9f01b __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic diff --git a/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch b/debian/patches-rt/0182-rt-Introduce-cpu_chill.patch index 4eb51619d..99a2b12da 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/351] rt: Introduce cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c23ee57332cab70fefb6e4bfdc189f61d600fac8 +Subject: [PATCH 182/353] rt: Introduce cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e09dd071a88d7b2e35a0f77c5eb3d44dc9fd245 Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -76,10 +76,10 @@ index b78bab4395d8..7c4bc414a504 100644 + #endif /* defined(_LINUX_DELAY_H) */ diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 009001f06d33..0b94f54453ef 100644 +index 4de39964594d..768de46dba6b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1961,6 +1961,27 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, +@@ -1963,6 +1963,27 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, } #endif 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 2a32274a1..b667d1a26 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/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 +Subject: [PATCH 183/353] hrtimer: Don't lose state in cpu_chill() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d09d9861bc9da42051044c8cc3ed23be1e94e33 In cpu_chill() the state is set to TASK_UNINTERRUPTIBLE and a timer is programmed. On return the state is always TASK_RUNNING which means we @@ -19,10 +19,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 0b94f54453ef..96e505abf939 100644 +index 768de46dba6b..aa208a350a3b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1969,15 +1969,18 @@ void cpu_chill(void) +@@ -1971,15 +1971,18 @@ void cpu_chill(void) { ktime_t chill_time; unsigned int freeze_flag = current->flags & PF_NOFREEZE; 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 9372f0ce4..be03a750a 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/351] hrtimer: cpu_chill(): save task state in +Subject: [PATCH 184/353] 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=781af25fa18a1586f4a6e1690b49521a79ebd7cf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=56899c2a49e485169770d92fcffff9dd4feb028d In the previous change I saved the current task state on stack. This was bad because while the task is scheduled-out it might receive a wake-up. @@ -20,10 +20,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 96e505abf939..aa8f3177580a 100644 +index aa208a350a3b..1992f107599e 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1967,20 +1967,28 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, +@@ -1969,20 +1969,28 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, */ void cpu_chill(void) { 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 24cc36bab..a676f9aa4 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/351] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 185/353] 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=ea6963bba2bb29ce40ebaf69a1911cb113ffb0f2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2599b47cfb4f76cc2cbd8e220facd30037154a6a | 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 @@ -51,7 +51,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 461a93c08c14..02835970ef1e 100644 +index 24b1d8b195d8..3872abb222be 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -973,12 +973,21 @@ void blk_queue_exit(struct request_queue *q) @@ -85,7 +85,7 @@ index 461a93c08c14..02835970ef1e 100644 /* * Init percpu_ref in atomic mode so that it's faster to shutdown. -@@ -3967,6 +3977,8 @@ int __init blk_dev_init(void) +@@ -3964,6 +3974,8 @@ int __init blk_dev_init(void) if (!kblockd_workqueue) panic("Failed to create kblockd\n"); 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 91a666ab0..5e392715a 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/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 +Subject: [PATCH 186/353] block: Use cpu_chill() for retry loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51606351531762f808faee325d6318f493efbd6f 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 5764362ef..2b0e49c15 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/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 +Subject: [PATCH 187/353] fs: dcache: Use cpu_chill() in trylock loops +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b314979856ee6c2c76f4960791e7f42fe12a3df 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 c2d475d7c..77cf7defe 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/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 +Subject: [PATCH 188/353] net: Use cpu_chill() instead of cpu_relax() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=563d83d344896c0a0f2d86eb7a7a0c2865f7e670 Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index f654f79e3310..31ce7d1fbee1 100644 +index 6fa0a9a453a8..6831b53ab441 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -63,6 +63,7 @@ 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 1cf46cb64..0c572079b 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/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 +Subject: [PATCH 189/353] fs/dcache: use swait_queue instead of waitqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d3dff00791ef8ca6143f365480b4423bc36a6d9e __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 c34ee9653559..83294b91b6bf 100644 +index 9e8fca598acc..277508fc3cbc 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1646,7 +1646,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, @@ -176,10 +176,10 @@ index e3f10c110b74..accc230079bb 100644 if (IS_ERR(child)) goto end_instantiate; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index c95f32b83a94..75f500cb7e74 100644 +index 7c62a526506c..499f67bf01e6 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c -@@ -681,7 +681,7 @@ static bool proc_sys_fill_cache(struct file *file, +@@ -682,7 +682,7 @@ static bool proc_sys_fill_cache(struct file *file, child = d_lookup(dir, &qname); if (!child) { diff --git a/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch b/debian/patches-rt/0190-workqueue-Use-normal-rcu.patch index 6e3b1f2b5..0bb53e859 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/351] workqueue: Use normal rcu -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cee67a8812386cf151098b840ad3f043ec198571 +Subject: [PATCH 190/353] workqueue: Use normal rcu +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c8b908255dce92868aa84bb5b5f1c5915674c168 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 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 14b34fc5f..8bba099be 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/351] workqueue: Use local irq lock instead of irq disable +Subject: [PATCH 191/353] 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=4c1728ed1dd59c5957012b24a6234fc3cf170af4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87f5ce062d571ed7dd1879f2a9cda3a3f6470d2a 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. 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 231bdc15f..b2d6ea9c7 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/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 +Subject: [PATCH 192/353] workqueue: Prevent workqueue versus ata-piix livelock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c06f6ebc6f06be7ddf6c4e6101fe742aaaeb5a4 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 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 f885d3f3e..27d20785c 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/351] sched: Distangle worker accounting from rqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35aa7cdaff0e8ddfff9de6beb12bae216c821157 +Subject: [PATCH 193/353] sched: Distangle worker accounting from rqlock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d8baa8f0d9dc0a90bb805367f43ef3e8e5452e0f 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,10 +33,10 @@ 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 630e726acdd2..3849015303f6 100644 +index 4a714c92dff2..20585605b2ac 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 +@@ -1707,10 +1707,6 @@ static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_fl { activate_task(rq, p, en_flags); p->on_rq = TASK_ON_RQ_QUEUED; @@ -47,7 +47,7 @@ index 630e726acdd2..3849015303f6 100644 } /* -@@ -2146,56 +2142,6 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) +@@ -2149,56 +2145,6 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) return success; } @@ -104,7 +104,7 @@ index 630e726acdd2..3849015303f6 100644 /** * wake_up_process - Wake up a specific process * @p: The process to be woken up. -@@ -3566,21 +3512,6 @@ static void __sched notrace __schedule(bool preempt) +@@ -3568,21 +3514,6 @@ static void __sched notrace __schedule(bool preempt) atomic_inc(&rq->nr_iowait); delayacct_blkio_start(); } @@ -126,7 +126,7 @@ index 630e726acdd2..3849015303f6 100644 } switch_count = &prev->nvcsw; } -@@ -3640,6 +3571,20 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -3642,6 +3573,20 @@ static inline void sched_submit_work(struct task_struct *tsk) { if (!tsk->state || tsk_is_pi_blocked(tsk)) return; @@ -147,7 +147,7 @@ index 630e726acdd2..3849015303f6 100644 /* * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. -@@ -3648,6 +3593,12 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -3650,6 +3595,12 @@ static inline void sched_submit_work(struct task_struct *tsk) blk_schedule_flush_plug(tsk); } @@ -160,7 +160,7 @@ index 630e726acdd2..3849015303f6 100644 asmlinkage __visible void __sched schedule(void) { struct task_struct *tsk = current; -@@ -3658,6 +3609,7 @@ asmlinkage __visible void __sched schedule(void) +@@ -3660,6 +3611,7 @@ asmlinkage __visible void __sched schedule(void) __schedule(false); sched_preempt_enable_no_resched(); } while (need_resched()); diff --git a/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch b/debian/patches-rt/0194-debugobjects-Make-RT-aware.patch index 3eed7ea32..9603d8e8d 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/351] debugobjects: Make RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d6dea4e57ada7166ad21527d1f6153022aa1687f +Subject: [PATCH 194/353] debugobjects: Make RT aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ea8b8fccf490497fd4c70ae38e1d97c32676ac45 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 292195b07..2a0407dae 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/351] seqlock: Prevent rt starvation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=55168c0a00e26c468f05faedee2a4196eb0d6e6f +Subject: [PATCH 195/353] seqlock: Prevent rt starvation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ff58d4a3451b2c76ec0517b9a38c31a5efddd7b 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 851ab91fa..4e84f63ba 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/351] sunrpc: Make svc_xprt_do_enqueue() use +Subject: [PATCH 196/353] 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=c3f5bcdedbb0bb449888702e291046bdbbc85b56 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=795aa71c9b58368c84384f6ebaa70e3bfb154f70 |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 b107d36b4..5754fc715 100644 --- a/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch +++ b/debian/patches-rt/0197-net-Use-skbufhead-with-raw-lock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Tue, 12 Jul 2011 15:38:34 +0200 -Subject: [PATCH 197/351] net: Use skbufhead with raw lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=619cb3448d91f55316735c1ca4725b7d8b3d73e3 +Subject: [PATCH 197/353] net: Use skbufhead with raw lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa140c5c4b497581079c3170f383502ced597296 Use the rps lock as rawlock so we can keep irq-off regions. It looks low latency. However we can't kfree() from this context therefore we defer this @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 8d48b352ee74..d893dc112afc 100644 +index 4d0f48e74755..d3e4b3f195ff 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2990,6 +2990,7 @@ struct softnet_data { +@@ -2992,6 +2992,7 @@ struct softnet_data { unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -52,7 +52,7 @@ index f97734f34746..3ede4f0eac10 100644 struct lock_class_key *class) { diff --git a/net/core/dev.c b/net/core/dev.c -index add05f74ba38..8ea1c7347987 100644 +index d03162a1828b..1f73badebddc 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -219,14 +219,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) @@ -72,7 +72,7 @@ index add05f74ba38..8ea1c7347987 100644 #endif } -@@ -5858,7 +5858,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5860,7 +5860,9 @@ static int process_backlog(struct napi_struct *napi, int quota) while (again) { struct sk_buff *skb; @@ -82,7 +82,7 @@ index add05f74ba38..8ea1c7347987 100644 rcu_read_lock(); __netif_receive_skb(skb); rcu_read_unlock(); -@@ -5866,9 +5868,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5868,9 +5870,9 @@ static int process_backlog(struct napi_struct *napi, int quota) if (++work >= quota) return work; @@ -93,7 +93,7 @@ index add05f74ba38..8ea1c7347987 100644 rps_lock(sd); if (skb_queue_empty(&sd->input_pkt_queue)) { /* -@@ -6341,13 +6343,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) +@@ -6343,13 +6345,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) unsigned long time_limit = jiffies + usecs_to_jiffies(READ_ONCE(netdev_budget_usecs)); int budget = READ_ONCE(netdev_budget); @@ -115,7 +115,7 @@ index add05f74ba38..8ea1c7347987 100644 for (;;) { struct napi_struct *n; -@@ -9545,10 +9555,13 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9547,10 +9557,13 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -130,7 +130,7 @@ index add05f74ba38..8ea1c7347987 100644 return 0; } -@@ -9859,8 +9872,9 @@ static int __init net_dev_init(void) +@@ -9861,8 +9874,9 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); diff --git a/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/debian/patches-rt/0198-net-move-xmit_recursion-to-per-task-variable-on-RT.patch index 6a82958eb..969707078 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/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 +Subject: [PATCH 198/353] net: move xmit_recursion to per-task variable on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=79260e1688dd4ea3eafa5963d4dbaf63c7db5245 A softirq on -RT can be preempted. That means one task is in __dev_queue_xmit(), gets preempted and another task may enter @@ -24,10 +24,10 @@ Signed-off-by: Clark Williams <williams@redhat.com> 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index d893dc112afc..dfec34087039 100644 +index d3e4b3f195ff..63a0574e2ac2 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -588,7 +588,11 @@ struct netdev_queue { +@@ -590,7 +590,11 @@ struct netdev_queue { * write-mostly part */ spinlock_t _xmit_lock ____cacheline_aligned_in_smp; @@ -39,7 +39,7 @@ index d893dc112afc..dfec34087039 100644 /* * Time (in jiffies) of last Tx */ -@@ -3009,14 +3013,38 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd, +@@ -3011,14 +3015,38 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd, #endif } @@ -79,7 +79,7 @@ index d893dc112afc..dfec34087039 100644 static inline bool dev_xmit_recursion(void) { return unlikely(__this_cpu_read(softnet_data.xmit.recursion) > -@@ -3032,6 +3060,7 @@ static inline void dev_xmit_recursion_dec(void) +@@ -3034,6 +3062,7 @@ static inline void dev_xmit_recursion_dec(void) { __this_cpu_dec(softnet_data.xmit.recursion); } @@ -87,7 +87,7 @@ index d893dc112afc..dfec34087039 100644 void __netif_schedule(struct Qdisc *q); void netif_schedule_queue(struct netdev_queue *txq); -@@ -3841,6 +3870,44 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) +@@ -3843,6 +3872,44 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) return (1U << debug_value) - 1; } @@ -132,7 +132,7 @@ index d893dc112afc..dfec34087039 100644 static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); -@@ -3893,7 +3960,7 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) +@@ -3895,7 +3962,7 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) static inline void txq_trans_update(struct netdev_queue *txq) { @@ -156,10 +156,10 @@ index 3bc6b3206e14..7aa299de5ebf 100644 int pagefault_disabled; #ifdef CONFIG_MMU diff --git a/net/core/dev.c b/net/core/dev.c -index 8ea1c7347987..78fd4ac06a1b 100644 +index 1f73badebddc..8bd9752e16ed 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) +@@ -3835,10 +3835,14 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev) if (dev->flags & IFF_UP) { int cpu = smp_processor_id(); /* ok because BHs are off */ @@ -174,7 +174,7 @@ index 8ea1c7347987..78fd4ac06a1b 100644 if (dev_xmit_recursion()) goto recursion_alert; -@@ -8594,7 +8598,7 @@ static void netdev_init_one_queue(struct net_device *dev, +@@ -8596,7 +8600,7 @@ static void netdev_init_one_queue(struct net_device *dev, /* Initialize queue lock */ spin_lock_init(&queue->_xmit_lock); netdev_set_xmit_lockdep_class(&queue->_xmit_lock, dev->type); diff --git a/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/debian/patches-rt/0199-net-provide-a-way-to-delegate-processing-a-softirq-t.patch index 1baa7a1dd..f7b42e415 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/351] net: provide a way to delegate processing a softirq +Subject: [PATCH 199/353] 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=78bd50361c1f17ea23a805e1b5903a9eb04afd0e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0240dd145b9e5a55e2756c8763e44f6f48dec93e If the NET_RX uses up all of his budget it moves the following NAPI invocations into the `ksoftirqd`. On -RT it does not do so. Instead it @@ -71,10 +71,10 @@ index 27a4bb2303d0..25bcf2f2714b 100644 * This function must run with irqs disabled! */ diff --git a/net/core/dev.c b/net/core/dev.c -index 78fd4ac06a1b..480c6d91c004 100644 +index 8bd9752e16ed..5ca7410f0885 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) +@@ -6393,7 +6393,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) list_splice_tail(&repoll, &list); list_splice(&list, &sd->poll_list); if (!list_empty(&sd->poll_list)) diff --git a/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/debian/patches-rt/0200-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch index 686152480..7d978f110 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/351] net: dev: always take qdisc's busylock in +Subject: [PATCH 200/353] 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=150c0292b648aa25d172ce53afe6a9cdc9611a72 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=757a3eda61a32ec7b76e292e9ebdc78ec9efac93 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,10 +21,10 @@ 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 480c6d91c004..8e3cee96ce87 100644 +index 5ca7410f0885..f6443510a476 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, +@@ -3474,7 +3474,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, * This permits qdisc->running owner to get the lock more * often and dequeue packets faster. */ 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 a9a97dd3c..92c64889f 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/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 +Subject: [PATCH 201/353] net/Qdisc: use a seqlock instead seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dc74abdd6ae0462bab18550d4f7484f9e820d67f The seqcount disables preemption on -RT while it is held which can't remove. Also we don't want the reader to spin for ages if the writer is @@ -241,10 +241,10 @@ index e2fd8baec65f..8bab88738691 100644 struct gnet_stats_basic_cpu __percpu *cpu, struct gnet_stats_basic_packed *b) diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c -index 424e70907b96..6b4ee7c98d69 100644 +index 41c67cfd264f..61dd555e6c35 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c -@@ -1191,7 +1191,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, +@@ -1195,7 +1195,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, rcu_assign_pointer(sch->stab, stab); } if (tca[TCA_RATE]) { diff --git a/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch b/debian/patches-rt/0202-net-add-back-the-missing-serialization-in-ip_send_un.patch index e143d3a55..0f9f8ed7c 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/351] net: add back the missing serialization in +Subject: [PATCH 202/353] 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=507b155f20020ad477cfe379fe332536dd19a7d2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=df106046388d02a2f700fb8f7977307110ac585f 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 6549e07ce19c..84adb4755c5e 100644 +index bd374eac9a75..92affc9b3abe 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -62,6 +62,7 @@ @@ -53,7 +53,7 @@ index 6549e07ce19c..84adb4755c5e 100644 #include <net/net_namespace.h> #include <net/icmp.h> -@@ -637,6 +638,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb) +@@ -639,6 +640,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb) } EXPORT_SYMBOL(tcp_v4_send_check); @@ -61,7 +61,7 @@ index 6549e07ce19c..84adb4755c5e 100644 /* * This routine will send an RST to the other tcp. * -@@ -771,6 +773,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) +@@ -773,6 +775,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) arg.tos = ip_hdr(skb)->tos; arg.uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL); local_bh_disable(); @@ -69,7 +69,7 @@ index 6549e07ce19c..84adb4755c5e 100644 ctl_sk = *this_cpu_ptr(net->ipv4.tcp_sk); if (sk) ctl_sk->sk_mark = (sk->sk_state == TCP_TIME_WAIT) ? -@@ -783,6 +786,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) +@@ -785,6 +788,7 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) ctl_sk->sk_mark = 0; __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); __TCP_INC_STATS(net, TCP_MIB_OUTRSTS); @@ -77,7 +77,7 @@ index 6549e07ce19c..84adb4755c5e 100644 local_bh_enable(); #ifdef CONFIG_TCP_MD5SIG -@@ -863,6 +867,7 @@ static void tcp_v4_send_ack(const struct sock *sk, +@@ -865,6 +869,7 @@ static void tcp_v4_send_ack(const struct sock *sk, arg.tos = tos; arg.uid = sock_net_uid(net, sk_fullsock(sk) ? sk : NULL); local_bh_disable(); @@ -85,7 +85,7 @@ index 6549e07ce19c..84adb4755c5e 100644 ctl_sk = *this_cpu_ptr(net->ipv4.tcp_sk); if (sk) ctl_sk->sk_mark = (sk->sk_state == TCP_TIME_WAIT) ? -@@ -874,6 +879,7 @@ static void tcp_v4_send_ack(const struct sock *sk, +@@ -876,6 +881,7 @@ static void tcp_v4_send_ack(const struct sock *sk, ctl_sk->sk_mark = 0; __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); 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 1a3f490d3..c03b1c189 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/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 +Subject: [PATCH 203/353] net: add a lock around icmp_sk() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed4da37a0640885893991fdf679ea57a89643875 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 f029d1482..dc8879fd7 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/351] net: Have __napi_schedule_irqoff() disable interrupts +Subject: [PATCH 204/353] 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=ba1f28e1110d9c8ae7ddf71f24246835e166956e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=885ccc3fa2dba0d75c963dff76a6dc343f36c3db A customer hit a crash where the napi sd->poll_list became corrupted. The customer had the bnx2x driver, which does a @@ -28,10 +28,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 2 files changed, 14 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index dfec34087039..c4713217b20e 100644 +index 63a0574e2ac2..086cd650f555 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -423,7 +423,19 @@ typedef enum rx_handler_result rx_handler_result_t; +@@ -425,7 +425,19 @@ typedef enum rx_handler_result rx_handler_result_t; typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); void __napi_schedule(struct napi_struct *n); @@ -52,10 +52,10 @@ index 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 8e3cee96ce87..ad8f5563c85e 100644 +index f6443510a476..1103427c6942 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5953,6 +5953,7 @@ bool napi_schedule_prep(struct napi_struct *n) +@@ -5955,6 +5955,7 @@ bool napi_schedule_prep(struct napi_struct *n) } EXPORT_SYMBOL(napi_schedule_prep); @@ -63,7 +63,7 @@ index 8e3cee96ce87..ad8f5563c85e 100644 /** * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule -@@ -5971,6 +5972,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) +@@ -5973,6 +5974,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) __napi_schedule(n); } EXPORT_SYMBOL(__napi_schedule_irqoff); diff --git a/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch b/debian/patches-rt/0205-irqwork-push-most-work-into-softirq-context.patch index 4f6ed8687..41bc0ed0d 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/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 +Subject: [PATCH 205/353] irqwork: push most work into softirq context +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d6d94f13a63813991f513e092042795ed5a30859 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 9c28e2a28..1a11c589c 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/351] printk: Make rt aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=14966a4441f9a55fa1334f6959c0c40c217a8d8c +Subject: [PATCH 206/353] printk: Make rt aware +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=50cb916cbbed0c550cb81051a35b3855f866ea3d 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 b84e2d438..c349ca535 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/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 +Subject: [PATCH 207/353] kernel/printk: Don't try to print from IRQ/NMI region +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cff1c5507d1dbaf6956e6929ab451f9d7c87bb03 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 c91872e66..63c554288 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/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 +Subject: [PATCH 208/353] printk: Drop the logbuf_lock more often +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e56339b4d7578222453493cf763331512b8091ef 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 db2ea74d9..e43e9e4fd 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/351] ARM: enable irq in translation/section permission +Subject: [PATCH 209/353] 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=8559825d974faa51e55b46c4b0af5ffaf869e2ed +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=421b3c1c739bea7427a1e9adb84cdf6f5372a6eb Probably happens on all ARM, with CONFIG_PREEMPT_RT_FULL @@ -67,7 +67,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 6 insertions(+) diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c -index a9ee0d9dc740..20b0e146de98 100644 +index 8457384139cb..423820ffdb01 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -439,6 +439,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr, 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 3e8221038..71c770b08 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/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 +Subject: [PATCH 210/353] genirq: update irq_set_irqchip_state documentation +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b83c8932432d6ee9a270edeb3fbded8b3b5fd46 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 959f82605..5b801875c 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/351] KVM: arm/arm64: downgrade preempt_disable()d region +Subject: [PATCH 211/353] 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=ca8704ae000da9439b5b1a0073a8861fdcd12a6e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f3e3ebbecf539bfd72019700554dad2e36dadd6 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 37f587e80..b0137f8ad 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/351] arm64: fpsimd: use preemp_disable in addition to +Subject: [PATCH 212/353] 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=dfa86674c318427ff210232a6fa270db15c539ec +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=29f9c4aa04a0eed35fe543725942ed2673660efe 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 6e0f4c731..5fd1dcd1d 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/351] kgdb/serial: Short term workaround -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1afcd2e2254c5cb03c06b402aff96238833bce7 +Subject: [PATCH 213/353] kgdb/serial: Short term workaround +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c61598dd60cd4cff07bfd1e2095c0583e301f1a 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 15a92d855ca7..df931895cdcb 100644 +index b3f88d2b827c..2fd41e9bb9df 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 15a92d855ca7..df931895cdcb 100644 #include <linux/uaccess.h> #include <linux/pm_runtime.h> #include <linux/ktime.h> -@@ -3305,6 +3306,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3308,6 +3309,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 146e03265..60d0f00bd 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/351] sysfs: Add /sys/kernel/realtime entry -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db314e5983fff75e4f9ebbfc9d2fcfea6bdc43ea +Subject: [PATCH 214/353] sysfs: Add /sys/kernel/realtime entry +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d819093684a97a1413bc1b9329be8a06f7cc2925 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 e7616609e..4ecf30c0a 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/351] mm, rt: kmap_atomic scheduling -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4490d82f97c961c35eeeef1031e9e45a410ec5d6 +Subject: [PATCH 215/353] mm, rt: kmap_atomic scheduling +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2316fbac290c2216cce66229f4e6ff540d11dadd In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context diff --git a/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch b/debian/patches-rt/0216-x86-highmem-Add-a-already-used-pte-check.patch index ec6e6fd06..c991f50d5 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/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 +Subject: [PATCH 216/353] x86/highmem: Add a "already used pte" check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d135b937084351cf2c7a207269c717c6430da47 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 51b7e37c1..708bc5b36 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/351] arm/highmem: Flush tlb on unmap -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99e954248856729b307ba145a5491f706844d90e +Subject: [PATCH 217/353] arm/highmem: Flush tlb on unmap +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b5b6938cb027a76ed26ca35963934b4579e578c 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 194d63743..69d5ec7d9 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/351] arm: Enable highmem for rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8372a8317fceb409bba55ae9a39490d9a41cffb9 +Subject: [PATCH 218/353] arm: Enable highmem for rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=49a7e38c9dbc8cc81ce00826c075670003016252 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 e46379659..abdd38127 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/351] scsi/fcoe: Make RT aware. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=901ee7587b93437dcfc3b92c8e5cb8c5ebd51001 +Subject: [PATCH 219/353] scsi/fcoe: Make RT aware. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c95c9e1cb07fd1e1bbb556f2664c5ab0de0be04 Do not disable preemption while taking sleeping locks. All user look safe for migrate_diable() only. @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c -index 6768b2e8148a..c20f51af6bdf 100644 +index c5c4805435f6..4316a451c67d 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1459,11 +1459,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, 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 eed8bc5ad..4eb2eb074 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/351] x86: crypto: Reduce preempt disabled regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09d9a12df974fceb589eb81af36faa09d8d39605 +Subject: [PATCH 220/353] x86: crypto: Reduce preempt disabled regions +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f6783d0aef48fe3aaaef8dae8e95d37de7afc462 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 7737e932b..930ccd4fc 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/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 +Subject: [PATCH 221/353] crypto: Reduce preempt disabled regions, more algos +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e3c9f63c522b848c8d3e488bd10e1c611e593bcc 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 4bea15cd7..e30e54090 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/351] crypto: limit more FPU-enabled sections +Subject: [PATCH 222/353] 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=a9dd547cc7ef845c4fbd93163ed42d7d623848a2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f2d061a45ca4ff6938978fdd5f8a74c240febc7 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 f809de546..1d9d20235 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/351] crypto: scompress - serialize RT percpu scratch +Subject: [PATCH 223/353] 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=18eaf07ec37f2f06619b6b90d309748e0e86dc94 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a809ea851d904b0d94aec3699c478455d6c6126b | 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 de5706d3e..fd6c23358 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/351] crypto: cryptd - add a lock instead +Subject: [PATCH 224/353] 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=728b5a4f8b9b88f5fc53c480dcaedc107740554c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bdfc1bec63596589c83b2f97168844fffb50d381 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 8b4c6d561..657a0a208 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/351] panic: skip get_random_bytes for RT_FULL in +Subject: [PATCH 225/353] 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=5786af4abd4135796d537815f1dd27c8759a09d4 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fdcde0cec433e6436fb29f131ff72cbfd616adf Disable on -RT. If this is invoked from irq-context we will have problems to acquire the sleeping lock. @@ -13,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 2 insertions(+) diff --git a/kernel/panic.c b/kernel/panic.c -index 8138a676fb7d..fa114be5c30f 100644 +index 982ecba286c0..51d6c00f9d7a 100644 --- a/kernel/panic.c +++ b/kernel/panic.c -@@ -480,9 +480,11 @@ static u64 oops_id; +@@ -544,9 +544,11 @@ static u64 oops_id; static int init_oops_id(void) { 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 02aa72603..6ffe739ae 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/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 +Subject: [PATCH 226/353] x86: stackprotector: Avoid random pool on rt +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e28ce0d0937ef08e0a5419ab0aa26e31c40762ff 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 65d876792..c3ab83588 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/351] cpu/hotplug: Implement CPU pinning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f0de8987ce46748aebdeb23f492c0775194b0bc +Subject: [PATCH 227/353] cpu/hotplug: Implement CPU pinning +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83968bfdffb5b62b9a6177a283b69e2f745e3f04 Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- 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 e25f81c84..9adcaaf47 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/351] sched: Allow pinned user tasks to be awakened to the +Subject: [PATCH 228/353] 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=b3bd1c0c38b284bb75335fcd8be89eb82e0b7b59 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ae5c6c6bdae5c6520d5e5bd3e75a363b5b296e0 Since commit 7af443ee16976 ("sched/core: Require cpu_active() in select_task_rq(), for user tasks") select_fallback_rq() will BUG() if @@ -21,10 +21,10 @@ 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 3849015303f6..7def8ae96342 100644 +index 20585605b2ac..41219ea235eb 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) +@@ -907,7 +907,7 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) if (!cpumask_test_cpu(cpu, p->cpus_ptr)) return false; 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 83302ea8a..77b7a808d 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/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 +Subject: [PATCH 229/353] hotplug: duct-tape RT-rwlock usage for non-RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4755370acaa6c7a8c26a5d02e44a26e16d976f05 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 548b50b30..bc2888956 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/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 +Subject: [PATCH 230/353] net: Remove preemption disabling in netif_rx() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8fd2eb92e7f465c0a53826f97bc140900b278ec0 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -35,10 +35,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index ad8f5563c85e..ebe7e6939269 100644 +index 1103427c6942..a4a45df863e1 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4494,7 +4494,7 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4496,7 +4496,7 @@ static int netif_rx_internal(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -47,7 +47,7 @@ index ad8f5563c85e..ebe7e6939269 100644 rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -4504,14 +4504,14 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4506,14 +4506,14 @@ static int netif_rx_internal(struct sk_buff *skb) ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); diff --git a/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch b/debian/patches-rt/0231-net-Another-local_irq_disable-kmalloc-headache.patch index 37924f0c1..36161be66 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/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 +Subject: [PATCH 231/353] net: Another local_irq_disable/kmalloc headache +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35ef661e66875532018972fba39ad18bf2006e5b 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 e0be1f8651bb..e2561c9c20bd 100644 +index 7f501dff4501..083ed8a6aad5 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 998ea0844..12fc98e78 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/351] net/core: protect users of napi_alloc_cache against +Subject: [PATCH 232/353] 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=04e22c7dd016cc14e1c3df677791677ff9260c68 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ad635b4a64132b99a1724f778fb29edbed85ced0 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 e2561c9c20bd..5e58555405a7 100644 +index 083ed8a6aad5..6e0438bc8011 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 e53a91df1..7abc552d5 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/351] net: netfilter: Serialize xt_write_recseq sections on +Subject: [PATCH 233/353] 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=768a90f9da24fea4a57dfef2c174142befc033be +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94a1f22b6a411c00eb1aefc4e467635fcced220c 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 98e28dbba..48208e535 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/351] lockdep: selftest: Only do hardirq context test for +Subject: [PATCH 234/353] 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=ae44753fb09a79252061f21c051ab94de6a4e2c5 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0321a0025fdd1294bd02c11eb7d48addc19a068 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 c4d7b9c80..fb89d9442 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/351] lockdep: selftest: fix warnings due to missing +Subject: [PATCH 235/353] 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=09b57e155c7dce80d5c4d9593ddc091cc97046b1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d083b0a15c0ccec7e1ac85a8e40a476f1d0773da "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 8ab7c4c53..5cd8948a5 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/351] sched: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=48ddc8513cc012c5cf3c2da038c2544f6c3f591e +Subject: [PATCH 236/353] sched: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c591b9bea866f1ee6976e32a554ec9b7991fe482 It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -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 7def8ae96342..cf60731667bf 100644 +index 41219ea235eb..e581ce1edc12 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -493,6 +493,48 @@ void resched_curr(struct rq *rq) @@ -314,7 +314,7 @@ index 7def8ae96342..cf60731667bf 100644 void resched_cpu(int cpu) { struct rq *rq = cpu_rq(cpu); -@@ -2409,6 +2451,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) +@@ -2412,6 +2454,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) p->on_cpu = 0; #endif init_task_preempt_count(p); @@ -324,7 +324,7 @@ index 7def8ae96342..cf60731667bf 100644 #ifdef CONFIG_SMP plist_node_init(&p->pushable_tasks, MAX_PRIO); RB_CLEAR_NODE(&p->pushable_dl_tasks); -@@ -3518,6 +3563,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -3520,6 +3565,7 @@ static void __sched notrace __schedule(bool preempt) next = pick_next_task(rq, prev, &rf); clear_tsk_need_resched(prev); @@ -332,7 +332,7 @@ index 7def8ae96342..cf60731667bf 100644 clear_preempt_need_resched(); if (likely(prev != next)) { -@@ -3698,6 +3744,30 @@ static void __sched notrace preempt_schedule_common(void) +@@ -3700,6 +3746,30 @@ static void __sched notrace preempt_schedule_common(void) } while (need_resched()); } @@ -363,7 +363,7 @@ index 7def8ae96342..cf60731667bf 100644 #ifdef CONFIG_PREEMPT /* * this is the entry point to schedule() from in-kernel preemption -@@ -3712,7 +3782,8 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) +@@ -3714,7 +3784,8 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) */ if (likely(!preemptible())) return; @@ -373,7 +373,7 @@ index 7def8ae96342..cf60731667bf 100644 preempt_schedule_common(); } NOKPROBE_SYMBOL(preempt_schedule); -@@ -3739,6 +3810,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) +@@ -3741,6 +3812,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) if (likely(!preemptible())) return; @@ -383,7 +383,7 @@ index 7def8ae96342..cf60731667bf 100644 do { /* * Because the function tracer can trace preempt_count_sub() -@@ -5506,7 +5580,9 @@ void init_idle(struct task_struct *idle, int cpu) +@@ -5508,7 +5582,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 7def8ae96342..cf60731667bf 100644 /* * The idle tasks have their own, simple scheduling class: */ -@@ -7223,6 +7299,7 @@ void migrate_disable(void) +@@ -7225,6 +7301,7 @@ void migrate_disable(void) } preempt_disable(); @@ -402,7 +402,7 @@ index 7def8ae96342..cf60731667bf 100644 pin_current_cpu(); migrate_disable_update_cpus_allowed(p); -@@ -7290,6 +7367,7 @@ void migrate_enable(void) +@@ -7292,6 +7369,7 @@ void migrate_enable(void) arg.dest_cpu = dest_cpu; unpin_current_cpu(); @@ -410,7 +410,7 @@ index 7def8ae96342..cf60731667bf 100644 preempt_enable(); stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); tlb_migrate_finish(p->mm); -@@ -7298,6 +7376,7 @@ void migrate_enable(void) +@@ -7300,6 +7378,7 @@ void migrate_enable(void) } } unpin_current_cpu(); @@ -419,10 +419,10 @@ index 7def8ae96342..cf60731667bf 100644 } EXPORT_SYMBOL(migrate_enable); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 16940416d526..d006dfc54a45 100644 +index bd9a375c45f4..430248f46f72 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4104,7 +4104,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4151,7 +4151,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) ideal_runtime = sched_slice(cfs_rq, curr); delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; if (delta_exec > ideal_runtime) { @@ -431,7 +431,7 @@ index 16940416d526..d006dfc54a45 100644 /* * The current task ran long enough, ensure it doesn't get * re-elected due to buddy favours. -@@ -4128,7 +4128,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4175,7 +4175,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) return; if (delta > ideal_runtime) @@ -440,7 +440,7 @@ index 16940416d526..d006dfc54a45 100644 } static void -@@ -4270,7 +4270,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -4317,7 +4317,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -449,7 +449,7 @@ index 16940416d526..d006dfc54a45 100644 return; } /* -@@ -4404,7 +4404,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -4451,7 +4451,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -458,7 +458,7 @@ index 16940416d526..d006dfc54a45 100644 } static __always_inline -@@ -5112,7 +5112,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -5159,7 +5159,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (rq->curr == p) @@ -467,7 +467,7 @@ index 16940416d526..d006dfc54a45 100644 return; } hrtick_start(rq, delta); -@@ -6706,7 +6706,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -6750,7 +6750,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -476,7 +476,7 @@ index 16940416d526..d006dfc54a45 100644 /* * Only set the backward buddy when the current task is still * on the rq. This can happen when a wakeup gets interleaved -@@ -9840,7 +9840,7 @@ static void task_fork_fair(struct task_struct *p) +@@ -9884,7 +9884,7 @@ static void task_fork_fair(struct task_struct *p) * 'current' within the tree based on its new key value. */ swap(curr->vruntime, se->vruntime); @@ -485,7 +485,7 @@ index 16940416d526..d006dfc54a45 100644 } se->vruntime -= cfs_rq->min_vruntime; -@@ -9864,7 +9864,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -9908,7 +9908,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (rq->curr == p) { if (p->prio > oldprio) @@ -529,7 +529,7 @@ index 637c408fb2dc..87a05bb90124 100644 extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 5cb37fa71316..50eee8dcf85c 100644 +index b1c82b1dc3a6..d137601eed0e 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2153,6 +2153,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, @@ -601,7 +601,7 @@ index 5cb37fa71316..50eee8dcf85c 100644 } diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index 74185fb040f3..7740bcdad355 100644 +index 0923d1b18d1f..80a2d3f56c35 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -127,6 +127,7 @@ struct kretprobe_trace_entry_head { @@ -621,7 +621,7 @@ index 74185fb040f3..7740bcdad355 100644 #define TRACE_BUF_SIZE 1024 diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 46c96744f09d..3f78b0afb729 100644 +index 9255100cf9fa..4424a658434e 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -448,6 +448,7 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) 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 a8793b330..71410e285 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/351] ftrace: Fix trace header alignment -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9486468d82f8e5fb18a4a23ed97e890ccea93835 +Subject: [PATCH 237/353] ftrace: Fix trace header alignment +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8c062bc42f468a30bfe3c01f63ee0dd4f9dc8459 Line up helper arrows to the right column. @@ -14,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 50eee8dcf85c..e1db56edeb0d 100644 +index d137601eed0e..32a2a0e2c6ae 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -3366,17 +3366,17 @@ get_total_entries(struct trace_buffer *buf, 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 5ff97f123..e0bb4ffc4 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/351] x86: Support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4baee5bc17c6cc95083544e897256d6438135bc9 +Subject: [PATCH 238/353] x86: Support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=794d205d0465bfd44c2712b59b1ac12088bc04ba Implement the x86 pieces for lazy preempt. @@ -51,10 +51,10 @@ index 91676b0d2d4c..3b5e41d9b29d 100644 #ifdef ARCH_RT_DELAYS_SIGNAL_SEND diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S -index 37d9016d4768..324b7539eaab 100644 +index e6c258bf9511..e52feb8f557c 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S -@@ -750,8 +750,25 @@ END(ret_from_exception) +@@ -748,8 +748,25 @@ END(ret_from_exception) ENTRY(resume_kernel) DISABLE_INTERRUPTS(CLBR_ANY) .Lneed_resched: @@ -81,10 +81,10 @@ index 37d9016d4768..324b7539eaab 100644 jz restore_all_kernel call preempt_schedule_irq diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S -index f53d995b1370..94fccaa04bfa 100644 +index 891b7b2f5d3b..42d389310f2a 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -733,7 +733,23 @@ GLOBAL(swapgs_restore_regs_and_return_to_usermode) +@@ -736,7 +736,23 @@ GLOBAL(swapgs_restore_regs_and_return_to_usermode) btl $9, EFLAGS(%rsp) /* were interrupts off? */ jnc 1f 0: cmpl $0, PER_CPU_VAR(__preempt_count) 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 e90a9e067..66f226d7a 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/351] x86: lazy-preempt: properly check against +Subject: [PATCH 239/353] x86: lazy-preempt: properly check against preempt-mask -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=75513510857bff0bd24e1366af7d6aa055a69b12 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=265f0d10b439e19e1d0e42602626bfbc315b798c 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 e38dc3355..c3cd394a4 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/351] x86: lazy-preempt: use proper return label on +Subject: [PATCH 240/353] 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=2f573c1654480f0cf483d8970b1bbbd982643053 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e8d0495e581d23995cde947a1fcd8cd5b76fbe29 The lazy-preempt uses the wrong return label in case preemption isn't possible. This results crash while returning to the kernel. @@ -16,10 +16,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S -index 324b7539eaab..d8b40085c2b8 100644 +index e52feb8f557c..6ad053de3d22 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S -@@ -759,15 +759,15 @@ ENTRY(resume_kernel) +@@ -757,15 +757,15 @@ ENTRY(resume_kernel) # atleast preempt count == 0 ? cmpl $_PREEMPT_ENABLED,PER_CPU_VAR(__preempt_count) 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 540ed8df5..f5ce7a560 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/351] arm: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26375d10447b34ed31c960277109eca22b4ee37c +Subject: [PATCH 241/353] arm: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=72bc2cee3d038c81686ce3855f48c4f76946bcf3 Implement the arm pieces for lazy preempt. 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 a0552d68c..4c334d946 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/351] powerpc: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e57b5b18ecdd01a4d6c25f64b9bdd7fdf64bbc91 +Subject: [PATCH 242/353] powerpc: Add support for lazy preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca062ab8bbd39bd842cfc799f8bada4b9c01a338 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 70a1cbc09..dd7f352b3 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/351] arch/arm64: Add lazy preempt support -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6da57ed2b5ca1bfb6c77726d034721566678bbce +Subject: [PATCH 243/353] arch/arm64: Add lazy preempt support +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=96e92cd2a65dccecd3f19069b0c5ad37a1b36b91 arm64 is missing support for PREEMPT_RT. The main feature which is lacking is support for lazy preemption. The arch-specific entry code, diff --git a/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch b/debian/patches-rt/0244-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch index ae25fbe96..5eddf42bf 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/351] connector/cn_proc: Protect send_msg() with a local +Subject: [PATCH 244/353] 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=80e11a209b70e7abefdffaf06e69fc55f0705b6e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=131915d726712eb07b31d66da421e43cba8730b7 |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 20c0c905b..001467c55 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/351] drivers/block/zram: Replace bit spinlocks with +Subject: [PATCH 245/353] 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=ca01c73a094a833d8d65788bede4ad0112047eca +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=05c69380020a248624416e8d4464ec44abcdd30c 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 c8b605d85..127136dcd 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/351] drivers/zram: Don't disable preemption in +Subject: [PATCH 246/353] 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=2ac83a7513fa9bd4761845b295a8caf6dd72668e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d05c7b990c9aea051f2ba6618320d6c2b0b8cc9 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 84417e01f..3ec5ced65 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/351] drivers/zram: fix zcomp_stream_get() +Subject: [PATCH 247/353] 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=dbce882bb932648fcafed8562053feddff71a443 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=026ed9fab709fb05e6bfb93d38f4d687f69a0bb1 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 c576819b3..9a7e6db48 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/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 +Subject: [PATCH 248/353] tpm_tis: fix stall after iowrite*()s +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=13c13176d3cb009c73dcba8f46807248a07dbb9f ioread8() operations to TPM MMIO addresses can stall the cpu when immediately following a sequence of iowrite*()'s to the same region. @@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c -index 5a3a4f095391..5ecca6585049 100644 +index 939dc25a7833..147012f342bd 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c @@ -54,6 +54,31 @@ static inline struct tpm_tis_tcg_phy *to_tpm_tis_tcg_phy(struct tpm_tis_data *da @@ -60,7 +60,7 @@ index 5a3a4f095391..5ecca6585049 100644 static int interrupts = -1; module_param(interrupts, int, 0444); MODULE_PARM_DESC(interrupts, "Enable interrupts"); -@@ -173,7 +198,7 @@ static int tpm_tcg_write_bytes(struct tpm_tis_data *data, u32 addr, u16 len, +@@ -174,7 +199,7 @@ static int tpm_tcg_write_bytes(struct tpm_tis_data *data, u32 addr, u16 len, struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); while (len--) @@ -69,7 +69,7 @@ index 5a3a4f095391..5ecca6585049 100644 return 0; } -@@ -200,7 +225,7 @@ static int tpm_tcg_write32(struct tpm_tis_data *data, u32 addr, u32 value) +@@ -201,7 +226,7 @@ static int tpm_tcg_write32(struct tpm_tis_data *data, u32 addr, u32 value) { struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); 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 5a9269708..52ff2e3b6 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/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 +Subject: [PATCH 249/353] watchdog: prevent deferral of watchdogd wakeup on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=55831eb14718452abae6b582fb1fac10c4b10334 When PREEMPT_RT_FULL is enabled, all hrtimer expiry functions are deferred for execution into the context of ktimersoftd unless otherwise @@ -36,7 +36,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c -index 8fe59b7d8eec..516782cff8d2 100644 +index 808896c9e1c2..b8aefa70dcf0 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -145,7 +145,7 @@ static inline void watchdog_update_worker(struct watchdog_device *wdd) 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 2e1de7365..30a3f798c 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/351] drm,radeon,i915: Use preempt_disable/enable_rt() +Subject: [PATCH 250/353] 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=f9106310f90277b39dfedd4c7b133ff340c8f183 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d4242c36dc748d9e95d8e58b6d9b4a49d3ae526 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 eb6a76332..c8d09bcad 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/351] drm,i915: Use local_lock/unlock_irq() in +Subject: [PATCH 251/353] 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=c9d9ae462ce5439ff82d0b2177b4cc6b88cd7c4c +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ac37f21b29822e70441cb3bd4a5b8453da2f8a1 [ 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 bed2b6737..4784db5eb 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/351] drm/i915: disable tracing on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c289c4929e1de551836ec24f7516915727d8e818 +Subject: [PATCH 252/353] drm/i915: disable tracing on -RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ff11b6b7f1cac9927b52ba7f1cb572d71626b8c 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 4f6231bd1..bff85f1ec 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/351] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with +Subject: [PATCH 253/353] 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=36d9355e7da732bec8f0a8871e6c40f4f9fdf63d +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=410db45c0390e863287301821b5cd7e9105b9fa0 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 e09e9da8d..e4557d71a 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/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 +Subject: [PATCH 254/353] cgroups: use simple wait in css_release() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23f4f05c0423e2bc9c2974a05275a3796862ed51 To avoid: |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 @@ -54,10 +54,10 @@ index 56442d3b651d..1d2275287f0e 100644 /* diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c -index a892a99eb4bf..992f0ee8dba1 100644 +index a8185cdb8587..da19cf179b27 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -4747,10 +4747,10 @@ static void css_free_rwork_fn(struct work_struct *work) +@@ -4787,10 +4787,10 @@ static void css_free_rwork_fn(struct work_struct *work) } } @@ -70,7 +70,7 @@ index a892a99eb4bf..992f0ee8dba1 100644 struct cgroup_subsys *ss = css->ss; struct cgroup *cgrp = css->cgroup; -@@ -4812,8 +4812,8 @@ static void css_release(struct percpu_ref *ref) +@@ -4852,8 +4852,8 @@ static void css_release(struct percpu_ref *ref) struct cgroup_subsys_state *css = container_of(ref, struct cgroup_subsys_state, refcnt); @@ -81,7 +81,7 @@ index a892a99eb4bf..992f0ee8dba1 100644 } static void init_and_link_css(struct cgroup_subsys_state *css, -@@ -5533,6 +5533,7 @@ static int __init cgroup_wq_init(void) +@@ -5573,6 +5573,7 @@ static int __init cgroup_wq_init(void) */ cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); BUG_ON(!cgroup_destroy_wq); diff --git a/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0255-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch index afa21c505..4125ab42a 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/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 +Subject: [PATCH 255/353] cpuset: Convert callback_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eebfe2361fec29f66b8e8070272bc88368fa28c3 The two commits below add up to a cpuset might_sleep() splat for RT: @@ -50,7 +50,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c -index 35541e1dfad9..42ed4e497336 100644 +index b5a1dca1d4d1..17875d252bf0 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -288,7 +288,7 @@ static struct cpuset top_cpuset = { @@ -122,7 +122,7 @@ index 35541e1dfad9..42ed4e497336 100644 if (!cpumask_empty(trialcs->cpus_allowed) && balance_flag_changed) rebuild_sched_domains_locked(); -@@ -1761,7 +1761,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) +@@ -1762,7 +1762,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) cpuset_filetype_t type = seq_cft(sf)->private; int ret = 0; @@ -131,7 +131,7 @@ index 35541e1dfad9..42ed4e497336 100644 switch (type) { case FILE_CPULIST: -@@ -1780,7 +1780,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) +@@ -1781,7 +1781,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) ret = -EINVAL; } @@ -140,7 +140,7 @@ index 35541e1dfad9..42ed4e497336 100644 return ret; } -@@ -1995,12 +1995,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) +@@ -1997,12 +1997,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) cpuset_inc(); @@ -155,7 +155,7 @@ index 35541e1dfad9..42ed4e497336 100644 if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags)) goto out_unlock; -@@ -2027,12 +2027,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) +@@ -2029,12 +2029,12 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) } rcu_read_unlock(); @@ -169,8 +169,8 @@ index 35541e1dfad9..42ed4e497336 100644 + raw_spin_unlock_irq(&callback_lock); out_unlock: mutex_unlock(&cpuset_mutex); - return 0; -@@ -2071,7 +2071,7 @@ static void cpuset_css_free(struct cgroup_subsys_state *css) + put_online_cpus(); +@@ -2076,7 +2076,7 @@ static void cpuset_css_free(struct cgroup_subsys_state *css) static void cpuset_bind(struct cgroup_subsys_state *root_css) { mutex_lock(&cpuset_mutex); @@ -179,7 +179,7 @@ index 35541e1dfad9..42ed4e497336 100644 if (is_in_v2_mode()) { cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask); -@@ -2082,7 +2082,7 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) +@@ -2087,7 +2087,7 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) top_cpuset.mems_allowed = top_cpuset.effective_mems; } @@ -188,7 +188,7 @@ index 35541e1dfad9..42ed4e497336 100644 mutex_unlock(&cpuset_mutex); } -@@ -2180,12 +2180,12 @@ hotplug_update_tasks_legacy(struct cpuset *cs, +@@ -2185,12 +2185,12 @@ hotplug_update_tasks_legacy(struct cpuset *cs, { bool is_empty; @@ -203,7 +203,7 @@ index 35541e1dfad9..42ed4e497336 100644 /* * Don't call update_tasks_cpumask() if the cpuset becomes empty, -@@ -2222,10 +2222,10 @@ hotplug_update_tasks(struct cpuset *cs, +@@ -2227,10 +2227,10 @@ hotplug_update_tasks(struct cpuset *cs, if (nodes_empty(*new_mems)) *new_mems = parent_cs(cs)->effective_mems; @@ -216,7 +216,7 @@ index 35541e1dfad9..42ed4e497336 100644 if (cpus_updated) update_tasks_cpumask(cs); -@@ -2318,21 +2318,21 @@ static void cpuset_hotplug_workfn(struct work_struct *work) +@@ -2323,21 +2323,21 @@ static void cpuset_hotplug_workfn(struct work_struct *work) /* synchronize cpus_allowed to cpu_active_mask */ if (cpus_updated) { @@ -242,7 +242,7 @@ index 35541e1dfad9..42ed4e497336 100644 update_tasks_nodemask(&top_cpuset); } -@@ -2434,11 +2434,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) +@@ -2439,11 +2439,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) { unsigned long flags; @@ -256,7 +256,7 @@ index 35541e1dfad9..42ed4e497336 100644 } /** -@@ -2499,11 +2499,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) +@@ -2504,11 +2504,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) nodemask_t mask; unsigned long flags; @@ -270,7 +270,7 @@ index 35541e1dfad9..42ed4e497336 100644 return mask; } -@@ -2595,14 +2595,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) +@@ -2600,14 +2600,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) return true; /* Not hardwall and node outside mems_allowed: scan up cpusets */ 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 55a057e01..0ff8b69a5 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/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 +Subject: [PATCH 256/353] apparmor: use a locallock instead preempt_disable() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=becfde51f079b095ff4c0e80c735d8b52ad2cc24 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 4aa84f292..5fb98b103 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/351] workqueue: Prevent deadlock/stall on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87d9d53971f4e410e1ad22c2c9a80c3b1de7b58c +Subject: [PATCH 257/353] workqueue: Prevent deadlock/stall on RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e621f4bb1ebb318d4bac120c74aefd215cc67662 Austin reported a XFS deadlock/stall on RT where scheduled work gets never exececuted and tasks are waiting for each other for ever. @@ -42,10 +42,10 @@ 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 cf60731667bf..f9babcec1afc 100644 +index e581ce1edc12..fd1a7d1ff9f4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -3615,9 +3615,8 @@ void __noreturn do_task_dead(void) +@@ -3617,9 +3617,8 @@ void __noreturn do_task_dead(void) static inline void sched_submit_work(struct task_struct *tsk) { @@ -56,7 +56,7 @@ index cf60731667bf..f9babcec1afc 100644 /* * If a worker went to sleep, notify and ask workqueue whether * it wants to wake up a task to maintain concurrency. -@@ -3631,6 +3630,9 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -3633,6 +3632,9 @@ static inline void sched_submit_work(struct task_struct *tsk) preempt_enable_no_resched(); } 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 feaa41c25..be3619dc9 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/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 +Subject: [PATCH 258/353] signals: Allow rt tasks to cache one sigqueue struct +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ae9f9cdd9c690af6e592fd497b9322866d44f0b To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -41,10 +41,10 @@ index 0be5ce2375cb..6495fda18c2c 100644 /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ static inline int valid_signal(unsigned long sig) diff --git a/kernel/exit.c b/kernel/exit.c -index 908e7a33e1fc..2a414fc71b87 100644 +index 02360ec3b122..51b36d58c872 100644 --- a/kernel/exit.c +++ b/kernel/exit.c -@@ -160,7 +160,7 @@ static void __exit_signal(struct task_struct *tsk) +@@ -207,7 +207,7 @@ static void __exit_signal(struct task_struct *tsk) * Do this under ->siglock, we can race with another thread * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. */ 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 e31b74d66..214ec6365 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/351] Add localversion for -RT release -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9c4840798b87941665de0d03e2e0ae4d1aea3f6 +Subject: [PATCH 259/353] Add localversion for -RT release +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e770595a5754c12a88efb4be468051751a01c63 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 349428d20..58afbe50b 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/351] powerpc/pseries/iommu: Use a locallock instead +Subject: [PATCH 260/353] 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=2e34d2f882b8f50dc56fb17c2671eefcd3a10613 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b524d947baacebeb56379a29c0df29bf09b6ec6d 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 689688d42..0929bfc30 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/351] powerpc: reshuffle TIF bits -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bbd147e21279831b99859a1403741a7ea5cb0cc1 +Subject: [PATCH 261/353] powerpc: reshuffle TIF bits +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83060ac843c04a0443161531168cd67ca1e73fd7 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 c2174d734..8ac69c2c9 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/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 +Subject: [PATCH 262/353] tty/sysrq: Convert show_lock to raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c7812ddf6eec62c618ea19060c8df5d6e144f6ab 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 c6202c76b..3e70d62c2 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/351] drm/i915: Don't disable interrupts independently of +Subject: [PATCH 263/353] 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=797d3c7e24d525fcadd72c6f71220656625c88ef +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=955d865790f6580d202d6a81658dc0a7b577ac78 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 184364493..21d3efa71 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/351] sched/completion: Fix a lockup in +Subject: [PATCH 264/353] 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=8d147c6201655ace488f41a1c271d3da10e48853 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=82d52a9ce572a8230a57659a20d8e6d710af4a04 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 834d19ea4..5d51c292a 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/351] kthread: add a global worker thread. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=416cf118ae8b8fea6609bc01fbc4d63db005b100 +Subject: [PATCH 265/353] kthread: add a global worker thread. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=76fc7e6b959c5e15f5a71a44deb6fd4801ce4762 [ Upstream commit 0532e87d9d44795221aa921ba7024bde689cc894 ] 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 59c1f4834..6c2b0adbc 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/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 +Subject: [PATCH 266/353] arm: imx6: cpuidle: Use raw_spinlock_t +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=751142adb10947e8034d9e05ebc59d66fde7a25b [ 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 4aa1d5fb3..5e61c702e 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/351] rcu: Don't allow to change rcu_normal_after_boot on +Subject: [PATCH 267/353] 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=565e362156219f5a3f23c65e806e5954a72382ba +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07b3c01852fe0393377e9e573a57fc1673458c2b [ 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 7a943fe6c..c4c3072a3 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/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 +Subject: [PATCH 268/353] pci/switchtec: fix stream_open.cocci warnings +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=717589a6d22ca16c64dff08b297b5691c36679d3 [ 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 b0a231d28..15d2634b3 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/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 +Subject: [PATCH 269/353] sched/core: Drop a preempt_disable_rt() statement +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d38a2b1c1f897bc08b08d79620b5ee01ebe071fb [ 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 f9babcec1afc..5473824aee5b 100644 +index fd1a7d1ff9f4..ab64a3c261bc 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 47bf2c336..c6a748876 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/351] timers: Redo the notification of canceling timers on +Subject: [PATCH 270/353] 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=f8b3a6db4434a0ee962dcb2dc5b1fc160d0cfeaa +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3c12b4946551a57a952f3868cc8a0b7334d6cca [ Upstream commit c71273154c2ad12e13333aada340ff30e826a11b ] @@ -135,7 +135,7 @@ index 0571b498db73..3e6c91bdf2ef 100644 /* diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c -index f4c8cfde00b0..e7b983df6996 100644 +index dec68f9dab7b..85c7f4a6b9c1 100644 --- a/kernel/time/alarmtimer.c +++ b/kernel/time/alarmtimer.c @@ -438,7 +438,7 @@ int alarm_cancel(struct alarm *alarm) @@ -148,7 +148,7 @@ index f4c8cfde00b0..e7b983df6996 100644 } EXPORT_SYMBOL_GPL(alarm_cancel); diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index aa8f3177580a..bbc408f24f5d 100644 +index 1992f107599e..6e19604eaa00 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -981,33 +981,16 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) @@ -216,7 +216,7 @@ index aa8f3177580a..bbc408f24f5d 100644 } #ifdef CONFIG_HIGH_RES_TIMERS -@@ -2014,9 +1998,7 @@ int hrtimers_prepare_cpu(unsigned int cpu) +@@ -2016,9 +2000,7 @@ int hrtimers_prepare_cpu(unsigned int cpu) cpu_base->softirq_next_timer = NULL; cpu_base->expires_next = KTIME_MAX; cpu_base->softirq_expires_next = KTIME_MAX; @@ -317,7 +317,7 @@ index 2d29b269dc83..54632ed51c65 100644 * We need to handle case when timer was or is in the * middle of firing. In other cases we already freed diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c -index 2cf5aa704106..3fd433d2a767 100644 +index 36ee80652208..9f1d4c092f54 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c @@ -821,25 +821,20 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, 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 3f9d61e96..b55d0ce5f 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/351] Revert "futex: Ensure lock/unlock symetry versus +Subject: [PATCH 271/353] 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=b6f5a87870f7fd1194b5f15cef6e73343b5478b0 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38511a2c94b5edfab3a2e17aea53fb79880cf8c0 [ 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 104f75dae..7b09f5fd5 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/351] Revert "futex: Fix bug on when a requeued RT task +Subject: [PATCH 272/353] 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=b06b941626e30f9c6a9743a2a280d4592965bcf8 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=112b6c937ae5e417fe33cf5099310047a342e229 [ 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 6e515c0f5..d64598e83 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/351] Revert "rtmutex: Handle the various new futex race +Subject: [PATCH 273/353] 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=71b0e401fc6afe8f443f4dc34a8ddbc0bf2fb37e +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4eb4c6628857325a9a04b98f797b5c19bfa421d3 [ 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 e2f90f5d5..587325a02 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/351] Revert "futex: workaround migrate_disable/enable in +Subject: [PATCH 274/353] 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=046fd715e485046870aeebf9354a5387a9ad2aeb +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25adb203ce6bb1c640d6b4dd64c09a6566fbfd3f [ 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 9a932ce48..23d476cfb 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/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 +Subject: [PATCH 275/353] futex: Make the futex_hash_bucket lock raw +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=722997c7c43a8f9eaa0e98ed054e49ebae61d321 [ 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 89ef520db..efd018458 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/351] futex: Delay deallocation of pi_state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45894c2eaf4378a9492d096c550577887d9bce85 +Subject: [PATCH 276/353] futex: Delay deallocation of pi_state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f34a2941c8b30b9540f4872bcf71e7589a23538 [ 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 be12c7dff..361035b83 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/351] mm/zswap: Do not disable preemption in +Subject: [PATCH 277/353] 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=db3636ad52c6dfbee7ff55e3b61dce331b8a5c90 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=087e2c667e2ce559aed791330f66e35c0739e2f9 [ Upstream commit 4e4cf4be79635e67144632d9135286381acbc95a ] diff --git a/debian/patches-rt/0278-revert-aio.patch b/debian/patches-rt/0278-revert-aio.patch index 719785852..45631b1d1 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/351] revert-aio -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25cccdfad7fb4bc477ed3f2c9b092f86cbc6ea47 +Subject: [PATCH 278/353] revert-aio +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e1ffcdd2f4b2068220b9fd5681f991f58e57a57 revert: fs/aio: simple simple work @@ -11,7 +11,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/fs/aio.c b/fs/aio.c -index 21eacb0f3f56..9635c29b83da 100644 +index ab1bb9260056..1bd934eccbf6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -42,7 +42,6 @@ @@ -38,7 +38,7 @@ index 21eacb0f3f56..9635c29b83da 100644 aio_mnt = kern_mount(&aio_fs); if (IS_ERR(aio_mnt)) panic("Failed to create aio fs mount."); -@@ -611,9 +608,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) +@@ -615,9 +612,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) * and ctx->users has dropped to 0, so we know no more kiocbs can be submitted - * now it's safe to cancel any that need to be. */ @@ -50,7 +50,7 @@ index 21eacb0f3f56..9635c29b83da 100644 struct aio_kiocb *req; spin_lock_irq(&ctx->ctx_lock); -@@ -631,14 +628,6 @@ static void free_ioctx_users_work(struct swork_event *sev) +@@ -635,14 +632,6 @@ static void free_ioctx_users_work(struct swork_event *sev) percpu_ref_put(&ctx->reqs); } 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 7030c4269..2b1063281 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/351] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02a5fd9f02f332e1556257ef9efdda4f8e1260f6 +Subject: [PATCH 279/353] fs/aio: simple simple work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=282d02556c08b5e4f14c4997a89754adbd6e5c60 [ Upstream commit 1a142116f6435ef070ecebb66d2d599507c10601 ] @@ -32,7 +32,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c -index 9635c29b83da..303e85033965 100644 +index 1bd934eccbf6..50fe29490ec7 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -121,6 +121,7 @@ struct kioctx { @@ -43,7 +43,7 @@ index 9635c29b83da..303e85033965 100644 /* * signals when all in-flight requests are done -@@ -608,9 +609,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) +@@ -612,9 +613,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) * and ctx->users has dropped to 0, so we know no more kiocbs can be submitted - * now it's safe to cancel any that need to be. */ @@ -55,7 +55,7 @@ index 9635c29b83da..303e85033965 100644 struct aio_kiocb *req; spin_lock_irq(&ctx->ctx_lock); -@@ -628,6 +629,14 @@ static void free_ioctx_users(struct percpu_ref *ref) +@@ -632,6 +633,14 @@ static void free_ioctx_users(struct percpu_ref *ref) percpu_ref_put(&ctx->reqs); } diff --git a/debian/patches-rt/0280-revert-thermal.patch b/debian/patches-rt/0280-revert-thermal.patch index ca446853b..2ca306019 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/351] revert-thermal -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5d1f189fd154780b94568b1d742c74815d52b62 +Subject: [PATCH 280/353] revert-thermal +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b076ec362dc051a2317f7b43bee1fec252623576 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 f68a5f066..2673846eb 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/351] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=165114700f74a8d7040fcbe78d65d5fd1e8ca582 +Subject: [PATCH 281/353] thermal: Defer thermal wakups to threads +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e23e2a7e4097eb86a567eaec4379f84e686a2ee5 [ Upstream commit ad2408dc248fe58536eef5b2b5734d8f9d3a280b ] diff --git a/debian/patches-rt/0282-revert-block.patch b/debian/patches-rt/0282-revert-block.patch index f60c96ddb..b28b2d8c0 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/351] revert-block -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09cadfb1381e0e9d3cc991688646273a58cbdbd7 +Subject: [PATCH 282/353] revert-block +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37e6e928c30eb2c4f07268390dab283611524c36 Revert swork version of: block: blk-mq: move blk_queue_usage_counter_release() into process context @@ -14,7 +14,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 02835970ef1e..461a93c08c14 100644 +index 3872abb222be..24b1d8b195d8 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -973,21 +973,12 @@ void blk_queue_exit(struct request_queue *q) @@ -48,7 +48,7 @@ index 02835970ef1e..461a93c08c14 100644 /* * Init percpu_ref in atomic mode so that it's faster to shutdown. -@@ -3977,8 +3967,6 @@ int __init blk_dev_init(void) +@@ -3974,8 +3964,6 @@ int __init blk_dev_init(void) if (!kblockd_workqueue) panic("Failed to create kblockd\n"); 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 c7a2fe397..b174a3d1c 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/351] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 283/353] 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=63413a20c60b9b1637830ec4294e0b437d598005 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25b1bec7050524539d6e1b35b823da8874860f72 [ Upstream commit 61c928ecf4fe200bda9b49a0813b5ba0f43995b5 ] @@ -54,7 +54,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 461a93c08c14..a67a50dd714a 100644 +index 24b1d8b195d8..aa40960ef4c0 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -973,12 +973,21 @@ void blk_queue_exit(struct request_queue *q) diff --git a/debian/patches-rt/0284-workqueue-rework.patch b/debian/patches-rt/0284-workqueue-rework.patch index 38e6a71e4..36bf4836c 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/351] workqueue: rework -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=03a1d47bc6d2f2e32d7c26fae2809fd8050a8226 +Subject: [PATCH 284/353] workqueue: rework +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=596c804b6bf260c1e2df31fff84b5a66349192bf [ Upstream commit d15a862f24df983458533aebd6fa207ecdd1095a ] @@ -34,7 +34,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> delete mode 100644 include/linux/kthread-cgroup.h diff --git a/block/blk-core.c b/block/blk-core.c -index a67a50dd714a..ed6ae335756d 100644 +index aa40960ef4c0..732913d4966c 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -973,7 +973,7 @@ void blk_queue_exit(struct request_queue *q) @@ -152,7 +152,7 @@ index 82f21fd4afb0..1ef937d799e4 100644 kfree(packages); } diff --git a/fs/aio.c b/fs/aio.c -index 303e85033965..6deff68b92c7 100644 +index 50fe29490ec7..adcb7913159d 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -121,7 +121,7 @@ struct kioctx { @@ -164,7 +164,7 @@ index 303e85033965..6deff68b92c7 100644 /* * signals when all in-flight requests are done -@@ -609,9 +609,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) +@@ -613,9 +613,9 @@ static void free_ioctx_reqs(struct percpu_ref *ref) * and ctx->users has dropped to 0, so we know no more kiocbs can be submitted - * now it's safe to cancel any that need to be. */ @@ -176,7 +176,7 @@ index 303e85033965..6deff68b92c7 100644 struct aio_kiocb *req; spin_lock_irq(&ctx->ctx_lock); -@@ -633,8 +633,8 @@ static void free_ioctx_users(struct percpu_ref *ref) +@@ -637,8 +637,8 @@ static void free_ioctx_users(struct percpu_ref *ref) { struct kioctx *ctx = container_of(ref, struct kioctx, users); @@ -352,10 +352,10 @@ 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 5473824aee5b..ea275b4b3d0a 100644 +index ab64a3c261bc..dded9ca916eb 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) +@@ -3614,6 +3614,7 @@ static inline void sched_submit_work(struct task_struct *tsk) { if (!tsk->state) return; @@ -364,7 +364,7 @@ index 5473824aee5b..ea275b4b3d0a 100644 * If a worker went to sleep, notify and ask workqueue whether * it wants to wake up a task to maintain concurrency. diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index bbc408f24f5d..eb2db7e6a241 100644 +index 6e19604eaa00..92ee6cf49c24 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -748,29 +748,6 @@ static void hrtimer_switch_to_hres(void) 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 9044aa353..8c2e7d58f 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/351] i2c: exynos5: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07d92bd6d58b8af4f6e1eaa685ac0add6ffa1964 +Subject: [PATCH 285/353] i2c: exynos5: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9dbbf1a9a650703c59529ccb70843a8577495d1 [ 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 4dd9d4c3e..6a46e43e6 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/351] i2c: hix5hd2: Remove IRQF_ONESHOT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37b47c7d3a8b23ff0998283736ca06252760556e +Subject: [PATCH 286/353] i2c: hix5hd2: Remove IRQF_ONESHOT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=efef7a2c8a6dad2a5e36e96640affdab97b10e66 [ 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 0b8da97ac..8b8436332 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/351] sched/deadline: Ensure inactive_timer runs in hardirq +Subject: [PATCH 287/353] 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=5602a664dba672cb7db6fa266ad071e12b18bf71 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ecec8209fa951318de80e5f9f60cb6949de3b61 [ Upstream commit ba94e7aed7405c58251b1380e6e7d73aa8284b41 ] diff --git a/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch b/debian/patches-rt/0288-thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch index 8f9bf0644..f58283138 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/351] thermal/x86_pkg_temp: make pkg_temp_lock a raw +Subject: [PATCH 288/353] 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=c616b99c8cf7cecda61613c288b20b072976ea58 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=44c3890791dda2da81a71bbb8b920d2e043019f8 [ 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 b36afad41..f85e2cf8a 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/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 +Subject: [PATCH 289/353] dma-buf: Use seqlock_t instread disabling preemption +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a41b5c961426c8cfced96aafa82517fdc187cc6f [ 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 da7dd555d..1ee4544e8 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/351] KVM: arm/arm64: Let the timer expire in hardirq +Subject: [PATCH 290/353] 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=a23f7d6d0f46020f64841837901f0cf715710edf +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9aa362f5217dc131c6a06777ead7f0fa6f24cd5 [ 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 49af18ed9..96ca4c86e 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/351] x86: preempt: Check preemption level before looking +Subject: [PATCH 291/353] 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=8a4e037ca583b2e9c0cf1b8e0b41d57393c66a46 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ebc55480887bfaef01412510792f2ce1a77b3654 [ 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 70de0ecbc..14a9337be 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/351] hrtimer: Use READ_ONCE to access timer->base in +Subject: [PATCH 292/353] 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=b9d2a65bdb9560dfbe48c47b9b104952b9888cd7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c33030a188299d5f4d2a0ba662f71a1de38bc091 [ Upstream commit 2c8fdbe7ef0ad06c1a326886c5954e117b5657d6 ] @@ -24,7 +24,7 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index eb2db7e6a241..dff440fd968b 100644 +index 92ee6cf49c24..a868444c6154 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -959,7 +959,7 @@ EXPORT_SYMBOL_GPL(hrtimer_forward); diff --git a/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch b/debian/patches-rt/0293-hrtimer-Don-t-grab-the-expiry-lock-for-non-soft-hrti.patch index 37b4d080e..166a8c068 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/351] hrtimer: Don't grab the expiry lock for non-soft +Subject: [PATCH 293/353] 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=257d3ed6a99a9055a4b7725652f0608a0c19dfab +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9856f7ac0a960926df3213b147d23bb61ab08876 [ Upstream commit fd420354bea2f57c11f3de191dffdeea76531e76 ] @@ -23,7 +23,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index dff440fd968b..24bfae0e92e2 100644 +index a868444c6154..303e8cb2b52b 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -961,7 +961,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch b/debian/patches-rt/0294-hrtimer-Prevent-using-hrtimer_grab_expiry_lock-on-mi.patch index 2317ddfbe..ca110d8f4 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/351] hrtimer: Prevent using hrtimer_grab_expiry_lock() on +Subject: [PATCH 294/353] 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=3ef8d3a148a827f4f173179ea176d6deae3a4517 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed1f1523fc5f419ad788d6b09bb589d2e070dbc3 [ Upstream commit cef1b87f98823af923a386f3f69149acb212d4a1 ] @@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 24bfae0e92e2..3f9d156c36f1 100644 +index 303e8cb2b52b..5a053bef18e7 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -961,7 +961,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch b/debian/patches-rt/0295-hrtimer-Add-a-missing-bracket-and-hide-migration_bas.patch index 248781694..379de3240 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/351] hrtimer: Add a missing bracket and hide +Subject: [PATCH 295/353] 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=78e97bf152629ea0dc4890964d9a8e92be8c0844 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=957a4c80e0cd81de63b3fc11f0aa903aeb9cf2ae [ Upstream commit 47b6de0b7f22c28b40275aeede3993d807668c3b ] @@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 3f9d156c36f1..0f841f18c363 100644 +index 5a053bef18e7..3a5e258c243a 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -150,6 +150,11 @@ static struct hrtimer_cpu_base migration_cpu_base = { diff --git a/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch b/debian/patches-rt/0296-posix-timers-Unlock-expiry-lock-in-the-early-return.patch index 8003370ff..96ecc00c4 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/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 +Subject: [PATCH 296/353] posix-timers: Unlock expiry lock in the early return +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b7d81f87d3b22d47b2b96b9e2f3fa22a11e2097 [ 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 964a19590..8aa3c0cec 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/351] =?UTF-8?q?sched:=20migrate=5Fdis/enable:=20Use=20?= +Subject: [PATCH 297/353] =?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=302ef1699867ae23b2531b0f689517b615c25866 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=549bef79c0b761af907077e08fce603708add078 [ 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 ea275b4b3d0a..b5675306ebed 100644 +index dded9ca916eb..223a5a23834a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7367,7 +7367,10 @@ void migrate_enable(void) +@@ -7369,7 +7369,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 267ecd233..7a340c4c4 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/351] sched: __set_cpus_allowed_ptr: Check cpus_mask, not +Subject: [PATCH 298/353] 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=db7cc169d8ef63ea459c7fde68b248a2789e895a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2fdafc9b89be266c63d7fd4705da844536edd34e [ Upstream commit e5606fb7b042db634ed62b4dd733d62e050e468f ] @@ -21,10 +21,10 @@ 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 b5675306ebed..6fd462e18949 100644 +index 223a5a23834a..046c9a3e415a 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, +@@ -1160,7 +1160,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, goto out; } 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 5f98d4e46..58e96b3de 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/351] sched: Remove dead __migrate_disabled() check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=163461f3eff2e283b92faac40ea6c6be1830bc28 +Subject: [PATCH 299/353] sched: Remove dead __migrate_disabled() check +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=710b15b6355be87bbcd9002c795f5a839c522f7e [ Upstream commit 14d9272d534ea91262e15db99443fc5995c7c016 ] @@ -16,10 +16,10 @@ 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 6fd462e18949..473413b83ffc 100644 +index 046c9a3e415a..56c1aa35ed42 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, +@@ -1185,13 +1185,6 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, if (cpumask_test_cpu(task_cpu(p), new_mask) || __migrate_disabled(p)) goto out; 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 f86cc9e80..0646d7063 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/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 +Subject: [PATCH 300/353] sched: migrate disable: Protect cpus_ptr with lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88139859a77ae38bb0ca8c7822443ed42e90dac4 [ 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 473413b83ffc..07a46769ca3d 100644 +index 56c1aa35ed42..0f2c20111c09 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7245,9 +7245,8 @@ migrate_disable_update_cpus_allowed(struct task_struct *p) +@@ -7247,9 +7247,8 @@ migrate_disable_update_cpus_allowed(struct task_struct *p) struct rq *rq; struct rq_flags rf; @@ -30,7 +30,7 @@ index 473413b83ffc..07a46769ca3d 100644 update_nr_migratory(p, -1); p->nr_cpus_allowed = 1; task_rq_unlock(rq, p, &rf); -@@ -7259,9 +7258,8 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) +@@ -7261,9 +7260,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 703a448db..e5a9d8716 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/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 +Subject: [PATCH 301/353] lib/smp_processor_id: Don't use cpumask_equal() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=947f7bfe81c63356557e081dbc27fee6a0f15f01 [ 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 df7d5f0e9..fec9a198c 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/351] futex: Make the futex_hash_bucket spinlock_t again +Subject: [PATCH 302/353] 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=e51d697ea4fe1c6c06a7033c81af8d3d482dfbfe +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=800a6585730190515bc44d3adec4c0e80571a558 [ 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 1f210b1ba..984aa9618 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/351] locking/rtmutex: Clean ->pi_blocked_on in the error +Subject: [PATCH 303/353] 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=20cb8227d2f37fdf374e404baf9cfa92b0c72598 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e8f3a7ed1e7717fe6913aa00d35da6a925806171 [ 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 75f1fc148..c312a28cf 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/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 +Subject: [PATCH 304/353] lib/ubsan: Don't seralize UBSAN report +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=daa87139e394441201f8aeb6f7cb2b940de13bb1 [ 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 36bf1a733..30d167dce 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/351] kmemleak: Change the lock of kmemleak_object to +Subject: [PATCH 305/353] 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=3f32f13e58f0ece8a428a1a4eb5536bac51044c1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6482964341422379e6e6b9aabd988a278d0da042 [ Upstream commit 217847f57119b5fdd377bfa3d344613ddb98d9fc ] diff --git a/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch b/debian/patches-rt/0306-sched-migrate_enable-Use-select_fallback_rq.patch index 06db45615..282e34443 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/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 +Subject: [PATCH 306/353] sched: migrate_enable: Use select_fallback_rq() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d94bbb3aa664ab54a298812ae06693e0e37a104 [ 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 07a46769ca3d..57e8dee4e7ce 100644 +index 0f2c20111c09..8cfb469b23a6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7330,6 +7330,7 @@ void migrate_enable(void) +@@ -7332,6 +7332,7 @@ void migrate_enable(void) if (p->migrate_disable_update) { struct rq *rq; struct rq_flags rf; @@ -29,7 +29,7 @@ index 07a46769ca3d..57e8dee4e7ce 100644 rq = task_rq_lock(p, &rf); update_rq_clock(rq); -@@ -7339,21 +7340,15 @@ void migrate_enable(void) +@@ -7341,21 +7342,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 29c41aec9..c690fd903 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/351] sched: Lazy migrate_disable processing -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ef6c7cbc5053f8db6f2493ab56a9e0f2a9d4b523 +Subject: [PATCH 307/353] sched: Lazy migrate_disable processing +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59d98c89b8a1579f4a88ad4c440c28f73211b951 [ Upstream commit 425c5b38779a860062aa62219dc920d374b13c17 ] @@ -44,10 +44,10 @@ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> 7 files changed, 129 insertions(+), 182 deletions(-) diff --git a/include/linux/cpu.h b/include/linux/cpu.h -index a3c246214d28..81ce109caec3 100644 +index bddccdcd00ba..7f41ac9cf2ad 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h -@@ -122,8 +122,6 @@ extern void cpu_hotplug_disable(void); +@@ -124,8 +124,6 @@ extern void cpu_hotplug_disable(void); extern void cpu_hotplug_enable(void); void clear_tasks_mm_cpumask(int cpu); int cpu_down(unsigned int cpu); @@ -56,7 +56,7 @@ index a3c246214d28..81ce109caec3 100644 #else /* CONFIG_HOTPLUG_CPU */ -@@ -135,8 +133,6 @@ static inline int cpus_read_trylock(void) { return true; } +@@ -137,8 +135,6 @@ static inline int cpus_read_trylock(void) { return true; } static inline void lockdep_assert_cpus_held(void) { } static inline void cpu_hotplug_disable(void) { } static inline void cpu_hotplug_enable(void) { } @@ -278,10 +278,10 @@ 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 57e8dee4e7ce..a2c0f199f362 100644 +index 8cfb469b23a6..451d07a772bc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1065,7 +1065,8 @@ static int migration_cpu_stop(void *data) +@@ -1068,7 +1068,8 @@ static int migration_cpu_stop(void *data) void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask) { cpumask_copy(&p->cpus_mask, new_mask); @@ -291,7 +291,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 } #if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) -@@ -1076,8 +1077,7 @@ int __migrate_disabled(struct task_struct *p) +@@ -1079,8 +1080,7 @@ int __migrate_disabled(struct task_struct *p) EXPORT_SYMBOL_GPL(__migrate_disabled); #endif @@ -301,7 +301,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 { struct rq *rq = task_rq(p); bool queued, running; -@@ -1106,20 +1106,6 @@ static void __do_set_cpus_allowed_tail(struct task_struct *p, +@@ -1109,20 +1109,6 @@ static void __do_set_cpus_allowed_tail(struct task_struct *p, set_curr_task(rq, p); } @@ -322,7 +322,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 /* * Change a given task's CPU affinity. Migrate the thread to a * proper CPU and schedule it away if the CPU it's executing on -@@ -1179,7 +1165,8 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -1182,7 +1168,8 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, } /* Can the task run on the task's current CPU? If so, we're done */ @@ -332,7 +332,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 goto out; if (task_running(rq, p) || p->state == TASK_WAKING) { -@@ -3459,6 +3446,8 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) +@@ -3461,6 +3448,8 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) BUG(); } @@ -341,7 +341,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 /* * __schedule() is the main scheduler function. * -@@ -3529,6 +3518,9 @@ static void __sched notrace __schedule(bool preempt) +@@ -3531,6 +3520,9 @@ static void __sched notrace __schedule(bool preempt) rq_lock(rq, &rf); smp_mb__after_spinlock(); @@ -351,7 +351,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 /* Promote REQ to ACT */ rq->clock_update_flags <<= 1; update_rq_clock(rq); -@@ -5778,6 +5770,8 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) +@@ -5780,6 +5772,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 57e8dee4e7ce..a2c0f199f362 100644 /* * Rules for changing task_struct::cpus_mask are holding * both pi_lock and rq->lock, such that holding either -@@ -7242,14 +7236,9 @@ update_nr_migratory(struct task_struct *p, long delta) +@@ -7244,14 +7238,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 57e8dee4e7ce..a2c0f199f362 100644 } static inline void -@@ -7267,54 +7256,35 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) +@@ -7269,54 +7258,35 @@ migrate_enable_update_cpus_allowed(struct task_struct *p) void migrate_disable(void) { @@ -446,7 +446,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 WARN_ON_ONCE(p->migrate_disable <= 0); if (p->migrate_disable > 1) { -@@ -7324,67 +7294,69 @@ void migrate_enable(void) +@@ -7326,67 +7296,69 @@ void migrate_enable(void) preempt_disable(); @@ -556,7 +556,7 @@ index 57e8dee4e7ce..a2c0f199f362 100644 #endif barrier(); } -@@ -7395,20 +7367,14 @@ void migrate_enable(void) +@@ -7397,20 +7369,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 6bb640a4b..204a99d23 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/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 +Subject: [PATCH 308/353] sched: migrate_enable: Use stop_one_cpu_nowait() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=387f0d9e4b69683d227989d0175b72272f6bf065 [ Upstream commit 6b39a1fa8c53cae08dc03afdae193b7d3a78a173 ] @@ -34,10 +34,10 @@ 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 a2c0f199f362..eeb53ea1483c 100644 +index 451d07a772bc..04690e9c9232 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, +@@ -993,6 +993,7 @@ static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf, struct migration_arg { struct task_struct *task; int dest_cpu; @@ -45,7 +45,7 @@ index a2c0f199f362..eeb53ea1483c 100644 }; /* -@@ -1025,6 +1026,11 @@ static int migration_cpu_stop(void *data) +@@ -1028,6 +1029,11 @@ static int migration_cpu_stop(void *data) struct task_struct *p = arg->task; struct rq *rq = this_rq(); struct rq_flags rf; @@ -57,7 +57,7 @@ index a2c0f199f362..eeb53ea1483c 100644 /* * The original target CPU might have gone down and we might -@@ -1047,9 +1053,9 @@ static int migration_cpu_stop(void *data) +@@ -1050,9 +1056,9 @@ static int migration_cpu_stop(void *data) */ if (task_rq(p) == rq) { if (task_on_rq_queued(p)) @@ -69,7 +69,7 @@ index a2c0f199f362..eeb53ea1483c 100644 } rq_unlock(rq, &rf); raw_spin_unlock(&p->pi_lock); -@@ -7317,6 +7323,7 @@ void migrate_enable(void) +@@ -7319,6 +7325,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 a2c0f199f362..eeb53ea1483c 100644 struct rq_flags rf; rq = task_rq_lock(p, &rf); -@@ -7324,15 +7331,11 @@ void migrate_enable(void) +@@ -7326,15 +7333,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 14509bfa5..122af5df6 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/351] Revert "ARM: Initialize split page table locks for +Subject: [PATCH 309/353] 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=feaae0c27de4b8a4a10bd422d11b702fadd4c801 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=333b99ef79b4ce8a39f45d8461aa9edb89c6d734 [ 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 c8b3f4f22..8a86f3f7c 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/351] locking: Make spinlock_t and rwlock_t a RCU section +Subject: [PATCH 310/353] 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=307384e8ca0050ff69a708ea239e7fd25688d1a2 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdc83a41301027156712fae4f2951e5588f78bdf [ 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 69d771ead..10a008a9a 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/351] sched/core: migrate_enable() must access +Subject: [PATCH 311/353] 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=a046dca6cadf46d37e6a42f5f5f950191bbec3cc +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7c9970fc1ed3612f2a21ec3b9926c21f1779a59b [ 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 eeb53ea1483c..577bec75ffd8 100644 +index 04690e9c9232..10d21a90386d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7309,9 +7309,11 @@ void migrate_enable(void) +@@ -7311,9 +7311,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 a690ce31b..6b01003c9 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/351] lib/smp_processor_id: Adjust +Subject: [PATCH 312/353] lib/smp_processor_id: Adjust check_preemption_disabled() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e1705477262342382e7423129edb2e570567b53 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=11ac72da64a156a3194b5d2e4312405109aeb6b9 [ 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 667c9ca00..3a8e920da 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/351] sched: migrate_enable: Busy loop until the migration +Subject: [PATCH 313/353] 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=7212bfd2c5351861cd36c82fe6cbdd37c202a2e6 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9e8887bd6d168632ae0552d221b911ef94efe4e [ 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 577bec75ffd8..89133dff3161 100644 +index 10d21a90386d..5f9bf8fe8a0e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7324,7 +7324,7 @@ void migrate_enable(void) +@@ -7326,7 +7326,7 @@ void migrate_enable(void) WARN_ON(smp_processor_id() != cpu); if (!is_cpu_allowed(p, cpu)) { @@ -39,7 +39,7 @@ index 577bec75ffd8..89133dff3161 100644 struct cpu_stop_work work; struct rq_flags rf; -@@ -7337,7 +7337,10 @@ void migrate_enable(void) +@@ -7339,7 +7339,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 188c99523..501d3cc3d 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/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 +Subject: [PATCH 314/353] userfaultfd: Use a seqlock instead of seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=62529001d35482cdb3d7494a9a6e375822a1cfe7 [ 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 28352517c..e49addd00 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/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 +Subject: [PATCH 315/353] sched: migrate_enable: Use per-cpu cpu_stop_work +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f7653dc3d53c903cb32c6ecceb3a4bc6904a0718 [ 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 89133dff3161..96edb14cb099 100644 +index 5f9bf8fe8a0e..f60ae431ad64 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7286,6 +7286,9 @@ static void migrate_disabled_sched(struct task_struct *p) +@@ -7288,6 +7288,9 @@ static void migrate_disabled_sched(struct task_struct *p) p->migrate_disable_scheduled = 1; } @@ -42,7 +42,7 @@ index 89133dff3161..96edb14cb099 100644 void migrate_enable(void) { struct task_struct *p = current; -@@ -7324,23 +7327,26 @@ void migrate_enable(void) +@@ -7326,23 +7329,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 4ab22e205..6349b6636 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/351] sched: migrate_enable: Remove __schedule() call -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5e75bce9b51a26fc1280cff002de35b13ba3cb50 +Subject: [PATCH 316/353] sched: migrate_enable: Remove __schedule() call +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d6dd47e53c570dc411567256cb955a8a32f4aa1f [ 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 96edb14cb099..64e3371c8955 100644 +index f60ae431ad64..b58b1fbbccac 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7346,7 +7346,6 @@ void migrate_enable(void) +@@ -7348,7 +7348,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 ff4a95c31..2e7320e2f 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/351] mm/memcontrol: Move misplaced +Subject: [PATCH 317/353] mm/memcontrol: Move misplaced local_unlock_irqrestore() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e93c1cdf2659fdb41c0c23a64d4560bf76bc4b3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=337b970c8eb4f7da03deebced8e49ab76004e4da [ Upstream commit 071a1d6a6e14d0dec240a8c67b425140d7f92f6a ] @@ -21,10 +21,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 239fec6eac9f..d5bda1449fe3 100644 +index c6a58923da63..692cc519232d 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -6541,10 +6541,10 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -6552,10 +6552,10 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) mem_cgroup_charge_statistics(memcg, page, PageTransHuge(page), -nr_entries); memcg_check_events(memcg, page); 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 282b0db95..cdce399a7 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/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 +Subject: [PATCH 318/353] locallock: Include header for the `current' macro +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2be8327abf6a9192450e2c488619116d91fb461e [ 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 0bb95f485..9626481b5 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/351] drm/vmwgfx: Drop preempt_disable() in +Subject: [PATCH 319/353] 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=795750d817cf7962fcfd63ea8437d5b0f21a30a3 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f107a5eebc442d3abe193fb416437b74dc6493f [ 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 5cfc9994b..5a08a057d 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/351] tracing: make preempt_lazy and migrate_disable +Subject: [PATCH 320/353] 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=81699e3e656db0e83047e22cde247331924cd87f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=411f224b337ddcb3362f2a0a27406ecc465d3ccf [ Upstream commit dd430bf5ecb40f9a89679c85868826475d71de54 ] 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 3af21c13f..fca157403 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/351] lib/ubsan: Remove flags parameter from calls to +Subject: [PATCH 321/353] 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=c2d2b43f417cbedc676f8b28e93683716416a719 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8fd16956cec48aff41ad7ce6a790c37b197ec25d 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 b2e7f8fe1..e2522e1ae 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/351] irq_work: Fix checking of IRQ_WORK_LAZY flag set on +Subject: [PATCH 322/353] 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=c3cf00ce224f7ecd568bd3f766fb8ff671136d88 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e82501e7ca71884e71ec4ab9179d666a0644998f 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 3dd7cb745..635c55a2b 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/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 +Subject: [PATCH 323/353] tasklet: Address a race resulting in double-enqueue +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0a3cb2e7727bffa1430c86ce1f664f817dcb6d7 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 835a8530f..966832270 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/351] hrtimer: fix logic for when grabbing +Subject: [PATCH 324/353] 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=36b0eadf58daa2135f9139436ccfd778db315f0f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fc7f9dff54b6992d49ccd4c8d5f094fd89c17a46 Commit @@ -32,7 +32,7 @@ Signed-off-by: Tom Zanussi <zanussi@kernel.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 0f841f18c363..a84673149881 100644 +index 3a5e258c243a..a522cebdaa21 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -971,7 +971,7 @@ void hrtimer_grab_expiry_lock(const struct hrtimer *timer) diff --git a/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch b/debian/patches-rt/0325-fs-dcache-Include-swait.h-header.patch index a8d8db93b..e070467b8 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/351] fs/dcache: Include swait.h header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=939289738f60a2ab3070c16e629d31642b0d5765 +Subject: [PATCH 325/353] fs/dcache: Include swait.h header +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38fbcf54fd0c6eeca7f557258d493ac25f681d82 [ 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 ebf74571a..2c437212d 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/351] mm: slub: Always flush the delayed empty slubs in +Subject: [PATCH 326/353] 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=029a41eeabb734eb30dcd02bdb9ed92e79f6db2f +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=762c50342dbbd1fe1d0cf52154b5bb624d3ec100 [ Upstream commit 23a2c31b19e99beaf5107071b0f32a596202cdae ] 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 099504d3a..f52f642b9 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/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 +Subject: [PATCH 327/353] tasklet: Fix UP case for tasklet CHAINED state +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=05e464103f116fb2db39ac17867c8ae915294c7e 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 f8bfa30d6..9d19a5baf 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/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 +Subject: [PATCH 328/353] signal: Prevent double-free of user struct +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=499655d2819a34d02d0faa80d26ddea5942f1555 [ 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 90e6ed5cf..1e0ed7d23 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/351] Bluetooth: Acquire sk_lock.slock without disabling +Subject: [PATCH 329/353] Bluetooth: Acquire sk_lock.slock without disabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a1175c05ff74dd57894ec2ef7ca2e1cad31042a +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3f37c8158aacc1c30146e25450c881ae3137dc8 [ 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 5450494b9..eec4849f6 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/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 +Subject: [PATCH 330/353] net: phy: fixed_phy: Remove unused seqcount +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e2e711ce52301c824ddd19c85e0b5013ae01c14b [ 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 db936e83b..669a351d8 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/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 +Subject: [PATCH 331/353] net: xfrm: fix compress vs decompress serialization +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=62aa3a3326fc29437f928d20068de2ba77e73f71 A crash was seen in xfrm when running ltp's 'tcp4_ipsec06' stresser on v4.x based RT kernels. diff --git a/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch b/debian/patches-rt/0332-mm-memcontrol-Disable-preemption-in-__mod_memcg_lruv.patch index 6594106cf..0485985b4 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/351] mm/memcontrol: Disable preemption in +Subject: [PATCH 332/353] 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=c8d747a7c7dd6b59f68b8466893b0c18d1fa2074 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61caf01d44772a1cd8c94fb56dd8464151213ed3 [ 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 bea8ce154..16ae8d20e 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/351] ptrace: fix ptrace_unfreeze_traced() race with +Subject: [PATCH 333/353] 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=bde585ceef8712a993226213ef25ea54bfde9b57 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9cece5fee9c4a4f7f1289881b122c6bf6a29858 [ 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 defd91d5d..d20dc5729 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/351] mm: slub: Don't resize the location tracking cache on +Subject: [PATCH 334/353] 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=7139a83bac66eb7a530553197e6a2fcc06ed74a7 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=96730234008f592994666a3890e8e46077b84d20 The location tracking cache has a size of a page and is resized if its current size is too small. 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 670d73338..8abcfab76 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/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 +Subject: [PATCH 335/353] locking/rwsem_rt: Add __down_read_interruptible() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b699ea2423faf81990ed0225a37bc40e018a7707 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 30df1882f..82f966017 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/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 +Subject: [PATCH 336/353] locking/rwsem-rt: Remove might_sleep() in __up_read() +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a217cdee8b767aba2258fbd0436fa7cfe5bc662d 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 b2b2ef69d..fb79e0382 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/351] fscache: fix initialisation of cookie hash table raw +Subject: [PATCH 337/353] 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=6b8c3c6e6c2ee7f63ad0673d179d48439e00a4e1 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=74b35db93d939040d86cb5aeab29939fb54e441f 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 434b61807..3a6a9cb50 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/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 +Subject: [PATCH 338/353] rt: PREEMPT_RT safety net for backported patches +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d84b6b515624d3bfc69787705e8b016ab22ded76 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 8fc335457..c1dc24eee 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/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 +Subject: [PATCH 339/353] net: Add missing xmit_lock_owner hunks. +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=28fb4ed75c1321223af40de2e3ed096553ad15ea The patch net: move xmit_recursion to per-task variable on -RT @@ -17,10 +17,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index c4713217b20e..bd73117e2636 100644 +index 086cd650f555..25557901d020 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -3885,17 +3885,17 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) +@@ -3887,17 +3887,17 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) #ifdef CONFIG_PREEMPT_RT_FULL static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu) { @@ -41,7 +41,7 @@ index c4713217b20e..bd73117e2636 100644 return true; return false; } -@@ -3904,17 +3904,19 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) +@@ -3906,17 +3906,19 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu) { @@ -64,7 +64,7 @@ index c4713217b20e..bd73117e2636 100644 return true; return false; } -@@ -3923,8 +3925,7 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) +@@ -3925,8 +3927,7 @@ static inline bool netdev_queue_has_owner(struct netdev_queue *txq) static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); @@ -74,7 +74,7 @@ index c4713217b20e..bd73117e2636 100644 } static inline bool __netif_tx_acquire(struct netdev_queue *txq) -@@ -3941,8 +3942,7 @@ static inline void __netif_tx_release(struct netdev_queue *txq) +@@ -3943,8 +3944,7 @@ static inline void __netif_tx_release(struct netdev_queue *txq) static inline void __netif_tx_lock_bh(struct netdev_queue *txq) { spin_lock_bh(&txq->_xmit_lock); @@ -84,7 +84,7 @@ index c4713217b20e..bd73117e2636 100644 } static inline bool __netif_tx_trylock(struct netdev_queue *txq) -@@ -3950,23 +3950,20 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq) +@@ -3952,23 +3952,20 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq) bool ok = spin_trylock(&txq->_xmit_lock); if (likely(ok)) { diff --git a/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch b/debian/patches-rt/0340-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch index c04e34617..79cb1f568 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/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 +Subject: [PATCH 340/353] genirq: Add lost hunk to irq_forced_thread_fn(). +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34d634d46859857fa7d866a0b8e4f98e0a5b2a1a The irq_settings_no_softirq_call() related handling got lost in process, here are the missing bits. diff --git a/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch b/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch index 1b9e30364..defa3aff2 100644 --- a/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch +++ b/debian/patches-rt/0341-random-Bring-back-the-local_locks.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:38 +0200 -Subject: [PATCH 341/351] random: Bring back the local_locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=269eda25b7a58b0397934d72f6fef03f0301d696 +Subject: [PATCH 341/353] random: Bring back the local_locks +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=009ef0e1bda09fafe73b7f280d0c5180cc9d519a As part of the backports the random code lost its local_lock_t type and the whole operation became a local_irq_{disable|enable}() simply because diff --git a/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch b/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch index 553e72e58..1f4b60d12 100644 --- a/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch +++ b/debian/patches-rt/0342-local_lock-Provide-INIT_LOCAL_LOCK.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2022 15:55:39 +0200 -Subject: [PATCH 342/351] local_lock: Provide INIT_LOCAL_LOCK(). -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c9ff512c96a416b8c82964b8f03b81d1cf76c80 +Subject: [PATCH 342/353] local_lock: Provide INIT_LOCAL_LOCK(). +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41193143552afd68eb43331c8f06b53b09ac8cce The original code was using INIT_LOCAL_LOCK() and I tried to sneak around it and forgot that this code also needs to compile on !RT diff --git a/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch b/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch index b2cf769f2..ffd2e466c 100644 --- a/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch +++ b/debian/patches-rt/0343-Revert-workqueue-Use-local-irq-lock-instead-of-irq-d.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2022 16:15:56 +0200 -Subject: [PATCH 343/351] Revert "workqueue: Use local irq lock instead of irq +Subject: [PATCH 343/353] 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 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4dce50b8def29833be6b384dd3e11ebd56338ac6 This reverts the PREEMPT_RT related changes to workqueue. It reverts the usage of local_locks() and cpu_chill(). diff --git a/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch b/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch index a9e4b14ab..4aba8c8e2 100644 --- a/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch +++ b/debian/patches-rt/0344-timers-Keep-interrupts-disabled-for-TIMER_IRQSAFE-ti.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:42 +0200 -Subject: [PATCH 344/351] timers: Keep interrupts disabled for TIMER_IRQSAFE +Subject: [PATCH 344/353] 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 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80f379f63b021517015f4db3a49c9d924e556211 Keep interrupts disabled across callback invocation for the TIMER_IRQSAFE as expected. diff --git a/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch b/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch index c7a563449..fbd19c591 100644 --- a/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +++ b/debian/patches-rt/0345-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 24 Oct 2022 10:17:22 +0200 -Subject: [PATCH 345/351] timers: Don't block on ->expiry_lock for +Subject: [PATCH 345/353] 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 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e0550b85976f3d13ebffc2c98b3601d28c24b651 Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 diff --git a/debian/patches-rt/0346-rcu-Update-rcuwait.patch b/debian/patches-rt/0346-rcu-Update-rcuwait.patch index c54c65f9c..b7ba81426 100644 --- a/debian/patches-rt/0346-rcu-Update-rcuwait.patch +++ b/debian/patches-rt/0346-rcu-Update-rcuwait.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> Date: Mon, 24 Oct 2022 10:58:29 +0200 -Subject: [PATCH 346/351] rcu: Update rcuwait -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f1be9e81d653b56aeefbff1883d1f762e8b594e +Subject: [PATCH 346/353] rcu: Update rcuwait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5d12a10175ae6b219849fe6128942ea23e8a092f This is an all in one commit backporting updates for rcuwait: - 03f4b48edae7 ("rcuwait: Annotate task_struct with __rcu") @@ -109,10 +109,10 @@ index 90bfa3279a01..4fe9ecd56aac 100644 #endif /* _LINUX_RCUWAIT_H_ */ diff --git a/kernel/exit.c b/kernel/exit.c -index 2a414fc71b87..cf68896a94fa 100644 +index 51b36d58c872..94a51c53985b 100644 --- a/kernel/exit.c +++ b/kernel/exit.c -@@ -291,8 +291,9 @@ struct task_struct *task_rcu_dereference(struct task_struct **ptask) +@@ -338,8 +338,9 @@ struct task_struct *task_rcu_dereference(struct task_struct **ptask) return task; } @@ -123,7 +123,7 @@ index 2a414fc71b87..cf68896a94fa 100644 struct task_struct *task; rcu_read_lock(); -@@ -316,8 +317,10 @@ void rcuwait_wake_up(struct rcuwait *w) +@@ -363,8 +364,10 @@ void rcuwait_wake_up(struct rcuwait *w) */ task = rcu_dereference(w->task); if (task) diff --git a/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch b/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch index c1a587ec4..2c5cb6b24 100644 --- a/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch +++ b/debian/patches-rt/0347-workqueue-Use-rcuwait-for-wq_manager_wait.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 19 Aug 2022 11:24:45 +0200 -Subject: [PATCH 347/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 +Subject: [PATCH 347/353] workqueue: Use rcuwait for wq_manager_wait +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a06e9a5e2f5fae48471a7a0976043f7a19f52f1 Upstream commit d8bb65ab70f702531aaaa11d9710f9450078e295 diff --git a/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch b/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch index 625a2434f..bb5b3f36e 100644 --- a/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch +++ b/debian/patches-rt/0348-timers-Prepare-support-for-PREEMPT_RT.patch @@ -1,7 +1,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de> Date: Mon, 31 Oct 2022 16:50:04 +0100 -Subject: [PATCH 348/351] timers: Prepare support for PREEMPT_RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c0246ab42f10c23cc1af06c6b651507b612eb8f +Subject: [PATCH 348/353] timers: Prepare support for PREEMPT_RT +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1845918ac70d981c3ce17493e214a9caef652583 Upstream commit 030dcdd197d77374879bb5603d091eee7d8aba80 diff --git a/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch b/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch index d01940b4c..61954928f 100644 --- a/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch +++ b/debian/patches-rt/0349-timers-Move-clearing-of-base-timer_running-under-bas.patch @@ -1,8 +1,8 @@ From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 31 Oct 2022 16:50:05 +0100 -Subject: [PATCH 349/351] timers: Move clearing of base::timer_running under +Subject: [PATCH 349/353] 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 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b89944e4b8533b3ed192a81bea39a75a50cf9c31 Upstream commit bb7262b295472eb6858b5c49893954794027cd84 diff --git a/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch b/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch index 7bf384e14..d6743715e 100644 --- a/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch +++ b/debian/patches-rt/0350-timers-Don-t-block-on-expiry_lock-for-TIMER_IRQSAFE-.patch @@ -1,8 +1,8 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 31 Oct 2022 16:50:06 +0100 -Subject: [PATCH 350/351] timers: Don't block on ->expiry_lock for +Subject: [PATCH 350/353] 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 +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f48a298501bfb76530a080edb5052081abcad637 Upstream commit c725dafc95f1b37027840aaeaa8b7e4e9cd20516 diff --git a/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch b/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch new file mode 100644 index 000000000..c552ddc91 --- /dev/null +++ b/debian/patches-rt/0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch @@ -0,0 +1,48 @@ +From: Ben Hutchings <ben@decadent.org.uk> +Date: Sat, 10 Dec 2022 00:06:17 +0100 +Subject: [PATCH 351/353] Revert "percpu: include irqflags.h for + raw_local_irq_save()" +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5e46c2fa591455d0c389c83add860375b0bf1db + +This reverts commit 0d796a9e6a93608b4dd84fbd09f01e912ae34bdc. + +After merging stable release 4.19.266 into the -rt branch, an x86 +build will fail with the following error: + + .../include/linux/percpu-defs.h:49:34: error: 'PER_CPU_BASE_SECTION' undeclared here (not in a function); did you mean 'PER_CPU_FIRST_SECTION'? + +This is due to an #include loop: + + <asm/percpu.h> + -> <linux/irqflags.h> + -> <asm/irqflags.h> + -> <asm/nospec-branch.h> + -> <asm/percpu.h> + +which appears after the merge because: + +- The reverted commit added <asm/percpu.h> -> <linux/irqflags.h> +- 4.19.266 added <asm/nospec-branch.h> -> <asm/percpu.h> + +Neither upstream nor any other maintained stable-rt branch has this +include, and my build succeeded without it. Revert it here as well. + +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> +Link: https://lore.kernel.org/r/Y5O/aVw/zHKqmpu7@decadent.org.uk +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + include/asm-generic/percpu.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h +index 942d64c0476e..1817a8415a5e 100644 +--- a/include/asm-generic/percpu.h ++++ b/include/asm-generic/percpu.h +@@ -5,7 +5,6 @@ + #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/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch b/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch new file mode 100644 index 000000000..e5cbdc585 --- /dev/null +++ b/debian/patches-rt/0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch @@ -0,0 +1,68 @@ +From: "Brennan Lamoreaux (VMware)" <brennanlamoreaux@gmail.com> +Date: Tue, 28 Feb 2023 14:49:38 -0800 +Subject: [PATCH 352/353] workqueue: Fix deadlock due to recursive locking of + pool->lock +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=813609bc5c58e47a292c3e8cbe961c494e4670a1 + +Upstream commit d8bb65ab70f7 ("workqueue: Use rcuwait for wq_manager_wait") +replaced the waitqueue with rcuwait in the workqueue code. This change +involved removing the acquisition of pool->lock in put_unbound_pool(), +as it also adds the function wq_manager_inactive() which acquires this same +lock and is called one line later as a parameter to rcu_wait_event(). + +However, the backport of this commit in the PREEMPT_RT patchset +4.19.255-rt114 (patch 347) missed the removal of the acquisition of +pool->lock in put_unbound_pool(). This leads to a deadlock due to +recursive locking of pool->lock, as shown below in lockdep: + +[ 252.083713] WARNING: possible recursive locking detected +[ 252.083718] 4.19.269-3.ph3-rt #1-photon Not tainted +[ 252.083721] -------------------------------------------- +[ 252.083733] kworker/2:0/33 is trying to acquire lock: +[ 252.083747] 000000000b7b1ceb (&pool->lock/1){....}, at: +put_unbound_pool+0x10d/0x260 + +[ 252.083857] + but task is already holding lock: +[ 252.083860] 000000000b7b1ceb (&pool->lock/1){....}, at: +put_unbound_pool+0xbd/0x260 + +[ 252.083876] + other info that might help us debug this: +[ 252.083897] Possible unsafe locking scenario: + +[ 252.083900] CPU0 +[ 252.083903] ---- +[ 252.083904] lock(&pool->lock/1); +[ 252.083911] lock(&pool->lock/1); +[ 252.083919] + *** DEADLOCK *** + +[ 252.083921] May be due to missing lock nesting notation + +Fix this deadlock by removing the pool->lock acquisition in +put_unbound_pool(). + +Signed-off-by: Brennan Lamoreaux (VMware) <brennanlamoreaux@gmail.com> +Cc: Daniel Wagner <wagi@monom.org> +Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Cc: Tejun Heo <tj@kernel.org> +Reviewed-by: Srivatsa S. Bhat (VMware) <srivatsa@csail.mit.edu> +Link: https://lore.kernel.org/r/20230228224938.88035-1-brennanlamoreaux@gmail.com +Signed-off-by: Daniel Wagner <wagi@monom.org> +--- + kernel/workqueue.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index a9f3cc02bdc1..55ebdd56a5de 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3394,7 +3394,6 @@ static void put_unbound_pool(struct worker_pool *pool) + * Because of how wq_manager_inactive() works, we will hold the + * spinlock after a successful wait. + */ +- raw_spin_lock_irq(&pool->lock); + rcuwait_wait_event(&manager_wait, wq_manager_inactive(pool), + TASK_UNINTERRUPTIBLE); + pool->flags |= POOL_MANAGER_ACTIVE; diff --git a/debian/patches-rt/0351-Linux-4.19.265-rt117-REBASE.patch b/debian/patches-rt/0353-Linux-4.19.280-rt123-REBASE.patch index 794dd1786..e286c2809 100644 --- a/debian/patches-rt/0351-Linux-4.19.265-rt117-REBASE.patch +++ b/debian/patches-rt/0353-Linux-4.19.280-rt123-REBASE.patch @@ -1,7 +1,7 @@ From: Daniel Wagner <wagi@monom.org> -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 +Date: Mon, 24 Apr 2023 07:30:59 +0200 +Subject: [PATCH 353/353] Linux 4.19.280-rt123 REBASE +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9ee5c3fff7f936e300ca53d8ebe8872429e5eb6 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..9788245dd428 100644 +index 1199ebade17b..2e5c2a548290 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt16 -+-rt117 ++-rt123 diff --git a/debian/patches-rt/netpoll-fix-netif_local_xmit_active-for-4.19-rt.patch b/debian/patches-rt/netpoll-fix-netif_local_xmit_active-for-4.19-rt.patch new file mode 100644 index 000000000..2502c2926 --- /dev/null +++ b/debian/patches-rt/netpoll-fix-netif_local_xmit_active-for-4.19-rt.patch @@ -0,0 +1,26 @@ +From: Ben Hutchings <benh@debian.org> +Date: Wed, 26 Apr 2023 22:24:48 +0200 +Subject: netpoll: Fix netif_local_xmit_active() for 4.19-rt + +Commit be71c3c75a488ca1594a98df0754094179ec8146 "net: don't let +netpoll invoke NAPI if in xmit context", which was commit +275b471e3d2daf1472ae8fa70dc1b50c9e0b9e75 upstream, added a comparison +of net_device::xmit_lock_owner. In 4.19-rt (but not newer RT +branches) this field holds a task_struct pointer, not a CPU ID. +Change the comparison accordingly. + +--- +--- a/net/core/netpoll.c ++++ b/net/core/netpoll.c +@@ -143,7 +143,11 @@ static int netif_local_xmit_active(struc + for (i = 0; i < dev->num_tx_queues; i++) { + struct netdev_queue *txq = netdev_get_tx_queue(dev, i); + ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (READ_ONCE(txq->xmit_lock_owner) == current) ++#else + if (READ_ONCE(txq->xmit_lock_owner) == smp_processor_id()) ++#endif + return 1; + } + diff --git a/debian/patches-rt/series b/debian/patches-rt/series index 0e5bb8615..b5d79a286 100644 --- a/debian/patches-rt/series +++ b/debian/patches-rt/series @@ -14,6 +14,7 @@ 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 @@ -347,4 +348,7 @@ 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 +0351-Revert-percpu-include-irqflags.h-for-raw_local_irq_s.patch +0352-workqueue-Fix-deadlock-due-to-recursive-locking-of-p.patch +0353-Linux-4.19.280-rt123-REBASE.patch +netpoll-fix-netif_local_xmit_active-for-4.19-rt.patch |