[<prev] [next>] [day] [month] [year] [list]
Message-ID: <5dcda9b8.1c69fb81.74ed1.4e10@mx.google.com>
Date: Thu, 14 Nov 2019 11:22:59 -0800
From: Evan Green <evgreen@...omium.org>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Andrew Duggan <aduggan@...aptics.com>,
Dmitry Torokhov <dmitry.torokhov@...il.com>,
stable@...r.kernel.org, Evan Green <evgreen@...omium.org>,
Pan Bian <bianpan2016@....com>,
Sasha Levin <sashal@...nel.org>, linux-kernel@...r.kernel.org,
linux-input@...r.kernel.org
Subject: [PATCH STABLE 4.14] Revert "Input: synaptics-rmi4 - avoid processing unknown IRQs"
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@...omium.org>
---
This revert is only needed on 4.14 where the driver is not yet
converted to irq_domain and the existing bitmasks work fine.
Upstream, the patch works fine and should not be reverted.
---
drivers/input/rmi4/rmi_driver.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index bae46816a3b3..997ccae7ee05 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -165,7 +165,7 @@ static int rmi_process_interrupt_requests(struct rmi_device *rmi_dev)
}
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(struct rmi_device *rmi_dev,
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(struct rmi_device *rmi_dev,
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);
--
2.21.0
Powered by blists - more mailing lists