From: Greg Kroah-Hartman Date: Fri, 15 Nov 2019 05:35:57 +0000 (+0800) Subject: 4.14-stable patches X-Git-Tag: v4.4.202~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0550286c625f676ca38b21188002115e5349b674;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: revert-input-synaptics-rmi4-avoid-processing-unknown-irqs.patch --- diff --git a/queue-4.14/revert-input-synaptics-rmi4-avoid-processing-unknown-irqs.patch b/queue-4.14/revert-input-synaptics-rmi4-avoid-processing-unknown-irqs.patch new file mode 100644 index 00000000000..5a9ceeaeb0d --- /dev/null +++ b/queue-4.14/revert-input-synaptics-rmi4-avoid-processing-unknown-irqs.patch @@ -0,0 +1,58 @@ +From evgreen@chromium.org Fri Nov 15 13:32:52 2019 +From: Evan Green +Date: Thu, 14 Nov 2019 11:22:59 -0800 +Subject: Revert "Input: synaptics-rmi4 - avoid processing unknown IRQs" +To: Greg Kroah-Hartman +Cc: Andrew Duggan , Dmitry Torokhov , stable@vger.kernel.org, Evan Green , Pan Bian , Sasha Levin , linux-kernel@vger.kernel.org, linux-input@vger.kernel.org +Message-ID: <5dcda9b8.1c69fb81.74ed1.4e10@mx.google.com> + +From: Evan Green + +This reverts commit 7b9f7a928255a232012be55cb95db30e963b83a7. + +That change should have had a fixes tag for +commit 24d28e4f1271 ("Input: synaptics-rmi4 - convert irq distribution to +irq_domain"). The conversion to irq_domain introduced the issue being +fixed by this commit. + +In older kernels the bitmap IRQ accounting is done differently, and +it doesn't suffer from the same issue of calling handle_nested_irq(0). +Keeping this commit on kernels 4.14 and older causes problems with +touchpads due to the different semantics of the IRQ bitmasks. + +Signed-off-by: Evan Green +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/rmi4/rmi_driver.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +--- a/drivers/input/rmi4/rmi_driver.c ++++ b/drivers/input/rmi4/rmi_driver.c +@@ -165,7 +165,7 @@ static int rmi_process_interrupt_request + } + + mutex_lock(&data->irq_mutex); +- bitmap_and(data->irq_status, data->irq_status, data->fn_irq_bits, ++ bitmap_and(data->irq_status, data->irq_status, data->current_irq_mask, + data->irq_count); + /* + * At this point, irq_status has all bits that are set in the +@@ -412,8 +412,6 @@ static int rmi_driver_set_irq_bits(struc + bitmap_copy(data->current_irq_mask, data->new_irq_mask, + data->num_of_irq_regs); + +- bitmap_or(data->fn_irq_bits, data->fn_irq_bits, mask, data->irq_count); +- + error_unlock: + mutex_unlock(&data->irq_mutex); + return error; +@@ -427,8 +425,6 @@ static int rmi_driver_clear_irq_bits(str + struct device *dev = &rmi_dev->dev; + + mutex_lock(&data->irq_mutex); +- bitmap_andnot(data->fn_irq_bits, +- data->fn_irq_bits, mask, data->irq_count); + bitmap_andnot(data->new_irq_mask, + data->current_irq_mask, mask, data->irq_count); + diff --git a/queue-4.14/series b/queue-4.14/series index 0e9d4b8ea2f..8dc6dd70253 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -2,3 +2,4 @@ kvm-mmu-don-t-read-pdptes-when-paging-is-not-enabled.patch kvm-x86-introduce-is_pae_paging.patch mips-bcm63xx-fix-switch-core-reset-on-bcm6368.patch scsi-core-handle-drivers-which-set-sg_tablesize-to-zero.patch +revert-input-synaptics-rmi4-avoid-processing-unknown-irqs.patch