| From 64ff3efb7034ced7d66b834299ba7b26f34974ea Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 28 Jan 2026 10:55:22 +0100 |
| Subject: platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| |
| [ Upstream commit f6bc712877f24dc89bdfd7bdbf1a32f3b9960b34 ] |
| |
| Passing IRQF_ONESHOT ensures that the interrupt source is masked until the |
| secondary (threaded) handler is done. If only a primary handler is used |
| then the flag makes no sense because the interrupt cannot fire (again) |
| while its handler is running. |
| |
| The flag also prevents force-threading of the primary handler and the |
| irq-core will warn about this. |
| |
| The flag was added to match the flag on the shared handler which uses a |
| threaded handler and therefore IRQF_ONESHOT. This is no longer needed |
| because devm_request_irq() now passes IRQF_COND_ONESHOT for this case. |
| |
| Revert adding IRQF_ONESHOT to irqflags. |
| |
| Fixes: 8f812373d1958 ("platform/x86: intel: int0002_vgpio: Pass IRQF_ONESHOT to request_irq()") |
| Reported-by: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Signed-off-by: Thomas Gleixner <tglx@kernel.org> |
| Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com> |
| Acked-by: Ilpo Jรคrvinen <ilpo.jarvinen@linux.intel.com> |
| Link: https://patch.msgid.link/20260128095540.863589-3-bigeasy@linutronix.de |
| Closes: https://lore.kernel.org/all/555f1c56-0f74-41bf-8bd2-6217e0aab0c6@intel.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/platform/x86/intel/int0002_vgpio.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/platform/x86/intel/int0002_vgpio.c b/drivers/platform/x86/intel/int0002_vgpio.c |
| index 6f5629dc3f8db..562e880256436 100644 |
| --- a/drivers/platform/x86/intel/int0002_vgpio.c |
| +++ b/drivers/platform/x86/intel/int0002_vgpio.c |
| @@ -206,8 +206,8 @@ static int int0002_probe(struct platform_device *pdev) |
| * FIXME: augment this if we managed to pull handling of shared |
| * IRQs into gpiolib. |
| */ |
| - ret = devm_request_irq(dev, irq, int0002_irq, |
| - IRQF_ONESHOT | IRQF_SHARED, "INT0002", chip); |
| + ret = devm_request_irq(dev, irq, int0002_irq, IRQF_SHARED, "INT0002", |
| + chip); |
| if (ret) { |
| dev_err(dev, "Error requesting IRQ %d: %d\n", irq, ret); |
| return ret; |
| -- |
| 2.51.0 |
| |