--- /dev/null
+From evgreen@chromium.org Fri Nov 15 13:32:52 2019
+From: Evan Green <evgreen@chromium.org>
+Date: Thu, 14 Nov 2019 11:22:59 -0800
+Subject: Revert "Input: synaptics-rmi4 - avoid processing unknown IRQs"
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Andrew Duggan <aduggan@synaptics.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, stable@vger.kernel.org, Evan Green <evgreen@chromium.org>, Pan Bian <bianpan2016@163.com>, Sasha Levin <sashal@kernel.org>, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org
+Message-ID: <5dcda9b8.1c69fb81.74ed1.4e10@mx.google.com>
+
+From: Evan Green <evgreen@chromium.org>
+
+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 <evgreen@chromium.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);
+