From 728a03c9c5f63c6e4cbedf0dfa9d2151ac13eb75 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 4 Jan 2018 20:11:38 +0000 Subject: [PATCH] linux: revert softirq commit, temporarily fix DVB issues See: https://forum.libreelec.tv/thread/4235-dvb-issue-since-le-switched-to-kernel-4-9-x/?postID=75965#post75965 --- ...ert-softirq-let-ksoftirqd-do-its-job.patch | 54 +++++++++++++++++++ ...ert-softirq-let-ksoftirqd-do-its-job.patch | 54 +++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 packages/linux/patches/default-rpi/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch create mode 100644 packages/linux/patches/default/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch diff --git a/packages/linux/patches/default-rpi/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch b/packages/linux/patches/default-rpi/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch new file mode 100644 index 0000000000..bb87a670b3 --- /dev/null +++ b/packages/linux/patches/default-rpi/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch @@ -0,0 +1,54 @@ +From 3364d0056328b93fb10ab929ae99933af9e304ad Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Thu, 4 Jan 2018 19:56:05 +0000 +Subject: [PATCH] Revert "softirq: Let ksoftirqd do its job" + +See: https://forum.libreelec.tv/thread/4235-dvb-issue-since-le-switched-to-kernel-4-9-x/?postID=75965#post75965 +--- + kernel/softirq.c | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 4e09821..58bb6f6 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -77,17 +77,6 @@ static void wakeup_softirqd(void) + wake_up_process(tsk); + } + +-/* +- * If ksoftirqd is scheduled, we do not want to process pending softirqs +- * right now. Let ksoftirqd handle this at its own rate, to get fairness. +- */ +-static bool ksoftirqd_running(void) +-{ +- struct task_struct *tsk = __this_cpu_read(ksoftirqd); +- +- return tsk && (tsk->state == TASK_RUNNING); +-} +- + /* + * preempt_count and SOFTIRQ_OFFSET usage: + * - preempt_count is changed by SOFTIRQ_OFFSET on entering or leaving +@@ -324,7 +313,7 @@ asmlinkage __visible void do_softirq(void) + + pending = local_softirq_pending(); + +- if (pending && !ksoftirqd_running()) ++ if (pending) + do_softirq_own_stack(); + + local_irq_restore(flags); +@@ -351,9 +340,6 @@ void irq_enter(void) + + static inline void invoke_softirq(void) + { +- if (ksoftirqd_running()) +- return; +- + if (!force_irqthreads) { + #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK + /* +-- +2.14.1 + diff --git a/packages/linux/patches/default/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch b/packages/linux/patches/default/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch new file mode 100644 index 0000000000..bb87a670b3 --- /dev/null +++ b/packages/linux/patches/default/linux-999-revert-softirq-let-ksoftirqd-do-its-job.patch @@ -0,0 +1,54 @@ +From 3364d0056328b93fb10ab929ae99933af9e304ad Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Thu, 4 Jan 2018 19:56:05 +0000 +Subject: [PATCH] Revert "softirq: Let ksoftirqd do its job" + +See: https://forum.libreelec.tv/thread/4235-dvb-issue-since-le-switched-to-kernel-4-9-x/?postID=75965#post75965 +--- + kernel/softirq.c | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 4e09821..58bb6f6 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -77,17 +77,6 @@ static void wakeup_softirqd(void) + wake_up_process(tsk); + } + +-/* +- * If ksoftirqd is scheduled, we do not want to process pending softirqs +- * right now. Let ksoftirqd handle this at its own rate, to get fairness. +- */ +-static bool ksoftirqd_running(void) +-{ +- struct task_struct *tsk = __this_cpu_read(ksoftirqd); +- +- return tsk && (tsk->state == TASK_RUNNING); +-} +- + /* + * preempt_count and SOFTIRQ_OFFSET usage: + * - preempt_count is changed by SOFTIRQ_OFFSET on entering or leaving +@@ -324,7 +313,7 @@ asmlinkage __visible void do_softirq(void) + + pending = local_softirq_pending(); + +- if (pending && !ksoftirqd_running()) ++ if (pending) + do_softirq_own_stack(); + + local_irq_restore(flags); +@@ -351,9 +340,6 @@ void irq_enter(void) + + static inline void invoke_softirq(void) + { +- if (ksoftirqd_running()) +- return; +- + if (!force_irqthreads) { + #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK + /* +-- +2.14.1 +