diff --git a/debian/changelog b/debian/changelog index 360e1a3f3..c68750fe2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -830,6 +830,7 @@ linux (4.19.92-1) UNRELEASED; urgency=medium * Drop 0028-RDMA-hns-Bugfix-for-the-scene-without-receiver-queue.patch * [rt] Refresh 0199-net-move-xmit_recursion-to-per-task-variable-on-RT.patch (Context changes in 4.19.88) + * [rt] Update to 4.19.90-rt35 -- Salvatore Bonaccorso Sat, 14 Dec 2019 22:00:16 +0100 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 26e1ff627..d3198b053 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,8 @@ +From e8333eb8d7a441a6274831115543689d82cdeeb2 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:18 +0200 -Subject: [PATCH 001/290] ARM: at91: add TCB registers definitions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b15d99032dfca622e695f10a9934c16fa8b05a0 +Subject: [PATCH 001/291] ARM: at91: add TCB registers definitions +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add registers and bits definitions for the timer counter blocks found on Atmel ARM SoCs. @@ -204,3 +205,6 @@ index 000000000000..657e234b1483 +}; + +#endif /* __SOC_ATMEL_TCB_H */ +-- +2.24.0 + 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 be9ffe1a9..9c671ab7f 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,9 @@ +From 3282d066d1ad7d2dc0db6d17a4dc37e8e64137ed Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:19 +0200 -Subject: [PATCH 002/290] clocksource/drivers: Add a new driver for the Atmel +Subject: [PATCH 002/291] 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=1cc14d070ff9808e86cd76edc497abd71537b237 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add a driver for the Atmel Timer Counter Blocks. This driver provides a clocksource and two clockevent devices. @@ -479,3 +480,6 @@ index 000000000000..21fbe430f91b + bits); +} +TIMER_OF_DECLARE(atmel_tcb_clksrc, "atmel,tcb-timer", tcb_clksrc_init); +-- +2.24.0 + 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 8a6b74f3c..2adb61ceb 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,9 @@ +From 058ed7cb47d8435f29855545f477c74bed325167 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:20 +0200 -Subject: [PATCH 003/290] clocksource/drivers: timer-atmel-tcb: add clockevent +Subject: [PATCH 003/291] 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=10269a72d7656134bd29f2ef8a4cbd4d166ac825 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add an other clockevent device that uses a separate TCB channel when available. @@ -265,3 +266,6 @@ index 21fbe430f91b..63ce3b69338a 100644 } } +-- +2.24.0 + 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 bc799db50..f4edfcc45 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,8 @@ +From b6725354b63d71ad4f563d311bd85ffc8722a794 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:21 +0200 -Subject: [PATCH 004/290] clocksource/drivers: atmel-pit: make option silent -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7573710162f30e8c45e60a62ffd20cf4027360bf +Subject: [PATCH 004/291] clocksource/drivers: atmel-pit: make option silent +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz To conform with the other option, make the ATMEL_PIT option silent so it can be selected from the platform @@ -30,3 +31,6 @@ index 0ab22e7037f4..34b07047b91f 100644 config ATMEL_ST bool "Atmel ST timer support" if COMPILE_TEST +-- +2.24.0 + 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 34bb2a577..3967032d0 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,8 @@ +From b8ea7caf670921eb26dece3525a54fc85932e5a1 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:22 +0200 -Subject: [PATCH 005/290] ARM: at91: Implement clocksource selection -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1c682aaa18596b92057ac104266f0d0fefa05ef0 +Subject: [PATCH 005/291] ARM: at91: Implement clocksource selection +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Allow selecting and unselecting the PIT clocksource driver so it doesn't have to be compile when unused. @@ -49,3 +50,6 @@ index 903f23c309df..fa493a86e2bb 100644 config HAVE_AT91_UTMI bool +-- +2.24.0 + 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 c2bffc70c..9d52ee39c 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,8 @@ +From ed2b6457a9a986edeb1a27688e2eaacca4292766 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:23 +0200 -Subject: [PATCH 006/290] ARM: configs: at91: use new TCB timer driver -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2100311e3ae9a532f88135fe46237e09ac77c7a3 +Subject: [PATCH 006/291] ARM: configs: at91: use new TCB timer driver +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Unselecting ATMEL_TCLIB switches the TCB timer driver from tcb_clksrc to timer-atmel-tcb. @@ -37,3 +38,6 @@ index 2080025556b5..f2bbc6339ca6 100644 CONFIG_ATMEL_SSC=y CONFIG_EEPROM_AT24=y CONFIG_SCSI=y +-- +2.24.0 + 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 bcb5f9358..58ee14dab 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,8 @@ +From 10433e91824db9f89c3f320c5fc3d2bfb5edd9b3 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Thu, 13 Sep 2018 13:30:24 +0200 -Subject: [PATCH 007/290] ARM: configs: at91: unselect PIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=09237389b9cefeb3f5e277ad4e35c5ca3b62db42 +Subject: [PATCH 007/291] ARM: configs: at91: unselect PIT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -38,3 +39,6 @@ index f2bbc6339ca6..be92871ab155 100644 CONFIG_AEABI=y CONFIG_UACCESS_WITH_MEMCPY=y CONFIG_ZBOOT_ROM_TEXT=0x0 +-- +2.24.0 + 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 c96e5d407..6df8d405d 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,9 @@ +From dcd95836a0ad848d44ebff6c196e968f550bb0de Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Fri, 27 Jul 2018 13:38:54 +0100 -Subject: [PATCH 008/290] irqchip/gic-v3-its: Move pending table allocation to +Subject: [PATCH 008/291] 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=a0a08ef23f2e37ccaa18fb80939e9b43871e0667 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Marc Zyngier Signed-off-by: Sebastian Andrzej Siewior @@ -12,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior 2 files changed, 53 insertions(+), 28 deletions(-) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index e7549a2b1482..b68650b55b9f 100644 +index 050d6e040128..fc4c319ee1d7 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -179,6 +179,7 @@ static DEFINE_RAW_SPINLOCK(vmovp_lock); @@ -23,7 +24,7 @@ index e7549a2b1482..b68650b55b9f 100644 #define gic_data_rdist_rd_base() (gic_data_rdist()->rd_base) #define gic_data_rdist_vlpi_base() (gic_data_rdist_rd_base() + SZ_128K) -@@ -1644,7 +1645,7 @@ static void its_free_prop_table(struct page *prop_page) +@@ -1659,7 +1660,7 @@ static void its_free_prop_table(struct page *prop_page) get_order(LPI_PROPBASE_SZ)); } @@ -32,7 +33,7 @@ index e7549a2b1482..b68650b55b9f 100644 { phys_addr_t paddr; -@@ -1992,30 +1993,47 @@ static u64 its_clear_vpend_valid(void __iomem *vlpi_base) +@@ -2007,30 +2008,47 @@ static u64 its_clear_vpend_valid(void __iomem *vlpi_base) return val; } @@ -95,7 +96,7 @@ index e7549a2b1482..b68650b55b9f 100644 /* set PROPBASE */ val = (page_to_phys(gic_rdists->prop_page) | GICR_PROPBASER_InnerShareable | -@@ -2091,6 +2109,10 @@ static void its_cpu_init_lpis(void) +@@ -2106,6 +2124,10 @@ static void its_cpu_init_lpis(void) /* Make sure the GIC has seen the above */ dsb(sy); @@ -106,7 +107,7 @@ index e7549a2b1482..b68650b55b9f 100644 } static void its_cpu_init_collection(struct its_node *its) -@@ -3570,16 +3592,6 @@ static int redist_disable_lpis(void) +@@ -3585,16 +3607,6 @@ static int redist_disable_lpis(void) u64 timeout = USEC_PER_SEC; u64 val; @@ -123,7 +124,7 @@ index e7549a2b1482..b68650b55b9f 100644 if (!gic_rdists_supports_plpis()) { pr_info("CPU%d: LPIs not supported\n", smp_processor_id()); return -ENXIO; -@@ -3589,7 +3601,18 @@ static int redist_disable_lpis(void) +@@ -3604,7 +3616,18 @@ static int redist_disable_lpis(void) if (!(val & GICR_CTLR_ENABLE_LPIS)) return 0; @@ -143,7 +144,7 @@ index e7549a2b1482..b68650b55b9f 100644 smp_processor_id()); add_taint(TAINT_CRAP, LOCKDEP_STILL_OK); -@@ -3845,7 +3868,8 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, +@@ -3860,7 +3883,8 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, } gic_rdists = rdists; @@ -165,3 +166,6 @@ index 3188c0bef3e7..5b57501fd2e7 100644 } __percpu *rdist; struct page *prop_page; u64 flags; +-- +2.24.0 + 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 a87e44f56..4b699fedf 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,8 @@ +From 7cce8605f6a1ecb97f664ca64726f58e75c4d747 Mon Sep 17 00:00:00 2001 From: Julia Cartwright Date: Fri, 28 Sep 2018 21:03:51 +0000 -Subject: [PATCH 009/290] kthread: convert worker lock to raw spinlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=781154b56e9d694b817b093e6c4a22cbb0ad20d8 +Subject: [PATCH 009/291] kthread: convert worker lock to raw spinlock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In order to enable the queuing of kthread work items from hardirq context even when PREEMPT_RT_FULL is enabled, convert the worker @@ -197,3 +198,6 @@ index 087d18d771b5..5641b55783a6 100644 out: return ret; } +-- +2.24.0 + 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 f76f4eb67..f799d47d5 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,11 @@ +From 9bdc2dc2ca3892849462973eaff1e207b26bf025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Horia=20Geant=C4=83?= Date: Mon, 8 Oct 2018 14:09:37 +0300 -Subject: [PATCH 010/290] crypto: caam/qi - simplify CGR allocation, freeing +Subject: [PATCH 010/291] 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=1d10c08ca4b5279cfa1f77d05dded9377191ed3f +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [Upstream commit 29e83c757006fd751966bdc53392bb22d74179c6] @@ -134,3 +135,6 @@ index 357b69f57072..b6c8acc30853 100644 /** * qi_cache_alloc - Allocate buffers from CAAM-QI cache +-- +2.24.0 + 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 cd7afb8d6..7f4fb918f 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,8 @@ +From 9fb91a865bf531999865a16e329875975a0bbdea Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 7 Jan 2019 13:52:31 +0100 -Subject: [PATCH 011/290] sched/fair: Robustify CFS-bandwidth timer locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a1e9d89852d01e24232b177091911f075b64f65 +Subject: [PATCH 011/291] sched/fair: Robustify CFS-bandwidth timer locking +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Traditionally hrtimer callbacks were run with IRQs disabled, but with the introduction of HRTIMER_MODE_SOFT it is possible they run from @@ -24,16 +25,15 @@ Tested-by: Mike Galbraith Signed-off-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/20190107125231.GE14122@hirez.programming.kicks-ass.net Signed-off-by: Sebastian Andrzej Siewior -[Salvatore Bonaccorso: Backport to 4.19.84 due to context changes caused by -502bd151448c ("sched/fair: Fix low cpu usage with high throttling by removing -expiration of cpu-local slices")] --- kernel/sched/fair.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) +diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c +index f0abb8fe0ae9..b5e03fc56d65 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4560,7 +4560,7 @@ +@@ -4560,7 +4560,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) struct rq *rq = rq_of(cfs_rq); struct rq_flags rf; @@ -42,7 +42,7 @@ expiration of cpu-local slices")] if (!cfs_rq_throttled(cfs_rq)) goto next; -@@ -4579,7 +4579,7 @@ +@@ -4579,7 +4579,7 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) unthrottle_cfs_rq(cfs_rq); next: @@ -51,7 +51,7 @@ expiration of cpu-local slices")] if (!remaining) break; -@@ -4595,7 +4595,7 @@ +@@ -4595,7 +4595,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. */ @@ -60,7 +60,7 @@ expiration of cpu-local slices")] { u64 runtime; int throttled; -@@ -4635,10 +4635,10 @@ +@@ -4635,10 +4635,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; @@ -73,7 +73,7 @@ expiration of cpu-local slices")] cfs_b->distribute_running = 0; throttled = !list_empty(&cfs_b->throttled_cfs_rq); -@@ -4746,16 +4746,17 @@ +@@ -4746,16 +4746,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(); @@ -94,7 +94,7 @@ expiration of cpu-local slices")] return; } -@@ -4765,17 +4766,17 @@ +@@ -4765,17 +4766,17 @@ static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b) if (runtime) cfs_b->distribute_running = 1; @@ -115,7 +115,7 @@ expiration of cpu-local slices")] } /* -@@ -4855,11 +4856,12 @@ +@@ -4855,11 +4856,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); @@ -129,7 +129,7 @@ expiration of cpu-local slices")] for (;;) { overrun = hrtimer_forward_now(timer, cfs_b->period); if (!overrun) -@@ -4887,11 +4889,11 @@ +@@ -4895,11 +4897,11 @@ static enum hrtimer_restart sched_cfs_period_timer(struct hrtimer *timer) count = 0; } @@ -143,3 +143,6 @@ expiration of cpu-local slices")] return idle ? HRTIMER_NORESTART : HRTIMER_RESTART; } +-- +2.24.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 a977b48f8..3304b3872 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,8 @@ +From 296268c33d7b68c7aed7899eddcb0ac314bebdf8 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Mon, 19 Sep 2011 14:51:14 -0700 -Subject: [PATCH 012/290] arm: Convert arm boot_lock to raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9ebc1e4c87e1febc77c492b70626744e2249c23f +Subject: [PATCH 012/291] arm: Convert arm boot_lock to raw +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -426,3 +427,6 @@ index c2366510187a..6b60f582b738 100644 return pen_release != -1 ? -ENOSYS : 0; } +-- +2.24.0 + 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 95ac5c5f7..f9fdc61b2 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,9 @@ +From fdf9220749a837a83687679c314e53cd434e4ceb Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 17 Jul 2018 18:25:31 +0200 -Subject: [PATCH 013/290] x86/ioapic: Don't let setaffinity unmask threaded EOI +Subject: [PATCH 013/291] 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=269b937b10ea6588bf79b4d789c40cc5214711cf +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz There is an issue with threaded interrupts which are marked ONESHOT and using the fasteoi handler. @@ -106,3 +107,6 @@ index ab22eded61d2..91db2ec0c10a 100644 } static void ioapic_ir_ack_level(struct irq_data *irq_data) +-- +2.24.0 + 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 7c0b6c9ac..f1312cfca 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,8 @@ +From a45ef2ccd96d3e814260b46a053f0391aff210be Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 3 Jul 2018 18:19:48 +0200 -Subject: [PATCH 014/290] cgroup: use irqsave in cgroup_rstat_flush_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a46bfc03c899ec820ba9e964b1bac8ee7ffc5f2f +Subject: [PATCH 014/291] cgroup: use irqsave in cgroup_rstat_flush_locked() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz All callers of cgroup_rstat_flush_locked() acquire cgroup_rstat_lock either with spin_lock_irq() or spin_lock_irqsave(). @@ -44,3 +45,6 @@ index bb95a35e8c2d..3266a9781b4e 100644 /* if @may_sleep, play nice and yield if necessary */ if (may_sleep && (need_resched() || +-- +2.24.0 + 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 9309c03ee..fbb5f46e2 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,8 @@ +From 5f84d926adb23419c2abae8671cd701a192b04b6 Mon Sep 17 00:00:00 2001 From: Clark Williams Date: Tue, 3 Jul 2018 13:34:30 -0500 -Subject: [PATCH 015/290] fscache: initialize cookie hash table raw spinlocks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=534df1b6875bc0ff92dc2bd5c5fcbe82f606443f +Subject: [PATCH 015/291] fscache: initialize cookie hash table raw spinlocks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -58,3 +59,6 @@ index 84b90a79d75a..87a9330eafa2 100644 /** * fscache_register_netfs - Register a filesystem as desiring caching services +-- +2.24.0 + 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 952713f8f..f82a83d78 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,11 @@ +From a94e19a514ac423d3e6b24adcf21a1a0c206206e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 29 Aug 2018 21:59:04 +0200 -Subject: [PATCH 016/290] Drivers: hv: vmbus: include header for get_irq_regs() +Subject: [PATCH 016/291] 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=32d049f2969bf30456b5afbcf2c709e7667ee6f7 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On !RT the header file get_irq_regs() gets pulled in via other header files. On RT it does not and the build fails: @@ -34,3 +35,6 @@ index 87d3d7da78f8..1d2d8a4b837d 100644 #include "hv_trace.h" +-- +2.24.0 + diff --git a/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch b/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch index db88d5a17..6a649e370 100644 --- a/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch +++ b/debian/patches-rt/0017-percpu-include-irqflags.h-for-raw_local_irq_save.patch @@ -1,7 +1,8 @@ +From 75c78f86e37ea3d499e1da94c0f5939815a1a05b Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 11 Oct 2018 16:39:59 +0200 -Subject: [PATCH 017/290] 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=f917aafbaad3be951578ed66aa337f869b407357 +Subject: [PATCH 017/291] percpu: include irqflags.h for raw_local_irq_save() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -27,3 +28,6 @@ index 1817a8415a5e..942d64c0476e 100644 #ifdef CONFIG_SMP +-- +2.24.0 + diff --git a/debian/patches-rt/0018-efi-Allow-efi-runtime.patch b/debian/patches-rt/0018-efi-Allow-efi-runtime.patch index b15deaec9..436187422 100644 --- a/debian/patches-rt/0018-efi-Allow-efi-runtime.patch +++ b/debian/patches-rt/0018-efi-Allow-efi-runtime.patch @@ -1,7 +1,8 @@ +From 5fb52de64270be979f75b427250d11b540c52b83 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 26 Jul 2018 15:06:10 +0200 -Subject: [PATCH 018/290] efi: Allow efi=runtime -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e3cdde741d28e9a96be78eff57024bfa1807a9d +Subject: [PATCH 018/291] efi: Allow efi=runtime +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In case the option "efi=noruntime" is default at built-time, the user could overwrite its sate by `efi=runtime' and allow it again. @@ -26,3 +27,6 @@ index d54fca902e64..5db20908aa9c 100644 return 0; } early_param("efi", parse_efi_cmdline); +-- +2.24.0 + 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 a669a40b7..be9d5adff 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,8 @@ +From 4fd848304a1de3af890fc4af3672ec7f4702418d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 24 Jul 2018 14:48:55 +0200 -Subject: [PATCH 019/290] 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=50a52c8407c717fe21f31d5ae907a1fd3ec7fd32 +Subject: [PATCH 019/291] x86/efi: drop task_lock() from efi_switch_mm() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz efi_switch_mm() is a wrapper around switch_mm() which saves current's ->active_mm, sets the requests mm as ->active_mm and invokes @@ -49,3 +50,6 @@ index ee5d08f25ce4..e8da7f492970 100644 } #ifdef CONFIG_EFI_MIXED +-- +2.24.0 + 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 f678152cf..fa254dc98 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,9 @@ +From b17f7ae2ce1cef4a3777068f142f46342a68adac Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 26 Jul 2018 09:13:42 +0200 -Subject: [PATCH 020/290] arm64: KVM: compute_layout before altenates are +Subject: [PATCH 020/291] arm64: KVM: compute_layout before altenates are applied -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7cf32c5e928501c234cefb60c14a7d2516bfdd27 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz compute_layout() is invoked as part of an alternative fixup under stop_machine() and needs a sleeping lock as part of get_random_long(). @@ -77,3 +78,6 @@ index c712a7376bc1..792da0e125de 100644 /* * Compute HYP VA by using the same computation as kern_hyp_va() */ +-- +2.24.0 + 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 e2e07377a..b516b3eca 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,9 @@ +From 697998358002f3b4a507a7d2c17f4a574462bfbb Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 31 Aug 2018 14:16:30 +0200 -Subject: [PATCH 021/290] of: allocate / free phandle cache outside of the +Subject: [PATCH 021/291] 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=62698ea1b5cfaf8b88d0df4b9b1acbf8ff591dac +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The phandle cache code allocates memory while holding devtree_lock which is a raw_spinlock_t. Memory allocation (and free()) is not possible on @@ -18,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c -index 3f21ea6a90dc..2c7cf83b200c 100644 +index f0dbb7ad88cf..c59b30bab0e0 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -130,31 +130,34 @@ static u32 phandle_cache_mask; @@ -97,3 +98,6 @@ index 3f21ea6a90dc..2c7cf83b200c 100644 } void __init of_core_init(void) +-- +2.24.0 + 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 870cb3f1f..eb1743bdc 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,8 @@ +From 8a4f7cc633b7c0c167185220b26c123c854317be Mon Sep 17 00:00:00 2001 From: Clark Williams Date: Tue, 18 Sep 2018 10:29:31 -0500 -Subject: [PATCH 022/290] 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=dea0e8e741a34a81211d1fc0eb65e8d48ed39059 +Subject: [PATCH 022/291] mm/kasan: make quarantine_lock a raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The static lock quarantine_lock is used in quarantine.c to protect the quarantine queue datastructures. It is taken inside quarantine queue @@ -92,3 +93,6 @@ index 3a8ddf8baf7d..b209dbaefde8 100644 qlist_free_all(&to_free, cache); +-- +2.24.0 + 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 0d73a3288..548c4b4de 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,9 @@ +From 39aaee76f350cb367781564b734dc8e29d75b975 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Mon, 29 Oct 2018 11:53:01 +0100 -Subject: [PATCH 023/290] EXP rcu: Revert expedited GP parallelization +Subject: [PATCH 023/291] EXP rcu: Revert expedited GP parallelization cleverness -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a435c0a8c0607a971d75a41cf00b45699e690cc +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz (Commit 258ba8e089db23f760139266c232f01bad73f85c from linux-rcu) @@ -45,3 +46,6 @@ index 0b2c2ad69629..a0486414edb4 100644 rnp->exp_need_flush = true; } +-- +2.24.0 + 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 0f5423ab6..451d9190f 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,11 @@ +From 4d466dc4215908fa4bc26c7451f4cc09f1d78e0a Mon Sep 17 00:00:00 2001 From: He Zhe Date: Wed, 19 Dec 2018 16:30:57 +0100 -Subject: [PATCH 024/290] kmemleak: Turn kmemleak_lock to raw spinlock on RT +Subject: [PATCH 024/291] 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=d823b15c5b9f5edcf6111f3b480674e4c2e42847 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz kmemleak_lock, as a rwlock on RT, can possibly be held in atomic context and causes the follow BUG. @@ -163,3 +164,6 @@ index 5eeabece0c17..92ce99b15f2b 100644 } /* +-- +2.24.0 + 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 b7fd4929c..2245eb61f 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,8 @@ +From 2c7ee1a045b00c6310d027dc5aa1a079ff655630 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 28 Oct 2016 23:05:11 +0200 -Subject: [PATCH 025/290] NFSv4: replace seqcount_t with a seqlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23180e2794932f9ce1ba1e0ef1ebb6a04c9ff676 +Subject: [PATCH 025/291] NFSv4: replace seqcount_t with a seqlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -18,8 +19,6 @@ block readers). Reported-by: kernel test robot Signed-off-by: Sebastian Andrzej Siewior -[Aurelien Jarno: Backport to 4.19.86 due to context changes caused by -aa84e0458d853 ("NFSv4.x: fix lock recovery during delegation recall")] --- fs/nfs/delegation.c | 4 ++-- fs/nfs/nfs4_fs.h | 2 +- @@ -28,10 +27,10 @@ aa84e0458d853 ("NFSv4.x: fix lock recovery during delegation recall")] 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c -index 825a8c52165a..c14f02b41f0d 100644 +index 74ff459b75ef..6b422d1b5ae1 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c -@@ -152,11 +152,11 @@ static int nfs_delegation_claim_opens(struct inode *inode, +@@ -162,11 +162,11 @@ static int nfs_delegation_claim_opens(struct inode *inode, sp = state->owner; /* Block nfs4_proc_unlck */ mutex_lock(&sp->so_delegreturn_mutex); @@ -59,10 +58,10 @@ index 5b61520dce88..2771aafaca19 100644 }; diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index 75faef7af22d..72abcccb8177 100644 +index 792f8821b5d6..041d235cf5ef 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c -@@ -2873,7 +2873,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, +@@ -2870,7 +2870,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, unsigned int seq; int ret; @@ -71,7 +70,7 @@ index 75faef7af22d..72abcccb8177 100644 ret = _nfs4_proc_open(opendata, ctx); if (ret != 0) -@@ -2914,7 +2914,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, +@@ -2911,7 +2911,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, if (d_inode(dentry) == state->inode) { nfs_inode_attach_open_context(ctx); @@ -132,3 +131,6 @@ index b3086e99420c..c9bf1eb7e1b2 100644 return status; } +-- +2.24.0 + 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 27bde687b..a88e5e87c 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,12 @@ +From f5fde14ac17fd00556c20f2e137ce5e1a3608442 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 4 Apr 2017 12:50:16 +0200 -Subject: [PATCH 026/290] kernel: sched: Provide a pointer to the valid CPU +Subject: [PATCH 026/291] 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=6e2bd8c3352b171ecbd5aaae16f7abd30a82342c +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not @@ -165,10 +166,10 @@ index c9ef3c532169..cb10249b1125 100644 /* Save the current cpu id for spu interrupt routing. */ ctx->last_ran = raw_smp_processor_id(); diff --git a/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c -index 912d53939f4f..6b8dc68b5ccc 100644 +index a999a58ca331..d6410d0740ea 100644 --- a/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c +++ b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c -@@ -1435,7 +1435,7 @@ static int pseudo_lock_dev_mmap(struct file *filp, struct vm_area_struct *vma) +@@ -1445,7 +1445,7 @@ static int pseudo_lock_dev_mmap(struct file *filp, struct vm_area_struct *vma) * may be scheduled elsewhere and invalidate entries in the * pseudo-locked region. */ @@ -209,10 +210,10 @@ index bedd5fba33b0..3f4259f11a35 100644 current->pid, current->comm, cpumask_pr_args(proc_mask)); diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c -index 64ab92f8a4a2..57ec8bb829f2 100644 +index 291c12f588b5..05e7b28a03c1 100644 --- a/drivers/infiniband/hw/hfi1/sdma.c +++ b/drivers/infiniband/hw/hfi1/sdma.c -@@ -852,14 +852,13 @@ struct sdma_engine *sdma_select_user_engine(struct hfi1_devdata *dd, +@@ -853,14 +853,13 @@ struct sdma_engine *sdma_select_user_engine(struct hfi1_devdata *dd, { struct sdma_rht_node *rht_node; struct sdma_engine *sde = NULL; @@ -320,10 +321,10 @@ index ff956ccbb6df..7bb129c5b412 100644 } diff --git a/kernel/fork.c b/kernel/fork.c -index aef1430bdce0..173e010cba45 100644 +index 8cb5cd7c97e1..8c285876eb52 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -845,6 +845,8 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) +@@ -840,6 +840,8 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) #ifdef CONFIG_STACKPROTECTOR tsk->stack_canary = get_random_canary(); #endif @@ -333,7 +334,7 @@ index aef1430bdce0..173e010cba45 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 78ecdfae25b6..39bb4b3eb1bf 100644 +index 2befd2c4ce9e..07dc66137a26 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) @@ -474,7 +475,7 @@ index 78ecdfae25b6..39bb4b3eb1bf 100644 raw_spin_unlock_irqrestore(&p->pi_lock, flags); out_unlock: -@@ -5495,7 +5495,7 @@ int task_can_attach(struct task_struct *p, +@@ -5496,7 +5496,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 +484,7 @@ index 78ecdfae25b6..39bb4b3eb1bf 100644 */ if (p->flags & PF_NO_SETAFFINITY) { ret = -EINVAL; -@@ -5522,7 +5522,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) +@@ -5523,7 +5523,7 @@ int migrate_task_to(struct task_struct *p, int target_cpu) if (curr_cpu == target_cpu) return 0; @@ -492,7 +493,7 @@ index 78ecdfae25b6..39bb4b3eb1bf 100644 return -EINVAL; /* TODO: This is not properly updating schedstats */ -@@ -5660,7 +5660,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) +@@ -5661,7 +5661,7 @@ static void migrate_tasks(struct rq *dead_rq, struct rq_flags *rf) put_prev_task(rq, next); /* @@ -572,7 +573,7 @@ index ebec37cb3be9..4b13df38c069 100644 !dl_task(task) || !task_on_rq_queued(task))) { diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index b40d8c71e335..da5d60d25c27 100644 +index b5e03fc56d65..6e6d9e999814 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1662,7 +1662,7 @@ static void task_numa_compare(struct task_numa_env *env, @@ -593,7 +594,7 @@ index b40d8c71e335..da5d60d25c27 100644 continue; env->dst_cpu = cpu; -@@ -5800,7 +5800,7 @@ find_idlest_group(struct sched_domain *sd, struct task_struct *p, +@@ -5743,7 +5743,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 +603,7 @@ index b40d8c71e335..da5d60d25c27 100644 continue; local_group = cpumask_test_cpu(this_cpu, -@@ -5932,7 +5932,7 @@ find_idlest_group_cpu(struct sched_group *group, struct task_struct *p, int this +@@ -5875,7 +5875,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 +612,7 @@ index b40d8c71e335..da5d60d25c27 100644 if (available_idle_cpu(i)) { struct rq *rq = cpu_rq(i); struct cpuidle_state *idle = idle_get_state(rq); -@@ -5972,7 +5972,7 @@ static inline int find_idlest_cpu(struct sched_domain *sd, struct task_struct *p +@@ -5915,7 +5915,7 @@ static inline int find_idlest_cpu(struct sched_domain *sd, struct task_struct *p { int new_cpu = cpu; @@ -620,7 +621,7 @@ index b40d8c71e335..da5d60d25c27 100644 return prev_cpu; /* -@@ -6089,7 +6089,7 @@ static int select_idle_core(struct task_struct *p, struct sched_domain *sd, int +@@ -6032,7 +6032,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 +630,7 @@ index b40d8c71e335..da5d60d25c27 100644 for_each_cpu_wrap(core, cpus, target) { bool idle = true; -@@ -6123,7 +6123,7 @@ static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int t +@@ -6066,7 +6066,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 +639,7 @@ index b40d8c71e335..da5d60d25c27 100644 continue; if (available_idle_cpu(cpu)) return cpu; -@@ -6186,7 +6186,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t +@@ -6129,7 +6129,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t for_each_cpu_wrap(cpu, sched_domain_span(sd), target) { if (!--nr) return -1; @@ -647,7 +648,7 @@ index b40d8c71e335..da5d60d25c27 100644 continue; if (available_idle_cpu(cpu)) break; -@@ -6223,7 +6223,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) +@@ -6166,7 +6166,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 +657,7 @@ index b40d8c71e335..da5d60d25c27 100644 /* * Replace recent_used_cpu with prev as it is a potential * candidate for the next wake: -@@ -6441,7 +6441,7 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f +@@ -6384,7 +6384,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 +666,7 @@ index b40d8c71e335..da5d60d25c27 100644 } rcu_read_lock(); -@@ -7180,14 +7180,14 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) +@@ -7123,14 +7123,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 +683,7 @@ index b40d8c71e335..da5d60d25c27 100644 int cpu; schedstat_inc(p->se.statistics.nr_failed_migrations_affine); -@@ -7207,7 +7207,7 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) +@@ -7150,7 +7150,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 +692,7 @@ index b40d8c71e335..da5d60d25c27 100644 env->flags |= LBF_DST_PINNED; env->new_dst_cpu = cpu; break; -@@ -7804,7 +7804,7 @@ check_cpu_capacity(struct rq *rq, struct sched_domain *sd) +@@ -7747,7 +7747,7 @@ check_cpu_capacity(struct rq *rq, struct sched_domain *sd) /* * Group imbalance indicates (and tries to solve) the problem where balancing @@ -700,7 +701,7 @@ index b40d8c71e335..da5d60d25c27 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. -@@ -8419,7 +8419,7 @@ static struct sched_group *find_busiest_group(struct lb_env *env) +@@ -8362,7 +8362,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 +710,7 @@ index b40d8c71e335..da5d60d25c27 100644 */ if (busiest->group_type == group_imbalanced) goto force_balance; -@@ -8815,7 +8815,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, +@@ -8758,7 +8758,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: */ @@ -779,3 +780,6 @@ index 5522692100ba..8b4be8e1802a 100644 trace_foo_with_template_simple("HELLO", cnt); +-- +2.24.0 + 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 083cdfbf5..60d4f1668 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,8 @@ +From 61ce7ed9daafbc845c8d675d1ff793f1c3cdc7dc Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Sat, 27 May 2017 19:02:06 +0200 -Subject: [PATCH 027/290] kernel/sched/core: add migrate_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=70a9ac89b97eb9275f3eb6d7adbba77ddd059fee +Subject: [PATCH 027/291] kernel/sched/core: add migrate_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz --- include/linux/preempt.h | 23 +++++++ @@ -85,7 +86,7 @@ index 9fb239e12b82..5801e516ba63 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 39bb4b3eb1bf..1a1ffb873d22 100644 +index 07dc66137a26..d0450f06612c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1008,7 +1008,15 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma @@ -144,7 +145,7 @@ index 39bb4b3eb1bf..1a1ffb873d22 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. */ -@@ -7104,3 +7133,100 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7105,3 +7134,100 @@ const u32 sched_prio_to_wmult[40] = { }; #undef CREATE_TRACE_POINTS @@ -260,3 +261,6 @@ index 78fadf0438ea..5027158d3908 100644 #undef PN_SCHEDSTAT #undef PN #undef __PN +-- +2.24.0 + 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 ab135c199..c9b1d1706 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,9 @@ +From bd7f5c8faa18b9f1d37703913f1570138422d3da Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 9 Oct 2018 17:34:50 +0200 -Subject: [PATCH 028/290] sched/migrate_disable: Add export_symbol_gpl for +Subject: [PATCH 028/291] 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=ef09fdabc9d1ade69d87d4d674857172b6d172ee +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Jonathan reported that lttng/modules can't use __migrate_disabled(). This function is only used by sched/core itself and the tracing @@ -21,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 1 insertion(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 1a1ffb873d22..a33c2c18628d 100644 +index d0450f06612c..e6022cc2605b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1013,6 +1013,7 @@ int __migrate_disabled(struct task_struct *p) @@ -32,3 +33,6 @@ index 1a1ffb873d22..a33c2c18628d 100644 #endif static void __do_set_cpus_allowed_tail(struct task_struct *p, +-- +2.24.0 + 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 2874be8e8..fadfc782b 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,8 @@ +From 947af8820a4dd6fc2c767f8fe42428555bea5600 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 9 Mar 2016 10:51:06 +0100 -Subject: [PATCH 029/290] 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=619e4305a3a3a2296ec9a1fc32f84fb09a12f555 +Subject: [PATCH 029/291] arm: at91: do not disable/enable clocks in a row +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Currently the driver will disable the clock and enable it one line later if it is switching from periodic mode into one shot. @@ -92,3 +93,6 @@ index 43f4d5c4d6fa..de6baf564dfe 100644 .set_state_periodic = tc_set_periodic, .set_state_oneshot = tc_set_oneshot, }, +-- +2.24.0 + 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 43db58efc..aecedf191 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,12 @@ +From 13089a9a78c41543e74768f0322a9eeabd65a5e1 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Mon, 8 Mar 2010 18:57:04 +0100 -Subject: [PATCH 030/290] clocksource: TCLIB: Allow higher clock rates for +Subject: [PATCH 030/291] 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=8abf3e475b2921798e61e686140e077146360f1a +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz As default the TCLIB uses the 32KiHz base clock rate for clock events. Add a compile time selection to allow higher clock resulution. @@ -164,3 +165,6 @@ index 3726eacdf65d..0900dec7ec04 100644 config DUMMY_IRQ tristate "Dummy IRQ handler" default n +-- +2.24.0 + diff --git a/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch b/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch index 31c49018f..a67976fd5 100644 --- a/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch +++ b/debian/patches-rt/0031-timekeeping-Split-jiffies-seqlock.patch @@ -1,7 +1,8 @@ +From 4d016dbd1b8f0ec0d903af01d0ab3c7b83bd8799 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 14 Feb 2013 22:36:59 +0100 -Subject: [PATCH 031/290] timekeeping: Split jiffies seqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37dae8435d79cbcc247b536cb16f55db30295418 +Subject: [PATCH 031/291] timekeeping: Split jiffies seqlock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Replace jiffies_lock seqlock with a simple seqcounter and a rawlock so it can be taken in atomic context on RT. @@ -135,10 +136,10 @@ index 5b33e2f5c0ed..54fd344ef973 100644 ts->timer_expires_base = basemono; diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c -index c2708e1f0c69..13477f8ee80e 100644 +index 81ee5b83c920..512db778f442 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c -@@ -2418,8 +2418,10 @@ EXPORT_SYMBOL(hardpps); +@@ -2394,8 +2394,10 @@ EXPORT_SYMBOL(hardpps); */ void xtime_update(unsigned long ticks) { @@ -165,3 +166,6 @@ index 141ab3ab0354..099737f6f10c 100644 #define CS_NAME_LEN 32 +-- +2.24.0 + 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 23b406f55..a6846220d 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,8 @@ +From d9af1e0a1659a5d42d0495e38677bd8fb8fd0aaf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 21 Sep 2011 19:57:12 +0200 -Subject: [PATCH 032/290] signal: Revert ptrace preempt magic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34b289f78753746be46c707628324cd79730dac2 +Subject: [PATCH 032/291] signal: Revert ptrace preempt magic +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Upstream commit '53da1d9456fe7f8 fix ptrace slowness' is nothing more than a bandaid around the ptrace design trainwreck. It's not a @@ -13,10 +14,10 @@ Signed-off-by: Thomas Gleixner 1 file changed, 8 deletions(-) diff --git a/kernel/signal.c b/kernel/signal.c -index 0e6bc3049427..d5a9646b3538 100644 +index 7278302e3485..6b9d4bbfa9df 100644 --- a/kernel/signal.c +++ b/kernel/signal.c -@@ -2094,15 +2094,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) +@@ -2098,15 +2098,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) if (gstop_done && ptrace_reparented(current)) do_notify_parent_cldstop(current, false, why); @@ -32,3 +33,6 @@ index 0e6bc3049427..d5a9646b3538 100644 freezable_schedule(); } else { /* +-- +2.24.0 + 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 eef7da4f8..eecbcb5a1 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,8 @@ +From df3cd4ac6e62e719cadc664491e6dfe9f501e305 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Wed, 5 Mar 2014 00:49:47 +0100 -Subject: [PATCH 033/290] net: sched: Use msleep() instead of yield() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e83295f1ca6355381c6d506047d641e9e607c96f +Subject: [PATCH 033/291] net: sched: Use msleep() instead of yield() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On PREEMPT_RT enabled systems the interrupt handler run as threads at prio 50 (by default). If a high priority userspace process tries to shut down a busy @@ -46,10 +47,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 30e32df5f84a..0b9c494f64b0 100644 +index 8a4d01e427a2..4ab20f1138fd 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c -@@ -1192,7 +1192,7 @@ void dev_deactivate_many(struct list_head *head) +@@ -1204,7 +1204,7 @@ void dev_deactivate_many(struct list_head *head) /* Wait for outstanding qdisc_run calls. */ list_for_each_entry(dev, head, close_list) { while (some_qdisc_is_busy(dev)) @@ -58,3 +59,6 @@ index 30e32df5f84a..0b9c494f64b0 100644 /* The new qdisc is assigned at this point so we can safely * unwind stale skb lists and qdisc statistics */ +-- +2.24.0 + 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 4ab98bd03..e136ee997 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,8 @@ +From a159d24537239954b6315ccc562c3e8cab89f5ed Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 27 Mar 2018 16:24:15 +0200 -Subject: [PATCH 034/290] dm rq: remove BUG_ON(!irqs_disabled) check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4b547ae7869e0ca0380a53cde929e51ecbdc173 +Subject: [PATCH 034/291] dm rq: remove BUG_ON(!irqs_disabled) check +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In commit 052189a2ec95 ("dm: remove superfluous irq disablement in dm_request_fn") the spin_lock_irq() was replaced with spin_lock() + a @@ -31,3 +32,6 @@ index 4d36373e1c0f..12ed08245130 100644 } } +-- +2.24.0 + 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 7b52bb9a1..219cab214 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,8 @@ +From 07883a7dceb3c9bbdd7c8deb51d2d069cda79118 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 8 Nov 2013 17:34:54 +0100 -Subject: [PATCH 035/290] usb: do no disable interrupts in giveback -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=086a63b5d6cc385539d96fb77b65eeb281dbd552 +Subject: [PATCH 035/291] usb: do no disable interrupts in giveback +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet context") the USB code disables interrupts before invoking the complete @@ -40,3 +41,6 @@ index b82a7d787add..2f3015356124 100644 usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count); +-- +2.24.0 + 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 1ee99a282..d08b6193f 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,8 @@ +From 1354583e3f4c2811caec1d3c97ac3835246ec7ef Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 12:39:57 +0200 -Subject: [PATCH 036/290] rt: Provide PREEMPT_RT_BASE config switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3b6f0b1d09976635e464aa63be521f1f6f63e35d +Subject: [PATCH 036/291] rt: Provide PREEMPT_RT_BASE config switch +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Introduce PREEMPT_RT_BASE which enables parts of PREEMPT_RT_FULL. Forces interrupt threading and enables some of the RT @@ -58,3 +59,6 @@ index cd1655122ec0..027db5976c2f 100644 - bool \ No newline at end of file + bool +-- +2.24.0 + 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 01a7fb721..2adfa3118 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,8 @@ +From 6663ab6c43da36389be915ad106047ee1afb6a8d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 14 Dec 2011 01:03:49 +0100 -Subject: [PATCH 037/290] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2efd4a4df8085c42c4a8bb8d74f1a6a566adc67a +Subject: [PATCH 037/291] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz There are "valid" GFP_ATOMIC allocations such as @@ -46,7 +47,7 @@ Signed-off-by: Thomas Gleixner 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index e76d16ac2776..04a45d6d0167 100644 +index af35f5caadbe..e40ba59efe7f 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -934,7 +934,7 @@ config CALGARY_IOMMU_ENABLED_BY_DEFAULT @@ -70,3 +71,6 @@ index a3928d4438b5..a50b2158f7cd 100644 help Use dynamic allocation for cpumask_var_t, instead of putting them on the stack. This is a bit more expensive, but avoids +-- +2.24.0 + 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 0cbf71c9b..091b02279 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,8 @@ +From 043f2096e98b4bf45e462337195e37d7214f7aff Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 8 Jul 2015 17:14:48 +0200 -Subject: [PATCH 038/290] jump-label: disable if stop_machine() is used -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=77b2c3f7bbf3d862529e075933f0e7a6f8613c53 +Subject: [PATCH 038/291] jump-label: disable if stop_machine() is used +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Some architectures are using stop_machine() while switching the opcode which leads to latency spikes. @@ -36,3 +37,6 @@ index 185e552f1461..84f36e47e3ab 100644 select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMU select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) +-- +2.24.0 + 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 038c10af9..b61ddb9af 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,9 @@ +From 4ff387e1b68a6ad023a1be0934614c7fea2571b1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 24 Jul 2011 12:11:43 +0200 -Subject: [PATCH 039/290] kconfig: Disable config options which are not RT +Subject: [PATCH 039/291] 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=164a36eb11cebfda8c6eb1f79beb2a31e4dd9ce2 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Disable stuff which is known to have issues on RT @@ -37,3 +38,6 @@ index b457e94ae618..0dddbb2a3282 100644 select COMPACTION select RADIX_TREE_MULTIORDER help +-- +2.24.0 + diff --git a/debian/patches-rt/0040-lockdep-disable-self-test.patch b/debian/patches-rt/0040-lockdep-disable-self-test.patch index 0fb961240..0fb062e31 100644 --- a/debian/patches-rt/0040-lockdep-disable-self-test.patch +++ b/debian/patches-rt/0040-lockdep-disable-self-test.patch @@ -1,10 +1,11 @@ +From 203f0695996b8484c7cf3978c6d66ef5cf5122fa Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 17 Oct 2017 16:36:18 +0200 -Subject: [PATCH 040/290] lockdep: disable self-test +Subject: [PATCH 040/291] 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=bff275d06e885f7b51dbac8b2e93867616852378 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -29,3 +30,6 @@ index 46a910acce3f..38cf7f81daa7 100644 help Say Y here if you want the kernel to run a short self-test during bootup. The self-test checks whether common types of locking bugs +-- +2.24.0 + 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 9de47c9c3..129283a18 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,8 @@ +From e6f803613e75df4c54389b97fda1cb6d239d70da Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:03 -0500 -Subject: [PATCH 041/290] mm: Allow only slub on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f04e50899757b5f50979fa506c88bd78d17c49b6 +Subject: [PATCH 041/291] mm: Allow only slub on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Disable SLAB and SLOB on -RT. Only SLUB is adopted to -RT needs. @@ -31,3 +32,6 @@ index 47035b5a46f6..ae9a0113a699 100644 help SLOB replaces the stock allocator with a drastically simpler allocator. SLOB is generally more space efficient but +-- +2.24.0 + 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 64ed2e16d..38671de3e 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,11 @@ +From ce4dfdbd95a61055f3cf6a29ecaed9d195bda6d6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:51:45 +0200 -Subject: [PATCH 042/290] locking: Disable spin on owner for RT +Subject: [PATCH 042/291] 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=fb7c18e5a29066807df152c5b7d6cd2cf66e0301 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Drop spin on owner for mutex / rwsem. We are most likely not using it but… @@ -32,3 +33,6 @@ index 84d882f3e299..af27c4000812 100644 config LOCK_SPIN_ON_OWNER def_bool y +-- +2.24.0 + 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 48c7ed913..ad0c5fc32 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,8 @@ +From 0828aeddb0ee251954aad102cc5de568f0b94aca Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 28 Oct 2012 13:26:09 +0000 -Subject: [PATCH 043/290] rcu: Disable RCU_FAST_NO_HZ on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c69674f542d0ccc839ba5282f2b24945882abb93 +Subject: [PATCH 043/291] rcu: Disable RCU_FAST_NO_HZ on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This uses a timer_list timer from the irq disabled guts of the idle code. Disable it for now to prevent wreckage. @@ -24,3 +25,6 @@ index 9210379c0353..644264be90f0 100644 default n help This option permits CPUs to enter dynticks-idle state even if +-- +2.24.0 + 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 fc0c19c18..e3d87b55f 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,8 @@ +From 8572bd12065e844033ac5dc1513ac6e375f102f5 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 21 Mar 2014 20:19:05 +0100 -Subject: [PATCH 044/290] rcu: make RCU_BOOST default on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ce85f19c79e9234d764888e74dc2e4e49b3a3da6 +Subject: [PATCH 044/291] rcu: make RCU_BOOST default on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -28,3 +29,6 @@ index 644264be90f0..a243a78ff38c 100644 help This option boosts the priority of preempted RCU readers that block the current preemptible RCU grace period for too long. +-- +2.24.0 + 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 a4d36ced3..6262bb7f7 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,8 @@ +From dbed6df30f02693175cf4859cc59ed5c164bc939 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:03:52 +0200 -Subject: [PATCH 045/290] sched: Disable CONFIG_RT_GROUP_SCHED on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08989e0969de7b6c4727eb2a32f7c1aaa194708f +Subject: [PATCH 045/291] sched: Disable CONFIG_RT_GROUP_SCHED on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Carsten reported problems when running: @@ -29,3 +30,6 @@ index ae9a0113a699..61e8b531649b 100644 default n help This feature lets you explicitly allocate real CPU bandwidth +-- +2.24.0 + 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 58c07b048..ad807454f 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,11 @@ +From 5069703501d3a9941838df3cd946b5e4c41d7e04 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Sat, 27 May 2017 19:02:06 +0200 -Subject: [PATCH 046/290] net/core: disable NET_RX_BUSY_POLL +Subject: [PATCH 046/291] 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=86b04e83f0deb1dce266ca11efb35281d2d76566 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz sk_busy_loop() does preempt_disable() followed by a few operations which can take sleeping locks and may get long. @@ -32,3 +33,6 @@ index 228dfa382eec..bc8d01996f22 100644 config BQL bool +-- +2.24.0 + 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 b7e2543cc..cfeff4cfd 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,8 @@ +From e9ece8f9dc53c0d74f9fe98b534d0e753c517281 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 1 Dec 2017 10:42:03 +0100 -Subject: [PATCH 047/290] arm*: disable NEON in kernel mode -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0a5f99c6726ff40c5f1173b951484e2b41d527a +Subject: [PATCH 047/291] arm*: disable NEON in kernel mode +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -160,3 +161,6 @@ index 34b4e3d46aab..ae055cdad8cf 100644 crc32_pmull_algs[0].update = crc32_pmull_update; crc32_pmull_algs[1].update = crc32c_pmull_update; +-- +2.24.0 + 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 52e985ead..da3081785 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,8 @@ +From 98313a22669a4dc95b20a2d09b91ccb788afb8b2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 048/290] powerpc: Use generic rwsem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=58d37daded0023f403aec29501462e8499eeb016 +Subject: [PATCH 048/291] powerpc: Use generic rwsem on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Use generic code which uses rtmutex @@ -27,3 +28,6 @@ index a80669209155..9952764db9c5 100644 config GENERIC_LOCKBREAK bool +-- +2.24.0 + 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 f41fe98fa..bf3efdbe7 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,9 @@ +From 0575c26ddd4406cd80932c9fca520f4e602110cd Mon Sep 17 00:00:00 2001 From: Bogdan Purcareata Date: Fri, 24 Apr 2015 15:53:13 +0000 -Subject: [PATCH 049/290] powerpc/kvm: Disable in-kernel MPIC emulation for +Subject: [PATCH 049/291] 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=98667cc1926223ba114f4e52611633d0d8f0af87 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -39,3 +40,6 @@ index 68a0e9d5b440..6f4d5d7615af 100644 select HAVE_KVM_IRQCHIP select HAVE_KVM_IRQFD select HAVE_KVM_IRQ_ROUTING +-- +2.24.0 + 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 fefd9bcdc..5879170b7 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,8 @@ +From 688d9558ce5aee4f904f63182e3b4d23bb4a9792 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:08:34 +0200 -Subject: [PATCH 050/290] powerpc: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=648dcdb872f08b4c6a613140a10ee3eb6df95ed6 +Subject: [PATCH 050/291] powerpc: Disable highmem on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The current highmem handling on -RT is not compatible and needs fixups. @@ -23,3 +24,6 @@ index 9952764db9c5..1563820a37e8 100644 source kernel/Kconfig.hz +-- +2.24.0 + 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 f82c08409..b2f055e48 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,8 @@ +From 0c1e53d4534612ac67956790bde4c6d4e9eb8981 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:10:12 +0200 -Subject: [PATCH 051/290] mips: Disable highmem on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=10a1793ef40f4036a0b0c4c51e9fcdc1899e64ba +Subject: [PATCH 051/291] mips: Disable highmem on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The current highmem handling on -RT is not compatible and needs fixups. @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 201caf226b47..bd268302efa4 100644 +index a830a9701e50..3d5fae3891be 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2517,7 +2517,7 @@ config MIPS_CRC_SUPPORT +@@ -2518,7 +2518,7 @@ config MIPS_CRC_SUPPORT # config HIGHMEM bool "High Memory Support" @@ -23,3 +24,6 @@ index 201caf226b47..bd268302efa4 100644 config CPU_SUPPORTS_HIGHMEM bool +-- +2.24.0 + 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 be59e8e3c..29d35cce2 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,8 @@ +From 3f49b83521789612e3946f2e3ddfc7ec52abc6b0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 26 Jul 2009 02:21:32 +0200 -Subject: [PATCH 052/290] x86: Use generic rwsem_spinlocks on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4b707497d459b106def4745d5274422c62423fa7 +Subject: [PATCH 052/291] x86: Use generic rwsem_spinlocks on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. @@ -12,7 +13,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 04a45d6d0167..1b05ae86bdde 100644 +index e40ba59efe7f..f22e787329cf 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -264,8 +264,11 @@ config ARCH_MAY_HAVE_PC_FDC @@ -28,3 +29,6 @@ index 04a45d6d0167..1b05ae86bdde 100644 config GENERIC_CALIBRATE_DELAY def_bool y +-- +2.24.0 + 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 761c89c65..c48da4024 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,8 @@ +From 4f41629bce81abd28a76c4440368bd788b659e38 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 23 Jan 2014 14:45:59 +0100 -Subject: [PATCH 053/290] leds: trigger: disable CPU trigger on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=07924b23a92cab26f6271e8fb312ab8062dd29a6 +Subject: [PATCH 053/291] leds: trigger: disable CPU trigger on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz as it triggers: |CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.8-rt10 #141 @@ -35,3 +36,6 @@ index 4018af769969..b4ce8c115949 100644 help This allows LEDs to be controlled by active CPUs. This shows the active CPUs across an array of LEDs so you can see which +-- +2.24.0 + 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 fa93a69be..693572e4d 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,8 @@ +From 2c79ea262098448777ae80d2fbba5ef53ee41eb4 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 9 Apr 2015 15:23:01 +0200 -Subject: [PATCH 054/290] cpufreq: drop K8's driver from beeing selected -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c05ad13cbd22842369324d73f538911d319b97b3 +Subject: [PATCH 054/291] cpufreq: drop K8's driver from beeing selected +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Ralf posted a picture of a backtrace from @@ -33,3 +34,6 @@ index 35f71825b7f3..bb4a6160d0f7 100644 help This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors. Support for K10 and newer processors is now in acpi-cpufreq. +-- +2.24.0 + diff --git a/debian/patches-rt/0055-md-disable-bcache.patch b/debian/patches-rt/0055-md-disable-bcache.patch index fa75e0602..cb2bbdddf 100644 --- a/debian/patches-rt/0055-md-disable-bcache.patch +++ b/debian/patches-rt/0055-md-disable-bcache.patch @@ -1,10 +1,11 @@ +From 2abf64d8df05eb498ac85316bbe4e0ded713eff2 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 29 Aug 2013 11:48:57 +0200 -Subject: [PATCH 055/290] md: disable bcache +Subject: [PATCH 055/291] 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=57bf213cf62320f7d35e01f133973d9f37d06f82 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz It uses anon semaphores |drivers/md/bcache/request.c: In function ‘cached_dev_write_complete’: @@ -35,3 +36,6 @@ index f6e0a8b3a61e..18c03d79a442 100644 select CRC64 help Allows a block device to be used as cache for other devices; uses +-- +2.24.0 + 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 a7ba932e9..9d8d231b1 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,8 @@ +From 9dd14e0939b8782199db8b468b784df45d4c3f8f Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 26 Jul 2018 15:03:16 +0200 -Subject: [PATCH 056/290] efi: Disable runtime services on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9d785862624bbbe2fd77ed8c7e1026b21c498f0 +Subject: [PATCH 056/291] efi: Disable runtime services on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Based on meassurements the EFI functions get_variable / get_next_variable take up to 2us which looks okay. @@ -40,3 +41,6 @@ index 5db20908aa9c..1708505fdf5d 100644 static int __init setup_noefi(char *arg) { disable_runtime = true; +-- +2.24.0 + 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 5d748ff41..a43dfb448 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,14 +1,13 @@ +From 2633507842e7e7dd5c6b745727b4ec0d690ac274 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 22 Jul 2011 17:58:40 +0200 -Subject: [PATCH 057/290] printk: Add a printk kill switch -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d031b0863f46321ad8e8e7f1a8131c4703f9f006 +Subject: [PATCH 057/291] printk: Add a printk kill switch +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add a prinkt-kill-switch. This is used from (NMI) watchdog to ensure that it does not dead-lock with the early printk code. Signed-off-by: Thomas Gleixner -[Aurelien Jarno: Backport to 4.19.87 due to context changes caused by -00988218f8cb2 ("printk: lock/unlock console only for new logbuf entries")] --- include/linux/printk.h | 2 ++ kernel/printk/printk.c | 79 +++++++++++++++++++++++++++++++----------- @@ -32,7 +31,7 @@ index cf3eccfe1543..30ebf5f82a7c 100644 #ifdef CONFIG_PRINTK_NMI diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index d0d03223b45b..289605ff56e8 100644 +index 845efadaf7ec..0214d876c22d 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -405,6 +405,58 @@ DEFINE_RAW_SPINLOCK(logbuf_lock); @@ -170,3 +169,6 @@ index 71381168dede..685443375dc0 100644 if (hardlockup_panic) nmi_panic(regs, "Hard LOCKUP"); +-- +2.24.0 + 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 c68b897b8..d36bfa713 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,9 @@ +From 2f10ef0c470e409bfb0982641f133a396cd46281 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 2 Sep 2011 14:41:29 +0200 -Subject: [PATCH 058/290] printk: Add "force_early_printk" boot param to help +Subject: [PATCH 058/291] 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=e71d5b7d64fa1dd11f7ef2a2bd482f704d6de200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Gives me an option to screw printk and actually see what the machine says. @@ -16,7 +17,7 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org 1 file changed, 7 insertions(+) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 289605ff56e8..210cdac1458d 100644 +index 0214d876c22d..9a7f259dbb20 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -435,6 +435,13 @@ asmlinkage void early_printk(const char *fmt, ...) @@ -33,3 +34,6 @@ index 289605ff56e8..210cdac1458d 100644 void printk_kill(void) { printk_killswitch = true; +-- +2.24.0 + 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 1fb250c6b..2866dd735 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,8 @@ +From 9e91087e1107b31abd5e3b5ce129e47a16253707 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jul 2009 12:38:56 +0200 -Subject: [PATCH 059/290] preempt: Provide preempt_*_(no)rt variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=05ad3e257a527d9072919b02e0cff6078055eed0 +Subject: [PATCH 059/291] preempt: Provide preempt_*_(no)rt variants +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. @@ -47,3 +48,6 @@ index 3196d0e76719..f7a17fcc3fec 100644 #ifdef CONFIG_PREEMPT_NOTIFIERS struct preempt_notifier; +-- +2.24.0 + 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 54e8f8d57..238871072 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,9 @@ +From db36aad65079786bbb06ee45e5f5c34c02b3acaf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 8 Mar 2017 14:23:35 +0100 -Subject: [PATCH 060/290] futex: workaround migrate_disable/enable in different +Subject: [PATCH 060/291] futex: workaround migrate_disable/enable in different context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5182d12b0ac95cf21c3206e06142566001edacc6 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz migrate_disable()/migrate_enable() takes a different path in atomic() vs !atomic() context. These little hacks ensure that we don't underflow / overflow @@ -16,10 +17,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 19 insertions(+) diff --git a/kernel/futex.c b/kernel/futex.c -index afdc5eadce6e..304f07d08c95 100644 +index e75ad30aa7bc..5c8053098fc8 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2876,6 +2876,14 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2879,6 +2879,14 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, * before __rt_mutex_start_proxy_lock() is done. */ raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock); @@ -34,7 +35,7 @@ index afdc5eadce6e..304f07d08c95 100644 spin_unlock(q.lock_ptr); /* * __rt_mutex_start_proxy_lock() unconditionally enqueues the @rt_waiter -@@ -2884,6 +2892,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2887,6 +2895,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, */ ret = __rt_mutex_start_proxy_lock(&q.pi_state->pi_mutex, &rt_waiter, current); raw_spin_unlock_irq(&q.pi_state->pi_mutex.wait_lock); @@ -42,7 +43,7 @@ index afdc5eadce6e..304f07d08c95 100644 if (ret) { if (ret == 1) -@@ -3032,11 +3041,21 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3035,11 +3044,21 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) * rt_waiter. Also see the WARN in wake_futex_pi(). */ raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); @@ -64,3 +65,6 @@ index afdc5eadce6e..304f07d08c95 100644 put_pi_state(pi_state); /* +-- +2.24.0 + 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 08c34f73c..af5164512 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,8 @@ +From 071d70cf7a6d5ebc7050308f88be8777ad38f69a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 20 Jun 2011 09:03:47 +0200 -Subject: [PATCH 061/290] rt: Add local irq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed800ca05696e34346bf329c70ad735f9661075b +Subject: [PATCH 061/291] rt: Add local irq locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Introduce locallock. For !RT this maps to preempt_disable()/ local_irq_disable() so there is not much that changes. For RT this will @@ -335,3 +336,6 @@ index 70b7123f38c7..24421bf8c4b3 100644 /* minimum unit size, also is the maximum supported allocation size */ #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10) +-- +2.24.0 + 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 f81011e2a..2bc491150 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,8 @@ +From a242fd05b7f4d53e53733c9055315c30c3433fb1 Mon Sep 17 00:00:00 2001 From: Julia Cartwright Date: Mon, 7 May 2018 08:58:56 -0500 -Subject: [PATCH 062/290] locallock: provide {get,put}_locked_ptr() variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7c12c0b218da8cddfca3155c6481e425552bd89 +Subject: [PATCH 062/291] locallock: provide {get,put}_locked_ptr() variants +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Provide a set of locallocked accessors for pointers to per-CPU data; this is useful for dynamically-allocated per-CPU regions, for example. @@ -43,3 +44,6 @@ index d658c2552601..921eab83cd34 100644 #define local_lock_cpu(lvar) get_cpu() #define local_unlock_cpu(lvar) put_cpu() +-- +2.24.0 + 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 f200bd652..87656d51b 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,8 @@ +From 8c311c3b11935f5963075e2c1ede0b92863cfcf1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:34 -0500 -Subject: [PATCH 063/290] mm/scatterlist: Do not disable irqs on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be6d4affd5215ceaca4642942e1914cb32b9f6e2 +Subject: [PATCH 063/291] mm/scatterlist: Do not disable irqs on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz For -RT it is enough to keep pagefault disabled (which is currently handled by kmap_atomic()). @@ -24,3 +25,6 @@ index 8c3036c37ba0..336162c2813f 100644 kunmap_atomic(miter->addr); } else kunmap(miter->page); +-- +2.24.0 + 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 933f44ed9..ca259a289 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,8 @@ +From ebfdfb6456fcba5ed6d8dc35e0ca52db72a87cca Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 064/290] signal/x86: Delay calling signals in atomic -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43a0a930bf46705aab6bab3928e1644575a02148 +Subject: [PATCH 064/291] signal/x86: Delay calling signals in atomic +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using @@ -94,10 +95,10 @@ index 038d0faaa1d5..c87c11bfd9d9 100644 size_t sas_ss_size; unsigned int sas_ss_flags; diff --git a/kernel/signal.c b/kernel/signal.c -index d5a9646b3538..56edb0580a3a 100644 +index 6b9d4bbfa9df..3565221b4fac 100644 --- a/kernel/signal.c +++ b/kernel/signal.c -@@ -1268,8 +1268,8 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, +@@ -1272,8 +1272,8 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, * We don't want to have recursive SIGSEGV's etc, for example, * that is why we also clear SIGNAL_UNKILLABLE. */ @@ -108,7 +109,7 @@ index d5a9646b3538..56edb0580a3a 100644 { unsigned long int flags; int ret, blocked, ignored; -@@ -1298,6 +1298,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) +@@ -1302,6 +1302,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) return ret; } @@ -148,3 +149,6 @@ index d5a9646b3538..56edb0580a3a 100644 /* * Nuke all other threads in the group. */ +-- +2.24.0 + 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 1f1f84156..9f13f661e 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,8 @@ +From b86af89277597aa054eed1dc69417bc959f2b347 Mon Sep 17 00:00:00 2001 From: Yang Shi Date: Thu, 10 Dec 2015 10:58:51 -0800 -Subject: [PATCH 065/290] x86/signal: delay calling signals on 32bit -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dd9ded5353246ce29f11b52eb93e640de36c8ef7 +Subject: [PATCH 065/291] x86/signal: delay calling signals on 32bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz When running some ptrace single step tests on x86-32 machine, the below problem is triggered: @@ -43,3 +44,6 @@ index fb0438d06ca7..c00e27af2205 100644 #define ARCH_RT_DELAYS_SIGNAL_SEND #endif +-- +2.24.0 + 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 507ef917e..ebbab7165 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,8 @@ +From c0f5bfc27c440bc3c6cc4bc60045cd9c28d932ad Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 09:18:52 +0100 -Subject: [PATCH 066/290] buffer_head: Replace bh_uptodate_lock for -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ce9849ace4af19ce619849a3e33f1569442832c3 +Subject: [PATCH 066/291] buffer_head: Replace bh_uptodate_lock for -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -191,3 +192,6 @@ index 96225a77c112..8a1bcfb145d7 100644 /* * macro tricks to expand the set_buffer_foo(), clear_buffer_foo() * and buffer_foo() functions. +-- +2.24.0 + 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 f430cabea..37ea181f7 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,9 @@ +From 52fddde4582134cacf5a692ab51f3d0a43de2efa Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 10:11:25 +0100 -Subject: [PATCH 067/290] fs: jbd/jbd2: Make state lock and journal head lock +Subject: [PATCH 067/291] 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=b440221d5e434ba95db2a0b09d00162e95b55d93 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz bit_spin_locks break under RT. @@ -44,7 +45,7 @@ index 8a1bcfb145d7..5869330d1f38 100644 } diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h -index 1cf1b9b8e975..2e3266736094 100644 +index 268f3000d1b3..8f5d6ecb802e 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -347,32 +347,56 @@ static inline struct journal_head *bh2jh(struct buffer_head *bh) @@ -104,3 +105,6 @@ index 1cf1b9b8e975..2e3266736094 100644 } #define J_ASSERT(assert) BUG_ON(!(assert)) +-- +2.24.0 + 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 5a43ad045..7099a31c7 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,8 @@ +From 0ce3eda31c573ee39d4b22db00e980f5b2463d15 Mon Sep 17 00:00:00 2001 From: Paul Gortmaker Date: Fri, 21 Jun 2013 15:07:25 -0400 -Subject: [PATCH 068/290] list_bl: Make list head locking RT safe -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7de4956b65f4b43f98eca7ecd5400c01df56ba53 +Subject: [PATCH 068/291] list_bl: Make list head locking RT safe +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -115,3 +116,6 @@ index 3fc2cc57ba1b..69b659259bac 100644 } static inline bool hlist_bl_is_locked(struct hlist_bl_head *b) +-- +2.24.0 + 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 02e1706b2..fb937fbea 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,8 @@ +From 488f7a9c44a9ae28e258ca909a5d338820395943 Mon Sep 17 00:00:00 2001 From: Josh Cartwright Date: Thu, 31 Mar 2016 00:04:25 -0500 -Subject: [PATCH 069/290] list_bl: fixup bogus lockdep warning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f7a92e93b3e1260267a4fbe03c549dbe23303fe +Subject: [PATCH 069/291] list_bl: fixup bogus lockdep warning +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz At first glance, the use of 'static inline' seems appropriate for INIT_HLIST_BL_HEAD(). @@ -98,3 +99,6 @@ index 69b659259bac..0b5de7d9ffcf 100644 static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) { +-- +2.24.0 + 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 92f5fd91f..3e7352436 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,8 @@ +From 082d02b81690735ef8e3879a14bc3b2a01209aa1 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:57 -0500 -Subject: [PATCH 070/290] genirq: Disable irqpoll on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=470aeaaf1d6efae4d4a409a9d8143c408474f8b7 +Subject: [PATCH 070/291] genirq: Disable irqpoll on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Creates long latencies for no value @@ -37,3 +38,6 @@ index d867d6ddafdd..cd12ee86c01e 100644 irqfixup = 2; printk(KERN_WARNING "Misrouted IRQ fixup and polling support " "enabled\n"); +-- +2.24.0 + 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 ce77700ad..8ea398ac5 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,8 @@ +From a863959ff793c9eb01af152ae87968428df9cef1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 3 Apr 2011 11:57:29 +0200 -Subject: [PATCH 071/290] genirq: Force interrupt thread on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e83f2ae9e4c5b28fb9364ca7ee72d3f721f7f4ef +Subject: [PATCH 071/291] genirq: Force interrupt thread on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Force threaded_irqs and optimize the code (force_irqthreads) in regard to this. @@ -48,3 +49,6 @@ index 23bcfa71077f..3c26d0708709 100644 #endif static void __synchronize_hardirq(struct irq_desc *desc, bool sync_chip) +-- +2.24.0 + 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 815e4ebf8..cb6eac591 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,9 @@ +From 40ffd160bf0a9773c74fb394f24a3ff35c8d5c79 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 28 May 2018 15:24:20 +0200 -Subject: [PATCH 072/290] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 072/291] 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=6fdb74e76cbdf28ba0fc148ff245ebe35ffcb059 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. @@ -17,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 2d04bd2e1ced..332b48f38d1e 100644 +index 74fb5c338e8f..3b51ad4a6089 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1095,7 +1095,7 @@ static inline void prefetch_buddy(struct page *page) @@ -111,7 +112,7 @@ index 2d04bd2e1ced..332b48f38d1e 100644 } static void free_one_page(struct zone *zone, -@@ -2536,13 +2543,18 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) +@@ -2544,13 +2551,18 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; int to_drain, batch; @@ -131,7 +132,7 @@ index 2d04bd2e1ced..332b48f38d1e 100644 } #endif -@@ -2558,14 +2570,21 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) +@@ -2566,14 +2578,21 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) unsigned long flags; struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -155,7 +156,7 @@ index 2d04bd2e1ced..332b48f38d1e 100644 } /* -@@ -2787,7 +2806,10 @@ static void free_unref_page_commit(struct page *page, unsigned long pfn) +@@ -2795,7 +2814,10 @@ static void free_unref_page_commit(struct page *page, unsigned long pfn) pcp->count++; if (pcp->count >= pcp->high) { unsigned long batch = READ_ONCE(pcp->batch); @@ -167,3 +168,6 @@ index 2d04bd2e1ced..332b48f38d1e 100644 } } +-- +2.24.0 + 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 6d8312d5d..9acee6973 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,9 @@ +From b1dd295e939a677f850e22b8baf141e609797430 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 28 May 2018 15:24:21 +0200 -Subject: [PATCH 073/290] Split IRQ-off and zone->lock while freeing pages from +Subject: [PATCH 073/291] 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=4804f6aa4033e6fc037ec95843c4f4a7768b9d27 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Split the IRQ-off section while accessing the PCP list from zone->lock while freeing pages. @@ -17,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 332b48f38d1e..55cee9a17a36 100644 +index 3b51ad4a6089..49f7bb170b4d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1105,8 +1105,8 @@ static inline void prefetch_buddy(struct page *page) @@ -59,7 +60,7 @@ index 332b48f38d1e..55cee9a17a36 100644 __free_one_page(page, page_to_pfn(page), zone, 0, mt); trace_mm_page_pcpu_drain(page, 0, mt); } -@@ -2554,7 +2569,7 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) +@@ -2562,7 +2577,7 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) local_irq_restore(flags); if (to_drain > 0) @@ -68,7 +69,7 @@ index 332b48f38d1e..55cee9a17a36 100644 } #endif -@@ -2584,7 +2599,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) +@@ -2592,7 +2607,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) local_irq_restore(flags); if (count) @@ -77,7 +78,7 @@ index 332b48f38d1e..55cee9a17a36 100644 } /* -@@ -2777,7 +2792,8 @@ static bool free_unref_page_prepare(struct page *page, unsigned long pfn) +@@ -2785,7 +2800,8 @@ static bool free_unref_page_prepare(struct page *page, unsigned long pfn) return true; } @@ -87,7 +88,7 @@ index 332b48f38d1e..55cee9a17a36 100644 { struct zone *zone = page_zone(page); struct per_cpu_pages *pcp; -@@ -2806,10 +2822,8 @@ static void free_unref_page_commit(struct page *page, unsigned long pfn) +@@ -2814,10 +2830,8 @@ static void free_unref_page_commit(struct page *page, unsigned long pfn) pcp->count++; if (pcp->count >= pcp->high) { unsigned long batch = READ_ONCE(pcp->batch); @@ -99,7 +100,7 @@ index 332b48f38d1e..55cee9a17a36 100644 } } -@@ -2820,13 +2834,17 @@ void free_unref_page(struct page *page) +@@ -2828,13 +2842,17 @@ void free_unref_page(struct page *page) { unsigned long flags; unsigned long pfn = page_to_pfn(page); @@ -118,7 +119,7 @@ index 332b48f38d1e..55cee9a17a36 100644 } /* -@@ -2837,6 +2855,11 @@ void free_unref_page_list(struct list_head *list) +@@ -2845,6 +2863,11 @@ void free_unref_page_list(struct list_head *list) struct page *page, *next; unsigned long flags, pfn; int batch_count = 0; @@ -130,7 +131,7 @@ index 332b48f38d1e..55cee9a17a36 100644 /* Prepare pages for freeing */ list_for_each_entry_safe(page, next, list, lru) { -@@ -2849,10 +2872,12 @@ void free_unref_page_list(struct list_head *list) +@@ -2857,10 +2880,12 @@ void free_unref_page_list(struct list_head *list) local_irq_save(flags); list_for_each_entry_safe(page, next, list, lru) { unsigned long pfn = page_private(page); @@ -144,7 +145,7 @@ index 332b48f38d1e..55cee9a17a36 100644 /* * Guard against excessive IRQ disabled times when we get -@@ -2865,6 +2890,21 @@ void free_unref_page_list(struct list_head *list) +@@ -2873,6 +2898,21 @@ void free_unref_page_list(struct list_head *list) } } local_irq_restore(flags); @@ -166,3 +167,6 @@ index 332b48f38d1e..55cee9a17a36 100644 } /* +-- +2.24.0 + 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 4d069e205..749545057 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,8 @@ +From 0109dfb313df01af85a47ff0105038b1e7ddb7df Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 28 May 2018 15:24:22 +0200 -Subject: [PATCH 074/290] 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=b21ef7083e9bc886ce555c1b63633dd1ab69e039 +Subject: [PATCH 074/291] mm/SLxB: change list_lock to raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -613,3 +614,6 @@ index 9c3937c5ce38..ba20c68a9cfd 100644 } for (i = 0; i < t.count; i++) { +-- +2.24.0 + 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 87b41f922..bc9b924e0 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,9 @@ +From 19ad8a9e854096d3fac2791a2efea9224d34c773 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jun 2018 17:29:19 +0200 -Subject: [PATCH 075/290] mm/SLUB: delay giving back empty slubs to IRQ enabled +Subject: [PATCH 075/291] 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=89376b48dd9f6ddbfa127c973136e8308ea2f47d +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __free_slab() is invoked with disabled interrupts which increases the irq-off time while __free_pages() is doing the work. @@ -217,3 +218,6 @@ index ba20c68a9cfd..224663e20772 100644 if (debug_guardpage_minorder()) slub_max_order = 0; +-- +2.24.0 + 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 5321932b6..605ab061a 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,8 @@ +From 74ac2aa47d12cbb0d7bbb1cdc0ff04ea92341862 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:37 -0500 -Subject: [PATCH 076/290] mm: page_alloc: rt-friendly per-cpu pages -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d07a483196aff57e77d03c97a32ee47cb7af0d1 +Subject: [PATCH 076/291] mm: page_alloc: rt-friendly per-cpu pages +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. @@ -17,7 +18,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 55cee9a17a36..99b3861b1ef6 100644 +index 49f7bb170b4d..bff6c04eb359 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -60,6 +60,7 @@ @@ -60,7 +61,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 } static void __init __free_pages_boot_core(struct page *page, unsigned int order) -@@ -2560,13 +2573,13 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) +@@ -2568,13 +2581,13 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) int to_drain, batch; LIST_HEAD(dst); @@ -76,7 +77,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 if (to_drain > 0) free_pcppages_bulk(zone, &dst, false); -@@ -2588,7 +2601,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) +@@ -2596,7 +2609,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) LIST_HEAD(dst); int count; @@ -85,7 +86,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 pset = per_cpu_ptr(zone->pageset, cpu); pcp = &pset->pcp; -@@ -2596,7 +2609,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) +@@ -2604,7 +2617,7 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) if (count) isolate_pcp_pages(count, pcp, &dst); @@ -94,7 +95,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 if (count) free_pcppages_bulk(zone, &dst, false); -@@ -2634,6 +2647,7 @@ void drain_local_pages(struct zone *zone) +@@ -2642,6 +2655,7 @@ void drain_local_pages(struct zone *zone) drain_pages(cpu); } @@ -102,7 +103,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 static void drain_local_pages_wq(struct work_struct *work) { /* -@@ -2647,6 +2661,7 @@ static void drain_local_pages_wq(struct work_struct *work) +@@ -2655,6 +2669,7 @@ static void drain_local_pages_wq(struct work_struct *work) drain_local_pages(NULL); preempt_enable(); } @@ -110,7 +111,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 /* * Spill all the per-cpu pages from all CPUs back into the buddy allocator. -@@ -2713,7 +2728,14 @@ void drain_all_pages(struct zone *zone) +@@ -2721,7 +2736,14 @@ void drain_all_pages(struct zone *zone) else cpumask_clear_cpu(cpu, &cpus_with_pcps); } @@ -126,7 +127,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 for_each_cpu(cpu, &cpus_with_pcps) { struct work_struct *work = per_cpu_ptr(&pcpu_drain, cpu); INIT_WORK(work, drain_local_pages_wq); -@@ -2721,6 +2743,7 @@ void drain_all_pages(struct zone *zone) +@@ -2729,6 +2751,7 @@ void drain_all_pages(struct zone *zone) } for_each_cpu(cpu, &cpus_with_pcps) flush_work(per_cpu_ptr(&pcpu_drain, cpu)); @@ -134,7 +135,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 mutex_unlock(&pcpu_drain_mutex); } -@@ -2840,9 +2863,9 @@ void free_unref_page(struct page *page) +@@ -2848,9 +2871,9 @@ void free_unref_page(struct page *page) if (!free_unref_page_prepare(page, pfn)) return; @@ -146,7 +147,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 if (!list_empty(&dst)) free_pcppages_bulk(zone, &dst, false); } -@@ -2869,7 +2892,7 @@ void free_unref_page_list(struct list_head *list) +@@ -2877,7 +2900,7 @@ void free_unref_page_list(struct list_head *list) set_page_private(page, pfn); } @@ -155,7 +156,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 list_for_each_entry_safe(page, next, list, lru) { unsigned long pfn = page_private(page); enum zone_type type; -@@ -2884,12 +2907,12 @@ void free_unref_page_list(struct list_head *list) +@@ -2892,12 +2915,12 @@ void free_unref_page_list(struct list_head *list) * a large list of pages to free. */ if (++batch_count == SWAP_CLUSTER_MAX) { @@ -171,7 +172,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 for (i = 0; i < __MAX_NR_ZONES; ) { struct page *page; -@@ -3038,7 +3061,7 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone, +@@ -3046,7 +3069,7 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone, struct page *page; unsigned long flags; @@ -180,7 +181,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 pcp = &this_cpu_ptr(zone->pageset)->pcp; list = &pcp->lists[migratetype]; page = __rmqueue_pcplist(zone, migratetype, pcp, list); -@@ -3046,7 +3069,7 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone, +@@ -3054,7 +3077,7 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone, __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); zone_statistics(preferred_zone, zone); } @@ -189,7 +190,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 return page; } -@@ -3073,7 +3096,7 @@ struct page *rmqueue(struct zone *preferred_zone, +@@ -3081,7 +3104,7 @@ struct page *rmqueue(struct zone *preferred_zone, * allocate greater than order-1 page units with __GFP_NOFAIL. */ WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); @@ -198,7 +199,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 do { page = NULL; -@@ -3093,14 +3116,14 @@ struct page *rmqueue(struct zone *preferred_zone, +@@ -3101,14 +3124,14 @@ struct page *rmqueue(struct zone *preferred_zone, __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order); zone_statistics(preferred_zone, zone); @@ -215,7 +216,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 return NULL; } -@@ -8096,7 +8119,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -8099,7 +8122,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -224,7 +225,7 @@ index 55cee9a17a36..99b3861b1ef6 100644 if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -8105,7 +8128,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -8108,7 +8131,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } @@ -233,3 +234,6 @@ index 55cee9a17a36..99b3861b1ef6 100644 } #ifdef CONFIG_MEMORY_HOTREMOVE +-- +2.24.0 + 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 e045eea3f..ac2f3fb03 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,8 @@ +From 82680c2474fe5d30728dcb7680d590e65182d84e Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:51 -0500 -Subject: [PATCH 077/290] mm/swap: Convert to percpu locked -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22720b62b26a1291196199a2ac4f37ba1970d076 +Subject: [PATCH 077/291] mm/swap: Convert to percpu locked +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Replace global locks (get_cpu + local_irq_save) with "local_locks()". Currently there is one of for "rotate" and one for "swap". @@ -16,7 +17,7 @@ Signed-off-by: Thomas Gleixner 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/include/linux/swap.h b/include/linux/swap.h -index 7bd0a6f2ac2b..e643672fa802 100644 +index ee8f9f554a9e..2ad000e362bd 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -12,6 +12,7 @@ @@ -55,10 +56,10 @@ index 5079ddbec8f9..c40d3a13cbbd 100644 cc->last_migrated_pfn = 0; } diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 99b3861b1ef6..1679f5883307 100644 +index bff6c04eb359..f7d30f995bc5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -7207,8 +7207,9 @@ void __init free_area_init(unsigned long *zones_size) +@@ -7212,8 +7212,9 @@ void __init free_area_init(unsigned long *zones_size) static int page_alloc_cpu_dead(unsigned int cpu) { @@ -205,3 +206,6 @@ index 45fdbfb6b2a6..92f994b962f0 100644 } #ifdef CONFIG_SMP +-- +2.24.0 + 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 c3f020536..c73e0aa12 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,8 @@ +From 9f92e71858249e17821b12562d9a9436e59c78ba Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 27 May 2016 15:03:28 +0200 -Subject: [PATCH 078/290] mm: perform lru_add_drain_all() remotely -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=35d05460786e3b7a320e89aae8a90ae5ee7c758f +Subject: [PATCH 078/291] mm: perform lru_add_drain_all() remotely +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -103,3 +104,6 @@ index 92f994b962f0..3885645a45ce 100644 mutex_unlock(&lock); } +-- +2.24.0 + 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 d2fb41128..b491f7d33 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,9 @@ +From c76d6094a239d12a17547e882af4b200f31c5a5c Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:13 -0500 -Subject: [PATCH 079/290] mm/vmstat: Protect per cpu variables with preempt +Subject: [PATCH 079/291] 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=1b7191af05332f5fa21d4da8c3c4fb7c35bdb0fe +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -40,7 +41,7 @@ index f25cef84b41d..febee8649220 100644 static inline void count_vm_events(enum vm_event_item item, long delta) diff --git a/mm/vmstat.c b/mm/vmstat.c -index 4a387937f9f5..0cd11c5e3999 100644 +index ce81b0a7d018..cfa2a3bbdf91 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -320,6 +320,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, @@ -139,3 +140,6 @@ index 4a387937f9f5..0cd11c5e3999 100644 } void __dec_zone_page_state(struct page *page, enum zone_stat_item item) +-- +2.24.0 + 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 25760b1e9..5856676a3 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,9 @@ +From 78052a354c73655898ed1cefbe47eb18954eebf6 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Sat, 1 Oct 2011 18:58:13 -0700 -Subject: [PATCH 080/290] ARM: Initialize split page table locks for vector +Subject: [PATCH 080/291] 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=f092992f9980fcf99ec12820e7350851848fef8a +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a @@ -70,3 +71,6 @@ index 82ab015bf42b..8d3c7ce34c24 100644 #ifdef CONFIG_KUSER_HELPERS /* * The vectors page is always readable from user space for the +-- +2.24.0 + 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 f68d1081e..4615c74a0 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,8 @@ +From e2165a1c6c5a4c2b80c3b5131bdd7c9531e5966d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 25 Oct 2012 10:32:35 +0100 -Subject: [PATCH 081/290] mm: Enable SLUB for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ee23601786b2fb75dfb6aaed6da438321511261 +Subject: [PATCH 081/291] mm: Enable SLUB for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Avoid the memory allocation in IRQ section @@ -36,3 +37,6 @@ index 224663e20772..cbe47408c6eb 100644 } /* +-- +2.24.0 + 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 57f0a405f..94dcd1c82 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,8 @@ +From df25287facb539725b686abab7eb72e03d137972 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 9 Jan 2013 12:08:15 +0100 -Subject: [PATCH 082/290] slub: Enable irqs for __GFP_WAIT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d2a7aef26031e05ab0f7d78fc15f838459aa348 +Subject: [PATCH 082/291] slub: Enable irqs for __GFP_WAIT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz SYSTEM_RUNNING might be too late for enabling interrupts. Allocations with GFP_WAIT can happen before that. So use this as an indicator. @@ -42,3 +43,6 @@ index cbe47408c6eb..81c32ceab228 100644 local_irq_disable(); if (!page) return NULL; +-- +2.24.0 + 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 814950d65..906890272 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,8 @@ +From 3f7490c09bf723709d2ab78d73e8af75d175d1f6 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 15 Apr 2015 19:00:47 +0200 -Subject: [PATCH 083/290] slub: Disable SLUB_CPU_PARTIAL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31c858cb39a8bcd260d166bc3963e3dfe201c547 +Subject: [PATCH 083/291] slub: Disable SLUB_CPU_PARTIAL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 |in_atomic(): 1, irqs_disabled(): 0, pid: 87, name: rcuop/7 @@ -48,3 +49,6 @@ index 61e8b531649b..b4e88fb19c26 100644 bool "SLUB per cpu partial cache" help Per cpu partial caches accellerate objects allocation and freeing +-- +2.24.0 + 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 23e5d4d45..e87a5c316 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,9 @@ +From 1465f1fb6c510e3b455896a89b990af4f7d31dd8 Mon Sep 17 00:00:00 2001 From: Yang Shi Date: Wed, 30 Oct 2013 11:48:33 -0700 -Subject: [PATCH 084/290] mm/memcontrol: Don't call schedule_work_on in +Subject: [PATCH 084/291] 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=c5685864e74efa64dff382c12b2b36c2b7d27c2f +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The following trace is triggered when running ltp oom test cases: @@ -48,7 +49,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 65da189a433b..cc5172096d2d 100644 +index 3a3d109dce21..cf9e81fb342d 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2082,7 +2082,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) @@ -69,3 +70,6 @@ index 65da189a433b..cc5172096d2d 100644 mutex_unlock(&percpu_charge_mutex); } +-- +2.24.0 + 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 1a368f4ce..3352afa1b 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,9 @@ +From 4e9211f677ea1a456883db3c665ffd31a8a974f2 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 28 Jan 2015 17:14:16 +0100 -Subject: [PATCH 085/290] mm/memcontrol: Replace local_irq_disable with local +Subject: [PATCH 085/291] 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=37c842416ddb1f501d2a36a2504945b5d79e4a5d +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz There are a few local_irq_disable() which then take sleeping locks. This patch converts them local locks. @@ -13,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index cc5172096d2d..90e67c468e76 100644 +index cf9e81fb342d..421ac74450f6 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -69,6 +69,7 @@ @@ -33,7 +34,7 @@ index cc5172096d2d..90e67c468e76 100644 /* Whether legacy memory+swap accounting is active */ static bool do_memsw_account(void) { -@@ -4913,12 +4916,12 @@ static int mem_cgroup_move_account(struct page *page, +@@ -4922,12 +4925,12 @@ static int mem_cgroup_move_account(struct page *page, ret = 0; @@ -48,7 +49,7 @@ index cc5172096d2d..90e67c468e76 100644 out_unlock: unlock_page(page); out: -@@ -6037,10 +6040,10 @@ void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, +@@ -6046,10 +6049,10 @@ void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, commit_charge(page, memcg, lrucare); @@ -61,7 +62,7 @@ index cc5172096d2d..90e67c468e76 100644 if (do_memsw_account() && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; -@@ -6109,7 +6112,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -6118,7 +6121,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) memcg_oom_recover(ug->memcg); } @@ -70,7 +71,7 @@ index cc5172096d2d..90e67c468e76 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); -@@ -6117,7 +6120,7 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -6126,7 +6129,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 +80,7 @@ index cc5172096d2d..90e67c468e76 100644 if (!mem_cgroup_is_root(ug->memcg)) css_put_many(&ug->memcg->css, nr_pages); -@@ -6280,10 +6283,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) +@@ -6289,10 +6292,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) commit_charge(newpage, memcg, false); @@ -92,7 +93,7 @@ index cc5172096d2d..90e67c468e76 100644 } DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key); -@@ -6475,6 +6478,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -6484,6 +6487,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 +101,7 @@ index cc5172096d2d..90e67c468e76 100644 VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -6520,13 +6524,17 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -6529,13 +6533,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. */ @@ -118,3 +119,6 @@ index cc5172096d2d..90e67c468e76 100644 } /** +-- +2.24.0 + 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 c2b593c0f..adceb6de4 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,8 @@ +From b76cb69dc727feca28a95ed7912d3c1a32b7f9b3 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Tue, 22 Mar 2016 11:16:09 +0100 -Subject: [PATCH 086/290] 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=c50e41d890c9520ee9c04a91becc29f12bdfca6c +Subject: [PATCH 086/291] mm/zsmalloc: copy with get_cpu_var() and locking +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz get_cpu_var() disables preemption and triggers a might_sleep() splat later. This is replaced with get_locked_var(). @@ -197,3 +198,6 @@ index 4b9063d12b93..1a2f6c13acbd 100644 migrate_read_unlock(zspage); unpin_tag(handle); +-- +2.24.0 + 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 bdb3e38c7..a8b3a7ddd 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,9 @@ +From b12c6aa5ca0abacc6642ef5f9664a38eebc659e0 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 11 Dec 2018 21:53:43 +0100 -Subject: [PATCH 087/290] x86/mm/pat: disable preemption __split_large_page() +Subject: [PATCH 087/291] 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=bfec83b70be39a512d8519c2bb34f4cb620cb6b3 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Commit "x86/mm/pat: Disable preemption around __flush_tlb_all()" added a warning if __flush_tlb_all() is invoked in preemptible context. On !RT @@ -56,3 +57,6 @@ index e2d4b25c7aa4..9626ebb9e3c8 100644 spin_unlock(&pgd_lock); return 0; +-- +2.24.0 + 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 9d0ea2e73..ec08a7c6f 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,8 @@ +From 3bb3dc105ca3567ed9a3c0949c34212b6e1e29ab Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 25 Jan 2017 16:34:27 +0100 -Subject: [PATCH 088/290] radix-tree: use local locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b762851e97a0699769d8cac2a637edd30c800d1f +Subject: [PATCH 088/291] radix-tree: use local locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The preload functionality uses per-CPU variables and preempt-disable to ensure that it does not switch CPUs during its usage. This patch adds @@ -18,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/include/linux/idr.h b/include/linux/idr.h -index 3ec8628ce17f..54af68158f7d 100644 +index b6c6151c7446..81c9df5c04fa 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h @@ -169,10 +169,7 @@ static inline bool idr_is_empty(const struct idr *idr) @@ -59,7 +60,7 @@ index 34149e8b5f73..affb0fc4c5b6 100644 int radix_tree_split(struct radix_tree_root *, unsigned long index, unsigned new_order); diff --git a/lib/radix-tree.c b/lib/radix-tree.c -index bc03ecc4dfd2..44257463f683 100644 +index e5cab5c4e383..9309e813bc1f 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c @@ -38,7 +38,7 @@ @@ -170,3 +171,6 @@ index bc03ecc4dfd2..44257463f683 100644 if (!this_cpu_read(ida_bitmap)) { struct ida_bitmap *bitmap = kzalloc(sizeof(*bitmap), gfp); +-- +2.24.0 + 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 c02d2e1e1..568f19bcc 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,8 @@ +From ae4363243810267b721cd1cc91172504af20f458 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: [PATCH 089/290] timers: Prepare for full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a8b88eb0c9c0171975f889b404f3f0d5e8713e82 +Subject: [PATCH 089/291] timers: Prepare for full preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +30,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 a33c2c18628d..520640973942 100644 +index e6022cc2605b..986ed04425be 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -498,11 +498,14 @@ void resched_cpu(int cpu) @@ -170,3 +171,6 @@ index ae64cb819a9a..9019c9caf146 100644 } } +-- +2.24.0 + 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 2201f0233..37d48469d 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,8 @@ +From 69f6cf117a94ffa2e96367a29529767dcb1d8e01 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 6 Nov 2011 12:26:18 +0100 -Subject: [PATCH 090/290] x86: kvm Require const tsc for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61807edd278df58c12c72f58fd6aeae90ef41013 +Subject: [PATCH 090/291] x86: kvm Require const tsc for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Non constant TSC is a nightmare on bare metal already, but with virtualization it becomes a complete disaster because the workarounds @@ -14,10 +15,10 @@ Signed-off-by: Thomas Gleixner 1 file changed, 7 insertions(+) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 6ae8a013af31..c936e1848f28 100644 +index 353f63f3b262..2611898419ff 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -6787,6 +6787,13 @@ int kvm_arch_init(void *opaque) +@@ -6832,6 +6832,13 @@ int kvm_arch_init(void *opaque) goto out; } @@ -31,3 +32,6 @@ index 6ae8a013af31..c936e1848f28 100644 r = kvm_mmu_module_init(); if (r) goto out_free_percpu; +-- +2.24.0 + 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 a81d3fc95..a76c2201d 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,8 @@ +From 841762dfdf68aeabfd6b0fa45b6337f55e632550 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 4 Oct 2017 10:24:23 +0200 -Subject: [PATCH 091/290] 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=10b9bce593adcb0971345750199a4c428b95be36 +Subject: [PATCH 091/291] pci/switchtec: Don't use completion's wait queue +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -109,3 +110,6 @@ index 72db2e0ebced..77d4fb86d05b 100644 list_del_init(&stuser->list); stuser_put(stuser); } +-- +2.24.0 + 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 964ef289f..744d288ed 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,11 @@ +From 4d037c94e1a96fbb44377bb71fb62678ddeadf5f Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 28 Oct 2013 12:19:57 +0100 -Subject: [PATCH 092/290] wait.h: include atomic.h +Subject: [PATCH 092/291] 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=6a750424efdceb04843eb5c9be84b0e070985534 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz | CC init/main.o |In file included from include/linux/mmzone.h:9:0, @@ -36,3 +37,6 @@ index ed7c122cb31f..2b5ef8e94d19 100644 typedef struct wait_queue_entry wait_queue_entry_t; +-- +2.24.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 305609095..601c8d6cf 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,8 @@ +From 678ffba561d271dc2b667925993a805e3e704fa6 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Fri, 11 Jul 2014 15:26:11 +0200 -Subject: [PATCH 093/290] work-simple: Simple work queue implemenation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b23368647741af52610dd7e6e8955ef23eab50ea +Subject: [PATCH 093/291] work-simple: Simple work queue implemenation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Provides a framework for enqueuing callbacks from irq context PREEMPT_RT_FULL safe. The callbacks are executed in kthread context. @@ -240,3 +241,6 @@ index 000000000000..a5b89fdacf19 + mutex_unlock(&worker_mutex); +} +EXPORT_SYMBOL_GPL(swork_put); +-- +2.24.0 + 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 4fd53f134..8c4e935a8 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,9 @@ +From e630efe32f11a9b6bb1cd2125d72c2042aabdf79 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 10 Sep 2018 18:00:31 +0200 -Subject: [PATCH 094/290] work-simple: drop a shit statement in +Subject: [PATCH 094/291] 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=4333ab9ff36a8ec80e8b72a146602c8bf41acf24 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Dan Carpenter reported | smatch warnings: @@ -31,3 +32,6 @@ index a5b89fdacf19..c90d14b9b126 100644 static DEFINE_MUTEX(worker_mutex); static struct sworker *glob_worker; +-- +2.24.0 + 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 861221176..6ca2240d0 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,8 @@ +From 501d25c451ea4875bcaaf1e03db60549693b5b02 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 11 Jan 2013 11:23:51 +0100 -Subject: [PATCH 095/290] completion: Use simple wait queues -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=98054900c031519e7190d077f9875ef459fcc8e7 +Subject: [PATCH 095/291] completion: Use simple wait queues +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -319,10 +320,10 @@ index a1ad5b7d5521..755a58084978 100644 } EXPORT_SYMBOL(completion_done); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 520640973942..ba6d51c7df61 100644 +index 986ed04425be..584978640512 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7153,7 +7153,10 @@ void migrate_disable(void) +@@ -7154,7 +7154,10 @@ void migrate_disable(void) return; } #ifdef CONFIG_SCHED_DEBUG @@ -334,7 +335,7 @@ index 520640973942..ba6d51c7df61 100644 #endif if (p->migrate_disable) { -@@ -7183,7 +7186,10 @@ void migrate_enable(void) +@@ -7184,7 +7187,10 @@ void migrate_enable(void) } #ifdef CONFIG_SCHED_DEBUG @@ -385,3 +386,6 @@ index 66b59ac77c22..c7cb30cdd1b7 100644 { wait->task = current; if (list_empty(&wait->task_list)) +-- +2.24.0 + 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 22c1c485e..73b5fcfd0 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,8 @@ +From 9765896344d21aacd56cf3e8a1f2f1c1e30779cf Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 16 Feb 2015 18:49:10 +0100 -Subject: [PATCH 096/290] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=824fb4cfaff29a2b6013b74084736a71b3c3647a +Subject: [PATCH 096/291] fs/aio: simple simple work +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:768 |in_atomic(): 1, irqs_disabled(): 0, pid: 26, name: rcuos/2 @@ -83,3 +84,6 @@ index 911e23087dfb..16dcf8521c2c 100644 static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm) { unsigned i, new_nr; +-- +2.24.0 + diff --git a/debian/patches-rt/0097-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch b/debian/patches-rt/0097-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch index e1dbbb004..27ae5be67 100644 --- a/debian/patches-rt/0097-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch +++ b/debian/patches-rt/0097-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch @@ -1,8 +1,9 @@ +From 3b496e3467c3a76558a4d6695e60bc78481b30db Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 21 Aug 2013 17:48:46 +0200 -Subject: [PATCH 097/290] genirq: Do not invoke the affinity callback via a +Subject: [PATCH 097/291] genirq: Do not invoke the affinity callback via a workqueue on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59cce101e50e9b0f9d6b978848521f8dc629b260 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Joe Korty reported, that __irq_set_affinity_locked() schedules a workqueue while holding a rawlock which results in a might_sleep() @@ -136,3 +137,6 @@ index 3c26d0708709..eadcbfbd434a 100644 kref_put(&old_notify->kref, old_notify->release); } +-- +2.24.0 + diff --git a/debian/patches-rt/0098-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch b/debian/patches-rt/0098-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch index 505705dae..d5ec4572e 100644 --- a/debian/patches-rt/0098-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch +++ b/debian/patches-rt/0098-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch @@ -1,8 +1,9 @@ +From 46d2a1a8dce9bfd02328affe4407e51245bbf34d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 15 Nov 2017 17:29:51 +0100 -Subject: [PATCH 098/290] time/hrtimer: avoid schedule_work() with interrupts +Subject: [PATCH 098/291] time/hrtimer: avoid schedule_work() with interrupts disabled -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=60f0f171fd7d0f16aef78b604efb7156d5d1ad68 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The NOHZ code tries to schedule a workqueue with interrupts disabled. Since this does not work -RT I am switching it to swork instead. @@ -54,3 +55,6 @@ index 9019c9caf146..3fab1c50bf1b 100644 int timer_migration_handler(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) +-- +2.24.0 + diff --git a/debian/patches-rt/0099-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch b/debian/patches-rt/0099-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch index 5541fe68c..ad0587921 100644 --- a/debian/patches-rt/0099-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch +++ b/debian/patches-rt/0099-hrtimer-consolidate-hrtimer_init-hrtimer_init_sleepe.patch @@ -1,8 +1,9 @@ +From 60c6d506604f96849de575eab0339febb39c5058 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 3 Jul 2018 11:25:41 +0200 -Subject: [PATCH 099/290] hrtimer: consolidate hrtimer_init() + +Subject: [PATCH 099/291] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() calls -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=956094850303bfde3d1c8d990ce9a247053d2c63 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz hrtimer_init_sleeper() calls require a prior initialisation of the hrtimer object with hrtimer_init(). Lets make the initialisation of @@ -125,10 +126,10 @@ index 2b5ef8e94d19..94bd2e841de6 100644 hrtimer_start_range_ns(&__t.timer, timeout, \ current->timer_slack_ns, \ diff --git a/kernel/futex.c b/kernel/futex.c -index 304f07d08c95..ccf933ac2997 100644 +index 5c8053098fc8..23e1f8a478e8 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2701,10 +2701,9 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, +@@ -2704,10 +2704,9 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, if (abs_time) { to = &timeout; @@ -142,7 +143,7 @@ index 304f07d08c95..ccf933ac2997 100644 hrtimer_set_expires_range_ns(&to->timer, *abs_time, current->timer_slack_ns); } -@@ -2803,9 +2802,8 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2806,9 +2805,8 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, if (time) { to = &timeout; @@ -154,7 +155,7 @@ index 304f07d08c95..ccf933ac2997 100644 hrtimer_set_expires(&to->timer, *time); } -@@ -3242,10 +3240,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3245,10 +3243,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, if (abs_time) { to = &timeout; @@ -284,3 +285,6 @@ index 092fa3d75b32..9d472d626aaa 100644 do { set_current_state(TASK_INTERRUPTIBLE); hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS); +-- +2.24.0 + diff --git a/debian/patches-rt/0100-hrtimers-Prepare-full-preemption.patch b/debian/patches-rt/0100-hrtimers-Prepare-full-preemption.patch index 11a4f4f6f..9ca5d2464 100644 --- a/debian/patches-rt/0100-hrtimers-Prepare-full-preemption.patch +++ b/debian/patches-rt/0100-hrtimers-Prepare-full-preemption.patch @@ -1,7 +1,8 @@ +From bc582bb1287556dc87a84d176e9bc098647196a3 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: [PATCH 100/290] hrtimers: Prepare full preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59ed0327f0e08449f5d06eb111e02484791163e8 +Subject: [PATCH 100/291] hrtimers: Prepare full preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Make cancellation of a running callback in softirq context safe against preemption. @@ -284,3 +285,6 @@ index 5a01c4fdbfef..a5ec421e3437 100644 goto retry_delete; } list_del(&timer->list); +-- +2.24.0 + diff --git a/debian/patches-rt/0101-hrtimer-by-timers-by-default-into-the-softirq-contex.patch b/debian/patches-rt/0101-hrtimer-by-timers-by-default-into-the-softirq-contex.patch index 57c874a15..17c267ec9 100644 --- a/debian/patches-rt/0101-hrtimer-by-timers-by-default-into-the-softirq-contex.patch +++ b/debian/patches-rt/0101-hrtimer-by-timers-by-default-into-the-softirq-contex.patch @@ -1,8 +1,9 @@ +From e9a7b277a228256c44836983088b956e32bf3dda Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 3 Jul 2009 08:44:31 -0500 -Subject: [PATCH 101/290] hrtimer: by timers by default into the softirq +Subject: [PATCH 101/291] 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=7c5afdf61b2f178567e499bc4aec5050c12a82ce +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +66,7 @@ index 73ad7309436a..2bdb047c7656 100644 /* diff --git a/kernel/events/core.c b/kernel/events/core.c -index 625ba462e5bb..9e17b38fdb98 100644 +index 460d5fd3ec4e..60a883088961 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -1102,7 +1102,7 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu) @@ -87,7 +88,7 @@ index 625ba462e5bb..9e17b38fdb98 100644 /* diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index ba6d51c7df61..86839f848805 100644 +index 584978640512..2f6b4365d070 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 +114,10 @@ index 4b13df38c069..974a8f9b615a 100644 } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index da5d60d25c27..5bbc77b948e7 100644 +index 6e6d9e999814..21cf60c360e8 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4967,9 +4967,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) +@@ -4914,9 +4914,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); @@ -231,3 +232,6 @@ index bbc4940f21af..defd493ba967 100644 hrtimer->function = watchdog_timer_fn; hrtimer_start(hrtimer, ns_to_ktime(sample_period), HRTIMER_MODE_REL_PINNED); +-- +2.24.0 + diff --git a/debian/patches-rt/0102-sched-fair-Make-the-hrtimers-non-hard-again.patch b/debian/patches-rt/0102-sched-fair-Make-the-hrtimers-non-hard-again.patch index 05591e773..35780f32f 100644 --- a/debian/patches-rt/0102-sched-fair-Make-the-hrtimers-non-hard-again.patch +++ b/debian/patches-rt/0102-sched-fair-Make-the-hrtimers-non-hard-again.patch @@ -1,7 +1,8 @@ +From 9a3901666d90285bd44692fb723d6d1b8b3d8521 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 8 Jan 2019 12:31:06 +0100 -Subject: [PATCH 102/290] sched/fair: Make the hrtimers non-hard again -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02fb0a5ce45172d0c7f8f6ad175c42016a7764fe +Subject: [PATCH 102/291] sched/fair: Make the hrtimers non-hard again +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Since commit "sched/fair: Robustify CFS-bandwidth timer locking" both hrtimer can run in softirq context because now interrupts are disabled @@ -13,10 +14,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 5bbc77b948e7..da5d60d25c27 100644 +index 21cf60c360e8..6e6d9e999814 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4967,9 +4967,9 @@ void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) +@@ -4914,9 +4914,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); @@ -28,3 +29,6 @@ index 5bbc77b948e7..da5d60d25c27 100644 cfs_b->slack_timer.function = sched_cfs_slack_timer; cfs_b->distribute_running = 0; } +-- +2.24.0 + diff --git a/debian/patches-rt/0103-hrtimer-Move-schedule_work-call-to-helper-thread.patch b/debian/patches-rt/0103-hrtimer-Move-schedule_work-call-to-helper-thread.patch index 4e0452c64..98ba5239d 100644 --- a/debian/patches-rt/0103-hrtimer-Move-schedule_work-call-to-helper-thread.patch +++ b/debian/patches-rt/0103-hrtimer-Move-schedule_work-call-to-helper-thread.patch @@ -1,7 +1,8 @@ +From c4d00d0031d5e7a19f484b59cb25a62bf933b835 Mon Sep 17 00:00:00 2001 From: Yang Shi Date: Mon, 16 Sep 2013 14:09:19 -0700 -Subject: [PATCH 103/290] hrtimer: Move schedule_work call to helper thread -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d5e0a0fe2ae5fd7d7eec849bd5aaf49d254da370 +Subject: [PATCH 103/291] hrtimer: Move schedule_work call to helper thread +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz When run ltp leapsec_timer test, the following call trace is caught: @@ -92,3 +93,6 @@ index abf24e60b6e8..c72eb8bfc471 100644 #else +-- +2.24.0 + diff --git a/debian/patches-rt/0104-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch b/debian/patches-rt/0104-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch index 4b54a1c2a..6618e9367 100644 --- a/debian/patches-rt/0104-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch +++ b/debian/patches-rt/0104-hrtimer-move-state-change-before-hrtimer_cancel-in-d.patch @@ -1,8 +1,9 @@ +From d8090cc3b4f54bd967f84b49b9f6cf25a72e61a1 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 6 Dec 2018 10:15:13 +0100 -Subject: [PATCH 104/290] hrtimer: move state change before hrtimer_cancel in +Subject: [PATCH 104/291] 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=92732a32e51eff3a6dfb87b0c63295af9e5c69f3 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -45,3 +46,6 @@ index c72eb8bfc471..cfa3599fa789 100644 if (!t->task) return 0; +-- +2.24.0 + diff --git a/debian/patches-rt/0105-posix-timers-Thread-posix-cpu-timers-on-rt.patch b/debian/patches-rt/0105-posix-timers-Thread-posix-cpu-timers-on-rt.patch index 9da9537c6..58c39024f 100644 --- a/debian/patches-rt/0105-posix-timers-Thread-posix-cpu-timers-on-rt.patch +++ b/debian/patches-rt/0105-posix-timers-Thread-posix-cpu-timers-on-rt.patch @@ -1,7 +1,8 @@ +From ba97fe18b52206c31cfc5bc128734bb2c121e790 Mon Sep 17 00:00:00 2001 From: John Stultz Date: Fri, 3 Jul 2009 08:29:58 -0500 -Subject: [PATCH 105/290] posix-timers: Thread posix-cpu-timers on -rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e2963af9e43c937bbd8ade2d14c9031bc7fe64b3 +Subject: [PATCH 105/291] posix-timers: Thread posix-cpu-timers on -rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -57,10 +58,10 @@ index 0b49b9cf5571..9e3362748214 100644 .thread_group = LIST_HEAD_INIT(init_task.thread_group), .thread_node = LIST_HEAD_INIT(init_signals.thread_head), diff --git a/kernel/fork.c b/kernel/fork.c -index 173e010cba45..c940fee1426c 100644 +index 8c285876eb52..b3744a043f46 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -1585,6 +1585,9 @@ static void rt_mutex_init_task(struct task_struct *p) +@@ -1580,6 +1580,9 @@ static void rt_mutex_init_task(struct task_struct *p) */ static void posix_cpu_timers_init(struct task_struct *tsk) { @@ -263,3 +264,6 @@ index d62d7ae5201c..8d95e8de98b2 100644 /* * Set one of the process-wide special case CPU timers or RLIMIT_CPU. * The tsk->sighand->siglock must be held by the caller. +-- +2.24.0 + diff --git a/debian/patches-rt/0106-sched-Move-task_struct-cleanup-to-RCU.patch b/debian/patches-rt/0106-sched-Move-task_struct-cleanup-to-RCU.patch index 91b86241b..ee20a61a0 100644 --- a/debian/patches-rt/0106-sched-Move-task_struct-cleanup-to-RCU.patch +++ b/debian/patches-rt/0106-sched-Move-task_struct-cleanup-to-RCU.patch @@ -1,7 +1,8 @@ +From 16a46f713b065fd08009fa6fe5bf4e8356586c06 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 May 2011 16:59:16 +0200 -Subject: [PATCH 106/290] sched: Move task_struct cleanup to RCU -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c69af1bd9be59d1e008a9cabae469116cffd44b6 +Subject: [PATCH 106/291] sched: Move task_struct cleanup to RCU +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __put_task_struct() does quite some expensive work. We don't want to burden random tasks with that. @@ -28,10 +29,10 @@ index ba37d39d5c6b..a1ef00db6baa 100644 unsigned long task_state_change; #endif diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h -index 108ede99e533..bb98c5b43f81 100644 +index 44c6f15800ff..d2b33e57c636 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h -@@ -88,6 +88,15 @@ extern void sched_exec(void); +@@ -90,6 +90,15 @@ extern void sched_exec(void); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) @@ -47,7 +48,7 @@ index 108ede99e533..bb98c5b43f81 100644 extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -95,7 +104,7 @@ static inline void put_task_struct(struct task_struct *t) +@@ -97,7 +106,7 @@ static inline void put_task_struct(struct task_struct *t) if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } @@ -57,10 +58,10 @@ index 108ede99e533..bb98c5b43f81 100644 #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT diff --git a/kernel/fork.c b/kernel/fork.c -index c940fee1426c..b14cb6876ac8 100644 +index b3744a043f46..4b85282d9a07 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -671,7 +671,9 @@ static inline void put_signal_struct(struct signal_struct *sig) +@@ -666,7 +666,9 @@ static inline void put_signal_struct(struct signal_struct *sig) if (atomic_dec_and_test(&sig->sigcnt)) free_signal_struct(sig); } @@ -71,7 +72,7 @@ index c940fee1426c..b14cb6876ac8 100644 void __put_task_struct(struct task_struct *tsk) { WARN_ON(!tsk->exit_state); -@@ -688,7 +690,18 @@ void __put_task_struct(struct task_struct *tsk) +@@ -683,7 +685,18 @@ void __put_task_struct(struct task_struct *tsk) if (!profile_handoff_task(tsk)) free_task(tsk); } @@ -90,3 +91,6 @@ index c940fee1426c..b14cb6876ac8 100644 void __init __weak arch_task_cache_init(void) { } +-- +2.24.0 + diff --git a/debian/patches-rt/0107-sched-Limit-the-number-of-task-migrations-per-batch.patch b/debian/patches-rt/0107-sched-Limit-the-number-of-task-migrations-per-batch.patch index 3bbe92ffb..6ea211691 100644 --- a/debian/patches-rt/0107-sched-Limit-the-number-of-task-migrations-per-batch.patch +++ b/debian/patches-rt/0107-sched-Limit-the-number-of-task-migrations-per-batch.patch @@ -1,7 +1,8 @@ +From b71d34c01676a0158b89b9a972bc875b15bf9db7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 6 Jun 2011 12:12:51 +0200 -Subject: [PATCH 107/290] 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=c6286af6b5a433a8f97f2875f2cdcc7fb9614a9d +Subject: [PATCH 107/291] sched: Limit the number of task migrations per batch +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Put an upper limit on the number of tasks which are migrated per batch to avoid large latencies. @@ -12,7 +13,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 4 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 86839f848805..de93941bad5a 100644 +index 2f6b4365d070..5c23d1272429 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -44,7 +44,11 @@ const_debug unsigned int sysctl_sched_features = @@ -27,3 +28,6 @@ index 86839f848805..de93941bad5a 100644 /* * period over which we measure -rt task CPU usage in us. +-- +2.24.0 + diff --git a/debian/patches-rt/0108-sched-Move-mmdrop-to-RCU-on-RT.patch b/debian/patches-rt/0108-sched-Move-mmdrop-to-RCU-on-RT.patch index eed532753..f3f87fca1 100644 --- a/debian/patches-rt/0108-sched-Move-mmdrop-to-RCU-on-RT.patch +++ b/debian/patches-rt/0108-sched-Move-mmdrop-to-RCU-on-RT.patch @@ -1,7 +1,8 @@ +From a6eb0eff1b7326245510c39e0988015fd5b15a35 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 6 Jun 2011 12:20:33 +0200 -Subject: [PATCH 108/290] sched: Move mmdrop to RCU on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26e860afda01037b95eca42b1e3863949b30b52c +Subject: [PATCH 108/291] sched: Move mmdrop to RCU on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Takes sleeping locks and calls into the memory allocator, so nothing we want to do in task switch and oder atomic contexts. @@ -15,7 +16,7 @@ Signed-off-by: Thomas Gleixner 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 5ed8f6292a53..f430cf0a377e 100644 +index 3a9a996af229..202b736ccbfa 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -12,6 +12,7 @@ @@ -26,7 +27,7 @@ index 5ed8f6292a53..f430cf0a377e 100644 #include #include -@@ -482,6 +483,9 @@ struct mm_struct { +@@ -487,6 +488,9 @@ struct mm_struct { bool tlb_flush_batched; #endif struct uprobes_state uprobes_state; @@ -59,10 +60,10 @@ index e9d4e389aed9..fb59f96fdd2e 100644 * This has to be called after a get_task_mm()/mmget_not_zero() * followed by taking the mmap_sem for writing before modifying the diff --git a/kernel/fork.c b/kernel/fork.c -index b14cb6876ac8..5adb1349c001 100644 +index 4b85282d9a07..e05834c2420c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -637,6 +637,19 @@ void __mmdrop(struct mm_struct *mm) +@@ -632,6 +632,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); @@ -83,7 +84,7 @@ index b14cb6876ac8..5adb1349c001 100644 { struct mm_struct *mm; diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index de93941bad5a..3c51cd04d7b4 100644 +index 5c23d1272429..cb89c90513dd 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2729,9 +2729,13 @@ static struct rq *finish_task_switch(struct task_struct *prev) @@ -101,7 +102,7 @@ index de93941bad5a..3c51cd04d7b4 100644 } if (unlikely(prev_state == TASK_DEAD)) { if (prev->sched_class->task_dead) -@@ -5600,6 +5604,8 @@ void sched_setnuma(struct task_struct *p, int nid) +@@ -5601,6 +5605,8 @@ void sched_setnuma(struct task_struct *p, int nid) #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_HOTPLUG_CPU @@ -110,7 +111,7 @@ index de93941bad5a..3c51cd04d7b4 100644 /* * Ensure that the idle task is using init_mm right before its CPU goes * offline. -@@ -5615,7 +5621,11 @@ void idle_task_exit(void) +@@ -5616,7 +5622,11 @@ void idle_task_exit(void) current->active_mm = &init_mm; finish_arch_post_lock_switch(); } @@ -123,7 +124,7 @@ index de93941bad5a..3c51cd04d7b4 100644 } /* -@@ -5927,6 +5937,10 @@ int sched_cpu_dying(unsigned int cpu) +@@ -5928,6 +5938,10 @@ int sched_cpu_dying(unsigned int cpu) update_max_interval(); nohz_balance_exit_idle(rq); hrtick_clear(rq); @@ -134,3 +135,6 @@ index de93941bad5a..3c51cd04d7b4 100644 return 0; } #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0109-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch b/debian/patches-rt/0109-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch index 63da5114f..411cfb9cf 100644 --- a/debian/patches-rt/0109-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch +++ b/debian/patches-rt/0109-kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch @@ -1,8 +1,9 @@ +From 9743471dae584ebce206d2d879b9628ef3aaa012 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 21 Nov 2016 19:31:08 +0100 -Subject: [PATCH 109/290] kernel/sched: move stack + kprobe clean up to +Subject: [PATCH 109/291] 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=e3ab21f020101536a57f21b778c83b41630914f7 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -17,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c -index 5adb1349c001..ff7e5983a21c 100644 +index e05834c2420c..a6f39cbb71c3 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -40,6 +40,7 @@ @@ -28,7 +29,7 @@ index 5adb1349c001..ff7e5983a21c 100644 #include #include #include -@@ -693,6 +694,15 @@ void __put_task_struct(struct task_struct *tsk) +@@ -688,6 +689,15 @@ void __put_task_struct(struct task_struct *tsk) WARN_ON(atomic_read(&tsk->usage)); WARN_ON(tsk == current); @@ -45,7 +46,7 @@ index 5adb1349c001..ff7e5983a21c 100644 task_numa_free(tsk, true); security_task_free(tsk); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3c51cd04d7b4..a3ba8e9227a3 100644 +index cb89c90513dd..79e0d052e848 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2741,15 +2741,6 @@ static struct rq *finish_task_switch(struct task_struct *prev) @@ -64,3 +65,6 @@ index 3c51cd04d7b4..a3ba8e9227a3 100644 put_task_struct(prev); } +-- +2.24.0 + diff --git a/debian/patches-rt/0110-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch b/debian/patches-rt/0110-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch index 595a66a19..f867e477a 100644 --- a/debian/patches-rt/0110-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch +++ b/debian/patches-rt/0110-sched-Add-saved_state-for-tasks-blocked-on-sleeping-.patch @@ -1,8 +1,9 @@ +From 124e5e8cec2c3de85fd78ce02bfa478b06640af3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 25 Jun 2011 09:21:04 +0200 -Subject: [PATCH 110/290] sched: Add saved_state for tasks blocked on sleeping +Subject: [PATCH 110/291] 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=7c5f9e4e697af083543c1eb4fe2c185bd18134fd +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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,7 +40,7 @@ index a1ef00db6baa..c073a3273beb 100644 #ifdef CONFIG_SMP diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a3ba8e9227a3..592e8c0acb8b 100644 +index 79e0d052e848..d1c564acff76 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1999,8 +1999,27 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) @@ -91,10 +92,10 @@ index a3ba8e9227a3..592e8c0acb8b 100644 { return try_to_wake_up(p, state, 0); diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 9a7c3d08b39f..49ae30da28ee 100644 +index 94bec97bd5e2..c79e32488940 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -1443,6 +1443,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) +@@ -1439,6 +1439,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) #define WF_SYNC 0x01 /* Waker goes to sleep after wakeup */ #define WF_FORK 0x02 /* Child wakeup after fork */ #define WF_MIGRATED 0x4 /* Internal use, task got migrated */ @@ -102,3 +103,6 @@ index 9a7c3d08b39f..49ae30da28ee 100644 /* * To aid in avoiding the subversion of "niceness" due to uneven distribution +-- +2.24.0 + diff --git a/debian/patches-rt/0111-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch b/debian/patches-rt/0111-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch index 4ee34e919..d0aefceab 100644 --- a/debian/patches-rt/0111-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch +++ b/debian/patches-rt/0111-sched-Do-not-account-rcu_preempt_depth-on-RT-in-migh.patch @@ -1,8 +1,9 @@ +From ca9a918e12f94cdd5e615f96ac95c5c479f8dd4d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 7 Jun 2011 09:19:06 +0200 -Subject: [PATCH 111/290] sched: Do not account rcu_preempt_depth on RT in +Subject: [PATCH 111/291] 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=77016b51aec298c4b547aa2d8a30e001a8bc39d6 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz RT changes the rcu_preempt_depth semantics, so we cannot check for it in might_sleep(). @@ -39,10 +40,10 @@ index 68cbe111420b..027c58cdbb6e 100644 /* Internal to kernel */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 592e8c0acb8b..a183036a437f 100644 +index d1c564acff76..59d43c084023 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -6197,7 +6197,7 @@ void __init sched_init(void) +@@ -6198,7 +6198,7 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { @@ -51,3 +52,6 @@ index 592e8c0acb8b..a183036a437f 100644 return (nested == preempt_offset); } +-- +2.24.0 + diff --git a/debian/patches-rt/0112-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch b/debian/patches-rt/0112-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch index 89d568c0e..d292d0db6 100644 --- a/debian/patches-rt/0112-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch +++ b/debian/patches-rt/0112-sched-Use-the-proper-LOCK_OFFSET-for-cond_resched.patch @@ -1,7 +1,8 @@ +From 0575ed01ee813bb4fbe9e3a708e51d1ab495028a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:51:33 +0200 -Subject: [PATCH 112/290] 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=04e2f43d1deac4ff13f0e108fc89306198a2f762 +Subject: [PATCH 112/291] sched: Use the proper LOCK_OFFSET for cond_resched() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz RT does not increment preempt count when a 'sleeping' spinlock is locked. Update PREEMPT_LOCK_OFFSET for that case. @@ -27,3 +28,6 @@ index f7a17fcc3fec..b7fe717eb1f4 100644 /* * The preempt_count offset needed for things like: +-- +2.24.0 + diff --git a/debian/patches-rt/0113-sched-Disable-TTWU_QUEUE-on-RT.patch b/debian/patches-rt/0113-sched-Disable-TTWU_QUEUE-on-RT.patch index 5fc2f6029..a6a844c2e 100644 --- a/debian/patches-rt/0113-sched-Disable-TTWU_QUEUE-on-RT.patch +++ b/debian/patches-rt/0113-sched-Disable-TTWU_QUEUE-on-RT.patch @@ -1,7 +1,8 @@ +From c7707b6eed6823af122cdb0cf1e8e59278ed1768 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 13 Sep 2011 16:42:35 +0200 -Subject: [PATCH 113/290] sched: Disable TTWU_QUEUE on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f1730e401e00fbd36906e5083279d065661f685a +Subject: [PATCH 113/291] sched: Disable TTWU_QUEUE on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The queued remote wakeup mechanism can introduce rather large latencies if the number of migrated tasks is high. Disable it for RT. @@ -32,3 +33,6 @@ index 85ae8488039c..68de18405857 100644 /* * When doing wakeups, attempt to limit superfluous scans of the LLC domain. +-- +2.24.0 + diff --git a/debian/patches-rt/0114-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch b/debian/patches-rt/0114-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch index 3202b69df..dc71e727a 100644 --- a/debian/patches-rt/0114-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch +++ b/debian/patches-rt/0114-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch @@ -1,8 +1,9 @@ +From e80c0084cdb65189273e995ba6b38105fdd823cc Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 18 Mar 2013 15:12:49 -0400 -Subject: [PATCH 114/290] sched/workqueue: Only wake up idle workers if not +Subject: [PATCH 114/291] 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=dfa983ba257c10e427ff07cac06d6b270f5ee643 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In -rt, most spin_locks() turn into mutexes. One of these spin_lock conversions is performed on the workqueue gcwq->lock. When the idle @@ -24,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a183036a437f..a1cedac8b707 100644 +index 59d43c084023..e792543de8eb 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3539,8 +3539,10 @@ static void __sched notrace __schedule(bool preempt) @@ -39,3 +40,6 @@ index a183036a437f..a1cedac8b707 100644 struct task_struct *to_wakeup; to_wakeup = wq_worker_sleeping(prev); +-- +2.24.0 + diff --git a/debian/patches-rt/0115-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch b/debian/patches-rt/0115-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch index 808d9a671..ecb172f78 100644 --- a/debian/patches-rt/0115-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch +++ b/debian/patches-rt/0115-rt-Increase-decrease-the-nr-of-migratory-tasks-when-.patch @@ -1,8 +1,9 @@ +From 212e6309545a661d786334b37ace8b3a42de8a2c Mon Sep 17 00:00:00 2001 From: Daniel Bristot de Oliveira Date: Mon, 26 Jun 2017 17:07:15 +0200 -Subject: [PATCH 115/290] rt: Increase/decrease the nr of migratory tasks when +Subject: [PATCH 115/291] 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=6ef7d4c7da82dc7df51211d0fe07912d3d67dc69 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +82,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a1cedac8b707..9ba05b3f69e1 100644 +index e792543de8eb..57617777c4ba 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7184,6 +7184,47 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7185,6 +7185,47 @@ const u32 sched_prio_to_wmult[40] = { #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP) @@ -132,7 +133,7 @@ index a1cedac8b707..9ba05b3f69e1 100644 void migrate_disable(void) { struct task_struct *p = current; -@@ -7207,10 +7248,9 @@ void migrate_disable(void) +@@ -7208,10 +7249,9 @@ void migrate_disable(void) } preempt_disable(); @@ -145,7 +146,7 @@ index a1cedac8b707..9ba05b3f69e1 100644 preempt_enable(); } -@@ -7242,9 +7282,8 @@ void migrate_enable(void) +@@ -7243,9 +7283,8 @@ void migrate_enable(void) preempt_disable(); @@ -156,3 +157,6 @@ index a1cedac8b707..9ba05b3f69e1 100644 if (p->migrate_disable_update) { struct rq *rq; +-- +2.24.0 + diff --git a/debian/patches-rt/0116-hotplug-Lightweight-get-online-cpus.patch b/debian/patches-rt/0116-hotplug-Lightweight-get-online-cpus.patch index 3f8bfa40c..e37cf9852 100644 --- a/debian/patches-rt/0116-hotplug-Lightweight-get-online-cpus.patch +++ b/debian/patches-rt/0116-hotplug-Lightweight-get-online-cpus.patch @@ -1,7 +1,8 @@ +From 6f101b07a78d289ba639b25a3b77a37ab6734073 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 15 Jun 2011 12:36:06 +0200 -Subject: [PATCH 116/290] hotplug: Lightweight get online cpus -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3427c6b64cd30370b25801db8a88491596c1d4c +Subject: [PATCH 116/291] hotplug: Lightweight get online cpus +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -19,10 +20,10 @@ Signed-off-by: Thomas Gleixner 3 files changed, 24 insertions(+) diff --git a/include/linux/cpu.h b/include/linux/cpu.h -index 006f69f9277b..d45ea5c98cdd 100644 +index aab4273810e3..e67645924404 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h -@@ -113,6 +113,8 @@ extern void cpu_hotplug_disable(void); +@@ -118,6 +118,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 +32,7 @@ index 006f69f9277b..d45ea5c98cdd 100644 #else /* CONFIG_HOTPLUG_CPU */ -@@ -124,6 +126,9 @@ static inline int cpus_read_trylock(void) { return true; } +@@ -129,6 +131,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) { } @@ -42,7 +43,7 @@ index 006f69f9277b..d45ea5c98cdd 100644 /* Wrappers which go away once all code is converted */ diff --git a/kernel/cpu.c b/kernel/cpu.c -index d9f855cb9f6f..02e05a7e463c 100644 +index 8d6b8b5493f9..cf1f2eb6bb90 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -281,6 +281,21 @@ static int cpu_hotplug_disabled; @@ -68,10 +69,10 @@ index d9f855cb9f6f..02e05a7e463c 100644 void cpus_read_lock(void) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 9ba05b3f69e1..5723a8966865 100644 +index 57617777c4ba..42b42ebf52bc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7248,6 +7248,7 @@ void migrate_disable(void) +@@ -7249,6 +7249,7 @@ void migrate_disable(void) } preempt_disable(); @@ -79,7 +80,7 @@ index 9ba05b3f69e1..5723a8966865 100644 migrate_disable_update_cpus_allowed(p); p->migrate_disable = 1; -@@ -7313,12 +7314,15 @@ void migrate_enable(void) +@@ -7314,12 +7315,15 @@ void migrate_enable(void) arg.task = p; arg.dest_cpu = dest_cpu; @@ -95,3 +96,6 @@ index 9ba05b3f69e1..5723a8966865 100644 preempt_enable(); } EXPORT_SYMBOL(migrate_enable); +-- +2.24.0 + diff --git a/debian/patches-rt/0117-trace-Add-migrate-disabled-counter-to-tracing-output.patch b/debian/patches-rt/0117-trace-Add-migrate-disabled-counter-to-tracing-output.patch index adb82a021..42012348b 100644 --- a/debian/patches-rt/0117-trace-Add-migrate-disabled-counter-to-tracing-output.patch +++ b/debian/patches-rt/0117-trace-Add-migrate-disabled-counter-to-tracing-output.patch @@ -1,7 +1,8 @@ +From 78c63e78542da8c6262129680ae2129d38660fc9 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:56:42 +0200 -Subject: [PATCH 117/290] trace: Add migrate-disabled counter to tracing output -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1beef7a4cb4f8020766425cd50172f1c8edeaf5d +Subject: [PATCH 117/291] trace: Add migrate-disabled counter to tracing output +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,7 +13,7 @@ Signed-off-by: Thomas Gleixner 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 78a010e19ed4..0403d9696944 100644 +index 0643c083ed86..1cc4d2da954c 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -62,6 +62,8 @@ struct trace_entry { @@ -52,7 +53,7 @@ index bdd7f3d78724..befe5978a832 100644 static void print_event_info(struct trace_buffer *buf, struct seq_file *m) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index 7345f5f8f3fe..6455e2ca7987 100644 +index 017f737237e6..62df730c4a2e 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -188,6 +188,8 @@ static int trace_define_common_fields(void) @@ -80,3 +81,6 @@ index 6e6cc64faa38..46c96744f09d 100644 return !trace_seq_has_overflowed(s); } +-- +2.24.0 + diff --git a/debian/patches-rt/0118-lockdep-Make-it-RT-aware.patch b/debian/patches-rt/0118-lockdep-Make-it-RT-aware.patch index 1aee8e4ef..241a987c4 100644 --- a/debian/patches-rt/0118-lockdep-Make-it-RT-aware.patch +++ b/debian/patches-rt/0118-lockdep-Make-it-RT-aware.patch @@ -1,7 +1,8 @@ +From 9881dc502b2ebaa3d6311b1a4f1d12311d048c3a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 18:51:23 +0200 -Subject: [PATCH 118/290] lockdep: Make it RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7effdc8f2c197c37436e86a7b4ab376cf38b498f +Subject: [PATCH 118/291] lockdep: Make it RT aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz teach lockdep that we don't really do softirqs on -RT. @@ -72,3 +73,6 @@ index 1e272f6a01e7..1938b4bfb098 100644 if (!debug_locks) print_irqtrace_events(current); +-- +2.24.0 + diff --git a/debian/patches-rt/0119-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch b/debian/patches-rt/0119-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch index 606fbe576..f706aa51f 100644 --- a/debian/patches-rt/0119-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch +++ b/debian/patches-rt/0119-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch @@ -1,8 +1,9 @@ +From aca9ae6ff4dbbe91d241282e51602147cba52554 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Tue, 29 Nov 2011 20:18:22 -0500 -Subject: [PATCH 119/290] tasklet: Prevent tasklets from going into infinite +Subject: [PATCH 119/291] 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=eef329f6c046880d5fa82df96ecff7a6c6582e7f +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with @@ -297,3 +298,6 @@ index 6f584861d329..1d3a482246cc 100644 static int ksoftirqd_should_run(unsigned int cpu) { return local_softirq_pending(); +-- +2.24.0 + diff --git a/debian/patches-rt/0120-softirq-Check-preemption-after-reenabling-interrupts.patch b/debian/patches-rt/0120-softirq-Check-preemption-after-reenabling-interrupts.patch index 3c9b401fa..b0861d31a 100644 --- a/debian/patches-rt/0120-softirq-Check-preemption-after-reenabling-interrupts.patch +++ b/debian/patches-rt/0120-softirq-Check-preemption-after-reenabling-interrupts.patch @@ -1,7 +1,8 @@ +From a22fec20030156a6f1ca7d20721282f48ec8d12d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 13 Nov 2011 17:17:09 +0100 -Subject: [PATCH 120/290] softirq: Check preemption after reenabling interrupts -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9d428d20b2a3fd2b59f17e811b7f51972a8a0d4a +Subject: [PATCH 120/291] softirq: Check preemption after reenabling interrupts +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -116,7 +117,7 @@ index 86a709954f5a..9c069ef83d6d 100644 return 0; } diff --git a/net/core/dev.c b/net/core/dev.c -index ddd8aab20adf..92e4d559ec93 100644 +index 91179febdeee..b93838047cfd 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2726,6 +2726,7 @@ static void __netif_reschedule(struct Qdisc *q) @@ -143,7 +144,7 @@ index ddd8aab20adf..92e4d559ec93 100644 atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -5815,12 +5818,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) +@@ -5829,12 +5832,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) sd->rps_ipi_list = NULL; local_irq_enable(); @@ -158,7 +159,7 @@ index ddd8aab20adf..92e4d559ec93 100644 } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -5898,6 +5903,7 @@ void __napi_schedule(struct napi_struct *n) +@@ -5912,6 +5917,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 +167,7 @@ index ddd8aab20adf..92e4d559ec93 100644 } EXPORT_SYMBOL(__napi_schedule); -@@ -9307,6 +9313,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9321,6 +9327,7 @@ static int dev_cpu_dead(unsigned int oldcpu) raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); @@ -174,3 +175,6 @@ index ddd8aab20adf..92e4d559ec93 100644 #ifdef CONFIG_RPS remsd = oldsd->rps_ipi_list; +-- +2.24.0 + diff --git a/debian/patches-rt/0121-softirq-Disable-softirq-stacks-for-RT.patch b/debian/patches-rt/0121-softirq-Disable-softirq-stacks-for-RT.patch index d076a5fee..c057f15d2 100644 --- a/debian/patches-rt/0121-softirq-Disable-softirq-stacks-for-RT.patch +++ b/debian/patches-rt/0121-softirq-Disable-softirq-stacks-for-RT.patch @@ -1,7 +1,8 @@ +From aa4a572081534629f124f957fdf9ab2ea0c48601 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 13:59:17 +0200 -Subject: [PATCH 121/290] softirq: Disable softirq stacks for RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7e2dac7d12e5f5068d09042b543ca3001c0eb674 +Subject: [PATCH 121/291] softirq: Disable softirq stacks for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Disable extra stacks for softirqs. We want to preempt softirqs and having them on special IRQ-stack does not make this easier. @@ -59,7 +60,7 @@ index 695b24a2d954..032ada21b7bd 100644 /* * void call_do_irq(struct pt_regs *regs, struct thread_info *irqtp); diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S -index 1bf6aaefd26a..52c7298f583a 100644 +index facc02964ab3..8b1774186c68 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -32,6 +32,7 @@ @@ -122,7 +123,7 @@ diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index ccb5e3486aee..7ffd83c57ef2 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -1083,6 +1083,7 @@ EXPORT_SYMBOL(native_load_gs_index) +@@ -1083,6 +1083,7 @@ bad_gs: jmp 2b .previous @@ -171,3 +172,6 @@ index e74936c7be48..cb2d1384cb0d 100644 void do_softirq_own_stack(void); #else static inline void do_softirq_own_stack(void) +-- +2.24.0 + diff --git a/debian/patches-rt/0122-softirq-Split-softirq-locks.patch b/debian/patches-rt/0122-softirq-Split-softirq-locks.patch index 43b8435f3..0cd5b2dcc 100644 --- a/debian/patches-rt/0122-softirq-Split-softirq-locks.patch +++ b/debian/patches-rt/0122-softirq-Split-softirq-locks.patch @@ -1,7 +1,8 @@ +From 1b893fe936ebf4db810829266ed0ff63f17b7653 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 4 Oct 2012 14:20:47 +0100 -Subject: [PATCH 122/290] softirq: Split softirq locks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9708867fdc9d911c92c3b3f7b7d5ff8e08d387a3 +Subject: [PATCH 122/291] softirq: Split softirq locks +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which @@ -198,10 +199,10 @@ index c073a3273beb..baa5fceea0ff 100644 #define PF_EXITING 0x00000004 /* Getting shut down */ #define PF_EXITPIDONE 0x00000008 /* PI exit done on shut down */ diff --git a/init/main.c b/init/main.c -index 020972fed117..4a7471606e53 100644 +index 38a603f62b7b..6e02188386a7 100644 --- a/init/main.c +++ b/init/main.c -@@ -561,6 +561,7 @@ asmlinkage __visible void __init start_kernel(void) +@@ -560,6 +560,7 @@ asmlinkage __visible void __init start_kernel(void) setup_command_line(command_line); setup_nr_cpu_ids(); setup_per_cpu_areas(); @@ -826,3 +827,6 @@ index c217af74dddf..6482945f8ae8 100644 return false; } +-- +2.24.0 + diff --git a/debian/patches-rt/0123-net-core-use-local_bh_disable-in-netif_rx_ni.patch b/debian/patches-rt/0123-net-core-use-local_bh_disable-in-netif_rx_ni.patch index 373b27112..289c5be17 100644 --- a/debian/patches-rt/0123-net-core-use-local_bh_disable-in-netif_rx_ni.patch +++ b/debian/patches-rt/0123-net-core-use-local_bh_disable-in-netif_rx_ni.patch @@ -1,7 +1,8 @@ +From 5824c8e9d9b8016de81c6a74616011772a95919e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 16 Jun 2017 19:03:16 +0200 -Subject: [PATCH 123/290] 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=ae0f813a827a24ec0fa98781902906f5cc5dbda6 +Subject: [PATCH 123/291] net/core: use local_bh_disable() in netif_rx_ni() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +19,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 92e4d559ec93..defca5df6baa 100644 +index b93838047cfd..d5e2e8834d62 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4526,11 +4526,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -4540,11 +4540,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); @@ -35,3 +36,6 @@ index 92e4d559ec93..defca5df6baa 100644 return err; } +-- +2.24.0 + diff --git a/debian/patches-rt/0124-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch b/debian/patches-rt/0124-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch index 1041ada24..0ebf444ca 100644 --- a/debian/patches-rt/0124-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch +++ b/debian/patches-rt/0124-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch @@ -1,8 +1,9 @@ +From 7104571224e2da8d61763d5106f37502c667ba15 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 Jan 2012 13:01:27 +0100 -Subject: [PATCH 124/290] genirq: Allow disabling of softirq processing in irq +Subject: [PATCH 124/291] 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=e12715d5618f4eaeff0a52a9635bb2d772ef359d +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -155,3 +156,6 @@ index fd89f8ab85ac..3e9333d148ad 100644 int in_serving_softirq(void) { return current->flags & PF_IN_SOFTIRQ; +-- +2.24.0 + diff --git a/debian/patches-rt/0125-softirq-split-timer-softirqs-out-of-ksoftirqd.patch b/debian/patches-rt/0125-softirq-split-timer-softirqs-out-of-ksoftirqd.patch index 2cad3a691..cb5594425 100644 --- a/debian/patches-rt/0125-softirq-split-timer-softirqs-out-of-ksoftirqd.patch +++ b/debian/patches-rt/0125-softirq-split-timer-softirqs-out-of-ksoftirqd.patch @@ -1,7 +1,8 @@ +From af74ab112bdb15f73e213862c9529004dfa5970d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 20 Jan 2016 16:34:17 +0100 -Subject: [PATCH 125/290] softirq: split timer softirqs out of ksoftirqd -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99ec74d1868440b1f19c612415c08f5b940d8090 +Subject: [PATCH 125/291] softirq: split timer softirqs out of ksoftirqd +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -209,3 +210,6 @@ index 3e9333d148ad..fe4e59c80a08 100644 return 0; } early_initcall(spawn_ksoftirqd); +-- +2.24.0 + diff --git a/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch b/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch index ef90286be..dcf16df56 100644 --- a/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch +++ b/debian/patches-rt/0126-softirq-Avoid-local_softirq_pending-messages-if-ksof.patch @@ -1,8 +1,9 @@ +From 744e0e23be85f1c4f35a0225d40c38ce17731b9a Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 18 Feb 2019 13:19:59 +0100 -Subject: [PATCH 126/290] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 126/291] 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=692deaede6b1b2b424faa2d9701e1b6b23fbc381 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz If the ksoftirqd thread has a softirq pending and is blocked on the `local_softirq_locks' lock then softirq_check_pending_idle() won't @@ -106,3 +107,6 @@ index fe4e59c80a08..1920985eeb09 100644 } if (warnpending) { +-- +2.24.0 + diff --git a/debian/patches-rt/0127-softirq-Avoid-local_softirq_pending-messages-if-task.patch b/debian/patches-rt/0127-softirq-Avoid-local_softirq_pending-messages-if-task.patch index 7bedfea8b..66e1806c3 100644 --- a/debian/patches-rt/0127-softirq-Avoid-local_softirq_pending-messages-if-task.patch +++ b/debian/patches-rt/0127-softirq-Avoid-local_softirq_pending-messages-if-task.patch @@ -1,8 +1,9 @@ +From 7059e135a5d884541e07ca2a6cbcb499c1cb8bf0 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 19 Feb 2019 16:49:29 +0100 -Subject: [PATCH 127/290] softirq: Avoid "local_softirq_pending" messages if +Subject: [PATCH 127/291] 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=35dcb7fcc7ec0b10e0b649f1e1ea2a63a965dac2 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -35,3 +36,6 @@ index 1920985eeb09..27a4bb2303d0 100644 /* Clear all bits pending in that task */ *pending &= ~(tsk->softirqs_raised); ret = true; +-- +2.24.0 + diff --git a/debian/patches-rt/0128-rtmutex-trylock-is-okay-on-RT.patch b/debian/patches-rt/0128-rtmutex-trylock-is-okay-on-RT.patch index 4d32d9b45..dafebb4e9 100644 --- a/debian/patches-rt/0128-rtmutex-trylock-is-okay-on-RT.patch +++ b/debian/patches-rt/0128-rtmutex-trylock-is-okay-on-RT.patch @@ -1,7 +1,8 @@ +From 49daa757a03c433bc6252051d0126ffdf4295573 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 2 Dec 2015 11:34:07 +0100 -Subject: [PATCH 128/290] rtmutex: trylock is okay on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6844789b0db950fc38370175d40fd017331e8fb7 +Subject: [PATCH 128/291] rtmutex: trylock is okay on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -28,3 +29,6 @@ index 9562aaa2afdc..72abe7c121fa 100644 return 0; ret = rt_mutex_fasttrylock(lock, rt_mutex_slowtrylock); +-- +2.24.0 + diff --git a/debian/patches-rt/0129-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch b/debian/patches-rt/0129-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch index 9a8c3679f..0aeebf453 100644 --- a/debian/patches-rt/0129-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch +++ b/debian/patches-rt/0129-fs-nfs-turn-rmdir_sem-into-a-semaphore.patch @@ -1,7 +1,8 @@ +From 1cf6a9d4797ccd1f77e415a6401f5e227c215cc8 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 15 Sep 2016 10:51:27 +0200 -Subject: [PATCH 129/290] fs/nfs: turn rmdir_sem into a semaphore -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40419bc23d3cd7c730310c4a6461dd40f579010a +Subject: [PATCH 129/291] fs/nfs: turn rmdir_sem into a semaphore +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -145,3 +146,6 @@ index a0831e9d19c9..94b6fefd90b0 100644 struct mutex commit_mutex; #if IS_ENABLED(CONFIG_NFS_V4) +-- +2.24.0 + diff --git a/debian/patches-rt/0130-rtmutex-Handle-the-various-new-futex-race-conditions.patch b/debian/patches-rt/0130-rtmutex-Handle-the-various-new-futex-race-conditions.patch index 4138d0ac8..876cb5d1a 100644 --- a/debian/patches-rt/0130-rtmutex-Handle-the-various-new-futex-race-conditions.patch +++ b/debian/patches-rt/0130-rtmutex-Handle-the-various-new-futex-race-conditions.patch @@ -1,7 +1,8 @@ +From b0a98e5e095739ea70697048ce6581eaf71f17c7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:04:15 +0200 -Subject: [PATCH 130/290] rtmutex: Handle the various new futex race conditions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a9436ea4bd1ca34b63976b763bab4fe93044700 +Subject: [PATCH 130/291] rtmutex: Handle the various new futex race conditions +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz RT opens a few new interesting race conditions in the rtmutex/futex combo due to futex hash bucket lock being a 'sleeping' spinlock and @@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner 3 files changed, 94 insertions(+), 21 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index ccf933ac2997..b2a90c66d8f4 100644 +index 23e1f8a478e8..5ec49f862c53 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2146,6 +2146,16 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -2149,6 +2149,16 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -35,7 +36,7 @@ index ccf933ac2997..b2a90c66d8f4 100644 } else if (ret) { /* * rt_mutex_start_proxy_lock() detected a -@@ -3224,7 +3234,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3227,7 +3237,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, struct hrtimer_sleeper timeout, *to = NULL; struct futex_pi_state *pi_state = NULL; struct rt_mutex_waiter rt_waiter; @@ -44,7 +45,7 @@ index ccf933ac2997..b2a90c66d8f4 100644 union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -3282,20 +3292,55 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3285,20 +3295,55 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -111,7 +112,7 @@ index ccf933ac2997..b2a90c66d8f4 100644 /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -3304,7 +3349,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3307,7 +3352,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -121,7 +122,7 @@ index ccf933ac2997..b2a90c66d8f4 100644 ret = fixup_pi_state_owner(uaddr2, &q, current); if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { pi_state = q.pi_state; -@@ -3315,7 +3361,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3318,7 +3364,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); @@ -130,7 +131,7 @@ index ccf933ac2997..b2a90c66d8f4 100644 } } else { struct rt_mutex *pi_mutex; -@@ -3329,7 +3375,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3332,7 +3378,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_wait_proxy_lock(pi_mutex, to, &rt_waiter); @@ -249,3 +250,6 @@ index d1d62f942be2..f4b6596d224a 100644 extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner); +-- +2.24.0 + diff --git a/debian/patches-rt/0131-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch b/debian/patches-rt/0131-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch index c38ce3891..066c13528 100644 --- a/debian/patches-rt/0131-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch +++ b/debian/patches-rt/0131-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch @@ -1,7 +1,8 @@ +From ace8fcd42dfeb65875a6457f5fe1c2e83f576e24 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 131/290] 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=09e670527717c63889ba34375c51c55f408402b2 +Subject: [PATCH 131/291] futex: Fix bug on when a requeued RT task times out +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Requeue with timeout causes a bug with PREEMPT_RT_FULL. @@ -115,3 +116,6 @@ index f4b6596d224a..461527f3f7af 100644 extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, +-- +2.24.0 + diff --git a/debian/patches-rt/0132-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch b/debian/patches-rt/0132-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch index 987324b41..12d1560f4 100644 --- a/debian/patches-rt/0132-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch +++ b/debian/patches-rt/0132-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch @@ -1,8 +1,9 @@ +From 56b302c84651f96c36c4557bbf3b35b4dca28929 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 1 Mar 2013 11:17:42 +0100 -Subject: [PATCH 132/290] futex: Ensure lock/unlock symetry versus pi_lock and +Subject: [PATCH 132/291] 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=653ee648a2ba5f857ec351405fc64f9cf8867b84 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In exit_pi_state_list() we have the following locking construct: @@ -31,10 +32,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 2 insertions(+) diff --git a/kernel/futex.c b/kernel/futex.c -index b2a90c66d8f4..4d6501d689b5 100644 +index 5ec49f862c53..60be4530c767 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -918,7 +918,9 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -921,7 +921,9 @@ void exit_pi_state_list(struct task_struct *curr) if (head->next != next) { /* retain curr->pi_lock for the loop invariant */ raw_spin_unlock(&pi_state->pi_mutex.wait_lock); @@ -44,3 +45,6 @@ index b2a90c66d8f4..4d6501d689b5 100644 put_pi_state(pi_state); continue; } +-- +2.24.0 + diff --git a/debian/patches-rt/0133-pid.h-include-atomic.h.patch b/debian/patches-rt/0133-pid.h-include-atomic.h.patch index 9b4b52f2d..5218a17e1 100644 --- a/debian/patches-rt/0133-pid.h-include-atomic.h.patch +++ b/debian/patches-rt/0133-pid.h-include-atomic.h.patch @@ -1,7 +1,8 @@ +From fbe00939d45cb45f9f555f2a4e0c6d7765eaa71c Mon Sep 17 00:00:00 2001 From: Grygorii Strashko Date: Tue, 21 Jul 2015 19:43:56 +0300 -Subject: [PATCH 133/290] pid.h: include atomic.h -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6c3b20a2664b9baa69bba26f6743559038199793 +Subject: [PATCH 133/291] pid.h: include atomic.h +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This patch fixes build error: CC kernel/pid_namespace.o @@ -37,3 +38,6 @@ index 14a9a39da9c7..a9026a5da196 100644 enum pid_type { +-- +2.24.0 + diff --git a/debian/patches-rt/0134-arm-include-definition-for-cpumask_t.patch b/debian/patches-rt/0134-arm-include-definition-for-cpumask_t.patch index 75c7752f1..e7576d908 100644 --- a/debian/patches-rt/0134-arm-include-definition-for-cpumask_t.patch +++ b/debian/patches-rt/0134-arm-include-definition-for-cpumask_t.patch @@ -1,7 +1,8 @@ +From 9ccf9fcb0456c0eca52a57de7a62af394cf5d6ec Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 22 Dec 2016 17:28:33 +0100 -Subject: [PATCH 134/290] arm: include definition for cpumask_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=11ec5b0cebd8ba85819ad3cddcf33d643f3513a0 +Subject: [PATCH 134/291] arm: include definition for cpumask_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This definition gets pulled in by other files. With the (later) split of RCU and spinlock.h it won't compile anymore. @@ -25,3 +26,6 @@ index 46d41140df27..c421b5b81946 100644 struct irqaction; struct pt_regs; +-- +2.24.0 + diff --git a/debian/patches-rt/0135-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch b/debian/patches-rt/0135-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch index 911b329ae..b761de635 100644 --- a/debian/patches-rt/0135-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch +++ b/debian/patches-rt/0135-locking-locktorture-Do-NOT-include-rwlock.h-directly.patch @@ -1,8 +1,9 @@ +From 3a1c560bb569457a69c1cf76e62a9ab32b3c5c50 Mon Sep 17 00:00:00 2001 From: "Wolfgang M. Reimer" Date: Tue, 21 Jul 2015 16:20:07 +0200 -Subject: [PATCH 135/290] locking: locktorture: Do NOT include rwlock.h +Subject: [PATCH 135/291] locking: locktorture: Do NOT include rwlock.h directly -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95a2cfde3e99e4cbf100ec5da1e4897618359af0 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Including rwlock.h directly will cause kernel builds to fail if CONFIG_PREEMPT_RT_FULL is defined. The correct header file @@ -28,3 +29,6 @@ index 7d0b0ed74404..a81e6ef33a04 100644 #include #include #include +-- +2.24.0 + diff --git a/debian/patches-rt/0136-rtmutex-Add-rtmutex_lock_killable.patch b/debian/patches-rt/0136-rtmutex-Add-rtmutex_lock_killable.patch index 383ce7b0e..4f0216eef 100644 --- a/debian/patches-rt/0136-rtmutex-Add-rtmutex_lock_killable.patch +++ b/debian/patches-rt/0136-rtmutex-Add-rtmutex_lock_killable.patch @@ -1,7 +1,8 @@ +From 44b045240326a58dce30bae336e6a5095d426806 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 9 Jun 2011 11:43:52 +0200 -Subject: [PATCH 136/290] rtmutex: Add rtmutex_lock_killable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d10ccdda6815a479f62a22fdbe86b733a8f0fe79 +Subject: [PATCH 136/291] rtmutex: Add rtmutex_lock_killable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add "killable" type to rtmutex. We need this since rtmutex are used as "normal" mutexes which do use this type. @@ -54,3 +55,6 @@ index 1c3f56d3d9b6..a4b2af7718f8 100644 /** * rt_mutex_timed_lock - lock a rt_mutex interruptible * the timeout structure is provided +-- +2.24.0 + diff --git a/debian/patches-rt/0137-rtmutex-Make-lock_killable-work.patch b/debian/patches-rt/0137-rtmutex-Make-lock_killable-work.patch index c25eefaba..7ddcd5a0c 100644 --- a/debian/patches-rt/0137-rtmutex-Make-lock_killable-work.patch +++ b/debian/patches-rt/0137-rtmutex-Make-lock_killable-work.patch @@ -1,7 +1,8 @@ +From 926d0ccd5d788a7efd136155df36ce959fce6617 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 1 Apr 2017 12:50:59 +0200 -Subject: [PATCH 137/290] rtmutex: Make lock_killable work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=330b8f36a58113eb3839e507483c81dce194fd83 +Subject: [PATCH 137/291] rtmutex: Make lock_killable work +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Locking an rt mutex killable does not work because signal handling is restricted to TASK_INTERRUPTIBLE. @@ -45,3 +46,6 @@ index a4b2af7718f8..f058bb976212 100644 } raw_spin_unlock_irq(&lock->wait_lock); +-- +2.24.0 + diff --git a/debian/patches-rt/0138-spinlock-Split-the-lock-types-header.patch b/debian/patches-rt/0138-spinlock-Split-the-lock-types-header.patch index cf0032ddd..8d5b58066 100644 --- a/debian/patches-rt/0138-spinlock-Split-the-lock-types-header.patch +++ b/debian/patches-rt/0138-spinlock-Split-the-lock-types-header.patch @@ -1,7 +1,8 @@ +From 3fee99c98bc825a45b08897882faed1a9d5d6d4b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:34:01 +0200 -Subject: [PATCH 138/290] spinlock: Split the lock types header -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dd9cbf1744910285047662eeb1ed3b5e1455da1c +Subject: [PATCH 138/291] spinlock: Split the lock types header +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -215,3 +216,6 @@ index 000000000000..822bf64a61d3 +#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) + +#endif +-- +2.24.0 + diff --git a/debian/patches-rt/0139-rtmutex-Avoid-include-hell.patch b/debian/patches-rt/0139-rtmutex-Avoid-include-hell.patch index cd2337652..3156796f3 100644 --- a/debian/patches-rt/0139-rtmutex-Avoid-include-hell.patch +++ b/debian/patches-rt/0139-rtmutex-Avoid-include-hell.patch @@ -1,7 +1,8 @@ +From 12d1dd5aa338d5fabca17f5d7ec37333fd925db2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:06:39 +0200 -Subject: [PATCH 139/290] rtmutex: Avoid include hell -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7fc473caca7282b1300e989d27056cfc2d573a30 +Subject: [PATCH 139/291] rtmutex: Avoid include hell +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Include only the required raw types. This avoids pulling in the complete spinlock header which in turn requires rtmutex.h at some point. @@ -24,3 +25,6 @@ index 81ece6a8291a..a355289b1fa1 100644 extern int max_lock_depth; /* for sysctl */ +-- +2.24.0 + diff --git a/debian/patches-rt/0140-rbtree-don-t-include-the-rcu-header.patch b/debian/patches-rt/0140-rbtree-don-t-include-the-rcu-header.patch index eb7bbabe5..ea7504d7a 100644 --- a/debian/patches-rt/0140-rbtree-don-t-include-the-rcu-header.patch +++ b/debian/patches-rt/0140-rbtree-don-t-include-the-rcu-header.patch @@ -1,10 +1,11 @@ +From 220bb66b678581d19e17cd7a526441c90d382856 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 26 Feb 2019 16:56:02 +0100 -Subject: [PATCH 140/290] rbtree: don't include the rcu header +Subject: [PATCH 140/291] 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=3c9aecc775f1a9c741feded9f8ce1e3c933f16a5 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The RCU header pulls in spinlock.h and fails due not yet defined types: @@ -169,3 +170,6 @@ index 027c58cdbb6e..e6733d7911e9 100644 /** * rcu_swap_protected() - swap an RCU and a regular pointer * @rcu_ptr: RCU pointer +-- +2.24.0 + diff --git a/debian/patches-rt/0141-rtmutex-Provide-rt_mutex_slowlock_locked.patch b/debian/patches-rt/0141-rtmutex-Provide-rt_mutex_slowlock_locked.patch index f279a6031..4415ab3b6 100644 --- a/debian/patches-rt/0141-rtmutex-Provide-rt_mutex_slowlock_locked.patch +++ b/debian/patches-rt/0141-rtmutex-Provide-rt_mutex_slowlock_locked.patch @@ -1,7 +1,8 @@ +From 4ab5b84b89bd12e875a70bc3e00a1746b021b14a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 16:14:22 +0200 -Subject: [PATCH 141/290] rtmutex: Provide rt_mutex_slowlock_locked() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aff3c4fbe35a000662340f80be322f1c594854cf +Subject: [PATCH 141/291] rtmutex: Provide rt_mutex_slowlock_locked() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This is the inner-part of rt_mutex_slowlock(), required for rwsem-rt. @@ -139,3 +140,6 @@ index 461527f3f7af..cb9815f0c766 100644 #ifdef CONFIG_DEBUG_RT_MUTEXES # include "rtmutex-debug.h" +-- +2.24.0 + diff --git a/debian/patches-rt/0142-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch b/debian/patches-rt/0142-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch index 8fa239fe0..157f7555b 100644 --- a/debian/patches-rt/0142-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch +++ b/debian/patches-rt/0142-rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch @@ -1,8 +1,9 @@ +From 6544c2d98772af5ef3b28ac2177c4c0a1a56208e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 16:36:39 +0200 -Subject: [PATCH 142/290] rtmutex: export lockdep-less version of rt_mutex's +Subject: [PATCH 142/291] 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=6ada9a3ace4091645571a46308a2fdd39270497f +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Required for lock implementation ontop of rtmutex. @@ -147,3 +148,6 @@ index cb9815f0c766..5955ad2aa2a8 100644 int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, struct hrtimer_sleeper *timeout, enum rtmutex_chainwalk chwalk, +-- +2.24.0 + diff --git a/debian/patches-rt/0143-rtmutex-add-sleeping-lock-implementation.patch b/debian/patches-rt/0143-rtmutex-add-sleeping-lock-implementation.patch index 11ead9b77..2f829fad7 100644 --- a/debian/patches-rt/0143-rtmutex-add-sleeping-lock-implementation.patch +++ b/debian/patches-rt/0143-rtmutex-add-sleeping-lock-implementation.patch @@ -1,7 +1,8 @@ +From f8f2487f3cd58b8c4d9949f90c29ba86d0a18e06 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 17:11:19 +0200 -Subject: [PATCH 143/290] rtmutex: add sleeping lock implementation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f302e683aa4acd6aa30ca84762059087161208d +Subject: [PATCH 143/291] rtmutex: add sleeping lock implementation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner Signed-off-by: Sebastian Andrzej Siewior @@ -395,10 +396,10 @@ index 000000000000..3e3d8c5f7a9a + +#endif diff --git a/kernel/fork.c b/kernel/fork.c -index ff7e5983a21c..652986ccb41c 100644 +index a6f39cbb71c3..7399bff2e08d 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -895,6 +895,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) +@@ -890,6 +890,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) tsk->splice_pipe = NULL; tsk->task_frag.page = NULL; tsk->wake_q.next = NULL; @@ -407,10 +408,10 @@ index ff7e5983a21c..652986ccb41c 100644 account_kernel_stack(tsk, 1); diff --git a/kernel/futex.c b/kernel/futex.c -index 4d6501d689b5..fe90164aa6ec 100644 +index 60be4530c767..4c448dddce3c 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -1476,6 +1476,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ +@@ -1479,6 +1479,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ struct task_struct *new_owner; bool postunlock = false; DEFINE_WAKE_Q(wake_q); @@ -418,7 +419,7 @@ index 4d6501d689b5..fe90164aa6ec 100644 int ret = 0; new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); -@@ -1535,13 +1536,13 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ +@@ -1538,13 +1539,13 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ pi_state->owner = new_owner; raw_spin_unlock(&new_owner->pi_lock); @@ -435,7 +436,7 @@ index 4d6501d689b5..fe90164aa6ec 100644 return ret; } -@@ -2870,7 +2871,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2873,7 +2874,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, goto no_block; } @@ -444,7 +445,7 @@ index 4d6501d689b5..fe90164aa6ec 100644 /* * On PREEMPT_RT_FULL, when hb->lock becomes an rt_mutex, we must not -@@ -3263,7 +3264,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3266,7 +3267,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. */ @@ -1143,7 +1144,7 @@ index 5955ad2aa2a8..6fcf0a3e180d 100644 #ifdef CONFIG_DEBUG_RT_MUTEXES # include "rtmutex-debug.h" diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 5723a8966865..654e2ec54f9d 100644 +index 42b42ebf52bc..6a0ccaea2b42 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) @@ -1202,3 +1203,6 @@ index 5723a8966865..654e2ec54f9d 100644 put_task_struct(task); } } +-- +2.24.0 + diff --git a/debian/patches-rt/0144-rtmutex-add-mutex-implementation-based-on-rtmutex.patch b/debian/patches-rt/0144-rtmutex-add-mutex-implementation-based-on-rtmutex.patch index eff654e01..8096d3dda 100644 --- a/debian/patches-rt/0144-rtmutex-add-mutex-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0144-rtmutex-add-mutex-implementation-based-on-rtmutex.patch @@ -1,7 +1,8 @@ +From fc06a654c0dd41e503c005d5e4e2eddbe784887f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 17:17:03 +0200 -Subject: [PATCH 144/290] rtmutex: add mutex implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bab10e0b6d5f774e9d4b8745a51b7d9cc64f9eb0 +Subject: [PATCH 144/291] rtmutex: add mutex implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner Signed-off-by: Sebastian Andrzej Siewior @@ -377,3 +378,6 @@ index 000000000000..4f81595c0f52 + return 1; +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); +-- +2.24.0 + diff --git a/debian/patches-rt/0145-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch b/debian/patches-rt/0145-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch index 3958ce9ea..25781fbeb 100644 --- a/debian/patches-rt/0145-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0145-rtmutex-add-rwsem-implementation-based-on-rtmutex.patch @@ -1,7 +1,8 @@ +From 5fea347b343152798cddcefd138af8269372f6c8 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 17:28:34 +0200 -Subject: [PATCH 145/290] rtmutex: add rwsem implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3056e6baa0fe46629d72199996326a75d58409c6 +Subject: [PATCH 145/291] rtmutex: add rwsem implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -421,3 +422,6 @@ index 000000000000..7d3c5cf3d23d + /* Release it and account current as reader */ + __up_write_unlock(sem, WRITER_BIAS - 1, flags); +} +-- +2.24.0 + diff --git a/debian/patches-rt/0146-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch b/debian/patches-rt/0146-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch index 22bb73993..d2cf6b851 100644 --- a/debian/patches-rt/0146-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch +++ b/debian/patches-rt/0146-rtmutex-add-rwlock-implementation-based-on-rtmutex.patch @@ -1,7 +1,8 @@ +From 01ae9ffde6c5a6ca7ccf6c0475ccdc50fbb2f5ed Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 17:18:06 +0200 -Subject: [PATCH 146/290] rtmutex: add rwlock implementation based on rtmutex -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fd1933abf31e4d8b16f98fda611f5ec1cb9b1161 +Subject: [PATCH 146/291] rtmutex: add rwlock implementation based on rtmutex +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The implementation is bias-based, similar to the rwsem implementation. @@ -576,3 +577,6 @@ index 000000000000..aebb7ce25bc6 + do_rwlock_rt_init(rwlock, name, key); +} +EXPORT_SYMBOL(__rt_rwlock_init); +-- +2.24.0 + diff --git a/debian/patches-rt/0147-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch b/debian/patches-rt/0147-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch index 5b4adc2a7..8913968fd 100644 --- a/debian/patches-rt/0147-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch +++ b/debian/patches-rt/0147-rtmutex-rwlock-preserve-state-like-a-sleeping-lock.patch @@ -1,7 +1,8 @@ +From c70716f384a74ceca96ce1c3d7a4e92354b9193d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 11 Jan 2019 21:16:31 +0100 -Subject: [PATCH 147/290] rtmutex/rwlock: preserve state like a sleeping lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e181b2520df8a6c8ec1db3b847bf2036dd54fbca +Subject: [PATCH 147/291] rtmutex/rwlock: preserve state like a sleeping lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -27,3 +28,6 @@ index aebb7ce25bc6..8f90afe111ce 100644 rt_spin_lock_slowlock_locked(m, &waiter, flags); /* * The slowlock() above is guaranteed to return with the rtmutex is +-- +2.24.0 + diff --git a/debian/patches-rt/0148-rtmutex-wire-up-RT-s-locking.patch b/debian/patches-rt/0148-rtmutex-wire-up-RT-s-locking.patch index 4ca016e0e..4ebe82a4c 100644 --- a/debian/patches-rt/0148-rtmutex-wire-up-RT-s-locking.patch +++ b/debian/patches-rt/0148-rtmutex-wire-up-RT-s-locking.patch @@ -1,7 +1,8 @@ +From 46d346b7e744dc8446129e49629fc78feb5e765d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 12 Oct 2017 17:31:14 +0200 -Subject: [PATCH 148/290] rtmutex: wire up RT's locking -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=124dab5838407b56b59161de8a01d98181dfe729 +Subject: [PATCH 148/291] rtmutex: wire up RT's locking +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner Signed-off-by: Sebastian Andrzej Siewior @@ -265,3 +266,6 @@ index 9aa0fccd5d43..76d0b40d9193 100644 } + +#endif +-- +2.24.0 + diff --git a/debian/patches-rt/0149-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch b/debian/patches-rt/0149-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch index 4f2bbd319..f2e5034d4 100644 --- a/debian/patches-rt/0149-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch +++ b/debian/patches-rt/0149-rtmutex-add-ww_mutex-addon-for-mutex-rt.patch @@ -1,7 +1,8 @@ +From c3b2cb6480d8545dfa037812869a768ff3d0901e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 12 Oct 2017 17:34:38 +0200 -Subject: [PATCH 149/290] rtmutex: add ww_mutex addon for mutex-rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5727916bc6ad502e7bdfa2073c4d24b1a29d482 +Subject: [PATCH 149/291] rtmutex: add ww_mutex addon for mutex-rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Sebastian Andrzej Siewior --- @@ -439,3 +440,6 @@ index 7d3c5cf3d23d..660e22caf709 100644 /* * The slowlock() above is guaranteed to return with the rtmutex (for * ret = 0) is now held, so there can't be a writer active. Increment +-- +2.24.0 + diff --git a/debian/patches-rt/0150-kconfig-Add-PREEMPT_RT_FULL.patch b/debian/patches-rt/0150-kconfig-Add-PREEMPT_RT_FULL.patch index 4569d2094..e3c2f6557 100644 --- a/debian/patches-rt/0150-kconfig-Add-PREEMPT_RT_FULL.patch +++ b/debian/patches-rt/0150-kconfig-Add-PREEMPT_RT_FULL.patch @@ -1,7 +1,8 @@ +From 5115f211acd5b322506e5c637416c29595c6e73c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 14:58:57 +0200 -Subject: [PATCH 150/290] kconfig: Add PREEMPT_RT_FULL -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9cf79c789681c52a2ec521c420c9e50e9b6a2a19 +Subject: [PATCH 150/291] kconfig: Add PREEMPT_RT_FULL +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Introduce the final symbol for PREEMPT_RT_FULL. @@ -16,7 +17,7 @@ diff --git a/init/Makefile b/init/Makefile index a3e5ce2bcf08..7779232563ae 100644 --- a/init/Makefile +++ b/init/Makefile -@@ -34,4 +34,4 @@ $(obj)/version.o: include/generated/compile.h +@@ -34,4 +34,4 @@ silent_chk_compile.h = : include/generated/compile.h: FORCE @$($(quiet)chk_compile.h) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ @@ -63,3 +64,6 @@ index 87f1fc9801d7..f67b15236936 100755 UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP" # Truncate to maximum length +-- +2.24.0 + diff --git a/debian/patches-rt/0151-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch b/debian/patches-rt/0151-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch index 86b842cf9..4956262eb 100644 --- a/debian/patches-rt/0151-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch +++ b/debian/patches-rt/0151-locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch @@ -1,8 +1,9 @@ +From 84f942b3adb3f202bbf99cb6213a5b43d96bf300 Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Mon, 13 Nov 2017 12:56:53 -0500 -Subject: [PATCH 151/290] locking/rt-mutex: fix deadlock in device mapper / +Subject: [PATCH 151/291] 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=982f936d6c159820d6df7fee5e09b0c072472bc3 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -75,3 +76,6 @@ index 1f2dc2dfe2e7..b38c3a92dce8 100644 return slowfn(lock, state, timeout, chwalk, ww_ctx); } +-- +2.24.0 + diff --git a/debian/patches-rt/0152-locking-rt-mutex-Flush-block-plug-on-__down_read.patch b/debian/patches-rt/0152-locking-rt-mutex-Flush-block-plug-on-__down_read.patch index 8d9920b40..d1a833671 100644 --- a/debian/patches-rt/0152-locking-rt-mutex-Flush-block-plug-on-__down_read.patch +++ b/debian/patches-rt/0152-locking-rt-mutex-Flush-block-plug-on-__down_read.patch @@ -1,7 +1,8 @@ +From 360d5e69ca130e0c1822587c07ac65bce78ce666 Mon Sep 17 00:00:00 2001 From: Scott Wood Date: Fri, 4 Jan 2019 15:33:21 -0500 -Subject: [PATCH 152/290] 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=5d45bce4eea516a2d4626f2611c57c7f5cdd89cc +Subject: [PATCH 152/291] locking/rt-mutex: Flush block plug on __down_read() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __down_read() bypasses the rtmutex frontend to call rt_mutex_slowlock_locked() directly, and thus it needs to call @@ -40,3 +41,6 @@ index 660e22caf709..f518495bd6cc 100644 might_sleep(); raw_spin_lock_irq(&m->wait_lock); +-- +2.24.0 + diff --git a/debian/patches-rt/0153-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch b/debian/patches-rt/0153-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch index 21fe21930..3456e1318 100644 --- a/debian/patches-rt/0153-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch +++ b/debian/patches-rt/0153-locking-rtmutex-re-init-the-wait_lock-in-rt_mutex_in.patch @@ -1,8 +1,9 @@ +From ca82845be4e7cb3ba263c0e90eac8df3e46f3119 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 16 Nov 2017 16:48:48 +0100 -Subject: [PATCH 153/290] locking/rtmutex: re-init the wait_lock in +Subject: [PATCH 153/291] 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=361d72a145de18a02d4072fead2642a386755146 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -33,3 +34,6 @@ index b38c3a92dce8..94788662b2f2 100644 debug_rt_mutex_proxy_lock(lock, proxy_owner); rt_mutex_set_owner(lock, proxy_owner); } +-- +2.24.0 + diff --git a/debian/patches-rt/0154-ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/debian/patches-rt/0154-ptrace-fix-ptrace-vs-tasklist_lock-race.patch index e5a62779a..c860d2d00 100644 --- a/debian/patches-rt/0154-ptrace-fix-ptrace-vs-tasklist_lock-race.patch +++ b/debian/patches-rt/0154-ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -1,7 +1,8 @@ +From 7c8e6b349796c629dcda3584fbe21e74469ffb06 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 29 Aug 2013 18:21:04 +0200 -Subject: [PATCH 154/290] ptrace: fix ptrace vs tasklist_lock race -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dc2b806b1905e1f7f8538a75cb22fbef4d319f7f +Subject: [PATCH 154/291] ptrace: fix ptrace vs tasklist_lock race +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz As explained by Alexander Fyodorov : @@ -119,7 +120,7 @@ index fed682a01a75..ace2839323de 100644 } spin_unlock_irq(&task->sighand->siglock); diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 654e2ec54f9d..fc2826788d16 100644 +index 6a0ccaea2b42..6bab30347081 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, @@ -160,3 +161,6 @@ index 654e2ec54f9d..fc2826788d16 100644 ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ task_rq_unlock(rq, p, &rf); +-- +2.24.0 + diff --git a/debian/patches-rt/0155-rtmutex-annotate-sleeping-lock-context.patch b/debian/patches-rt/0155-rtmutex-annotate-sleeping-lock-context.patch index 2d4e134ea..c179fc3a2 100644 --- a/debian/patches-rt/0155-rtmutex-annotate-sleeping-lock-context.patch +++ b/debian/patches-rt/0155-rtmutex-annotate-sleeping-lock-context.patch @@ -1,7 +1,8 @@ +From 1a2bef16f0eae3be74774db4e7dcda547f093d8a Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 21 Sep 2017 14:25:13 +0200 -Subject: [PATCH 155/290] rtmutex: annotate sleeping lock context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1dc416b3e49814a54ed09b9248b6ec3183db9f8e +Subject: [PATCH 155/291] rtmutex: annotate sleeping lock context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +250,10 @@ index a97c20ea9bce..564e3927e7b0 100644 !t->rcu_read_unlock_special.b.blocked) { diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index fc2826788d16..5fa7e1b544d2 100644 +index 6bab30347081..d49580cb0eb2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -7353,4 +7353,49 @@ void migrate_enable(void) +@@ -7354,4 +7354,49 @@ void migrate_enable(void) preempt_enable(); } EXPORT_SYMBOL(migrate_enable); @@ -302,3 +303,6 @@ index fc2826788d16..5fa7e1b544d2 100644 +} +EXPORT_SYMBOL(migrate_enable); #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0156-sched-migrate_disable-fallback-to-preempt_disable-in.patch b/debian/patches-rt/0156-sched-migrate_disable-fallback-to-preempt_disable-in.patch index 62ed08195..0788cbf0e 100644 --- a/debian/patches-rt/0156-sched-migrate_disable-fallback-to-preempt_disable-in.patch +++ b/debian/patches-rt/0156-sched-migrate_disable-fallback-to-preempt_disable-in.patch @@ -1,8 +1,9 @@ +From c01bef50a5377fc576ab0c28621fcdb85265ab5c Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 5 Jul 2018 14:44:51 +0200 -Subject: [PATCH 156/290] sched/migrate_disable: fallback to preempt_disable() +Subject: [PATCH 156/291] 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=a4408a9fddd06393e70db9e3e61ae63973d1d257 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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,7 +94,7 @@ index c5f050afff18..53d92153700b 100644 # endif #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 5fa7e1b544d2..ed44ed8215dd 100644 +index d49580cb0eb2..3b2664e691de 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1031,7 +1031,7 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma @@ -123,7 +124,7 @@ index 5fa7e1b544d2..ed44ed8215dd 100644 if (__migrate_disabled(p)) { p->migrate_disable_update = 1; goto out; -@@ -7209,7 +7209,7 @@ const u32 sched_prio_to_wmult[40] = { +@@ -7210,7 +7210,7 @@ const u32 sched_prio_to_wmult[40] = { #undef CREATE_TRACE_POINTS @@ -132,7 +133,7 @@ index 5fa7e1b544d2..ed44ed8215dd 100644 static inline void update_nr_migratory(struct task_struct *p, long delta) -@@ -7357,45 +7357,44 @@ EXPORT_SYMBOL(migrate_enable); +@@ -7358,45 +7358,44 @@ EXPORT_SYMBOL(migrate_enable); #elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) void migrate_disable(void) { @@ -198,3 +199,6 @@ index 5027158d3908..dd6c364d6f01 100644 P(migrate_disable); #endif P(nr_cpus_allowed); +-- +2.24.0 + diff --git a/debian/patches-rt/0157-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch b/debian/patches-rt/0157-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch index 03a952366..8521f3914 100644 --- a/debian/patches-rt/0157-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch +++ b/debian/patches-rt/0157-locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch @@ -1,8 +1,9 @@ +From 1a57a1a78533f7029a73dbd8251f59097d2f5e45 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 4 Aug 2017 17:40:42 +0200 -Subject: [PATCH 157/290] locking: don't check for __LINUX_SPINLOCK_TYPES_H on +Subject: [PATCH 157/291] 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=ca5186cf254ac598302e902572f9ec6e5208101e +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Upstream uses arch_spinlock_t within spinlock_t and requests that spinlock_types.h header file is included first. @@ -176,3 +177,6 @@ index c09b6407ae1b..b0243ba07fb7 100644 /* * include/linux/spinlock_types_up.h - spinlock type definitions for UP * +-- +2.24.0 + diff --git a/debian/patches-rt/0158-rcu-Frob-softirq-test.patch b/debian/patches-rt/0158-rcu-Frob-softirq-test.patch index cfbeb0436..3e24aeb2e 100644 --- a/debian/patches-rt/0158-rcu-Frob-softirq-test.patch +++ b/debian/patches-rt/0158-rcu-Frob-softirq-test.patch @@ -1,7 +1,8 @@ +From 5407933bf46acea28469e199610a9bf9ee943fad Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Sat, 13 Aug 2011 00:23:17 +0200 -Subject: [PATCH 158/290] rcu: Frob softirq test -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a9338244bc09a7c6c2f6397d445fd1fac3f73ad +Subject: [PATCH 158/291] rcu: Frob softirq test +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz With RT_FULL we get the below wreckage: @@ -167,3 +168,6 @@ index 564e3927e7b0..429a2f144e19 100644 lockdep_rcu_suspicious(__FILE__, __LINE__, "rcu_read_unlock() from irq or softirq with blocking in critical section!!!\n"); pr_alert("->rcu_read_unlock_special: %#x (b: %d, enq: %d nq: %d)\n", +-- +2.24.0 + diff --git a/debian/patches-rt/0159-rcu-Merge-RCU-bh-into-RCU-preempt.patch b/debian/patches-rt/0159-rcu-Merge-RCU-bh-into-RCU-preempt.patch index 6bcd61696..7db92b167 100644 --- a/debian/patches-rt/0159-rcu-Merge-RCU-bh-into-RCU-preempt.patch +++ b/debian/patches-rt/0159-rcu-Merge-RCU-bh-into-RCU-preempt.patch @@ -1,7 +1,8 @@ +From 085b424d3ad3fddac6f8483d47c7e663580bd0c7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 5 Oct 2011 11:59:38 -0700 -Subject: [PATCH 159/290] rcu: Merge RCU-bh into RCU-preempt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0cde6b9c8eb03c12c6386be0e528677d3fea03ad +Subject: [PATCH 159/291] rcu: Merge RCU-bh into RCU-preempt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, @@ -345,3 +346,6 @@ index 81688a133552..6ffafb1b1584 100644 #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ +-- +2.24.0 + diff --git a/debian/patches-rt/0160-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch b/debian/patches-rt/0160-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch index cf9aabc6d..652f96226 100644 --- a/debian/patches-rt/0160-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch +++ b/debian/patches-rt/0160-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch @@ -1,7 +1,8 @@ +From da50f514a602e77e56861835b6c01dd5d361d11b Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Wed, 5 Oct 2011 11:45:18 -0700 -Subject: [PATCH 160/290] rcu: Make ksoftirqd do RCU quiescent states -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c601f950fa972271a42584bc6a375e57b9de7ced +Subject: [PATCH 160/291] rcu: Make ksoftirqd do RCU quiescent states +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore @@ -111,3 +112,6 @@ index 429a2f144e19..bee9bffeb0ce 100644 /* * Prepare a CPU for idle from an RCU perspective. The first major task +-- +2.24.0 + diff --git a/debian/patches-rt/0161-rcu-Eliminate-softirq-processing-from-rcutree.patch b/debian/patches-rt/0161-rcu-Eliminate-softirq-processing-from-rcutree.patch index c5b910185..bc2354f8d 100644 --- a/debian/patches-rt/0161-rcu-Eliminate-softirq-processing-from-rcutree.patch +++ b/debian/patches-rt/0161-rcu-Eliminate-softirq-processing-from-rcutree.patch @@ -1,7 +1,8 @@ +From cc07d4bc06075d6a2442c1b976679ba982043009 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Mon, 4 Nov 2013 13:21:10 -0800 -Subject: [PATCH 161/290] rcu: Eliminate softirq processing from rcutree -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3849b64ca740e816ba3e9c8c188225a500d906ce +Subject: [PATCH 161/291] rcu: Eliminate softirq processing from rcutree +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Running RCU out of softirq is a problem for some workloads that would like to manage RCU core processing independently of other softirq work, @@ -417,3 +418,6 @@ index bee9bffeb0ce..2e8737f1010f 100644 static bool rcu_is_callbacks_kthread(void) { return false; +-- +2.24.0 + diff --git a/debian/patches-rt/0162-srcu-use-cpu_online-instead-custom-check.patch b/debian/patches-rt/0162-srcu-use-cpu_online-instead-custom-check.patch index c41baf6d0..8562b098c 100644 --- a/debian/patches-rt/0162-srcu-use-cpu_online-instead-custom-check.patch +++ b/debian/patches-rt/0162-srcu-use-cpu_online-instead-custom-check.patch @@ -1,7 +1,8 @@ +From 2cba2648caec4dbb0181fc50c2634386402bd67e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 13 Sep 2017 14:43:41 +0200 -Subject: [PATCH 162/290] srcu: use cpu_online() instead custom check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8e14a2b6827eff60c356df5338a5742202fa52e +Subject: [PATCH 162/291] srcu: use cpu_online() instead custom check +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The current check via srcu_online is slightly racy because after looking at srcu_online there could be an interrupt that interrupted us long @@ -90,3 +91,6 @@ index ae716ca783bc..f162a4f54b05 100644 return 0; } +-- +2.24.0 + diff --git a/debian/patches-rt/0163-srcu-replace-local_irqsave-with-a-locallock.patch b/debian/patches-rt/0163-srcu-replace-local_irqsave-with-a-locallock.patch index 8d9dcf045..351398601 100644 --- a/debian/patches-rt/0163-srcu-replace-local_irqsave-with-a-locallock.patch +++ b/debian/patches-rt/0163-srcu-replace-local_irqsave-with-a-locallock.patch @@ -1,7 +1,8 @@ +From bedea287f54e9d0ba65048a7c121552709eca316 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 12 Oct 2017 18:37:12 +0200 -Subject: [PATCH 163/290] srcu: replace local_irqsave() with a locallock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4223fcff7c7a145c27b6e917d8113a340b4f0fe7 +Subject: [PATCH 163/291] srcu: replace local_irqsave() with a locallock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz There are two instances which disable interrupts in order to become a stable this_cpu_ptr() pointer. The restore part is coupled with @@ -71,3 +72,6 @@ index df0375453ba1..0f09a1a9e17c 100644 if (needgp) srcu_funnel_gp_start(sp, sdp, s, do_norm); else if (needexp) +-- +2.24.0 + diff --git a/debian/patches-rt/0164-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch b/debian/patches-rt/0164-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch index a7c6e9329..82a18401e 100644 --- a/debian/patches-rt/0164-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch +++ b/debian/patches-rt/0164-rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch @@ -1,7 +1,8 @@ +From 8fd95dbe3aeb48841f474edf2952b3c3aaa158cc Mon Sep 17 00:00:00 2001 From: Julia Cartwright Date: Wed, 12 Oct 2016 11:21:14 -0500 -Subject: [PATCH 164/290] 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=eb935a53cab85b5354d0dea339bdc8c6aacff1ea +Subject: [PATCH 164/291] rcu: enable rcu_normal_after_boot by default for RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The forcing of an expedited grace period is an expensive and very RT-application unfriendly operation, as it forcibly preempts all running @@ -31,3 +32,6 @@ index 6ffafb1b1584..16d8dba23329 100644 module_param(rcu_normal_after_boot, int, 0); #endif /* #ifndef CONFIG_TINY_RCU */ +-- +2.24.0 + diff --git a/debian/patches-rt/0165-tty-serial-omap-Make-the-locking-RT-aware.patch b/debian/patches-rt/0165-tty-serial-omap-Make-the-locking-RT-aware.patch index d0f26d53c..ef97f5a8d 100644 --- a/debian/patches-rt/0165-tty-serial-omap-Make-the-locking-RT-aware.patch +++ b/debian/patches-rt/0165-tty-serial-omap-Make-the-locking-RT-aware.patch @@ -1,7 +1,8 @@ +From 817ed303e8f93817961372868fbca9c404d7d850 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 28 Jul 2011 13:32:57 +0200 -Subject: [PATCH 165/290] tty/serial/omap: Make the locking RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1aa166b3cda7c4fa842730ba6380b6aefde743f +Subject: [PATCH 165/291] tty/serial/omap: Make the locking RT aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -43,3 +44,6 @@ index 6420ae581a80..0f4f41ed9ffa 100644 } static int __init +-- +2.24.0 + diff --git a/debian/patches-rt/0166-tty-serial-pl011-Make-the-locking-work-on-RT.patch b/debian/patches-rt/0166-tty-serial-pl011-Make-the-locking-work-on-RT.patch index e8c33d261..267cd0212 100644 --- a/debian/patches-rt/0166-tty-serial-pl011-Make-the-locking-work-on-RT.patch +++ b/debian/patches-rt/0166-tty-serial-pl011-Make-the-locking-work-on-RT.patch @@ -1,7 +1,8 @@ +From 5cf5a0697974de479f13994ffeeef593913d2d78 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 8 Jan 2013 21:36:51 +0100 -Subject: [PATCH 166/290] 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=8439d05feecf238ad757c9a011a3dc5efcc313a1 +Subject: [PATCH 166/291] tty/serial/pl011: Make the locking work on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +13,10 @@ Signed-off-by: Thomas Gleixner 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 89ade213a1a9..6be86f8c7e6a 100644 +index af21122dfade..183e8b731d6a 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2216,13 +2216,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2214,13 +2214,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) clk_enable(uap->clk); @@ -38,7 +39,7 @@ index 89ade213a1a9..6be86f8c7e6a 100644 /* * First save the CR then disable the interrupts -@@ -2248,8 +2254,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2246,8 +2252,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) pl011_write(old_cr, uap, REG_CR); if (locked) @@ -48,3 +49,6 @@ index 89ade213a1a9..6be86f8c7e6a 100644 clk_disable(uap->clk); } +-- +2.24.0 + diff --git a/debian/patches-rt/0167-tty-serial-pl011-explicitly-initialize-the-flags-var.patch b/debian/patches-rt/0167-tty-serial-pl011-explicitly-initialize-the-flags-var.patch index 6b5f6d19b..7da6dcf9d 100644 --- a/debian/patches-rt/0167-tty-serial-pl011-explicitly-initialize-the-flags-var.patch +++ b/debian/patches-rt/0167-tty-serial-pl011-explicitly-initialize-the-flags-var.patch @@ -1,11 +1,12 @@ +From 78bfc3b8653b3e8599d89d728effe5c8b9bdc672 Mon Sep 17 00:00:00 2001 From: Kurt Kanzenbach Date: Mon, 24 Sep 2018 10:29:01 +0200 -Subject: [PATCH 167/290] tty: serial: pl011: explicitly initialize the flags +Subject: [PATCH 167/291] 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=f62463ebdcecc357660298ab74a11df27df0adc3 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Silence the following gcc warning: @@ -27,10 +28,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 6be86f8c7e6a..59b4ab7b50bf 100644 +index 183e8b731d6a..2cc6b24bc88d 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2211,7 +2211,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) +@@ -2209,7 +2209,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; @@ -39,3 +40,6 @@ index 6be86f8c7e6a..59b4ab7b50bf 100644 int locked = 1; clk_enable(uap->clk); +-- +2.24.0 + diff --git a/debian/patches-rt/0168-rt-Improve-the-serial-console-PASS_LIMIT.patch b/debian/patches-rt/0168-rt-Improve-the-serial-console-PASS_LIMIT.patch index 829081a51..cca8800f8 100644 --- a/debian/patches-rt/0168-rt-Improve-the-serial-console-PASS_LIMIT.patch +++ b/debian/patches-rt/0168-rt-Improve-the-serial-console-PASS_LIMIT.patch @@ -1,10 +1,11 @@ +From 99ba88ac9e4bddf4257077ca8d9060c77418627a Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Wed, 14 Dec 2011 13:05:54 +0100 -Subject: [PATCH 168/290] rt: Improve the serial console PASS_LIMIT +Subject: [PATCH 168/291] 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=6cb957cb6dd7593e888563c6d3dc8ddfc96d1179 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Beyond the warning: @@ -20,7 +21,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index 8fe3d0ed229e..a2baac4c8b63 100644 +index 69aaee5d7fe1..cf88317a95fc 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -54,7 +54,16 @@ static struct uart_driver serial8250_reg; @@ -41,3 +42,6 @@ index 8fe3d0ed229e..a2baac4c8b63 100644 #include /* +-- +2.24.0 + diff --git a/debian/patches-rt/0169-tty-serial-8250-don-t-take-the-trylock-during-oops.patch b/debian/patches-rt/0169-tty-serial-8250-don-t-take-the-trylock-during-oops.patch index 0fca93a21..e3fdcdcfd 100644 --- a/debian/patches-rt/0169-tty-serial-8250-don-t-take-the-trylock-during-oops.patch +++ b/debian/patches-rt/0169-tty-serial-8250-don-t-take-the-trylock-during-oops.patch @@ -1,7 +1,8 @@ +From 462dce236f0f131b419f9df7bc1ff5f241677b8c Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 11 Apr 2016 16:55:02 +0200 -Subject: [PATCH 169/290] 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=ab14019d06506af1681a118b437e278ede26523e +Subject: [PATCH 169/291] tty: serial: 8250: don't take the trylock during oops +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -29,3 +30,6 @@ index aa4de6907f77..6b1d46c1df3b 100644 else spin_lock_irqsave(&port->lock, flags); +-- +2.24.0 + diff --git a/debian/patches-rt/0170-locking-percpu-rwsem-Remove-preempt_disable-variants.patch b/debian/patches-rt/0170-locking-percpu-rwsem-Remove-preempt_disable-variants.patch index 36016f47f..1593cdab3 100644 --- a/debian/patches-rt/0170-locking-percpu-rwsem-Remove-preempt_disable-variants.patch +++ b/debian/patches-rt/0170-locking-percpu-rwsem-Remove-preempt_disable-variants.patch @@ -1,7 +1,8 @@ +From ced136b4a3a92b5a8ef5ebdcacc93fab73b30c0e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 23 Nov 2016 16:29:32 +0100 -Subject: [PATCH 170/290] locking/percpu-rwsem: Remove preempt_disable variants -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bd2407192fdb6b4ab9958ae8e7df76b9b0b1ca3f +Subject: [PATCH 170/291] locking/percpu-rwsem: Remove preempt_disable variants +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Effective revert commit: @@ -220,3 +221,6 @@ index 79b99d653e03..fb44e237316d 100644 extern void percpu_down_write(struct percpu_rw_semaphore *); extern void percpu_up_write(struct percpu_rw_semaphore *); +-- +2.24.0 + diff --git a/debian/patches-rt/0171-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch b/debian/patches-rt/0171-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch index fe7150ccd..c5294b1dc 100644 --- a/debian/patches-rt/0171-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch +++ b/debian/patches-rt/0171-mm-Protect-activate_mm-by-preempt_-disable-enable-_r.patch @@ -1,8 +1,9 @@ +From 42ed1c2642ef5414bca4eb0ce987845dc85c761e Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Tue, 15 May 2012 13:53:56 +0800 -Subject: [PATCH 171/290] mm: Protect activate_mm() by +Subject: [PATCH 171/291] 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=92aa811a04477ea039cc3410d3995550d7701de0 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz User preempt_*_rt instead of local_irq_*_rt or otherwise there will be warning on ARM like below: @@ -75,3 +76,6 @@ index 3e612ae748e9..d0ccc070979f 100644 task_unlock(tsk); #ifdef finish_arch_post_lock_switch finish_arch_post_lock_switch(); +-- +2.24.0 + diff --git a/debian/patches-rt/0172-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch b/debian/patches-rt/0172-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch index 2621dcb06..98aebf04b 100644 --- a/debian/patches-rt/0172-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch +++ b/debian/patches-rt/0172-fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-ini.patch @@ -1,8 +1,9 @@ +From d80bf465170b4bf24223d8015c2c604bfbea67ab Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 13 Sep 2017 12:32:34 +0200 -Subject: [PATCH 172/290] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD +Subject: [PATCH 172/291] 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=e3be20e797ac5235e6dea292095b4965758e5fae +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -55,3 +56,6 @@ index 6e0022326afe..10225a9135fb 100644 d_hash_shift = 32 - d_hash_shift; } +-- +2.24.0 + diff --git a/debian/patches-rt/0173-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch b/debian/patches-rt/0173-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch index 7a3990617..9c3e9acc6 100644 --- a/debian/patches-rt/0173-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch +++ b/debian/patches-rt/0173-fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch @@ -1,8 +1,9 @@ +From ba7462ed021a2886a4633fde1864a65fb0da356c Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 20 Oct 2017 11:29:53 +0200 -Subject: [PATCH 173/290] fs/dcache: disable preemption on i_dir_seq's write +Subject: [PATCH 173/291] 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=b76c5592f74b41c5b7b2bca53c5276466618cc91 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -93,3 +94,6 @@ index 92420009b9bc..9b2b707e9112 100644 }; __u32 i_generation; +-- +2.24.0 + diff --git a/debian/patches-rt/0174-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch b/debian/patches-rt/0174-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch index 58b74a056..5890643eb 100644 --- a/debian/patches-rt/0174-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch +++ b/debian/patches-rt/0174-squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch @@ -1,8 +1,9 @@ +From 62f5675a81b3ef1f938dd06c67bdb6f769e457b1 Mon Sep 17 00:00:00 2001 From: Julia Cartwright Date: Mon, 7 May 2018 08:58:57 -0500 -Subject: [PATCH 174/290] squashfs: make use of local lock in multi_cpu +Subject: [PATCH 174/291] 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=d33cd90abebb1208dcdad47bfaae55dfe6210384 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Currently, the squashfs multi_cpu decompressor makes use of get_cpu_ptr()/put_cpu_ptr(), which unconditionally disable preemption @@ -66,3 +67,6 @@ index 23a9c28ad8ea..6a73c4fa88e7 100644 if (res < 0) ERROR("%s decompression failed, data probably corrupt\n", +-- +2.24.0 + diff --git a/debian/patches-rt/0175-thermal-Defer-thermal-wakups-to-threads.patch b/debian/patches-rt/0175-thermal-Defer-thermal-wakups-to-threads.patch index 3f386f94a..9be0ae465 100644 --- a/debian/patches-rt/0175-thermal-Defer-thermal-wakups-to-threads.patch +++ b/debian/patches-rt/0175-thermal-Defer-thermal-wakups-to-threads.patch @@ -1,7 +1,8 @@ +From fe21f9e6d6a6bf7dc6be7e0c79b5ea8913b75edb Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Tue, 17 Feb 2015 09:37:44 +0100 -Subject: [PATCH 175/290] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d72bb8e181f96a5083272f0f0a81398734754a1e +Subject: [PATCH 175/291] thermal: Defer thermal wakups to threads +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On RT the spin lock in pkg_temp_thermal_platfrom_thermal_notify will call schedule while we run in irq context. @@ -131,3 +132,6 @@ index 1ef937d799e4..a5991cbb408f 100644 } module_exit(pkg_temp_thermal_exit) +-- +2.24.0 + diff --git a/debian/patches-rt/0176-x86-fpu-Disable-preemption-around-local_bh_disable.patch b/debian/patches-rt/0176-x86-fpu-Disable-preemption-around-local_bh_disable.patch index 740840542..5683cf3ed 100644 --- a/debian/patches-rt/0176-x86-fpu-Disable-preemption-around-local_bh_disable.patch +++ b/debian/patches-rt/0176-x86-fpu-Disable-preemption-around-local_bh_disable.patch @@ -1,7 +1,8 @@ +From a88859a42be94e787aa974fc85b1ef31c5fcc18e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 11 Dec 2018 15:10:33 +0100 -Subject: [PATCH 176/290] x86/fpu: Disable preemption around local_bh_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b7106c9d220d744e3fe1c149b187b48876a9e5f4 +Subject: [PATCH 176/291] x86/fpu: Disable preemption around local_bh_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __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 @@ -32,3 +33,6 @@ index d99a8ee9e185..5e0274a94133 100644 return err; } else { +-- +2.24.0 + diff --git a/debian/patches-rt/0177-fs-epoll-Do-not-disable-preemption-on-RT.patch b/debian/patches-rt/0177-fs-epoll-Do-not-disable-preemption-on-RT.patch index 1fc9dcfba..8ac138149 100644 --- a/debian/patches-rt/0177-fs-epoll-Do-not-disable-preemption-on-RT.patch +++ b/debian/patches-rt/0177-fs-epoll-Do-not-disable-preemption-on-RT.patch @@ -1,7 +1,8 @@ +From 7ff343216f97f4a485046ae50e73f90472810bbf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 8 Jul 2011 16:35:35 +0200 -Subject: [PATCH 177/290] fs/epoll: Do not disable preemption on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=723ebe37abb09e4f0d3f367217307266d12f04da +Subject: [PATCH 177/291] fs/epoll: Do not disable preemption on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -31,3 +32,6 @@ index 58f48ea0db23..a41120a34e6d 100644 } #else +-- +2.24.0 + diff --git a/debian/patches-rt/0178-mm-vmalloc-Another-preempt-disable-region-which-suck.patch b/debian/patches-rt/0178-mm-vmalloc-Another-preempt-disable-region-which-suck.patch index 76bbc5dc4..1a02b44e3 100644 --- a/debian/patches-rt/0178-mm-vmalloc-Another-preempt-disable-region-which-suck.patch +++ b/debian/patches-rt/0178-mm-vmalloc-Another-preempt-disable-region-which-suck.patch @@ -1,8 +1,9 @@ +From a25b898cef8df2e36a17bacfafa0e31523e8d9a4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 11:39:36 +0200 -Subject: [PATCH 178/290] mm/vmalloc: Another preempt disable region which +Subject: [PATCH 178/291] mm/vmalloc: Another preempt disable region which sucks -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=984f0aea9084e80c662e605b8683389dd685232d +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Avoid the preempt disable version of get_cpu_var(). The inner-lock should provide enough serialisation. @@ -67,3 +68,6 @@ index d8e877365f9f..9b7cf993cada 100644 rcu_read_unlock(); /* Allocate new block if nothing was found */ +-- +2.24.0 + diff --git a/debian/patches-rt/0179-block-mq-use-cpu_light.patch b/debian/patches-rt/0179-block-mq-use-cpu_light.patch index f788e80c3..81bbecaa7 100644 --- a/debian/patches-rt/0179-block-mq-use-cpu_light.patch +++ b/debian/patches-rt/0179-block-mq-use-cpu_light.patch @@ -1,7 +1,8 @@ +From 991985bed9293ecd19a5362d81c8165261c696cd Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 9 Apr 2014 10:37:23 +0200 -Subject: [PATCH 179/290] block: mq: use cpu_light() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=89d6f7956e2046a5b49e51aa3f200b64023fb8aa +Subject: [PATCH 179/291] block: mq: use cpu_light() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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(). @@ -30,3 +31,6 @@ index 5ad9251627f8..5a96c97991b6 100644 } struct blk_mq_alloc_data { +-- +2.24.0 + diff --git a/debian/patches-rt/0180-block-mq-do-not-invoke-preempt_disable.patch b/debian/patches-rt/0180-block-mq-do-not-invoke-preempt_disable.patch index e6023a0a7..3946f7bb4 100644 --- a/debian/patches-rt/0180-block-mq-do-not-invoke-preempt_disable.patch +++ b/debian/patches-rt/0180-block-mq-do-not-invoke-preempt_disable.patch @@ -1,7 +1,8 @@ +From 2882604a181cc5fccb2e4e16e51890a11932f535 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 180/290] block/mq: do not invoke preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac4e6d6f8a4fc0bb512302adf00e280a5a4ec275 +Subject: [PATCH 180/291] block/mq: do not invoke preempt_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz preempt_disable() and get_cpu() don't play well together with the sleeping locks it tries to allocate later. @@ -52,3 +53,6 @@ index 4aa3284874f6..376fb90de054 100644 } kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work, +-- +2.24.0 + diff --git a/debian/patches-rt/0181-block-mq-don-t-complete-requests-via-IPI.patch b/debian/patches-rt/0181-block-mq-don-t-complete-requests-via-IPI.patch index da708db20..daf3b475e 100644 --- a/debian/patches-rt/0181-block-mq-don-t-complete-requests-via-IPI.patch +++ b/debian/patches-rt/0181-block-mq-don-t-complete-requests-via-IPI.patch @@ -1,7 +1,8 @@ +From 0e7d1e6c6e3b7f2d386943ad33e1c5f8bfed7670 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 29 Jan 2015 15:10:08 +0100 -Subject: [PATCH 181/290] block/mq: don't complete requests via IPI -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba611c8f81858be6e3e56e1e556ee058d65df3c7 +Subject: [PATCH 181/291] block/mq: don't complete requests via IPI +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The IPI runs in hardirq context and there are sleeping locks. This patch moves the completion into a workqueue. @@ -15,7 +16,7 @@ Signed-off-by: Sebastian Andrzej Siewior 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 074ae9376189..0edb346263b8 100644 +index ea33d6abdcfc..4860cd26cd5a 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) @@ -113,3 +114,6 @@ index d51e10f50e75..f1960add94df 100644 struct blk_mq_ctx *mq_ctx; int cpu; +-- +2.24.0 + diff --git a/debian/patches-rt/0182-md-raid5-Make-raid5_percpu-handling-RT-aware.patch b/debian/patches-rt/0182-md-raid5-Make-raid5_percpu-handling-RT-aware.patch index ca8d4e762..6f32857f8 100644 --- a/debian/patches-rt/0182-md-raid5-Make-raid5_percpu-handling-RT-aware.patch +++ b/debian/patches-rt/0182-md-raid5-Make-raid5_percpu-handling-RT-aware.patch @@ -1,7 +1,8 @@ +From 40a927b047107baa836bc15970910c823ff4ba82 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 6 Apr 2010 16:51:31 +0200 -Subject: [PATCH 182/290] md: raid5: Make raid5_percpu handling RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca0dd19a307514cdb9330e8439eb01949dba8bfb +Subject: [PATCH 182/291] md: raid5: Make raid5_percpu handling RT aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -19,7 +20,7 @@ Tested-by: Udo van den Heuvel 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 4a5aad26ded7..7245222787f7 100644 +index 01021382131b..379ce2f57512 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2069,8 +2069,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) @@ -71,3 +72,6 @@ index 8474c224127b..a3bf907ab2af 100644 struct page *spare_page; /* Used when checking P/Q in raid6 */ struct flex_array *scribble; /* space for constructing buffer * lists and performing address +-- +2.24.0 + diff --git a/debian/patches-rt/0183-rt-Introduce-cpu_chill.patch b/debian/patches-rt/0183-rt-Introduce-cpu_chill.patch index 954158b27..4a1222821 100644 --- a/debian/patches-rt/0183-rt-Introduce-cpu_chill.patch +++ b/debian/patches-rt/0183-rt-Introduce-cpu_chill.patch @@ -1,7 +1,8 @@ +From 8e45b9590702e5bc703ef1b4763df882b42ba358 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 7 Mar 2012 20:51:03 +0100 -Subject: [PATCH 183/290] rt: Introduce cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=659e4f914a6993cf0589d66323ab73e8f339b97b +Subject: [PATCH 183/291] rt: Introduce cpu_chill() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -107,3 +108,6 @@ index cfa3599fa789..851b2134e77f 100644 /* * Functions related to boot-time initialization: */ +-- +2.24.0 + diff --git a/debian/patches-rt/0184-hrtimer-Don-t-lose-state-in-cpu_chill.patch b/debian/patches-rt/0184-hrtimer-Don-t-lose-state-in-cpu_chill.patch index acdf9da89..95f8941da 100644 --- a/debian/patches-rt/0184-hrtimer-Don-t-lose-state-in-cpu_chill.patch +++ b/debian/patches-rt/0184-hrtimer-Don-t-lose-state-in-cpu_chill.patch @@ -1,7 +1,8 @@ +From 1e2b7e53acae1e48457df02566d8bcc97a9b3ab7 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 19 Feb 2019 16:59:15 +0100 -Subject: [PATCH 184/290] hrtimer: Don't lose state in cpu_chill() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=90daf635e3dc26a4457ccb0d7c6833364ace0588 +Subject: [PATCH 184/291] hrtimer: Don't lose state in cpu_chill() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -42,3 +43,6 @@ index 851b2134e77f..6f2736ec4b8e 100644 } EXPORT_SYMBOL(cpu_chill); #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0185-hrtimer-cpu_chill-save-task-state-in-saved_state.patch b/debian/patches-rt/0185-hrtimer-cpu_chill-save-task-state-in-saved_state.patch index 5edad5943..66f3cf492 100644 --- a/debian/patches-rt/0185-hrtimer-cpu_chill-save-task-state-in-saved_state.patch +++ b/debian/patches-rt/0185-hrtimer-cpu_chill-save-task-state-in-saved_state.patch @@ -1,8 +1,9 @@ +From 3fa982d12dc286e6f2072ff5ed03db14b7451ed8 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 26 Feb 2019 12:31:10 +0100 -Subject: [PATCH 185/290] hrtimer: cpu_chill(): save task state in +Subject: [PATCH 185/291] 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=257cbf0f7494e27b80ba0f94daaabb3198e02305 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -57,3 +58,6 @@ index 6f2736ec4b8e..e1040b80362c 100644 } EXPORT_SYMBOL(cpu_chill); #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0186-block-blk-mq-move-blk_queue_usage_counter_release-in.patch b/debian/patches-rt/0186-block-blk-mq-move-blk_queue_usage_counter_release-in.patch index 77780c4dc..a72ab2243 100644 --- a/debian/patches-rt/0186-block-blk-mq-move-blk_queue_usage_counter_release-in.patch +++ b/debian/patches-rt/0186-block-blk-mq-move-blk_queue_usage_counter_release-in.patch @@ -1,8 +1,9 @@ +From ad57862fbdadc1008e33f7431b96f0eb816ea0ef Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 13 Mar 2018 13:49:16 +0100 -Subject: [PATCH 186/290] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 186/291] 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=c42562ee54e99ab855db63ca0f224c76515fe664 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz | 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,10 +52,10 @@ Signed-off-by: Sebastian Andrzej Siewior 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 0edb346263b8..06fcd081696e 100644 +index 4860cd26cd5a..13bf37156bb0 100644 --- a/block/blk-core.c +++ b/block/blk-core.c -@@ -970,12 +970,21 @@ void blk_queue_exit(struct request_queue *q) +@@ -973,12 +973,21 @@ void blk_queue_exit(struct request_queue *q) percpu_ref_put(&q->q_usage_counter); } @@ -77,7 +78,7 @@ index 0edb346263b8..06fcd081696e 100644 } static void blk_rq_timed_out_timer(struct timer_list *t) -@@ -1072,6 +1081,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, +@@ -1075,6 +1084,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, queue_flag_set_unlocked(QUEUE_FLAG_BYPASS, q); init_waitqueue_head(&q->mq_freeze_wq); @@ -85,7 +86,7 @@ index 0edb346263b8..06fcd081696e 100644 /* * Init percpu_ref in atomic mode so that it's faster to shutdown. -@@ -3961,6 +3971,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"); @@ -114,3 +115,6 @@ index f1960add94df..7b7c0bc6a514 100644 struct percpu_ref q_usage_counter; struct list_head all_q_node; +-- +2.24.0 + diff --git a/debian/patches-rt/0187-block-Use-cpu_chill-for-retry-loops.patch b/debian/patches-rt/0187-block-Use-cpu_chill-for-retry-loops.patch index b2c13e73b..fa75f7d1d 100644 --- a/debian/patches-rt/0187-block-Use-cpu_chill-for-retry-loops.patch +++ b/debian/patches-rt/0187-block-Use-cpu_chill-for-retry-loops.patch @@ -1,7 +1,8 @@ +From 51c0015cc794a69ad3d0f6805df6108a39cb09fc Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 20 Dec 2012 18:28:26 +0100 -Subject: [PATCH 187/290] block: Use cpu_chill() for retry loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9cf22ca96dd1665b30609658a308c09ecb55c1c1 +Subject: [PATCH 187/291] block: Use cpu_chill() for retry loops +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Steven also observed a live lock when there was a @@ -45,3 +46,6 @@ index 01580f88fcb3..98d87e52ccdc 100644 goto retry; } } +-- +2.24.0 + diff --git a/debian/patches-rt/0188-fs-dcache-Use-cpu_chill-in-trylock-loops.patch b/debian/patches-rt/0188-fs-dcache-Use-cpu_chill-in-trylock-loops.patch index acd2f3522..577fe110d 100644 --- a/debian/patches-rt/0188-fs-dcache-Use-cpu_chill-in-trylock-loops.patch +++ b/debian/patches-rt/0188-fs-dcache-Use-cpu_chill-in-trylock-loops.patch @@ -1,7 +1,8 @@ +From 7351a40e905d1f50f4b9272cb2b391671b17e8ab Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 7 Mar 2012 21:00:34 +0100 -Subject: [PATCH 188/290] fs: dcache: Use cpu_chill() in trylock loops -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2daf2bfc05c4859befc797ba426cc6d41fa0c72d +Subject: [PATCH 188/291] fs: dcache: Use cpu_chill() in trylock loops +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +15,7 @@ Signed-off-by: Thomas Gleixner 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/autofs/expire.c b/fs/autofs/expire.c -index 28d9c2b1b3bb..354b7147cead 100644 +index 70e9afe589fb..1a6b88ad4fe0 100644 --- a/fs/autofs/expire.c +++ b/fs/autofs/expire.c @@ -8,6 +8,7 @@ @@ -60,3 +61,6 @@ index 1fce41ba3535..5dc970027e30 100644 /* * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will * be set to match its requirements. So we must not load that until +-- +2.24.0 + diff --git a/debian/patches-rt/0189-net-Use-cpu_chill-instead-of-cpu_relax.patch b/debian/patches-rt/0189-net-Use-cpu_chill-instead-of-cpu_relax.patch index 45c00c1a6..15d1f6f9e 100644 --- a/debian/patches-rt/0189-net-Use-cpu_chill-instead-of-cpu_relax.patch +++ b/debian/patches-rt/0189-net-Use-cpu_chill-instead-of-cpu_relax.patch @@ -1,7 +1,8 @@ +From b36bb09a4195b2a2dffd6de4d5394c30058275c6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 7 Mar 2012 21:10:04 +0100 -Subject: [PATCH 189/290] net: Use cpu_chill() instead of cpu_relax() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e739662f4d14956803c5fa64a1ed3b08275bba8 +Subject: [PATCH 189/291] net: Use cpu_chill() instead of cpu_relax() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -64,3 +65,6 @@ index 0b347f46b2f4..f395f06031bc 100644 } } +-- +2.24.0 + diff --git a/debian/patches-rt/0190-fs-dcache-use-swait_queue-instead-of-waitqueue.patch b/debian/patches-rt/0190-fs-dcache-use-swait_queue-instead-of-waitqueue.patch index 8af63bf75..55b2cb691 100644 --- a/debian/patches-rt/0190-fs-dcache-use-swait_queue-instead-of-waitqueue.patch +++ b/debian/patches-rt/0190-fs-dcache-use-swait_queue-instead-of-waitqueue.patch @@ -1,7 +1,8 @@ +From b9019e0b8a3d6033d086af275340f735c78ece6a Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 14 Sep 2016 14:35:49 +0200 -Subject: [PATCH 190/290] fs/dcache: use swait_queue instead of waitqueue -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92858e88d7c3572ca27dfe00a007a9971d4c720d +Subject: [PATCH 190/291] fs/dcache: use swait_queue instead of waitqueue +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz __d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock() which disables preemption. As a workaround convert it to swait. @@ -84,10 +85,10 @@ index dcde8ffe384c..b2a00f3ff7df 100644 hlist_bl_unlock(b); INIT_HLIST_NODE(&dentry->d_u.d_alias); diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c -index e7a2a988533d..4691605ea4aa 100644 +index 6244345a5745..7ee10b7cc808 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c -@@ -1203,7 +1203,7 @@ static int fuse_direntplus_link(struct file *file, +@@ -1213,7 +1213,7 @@ static int fuse_direntplus_link(struct file *file, struct inode *dir = d_inode(parent); struct fuse_conn *fc; struct inode *inode; @@ -235,3 +236,6 @@ index c7cb30cdd1b7..119a56d7f739 100644 raw_spin_lock_irq(&q->lock); list_splice_init(&q->task_list, &tmp); while (!list_empty(&tmp)) { +-- +2.24.0 + diff --git a/debian/patches-rt/0191-workqueue-Use-normal-rcu.patch b/debian/patches-rt/0191-workqueue-Use-normal-rcu.patch index 74c9bf638..471af9681 100644 --- a/debian/patches-rt/0191-workqueue-Use-normal-rcu.patch +++ b/debian/patches-rt/0191-workqueue-Use-normal-rcu.patch @@ -1,7 +1,8 @@ +From 85533c397558285a26f773dde3f2757842718fdd Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 24 Jul 2013 15:26:54 +0200 -Subject: [PATCH 191/290] workqueue: Use normal rcu -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=99a059bc619abcf186aa94c0358a8ac0dff692fb +Subject: [PATCH 191/291] workqueue: Use normal rcu +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz There is no need for sched_rcu. The undocumented reason why sched_rcu is used is to avoid a few explicit rcu_read_lock()/unlock() pairs by @@ -14,7 +15,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 52 insertions(+), 43 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index cd8b61bded78..88d7db5e0105 100644 +index 493908464b9e..544007905706 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -127,7 +127,7 @@ enum { @@ -179,7 +180,7 @@ index cd8b61bded78..88d7db5e0105 100644 } /** -@@ -2855,14 +2859,14 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2861,14 +2865,14 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, might_sleep(); @@ -197,7 +198,7 @@ index cd8b61bded78..88d7db5e0105 100644 /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2894,10 +2898,11 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2900,10 +2904,11 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, lock_map_acquire(&pwq->wq->lockdep_map); lock_map_release(&pwq->wq->lockdep_map); } @@ -210,7 +211,7 @@ index cd8b61bded78..88d7db5e0105 100644 return false; } -@@ -3344,7 +3349,7 @@ static void rcu_free_pool(struct rcu_head *rcu) +@@ -3350,7 +3355,7 @@ static void rcu_free_pool(struct rcu_head *rcu) * put_unbound_pool - put a worker_pool * @pool: worker_pool to put * @@ -219,7 +220,7 @@ index cd8b61bded78..88d7db5e0105 100644 * safe manner. get_unbound_pool() calls this function on its failure path * and this function should be able to release pools which went through, * successfully or not, init_worker_pool(). -@@ -3398,8 +3403,8 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3404,8 +3409,8 @@ static void put_unbound_pool(struct worker_pool *pool) del_timer_sync(&pool->idle_timer); del_timer_sync(&pool->mayday_timer); @@ -230,7 +231,7 @@ index cd8b61bded78..88d7db5e0105 100644 } /** -@@ -3506,14 +3511,14 @@ static void pwq_unbound_release_workfn(struct work_struct *work) +@@ -3512,14 +3517,14 @@ static void pwq_unbound_release_workfn(struct work_struct *work) put_unbound_pool(pool); mutex_unlock(&wq_pool_mutex); @@ -247,7 +248,7 @@ index cd8b61bded78..88d7db5e0105 100644 } /** -@@ -4198,7 +4203,7 @@ void destroy_workqueue(struct workqueue_struct *wq) +@@ -4219,7 +4224,7 @@ void destroy_workqueue(struct workqueue_struct *wq) * The base ref is never dropped on per-cpu pwqs. Directly * schedule RCU free. */ @@ -256,7 +257,7 @@ index cd8b61bded78..88d7db5e0105 100644 } else { /* * We're the sole accessor of @wq at this point. Directly -@@ -4308,7 +4313,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4329,7 +4334,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) struct pool_workqueue *pwq; bool ret; @@ -266,7 +267,7 @@ index cd8b61bded78..88d7db5e0105 100644 if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4319,7 +4325,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) +@@ -4340,7 +4346,8 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq) pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); ret = !list_empty(&pwq->delayed_works); @@ -276,7 +277,7 @@ index cd8b61bded78..88d7db5e0105 100644 return ret; } -@@ -4345,15 +4352,15 @@ unsigned int work_busy(struct work_struct *work) +@@ -4366,15 +4373,15 @@ unsigned int work_busy(struct work_struct *work) if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -296,7 +297,7 @@ index cd8b61bded78..88d7db5e0105 100644 return ret; } -@@ -4537,7 +4544,7 @@ void show_workqueue_state(void) +@@ -4559,7 +4566,7 @@ void show_workqueue_state(void) unsigned long flags; int pi; @@ -305,7 +306,7 @@ index cd8b61bded78..88d7db5e0105 100644 pr_info("Showing busy workqueues and worker pools:\n"); -@@ -4602,7 +4609,7 @@ void show_workqueue_state(void) +@@ -4624,7 +4631,7 @@ void show_workqueue_state(void) touch_nmi_watchdog(); } @@ -314,7 +315,7 @@ index cd8b61bded78..88d7db5e0105 100644 } /* used to show worker information through /proc/PID/{comm,stat,status} */ -@@ -4989,16 +4996,16 @@ bool freeze_workqueues_busy(void) +@@ -5011,16 +5018,16 @@ bool freeze_workqueues_busy(void) * nr_active is monotonically decreasing. It's safe * to peek without lock. */ @@ -334,7 +335,7 @@ index cd8b61bded78..88d7db5e0105 100644 } out_unlock: mutex_unlock(&wq_pool_mutex); -@@ -5193,7 +5200,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5215,7 +5222,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, const char *delim = ""; int node, written = 0; @@ -344,7 +345,7 @@ index cd8b61bded78..88d7db5e0105 100644 for_each_node(node) { written += scnprintf(buf + written, PAGE_SIZE - written, "%s%d:%d", delim, node, -@@ -5201,7 +5209,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, +@@ -5223,7 +5231,8 @@ static ssize_t wq_pool_ids_show(struct device *dev, delim = " "; } written += scnprintf(buf + written, PAGE_SIZE - written, "\n"); @@ -354,3 +355,6 @@ index cd8b61bded78..88d7db5e0105 100644 return written; } +-- +2.24.0 + diff --git a/debian/patches-rt/0192-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch b/debian/patches-rt/0192-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch index b4e88c4a0..a7505c0f7 100644 --- a/debian/patches-rt/0192-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch +++ b/debian/patches-rt/0192-workqueue-Use-local-irq-lock-instead-of-irq-disable-.patch @@ -1,8 +1,9 @@ +From caea3fa2541977525c13726b88b7456d4678e16b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:42:26 +0200 -Subject: [PATCH 192/290] workqueue: Use local irq lock instead of irq disable +Subject: [PATCH 192/291] 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=e81c3e61f9acdd14e03dca56c2755c8ccb34e7a7 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Use a local_irq_lock as a replacement for irq off regions. We keep the semantic of irq-off in regard to the pool->lock and remain preemptible. @@ -13,7 +14,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 88d7db5e0105..d168a5581c7f 100644 +index 544007905706..0efb8d25d940 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -49,6 +49,7 @@ @@ -149,7 +150,7 @@ index 88d7db5e0105..d168a5581c7f 100644 } /** -@@ -3002,7 +3017,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3008,7 +3023,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -158,7 +159,7 @@ index 88d7db5e0105..d168a5581c7f 100644 /* * This allows canceling during early boot. We know that @work -@@ -3063,10 +3078,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3069,10 +3084,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -171,7 +172,7 @@ index 88d7db5e0105..d168a5581c7f 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3104,7 +3119,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3110,7 +3125,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) return false; set_work_pool_and_clear_pending(work, get_work_pool_id(work)); @@ -180,3 +181,6 @@ index 88d7db5e0105..d168a5581c7f 100644 return ret; } +-- +2.24.0 + diff --git a/debian/patches-rt/0193-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch b/debian/patches-rt/0193-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch index e1af99412..6069bb337 100644 --- a/debian/patches-rt/0193-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch +++ b/debian/patches-rt/0193-workqueue-Prevent-workqueue-versus-ata-piix-livelock.patch @@ -1,7 +1,8 @@ +From 8e746abdaaf680bd9667d6123d71bb5fe9858ba3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 1 Jul 2013 11:02:42 +0200 -Subject: [PATCH 193/290] workqueue: Prevent workqueue versus ata-piix livelock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8361189669ab897311b896e43b3e9827d5cb460d +Subject: [PATCH 193/291] workqueue: Prevent workqueue versus ata-piix livelock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz An Intel i7 system regularly detected rcu_preempt stalls after the kernel was upgraded from 3.6-rt to 3.8-rt. When the stall happened, disk I/O was no @@ -113,7 +114,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index d168a5581c7f..0a11d2f64424 100644 +index 0efb8d25d940..34734cdb5cb6 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -50,6 +50,7 @@ @@ -133,3 +134,6 @@ index d168a5581c7f..0a11d2f64424 100644 return -EAGAIN; } +-- +2.24.0 + diff --git a/debian/patches-rt/0194-sched-Distangle-worker-accounting-from-rqlock.patch b/debian/patches-rt/0194-sched-Distangle-worker-accounting-from-rqlock.patch index e3ce82ee3..4b9560d2b 100644 --- a/debian/patches-rt/0194-sched-Distangle-worker-accounting-from-rqlock.patch +++ b/debian/patches-rt/0194-sched-Distangle-worker-accounting-from-rqlock.patch @@ -1,7 +1,8 @@ +From 07075661be98e9ea230392492c8c6a333afa3260 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Jun 2011 19:47:03 +0200 -Subject: [PATCH 194/290] sched: Distangle worker accounting from rqlock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e6b7d9334dd365409ae319c4ae71c6a69a3cf9d8 +Subject: [PATCH 194/291] sched: Distangle worker accounting from rqlock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The worker accounting for cpu bound workers is plugged into the core scheduler code and the wakeup code. This is not a hard requirement and @@ -33,7 +34,7 @@ Signed-off-by: Sebastian Andrzej Siewior 3 files changed, 47 insertions(+), 100 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index ed44ed8215dd..7a0061839d77 100644 +index 3b2664e691de..dcf2deedd3f8 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1704,10 +1704,6 @@ static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_fl @@ -169,7 +170,7 @@ index ed44ed8215dd..7a0061839d77 100644 EXPORT_SYMBOL(schedule); diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 0a11d2f64424..aa39924bd3b5 100644 +index 34734cdb5cb6..045b82ca0eb5 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -843,43 +843,32 @@ static void wake_up_worker(struct worker_pool *pool) @@ -285,3 +286,6 @@ index 66fbb5a9e633..30cfed226b39 100644 +void wq_worker_sleeping(struct task_struct *task); #endif /* _KERNEL_WORKQUEUE_INTERNAL_H */ +-- +2.24.0 + diff --git a/debian/patches-rt/0195-debugobjects-Make-RT-aware.patch b/debian/patches-rt/0195-debugobjects-Make-RT-aware.patch index bed049652..75b633ff3 100644 --- a/debian/patches-rt/0195-debugobjects-Make-RT-aware.patch +++ b/debian/patches-rt/0195-debugobjects-Make-RT-aware.patch @@ -1,7 +1,8 @@ +From 6bafa5a09e27a936d38044d6b895c7b4dcbea2d5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:41:35 +0200 -Subject: [PATCH 195/290] debugobjects: Make RT aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=51f4d617b46bda60b9220ca45de034aab6c76877 +Subject: [PATCH 195/291] debugobjects: Make RT aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Avoid filling the pool / allocating memory with irqs off(). @@ -26,3 +27,6 @@ index 14afeeb7d6ef..e28481c402ae 100644 db = get_bucket((unsigned long) addr); +-- +2.24.0 + diff --git a/debian/patches-rt/0196-seqlock-Prevent-rt-starvation.patch b/debian/patches-rt/0196-seqlock-Prevent-rt-starvation.patch index 737286fd4..d66ffb80b 100644 --- a/debian/patches-rt/0196-seqlock-Prevent-rt-starvation.patch +++ b/debian/patches-rt/0196-seqlock-Prevent-rt-starvation.patch @@ -1,7 +1,8 @@ +From a6097de9c1e4ee4b6051e1879d3b3a68c6f916f0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Feb 2012 12:03:30 +0100 -Subject: [PATCH 196/290] seqlock: Prevent rt starvation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=417244b09dae189643c08ec5fa4b8e328cc85ab3 +Subject: [PATCH 196/291] seqlock: Prevent rt starvation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. @@ -159,7 +160,7 @@ index bcf4cf26b8c8..689ed53016c7 100644 } diff --git a/include/net/neighbour.h b/include/net/neighbour.h -index beeeed126872..6dd1765e22ec 100644 +index c84807c1c5bd..08d4700515da 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h @@ -451,7 +451,7 @@ static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb) @@ -189,3 +190,6 @@ index beeeed126872..6dd1765e22ec 100644 const struct net_device *dev) { unsigned int seq; +-- +2.24.0 + diff --git a/debian/patches-rt/0197-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch b/debian/patches-rt/0197-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch index bd525744b..903fc35d1 100644 --- a/debian/patches-rt/0197-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch +++ b/debian/patches-rt/0197-sunrpc-Make-svc_xprt_do_enqueue-use-get_cpu_light.patch @@ -1,8 +1,9 @@ +From 56105c9d9bb2433620a6be7bf1a904c06f8474e1 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Wed, 18 Feb 2015 16:05:28 +0100 -Subject: [PATCH 197/290] sunrpc: Make svc_xprt_do_enqueue() use +Subject: [PATCH 197/291] 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=1449fd695efd50e04504ff47612f7ae5fc5f9687 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915 |in_atomic(): 1, irqs_disabled(): 0, pid: 3194, name: rpc.nfsd @@ -55,3 +56,6 @@ index 6cf0fd37cbf0..48c0a0b90946 100644 trace_svc_xprt_do_enqueue(xprt, rqstp); } EXPORT_SYMBOL_GPL(svc_xprt_do_enqueue); +-- +2.24.0 + diff --git a/debian/patches-rt/0198-net-Use-skbufhead-with-raw-lock.patch b/debian/patches-rt/0198-net-Use-skbufhead-with-raw-lock.patch index d3f12830b..dc5f011ff 100644 --- a/debian/patches-rt/0198-net-Use-skbufhead-with-raw-lock.patch +++ b/debian/patches-rt/0198-net-Use-skbufhead-with-raw-lock.patch @@ -1,7 +1,8 @@ +From 2ebb51970b0bb3c81888b287e38b5e5606850012 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 15:38:34 +0200 -Subject: [PATCH 198/290] net: Use skbufhead with raw lock -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5cb81c78a721cc47b52a8eba0ae24d8d44c8e349 +Subject: [PATCH 198/291] net: Use skbufhead with raw lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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,7 +16,7 @@ Signed-off-by: Thomas Gleixner 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 8c2fec0bcb26..384c63ecb9ae 100644 +index 5ada5fd9652d..42bbcb8c1ed1 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2973,6 +2973,7 @@ struct softnet_data { @@ -27,7 +28,7 @@ index 8c2fec0bcb26..384c63ecb9ae 100644 }; diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 28baccb1efd5..b4412944db54 100644 +index 80c3da1aa8b1..be3bcf2f65a2 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -287,6 +287,7 @@ struct sk_buff_head { @@ -38,7 +39,7 @@ index 28baccb1efd5..b4412944db54 100644 }; struct sk_buff; -@@ -1704,6 +1705,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list) +@@ -1718,6 +1719,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list) __skb_queue_head_init(list); } @@ -52,7 +53,7 @@ index 28baccb1efd5..b4412944db54 100644 struct lock_class_key *class) { diff --git a/net/core/dev.c b/net/core/dev.c -index defca5df6baa..794c64b0a6ce 100644 +index d5e2e8834d62..2d69e0c45ec2 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -217,14 +217,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) @@ -72,7 +73,7 @@ index defca5df6baa..794c64b0a6ce 100644 #endif } -@@ -5260,7 +5260,7 @@ static void flush_backlog(struct work_struct *work) +@@ -5274,7 +5274,7 @@ static void flush_backlog(struct work_struct *work) skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { if (skb->dev->reg_state == NETREG_UNREGISTERING) { __skb_unlink(skb, &sd->input_pkt_queue); @@ -81,7 +82,7 @@ index defca5df6baa..794c64b0a6ce 100644 input_queue_head_incr(sd); } } -@@ -5270,11 +5270,14 @@ static void flush_backlog(struct work_struct *work) +@@ -5284,11 +5284,14 @@ static void flush_backlog(struct work_struct *work) skb_queue_walk_safe(&sd->process_queue, skb, tmp) { if (skb->dev->reg_state == NETREG_UNREGISTERING) { __skb_unlink(skb, &sd->process_queue); @@ -97,7 +98,7 @@ index defca5df6baa..794c64b0a6ce 100644 } static void flush_all_backlogs(void) -@@ -5853,7 +5856,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5867,7 +5870,9 @@ static int process_backlog(struct napi_struct *napi, int quota) while (again) { struct sk_buff *skb; @@ -107,7 +108,7 @@ index defca5df6baa..794c64b0a6ce 100644 rcu_read_lock(); __netif_receive_skb(skb); rcu_read_unlock(); -@@ -5861,9 +5866,9 @@ static int process_backlog(struct napi_struct *napi, int quota) +@@ -5875,9 +5880,9 @@ static int process_backlog(struct napi_struct *napi, int quota) if (++work >= quota) return work; @@ -118,7 +119,7 @@ index defca5df6baa..794c64b0a6ce 100644 rps_lock(sd); if (skb_queue_empty(&sd->input_pkt_queue)) { /* -@@ -6328,13 +6333,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) +@@ -6342,13 +6347,21 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) unsigned long time_limit = jiffies + usecs_to_jiffies(netdev_budget_usecs); int budget = netdev_budget; @@ -140,7 +141,7 @@ index defca5df6baa..794c64b0a6ce 100644 for (;;) { struct napi_struct *n; -@@ -9325,10 +9338,13 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -9339,10 +9352,13 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -155,7 +156,7 @@ index defca5df6baa..794c64b0a6ce 100644 return 0; } -@@ -9639,8 +9655,9 @@ static int __init net_dev_init(void) +@@ -9653,8 +9669,9 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); @@ -167,3 +168,6 @@ index defca5df6baa..794c64b0a6ce 100644 #ifdef CONFIG_XFRM_OFFLOAD skb_queue_head_init(&sd->xfrm_backlog); #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0199-net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/debian/patches-rt/0199-net-move-xmit_recursion-to-per-task-variable-on-RT.patch index 8615edab2..8db26d4aa 100644 --- a/debian/patches-rt/0199-net-move-xmit_recursion-to-per-task-variable-on-RT.patch +++ b/debian/patches-rt/0199-net-move-xmit_recursion-to-per-task-variable-on-RT.patch @@ -1,7 +1,8 @@ +From 4614b75f982f6d986f99de8d4d35afd3da7140b4 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 13 Jan 2016 15:55:02 +0100 -Subject: [PATCH 199/290] 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=e3b9f93dd4b63400c35e346f0647e8b27be7ff22 +Subject: [PATCH 199/291] net: move xmit_recursion to per-task variable on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz A softirq on -RT can be preempted. That means one task is in __dev_queue_xmit(), gets preempted and another task may enter @@ -23,9 +24,11 @@ Signed-off-by: Sebastian Andrzej Siewior net/core/filter.c | 6 +-- 4 files changed, 104 insertions(+), 15 deletions(-) +diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h +index 42bbcb8c1ed1..c6d5808235f0 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -587,7 +587,11 @@ +@@ -587,7 +587,11 @@ struct netdev_queue { * write-mostly part */ spinlock_t _xmit_lock ____cacheline_aligned_in_smp; @@ -37,7 +40,7 @@ Signed-off-by: Sebastian Andrzej Siewior /* * Time (in jiffies) of last Tx */ -@@ -2611,14 +2615,53 @@ +@@ -2611,14 +2615,53 @@ void netdev_freemem(struct net_device *dev); void synchronize_net(void); int init_dummy_netdev(struct net_device *dev); @@ -92,7 +95,7 @@ Signed-off-by: Sebastian Andrzej Siewior struct net_device *dev_get_by_index(struct net *net, int ifindex); struct net_device *__dev_get_by_index(struct net *net, int ifindex); struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); -@@ -3794,10 +3837,48 @@ +@@ -3794,10 +3837,48 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) return (1U << debug_value) - 1; } @@ -142,7 +145,7 @@ Signed-off-by: Sebastian Andrzej Siewior } static inline bool __netif_tx_acquire(struct netdev_queue *txq) -@@ -3814,32 +3895,32 @@ +@@ -3814,32 +3895,32 @@ 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); @@ -180,21 +183,25 @@ Signed-off-by: Sebastian Andrzej Siewior txq->trans_start = jiffies; } +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 53d92153700b..5e1cc92c2f5c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1217,6 +1217,9 @@ +@@ -1216,6 +1216,9 @@ struct task_struct { + #endif #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; - #endif ++#endif +#ifdef CONFIG_PREEMPT_RT_FULL + int xmit_recursion; -+#endif + #endif int pagefault_disabled; #ifdef CONFIG_MMU - struct task_struct *oom_reaper_list; +diff --git a/net/core/dev.c b/net/core/dev.c +index 2d69e0c45ec2..aab9231a9f3b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3537,8 +3537,10 @@ +@@ -3537,8 +3537,10 @@ static void skb_update_prio(struct sk_buff *skb) #define skb_update_prio(skb) #endif @@ -205,7 +212,7 @@ Signed-off-by: Sebastian Andrzej Siewior /** * dev_loopback_xmit - loop back @skb -@@ -3829,9 +3831,12 @@ +@@ -3829,9 +3831,12 @@ 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 */ @@ -220,7 +227,7 @@ Signed-off-by: Sebastian Andrzej Siewior goto recursion_alert; skb = validate_xmit_skb(skb, dev, &again); -@@ -3841,9 +3846,9 @@ +@@ -3841,9 +3846,9 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev) HARD_TX_LOCK(dev, txq, cpu); if (!netif_xmit_stopped(txq)) { @@ -232,7 +239,7 @@ Signed-off-by: Sebastian Andrzej Siewior if (dev_xmit_complete(rc)) { HARD_TX_UNLOCK(dev, txq); goto out; -@@ -8402,7 +8407,7 @@ +@@ -8402,7 +8407,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); @@ -241,9 +248,11 @@ Signed-off-by: Sebastian Andrzej Siewior netdev_queue_numa_node_write(queue, NUMA_NO_NODE); queue->dev = dev; #ifdef CONFIG_BQL +diff --git a/net/core/filter.c b/net/core/filter.c +index e6fa88506c00..b3b9b8d8a28d 100644 --- a/net/core/filter.c +++ b/net/core/filter.c -@@ -2000,7 +2000,7 @@ +@@ -2000,7 +2000,7 @@ static inline int __bpf_tx_skb(struct net_device *dev, struct sk_buff *skb) { int ret; @@ -252,7 +261,7 @@ Signed-off-by: Sebastian Andrzej Siewior net_crit_ratelimited("bpf: recursion limit reached on datapath, buggy bpf program?\n"); kfree_skb(skb); return -ENETDOWN; -@@ -2008,9 +2008,9 @@ +@@ -2008,9 +2008,9 @@ static inline int __bpf_tx_skb(struct net_device *dev, struct sk_buff *skb) skb->dev = dev; @@ -264,3 +273,6 @@ Signed-off-by: Sebastian Andrzej Siewior return ret; } +-- +2.24.0 + diff --git a/debian/patches-rt/0200-net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/debian/patches-rt/0200-net-provide-a-way-to-delegate-processing-a-softirq-t.patch index 05511a47e..8be2a8582 100644 --- a/debian/patches-rt/0200-net-provide-a-way-to-delegate-processing-a-softirq-t.patch +++ b/debian/patches-rt/0200-net-provide-a-way-to-delegate-processing-a-softirq-t.patch @@ -1,8 +1,9 @@ +From 5156c9860ab62a9aa82fc8f3a4647eb5bd9faa01 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 20 Jan 2016 15:39:05 +0100 -Subject: [PATCH 200/290] net: provide a way to delegate processing a softirq +Subject: [PATCH 200/291] 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=198b2ed6ab2a6cc2020ab7768ad92c777faf121b +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +72,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 13531bd05ffb..3bbe71c93b04 100644 +index aab9231a9f3b..2fa5e716c7bc 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -6382,7 +6382,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) +@@ -6396,7 +6396,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)) @@ -83,3 +84,6 @@ index 13531bd05ffb..3bbe71c93b04 100644 net_rps_action_and_irq_enable(sd); out: +-- +2.24.0 + diff --git a/debian/patches-rt/0201-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/debian/patches-rt/0201-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch index 3dc845d00..9284a0c39 100644 --- a/debian/patches-rt/0201-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch +++ b/debian/patches-rt/0201-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch @@ -1,8 +1,9 @@ +From 439a23e81191bf65d00479d15cdaeefbe31bf754 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 30 Mar 2016 13:36:29 +0200 -Subject: [PATCH 201/290] net: dev: always take qdisc's busylock in +Subject: [PATCH 201/291] 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=bb88f29ae0c936e363f1c9792509b6dfc48086da +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The root-lock is dropped before dev_hard_start_xmit() is invoked and after setting the __QDISC___STATE_RUNNING bit. If this task is now pushed away @@ -21,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 4 insertions(+) diff --git a/net/core/dev.c b/net/core/dev.c -index 3bbe71c93b04..051b3708e180 100644 +index 2fa5e716c7bc..c1f60382b706 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3465,7 +3465,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, @@ -36,3 +37,6 @@ index 3bbe71c93b04..051b3708e180 100644 if (unlikely(contended)) spin_lock(&q->busylock); +-- +2.24.0 + diff --git a/debian/patches-rt/0202-net-Qdisc-use-a-seqlock-instead-seqcount.patch b/debian/patches-rt/0202-net-Qdisc-use-a-seqlock-instead-seqcount.patch index 4dba29a3f..e8fdbe9b4 100644 --- a/debian/patches-rt/0202-net-Qdisc-use-a-seqlock-instead-seqcount.patch +++ b/debian/patches-rt/0202-net-Qdisc-use-a-seqlock-instead-seqcount.patch @@ -1,7 +1,8 @@ +From a95e80befc6c8c6b1c30061b86cd9b3bd75d22c1 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 14 Sep 2016 17:36:35 +0200 -Subject: [PATCH 202/290] net/Qdisc: use a seqlock instead seqcount -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=582f57023bf1845fd98e522a850011a7f8d9b966 +Subject: [PATCH 202/291] net/Qdisc: use a seqlock instead seqcount +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -9,8 +10,6 @@ scheduled out. The seqlock on the other hand will serialize / sleep on the lock while writer is active. Signed-off-by: Sebastian Andrzej Siewior -[Aurelien Jarno: Backport to 4.19.86 due to context changes caused by -253150575cb77 ("net: sched: avoid writing on noop_qdisc")] --- include/linux/seqlock.h | 9 +++++++++ include/net/gen_stats.h | 9 +++++---- @@ -256,7 +255,7 @@ index 84fdc4857771..3c5c51657e1a 100644 err = -EOPNOTSUPP; if (sch->flags & TCQ_F_MQROOT) { diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 0b9c494f64b0..c618e5c5a1b1 100644 +index 4ab20f1138fd..a9ed58ca3924 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -575,7 +575,11 @@ struct Qdisc noop_qdisc = { @@ -289,3 +288,6 @@ index 0b9c494f64b0..c618e5c5a1b1 100644 sch->ops = ops; sch->flags = ops->static_flags; +-- +2.24.0 + diff --git a/debian/patches-rt/0203-net-add-back-the-missing-serialization-in-ip_send_un.patch b/debian/patches-rt/0203-net-add-back-the-missing-serialization-in-ip_send_un.patch index 51d46de34..2ada273f1 100644 --- a/debian/patches-rt/0203-net-add-back-the-missing-serialization-in-ip_send_un.patch +++ b/debian/patches-rt/0203-net-add-back-the-missing-serialization-in-ip_send_un.patch @@ -1,11 +1,12 @@ +From e3ee404c33508c0f4bd43f9d6710150aea6ecedf Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 31 Aug 2016 17:21:56 +0200 -Subject: [PATCH 203/290] net: add back the missing serialization in +Subject: [PATCH 203/291] 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=e829741b52f421beee05a47cb7f53472c31dd355 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 +43,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 6 insertions(+) diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index b76cf96d5cfe..51358c73dada 100644 +index bfec48849735..38f3e38dd15c 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -62,6 +62,7 @@ @@ -93,3 +94,6 @@ index b76cf96d5cfe..51358c73dada 100644 local_bh_enable(); } +-- +2.24.0 + diff --git a/debian/patches-rt/0204-net-add-a-lock-around-icmp_sk.patch b/debian/patches-rt/0204-net-add-a-lock-around-icmp_sk.patch index cc41d0d07..1dc93a892 100644 --- a/debian/patches-rt/0204-net-add-a-lock-around-icmp_sk.patch +++ b/debian/patches-rt/0204-net-add-a-lock-around-icmp_sk.patch @@ -1,7 +1,8 @@ +From 946a05c7ebecb28d3f84cda04771e8ec86948365 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 31 Aug 2016 17:54:09 +0200 -Subject: [PATCH 204/290] net: add a lock around icmp_sk() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5ca36394a2695a653822ea30a6aeb8323c88ebfd +Subject: [PATCH 204/291] net: add a lock around icmp_sk() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -59,3 +60,6 @@ index 0167e23d1c8f..acec420899c5 100644 } int sysctl_icmp_msgs_per_sec __read_mostly = 1000; +-- +2.24.0 + diff --git a/debian/patches-rt/0205-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch b/debian/patches-rt/0205-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch index 978033448..71365d28a 100644 --- a/debian/patches-rt/0205-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch +++ b/debian/patches-rt/0205-net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch @@ -1,8 +1,9 @@ +From 50cb5c3e93b4d52ef9952799ca1f75ecdb4e43fb Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 6 Dec 2016 17:50:30 -0500 -Subject: [PATCH 205/290] net: Have __napi_schedule_irqoff() disable interrupts +Subject: [PATCH 205/291] 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=82df0681d7324c3d2e4b92c5694ebd38e831cd5a +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz A customer hit a crash where the napi sd->poll_list became corrupted. The customer had the bnx2x driver, which does a @@ -28,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior 2 files changed, 14 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index b6a75296eb46..946875cae933 100644 +index c6d5808235f0..9fbfeb432299 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -422,7 +422,19 @@ typedef enum rx_handler_result rx_handler_result_t; @@ -52,10 +53,10 @@ index b6a75296eb46..946875cae933 100644 static inline bool napi_disable_pending(struct napi_struct *n) { diff --git a/net/core/dev.c b/net/core/dev.c -index 051b3708e180..c9adf3a88771 100644 +index c1f60382b706..67df2536d4bf 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5952,6 +5952,7 @@ bool napi_schedule_prep(struct napi_struct *n) +@@ -5966,6 +5966,7 @@ bool napi_schedule_prep(struct napi_struct *n) } EXPORT_SYMBOL(napi_schedule_prep); @@ -63,7 +64,7 @@ index 051b3708e180..c9adf3a88771 100644 /** * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule -@@ -5963,6 +5964,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) +@@ -5977,6 +5978,7 @@ void __napi_schedule_irqoff(struct napi_struct *n) ____napi_schedule(this_cpu_ptr(&softnet_data), n); } EXPORT_SYMBOL(__napi_schedule_irqoff); @@ -71,3 +72,6 @@ index 051b3708e180..c9adf3a88771 100644 bool napi_complete_done(struct napi_struct *n, int work_done) { +-- +2.24.0 + diff --git a/debian/patches-rt/0206-irqwork-push-most-work-into-softirq-context.patch b/debian/patches-rt/0206-irqwork-push-most-work-into-softirq-context.patch index f369099e3..b1aae9a3e 100644 --- a/debian/patches-rt/0206-irqwork-push-most-work-into-softirq-context.patch +++ b/debian/patches-rt/0206-irqwork-push-most-work-into-softirq-context.patch @@ -1,7 +1,8 @@ +From a25da65a1a0ec5fa2a97c395ef73d03284be1c6e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 23 Jun 2015 15:32:51 +0200 -Subject: [PATCH 206/290] irqwork: push most work into softirq context -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2207048a61c66cb5d93777d14f38a073404787c0 +Subject: [PATCH 206/291] irqwork: push most work into softirq context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -222,7 +223,7 @@ index f162a4f54b05..278fe66bfb70 100644 rdp->rcu_iw_gp_seq = rnp->gp_seq; irq_work_queue_on(&rdp->rcu_iw, rdp->cpu); diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c -index c0a751464971..6e95f1ca3e22 100644 +index 74b694392f2f..fb4d11bab6b7 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -279,6 +279,7 @@ static int init_rootdomain(struct root_domain *rd) @@ -258,3 +259,6 @@ index 3fab1c50bf1b..2fcd56aa6092 100644 __run_timers(base); if (IS_ENABLED(CONFIG_NO_HZ_COMMON)) __run_timers(this_cpu_ptr(&timer_bases[BASE_DEF])); +-- +2.24.0 + diff --git a/debian/patches-rt/0207-printk-Make-rt-aware.patch b/debian/patches-rt/0207-printk-Make-rt-aware.patch index 5f77f2228..4c35ec294 100644 --- a/debian/patches-rt/0207-printk-Make-rt-aware.patch +++ b/debian/patches-rt/0207-printk-Make-rt-aware.patch @@ -1,20 +1,19 @@ +From 8724ddd9928b0fcc4f46e40fa2bc02c24bda9337 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 19 Sep 2012 14:50:37 +0200 -Subject: [PATCH 207/290] printk: Make rt aware -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdb4f35129331aff2fda4afcfeffc3f209b78725 +Subject: [PATCH 207/291] printk: Make rt aware +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Drop the lock before calling the console driver and do not disable interrupts while printing to a serial console. Signed-off-by: Thomas Gleixner -[Aurelien Jarno: Backport to 4.19.87 due to context changes caused by -00988218f8cb2 ("printk: lock/unlock console only for new logbuf entries")] --- kernel/printk/printk.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 210cdac1458d..c66755a0a046 100644 +index 9a7f259dbb20..83f386175dcc 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1624,6 +1624,7 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) @@ -110,3 +109,6 @@ index 210cdac1458d..c66755a0a046 100644 if (do_cond_resched) cond_resched(); +-- +2.24.0 + diff --git a/debian/patches-rt/0208-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch b/debian/patches-rt/0208-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch index 66114f325..a6521cef5 100644 --- a/debian/patches-rt/0208-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch +++ b/debian/patches-rt/0208-kernel-printk-Don-t-try-to-print-from-IRQ-NMI-region.patch @@ -1,7 +1,8 @@ +From 2a6027addaff7b5c802f19bf3f5f99b555763877 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 19 May 2016 17:45:27 +0200 -Subject: [PATCH 208/290] 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=8c719aa550b2e9bb95786ce26d5fbff438268cbd +Subject: [PATCH 208/291] kernel/printk: Don't try to print from IRQ/NMI region +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -15,10 +16,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 10 insertions(+) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index c66755a0a046..1935cf91db0c 100644 +index 83f386175dcc..217abc6a53e1 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c -@@ -1782,6 +1782,11 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, +@@ -1789,6 +1789,11 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, if (!console_drivers) return; @@ -30,7 +31,7 @@ index c66755a0a046..1935cf91db0c 100644 migrate_disable(); for_each_console(con) { if (exclusive_console && con != exclusive_console) -@@ -2540,6 +2545,11 @@ void console_unblank(void) +@@ -2555,6 +2560,11 @@ void console_unblank(void) { struct console *c; @@ -42,3 +43,6 @@ index c66755a0a046..1935cf91db0c 100644 /* * console_unblank can no longer be called in interrupt context unless * oops_in_progress is set to 1.. +-- +2.24.0 + diff --git a/debian/patches-rt/0209-printk-Drop-the-logbuf_lock-more-often.patch b/debian/patches-rt/0209-printk-Drop-the-logbuf_lock-more-often.patch index d350ef0f5..4ba52083c 100644 --- a/debian/patches-rt/0209-printk-Drop-the-logbuf_lock-more-often.patch +++ b/debian/patches-rt/0209-printk-Drop-the-logbuf_lock-more-often.patch @@ -1,7 +1,8 @@ +From f7351e4a71b9a3402f9197c5da987c68ccd79a0d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 21 Mar 2013 19:01:05 +0100 -Subject: [PATCH 209/290] printk: Drop the logbuf_lock more often -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3bfadd9fc97cf1d7877b7d67316d67a96e82f182 +Subject: [PATCH 209/291] printk: Drop the logbuf_lock more often +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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. @@ -12,10 +13,10 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 28 insertions(+) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 1935cf91db0c..3b0f90ace2f1 100644 +index 217abc6a53e1..58517c68e896 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c -@@ -1420,12 +1420,23 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1427,12 +1427,23 @@ static int syslog_print_all(char __user *buf, int size, bool clear) u64 next_seq; u64 seq; u32 idx; @@ -39,7 +40,7 @@ index 1935cf91db0c..3b0f90ace2f1 100644 /* * Find first record that fits, including all following records, * into the user-provided buffer for this dump. -@@ -1438,6 +1449,14 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1445,6 +1456,14 @@ static int syslog_print_all(char __user *buf, int size, bool clear) len += msg_print_text(msg, true, NULL, 0); idx = log_next(idx); seq++; @@ -54,7 +55,7 @@ index 1935cf91db0c..3b0f90ace2f1 100644 } /* move first record forward until length fits into the buffer */ -@@ -1449,6 +1468,14 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1456,6 +1475,14 @@ static int syslog_print_all(char __user *buf, int size, bool clear) len -= msg_print_text(msg, true, NULL, 0); idx = log_next(idx); seq++; @@ -69,7 +70,7 @@ index 1935cf91db0c..3b0f90ace2f1 100644 } /* last message fitting into this dump */ -@@ -1486,6 +1513,7 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1493,6 +1520,7 @@ static int syslog_print_all(char __user *buf, int size, bool clear) clear_seq = log_next_seq; clear_idx = log_next_idx; } @@ -77,3 +78,6 @@ index 1935cf91db0c..3b0f90ace2f1 100644 logbuf_unlock_irq(); kfree(text); +-- +2.24.0 + diff --git a/debian/patches-rt/0210-ARM-enable-irq-in-translation-section-permission-fau.patch b/debian/patches-rt/0210-ARM-enable-irq-in-translation-section-permission-fau.patch index e3179277a..64d204428 100644 --- a/debian/patches-rt/0210-ARM-enable-irq-in-translation-section-permission-fau.patch +++ b/debian/patches-rt/0210-ARM-enable-irq-in-translation-section-permission-fau.patch @@ -1,11 +1,12 @@ +From 1f413b2b6eefd089949bdf3f6ffc681c9b7c6811 Mon Sep 17 00:00:00 2001 From: "Yadi.hu" Date: Wed, 10 Dec 2014 10:32:09 +0800 -Subject: [PATCH 210/290] ARM: enable irq in translation/section permission +Subject: [PATCH 210/291] 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=05082980933eaa57eb3a208aa1849e3b7603fe91 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Probably happens on all ARM, with CONFIG_PREEMPT_RT_FULL @@ -90,3 +91,6 @@ index a9ee0d9dc740..20b0e146de98 100644 do_bad_area(addr, fsr, regs); return 0; } +-- +2.24.0 + diff --git a/debian/patches-rt/0211-genirq-update-irq_set_irqchip_state-documentation.patch b/debian/patches-rt/0211-genirq-update-irq_set_irqchip_state-documentation.patch index f712294dc..cb6cdda20 100644 --- a/debian/patches-rt/0211-genirq-update-irq_set_irqchip_state-documentation.patch +++ b/debian/patches-rt/0211-genirq-update-irq_set_irqchip_state-documentation.patch @@ -1,7 +1,8 @@ +From 6b0c5545e5e38ded416d0545c720b353f9b460bd Mon Sep 17 00:00:00 2001 From: Josh Cartwright Date: Thu, 11 Feb 2016 11:54:00 -0600 -Subject: [PATCH 211/290] genirq: update irq_set_irqchip_state documentation -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b11399a6330d802b28290410bb88dd784a962e2 +Subject: [PATCH 211/291] genirq: update irq_set_irqchip_state documentation +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On -rt kernels, the use of migrate_disable()/migrate_enable() is sufficient to guarantee a task isn't moved to another CPU. Update the @@ -26,3 +27,6 @@ index 3858ac895777..5701774a6d71 100644 * interrupt controller has per-cpu registers. */ int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, +-- +2.24.0 + diff --git a/debian/patches-rt/0212-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch b/debian/patches-rt/0212-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch index 2e8851d29..d6aca95e9 100644 --- a/debian/patches-rt/0212-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch +++ b/debian/patches-rt/0212-KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch @@ -1,8 +1,9 @@ +From 9ee21be32cddbf1d32be69f5783a98fe1c7f2584 Mon Sep 17 00:00:00 2001 From: Josh Cartwright Date: Thu, 11 Feb 2016 11:54:01 -0600 -Subject: [PATCH 212/290] KVM: arm/arm64: downgrade preempt_disable()d region +Subject: [PATCH 212/291] 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=97bbe6dd0a79b542ddf927ebe0dac5a18cc96ebe +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -53,3 +54,6 @@ index d982650deb33..efe2d6c0201c 100644 ret = handle_exit(vcpu, run, ret); } +-- +2.24.0 + diff --git a/debian/patches-rt/0213-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch b/debian/patches-rt/0213-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch index 3999d6930..b0d449a6c 100644 --- a/debian/patches-rt/0213-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch +++ b/debian/patches-rt/0213-arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch @@ -1,8 +1,9 @@ +From 08e350992c0e49b9829385f1aa5c717b674d2826 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 25 Jul 2018 14:02:38 +0200 -Subject: [PATCH 213/290] arm64: fpsimd: use preemp_disable in addition to +Subject: [PATCH 213/291] 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=67796c909f19de9affd36a6024bfad2fead9a410 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -165,3 +166,6 @@ index 58c53bc96928..71252cd8b594 100644 } EXPORT_SYMBOL(kernel_neon_begin); +-- +2.24.0 + diff --git a/debian/patches-rt/0214-kgdb-serial-Short-term-workaround.patch b/debian/patches-rt/0214-kgdb-serial-Short-term-workaround.patch index 1984db67f..7923ad0c5 100644 --- a/debian/patches-rt/0214-kgdb-serial-Short-term-workaround.patch +++ b/debian/patches-rt/0214-kgdb-serial-Short-term-workaround.patch @@ -1,7 +1,8 @@ +From 8eaf240133bd25114284ca31f90725e113764a65 Mon Sep 17 00:00:00 2001 From: Jason Wessel Date: Thu, 28 Jul 2011 12:42:23 -0500 -Subject: [PATCH 214/290] kgdb/serial: Short term workaround -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e1ccf900f9f371a1ef8665087ad41b1ece4d9fa9 +Subject: [PATCH 214/291] kgdb/serial: Short term workaround +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due @@ -80,3 +81,6 @@ index 6a4b41484afe..197cb422f6e1 100644 return r; } +-- +2.24.0 + diff --git a/debian/patches-rt/0215-sysfs-Add-sys-kernel-realtime-entry.patch b/debian/patches-rt/0215-sysfs-Add-sys-kernel-realtime-entry.patch index 1b86ad209..81d4f984a 100644 --- a/debian/patches-rt/0215-sysfs-Add-sys-kernel-realtime-entry.patch +++ b/debian/patches-rt/0215-sysfs-Add-sys-kernel-realtime-entry.patch @@ -1,7 +1,8 @@ +From e2f7b38ab8a0973aabd3e004020a75856a556ddc Mon Sep 17 00:00:00 2001 From: Clark Williams Date: Sat, 30 Jul 2011 21:55:53 -0500 -Subject: [PATCH 215/290] sysfs: Add /sys/kernel/realtime entry -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04f88fb150866704c704045d9c8dd5985b5bde9e +Subject: [PATCH 215/291] sysfs: Add /sys/kernel/realtime entry +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. @@ -48,3 +49,6 @@ index 46ba853656f6..9a23632b6294 100644 #endif NULL }; +-- +2.24.0 + diff --git a/debian/patches-rt/0216-mm-rt-kmap_atomic-scheduling.patch b/debian/patches-rt/0216-mm-rt-kmap_atomic-scheduling.patch index 9d783416c..3ae91d051 100644 --- a/debian/patches-rt/0216-mm-rt-kmap_atomic-scheduling.patch +++ b/debian/patches-rt/0216-mm-rt-kmap_atomic-scheduling.patch @@ -1,7 +1,8 @@ +From dfc6526e0c73a1d77983cc09f798033a897e5b1c Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Thu, 28 Jul 2011 10:43:51 +0200 -Subject: [PATCH 216/290] mm, rt: kmap_atomic scheduling -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f44ce46e831350a50239c2586a4f777586dc1410 +Subject: [PATCH 216/291] mm, rt: kmap_atomic scheduling +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context @@ -319,3 +320,6 @@ index 59db3223a5d6..22aa3ddbd87b 100644 unsigned int nr_free_highpages (void) { +-- +2.24.0 + diff --git a/debian/patches-rt/0217-x86-highmem-Add-a-already-used-pte-check.patch b/debian/patches-rt/0217-x86-highmem-Add-a-already-used-pte-check.patch index 9b2bdec58..d5721ec2c 100644 --- a/debian/patches-rt/0217-x86-highmem-Add-a-already-used-pte-check.patch +++ b/debian/patches-rt/0217-x86-highmem-Add-a-already-used-pte-check.patch @@ -1,7 +1,8 @@ +From 3ef6ef962476ff6e178935c66c5933138922fc06 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 11 Mar 2013 17:09:55 +0100 -Subject: [PATCH 217/290] x86/highmem: Add a "already used pte" check -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c1e9c3cef196f71a33fb68f1a9a0c65ab2d27d2d +Subject: [PATCH 217/291] x86/highmem: Add a "already used pte" check +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This is a copy from kmap_atomic_prot(). @@ -23,3 +24,6 @@ index d5a48210d0f6..c0ec8d430c02 100644 #ifdef CONFIG_PREEMPT_RT_FULL current->kmap_pte[type] = pte; #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0218-arm-highmem-Flush-tlb-on-unmap.patch b/debian/patches-rt/0218-arm-highmem-Flush-tlb-on-unmap.patch index 9867d25af..9e59cce8c 100644 --- a/debian/patches-rt/0218-arm-highmem-Flush-tlb-on-unmap.patch +++ b/debian/patches-rt/0218-arm-highmem-Flush-tlb-on-unmap.patch @@ -1,7 +1,8 @@ +From 7b6cee6bee43921f363faaaed5e16c2d93597c25 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 11 Mar 2013 21:37:27 +0100 -Subject: [PATCH 218/290] arm/highmem: Flush tlb on unmap -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5783132bce9ff6911a382ffbfa6a8969a5c3704f +Subject: [PATCH 218/291] arm/highmem: Flush tlb on unmap +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -28,3 +29,6 @@ index d02f8187b1cc..eb4b225d28c9 100644 kmap_atomic_idx_pop(); } else if (vaddr >= PKMAP_ADDR(0) && vaddr < PKMAP_ADDR(LAST_PKMAP)) { /* this address was obtained through kmap_high_get() */ +-- +2.24.0 + diff --git a/debian/patches-rt/0219-arm-Enable-highmem-for-rt.patch b/debian/patches-rt/0219-arm-Enable-highmem-for-rt.patch index 5ddc9ecc9..0419a701d 100644 --- a/debian/patches-rt/0219-arm-Enable-highmem-for-rt.patch +++ b/debian/patches-rt/0219-arm-Enable-highmem-for-rt.patch @@ -1,7 +1,8 @@ +From ae2f139a2bf98afef1245adea7f33be7a466c997 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 13 Feb 2013 11:03:11 +0100 -Subject: [PATCH 219/290] arm: Enable highmem for rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fe42b35e69fc1b2fda87b9c3d090149a0ec3096 +Subject: [PATCH 219/291] arm: Enable highmem for rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz fixup highmem for ARM. @@ -178,3 +179,6 @@ index 1ac89e4718bf..eaa2ef9bc10e 100644 #include +-- +2.24.0 + diff --git a/debian/patches-rt/0220-scsi-fcoe-Make-RT-aware.patch b/debian/patches-rt/0220-scsi-fcoe-Make-RT-aware.patch index 5b6aba9d7..541841ef1 100644 --- a/debian/patches-rt/0220-scsi-fcoe-Make-RT-aware.patch +++ b/debian/patches-rt/0220-scsi-fcoe-Make-RT-aware.patch @@ -1,7 +1,8 @@ +From 165de32d8c12a4ac567739da96e3bca1e3a6687c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 12 Nov 2011 14:00:48 +0100 -Subject: [PATCH 220/290] scsi/fcoe: Make RT aware. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9bbf02ac596565f61feeee7d279ab74525fdc35 +Subject: [PATCH 220/291] scsi/fcoe: Make RT aware. +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Do not disable preemption while taking sleeping locks. All user look safe for migrate_diable() only. @@ -110,3 +111,6 @@ index 42bcf7f3a0f9..2ce045d6860c 100644 /* peek cache of free slot */ if (pool->left != FC_XID_UNKNOWN) { +-- +2.24.0 + diff --git a/debian/patches-rt/0221-x86-crypto-Reduce-preempt-disabled-regions.patch b/debian/patches-rt/0221-x86-crypto-Reduce-preempt-disabled-regions.patch index 07455d392..b7e0065fb 100644 --- a/debian/patches-rt/0221-x86-crypto-Reduce-preempt-disabled-regions.patch +++ b/debian/patches-rt/0221-x86-crypto-Reduce-preempt-disabled-regions.patch @@ -1,7 +1,8 @@ +From f6cb7284734e9deda1e540f67c404acafe71d2f1 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 14 Nov 2011 18:19:27 +0100 -Subject: [PATCH 221/290] x86: crypto: Reduce preempt disabled regions -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=472656d732749a107ad80e379b543d3bfce4bd72 +Subject: [PATCH 221/291] x86: crypto: Reduce preempt disabled regions +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. @@ -112,3 +113,6 @@ index 917f25e4d0a8..58d8c03fc32d 100644 return err; } +-- +2.24.0 + diff --git a/debian/patches-rt/0222-crypto-Reduce-preempt-disabled-regions-more-algos.patch b/debian/patches-rt/0222-crypto-Reduce-preempt-disabled-regions-more-algos.patch index 2b86986d6..3b95beab3 100644 --- a/debian/patches-rt/0222-crypto-Reduce-preempt-disabled-regions-more-algos.patch +++ b/debian/patches-rt/0222-crypto-Reduce-preempt-disabled-regions-more-algos.patch @@ -1,7 +1,8 @@ +From 803ae9e54f0557495e402725b32fbba0ac4a3501 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 21 Feb 2014 17:24:04 +0100 -Subject: [PATCH 222/290] crypto: Reduce preempt disabled regions, more algos -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3964d439260995e6fb01f96f3daf1f7f3ba405f5 +Subject: [PATCH 222/291] crypto: Reduce preempt disabled regions, more algos +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Don Estabrook reported | kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100() @@ -257,3 +258,6 @@ index a78ef99a9981..dac489a1c4da 100644 return err; } EXPORT_SYMBOL_GPL(glue_xts_req_128bit); +-- +2.24.0 + diff --git a/debian/patches-rt/0223-crypto-limit-more-FPU-enabled-sections.patch b/debian/patches-rt/0223-crypto-limit-more-FPU-enabled-sections.patch index 381555d61..9fc5de76d 100644 --- a/debian/patches-rt/0223-crypto-limit-more-FPU-enabled-sections.patch +++ b/debian/patches-rt/0223-crypto-limit-more-FPU-enabled-sections.patch @@ -1,10 +1,11 @@ +From 965ff17b26359891248c1ff854633b874c436d09 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 30 Nov 2017 13:40:10 +0100 -Subject: [PATCH 223/290] crypto: limit more FPU-enabled sections +Subject: [PATCH 223/291] 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=06f6850c211b4924e125e00c1f1a21a14ea7712e +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -102,3 +103,6 @@ index 2e5003fef51a..768c53767bb2 100644 /* * Save the FPU state (mark it for reload if necessary): * +-- +2.24.0 + diff --git a/debian/patches-rt/0224-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch b/debian/patches-rt/0224-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch index 22a4fd428..ab061398b 100644 --- a/debian/patches-rt/0224-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch +++ b/debian/patches-rt/0224-crypto-scompress-serialize-RT-percpu-scratch-buffer-.patch @@ -1,8 +1,9 @@ +From 50ec5a85831ae8ef73989b80b9a0b5c889503570 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Wed, 11 Jul 2018 17:14:47 +0200 -Subject: [PATCH 224/290] crypto: scompress - serialize RT percpu scratch +Subject: [PATCH 224/291] 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=b060aeba579ee733c1015b2301365526e672f475 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz | BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974 | in_atomic(): 1, irqs_disabled(): 0, pid: 1401, name: cryptomgr_test @@ -77,3 +78,6 @@ index 968bbcf65c94..c2f0077e0801 100644 return ret; } +-- +2.24.0 + diff --git a/debian/patches-rt/0225-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch b/debian/patches-rt/0225-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch index 4bc40b2a4..3a6779c33 100644 --- a/debian/patches-rt/0225-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch +++ b/debian/patches-rt/0225-crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch @@ -1,8 +1,9 @@ +From 9e661a1515bf59bfc024336bba8ef647d7386a12 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 26 Jul 2018 18:52:00 +0200 -Subject: [PATCH 225/290] crypto: cryptd - add a lock instead +Subject: [PATCH 225/291] 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=22f60893f4fbc66d43c729900e0306163d7389a0 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz cryptd has a per-CPU lock which protected with local_bh_disable() and preempt_disable(). @@ -79,3 +80,6 @@ index e0c8e907b086..e079f9a70201 100644 if (!req) return; +-- +2.24.0 + diff --git a/debian/patches-rt/0226-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch b/debian/patches-rt/0226-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch index 272736b86..6139b26ed 100644 --- a/debian/patches-rt/0226-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch +++ b/debian/patches-rt/0226-panic-skip-get_random_bytes-for-RT_FULL-in-init_oops.patch @@ -1,8 +1,9 @@ +From f40da707db8b3b9644a116ed2399c04a158e284b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 14 Jul 2015 14:26:34 +0200 -Subject: [PATCH 226/290] panic: skip get_random_bytes for RT_FULL in +Subject: [PATCH 226/291] 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=6d6fa048f3ae116f0d13b7262f16ea5afd9c4aac +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Disable on -RT. If this is invoked from irq-context we will have problems to acquire the sleeping lock. @@ -13,7 +14,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 2 insertions(+) diff --git a/kernel/panic.c b/kernel/panic.c -index 72e001e3753e..98748902cc41 100644 +index 8138a676fb7d..fa114be5c30f 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -480,9 +480,11 @@ static u64 oops_id; @@ -28,3 +29,6 @@ index 72e001e3753e..98748902cc41 100644 oops_id++; return 0; +-- +2.24.0 + diff --git a/debian/patches-rt/0227-x86-stackprotector-Avoid-random-pool-on-rt.patch b/debian/patches-rt/0227-x86-stackprotector-Avoid-random-pool-on-rt.patch index a0db6cc11..9f3f00107 100644 --- a/debian/patches-rt/0227-x86-stackprotector-Avoid-random-pool-on-rt.patch +++ b/debian/patches-rt/0227-x86-stackprotector-Avoid-random-pool-on-rt.patch @@ -1,7 +1,8 @@ +From ed0288b2b45c87fa0ec3506a1cb4acaf0f114184 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 16 Dec 2010 14:25:18 +0100 -Subject: [PATCH 227/290] x86: stackprotector: Avoid random pool on rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6bf5941983152b741aea75850114423524c55c92 +Subject: [PATCH 227/291] x86: stackprotector: Avoid random pool on rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz CPU bringup calls into the random pool to initialize the stack canary. During boot that works nicely even on RT as the might sleep @@ -45,3 +46,6 @@ index 8ec97a62c245..7bc85841fc56 100644 tsc = rdtsc(); canary += tsc + (tsc << 32UL); canary &= CANARY_MASK; +-- +2.24.0 + diff --git a/debian/patches-rt/0228-random-Make-it-work-on-rt.patch b/debian/patches-rt/0228-random-Make-it-work-on-rt.patch index de20d7c9b..ca358606f 100644 --- a/debian/patches-rt/0228-random-Make-it-work-on-rt.patch +++ b/debian/patches-rt/0228-random-Make-it-work-on-rt.patch @@ -1,7 +1,8 @@ +From ff51be56bfec6a5b0b6c36175914356dd3ba54b3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Aug 2012 20:38:50 +0200 -Subject: [PATCH 228/290] random: Make it work on rt -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f07a155615d469ecdfbbe7236f9f2c32f694035c +Subject: [PATCH 228/291] random: Make it work on rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Delegate the random insertion to the forced threaded interrupt handler. Store the return IP of the hard interrupt handler in the irq @@ -20,7 +21,7 @@ Signed-off-by: Thomas Gleixner 7 files changed, 26 insertions(+), 10 deletions(-) diff --git a/drivers/char/random.c b/drivers/char/random.c -index 0a84b7f468ad..75ae2d9e8720 100644 +index 86fe1df90239..468a128c8ad8 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1232,28 +1232,27 @@ static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs) @@ -58,7 +59,7 @@ index 0a84b7f468ad..75ae2d9e8720 100644 fast_mix(fast_pool); add_interrupt_bench(cycles); diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c -index 8e923e70e594..e77716a62351 100644 +index 12bc9fa21111..278f03f50147 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -112,10 +112,12 @@ int hv_post_message(union hv_connection_id connection_id, @@ -161,3 +162,6 @@ index 5701774a6d71..ce86341a9e19 100644 wake_threads_waitq(desc); } +-- +2.24.0 + diff --git a/debian/patches-rt/0229-cpu-hotplug-Implement-CPU-pinning.patch b/debian/patches-rt/0229-cpu-hotplug-Implement-CPU-pinning.patch index c142fb66a..3a7d9b952 100644 --- a/debian/patches-rt/0229-cpu-hotplug-Implement-CPU-pinning.patch +++ b/debian/patches-rt/0229-cpu-hotplug-Implement-CPU-pinning.patch @@ -1,7 +1,8 @@ +From 2c7a2d573fcd7764cda4a633e43de6d0dc19c385 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 19 Jul 2017 17:31:20 +0200 -Subject: [PATCH 229/290] cpu/hotplug: Implement CPU pinning -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=673c270ddb52159dc10aae6859ad2c7fbdc784b1 +Subject: [PATCH 229/291] cpu/hotplug: Implement CPU pinning +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner --- @@ -22,7 +23,7 @@ index 834f46cb258b..4559d8039c45 100644 int migrate_disable_atomic; # endif diff --git a/kernel/cpu.c b/kernel/cpu.c -index 02e05a7e463c..e1cd4bfc03bc 100644 +index cf1f2eb6bb90..e6c2d814f7f9 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -75,6 +75,11 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = { @@ -80,7 +81,7 @@ index 02e05a7e463c..e1cd4bfc03bc 100644 } DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock); -@@ -853,6 +886,7 @@ static int take_cpu_down(void *_param) +@@ -854,6 +887,7 @@ static int take_cpu_down(void *_param) static int takedown_cpu(unsigned int cpu) { @@ -88,7 +89,7 @@ index 02e05a7e463c..e1cd4bfc03bc 100644 struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu); int err; -@@ -865,11 +899,14 @@ static int takedown_cpu(unsigned int cpu) +@@ -866,11 +900,14 @@ static int takedown_cpu(unsigned int cpu) */ irq_lock_sparse(); @@ -103,7 +104,7 @@ index 02e05a7e463c..e1cd4bfc03bc 100644 /* CPU refused to die */ irq_unlock_sparse(); /* Unpark the hotplug thread so we can rollback there */ -@@ -888,6 +925,7 @@ static int takedown_cpu(unsigned int cpu) +@@ -889,6 +926,7 @@ static int takedown_cpu(unsigned int cpu) wait_for_ap_thread(st, false); BUG_ON(st->state != CPUHP_AP_IDLE_DEAD); @@ -111,3 +112,6 @@ index 02e05a7e463c..e1cd4bfc03bc 100644 /* Interrupts are moved away from the dying cpu, reenable alloc/free */ irq_unlock_sparse(); +-- +2.24.0 + diff --git a/debian/patches-rt/0230-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch b/debian/patches-rt/0230-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch index c9247c213..2249864b5 100644 --- a/debian/patches-rt/0230-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch +++ b/debian/patches-rt/0230-sched-Allow-pinned-user-tasks-to-be-awakened-to-the-.patch @@ -1,8 +1,9 @@ +From eff993290f4548c3f1621d6528c177d5c61314e7 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sun, 19 Aug 2018 08:28:35 +0200 -Subject: [PATCH 230/290] sched: Allow pinned user tasks to be awakened to the +Subject: [PATCH 230/291] 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=2e0e054d46bdb30148a9bdbbbcee165a85b47ca5 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Since commit 7af443ee16976 ("sched/core: Require cpu_active() in select_task_rq(), for user tasks") select_fallback_rq() will BUG() if @@ -21,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 7a0061839d77..d7692e31a254 100644 +index dcf2deedd3f8..6ef0dcea94d7 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) @@ -33,3 +34,6 @@ index 7a0061839d77..d7692e31a254 100644 return cpu_online(cpu); return cpu_active(cpu); +-- +2.24.0 + diff --git a/debian/patches-rt/0231-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch b/debian/patches-rt/0231-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch index dbd4e6838..7a464a93d 100644 --- a/debian/patches-rt/0231-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch +++ b/debian/patches-rt/0231-hotplug-duct-tape-RT-rwlock-usage-for-non-RT.patch @@ -1,7 +1,8 @@ +From 383acff72aa2c980f18f222454d8a81d1358ecc3 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 4 Aug 2017 18:31:00 +0200 -Subject: [PATCH 231/290] 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=6ff0675b8cd730a82f8eb2a3c08e7d0a85750383 +Subject: [PATCH 231/291] hotplug: duct-tape RT-rwlock usage for non-RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz This type is only available on -RT. We need to craft something for non-RT. Since the only migrate_disable() user is -RT only, there is no @@ -13,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/kernel/cpu.c b/kernel/cpu.c -index e1cd4bfc03bc..69b5853f2854 100644 +index e6c2d814f7f9..c8631e699ce2 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -75,7 +75,7 @@ static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = { @@ -57,7 +58,7 @@ index e1cd4bfc03bc..69b5853f2854 100644 } DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock); -@@ -886,7 +890,9 @@ static int take_cpu_down(void *_param) +@@ -887,7 +891,9 @@ static int take_cpu_down(void *_param) static int takedown_cpu(unsigned int cpu) { @@ -67,7 +68,7 @@ index e1cd4bfc03bc..69b5853f2854 100644 struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu); int err; -@@ -899,14 +905,18 @@ static int takedown_cpu(unsigned int cpu) +@@ -900,14 +906,18 @@ static int takedown_cpu(unsigned int cpu) */ irq_lock_sparse(); @@ -86,7 +87,7 @@ index e1cd4bfc03bc..69b5853f2854 100644 /* CPU refused to die */ irq_unlock_sparse(); /* Unpark the hotplug thread so we can rollback there */ -@@ -925,7 +935,9 @@ static int takedown_cpu(unsigned int cpu) +@@ -926,7 +936,9 @@ static int takedown_cpu(unsigned int cpu) wait_for_ap_thread(st, false); BUG_ON(st->state != CPUHP_AP_IDLE_DEAD); @@ -96,3 +97,6 @@ index e1cd4bfc03bc..69b5853f2854 100644 /* Interrupts are moved away from the dying cpu, reenable alloc/free */ irq_unlock_sparse(); +-- +2.24.0 + diff --git a/debian/patches-rt/0232-net-Remove-preemption-disabling-in-netif_rx.patch b/debian/patches-rt/0232-net-Remove-preemption-disabling-in-netif_rx.patch index 9eab37a57..cd6ddb426 100644 --- a/debian/patches-rt/0232-net-Remove-preemption-disabling-in-netif_rx.patch +++ b/debian/patches-rt/0232-net-Remove-preemption-disabling-in-netif_rx.patch @@ -1,7 +1,8 @@ +From 4435f4a65c3e92d4775dff30c178cf1f59eeea71 Mon Sep 17 00:00:00 2001 From: Priyanka Jain Date: Thu, 17 May 2012 09:35:11 +0530 -Subject: [PATCH 232/290] net: Remove preemption disabling in netif_rx() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88c9d7966005068f4e29f94d10effc2b8ecc8e9d +Subject: [PATCH 232/291] net: Remove preemption disabling in netif_rx() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -35,10 +36,10 @@ Signed-off-by: Thomas Gleixner 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index c9adf3a88771..b5b4b3b162a7 100644 +index 67df2536d4bf..3b86d29da429 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4484,7 +4484,7 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4498,7 +4498,7 @@ static int netif_rx_internal(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -47,7 +48,7 @@ index c9adf3a88771..b5b4b3b162a7 100644 rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -4494,14 +4494,14 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4508,14 +4508,14 @@ static int netif_rx_internal(struct sk_buff *skb) ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); @@ -65,3 +66,6 @@ index c9adf3a88771..b5b4b3b162a7 100644 } return ret; } +-- +2.24.0 + diff --git a/debian/patches-rt/0233-net-Another-local_irq_disable-kmalloc-headache.patch b/debian/patches-rt/0233-net-Another-local_irq_disable-kmalloc-headache.patch index 3b93c56df..3e6a6a529 100644 --- a/debian/patches-rt/0233-net-Another-local_irq_disable-kmalloc-headache.patch +++ b/debian/patches-rt/0233-net-Another-local_irq_disable-kmalloc-headache.patch @@ -1,7 +1,8 @@ +From 571bb5a2b0cea5aedd166dd28e90cbbae95aa11b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 26 Sep 2012 16:21:08 +0200 -Subject: [PATCH 233/290] net: Another local_irq_disable/kmalloc headache -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a081a1c720e485139420e138285bbf35271e89e8 +Subject: [PATCH 233/291] net: Another local_irq_disable/kmalloc headache +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Replace it by a local lock. Though that's pretty inefficient :( @@ -59,3 +60,6 @@ index 0629ca89ab74..6ca7cb2b4364 100644 if (unlikely(!data)) return NULL; +-- +2.24.0 + diff --git a/debian/patches-rt/0234-net-core-protect-users-of-napi_alloc_cache-against-r.patch b/debian/patches-rt/0234-net-core-protect-users-of-napi_alloc_cache-against-r.patch index 00a079103..9b09af271 100644 --- a/debian/patches-rt/0234-net-core-protect-users-of-napi_alloc_cache-against-r.patch +++ b/debian/patches-rt/0234-net-core-protect-users-of-napi_alloc_cache-against-r.patch @@ -1,8 +1,9 @@ +From eac7fdf35a9f0818ea573cb05690e17920381c78 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 15 Jan 2016 16:33:34 +0100 -Subject: [PATCH 234/290] net/core: protect users of napi_alloc_cache against +Subject: [PATCH 234/291] 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=0c07f26683c75380656e020a6cd8b071da568cf4 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -113,3 +114,6 @@ index 6ca7cb2b4364..c5c0d2095873 100644 } void __kfree_skb_defer(struct sk_buff *skb) { +-- +2.24.0 + diff --git a/debian/patches-rt/0235-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch b/debian/patches-rt/0235-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch index 3f02b7d6f..11c55ceb9 100644 --- a/debian/patches-rt/0235-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch +++ b/debian/patches-rt/0235-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch @@ -1,8 +1,9 @@ +From b5a38b121397cc80814cbd35b3f9370fdaea2ad8 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 28 Oct 2012 11:18:08 +0100 -Subject: [PATCH 235/290] net: netfilter: Serialize xt_write_recseq sections on +Subject: [PATCH 235/291] 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=4e6675bcdeed2f36f18ead465070cddfc53223c7 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The netfilter code relies only on the implicit semantics of local_bh_disable() for serializing wt_write_recseq sections. RT breaks @@ -78,3 +79,6 @@ index 93aaec3a54ec..b364cf8e5776 100644 const struct nf_ipv6_ops __rcu *nf_ipv6_ops __read_mostly; EXPORT_SYMBOL_GPL(nf_ipv6_ops); +-- +2.24.0 + diff --git a/debian/patches-rt/0236-net-Add-a-mutex-around-devnet_rename_seq.patch b/debian/patches-rt/0236-net-Add-a-mutex-around-devnet_rename_seq.patch index 4b43c19a9..907691a0b 100644 --- a/debian/patches-rt/0236-net-Add-a-mutex-around-devnet_rename_seq.patch +++ b/debian/patches-rt/0236-net-Add-a-mutex-around-devnet_rename_seq.patch @@ -1,7 +1,8 @@ +From 190a26356e77b087b41a4ef502e56aec24b9c598 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 20 Mar 2013 18:06:20 +0100 -Subject: [PATCH 236/290] net: Add a mutex around devnet_rename_seq -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9b9fafec34118940cdc0ba2b843d8920157fd0a8 +Subject: [PATCH 236/291] net: Add a mutex around devnet_rename_seq +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On RT write_seqcount_begin() disables preemption and device_rename() allocates memory with GFP_KERNEL and grabs later the sysfs_mutex @@ -21,7 +22,7 @@ Signed-off-by: Thomas Gleixner 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c -index b5b4b3b162a7..1b1bf6186226 100644 +index 3b86d29da429..7b7d1adbd6b9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -195,6 +195,7 @@ static unsigned int napi_gen_id = NR_CPUS; @@ -107,3 +108,6 @@ index b5b4b3b162a7..1b1bf6186226 100644 } /** +-- +2.24.0 + diff --git a/debian/patches-rt/0237-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch b/debian/patches-rt/0237-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch index 12a3efe45..db7511ee0 100644 --- a/debian/patches-rt/0237-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch +++ b/debian/patches-rt/0237-lockdep-selftest-Only-do-hardirq-context-test-for-ra.patch @@ -1,8 +1,9 @@ +From bca887b9f774bbd2c46bf349b6ff39708053a1d1 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Mon, 16 Apr 2012 15:01:56 +0800 -Subject: [PATCH 237/290] lockdep: selftest: Only do hardirq context test for +Subject: [PATCH 237/291] 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=611b5197a59dcb72ca3325c94b6f907ad3d877a9 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz On -rt there is no softirq context any more and rwlock is sleepable, disable softirq context test and rwlock+irq test. @@ -56,3 +57,6 @@ index 1e1bbf171eca..5cdf3809905e 100644 ww_tests(); +-- +2.24.0 + diff --git a/debian/patches-rt/0238-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch b/debian/patches-rt/0238-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch index 903ccdfa4..61229231e 100644 --- a/debian/patches-rt/0238-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch +++ b/debian/patches-rt/0238-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch @@ -1,8 +1,9 @@ +From b09a15118626b47370a112e1ad12205b27a9194d Mon Sep 17 00:00:00 2001 From: Josh Cartwright Date: Wed, 28 Jan 2015 13:08:45 -0600 -Subject: [PATCH 238/290] lockdep: selftest: fix warnings due to missing +Subject: [PATCH 238/291] 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=626b1deed94211cf41c043e70f75e33dd6d80f6d +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz "lockdep: Selftest: Only do hardirq context test for raw spinlock" disabled the execution of certain tests with PREEMPT_RT_FULL, but did @@ -143,3 +144,6 @@ index 5cdf3809905e..32db9532ddd4 100644 /* * read-lock / write-lock recursion that is unsafe. */ +-- +2.24.0 + diff --git a/debian/patches-rt/0239-sched-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0239-sched-Add-support-for-lazy-preemption.patch index 2bd8a2712..a4012f29a 100644 --- a/debian/patches-rt/0239-sched-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0239-sched-Add-support-for-lazy-preemption.patch @@ -1,7 +1,8 @@ +From f80c58befc5738acca6efae88c7b88807cfe973c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 26 Oct 2012 18:50:54 +0100 -Subject: [PATCH 239/290] sched: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31b7c5de23c43474d2c4e69605d541d32c80e750 +Subject: [PATCH 239/291] sched: Add support for lazy preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -215,7 +216,7 @@ index 8d8821b3689a..d3fcab20d2a3 100644 #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES static inline int arch_within_stack_frames(const void * const stack, diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 0403d9696944..c20237c5ab66 100644 +index 1cc4d2da954c..72864a11cec0 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -64,6 +64,7 @@ struct trace_entry { @@ -244,7 +245,7 @@ index 907d72b3ba95..306567f72a3e 100644 prompt "Preemption Model" default PREEMPT_NONE diff --git a/kernel/cpu.c b/kernel/cpu.c -index 69b5853f2854..efa687c2c170 100644 +index c8631e699ce2..00dac381da2e 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -304,11 +304,13 @@ void pin_current_cpu(void) @@ -262,7 +263,7 @@ index 69b5853f2854..efa687c2c170 100644 __read_rt_unlock(cpuhp_pin); goto again; diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index d7692e31a254..538461ee8ebd 100644 +index 6ef0dcea94d7..a17c765d3fcb 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -493,6 +493,48 @@ void resched_curr(struct rq *rq) @@ -383,7 +384,7 @@ index d7692e31a254..538461ee8ebd 100644 do { /* * Because the function tracer can trace preempt_count_sub() -@@ -5502,7 +5576,9 @@ void init_idle(struct task_struct *idle, int cpu) +@@ -5503,7 +5577,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 +395,7 @@ index d7692e31a254..538461ee8ebd 100644 /* * The idle tasks have their own, simple scheduling class: */ -@@ -7227,6 +7303,7 @@ void migrate_disable(void) +@@ -7228,6 +7304,7 @@ void migrate_disable(void) } preempt_disable(); @@ -402,7 +403,7 @@ index d7692e31a254..538461ee8ebd 100644 pin_current_cpu(); migrate_disable_update_cpus_allowed(p); -@@ -7294,6 +7371,7 @@ void migrate_enable(void) +@@ -7295,6 +7372,7 @@ void migrate_enable(void) arg.dest_cpu = dest_cpu; unpin_current_cpu(); @@ -410,7 +411,7 @@ index d7692e31a254..538461ee8ebd 100644 preempt_enable(); stop_one_cpu(task_cpu(p), migration_cpu_stop, &arg); tlb_migrate_finish(p->mm); -@@ -7302,6 +7380,7 @@ void migrate_enable(void) +@@ -7303,6 +7381,7 @@ void migrate_enable(void) } } unpin_current_cpu(); @@ -419,7 +420,7 @@ index d7692e31a254..538461ee8ebd 100644 } EXPORT_SYMBOL(migrate_enable); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index da5d60d25c27..e30187563bfc 100644 +index 6e6d9e999814..5e00ddd76749 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4075,7 +4075,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) @@ -449,7 +450,7 @@ index da5d60d25c27..e30187563bfc 100644 return; } /* -@@ -4427,7 +4427,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -4375,7 +4375,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 +459,7 @@ index da5d60d25c27..e30187563bfc 100644 } static __always_inline -@@ -5126,7 +5126,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -5069,7 +5069,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (rq->curr == p) @@ -467,7 +468,7 @@ index da5d60d25c27..e30187563bfc 100644 return; } hrtick_start(rq, delta); -@@ -6702,7 +6702,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -6645,7 +6645,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -476,7 +477,7 @@ index da5d60d25c27..e30187563bfc 100644 /* * Only set the backward buddy when the current task is still * on the rq. This can happen when a wakeup gets interleaved -@@ -9794,7 +9794,7 @@ static void task_fork_fair(struct task_struct *p) +@@ -9746,7 +9746,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 +486,7 @@ index da5d60d25c27..e30187563bfc 100644 } se->vruntime -= cfs_rq->min_vruntime; -@@ -9818,7 +9818,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -9770,7 +9770,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (rq->curr == p) { if (p->prio > oldprio) @@ -509,10 +510,10 @@ index 68de18405857..12a12be6770b 100644 /* diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 49ae30da28ee..f7c1c262457f 100644 +index c79e32488940..c90574112bca 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -1638,6 +1638,15 @@ extern void reweight_task(struct task_struct *p, int prio); +@@ -1634,6 +1634,15 @@ extern void reweight_task(struct task_struct *p, int prio); extern void resched_curr(struct rq *rq); extern void resched_cpu(int cpu); @@ -665,3 +666,6 @@ index 46c96744f09d..3f78b0afb729 100644 if (entry->migrate_disable) trace_seq_printf(s, "%x", entry->migrate_disable); else +-- +2.24.0 + diff --git a/debian/patches-rt/0240-ftrace-Fix-trace-header-alignment.patch b/debian/patches-rt/0240-ftrace-Fix-trace-header-alignment.patch index 980520953..d3cd390bf 100644 --- a/debian/patches-rt/0240-ftrace-Fix-trace-header-alignment.patch +++ b/debian/patches-rt/0240-ftrace-Fix-trace-header-alignment.patch @@ -1,7 +1,8 @@ +From 05176e2b2c16ec7f9ca57bd48e1d3016e83fe071 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sun, 16 Oct 2016 05:08:30 +0200 -Subject: [PATCH 240/290] ftrace: Fix trace header alignment -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ab62a4df7e3cd8a388c1ac3fc114383300d5163 +Subject: [PATCH 240/291] ftrace: Fix trace header alignment +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Line up helper arrows to the right column. @@ -46,3 +47,6 @@ index d547c6ab0db2..bdcc8eda152c 100644 } static void print_event_info(struct trace_buffer *buf, struct seq_file *m) +-- +2.24.0 + diff --git a/debian/patches-rt/0241-x86-Support-for-lazy-preemption.patch b/debian/patches-rt/0241-x86-Support-for-lazy-preemption.patch index d9e142514..86f54cf6a 100644 --- a/debian/patches-rt/0241-x86-Support-for-lazy-preemption.patch +++ b/debian/patches-rt/0241-x86-Support-for-lazy-preemption.patch @@ -1,7 +1,8 @@ +From b0a8725c972abd18ec9f4fb37c7e23fda28bccae Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 1 Nov 2012 11:03:47 +0100 -Subject: [PATCH 241/290] x86: Support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb1ac4d42675612d93fdf5915eb3ee4e0a65b1b0 +Subject: [PATCH 241/291] x86: Support for lazy preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Implement the x86 pieces for lazy preempt. @@ -17,7 +18,7 @@ Signed-off-by: Thomas Gleixner 7 files changed, 79 insertions(+), 3 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 1b05ae86bdde..736e369e141b 100644 +index f22e787329cf..a56f57f95993 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -180,6 +180,7 @@ config X86 @@ -84,7 +85,7 @@ diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 7ffd83c57ef2..663a99f6320f 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -732,7 +732,23 @@ GLOBAL(swapgs_restore_regs_and_return_to_usermode) +@@ -732,7 +732,23 @@ retint_kernel: btl $9, EFLAGS(%rsp) /* were interrupts off? */ jnc 1f 0: cmpl $0, PER_CPU_VAR(__preempt_count) @@ -234,3 +235,6 @@ index 01de31db300d..ce1c5b9fbd8c 100644 /* TLB state for the entry code */ OFFSET(TLB_STATE_user_pcid_flush_mask, tlb_state, user_pcid_flush_mask); +-- +2.24.0 + diff --git a/debian/patches-rt/0242-x86-lazy-preempt-properly-check-against-preempt-mask.patch b/debian/patches-rt/0242-x86-lazy-preempt-properly-check-against-preempt-mask.patch index 0cb116c28..d6d1c31a4 100644 --- a/debian/patches-rt/0242-x86-lazy-preempt-properly-check-against-preempt-mask.patch +++ b/debian/patches-rt/0242-x86-lazy-preempt-properly-check-against-preempt-mask.patch @@ -1,8 +1,9 @@ +From 753eeda0671c2b6108f607ec1fe2675c4517e4f5 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 18 Feb 2019 16:57:09 +0100 -Subject: [PATCH 242/290] x86: lazy-preempt: properly check against +Subject: [PATCH 242/291] x86: lazy-preempt: properly check against preempt-mask -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e87427920276b51f5f1d11c24ac3f23473907b66 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz should_resched() should check against preempt_offset after unmasking the need-resched-bit. Otherwise should_resched() won't work for @@ -27,3 +28,6 @@ index 22992c837795..f66708779274 100644 return false; if (current_thread_info()->preempt_lazy_count) return false; +-- +2.24.0 + diff --git a/debian/patches-rt/0243-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch b/debian/patches-rt/0243-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch index 7daf6194f..49ca47eb6 100644 --- a/debian/patches-rt/0243-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch +++ b/debian/patches-rt/0243-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch @@ -1,8 +1,9 @@ +From e9888377f4ed8949cb6efee0e4451809425a0dcc Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 26 Feb 2019 14:53:49 +0100 -Subject: [PATCH 243/290] x86: lazy-preempt: use proper return label on +Subject: [PATCH 243/291] 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=8df5629dc5f632aa3559f60a3e53de3615401003 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The lazy-preempt uses the wrong return label in case preemption isn't possible. This results crash while returning to the kernel. @@ -39,3 +40,6 @@ index 985988227877..d880352e410c 100644 #endif testl $X86_EFLAGS_IF, PT_EFLAGS(%esp) # interrupts off (exception path) ? jz restore_all_kernel +-- +2.24.0 + diff --git a/debian/patches-rt/0244-arm-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0244-arm-Add-support-for-lazy-preemption.patch index 54e08f8d9..7185977ac 100644 --- a/debian/patches-rt/0244-arm-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0244-arm-Add-support-for-lazy-preemption.patch @@ -1,7 +1,8 @@ +From 935d43627cb20dad8804b2d08f724536e1d8a409 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 31 Oct 2012 12:04:11 +0100 -Subject: [PATCH 244/290] arm: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f6d40445a651d7c70aa060e018f584cd31dd3f3 +Subject: [PATCH 244/291] arm: Add support for lazy preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Implement the arm pieces for lazy preempt. @@ -83,7 +84,7 @@ diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index e85a3af9ddeb..cc67c0a3ae7b 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S -@@ -216,11 +216,18 @@ ENDPROC(__dabt_svc) +@@ -216,11 +216,18 @@ __irq_svc: #ifdef CONFIG_PREEMPT ldr r8, [tsk, #TI_PREEMPT] @ get preempt count @@ -104,7 +105,7 @@ index e85a3af9ddeb..cc67c0a3ae7b 100644 #endif svc_exit r5, irq = 1 @ return from exception -@@ -235,8 +242,14 @@ ENDPROC(__irq_svc) +@@ -235,8 +242,14 @@ svc_preempt: 1: bl preempt_schedule_irq @ irq en/disable is done inside ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS tst r0, #_TIF_NEED_RESCHED @@ -121,10 +122,10 @@ index e85a3af9ddeb..cc67c0a3ae7b 100644 __und_fault: diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S -index 746565a876dc..156e3ba4b319 100644 +index 0465d65d23de..47675830ed30 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S -@@ -56,7 +56,9 @@ saved_pc .req lr +@@ -56,7 +56,9 @@ __ret_fast_syscall: cmp r2, #TASK_SIZE blne addr_limit_check_failed ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing @@ -135,7 +136,7 @@ index 746565a876dc..156e3ba4b319 100644 bne fast_work_pending -@@ -93,8 +95,11 @@ ENDPROC(ret_fast_syscall) +@@ -93,8 +95,11 @@ __ret_fast_syscall: cmp r2, #TASK_SIZE blne addr_limit_check_failed ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing @@ -162,3 +163,6 @@ index b908382b69ff..339fbc281cf1 100644 schedule(); } else { if (unlikely(!user_mode(regs))) +-- +2.24.0 + diff --git a/debian/patches-rt/0245-Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch b/debian/patches-rt/0245-Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch new file mode 100644 index 000000000..9d531c5f9 --- /dev/null +++ b/debian/patches-rt/0245-Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch @@ -0,0 +1,56 @@ +From e409cdc5eac9226629a9cc2e2b18317931814014 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Wed, 18 Dec 2019 20:47:47 -0500 +Subject: [PATCH 245/291] Revert: arm64: preempt: Fix big-endian when checking + preempt count in assembly +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz + +Commit 7faa313f05cad184 should never have been backported to 4.19. +It depends on commit 396244692232 ("arm64: preempt: Provide our own +implementation of asm/preempt.h") which was added in 5.0. + +Signed-off-by: Steven Rostedt +--- + arch/arm64/include/asm/assembler.h | 8 +++++--- + arch/arm64/kernel/entry.S | 6 ++++-- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h +index 0c100506a29a..5a97ac853168 100644 +--- a/arch/arm64/include/asm/assembler.h ++++ b/arch/arm64/include/asm/assembler.h +@@ -683,9 +683,11 @@ USER(\label, ic ivau, \tmp2) // invalidate I line PoU + .macro if_will_cond_yield_neon + #ifdef CONFIG_PREEMPT + get_thread_info x0 +- ldr x0, [x0, #TSK_TI_PREEMPT] +- sub x0, x0, #PREEMPT_DISABLE_OFFSET +- cbz x0, .Lyield_\@ ++ ldr w1, [x0, #TSK_TI_PREEMPT] ++ ldr x0, [x0, #TSK_TI_FLAGS] ++ cmp w1, #PREEMPT_DISABLE_OFFSET ++ csel x0, x0, xzr, eq ++ tbnz x0, #TIF_NEED_RESCHED, .Lyield_\@ // needs rescheduling? + /* fall through to endif_yield_neon */ + .subsection 1 + .Lyield_\@ : +diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S +index bb6832353045..5f800384cb9a 100644 +--- a/arch/arm64/kernel/entry.S ++++ b/arch/arm64/kernel/entry.S +@@ -622,8 +622,10 @@ el1_irq: + irq_handler + + #ifdef CONFIG_PREEMPT +- ldr x24, [tsk, #TSK_TI_PREEMPT] // get preempt count +- cbnz x24, 1f // preempt count != 0 ++ ldr w24, [tsk, #TSK_TI_PREEMPT] // get preempt count ++ cbnz w24, 1f // preempt count != 0 ++ ldr x0, [tsk, #TSK_TI_FLAGS] // get flags ++ tbz x0, #TIF_NEED_RESCHED, 1f // needs rescheduling? + bl el1_preempt + 1: + #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0245-powerpc-Add-support-for-lazy-preemption.patch b/debian/patches-rt/0246-powerpc-Add-support-for-lazy-preemption.patch similarity index 90% rename from debian/patches-rt/0245-powerpc-Add-support-for-lazy-preemption.patch rename to debian/patches-rt/0246-powerpc-Add-support-for-lazy-preemption.patch index 38b6c851c..a6540dc90 100644 --- a/debian/patches-rt/0245-powerpc-Add-support-for-lazy-preemption.patch +++ b/debian/patches-rt/0246-powerpc-Add-support-for-lazy-preemption.patch @@ -1,7 +1,8 @@ +From b144543f29356504a2f225a56546f9756120fb56 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 1 Nov 2012 10:14:11 +0100 -Subject: [PATCH 245/290] powerpc: Add support for lazy preemption -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80e79c5148f7aa9295c560cd5640bb1455ce9f73 +Subject: [PATCH 246/291] powerpc: Add support for lazy preemption +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Implement the powerpc pieces for lazy preempt. @@ -76,7 +77,7 @@ index 3c0002044bc9..ce316076bc52 100644 /* Bits in local_flags */ /* Don't move TLF_NAPPING without adjusting the code in entry_32.S */ diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c -index 7c3738d890e8..d16fc87332f8 100644 +index 50400f213bbf..1bb82c5dc1d9 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c @@ -156,6 +156,7 @@ int main(void) @@ -91,7 +92,7 @@ diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 26b3f853cbf6..3783f3ef17a4 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S -@@ -888,7 +888,14 @@ user_exc_return: /* r10 contains MSR_KERNEL here */ +@@ -888,7 +888,14 @@ resume_kernel: cmpwi 0,r0,0 /* if non-zero, just restore regs and return */ bne restore andi. r8,r8,_TIF_NEED_RESCHED @@ -106,7 +107,7 @@ index 26b3f853cbf6..3783f3ef17a4 100644 lwz r3,_MSR(r1) andi. r0,r3,MSR_EE /* interrupts off? */ beq restore /* don't schedule if so */ -@@ -899,11 +906,11 @@ user_exc_return: /* r10 contains MSR_KERNEL here */ +@@ -899,11 +906,11 @@ resume_kernel: */ bl trace_hardirqs_off #endif @@ -121,7 +122,7 @@ index 26b3f853cbf6..3783f3ef17a4 100644 #ifdef CONFIG_TRACE_IRQFLAGS /* And now, to properly rebalance the above, we tell lockdep they * are being turned back on, which will happen when we return -@@ -1232,7 +1239,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX) +@@ -1232,7 +1239,7 @@ global_dbcr0: #endif /* !(CONFIG_4xx || CONFIG_BOOKE) */ do_work: /* r10 contains MSR_KERNEL here */ @@ -130,7 +131,7 @@ index 26b3f853cbf6..3783f3ef17a4 100644 beq do_user_signal do_resched: /* r10 contains MSR_KERNEL here */ -@@ -1253,7 +1260,7 @@ do_resched: /* r10 contains MSR_KERNEL here */ +@@ -1253,7 +1260,7 @@ recheck: MTMSRD(r10) /* disable interrupts */ CURRENT_THREAD_INFO(r9, r1) lwz r9,TI_FLAGS(r9) @@ -140,7 +141,7 @@ index 26b3f853cbf6..3783f3ef17a4 100644 andi. r0,r9,_TIF_USER_WORK_MASK beq restore_user diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S -index 7a46e0e57a36..7671fa5da9fa 100644 +index 58b50967b3e5..ef02e41d5d96 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S @@ -176,7 +176,7 @@ system_call: /* label this so stack traces look sane */ @@ -152,7 +153,7 @@ index 7a46e0e57a36..7671fa5da9fa 100644 beq 15f addi r11,r11,8 /* use 32-bit syscall entries */ clrldi r3,r3,32 -@@ -768,7 +768,7 @@ _GLOBAL(ret_from_except_lite) +@@ -774,7 +774,7 @@ _GLOBAL(ret_from_except_lite) bl restore_math b restore #endif @@ -161,7 +162,7 @@ index 7a46e0e57a36..7671fa5da9fa 100644 beq 2f bl restore_interrupts SCHEDULE_USER -@@ -830,10 +830,18 @@ _GLOBAL(ret_from_except_lite) +@@ -836,10 +836,18 @@ resume_kernel: #ifdef CONFIG_PREEMPT /* Check if we need to preempt */ @@ -181,7 +182,7 @@ index 7a46e0e57a36..7671fa5da9fa 100644 cmpwi cr0,r8,0 bne restore ld r0,SOFTE(r1) -@@ -850,7 +858,7 @@ _GLOBAL(ret_from_except_lite) +@@ -856,7 +864,7 @@ resume_kernel: /* Re-test flags and eventually loop */ CURRENT_THREAD_INFO(r9, r1) ld r4,TI_FLAGS(r9) @@ -190,3 +191,6 @@ index 7a46e0e57a36..7671fa5da9fa 100644 bne 1b /* +-- +2.24.0 + diff --git a/debian/patches-rt/0246-arch-arm64-Add-lazy-preempt-support.patch b/debian/patches-rt/0247-arch-arm64-Add-lazy-preempt-support.patch similarity index 94% rename from debian/patches-rt/0246-arch-arm64-Add-lazy-preempt-support.patch rename to debian/patches-rt/0247-arch-arm64-Add-lazy-preempt-support.patch index 462cba4dd..91b5d5ee4 100644 --- a/debian/patches-rt/0246-arch-arm64-Add-lazy-preempt-support.patch +++ b/debian/patches-rt/0247-arch-arm64-Add-lazy-preempt-support.patch @@ -1,7 +1,8 @@ +From f87d8e877b765ec1760124d69d7f644bfdc0b9cd Mon Sep 17 00:00:00 2001 From: Anders Roxell Date: Thu, 14 May 2015 17:52:17 +0200 -Subject: [PATCH 246/290] arch/arm64: Add lazy preempt support -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9f39bfabe46e4f1ac88719c5ae7e2a746e724d12 +Subject: [PATCH 247/291] arch/arm64: Add lazy preempt support +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz arm64 is missing support for PREEMPT_RT. The main feature which is lacking is support for lazy preemption. The arch-specific entry code, @@ -86,7 +87,7 @@ diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 5f800384cb9a..b582580c8c4c 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S -@@ -623,11 +623,16 @@ ENDPROC(el1_sync) +@@ -623,11 +623,16 @@ el1_irq: #ifdef CONFIG_PREEMPT ldr w24, [tsk, #TSK_TI_PREEMPT] // get preempt count @@ -106,7 +107,7 @@ index 5f800384cb9a..b582580c8c4c 100644 #endif #ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_on -@@ -641,6 +646,7 @@ ENDPROC(el1_irq) +@@ -641,6 +646,7 @@ el1_preempt: 1: bl preempt_schedule_irq // irq en/disable is done inside ldr x0, [tsk, #TSK_TI_FLAGS] // get new tasks TI_FLAGS tbnz x0, #TIF_NEED_RESCHED, 1b // needs rescheduling? @@ -127,3 +128,6 @@ index 5dcc942906db..4fec251fe147 100644 /* Unmask Debug and SError for the next task */ local_daif_restore(DAIF_PROCCTX_NOIRQ); +-- +2.24.0 + diff --git a/debian/patches-rt/0247-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch b/debian/patches-rt/0248-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch similarity index 91% rename from debian/patches-rt/0247-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch rename to debian/patches-rt/0248-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch index 27eb21781..a8e9a0460 100644 --- a/debian/patches-rt/0247-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch +++ b/debian/patches-rt/0248-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch @@ -1,8 +1,9 @@ +From 9a03ed17896a5431a9f1f93461ba90eefd14c5f5 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sun, 16 Oct 2016 05:11:54 +0200 -Subject: [PATCH 247/290] connector/cn_proc: Protect send_msg() with a local +Subject: [PATCH 248/291] 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=f9aeb51c498452fe9350417739ef34eda7856189 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931 |in_atomic(): 1, irqs_disabled(): 0, pid: 31807, name: sleep @@ -68,3 +69,6 @@ index ad48fd52cb53..c5264b3ee0b0 100644 } void proc_fork_connector(struct task_struct *task) +-- +2.24.0 + diff --git a/debian/patches-rt/0248-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch b/debian/patches-rt/0249-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch similarity index 92% rename from debian/patches-rt/0248-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch rename to debian/patches-rt/0249-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch index bce81feb2..e6e211e69 100644 --- a/debian/patches-rt/0248-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch +++ b/debian/patches-rt/0249-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch @@ -1,8 +1,9 @@ +From cb8c4311213f5d86437dba441422b2f199d3b5b1 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Thu, 31 Mar 2016 04:08:28 +0200 -Subject: [PATCH 248/290] drivers/block/zram: Replace bit spinlocks with +Subject: [PATCH 249/291] 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=b12499320b2c305e2a859e4c1af089986c409311 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz They're nondeterministic, and lead to ___might_sleep() splats in -rt. OTOH, they're a lot less wasteful than an rtmutex per page. @@ -98,3 +99,6 @@ index d1095dfdffa8..144e91061df8 100644 #ifdef CONFIG_ZRAM_MEMORY_TRACKING ktime_t ac_time; #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0249-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch b/debian/patches-rt/0250-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch similarity index 93% rename from debian/patches-rt/0249-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch rename to debian/patches-rt/0250-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch index cde398b9b..6ba79c78a 100644 --- a/debian/patches-rt/0249-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch +++ b/debian/patches-rt/0250-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch @@ -1,8 +1,9 @@ +From 5f3149538ac9f025fab84569fad1276990e79c07 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Thu, 20 Oct 2016 11:15:22 +0200 -Subject: [PATCH 249/290] drivers/zram: Don't disable preemption in +Subject: [PATCH 250/291] 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=b66c8d1eb51ea78d7b44b9a8a959b2539755ce20 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -101,3 +102,6 @@ index d6cf9508b80d..71520199226a 100644 zram_slot_unlock(zram, index); /* Should NEVER happen. Return bio error if it does. */ +-- +2.24.0 + diff --git a/debian/patches-rt/0250-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch b/debian/patches-rt/0251-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch similarity index 83% rename from debian/patches-rt/0250-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch rename to debian/patches-rt/0251-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch index 69f7cebc8..3a16c565b 100644 --- a/debian/patches-rt/0250-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch +++ b/debian/patches-rt/0251-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch @@ -1,8 +1,9 @@ +From c5c85513eb5824e4d4151f720a6aa154261f9b80 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Wed, 23 Aug 2017 11:57:29 +0200 -Subject: [PATCH 250/290] drivers/zram: fix zcomp_stream_get() +Subject: [PATCH 251/291] 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=59f018ada02ffa0ce88d91aa36f5482f9c64054b +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Use get_local_ptr() instead this_cpu_ptr() to avoid a warning regarding smp_processor_id() in preemptible code. @@ -38,3 +39,6 @@ index dd65a27ae2cc..eece02262000 100644 } int zcomp_compress(struct zcomp_strm *zstrm, +-- +2.24.0 + diff --git a/debian/patches-rt/0251-tpm_tis-fix-stall-after-iowrite-s.patch b/debian/patches-rt/0252-tpm_tis-fix-stall-after-iowrite-s.patch similarity index 91% rename from debian/patches-rt/0251-tpm_tis-fix-stall-after-iowrite-s.patch rename to debian/patches-rt/0252-tpm_tis-fix-stall-after-iowrite-s.patch index 075f53895..484a9c9d1 100644 --- a/debian/patches-rt/0251-tpm_tis-fix-stall-after-iowrite-s.patch +++ b/debian/patches-rt/0252-tpm_tis-fix-stall-after-iowrite-s.patch @@ -1,7 +1,8 @@ +From 164b49bbed423012171fa88f691e0cdf7f60a211 Mon Sep 17 00:00:00 2001 From: Haris Okanovic Date: Tue, 15 Aug 2017 15:13:08 -0500 -Subject: [PATCH 251/290] tpm_tis: fix stall after iowrite*()s -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b0b78c13c30994b736f07aa1d0545d6b484a4b18 +Subject: [PATCH 252/291] tpm_tis: fix stall after iowrite*()s +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz ioread8() operations to TPM MMIO addresses can stall the cpu when immediately following a sequence of iowrite*()'s to the same region. @@ -78,3 +79,6 @@ index f08949a5f678..9fefcfcae593 100644 return 0; } +-- +2.24.0 + diff --git a/debian/patches-rt/0252-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch b/debian/patches-rt/0253-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch similarity index 91% rename from debian/patches-rt/0252-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch rename to debian/patches-rt/0253-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch index d560b84bf..4dbc46b45 100644 --- a/debian/patches-rt/0252-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch +++ b/debian/patches-rt/0253-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch @@ -1,7 +1,8 @@ +From 652a8167db4502b7d292fea5105b9b1c6b497c5c Mon Sep 17 00:00:00 2001 From: Julia Cartwright Date: Fri, 28 Sep 2018 21:03:51 +0000 -Subject: [PATCH 252/290] watchdog: prevent deferral of watchdogd wakeup on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d37485d195e0b7f778a9556486f4b63c3acd32a +Subject: [PATCH 253/291] watchdog: prevent deferral of watchdogd wakeup on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz When PREEMPT_RT_FULL is enabled, all hrtimer expiry functions are deferred for execution into the context of ktimersoftd unless otherwise @@ -36,7 +37,7 @@ Signed-off-by: Sebastian Andrzej Siewior 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c -index ffbdc4642ea5..84f75b5045f6 100644 +index f6c24b22b37c..ff19f9503c23 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -147,7 +147,7 @@ static inline void watchdog_update_worker(struct watchdog_device *wdd) @@ -75,3 +76,6 @@ index ffbdc4642ea5..84f75b5045f6 100644 else pr_info("watchdog%d running and kernel based pre-userspace handler disabled\n", wdd->id); +-- +2.24.0 + diff --git a/debian/patches-rt/0253-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch b/debian/patches-rt/0254-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch similarity index 89% rename from debian/patches-rt/0253-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch rename to debian/patches-rt/0254-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch index 81fabb245..5eeab6917 100644 --- a/debian/patches-rt/0253-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch +++ b/debian/patches-rt/0254-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch @@ -1,8 +1,9 @@ +From 8d8e5eb6f7fe08c7cd68248e7fd4154ce691610c Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sat, 27 Feb 2016 08:09:11 +0100 -Subject: [PATCH 253/290] drm,radeon,i915: Use preempt_disable/enable_rt() +Subject: [PATCH 254/291] 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=c97ee923e5c79bc31feaa16e0c6caef8245ed995 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz DRM folks identified the spots, so use them. @@ -55,3 +56,6 @@ index d8e2d7b3b836..072b831aaf4f 100644 /* Decode into vertical and horizontal scanout position. */ *vpos = position & 0x1fff; +-- +2.24.0 + diff --git a/debian/patches-rt/0254-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch b/debian/patches-rt/0255-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch similarity index 95% rename from debian/patches-rt/0254-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch rename to debian/patches-rt/0255-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch index acfc9a4f5..4465880be 100644 --- a/debian/patches-rt/0254-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch +++ b/debian/patches-rt/0255-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch @@ -1,8 +1,9 @@ +From 785c2be773a136f908fe9a9c79b5a9001d944863 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sat, 27 Feb 2016 09:01:42 +0100 -Subject: [PATCH 254/290] drm,i915: Use local_lock/unlock_irq() in +Subject: [PATCH 255/291] 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=fc3cde47b35c9aa69eb666ca9238a16704a072bf +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ 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 @@ -122,3 +123,6 @@ index f7026e887fa9..07e4ddebdd80 100644 if (intel_vgpu_active(dev_priv)) return; +-- +2.24.0 + diff --git a/debian/patches-rt/0255-drm-i915-disable-tracing-on-RT.patch b/debian/patches-rt/0256-drm-i915-disable-tracing-on-RT.patch similarity index 85% rename from debian/patches-rt/0255-drm-i915-disable-tracing-on-RT.patch rename to debian/patches-rt/0256-drm-i915-disable-tracing-on-RT.patch index a74d42648..569a744f5 100644 --- a/debian/patches-rt/0255-drm-i915-disable-tracing-on-RT.patch +++ b/debian/patches-rt/0256-drm-i915-disable-tracing-on-RT.patch @@ -1,7 +1,8 @@ +From aac61837f742b75e5a5c55a51c5dd1447678ce94 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 6 Dec 2018 09:52:20 +0100 -Subject: [PATCH 255/290] drm/i915: disable tracing on -RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=244c11638562d2a0d5cd78ece67c99293f93a069 +Subject: [PATCH 256/291] drm/i915: disable tracing on -RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Luca Abeni reported this: | BUG: scheduling while atomic: kworker/u8:2/15203/0x00000003 @@ -41,3 +42,6 @@ index b50c6b829715..cc54ec0ef75c 100644 #include #include #include +-- +2.24.0 + diff --git a/debian/patches-rt/0256-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch b/debian/patches-rt/0257-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch similarity index 81% rename from debian/patches-rt/0256-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch rename to debian/patches-rt/0257-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch index eeca0cb96..e23aa1440 100644 --- a/debian/patches-rt/0256-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch +++ b/debian/patches-rt/0257-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch @@ -1,8 +1,9 @@ +From a2fef8d1d6263aae8da507a9541155c6742d450e Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 19 Dec 2018 10:47:02 +0100 -Subject: [PATCH 256/290] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with +Subject: [PATCH 257/291] 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=847acb068749101352be88fb869b853c5c5c9150 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -27,3 +28,6 @@ index cc54ec0ef75c..33028d8f470e 100644 DEFINE_EVENT(i915_request, i915_request_submit, TP_PROTO(struct i915_request *rq), TP_ARGS(rq) +-- +2.24.0 + diff --git a/debian/patches-rt/0257-cgroups-use-simple-wait-in-css_release.patch b/debian/patches-rt/0258-cgroups-use-simple-wait-in-css_release.patch similarity index 93% rename from debian/patches-rt/0257-cgroups-use-simple-wait-in-css_release.patch rename to debian/patches-rt/0258-cgroups-use-simple-wait-in-css_release.patch index 3b21e61ef..46cfae0d3 100644 --- a/debian/patches-rt/0257-cgroups-use-simple-wait-in-css_release.patch +++ b/debian/patches-rt/0258-cgroups-use-simple-wait-in-css_release.patch @@ -1,7 +1,8 @@ +From c784b1f04341a1ba7c35171d718c31a9dab8be55 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 13 Feb 2015 15:52:24 +0100 -Subject: [PATCH 257/290] cgroups: use simple wait in css_release() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0e80b9d1ee1339d795d635a353e51fbbefad6ed5 +Subject: [PATCH 258/291] cgroups: use simple wait in css_release() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz To avoid: |BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914 @@ -89,3 +90,6 @@ index 78ef274b036e..30dd5754e62e 100644 return 0; } core_initcall(cgroup_wq_init); +-- +2.24.0 + diff --git a/debian/patches-rt/0258-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0259-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch similarity index 97% rename from debian/patches-rt/0258-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch rename to debian/patches-rt/0259-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch index 2bd2a7072..2c6cc8435 100644 --- a/debian/patches-rt/0258-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch +++ b/debian/patches-rt/0259-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch @@ -1,7 +1,8 @@ +From 2c047452f365a3b75ac631dc660650c8f1751179 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Sun, 8 Jan 2017 09:32:25 +0100 -Subject: [PATCH 258/290] cpuset: Convert callback_lock to raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b929bcca97d17ac7c7b56351098a97c990818c3b +Subject: [PATCH 259/291] cpuset: Convert callback_lock to raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The two commits below add up to a cpuset might_sleep() splat for RT: @@ -287,3 +288,6 @@ index 7bb129c5b412..92575cb9b493 100644 return allowed; } +-- +2.24.0 + diff --git a/debian/patches-rt/0259-apparmor-use-a-locallock-instead-preempt_disable.patch b/debian/patches-rt/0260-apparmor-use-a-locallock-instead-preempt_disable.patch similarity index 91% rename from debian/patches-rt/0259-apparmor-use-a-locallock-instead-preempt_disable.patch rename to debian/patches-rt/0260-apparmor-use-a-locallock-instead-preempt_disable.patch index d7fefe861..02407dbd2 100644 --- a/debian/patches-rt/0259-apparmor-use-a-locallock-instead-preempt_disable.patch +++ b/debian/patches-rt/0260-apparmor-use-a-locallock-instead-preempt_disable.patch @@ -1,7 +1,8 @@ +From f0bada02f7958bb98141c357108a4b641cb484d8 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 11 Oct 2017 17:43:49 +0200 -Subject: [PATCH 259/290] apparmor: use a locallock instead preempt_disable() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=32350fce319d81f4b6f402844b50d789ebb92796 +Subject: [PATCH 260/291] apparmor: use a locallock instead preempt_disable() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz 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 @@ -79,3 +80,6 @@ index 8b8b70620bbe..8330ef57a784 100644 /* * LSM hook functions +-- +2.24.0 + diff --git a/debian/patches-rt/0260-workqueue-Prevent-deadlock-stall-on-RT.patch b/debian/patches-rt/0261-workqueue-Prevent-deadlock-stall-on-RT.patch similarity index 95% rename from debian/patches-rt/0260-workqueue-Prevent-deadlock-stall-on-RT.patch rename to debian/patches-rt/0261-workqueue-Prevent-deadlock-stall-on-RT.patch index 86d871639..f25687394 100644 --- a/debian/patches-rt/0260-workqueue-Prevent-deadlock-stall-on-RT.patch +++ b/debian/patches-rt/0261-workqueue-Prevent-deadlock-stall-on-RT.patch @@ -1,7 +1,8 @@ +From fa2376bc9e75fa693838bafeee9e137d15ce156d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 27 Jun 2014 16:24:52 +0200 -Subject: [PATCH 260/290] workqueue: Prevent deadlock/stall on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2570b4e1c83da05d76ee298401f0e4c4d46428a1 +Subject: [PATCH 261/291] workqueue: Prevent deadlock/stall on RT +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Austin reported a XFS deadlock/stall on RT where scheduled work gets never exececuted and tasks are waiting for each other for ever. @@ -42,7 +43,7 @@ Cc: Steven Rostedt 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 538461ee8ebd..06abce7fef9e 100644 +index a17c765d3fcb..cfde725e1017 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3610,9 +3610,8 @@ void __noreturn do_task_dead(void) @@ -67,7 +68,7 @@ index 538461ee8ebd..06abce7fef9e 100644 * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index aa39924bd3b5..12137825bf5a 100644 +index 045b82ca0eb5..714d0cfe4d56 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -125,6 +125,11 @@ enum { @@ -201,3 +202,6 @@ index aa39924bd3b5..12137825bf5a 100644 worker->flags |= WORKER_DIE; wake_up_process(worker->task); } +-- +2.24.0 + diff --git a/debian/patches-rt/0261-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/debian/patches-rt/0262-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch similarity index 86% rename from debian/patches-rt/0261-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch rename to debian/patches-rt/0262-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch index 71adbcf7d..dc1ffff1c 100644 --- a/debian/patches-rt/0261-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/debian/patches-rt/0262-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -1,7 +1,8 @@ +From 7f0e567ea4f02992cfca0f9f6a3de374abbfe950 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:56 -0500 -Subject: [PATCH 261/290] 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=f72cd03b9416b342bf265ecdecb9c1071a6d0438 +Subject: [PATCH 262/291] signals: Allow rt tasks to cache one sigqueue struct +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -54,10 +55,10 @@ index e10de9836dd7..ac4ca468db84 100644 spin_unlock(&sighand->siglock); diff --git a/kernel/fork.c b/kernel/fork.c -index 652986ccb41c..6c4df21994f1 100644 +index 7399bff2e08d..9bcf8f5e77ae 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -1827,6 +1827,7 @@ static __latent_entropy struct task_struct *copy_process( +@@ -1822,6 +1822,7 @@ static __latent_entropy struct task_struct *copy_process( spin_lock_init(&p->alloc_lock); init_sigpending(&p->pending); @@ -66,7 +67,7 @@ index 652986ccb41c..6c4df21994f1 100644 p->utime = p->stime = p->gtime = 0; #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME diff --git a/kernel/signal.c b/kernel/signal.c -index 56edb0580a3a..ac32b4f41d24 100644 +index 3565221b4fac..c84f13dd8626 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -19,6 +19,7 @@ @@ -77,7 +78,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 #include #include #include -@@ -388,13 +389,30 @@ void task_join_group_stop(struct task_struct *task) +@@ -392,13 +393,30 @@ void task_join_group_stop(struct task_struct *task) } } @@ -109,7 +110,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 { struct sigqueue *q = NULL; struct user_struct *user; -@@ -411,7 +429,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi +@@ -415,7 +433,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi if (override_rlimit || atomic_read(&user->sigpending) <= task_rlimit(t, RLIMIT_SIGPENDING)) { @@ -121,7 +122,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 } else { print_dropped_signal(sig); } -@@ -428,6 +449,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi +@@ -432,6 +453,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi return q; } @@ -135,7 +136,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 static void __sigqueue_free(struct sigqueue *q) { if (q->flags & SIGQUEUE_PREALLOC) -@@ -437,6 +465,21 @@ static void __sigqueue_free(struct sigqueue *q) +@@ -441,6 +469,21 @@ static void __sigqueue_free(struct sigqueue *q) kmem_cache_free(sigqueue_cachep, q); } @@ -157,7 +158,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 void flush_sigqueue(struct sigpending *queue) { struct sigqueue *q; -@@ -449,6 +492,21 @@ void flush_sigqueue(struct sigpending *queue) +@@ -453,6 +496,21 @@ void flush_sigqueue(struct sigpending *queue) } } @@ -179,7 +180,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 /* * Flush all pending signals for this kthread. */ -@@ -572,7 +630,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info, +@@ -576,7 +634,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info, (info->si_code == SI_TIMER) && (info->si_sys_private); @@ -188,7 +189,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 } else { /* * Ok, it wasn't in the queue. This must be -@@ -609,6 +667,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) +@@ -613,6 +671,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) bool resched_timer = false; int signr; @@ -197,7 +198,7 @@ index 56edb0580a3a..ac32b4f41d24 100644 /* We only dequeue private signals from ourselves, we don't let * signalfd steal them */ -@@ -1747,7 +1807,8 @@ EXPORT_SYMBOL(kill_pid); +@@ -1751,7 +1811,8 @@ EXPORT_SYMBOL(kill_pid); */ struct sigqueue *sigqueue_alloc(void) { @@ -207,3 +208,6 @@ index 56edb0580a3a..ac32b4f41d24 100644 if (q) q->flags |= SIGQUEUE_PREALLOC; +-- +2.24.0 + diff --git a/debian/patches-rt/0262-Add-localversion-for-RT-release.patch b/debian/patches-rt/0263-Add-localversion-for-RT-release.patch similarity index 61% rename from debian/patches-rt/0262-Add-localversion-for-RT-release.patch rename to debian/patches-rt/0263-Add-localversion-for-RT-release.patch index dac47c4ee..4acd6e0c5 100644 --- a/debian/patches-rt/0262-Add-localversion-for-RT-release.patch +++ b/debian/patches-rt/0263-Add-localversion-for-RT-release.patch @@ -1,7 +1,8 @@ +From 788e830ac245b873667e03127778a1e39c081940 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 8 Jul 2011 20:25:16 +0200 -Subject: [PATCH 262/290] Add localversion for -RT release -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=93c0abfa50932dbc3f5c7a3a9a1043396d09aec2 +Subject: [PATCH 263/291] Add localversion for -RT release +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Signed-off-by: Thomas Gleixner --- @@ -16,3 +17,6 @@ index 000000000000..1199ebade17b +++ b/localversion-rt @@ -0,0 +1 @@ +-rt16 +-- +2.24.0 + diff --git a/debian/patches-rt/0263-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch b/debian/patches-rt/0264-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch similarity index 92% rename from debian/patches-rt/0263-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch rename to debian/patches-rt/0264-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch index 7155c5200..539deb646 100644 --- a/debian/patches-rt/0263-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch +++ b/debian/patches-rt/0264-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch @@ -1,8 +1,9 @@ +From a3c21bc732a9c3cac4e9c5cd71984a23c6245f4b Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 26 Mar 2019 18:31:54 +0100 -Subject: [PATCH 263/290] powerpc/pseries/iommu: Use a locallock instead +Subject: [PATCH 264/291] 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=45852db84c605cfc7fffb1df575cea2315523540 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The locallock protects the per-CPU variable tce_page. The function attempts to allocate memory while tce_page is protected (by disabling @@ -91,3 +92,6 @@ index 06f02960b439..d80d919c78d3 100644 return rc; } +-- +2.24.0 + diff --git a/debian/patches-rt/0264-powerpc-reshuffle-TIF-bits.patch b/debian/patches-rt/0265-powerpc-reshuffle-TIF-bits.patch similarity index 91% rename from debian/patches-rt/0264-powerpc-reshuffle-TIF-bits.patch rename to debian/patches-rt/0265-powerpc-reshuffle-TIF-bits.patch index a7a5ccc0b..4997aea06 100644 --- a/debian/patches-rt/0264-powerpc-reshuffle-TIF-bits.patch +++ b/debian/patches-rt/0265-powerpc-reshuffle-TIF-bits.patch @@ -1,7 +1,8 @@ +From aff70f8bee94f78bed99e1869e3ad09b2fa46b4f Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 22 Mar 2019 17:15:58 +0100 -Subject: [PATCH 264/290] powerpc: reshuffle TIF bits -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=02293a0f686ec8fb1f177452b08491a6a6fecbb3 +Subject: [PATCH 265/291] powerpc: reshuffle TIF bits +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Powerpc32/64 does not compile because TIF_SYSCALL_TRACE's bit is higher than 15 and the assembly instructions don't expect that. @@ -59,7 +60,7 @@ diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 3783f3ef17a4..44bcf1585bd1 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S -@@ -393,7 +393,9 @@ _GLOBAL(DoSyscall) +@@ -393,7 +393,9 @@ ret_from_syscall: MTMSRD(r10) lwz r9,TI_FLAGS(r12) li r8,-MAX_ERRNO @@ -70,7 +71,7 @@ index 3783f3ef17a4..44bcf1585bd1 100644 bne- syscall_exit_work cmplw 0,r3,r8 blt+ syscall_exit_cont -@@ -511,13 +513,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX) +@@ -511,13 +513,13 @@ syscall_dotrace: b syscall_dotrace_cont syscall_exit_work: @@ -86,7 +87,7 @@ index 3783f3ef17a4..44bcf1585bd1 100644 bne- 1f lwz r11,_CCR(r1) /* Load CR */ neg r3,r3 -@@ -526,12 +528,12 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX) +@@ -526,12 +528,12 @@ syscall_exit_work: 1: stw r6,RESULT(r1) /* Save result */ stw r3,GPR3(r1) /* Update return value */ @@ -102,10 +103,10 @@ index 3783f3ef17a4..44bcf1585bd1 100644 3: lwarx r8,0,r12 andc r8,r8,r11 diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S -index 7671fa5da9fa..fe713d014220 100644 +index ef02e41d5d96..229cdb04e9b0 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S -@@ -250,7 +250,9 @@ system_call: /* label this so stack traces look sane */ +@@ -250,7 +250,9 @@ system_call_exit: ld r9,TI_FLAGS(r12) li r11,-MAX_ERRNO @@ -146,3 +147,6 @@ index 7671fa5da9fa..fe713d014220 100644 addi r12,r12,TI_FLAGS 3: ldarx r10,0,r12 andc r10,r10,r11 +-- +2.24.0 + diff --git a/debian/patches-rt/0265-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch b/debian/patches-rt/0266-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch similarity index 89% rename from debian/patches-rt/0265-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch rename to debian/patches-rt/0266-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch index d4f781fb8..6dfa042f4 100644 --- a/debian/patches-rt/0265-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch +++ b/debian/patches-rt/0266-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch @@ -1,7 +1,8 @@ +From 115b14d042b6097575cefe15a96484bd8c9645f1 Mon Sep 17 00:00:00 2001 From: Julien Grall Date: Wed, 13 Mar 2019 11:40:34 +0000 -Subject: [PATCH 265/290] 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=a537a158fe895cd0a7726b68e73237244cdaa7bb +Subject: [PATCH 266/291] tty/sysrq: Convert show_lock to raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Systems which don't provide arch_trigger_cpumask_backtrace() will invoke showacpu() from a smp_call_function() function which is invoked @@ -57,3 +58,6 @@ index 06ed20dd01ba..627517ad55bf 100644 } static void sysrq_showregs_othercpus(struct work_struct *dummy) +-- +2.24.0 + diff --git a/debian/patches-rt/0266-drm-i915-Don-t-disable-interrupts-independently-of-t.patch b/debian/patches-rt/0267-drm-i915-Don-t-disable-interrupts-independently-of-t.patch similarity index 87% rename from debian/patches-rt/0266-drm-i915-Don-t-disable-interrupts-independently-of-t.patch rename to debian/patches-rt/0267-drm-i915-Don-t-disable-interrupts-independently-of-t.patch index 418e3ddd8..fb5a89c8e 100644 --- a/debian/patches-rt/0266-drm-i915-Don-t-disable-interrupts-independently-of-t.patch +++ b/debian/patches-rt/0267-drm-i915-Don-t-disable-interrupts-independently-of-t.patch @@ -1,8 +1,9 @@ +From 1fcf58002fe05189d169ca73b0bd25b86b35a62b Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 10 Apr 2019 11:01:37 +0200 -Subject: [PATCH 266/290] drm/i915: Don't disable interrupts independently of +Subject: [PATCH 267/291] 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=1fd04accf7d1da34be2d03a8cc9db0ba68c8cf9f +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz The locks (timeline->lock and rq->lock) need to be taken with disabled interrupts. This is done in __retire_engine_request() by disabling the @@ -45,3 +46,6 @@ index 5c2c93cbab12..7124510b9131 100644 /* * The backing object for the context is done after switching to the +-- +2.24.0 + diff --git a/debian/patches-rt/0267-sched-completion-Fix-a-lockup-in-wait_for_completion.patch b/debian/patches-rt/0268-sched-completion-Fix-a-lockup-in-wait_for_completion.patch similarity index 90% rename from debian/patches-rt/0267-sched-completion-Fix-a-lockup-in-wait_for_completion.patch rename to debian/patches-rt/0268-sched-completion-Fix-a-lockup-in-wait_for_completion.patch index 5fa81f8c1..3d0ddeb52 100644 --- a/debian/patches-rt/0267-sched-completion-Fix-a-lockup-in-wait_for_completion.patch +++ b/debian/patches-rt/0268-sched-completion-Fix-a-lockup-in-wait_for_completion.patch @@ -1,8 +1,9 @@ +From 0534f5057ab97ba26471e1f0cefe7caa983740cf Mon Sep 17 00:00:00 2001 From: Corey Minyard Date: Thu, 9 May 2019 14:33:20 -0500 -Subject: [PATCH 267/290] sched/completion: Fix a lockup in +Subject: [PATCH 268/291] 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=3a62fc3bb6b7ef809d6b55dfb8ef3563c5216df2 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Consider following race: @@ -63,3 +64,6 @@ index 755a58084978..49c14137988e 100644 __set_current_state(state); raw_spin_unlock_irq(&x->wait.lock); timeout = action(timeout); +-- +2.24.0 + diff --git a/debian/patches-rt/0268-kthread-add-a-global-worker-thread.patch b/debian/patches-rt/0269-kthread-add-a-global-worker-thread.patch similarity index 93% rename from debian/patches-rt/0268-kthread-add-a-global-worker-thread.patch rename to debian/patches-rt/0269-kthread-add-a-global-worker-thread.patch index 4d5232f3e..88e8e52ec 100644 --- a/debian/patches-rt/0268-kthread-add-a-global-worker-thread.patch +++ b/debian/patches-rt/0269-kthread-add-a-global-worker-thread.patch @@ -1,7 +1,8 @@ +From 35414a016c960673ce33fb6fafc6ef9485adbb3d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 12 Feb 2019 15:09:38 +0100 -Subject: [PATCH 268/290] kthread: add a global worker thread. -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9300291e699568258ebbabb1bbb8722cefaaa542 +Subject: [PATCH 269/291] kthread: add a global worker thread. +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 0532e87d9d44795221aa921ba7024bde689cc894 ] @@ -41,7 +42,7 @@ index 126c2c514673..b736cb6c6228 100644 #include #include diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c -index fdcf3076681b..b56619418cea 100644 +index 185bbdce62b1..63b10236eb05 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c @@ -22,6 +22,7 @@ @@ -131,10 +132,10 @@ index ad292898f7f2..7cf56eb54103 100644 + #endif /* _LINUX_KTHREAD_H */ diff --git a/init/main.c b/init/main.c -index 4a7471606e53..b0e95351c22c 100644 +index 6e02188386a7..e514dd93de76 100644 --- a/init/main.c +++ b/init/main.c -@@ -1130,6 +1130,7 @@ static noinline void __init kernel_init_freeable(void) +@@ -1129,6 +1129,7 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); @@ -174,3 +175,6 @@ index 5641b55783a6..9db017761a1f 100644 #ifdef CONFIG_BLK_CGROUP /** * kthread_associate_blkcg - associate blkcg to current kthread +-- +2.24.0 + diff --git a/debian/patches-rt/0269-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch b/debian/patches-rt/0270-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch similarity index 92% rename from debian/patches-rt/0269-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch rename to debian/patches-rt/0270-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch index be9bc6e8b..3bbb31d8f 100644 --- a/debian/patches-rt/0269-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch +++ b/debian/patches-rt/0270-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch @@ -1,8 +1,9 @@ +From ab2c28e7a35c5bf40f4017272bddb9a1fd8b79a0 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 21 Aug 2013 17:48:46 +0200 -Subject: [PATCH 269/290] genirq: Do not invoke the affinity callback via a +Subject: [PATCH 270/291] genirq: Do not invoke the affinity callback via a workqueue on RT -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8eeb2b164aeb9df1434b2bd622a69c654c4e5fd4 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 2122adbe011cdc0eb62ad62494e181005b23c76a ] @@ -95,3 +96,6 @@ index ce86341a9e19..d5539e04e00a 100644 #else INIT_WORK(¬ify->work, irq_affinity_notify); #endif +-- +2.24.0 + diff --git a/debian/patches-rt/0270-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch b/debian/patches-rt/0271-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch similarity index 83% rename from debian/patches-rt/0270-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch rename to debian/patches-rt/0271-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch index 72c9600ad..e49183a36 100644 --- a/debian/patches-rt/0270-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch +++ b/debian/patches-rt/0271-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch @@ -1,8 +1,9 @@ +From 24ce38930a7a5eec5a1e336c5a1728d818a2d85f Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 28 May 2019 10:42:15 +0200 -Subject: [PATCH 270/290] genirq: Handle missing work_struct in +Subject: [PATCH 271/291] genirq: Handle missing work_struct in irq_set_affinity_notifier() -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a03f41214e2dccb4d558c97bee856d5ba751de70 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit bbc4d2a7d6ff54ba923640d9a42c7bef7185fe98 ] @@ -36,3 +37,6 @@ index d5539e04e00a..290cd520dba1 100644 cancel_work_sync(&old_notify->work); #endif kref_put(&old_notify->kref, old_notify->release); +-- +2.24.0 + diff --git a/debian/patches-rt/0271-arm-imx6-cpuidle-Use-raw_spinlock_t.patch b/debian/patches-rt/0272-arm-imx6-cpuidle-Use-raw_spinlock_t.patch similarity index 85% rename from debian/patches-rt/0271-arm-imx6-cpuidle-Use-raw_spinlock_t.patch rename to debian/patches-rt/0272-arm-imx6-cpuidle-Use-raw_spinlock_t.patch index 0d00cb8c7..399448346 100644 --- a/debian/patches-rt/0271-arm-imx6-cpuidle-Use-raw_spinlock_t.patch +++ b/debian/patches-rt/0272-arm-imx6-cpuidle-Use-raw_spinlock_t.patch @@ -1,7 +1,8 @@ +From 08dc9f6cb9a0b7b837a095e54c495a23baaaa6d7 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 14 May 2019 17:07:44 +0200 -Subject: [PATCH 271/290] arm: imx6: cpuidle: Use raw_spinlock_t -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2d8fe8a09c2bd45f501d347d8fd685bc4e253f9 +Subject: [PATCH 272/291] arm: imx6: cpuidle: Use raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 40d0332ec8312e9c090f0a5414d9c90e12b13611 ] @@ -46,3 +47,6 @@ index 326e870d7123..d9ac80aa1eb0 100644 return index; } +-- +2.24.0 + diff --git a/debian/patches-rt/0272-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch b/debian/patches-rt/0273-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch similarity index 80% rename from debian/patches-rt/0272-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch rename to debian/patches-rt/0273-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch index a9b10e8ac..b62c45d6f 100644 --- a/debian/patches-rt/0272-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch +++ b/debian/patches-rt/0273-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch @@ -1,8 +1,9 @@ +From b435ef5b7327df4e3702ecdc5daadbada78f9369 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 24 Jun 2019 18:29:13 +0200 -Subject: [PATCH 272/290] rcu: Don't allow to change rcu_normal_after_boot on +Subject: [PATCH 273/291] 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=d907b0f62c7449b966af5924b51a0f409580d1b9 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit c6c058c10577815a2491ce661876cff00a4c3b15 ] @@ -30,3 +31,6 @@ index 16d8dba23329..ed75addd3ccd 100644 #endif /* #ifndef CONFIG_TINY_RCU */ #ifdef CONFIG_DEBUG_LOCK_ALLOC +-- +2.24.0 + diff --git a/debian/patches-rt/0273-pci-switchtec-fix-stream_open.cocci-warnings.patch b/debian/patches-rt/0274-pci-switchtec-fix-stream_open.cocci-warnings.patch similarity index 84% rename from debian/patches-rt/0273-pci-switchtec-fix-stream_open.cocci-warnings.patch rename to debian/patches-rt/0274-pci-switchtec-fix-stream_open.cocci-warnings.patch index 41f1e1029..a292b5f4f 100644 --- a/debian/patches-rt/0273-pci-switchtec-fix-stream_open.cocci-warnings.patch +++ b/debian/patches-rt/0274-pci-switchtec-fix-stream_open.cocci-warnings.patch @@ -1,7 +1,8 @@ +From da1d86bd82d486ac0eccf4879375131325cfceeb Mon Sep 17 00:00:00 2001 From: kbuild test robot Date: Sat, 13 Apr 2019 11:22:51 +0800 -Subject: [PATCH 273/290] pci/switchtec: fix stream_open.cocci warnings -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=163db421a90c12f33a0d3033405d56f8be864abb +Subject: [PATCH 274/291] pci/switchtec: fix stream_open.cocci warnings +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 9462c69e29307adc95c289f50839d5d683973891 ] @@ -34,3 +35,6 @@ index 77d4fb86d05b..ea70bc0b06e9 100644 dev_dbg(&stdev->dev, "%s: %p\n", __func__, stuser); +-- +2.24.0 + diff --git a/debian/patches-rt/0274-sched-core-Drop-a-preempt_disable_rt-statement.patch b/debian/patches-rt/0275-sched-core-Drop-a-preempt_disable_rt-statement.patch similarity index 80% rename from debian/patches-rt/0274-sched-core-Drop-a-preempt_disable_rt-statement.patch rename to debian/patches-rt/0275-sched-core-Drop-a-preempt_disable_rt-statement.patch index 70fbac4b0..c9921cb2f 100644 --- a/debian/patches-rt/0274-sched-core-Drop-a-preempt_disable_rt-statement.patch +++ b/debian/patches-rt/0275-sched-core-Drop-a-preempt_disable_rt-statement.patch @@ -1,7 +1,8 @@ +From 8fd3977bc6d2f1c17d0265e4c6dd068fd92f6496 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 24 Jun 2019 19:33:16 +0200 -Subject: [PATCH 274/290] sched/core: Drop a preempt_disable_rt() statement -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5f5a0dcfddf4d7c1d2b7c1380024986d3bbfccb7 +Subject: [PATCH 275/291] sched/core: Drop a preempt_disable_rt() statement +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 761126efdcbe3fa3e99c9079fa0ad6eca2f251f2 ] @@ -15,7 +16,7 @@ Signed-off-by: Steven Rostedt (VMware) 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 06abce7fef9e..fab44ac4e1dd 100644 +index cfde725e1017..678c2c4de4f5 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -558,14 +558,11 @@ void resched_cpu(int cpu) @@ -44,3 +45,6 @@ index 06abce7fef9e..fab44ac4e1dd 100644 return cpu; } +-- +2.24.0 + diff --git a/debian/patches-rt/0275-timers-Redo-the-notification-of-canceling-timers-on-.patch b/debian/patches-rt/0276-timers-Redo-the-notification-of-canceling-timers-on-.patch similarity index 98% rename from debian/patches-rt/0275-timers-Redo-the-notification-of-canceling-timers-on-.patch rename to debian/patches-rt/0276-timers-Redo-the-notification-of-canceling-timers-on-.patch index 2a5b3383c..7ecf1d8b6 100644 --- a/debian/patches-rt/0275-timers-Redo-the-notification-of-canceling-timers-on-.patch +++ b/debian/patches-rt/0276-timers-Redo-the-notification-of-canceling-timers-on-.patch @@ -1,8 +1,9 @@ +From ae13fb29f5523922e3d9225f77e11438b2e67e5f Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 24 Jun 2019 19:39:06 +0200 -Subject: [PATCH 275/290] timers: Redo the notification of canceling timers on +Subject: [PATCH 276/291] 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=fa4d144249a94725f03c3af4680ea73861dbf2ff +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit c71273154c2ad12e13333aada340ff30e826a11b ] @@ -644,3 +645,6 @@ index 2fcd56aa6092..1c67aab34ff5 100644 } } +-- +2.24.0 + diff --git a/debian/patches-rt/0276-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch b/debian/patches-rt/0277-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch similarity index 70% rename from debian/patches-rt/0276-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch rename to debian/patches-rt/0277-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch index 81cf91fd9..db31da1b9 100644 --- a/debian/patches-rt/0276-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch +++ b/debian/patches-rt/0277-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch @@ -1,8 +1,9 @@ +From 8c5cb8bd56f374c4c457135d4fcfc381b188ef10 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 26 Jun 2019 17:44:13 +0200 -Subject: [PATCH 276/290] Revert "futex: Ensure lock/unlock symetry versus +Subject: [PATCH 277/291] 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=cf2d016887fc80fdc7b517711849d31904430e8a +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 6a773b70cf105b46298ed3b44e77c102ce31d9ec ] @@ -16,10 +17,10 @@ Signed-off-by: Steven Rostedt (VMware) 1 file changed, 2 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index fe90164aa6ec..a58af833bb77 100644 +index 4c448dddce3c..38f53b95e370 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -918,9 +918,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -921,9 +921,7 @@ void exit_pi_state_list(struct task_struct *curr) if (head->next != next) { /* retain curr->pi_lock for the loop invariant */ raw_spin_unlock(&pi_state->pi_mutex.wait_lock); @@ -29,3 +30,6 @@ index fe90164aa6ec..a58af833bb77 100644 put_pi_state(pi_state); continue; } +-- +2.24.0 + diff --git a/debian/patches-rt/0277-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch b/debian/patches-rt/0278-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch similarity index 92% rename from debian/patches-rt/0277-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch rename to debian/patches-rt/0278-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch index 34f212564..cc2850659 100644 --- a/debian/patches-rt/0277-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch +++ b/debian/patches-rt/0278-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch @@ -1,8 +1,9 @@ +From af756c450ec6349537450c776e7035c58bafe885 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 26 Jun 2019 17:44:18 +0200 -Subject: [PATCH 277/290] Revert "futex: Fix bug on when a requeued RT task +Subject: [PATCH 278/291] 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=127082c7aefaa73f80f77516af1fdd5037660c56 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit f1a170cb3289a48df26cae3c60d77608f7a988bb ] @@ -77,3 +78,6 @@ index 546aaf058b9e..a501f3b47081 100644 extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, +-- +2.24.0 + diff --git a/debian/patches-rt/0278-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch b/debian/patches-rt/0279-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch similarity index 92% rename from debian/patches-rt/0278-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch rename to debian/patches-rt/0279-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch index 4d72d2af2..08582178c 100644 --- a/debian/patches-rt/0278-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch +++ b/debian/patches-rt/0279-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch @@ -1,8 +1,9 @@ +From fa2cd98252cd50c877bc1ba85328ac3222cc4790 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 26 Jun 2019 17:44:21 +0200 -Subject: [PATCH 278/290] Revert "rtmutex: Handle the various new futex race +Subject: [PATCH 279/291] 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=1d0a4cd097d5b50ac88a0cc66b53947112296d4b +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 9e0265c21af4d6388d47dcd5ce20f76ec3a2e468 ] @@ -18,10 +19,10 @@ Signed-off-by: Steven Rostedt (VMware) 3 files changed, 21 insertions(+), 94 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index a58af833bb77..1d9423914bf4 100644 +index 38f53b95e370..6ee55df4f3de 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2147,16 +2147,6 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -2150,16 +2150,6 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -38,7 +39,7 @@ index a58af833bb77..1d9423914bf4 100644 } else if (ret) { /* * rt_mutex_start_proxy_lock() detected a -@@ -3235,7 +3225,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3238,7 +3228,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, struct hrtimer_sleeper timeout, *to = NULL; struct futex_pi_state *pi_state = NULL; struct rt_mutex_waiter rt_waiter; @@ -47,7 +48,7 @@ index a58af833bb77..1d9423914bf4 100644 union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -3293,55 +3283,20 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3296,55 +3286,20 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -114,7 +115,7 @@ index a58af833bb77..1d9423914bf4 100644 /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -3350,8 +3305,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3353,8 +3308,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -124,7 +125,7 @@ index a58af833bb77..1d9423914bf4 100644 ret = fixup_pi_state_owner(uaddr2, &q, current); if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { pi_state = q.pi_state; -@@ -3362,7 +3316,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3365,7 +3319,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); @@ -133,7 +134,7 @@ index a58af833bb77..1d9423914bf4 100644 } } else { struct rt_mutex *pi_mutex; -@@ -3376,8 +3330,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3379,8 +3333,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_wait_proxy_lock(pi_mutex, to, &rt_waiter); @@ -252,3 +253,6 @@ index a501f3b47081..758dc43872e5 100644 extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner); +-- +2.24.0 + diff --git a/debian/patches-rt/0279-Revert-futex-workaround-migrate_disable-enable-in-di.patch b/debian/patches-rt/0280-Revert-futex-workaround-migrate_disable-enable-in-di.patch similarity index 80% rename from debian/patches-rt/0279-Revert-futex-workaround-migrate_disable-enable-in-di.patch rename to debian/patches-rt/0280-Revert-futex-workaround-migrate_disable-enable-in-di.patch index cbc70f116..65784611c 100644 --- a/debian/patches-rt/0279-Revert-futex-workaround-migrate_disable-enable-in-di.patch +++ b/debian/patches-rt/0280-Revert-futex-workaround-migrate_disable-enable-in-di.patch @@ -1,8 +1,9 @@ +From b36c54f0704e987db1b75e2b4a9263d884938e34 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 26 Jun 2019 17:44:27 +0200 -Subject: [PATCH 279/290] Revert "futex: workaround migrate_disable/enable in +Subject: [PATCH 280/291] 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=bdc746779fff787b4f505ee627699bc93b6446f0 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit a71221d81cc4873891ae44f3aa02df596079b786 ] @@ -16,10 +17,10 @@ Signed-off-by: Steven Rostedt (VMware) 1 file changed, 19 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 1d9423914bf4..54ffc25183ed 100644 +index 6ee55df4f3de..f636dcc706ec 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2875,14 +2875,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2878,14 +2878,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, * before __rt_mutex_start_proxy_lock() is done. */ raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock); @@ -34,7 +35,7 @@ index 1d9423914bf4..54ffc25183ed 100644 spin_unlock(q.lock_ptr); /* * __rt_mutex_start_proxy_lock() unconditionally enqueues the @rt_waiter -@@ -2891,7 +2883,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2894,7 +2886,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, */ ret = __rt_mutex_start_proxy_lock(&q.pi_state->pi_mutex, &rt_waiter, current); raw_spin_unlock_irq(&q.pi_state->pi_mutex.wait_lock); @@ -42,7 +43,7 @@ index 1d9423914bf4..54ffc25183ed 100644 if (ret) { if (ret == 1) -@@ -3040,21 +3031,11 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3043,21 +3034,11 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) * rt_waiter. Also see the WARN in wake_futex_pi(). */ raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); @@ -64,3 +65,6 @@ index 1d9423914bf4..54ffc25183ed 100644 put_pi_state(pi_state); /* +-- +2.24.0 + diff --git a/debian/patches-rt/0280-futex-Make-the-futex_hash_bucket-lock-raw.patch b/debian/patches-rt/0281-futex-Make-the-futex_hash_bucket-lock-raw.patch similarity index 82% rename from debian/patches-rt/0280-futex-Make-the-futex_hash_bucket-lock-raw.patch rename to debian/patches-rt/0281-futex-Make-the-futex_hash_bucket-lock-raw.patch index 4596bdb15..fe3a6bd83 100644 --- a/debian/patches-rt/0280-futex-Make-the-futex_hash_bucket-lock-raw.patch +++ b/debian/patches-rt/0281-futex-Make-the-futex_hash_bucket-lock-raw.patch @@ -1,7 +1,8 @@ +From d73187f5c331f9f934aba2752fc2bd9167b65fa1 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 26 Jun 2019 11:59:44 +0200 -Subject: [PATCH 280/290] futex: Make the futex_hash_bucket lock raw -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1ed021119af7d543fc60797dcb48f365e579d40 +Subject: [PATCH 281/291] futex: Make the futex_hash_bucket lock raw +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit f646521aadedab78801c9befe193e2e8a0c99298 ] @@ -22,10 +23,10 @@ Signed-off-by: Steven Rostedt (VMware) 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index 54ffc25183ed..b02d9969330b 100644 +index f636dcc706ec..a9d9283605e5 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -240,7 +240,7 @@ struct futex_q { +@@ -243,7 +243,7 @@ struct futex_q { struct plist_node list; struct task_struct *task; @@ -34,7 +35,7 @@ index 54ffc25183ed..b02d9969330b 100644 union futex_key key; struct futex_pi_state *pi_state; struct rt_mutex_waiter *rt_waiter; -@@ -261,7 +261,7 @@ static const struct futex_q futex_q_init = { +@@ -264,7 +264,7 @@ static const struct futex_q futex_q_init = { */ struct futex_hash_bucket { atomic_t waiters; @@ -43,7 +44,7 @@ index 54ffc25183ed..b02d9969330b 100644 struct plist_head chain; } ____cacheline_aligned_in_smp; -@@ -908,7 +908,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -911,7 +911,7 @@ void exit_pi_state_list(struct task_struct *curr) } raw_spin_unlock_irq(&curr->pi_lock); @@ -52,7 +53,7 @@ index 54ffc25183ed..b02d9969330b 100644 raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); raw_spin_lock(&curr->pi_lock); /* -@@ -918,7 +918,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -921,7 +921,7 @@ void exit_pi_state_list(struct task_struct *curr) if (head->next != next) { /* retain curr->pi_lock for the loop invariant */ raw_spin_unlock(&pi_state->pi_mutex.wait_lock); @@ -61,7 +62,7 @@ index 54ffc25183ed..b02d9969330b 100644 put_pi_state(pi_state); continue; } -@@ -930,7 +930,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -933,7 +933,7 @@ void exit_pi_state_list(struct task_struct *curr) raw_spin_unlock(&curr->pi_lock); raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); @@ -70,7 +71,7 @@ index 54ffc25183ed..b02d9969330b 100644 rt_mutex_futex_unlock(&pi_state->pi_mutex); put_pi_state(pi_state); -@@ -1424,7 +1424,7 @@ static void __unqueue_futex(struct futex_q *q) +@@ -1427,7 +1427,7 @@ static void __unqueue_futex(struct futex_q *q) { struct futex_hash_bucket *hb; @@ -79,7 +80,7 @@ index 54ffc25183ed..b02d9969330b 100644 || WARN_ON(plist_node_empty(&q->list))) return; -@@ -1552,21 +1552,21 @@ static inline void +@@ -1555,21 +1555,21 @@ static inline void double_lock_hb(struct futex_hash_bucket *hb1, struct futex_hash_bucket *hb2) { if (hb1 <= hb2) { @@ -107,7 +108,7 @@ index 54ffc25183ed..b02d9969330b 100644 } /* -@@ -1594,7 +1594,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset) +@@ -1597,7 +1597,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset) if (!hb_waiters_pending(hb)) goto out_put_key; @@ -116,7 +117,7 @@ index 54ffc25183ed..b02d9969330b 100644 plist_for_each_entry_safe(this, next, &hb->chain, list) { if (match_futex (&this->key, &key)) { -@@ -1613,7 +1613,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset) +@@ -1616,7 +1616,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset) } } @@ -125,7 +126,7 @@ index 54ffc25183ed..b02d9969330b 100644 wake_up_q(&wake_q); out_put_key: put_futex_key(&key); -@@ -2218,7 +2218,7 @@ static inline struct futex_hash_bucket *queue_lock(struct futex_q *q) +@@ -2221,7 +2221,7 @@ static inline struct futex_hash_bucket *queue_lock(struct futex_q *q) q->lock_ptr = &hb->lock; @@ -134,7 +135,7 @@ index 54ffc25183ed..b02d9969330b 100644 return hb; } -@@ -2226,7 +2226,7 @@ static inline void +@@ -2229,7 +2229,7 @@ static inline void queue_unlock(struct futex_hash_bucket *hb) __releases(&hb->lock) { @@ -143,7 +144,7 @@ index 54ffc25183ed..b02d9969330b 100644 hb_waiters_dec(hb); } -@@ -2265,7 +2265,7 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb) +@@ -2268,7 +2268,7 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb) __releases(&hb->lock) { __queue_me(q, hb); @@ -152,7 +153,7 @@ index 54ffc25183ed..b02d9969330b 100644 } /** -@@ -2281,41 +2281,41 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb) +@@ -2284,41 +2284,41 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb) */ static int unqueue_me(struct futex_q *q) { @@ -205,7 +206,7 @@ index 54ffc25183ed..b02d9969330b 100644 ret = 1; } -@@ -2337,7 +2337,7 @@ static void unqueue_me_pi(struct futex_q *q) +@@ -2340,7 +2340,7 @@ static void unqueue_me_pi(struct futex_q *q) put_pi_state(q->pi_state); q->pi_state = NULL; @@ -214,7 +215,7 @@ index 54ffc25183ed..b02d9969330b 100644 } static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, -@@ -2470,7 +2470,7 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, +@@ -2473,7 +2473,7 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, */ handle_err: raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); @@ -223,7 +224,7 @@ index 54ffc25183ed..b02d9969330b 100644 switch (err) { case -EFAULT: -@@ -2488,7 +2488,7 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, +@@ -2491,7 +2491,7 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, break; } @@ -232,7 +233,7 @@ index 54ffc25183ed..b02d9969330b 100644 raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); /* -@@ -2584,7 +2584,7 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q, +@@ -2587,7 +2587,7 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q, /* * The task state is guaranteed to be set before another task can * wake it. set_current_state() is implemented using smp_store_mb() and @@ -241,7 +242,7 @@ index 54ffc25183ed..b02d9969330b 100644 * access to the hash list and forcing another memory barrier. */ set_current_state(TASK_INTERRUPTIBLE); -@@ -2875,7 +2875,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2878,7 +2878,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, * before __rt_mutex_start_proxy_lock() is done. */ raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock); @@ -250,7 +251,7 @@ index 54ffc25183ed..b02d9969330b 100644 /* * __rt_mutex_start_proxy_lock() unconditionally enqueues the @rt_waiter * such that futex_unlock_pi() is guaranteed to observe the waiter when -@@ -2896,7 +2896,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, +@@ -2899,7 +2899,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, ret = rt_mutex_wait_proxy_lock(&q.pi_state->pi_mutex, to, &rt_waiter); cleanup: @@ -259,7 +260,7 @@ index 54ffc25183ed..b02d9969330b 100644 /* * If we failed to acquire the lock (deadlock/signal/timeout), we must * first acquire the hb->lock before removing the lock from the -@@ -2997,7 +2997,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3000,7 +3000,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) return ret; hb = hash_futex(&key); @@ -268,7 +269,7 @@ index 54ffc25183ed..b02d9969330b 100644 /* * Check waiters first. We do not trust user space values at -@@ -3031,7 +3031,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3034,7 +3034,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) * rt_waiter. Also see the WARN in wake_futex_pi(). */ raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); @@ -277,7 +278,7 @@ index 54ffc25183ed..b02d9969330b 100644 /* drops pi_state->pi_mutex.wait_lock */ ret = wake_futex_pi(uaddr, uval, pi_state); -@@ -3070,7 +3070,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3073,7 +3073,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) * owner. */ if ((ret = cmpxchg_futex_value_locked(&curval, uaddr, uval, 0))) { @@ -286,7 +287,7 @@ index 54ffc25183ed..b02d9969330b 100644 switch (ret) { case -EFAULT: goto pi_faulted; -@@ -3090,7 +3090,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -3093,7 +3093,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) ret = (curval == uval) ? 0 : -EAGAIN; out_unlock: @@ -295,7 +296,7 @@ index 54ffc25183ed..b02d9969330b 100644 out_putkey: put_futex_key(&key); return ret; -@@ -3264,9 +3264,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3267,9 +3267,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -307,7 +308,7 @@ index 54ffc25183ed..b02d9969330b 100644 if (ret) goto out_put_keys; -@@ -3286,7 +3286,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3289,7 +3289,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -316,7 +317,7 @@ index 54ffc25183ed..b02d9969330b 100644 ret = fixup_pi_state_owner(uaddr2, &q, current); if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { pi_state = q.pi_state; -@@ -3297,7 +3297,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3300,7 +3300,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); @@ -325,7 +326,7 @@ index 54ffc25183ed..b02d9969330b 100644 } } else { struct rt_mutex *pi_mutex; -@@ -3311,7 +3311,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3314,7 +3314,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_wait_proxy_lock(pi_mutex, to, &rt_waiter); @@ -334,7 +335,7 @@ index 54ffc25183ed..b02d9969330b 100644 if (ret && !rt_mutex_cleanup_proxy_lock(pi_mutex, &rt_waiter)) ret = 0; -@@ -3748,7 +3748,7 @@ static int __init futex_init(void) +@@ -3981,7 +3981,7 @@ static int __init futex_init(void) for (i = 0; i < futex_hashsize; i++) { atomic_set(&futex_queues[i].waiters, 0); plist_head_init(&futex_queues[i].chain); @@ -343,3 +344,6 @@ index 54ffc25183ed..b02d9969330b 100644 } return 0; +-- +2.24.0 + diff --git a/debian/patches-rt/0281-futex-Delay-deallocation-of-pi_state.patch b/debian/patches-rt/0282-futex-Delay-deallocation-of-pi_state.patch similarity index 79% rename from debian/patches-rt/0281-futex-Delay-deallocation-of-pi_state.patch rename to debian/patches-rt/0282-futex-Delay-deallocation-of-pi_state.patch index 6f71ffbe2..d6dac91b8 100644 --- a/debian/patches-rt/0281-futex-Delay-deallocation-of-pi_state.patch +++ b/debian/patches-rt/0282-futex-Delay-deallocation-of-pi_state.patch @@ -1,7 +1,8 @@ +From 63bc94c5db7ef86bc33b4a829dfd42cd98d18f62 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 26 Jun 2019 13:35:36 +0200 -Subject: [PATCH 281/290] futex: Delay deallocation of pi_state -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=49d0177d9457d5012cea7a5fa82bd1cb01ab319a +Subject: [PATCH 282/291] futex: Delay deallocation of pi_state +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit d7c7cf8cb68b7df17e6e50be1f25f35d83e686c7 ] @@ -17,10 +18,10 @@ Signed-off-by: Steven Rostedt (VMware) 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c -index b02d9969330b..688b6fcb79cb 100644 +index a9d9283605e5..0b8cff8d9162 100644 --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -822,13 +822,13 @@ static void get_pi_state(struct futex_pi_state *pi_state) +@@ -825,13 +825,13 @@ static void get_pi_state(struct futex_pi_state *pi_state) * Drops a reference to the pi_state object and frees or caches it * when the last reference is gone. */ @@ -37,7 +38,7 @@ index b02d9969330b..688b6fcb79cb 100644 /* * If pi_state->owner is NULL, the owner is most probably dying -@@ -848,9 +848,7 @@ static void put_pi_state(struct futex_pi_state *pi_state) +@@ -851,9 +851,7 @@ static void put_pi_state(struct futex_pi_state *pi_state) raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); } @@ -48,7 +49,7 @@ index b02d9969330b..688b6fcb79cb 100644 /* * pi_state->list is already empty. * clear pi_state->owner. -@@ -859,6 +857,30 @@ static void put_pi_state(struct futex_pi_state *pi_state) +@@ -862,6 +860,30 @@ static void put_pi_state(struct futex_pi_state *pi_state) pi_state->owner = NULL; atomic_set(&pi_state->refcount, 1); current->pi_state_cache = pi_state; @@ -79,7 +80,7 @@ index b02d9969330b..688b6fcb79cb 100644 } } -@@ -875,6 +897,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -878,6 +900,7 @@ void exit_pi_state_list(struct task_struct *curr) struct futex_pi_state *pi_state; struct futex_hash_bucket *hb; union futex_key key = FUTEX_KEY_INIT; @@ -87,7 +88,7 @@ index b02d9969330b..688b6fcb79cb 100644 if (!futex_cmpxchg_enabled) return; -@@ -919,7 +942,7 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -922,7 +945,7 @@ void exit_pi_state_list(struct task_struct *curr) /* retain curr->pi_lock for the loop invariant */ raw_spin_unlock(&pi_state->pi_mutex.wait_lock); raw_spin_unlock(&hb->lock); @@ -96,7 +97,7 @@ index b02d9969330b..688b6fcb79cb 100644 continue; } -@@ -938,6 +961,8 @@ void exit_pi_state_list(struct task_struct *curr) +@@ -941,6 +964,8 @@ void exit_pi_state_list(struct task_struct *curr) raw_spin_lock_irq(&curr->pi_lock); } raw_spin_unlock_irq(&curr->pi_lock); @@ -105,7 +106,7 @@ index b02d9969330b..688b6fcb79cb 100644 } #endif -@@ -1920,6 +1945,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -1923,6 +1948,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, struct futex_hash_bucket *hb1, *hb2; struct futex_q *this, *next; DEFINE_WAKE_Q(wake_q); @@ -113,7 +114,7 @@ index b02d9969330b..688b6fcb79cb 100644 if (nr_wake < 0 || nr_requeue < 0) return -EINVAL; -@@ -2157,7 +2183,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -2160,7 +2186,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, * object. */ this->pi_state = NULL; @@ -122,7 +123,7 @@ index b02d9969330b..688b6fcb79cb 100644 /* * We stop queueing more waiters and let user * space deal with the mess. -@@ -2174,7 +2200,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -2177,7 +2203,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, * in futex_proxy_trylock_atomic() or in lookup_pi_state(). We * need to drop it here again. */ @@ -131,7 +132,7 @@ index b02d9969330b..688b6fcb79cb 100644 out_unlock: double_unlock_hb(hb1, hb2); -@@ -2195,6 +2221,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, +@@ -2198,6 +2224,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags, out_put_key1: put_futex_key(&key1); out: @@ -139,7 +140,7 @@ index b02d9969330b..688b6fcb79cb 100644 return ret ? ret : task_count; } -@@ -2331,13 +2358,16 @@ static int unqueue_me(struct futex_q *q) +@@ -2334,13 +2361,16 @@ static int unqueue_me(struct futex_q *q) static void unqueue_me_pi(struct futex_q *q) __releases(q->lock_ptr) { @@ -157,7 +158,7 @@ index b02d9969330b..688b6fcb79cb 100644 } static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, -@@ -3286,6 +3316,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3289,6 +3319,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -166,7 +167,7 @@ index b02d9969330b..688b6fcb79cb 100644 raw_spin_lock(q.lock_ptr); ret = fixup_pi_state_owner(uaddr2, &q, current); if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { -@@ -3296,8 +3328,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, +@@ -3299,8 +3331,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * Drop the reference to the pi state which * the requeue_pi() code acquired for us. */ @@ -177,3 +178,6 @@ index b02d9969330b..688b6fcb79cb 100644 } } else { struct rt_mutex *pi_mutex; +-- +2.24.0 + diff --git a/debian/patches-rt/0282-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch b/debian/patches-rt/0283-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch similarity index 94% rename from debian/patches-rt/0282-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch rename to debian/patches-rt/0283-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch index 1b798af67..f54b52893 100644 --- a/debian/patches-rt/0282-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch +++ b/debian/patches-rt/0283-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch @@ -1,8 +1,9 @@ +From a1308f6a02e92b6b455b6b6bcde6d735c79dd596 Mon Sep 17 00:00:00 2001 From: "Luis Claudio R. Goncalves" Date: Tue, 25 Jun 2019 11:28:04 -0300 -Subject: [PATCH 282/290] mm/zswap: Do not disable preemption in +Subject: [PATCH 283/291] 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=462f06ccfcce395acd6e89f8b9d9a91bd924750c +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 4e4cf4be79635e67144632d9135286381acbc95a ] @@ -121,3 +122,6 @@ index cd91fd9d96b8..420225d3ff0b 100644 zswap_pool_put(entry->pool); freepage: zswap_entry_cache_free(entry); +-- +2.24.0 + diff --git a/debian/patches-rt/0283-revert-aio.patch b/debian/patches-rt/0284-revert-aio.patch similarity index 90% rename from debian/patches-rt/0283-revert-aio.patch rename to debian/patches-rt/0284-revert-aio.patch index c066985e3..0bcb83324 100644 --- a/debian/patches-rt/0283-revert-aio.patch +++ b/debian/patches-rt/0284-revert-aio.patch @@ -1,7 +1,8 @@ +From 0092d3788162ae23f79da22eee6b007d1e8182d1 Mon Sep 17 00:00:00 2001 From: "Steven Rostedt (VMware)" Date: Fri, 20 Sep 2019 17:50:53 -0400 -Subject: [PATCH 283/290] revert-aio -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f2fbada945e3ef792e7e82ba32e222e752a0a88a +Subject: [PATCH 284/291] revert-aio +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz revert: fs/aio: simple simple work @@ -65,3 +66,6 @@ index 16dcf8521c2c..911e23087dfb 100644 static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm) { unsigned i, new_nr; +-- +2.24.0 + diff --git a/debian/patches-rt/0284-fs-aio-simple-simple-work.patch b/debian/patches-rt/0285-fs-aio-simple-simple-work.patch similarity index 91% rename from debian/patches-rt/0284-fs-aio-simple-simple-work.patch rename to debian/patches-rt/0285-fs-aio-simple-simple-work.patch index cc84a6433..7776d8309 100644 --- a/debian/patches-rt/0284-fs-aio-simple-simple-work.patch +++ b/debian/patches-rt/0285-fs-aio-simple-simple-work.patch @@ -1,7 +1,8 @@ +From 666ad455d0e524e934cb8511cd49e719f407cd20 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 16 Feb 2015 18:49:10 +0100 -Subject: [PATCH 284/290] fs/aio: simple simple work -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=06079632e222f342e079d8f4d5cddc3944f99913 +Subject: [PATCH 285/291] fs/aio: simple simple work +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 1a142116f6435ef070ecebb66d2d599507c10601 ] @@ -70,3 +71,6 @@ index 911e23087dfb..0c613d805bf1 100644 static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm) { unsigned i, new_nr; +-- +2.24.0 + diff --git a/debian/patches-rt/0285-revert-thermal.patch b/debian/patches-rt/0286-revert-thermal.patch similarity index 93% rename from debian/patches-rt/0285-revert-thermal.patch rename to debian/patches-rt/0286-revert-thermal.patch index d1c3911e0..24199a123 100644 --- a/debian/patches-rt/0285-revert-thermal.patch +++ b/debian/patches-rt/0286-revert-thermal.patch @@ -1,7 +1,8 @@ +From fba0ba87a4ce35205358678456f7d79471f13f83 Mon Sep 17 00:00:00 2001 From: "Steven Rostedt (VMware)" Date: Fri, 20 Sep 2019 17:50:53 -0400 -Subject: [PATCH 285/290] revert-thermal -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aed786370d98d846df0ae73df3467f288a7debe0 +Subject: [PATCH 286/291] revert-thermal +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Revert: thermal: Defer thermal wakups to threads @@ -114,3 +115,6 @@ index a5991cbb408f..1ef937d799e4 100644 } module_exit(pkg_temp_thermal_exit) +-- +2.24.0 + diff --git a/debian/patches-rt/0286-thermal-Defer-thermal-wakups-to-threads.patch b/debian/patches-rt/0287-thermal-Defer-thermal-wakups-to-threads.patch similarity index 92% rename from debian/patches-rt/0286-thermal-Defer-thermal-wakups-to-threads.patch rename to debian/patches-rt/0287-thermal-Defer-thermal-wakups-to-threads.patch index 7ceb1d946..4d50a3d63 100644 --- a/debian/patches-rt/0286-thermal-Defer-thermal-wakups-to-threads.patch +++ b/debian/patches-rt/0287-thermal-Defer-thermal-wakups-to-threads.patch @@ -1,7 +1,8 @@ +From e52aa2997c6112b1963e5a66ea9e2399cf47e6f7 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Tue, 17 Feb 2015 09:37:44 +0100 -Subject: [PATCH 286/290] thermal: Defer thermal wakups to threads -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7d01bb1ab8d1c56ea8368b9bea790bbbfec73d1b +Subject: [PATCH 287/291] thermal: Defer thermal wakups to threads +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit ad2408dc248fe58536eef5b2b5734d8f9d3a280b ] @@ -92,3 +93,6 @@ index 1ef937d799e4..82f21fd4afb0 100644 debugfs_remove_recursive(debugfs); kfree(packages); } +-- +2.24.0 + diff --git a/debian/patches-rt/0287-revert-block.patch b/debian/patches-rt/0288-revert-block.patch similarity index 83% rename from debian/patches-rt/0287-revert-block.patch rename to debian/patches-rt/0288-revert-block.patch index 2e5a171b9..c8b4870b8 100644 --- a/debian/patches-rt/0287-revert-block.patch +++ b/debian/patches-rt/0288-revert-block.patch @@ -1,7 +1,8 @@ +From 6247f134fb645892c20cc453043839b77507d2a4 Mon Sep 17 00:00:00 2001 From: "Steven Rostedt (VMware)" Date: Fri, 20 Sep 2019 17:50:54 -0400 -Subject: [PATCH 287/290] revert-block -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9cd549c202419d8738748fcd99688ad1d62aed2f +Subject: [PATCH 288/291] revert-block +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz Revert swork version of: block: blk-mq: move blk_queue_usage_counter_release() into process context @@ -14,10 +15,10 @@ Signed-off-by: Steven Rostedt (VMware) 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 06fcd081696e..0edb346263b8 100644 +index 13bf37156bb0..4860cd26cd5a 100644 --- a/block/blk-core.c +++ b/block/blk-core.c -@@ -970,21 +970,12 @@ void blk_queue_exit(struct request_queue *q) +@@ -973,21 +973,12 @@ void blk_queue_exit(struct request_queue *q) percpu_ref_put(&q->q_usage_counter); } @@ -40,7 +41,7 @@ index 06fcd081696e..0edb346263b8 100644 } static void blk_rq_timed_out_timer(struct timer_list *t) -@@ -1081,7 +1072,6 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, +@@ -1084,7 +1075,6 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, queue_flag_set_unlocked(QUEUE_FLAG_BYPASS, q); init_waitqueue_head(&q->mq_freeze_wq); @@ -48,7 +49,7 @@ index 06fcd081696e..0edb346263b8 100644 /* * Init percpu_ref in atomic mode so that it's faster to shutdown. -@@ -3971,8 +3961,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"); @@ -77,3 +78,6 @@ index 7b7c0bc6a514..f1960add94df 100644 struct percpu_ref q_usage_counter; struct list_head all_q_node; +-- +2.24.0 + diff --git a/debian/patches-rt/0288-block-blk-mq-move-blk_queue_usage_counter_release-in.patch b/debian/patches-rt/0289-block-blk-mq-move-blk_queue_usage_counter_release-in.patch similarity index 91% rename from debian/patches-rt/0288-block-blk-mq-move-blk_queue_usage_counter_release-in.patch rename to debian/patches-rt/0289-block-blk-mq-move-blk_queue_usage_counter_release-in.patch index 548e0a57e..f24579108 100644 --- a/debian/patches-rt/0288-block-blk-mq-move-blk_queue_usage_counter_release-in.patch +++ b/debian/patches-rt/0289-block-blk-mq-move-blk_queue_usage_counter_release-in.patch @@ -1,8 +1,9 @@ +From 663591170eaa1262400afb8ed6874d2873ab3975 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Tue, 13 Mar 2018 13:49:16 +0100 -Subject: [PATCH 288/290] block: blk-mq: move blk_queue_usage_counter_release() +Subject: [PATCH 289/291] 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=e73f701fa4cf094c7eeeb1959b4eb29b520ed548 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit 61c928ecf4fe200bda9b49a0813b5ba0f43995b5 ] @@ -54,10 +55,10 @@ Signed-off-by: Steven Rostedt (VMware) 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c -index 0edb346263b8..f0d9ebeea16d 100644 +index 4860cd26cd5a..7d709465876e 100644 --- a/block/blk-core.c +++ b/block/blk-core.c -@@ -970,12 +970,21 @@ void blk_queue_exit(struct request_queue *q) +@@ -973,12 +973,21 @@ void blk_queue_exit(struct request_queue *q) percpu_ref_put(&q->q_usage_counter); } @@ -80,7 +81,7 @@ index 0edb346263b8..f0d9ebeea16d 100644 } static void blk_rq_timed_out_timer(struct timer_list *t) -@@ -1072,6 +1081,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, +@@ -1075,6 +1084,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, queue_flag_set_unlocked(QUEUE_FLAG_BYPASS, q); init_waitqueue_head(&q->mq_freeze_wq); @@ -108,3 +109,6 @@ index f1960add94df..15a489abfb62 100644 struct percpu_ref q_usage_counter; struct list_head all_q_node; +-- +2.24.0 + diff --git a/debian/patches-rt/0290-Linux-4.19.82-rt30-REBASE.patch b/debian/patches-rt/0290-Linux-4.19.82-rt30-REBASE.patch deleted file mode 100644 index 865a62edc..000000000 --- a/debian/patches-rt/0290-Linux-4.19.82-rt30-REBASE.patch +++ /dev/null @@ -1,16 +0,0 @@ -From: Steven Rostedt -Date: Mon, 14 Oct 2019 13:24:30 -0400 -Subject: [PATCH 290/290] Linux 4.19.82-rt30 REBASE -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=968a307194d9b66f841f0728ad8dd4d197bd5c92 - ---- - localversion-rt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/localversion-rt b/localversion-rt -index 1199ebade17b..b72862e06be4 100644 ---- a/localversion-rt -+++ b/localversion-rt -@@ -1 +1 @@ ---rt16 -+-rt30 diff --git a/debian/patches-rt/0289-workqueue-rework.patch b/debian/patches-rt/0290-workqueue-rework.patch similarity index 92% rename from debian/patches-rt/0289-workqueue-rework.patch rename to debian/patches-rt/0290-workqueue-rework.patch index a688ca29b..f78c773ac 100644 --- a/debian/patches-rt/0289-workqueue-rework.patch +++ b/debian/patches-rt/0290-workqueue-rework.patch @@ -1,7 +1,8 @@ +From ca73629953276e777de933c5bf76f9f8fe5feffe Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 29 May 2019 18:52:27 +0200 -Subject: [PATCH 289/290] workqueue: rework -Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=00ac16d9ec3aca2ef09504ceae1d966bdef1a352 +Subject: [PATCH 290/291] workqueue: rework +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz [ Upstream commit d15a862f24df983458533aebd6fa207ecdd1095a ] @@ -31,15 +32,15 @@ Signed-off-by: Steven Rostedt (VMware) kernel/kthread.c | 14 -- kernel/sched/core.c | 1 + kernel/time/hrtimer.c | 24 -- - kernel/workqueue.c | 300 +++++++++++-------------- - 18 files changed, 164 insertions(+), 318 deletions(-) + kernel/workqueue.c | 304 +++++++++++-------------- + 18 files changed, 166 insertions(+), 320 deletions(-) delete mode 100644 include/linux/kthread-cgroup.h diff --git a/block/blk-core.c b/block/blk-core.c -index f0d9ebeea16d..cc69a47dc57a 100644 +index 7d709465876e..752c9e754509 100644 --- a/block/blk-core.c +++ b/block/blk-core.c -@@ -970,7 +970,7 @@ void blk_queue_exit(struct request_queue *q) +@@ -973,7 +973,7 @@ void blk_queue_exit(struct request_queue *q) percpu_ref_put(&q->q_usage_counter); } @@ -48,7 +49,7 @@ index f0d9ebeea16d..cc69a47dc57a 100644 { struct request_queue *q = container_of(work, struct request_queue, mq_pcpu_wake); -@@ -984,7 +984,7 @@ static void blk_queue_usage_counter_release(struct percpu_ref *ref) +@@ -987,7 +987,7 @@ static void blk_queue_usage_counter_release(struct percpu_ref *ref) container_of(ref, struct request_queue, q_usage_counter); if (wq_has_sleeper(&q->mq_freeze_wq)) @@ -57,7 +58,7 @@ index f0d9ebeea16d..cc69a47dc57a 100644 } static void blk_rq_timed_out_timer(struct timer_list *t) -@@ -1081,7 +1081,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, +@@ -1084,7 +1084,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id, queue_flag_set_unlocked(QUEUE_FLAG_BYPASS, q); init_waitqueue_head(&q->mq_freeze_wq); @@ -80,7 +81,7 @@ index b736cb6c6228..126c2c514673 100644 #include #include diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c -index b56619418cea..fdcf3076681b 100644 +index 63b10236eb05..185bbdce62b1 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c @@ -22,7 +22,6 @@ @@ -334,10 +335,10 @@ index 60d673e15632..546aa73fba6a 100644 extern bool queue_work_on(int cpu, struct workqueue_struct *wq, diff --git a/init/main.c b/init/main.c -index b0e95351c22c..4a7471606e53 100644 +index e514dd93de76..6e02188386a7 100644 --- a/init/main.c +++ b/init/main.c -@@ -1130,7 +1130,6 @@ static noinline void __init kernel_init_freeable(void) +@@ -1129,7 +1129,6 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); @@ -457,7 +458,7 @@ index 9db017761a1f..5641b55783a6 100644 /** * kthread_associate_blkcg - associate blkcg to current kthread diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index fab44ac4e1dd..442a2071cde7 100644 +index 678c2c4de4f5..a1c0123e7636 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3607,6 +3607,7 @@ static inline void sched_submit_work(struct task_struct *tsk) @@ -511,7 +512,7 @@ index 4534e7871c8c..67951292df58 100644 #else diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 12137825bf5a..f6d12421e7bb 100644 +index 714d0cfe4d56..75f59299dd06 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -49,8 +49,6 @@ @@ -1134,20 +1135,25 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * Slurp in all works issued via this workqueue and -@@ -2460,10 +2412,10 @@ static int rescuer_thread(void *__rescuer) +@@ -2460,7 +2412,7 @@ static int rescuer_thread(void *__rescuer) * incur MAYDAY_INTERVAL delay inbetween. */ if (need_to_create_worker(pool)) { - spin_lock(&wq_mayday_lock); + raw_spin_lock(&wq_mayday_lock); - get_pwq(pwq); - list_move_tail(&pwq->mayday_node, &wq->maydays); + /* + * Queue iff we aren't racing destruction + * and somebody else hasn't queued it already. +@@ -2469,7 +2421,7 @@ static int rescuer_thread(void *__rescuer) + get_pwq(pwq); + list_add_tail(&pwq->mayday_node, &wq->maydays); + } - spin_unlock(&wq_mayday_lock); + raw_spin_unlock(&wq_mayday_lock); } } -@@ -2481,14 +2433,14 @@ static int rescuer_thread(void *__rescuer) +@@ -2487,14 +2439,14 @@ static int rescuer_thread(void *__rescuer) if (need_more_worker(pool)) wake_up_worker(pool); @@ -1165,7 +1171,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (should_stop) { __set_current_state(TASK_RUNNING); -@@ -2568,7 +2520,7 @@ static void wq_barrier_func(struct work_struct *work) +@@ -2574,7 +2526,7 @@ static void wq_barrier_func(struct work_struct *work) * underneath us, so we can't reliably determine pwq from @target. * * CONTEXT: @@ -1174,7 +1180,7 @@ index 12137825bf5a..f6d12421e7bb 100644 */ static void insert_wq_barrier(struct pool_workqueue *pwq, struct wq_barrier *barr, -@@ -2655,7 +2607,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, +@@ -2661,7 +2613,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, for_each_pwq(pwq, wq) { struct worker_pool *pool = pwq->pool; @@ -1183,7 +1189,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (flush_color >= 0) { WARN_ON_ONCE(pwq->flush_color != -1); -@@ -2672,7 +2624,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, +@@ -2678,7 +2630,7 @@ static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq, pwq->work_color = work_color; } @@ -1192,7 +1198,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } if (flush_color >= 0 && atomic_dec_and_test(&wq->nr_pwqs_to_flush)) -@@ -2872,9 +2824,9 @@ void drain_workqueue(struct workqueue_struct *wq) +@@ -2878,9 +2830,9 @@ void drain_workqueue(struct workqueue_struct *wq) for_each_pwq(pwq, wq) { bool drained; @@ -1204,7 +1210,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (drained) continue; -@@ -2910,7 +2862,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2916,7 +2868,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, return false; } @@ -1213,7 +1219,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2926,7 +2878,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2932,7 +2884,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, check_flush_dependency(pwq->wq, work); insert_wq_barrier(pwq, barr, work, worker); @@ -1222,7 +1228,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * Force a lock recursion deadlock when using flush_work() inside a -@@ -2945,7 +2897,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, +@@ -2951,7 +2903,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr, rcu_read_unlock(); return true; already_gone: @@ -1231,7 +1237,7 @@ index 12137825bf5a..f6d12421e7bb 100644 rcu_read_unlock(); return false; } -@@ -3046,7 +2998,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) +@@ -3052,7 +3004,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork) /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -1240,7 +1246,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * This allows canceling during early boot. We know that @work -@@ -3107,10 +3059,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -3113,10 +3065,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -1253,7 +1259,7 @@ index 12137825bf5a..f6d12421e7bb 100644 return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -3148,7 +3100,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) +@@ -3154,7 +3106,7 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork) return false; set_work_pool_and_clear_pending(work, get_work_pool_id(work)); @@ -1262,7 +1268,7 @@ index 12137825bf5a..f6d12421e7bb 100644 return ret; } -@@ -3258,7 +3210,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); +@@ -3264,7 +3216,7 @@ EXPORT_SYMBOL_GPL(execute_in_process_context); * * Undo alloc_workqueue_attrs(). */ @@ -1271,7 +1277,7 @@ index 12137825bf5a..f6d12421e7bb 100644 { if (attrs) { free_cpumask_var(attrs->cpumask); -@@ -3268,21 +3220,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) +@@ -3274,21 +3226,20 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs) /** * alloc_workqueue_attrs - allocate a workqueue_attrs @@ -1296,7 +1302,7 @@ index 12137825bf5a..f6d12421e7bb 100644 goto fail; cpumask_copy(attrs->cpumask, cpu_possible_mask); -@@ -3339,7 +3290,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, +@@ -3345,7 +3296,7 @@ static bool wqattrs_equal(const struct workqueue_attrs *a, */ static int init_worker_pool(struct worker_pool *pool) { @@ -1305,7 +1311,7 @@ index 12137825bf5a..f6d12421e7bb 100644 pool->id = -1; pool->cpu = -1; pool->node = NUMA_NO_NODE; -@@ -3360,7 +3311,7 @@ static int init_worker_pool(struct worker_pool *pool) +@@ -3366,7 +3317,7 @@ static int init_worker_pool(struct worker_pool *pool) pool->refcnt = 1; /* shouldn't fail above this point */ @@ -1314,7 +1320,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (!pool->attrs) return -ENOMEM; return 0; -@@ -3425,15 +3376,15 @@ static void put_unbound_pool(struct worker_pool *pool) +@@ -3431,15 +3382,15 @@ static void put_unbound_pool(struct worker_pool *pool) * @pool's workers from blocking on attach_mutex. We're the last * manager and @pool gets freed with the flag set. */ @@ -1333,7 +1339,7 @@ index 12137825bf5a..f6d12421e7bb 100644 mutex_lock(&wq_pool_attach_mutex); if (!list_empty(&pool->workers)) -@@ -3587,7 +3538,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3593,7 +3544,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) return; /* this function can be called during early boot w/ irq disabled */ @@ -1342,7 +1348,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * During [un]freezing, the caller is responsible for ensuring that -@@ -3610,7 +3561,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) +@@ -3616,7 +3567,7 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) pwq->max_active = 0; } @@ -1351,7 +1357,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } /* initialize newly alloced @pwq which is associated with @wq and @pool */ -@@ -3783,8 +3734,8 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, +@@ -3789,8 +3740,8 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, ctx = kzalloc(struct_size(ctx, pwq_tbl, nr_node_ids), GFP_KERNEL); @@ -1362,7 +1368,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (!ctx || !new_attrs || !tmp_attrs) goto out_free; -@@ -3920,7 +3871,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, +@@ -3926,7 +3877,7 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, * * Return: 0 on success and -errno on failure. */ @@ -1371,7 +1377,7 @@ index 12137825bf5a..f6d12421e7bb 100644 const struct workqueue_attrs *attrs) { int ret; -@@ -3931,7 +3882,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, +@@ -3937,7 +3888,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, return ret; } @@ -1379,7 +1385,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /** * wq_update_unbound_numa - update NUMA affinity of a wq for CPU hot[un]plug -@@ -4009,9 +3959,9 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, +@@ -4015,9 +3965,9 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, use_dfl_pwq: mutex_lock(&wq->mutex); @@ -1391,7 +1397,7 @@ index 12137825bf5a..f6d12421e7bb 100644 old_pwq = numa_pwq_tbl_install(wq, node, wq->dfl_pwq); out_unlock: mutex_unlock(&wq->mutex); -@@ -4130,7 +4080,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, +@@ -4136,7 +4086,7 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, return NULL; if (flags & WQ_UNBOUND) { @@ -1400,7 +1406,19 @@ index 12137825bf5a..f6d12421e7bb 100644 if (!wq->unbound_attrs) goto err_free_wq; } -@@ -4399,10 +4349,10 @@ unsigned int work_busy(struct work_struct *work) +@@ -4223,9 +4173,9 @@ void destroy_workqueue(struct workqueue_struct *wq) + struct worker *rescuer = wq->rescuer; + + /* this prevents new queueing */ +- spin_lock_irq(&wq_mayday_lock); ++ raw_spin_lock_irq(&wq_mayday_lock); + wq->rescuer = NULL; +- spin_unlock_irq(&wq_mayday_lock); ++ raw_spin_unlock_irq(&wq_mayday_lock); + + /* rescuer will empty maydays list before exiting */ + kthread_stop(rescuer->task); +@@ -4420,10 +4370,10 @@ unsigned int work_busy(struct work_struct *work) rcu_read_lock(); pool = get_work_pool(work); if (pool) { @@ -1413,7 +1431,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } rcu_read_unlock(); -@@ -4608,10 +4558,10 @@ void show_workqueue_state(void) +@@ -4630,10 +4580,10 @@ void show_workqueue_state(void) pr_info("workqueue %s: flags=0x%x\n", wq->name, wq->flags); for_each_pwq(pwq, wq) { @@ -1426,7 +1444,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4625,7 +4575,7 @@ void show_workqueue_state(void) +@@ -4647,7 +4597,7 @@ void show_workqueue_state(void) struct worker *worker; bool first = true; @@ -1435,7 +1453,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (pool->nr_workers == pool->nr_idle) goto next_pool; -@@ -4644,7 +4594,7 @@ void show_workqueue_state(void) +@@ -4666,7 +4616,7 @@ void show_workqueue_state(void) } pr_cont("\n"); next_pool: @@ -1444,7 +1462,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * We could be printing a lot from atomic context, e.g. * sysrq-t -> show_workqueue_state(). Avoid triggering -@@ -4674,7 +4624,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4696,7 +4646,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) struct worker_pool *pool = worker->pool; if (pool) { @@ -1453,7 +1471,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * ->desc tracks information (wq name or * set_worker_desc()) for the latest execution. If -@@ -4688,7 +4638,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) +@@ -4710,7 +4660,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) scnprintf(buf + off, size - off, "-%s", worker->desc); } @@ -1462,7 +1480,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } } -@@ -4719,7 +4669,7 @@ static void unbind_workers(int cpu) +@@ -4741,7 +4691,7 @@ static void unbind_workers(int cpu) for_each_cpu_worker_pool(pool, cpu) { mutex_lock(&wq_pool_attach_mutex); @@ -1471,7 +1489,7 @@ index 12137825bf5a..f6d12421e7bb 100644 /* * We've blocked all attach/detach operations. Make all workers -@@ -4733,7 +4683,7 @@ static void unbind_workers(int cpu) +@@ -4755,7 +4705,7 @@ static void unbind_workers(int cpu) pool->flags |= POOL_DISASSOCIATED; @@ -1480,7 +1498,7 @@ index 12137825bf5a..f6d12421e7bb 100644 mutex_unlock(&wq_pool_attach_mutex); /* -@@ -4759,9 +4709,9 @@ static void unbind_workers(int cpu) +@@ -4781,9 +4731,9 @@ static void unbind_workers(int cpu) * worker blocking could lead to lengthy stalls. Kick off * unbound chain execution of currently pending work items. */ @@ -1492,7 +1510,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } } -@@ -4788,7 +4738,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4810,7 +4760,7 @@ static void rebind_workers(struct worker_pool *pool) WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask) < 0); @@ -1501,7 +1519,7 @@ index 12137825bf5a..f6d12421e7bb 100644 pool->flags &= ~POOL_DISASSOCIATED; -@@ -4827,7 +4777,7 @@ static void rebind_workers(struct worker_pool *pool) +@@ -4849,7 +4799,7 @@ static void rebind_workers(struct worker_pool *pool) WRITE_ONCE(worker->flags, worker_flags); } @@ -1510,7 +1528,7 @@ index 12137825bf5a..f6d12421e7bb 100644 } /** -@@ -5279,7 +5229,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) +@@ -5301,7 +5251,7 @@ static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq) lockdep_assert_held(&wq_pool_mutex); @@ -1519,7 +1537,7 @@ index 12137825bf5a..f6d12421e7bb 100644 if (!attrs) return NULL; -@@ -5701,7 +5651,7 @@ static void __init wq_numa_init(void) +@@ -5723,7 +5673,7 @@ static void __init wq_numa_init(void) return; } @@ -1528,7 +1546,7 @@ index 12137825bf5a..f6d12421e7bb 100644 BUG_ON(!wq_update_unbound_numa_attrs_buf); /* -@@ -5776,7 +5726,7 @@ int __init workqueue_init_early(void) +@@ -5798,7 +5748,7 @@ int __init workqueue_init_early(void) for (i = 0; i < NR_STD_WORKER_POOLS; i++) { struct workqueue_attrs *attrs; @@ -1537,7 +1555,7 @@ index 12137825bf5a..f6d12421e7bb 100644 attrs->nice = std_nice[i]; unbound_std_wq_attrs[i] = attrs; -@@ -5785,7 +5735,7 @@ int __init workqueue_init_early(void) +@@ -5807,7 +5757,7 @@ int __init workqueue_init_early(void) * guaranteed by max_active which is enforced by pwqs. * Turn off NUMA so that dfl_pwq is used for all nodes. */ @@ -1546,3 +1564,6 @@ index 12137825bf5a..f6d12421e7bb 100644 attrs->nice = std_nice[i]; attrs->no_numa = true; ordered_wq_attrs[i] = attrs; +-- +2.24.0 + diff --git a/debian/patches-rt/0291-Linux-4.19.90-rt35-REBASE.patch b/debian/patches-rt/0291-Linux-4.19.90-rt35-REBASE.patch new file mode 100644 index 000000000..cca908ad9 --- /dev/null +++ b/debian/patches-rt/0291-Linux-4.19.90-rt35-REBASE.patch @@ -0,0 +1,20 @@ +From 224b151ee6089b77b2d3dbf4f66fb90520ba8689 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Mon, 14 Oct 2019 13:24:30 -0400 +Subject: [PATCH 291/291] Linux 4.19.90-rt35 REBASE +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.90-rt35.tar.xz + +--- + localversion-rt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/localversion-rt b/localversion-rt +index 1199ebade17b..366440d74b77 100644 +--- a/localversion-rt ++++ b/localversion-rt +@@ -1 +1 @@ +--rt16 ++-rt35 +-- +2.24.0 + diff --git a/debian/patches-rt/series b/debian/patches-rt/series index 7a4657f71..b082482a6 100644 --- a/debian/patches-rt/series +++ b/debian/patches-rt/series @@ -242,49 +242,50 @@ 0242-x86-lazy-preempt-properly-check-against-preempt-mask.patch 0243-x86-lazy-preempt-use-proper-return-label-on-32bit-x8.patch 0244-arm-Add-support-for-lazy-preemption.patch -0245-powerpc-Add-support-for-lazy-preemption.patch -0246-arch-arm64-Add-lazy-preempt-support.patch -0247-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch -0248-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch -0249-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch -0250-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch -0251-tpm_tis-fix-stall-after-iowrite-s.patch -0252-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch -0253-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch -0254-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch -0255-drm-i915-disable-tracing-on-RT.patch -0256-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch -0257-cgroups-use-simple-wait-in-css_release.patch -0258-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch -0259-apparmor-use-a-locallock-instead-preempt_disable.patch -0260-workqueue-Prevent-deadlock-stall-on-RT.patch -0261-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch -0262-Add-localversion-for-RT-release.patch -0263-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch -0264-powerpc-reshuffle-TIF-bits.patch -0265-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch -0266-drm-i915-Don-t-disable-interrupts-independently-of-t.patch -0267-sched-completion-Fix-a-lockup-in-wait_for_completion.patch -0268-kthread-add-a-global-worker-thread.patch -0269-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch -0270-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch -0271-arm-imx6-cpuidle-Use-raw_spinlock_t.patch -0272-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch -0273-pci-switchtec-fix-stream_open.cocci-warnings.patch -0274-sched-core-Drop-a-preempt_disable_rt-statement.patch -0275-timers-Redo-the-notification-of-canceling-timers-on-.patch -0276-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch -0277-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch -0278-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch -0279-Revert-futex-workaround-migrate_disable-enable-in-di.patch -0280-futex-Make-the-futex_hash_bucket-lock-raw.patch -0281-futex-Delay-deallocation-of-pi_state.patch -0282-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch -0283-revert-aio.patch -0284-fs-aio-simple-simple-work.patch -0285-revert-thermal.patch -0286-thermal-Defer-thermal-wakups-to-threads.patch -0287-revert-block.patch -0288-block-blk-mq-move-blk_queue_usage_counter_release-in.patch -0289-workqueue-rework.patch -0290-Linux-4.19.82-rt30-REBASE.patch +0245-Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch +0246-powerpc-Add-support-for-lazy-preemption.patch +0247-arch-arm64-Add-lazy-preempt-support.patch +0248-connector-cn_proc-Protect-send_msg-with-a-local-lock.patch +0249-drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch +0250-drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch +0251-drivers-zram-fix-zcomp_stream_get-smp_processor_id-u.patch +0252-tpm_tis-fix-stall-after-iowrite-s.patch +0253-watchdog-prevent-deferral-of-watchdogd-wakeup-on-RT.patch +0254-drm-radeon-i915-Use-preempt_disable-enable_rt-where-.patch +0255-drm-i915-Use-local_lock-unlock_irq-in-intel_pipe_upd.patch +0256-drm-i915-disable-tracing-on-RT.patch +0257-drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch +0258-cgroups-use-simple-wait-in-css_release.patch +0259-cpuset-Convert-callback_lock-to-raw_spinlock_t.patch +0260-apparmor-use-a-locallock-instead-preempt_disable.patch +0261-workqueue-Prevent-deadlock-stall-on-RT.patch +0262-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +0263-Add-localversion-for-RT-release.patch +0264-powerpc-pseries-iommu-Use-a-locallock-instead-local_.patch +0265-powerpc-reshuffle-TIF-bits.patch +0266-tty-sysrq-Convert-show_lock-to-raw_spinlock_t.patch +0267-drm-i915-Don-t-disable-interrupts-independently-of-t.patch +0268-sched-completion-Fix-a-lockup-in-wait_for_completion.patch +0269-kthread-add-a-global-worker-thread.patch +0270-genirq-Do-not-invoke-the-affinity-callback-via-a-wor.patch +0271-genirq-Handle-missing-work_struct-in-irq_set_affinit.patch +0272-arm-imx6-cpuidle-Use-raw_spinlock_t.patch +0273-rcu-Don-t-allow-to-change-rcu_normal_after_boot-on-R.patch +0274-pci-switchtec-fix-stream_open.cocci-warnings.patch +0275-sched-core-Drop-a-preempt_disable_rt-statement.patch +0276-timers-Redo-the-notification-of-canceling-timers-on-.patch +0277-Revert-futex-Ensure-lock-unlock-symetry-versus-pi_lo.patch +0278-Revert-futex-Fix-bug-on-when-a-requeued-RT-task-time.patch +0279-Revert-rtmutex-Handle-the-various-new-futex-race-con.patch +0280-Revert-futex-workaround-migrate_disable-enable-in-di.patch +0281-futex-Make-the-futex_hash_bucket-lock-raw.patch +0282-futex-Delay-deallocation-of-pi_state.patch +0283-mm-zswap-Do-not-disable-preemption-in-zswap_frontswa.patch +0284-revert-aio.patch +0285-fs-aio-simple-simple-work.patch +0286-revert-thermal.patch +0287-thermal-Defer-thermal-wakups-to-threads.patch +0288-revert-block.patch +0289-block-blk-mq-move-blk_queue_usage_counter_release-in.patch +0290-workqueue-rework.patch +0291-Linux-4.19.90-rt35-REBASE.patch