diff --git a/debian/changelog b/debian/changelog index 9b2b2ddcd..50e2a0b67 100644 --- a/debian/changelog +++ b/debian/changelog @@ -77,7 +77,6 @@ linux (4.19.88-1) UNRELEASED; urgency=medium - platform/x86: mlx-platform: Fix LED configuration - ARM: OMAP1: fix USB configuration for device-only setups - RDMA/hns: Fix the bug while use multi-hop of pbl - - arm64: preempt: Fix big-endian when checking preempt count in assembly - RDMA/vmw_pvrdma: Use atomic memory allocation in create AH - PM / AVS: SmartReflex: NULL check before some freeing functions is not needed - xfs: zero length symlinks are not valid diff --git a/debian/patches/debian/Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch b/debian/patches/debian/Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch new file mode 100644 index 000000000..4e14b9137 --- /dev/null +++ b/debian/patches/debian/Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch @@ -0,0 +1,57 @@ +From: Salvatore Bonaccorso +Date: Tue, 17 Dec 2019 15:18:10 +0100 +Subject: Revert "arm64: preempt: Fix big-endian when checking preempt count in + assembly" +Bug: https://lore.kernel.org/stable/20191214021403.GA1357@home.goodmis.org/ + +As reported[1] by Steven Rostedt while updating 4.19-rt, the change +breaks without having as well 396244692232f ("arm64: preempt: Provide +our own implementation of asm/preempt.h"). + + [1]: + +Signed-off-by: Salvatore Bonaccorso +--- + 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.1 + diff --git a/debian/patches/series b/debian/patches/series index 065c1827f..039b56926 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -101,6 +101,7 @@ bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch debian/revert-objtool-fix-config_stack_validation-y-warning.patch bugfix/all/mt76-use-the-correct-hweight8-function.patch bugfix/all/rtc-s35390a-set-uie_unsupported.patch +debian/Revert-arm64-preempt-Fix-big-endian-when-checking-pr.patch # Miscellaneous features