public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/21] IRQF_ONESHOT clean up
@ 2026-01-23 11:36 Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 01/21] genirq: Set IRQF_COND_ONESHOT in devm_request_irq() Sebastian Andrzej Siewior
                   ` (22 more replies)
  0 siblings, 23 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Alexandre Belloni, Amit Kucheria, Andi Shyti, Andy Shevchenko,
	Andy Shevchenko, Borislav Petkov, Daniel Lezcano, David Lechner,
	Dinh Nguyen, Greg Kroah-Hartman, Gustavo Silva, Hans de Goede,
	Heikki Krogerus, Ilpo Järvinen, Ioana Ciornei,
	James E.J. Bottomley, Jarkko Sakkinen, Jaroslav Kysela,
	Jason Gunthorpe, Jassi Brar, Joerg Roedel, Jonathan Cameron,
	Jonathan Cameron, Kent Gustavsson, Lars-Peter Clausen, Lee Jones,
	Liam Girdwood, Linus Walleij, Liviu Dudau, Lorenzo Pieralisi,
	Luiz Augusto von Dentz, Lukasz Luba, Marcel Holtmann,
	Marcelo Schmitt, Marcus Folkesson, Mark Brown, Mark Rutland,
	Martin K. Petersen, Martin Tuma, Mauro Carvalho Chehab,
	Michael Hennerich, Nishant Malpani, Nuno Sá, Oder Chiou,
	Peter Huewe, Puranjay Mohan, Rafael J. Wysocki, Ram Vegesna,
	Sudeep Holla, Suravee Suthikulpanit, Takashi Iwai, Thara Gopinath,
	Tony Luck, Troy Mitchell, Will Deacon, Xianwei Zhao, Yiting Deng,
	Yixun Lan, Zhang Rui

There was a bug report about setting IRQF_ONESHOT where it should have
not been set. I looked around for other mistakes in that area. There are
the following categories:

- Using custom primary irq handler doing exactly what
  irq_default_primary_handler() does

- Not using IRQF_ONESHOT but it looks like it is needed

- Using IRQF_ONESHOT but it looks like it should not have been used

- Using IRQF_ONESHOT but IRQF_NO_THREAD should be used

The outcome varies from harmless to problematic. Some examples:
- Missing IRQF_ONESHOT for a threaded interrupt.
  For level-typed interrupts it is essential to disable the interrupt
  while the thread is running in order to make progress. Missing it
  means the interrupt remains active and the thread has little chance to
  make progress.
  The irq-core will reject such request_irq() invocations but only if
  the primary handler is NULL, not if it is a copy of the default
  handler.

- Using IRQF_ONESHOT for a non-threaded interrupt.
  This makes no sense since the threaded handler is missing. It can
  lead to errors in forced-threaded environments such as PREEMPT_RT
  especially if the handler uses functions which can sleep only on
  PREEMPT_RT.


This series is touching multiple subsystems. Instead of sending many
single patches I decided to make one series. It would be nice if the
individual subsystems could apply the changes individually, there are no
dependencies as far as I can tell (except for int0002 but this is a
different story).

Sebastian Andrzej Siewior (21):
  genirq: Set IRQF_COND_ONESHOT in devm_request_irq().
  platform/x86: int0002: Remove IRQF_ONESHOT from request_irq()
  iommu/amd: Use core's primary handler and set IRQF_ONESHOT
  mailbox: bcm-ferxrm-mailbox: Use default primary handler
  bus: fsl-mc: Use default primary handler
  Bluetooth: btintel_pcie: Use IRQF_ONESHOT and default primary handler
  scsi: efct: Use IRQF_ONESHOT and default primary handler
  ARM: versatile: Remove IRQF_ONESHOT
  char: tpm: cr50: Remove IRQF_ONESHOT
  EDAC/altera: Remove IRQF_ONESHOT
  i2c: spacemit: Remove IRQF_ONESHOT
  ASoC: codecs: rt56*: Remove IRQF_ONESHOT
  usb: typec: fusb302: Remove IRQF_ONESHOT
  rtc: amlogic-a4: Remove IRQF_ONESHOT
  thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  perf/cxlpmu: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  mfd: wm8350-core: Use IRQF_ONESHOT
  iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  iio: Use IRQF_NO_THREAD
  iio: magnetometer: Remove IRQF_ONESHOT
  media: pci: mg4b: Use IRQF_NO_THREAD

 arch/arm/mach-versatile/spc.c              |  4 ++--
 drivers/bluetooth/btintel_pcie.c           |  9 ++-------
 drivers/bus/fsl-mc/dprc-driver.c           | 13 +------------
 drivers/char/tpm/tpm_tis_i2c_cr50.c        |  3 +--
 drivers/char/tpm/tpm_tis_spi_cr50.c        |  2 +-
 drivers/edac/altera_edac.c                 | 11 ++++-------
 drivers/i2c/busses/i2c-k1.c                |  2 +-
 drivers/iio/accel/adxl355_core.c           |  3 ++-
 drivers/iio/accel/adxl372.c                |  9 ++++-----
 drivers/iio/accel/bma180.c                 |  5 +++--
 drivers/iio/accel/mxc4005.c                | 11 ++++-------
 drivers/iio/accel/stk8ba50.c               | 11 ++++-------
 drivers/iio/adc/ad4170-4.c                 |  2 +-
 drivers/iio/adc/ad7766.c                   | 10 ++--------
 drivers/iio/adc/ad7768-1.c                 |  5 ++---
 drivers/iio/adc/ad7779.c                   |  2 +-
 drivers/iio/adc/mcp3911.c                  |  2 +-
 drivers/iio/adc/ti-ads131e08.c             |  2 +-
 drivers/iio/chemical/ens160_core.c         |  9 +++------
 drivers/iio/gyro/adxrs290.c                |  2 +-
 drivers/iio/gyro/itg3200_buffer.c          |  2 +-
 drivers/iio/health/afe4403.c               |  9 ++++-----
 drivers/iio/health/afe4404.c               |  9 ++++-----
 drivers/iio/light/si1145.c                 |  2 +-
 drivers/iio/magnetometer/ak8975.c          |  2 +-
 drivers/iio/magnetometer/bmc150_magn.c     |  9 +++------
 drivers/iio/pressure/dlhl60d.c             |  6 +++---
 drivers/iio/temperature/tmp006.c           | 10 ++++------
 drivers/iommu/amd/amd_iommu.h              |  1 -
 drivers/iommu/amd/init.c                   | 12 ++++--------
 drivers/iommu/amd/iommu.c                  |  5 -----
 drivers/mailbox/bcm-flexrm-mailbox.c       | 14 ++------------
 drivers/media/pci/mgb4/mgb4_trigger.c      |  2 +-
 drivers/perf/cxl_pmu.c                     |  2 +-
 drivers/platform/x86/intel/int0002_vgpio.c |  4 ++--
 drivers/rtc/rtc-amlogic-a4.c               |  2 +-
 drivers/scsi/elx/efct/efct_driver.c        |  8 +-------
 drivers/thermal/qcom/lmh.c                 |  2 +-
 drivers/usb/typec/tcpm/fusb302.c           |  3 +--
 include/linux/interrupt.h                  |  2 +-
 include/linux/mfd/wm8350/core.h            |  2 +-
 sound/soc/codecs/rt5640.c                  |  4 ++--
 sound/soc/codecs/rt5651.c                  |  2 +-
 sound/soc/codecs/rt5663.c                  |  4 ++--
 44 files changed, 83 insertions(+), 152 deletions(-)

-- 
2.51.0


^ permalink raw reply	[flat|nested] 75+ messages in thread

* [PATCH 01/21] genirq: Set IRQF_COND_ONESHOT in devm_request_irq().
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() Sebastian Andrzej Siewior
                   ` (21 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior

The flag IRQF_COND_ONESHOT was already force-added to request_irq()
because the ACPI SCI interrupt handler is using the ONESHOT and it
breaks all shared handler.
devm_request_irq() needs the same change since some users, such as
int0002_vgpio, are using this function instead.

Add IRQF_COND_ONESHOT to flags passed to devm_request_irq().

Fixes: c37927a203fa2 ("genirq: Set IRQF_COND_ONESHOT in request_irq()")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 include/linux/interrupt.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 266f2b39213a0..b2bb878abd113 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -228,7 +228,7 @@ static inline int __must_check
 devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler,
 		 unsigned long irqflags, const char *devname, void *dev_id)
 {
-	return devm_request_threaded_irq(dev, irq, handler, NULL, irqflags,
+	return devm_request_threaded_irq(dev, irq, handler, NULL, irqflags | IRQF_COND_ONESHOT,
 					 devname, dev_id);
 }
 
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq()
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 01/21] genirq: Set IRQF_COND_ONESHOT in devm_request_irq() Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:49   ` Sebastian Andrzej Siewior
  2026-01-24 10:21   ` Hans de Goede
  2026-01-23 11:36 ` [PATCH 03/21] iommu/amd: Use core's primary handler and set IRQF_ONESHOT Sebastian Andrzej Siewior
                   ` (20 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Hans de Goede, Ilpo Järvinen, platform-driver-x86,
	Borah, Chaitanya Kumar

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 can not fire
(again) while its handler is running.
The flag also disallows 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.

Cc: Hans de Goede <hansg@kernel.org>
Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: platform-driver-x86@vger.kernel.org
Reported-by: "Borah, Chaitanya Kumar" <chaitanya.kumar.borah@intel.com>
Closes: https://lore.kernel.org/all/555f1c56-0f74-41bf-8bd2-6217e0aab0c6@intel.com
Fixes: 8f812373d1958 ("platform/x86: intel: int0002_vgpio: Pass IRQF_ONESHOT to request_irq()")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 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


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 03/21] iommu/amd: Use core's primary handler and set IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 01/21] genirq: Set IRQF_COND_ONESHOT in devm_request_irq() Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 04/21] mailbox: bcm-ferxrm-mailbox: Use default primary handler Sebastian Andrzej Siewior
                   ` (19 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Joerg Roedel, Suravee Suthikulpanit, iommu

request_threaded_irq() is invoked with a primary and a secondary handler
and no flags are passed. The primary handler is the same as
irq_default_primary_handler() so there is no need to have an identical
copy.
The lack of the IRQF_ONESHOT can be dangerous because the interrupt
source is not masked while the threaded handler is active. This means,
especially on LEVEL typed interrupt lines, the interrupt can fire again
before the threaded handler had a chance to run.

Use the default primary interrupt handler by specifying NULL and set
IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Cc: Joerg Roedel <joro@8bytes.org>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Cc: iommu@lists.linux.dev
Fixes: 72fe00f01f9a3 ("x86/amd-iommu: Use threaded interupt handler")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/iommu/amd/amd_iommu.h |  1 -
 drivers/iommu/amd/init.c      | 12 ++++--------
 drivers/iommu/amd/iommu.c     |  5 -----
 3 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h
index b742ef1adb352..df1c238dc8885 100644
--- a/drivers/iommu/amd/amd_iommu.h
+++ b/drivers/iommu/amd/amd_iommu.h
@@ -15,7 +15,6 @@ irqreturn_t amd_iommu_int_thread(int irq, void *data);
 irqreturn_t amd_iommu_int_thread_evtlog(int irq, void *data);
 irqreturn_t amd_iommu_int_thread_pprlog(int irq, void *data);
 irqreturn_t amd_iommu_int_thread_galog(int irq, void *data);
-irqreturn_t amd_iommu_int_handler(int irq, void *data);
 void amd_iommu_restart_log(struct amd_iommu *iommu, const char *evt_type,
 			   u8 cntrl_intr, u8 cntrl_log,
 			   u32 status_run_mask, u32 status_overflow_mask);
diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c
index 384c90b4f90a0..62a7a718acf8f 100644
--- a/drivers/iommu/amd/init.c
+++ b/drivers/iommu/amd/init.c
@@ -2356,12 +2356,8 @@ static int iommu_setup_msi(struct amd_iommu *iommu)
 	if (r)
 		return r;
 
-	r = request_threaded_irq(iommu->dev->irq,
-				 amd_iommu_int_handler,
-				 amd_iommu_int_thread,
-				 0, "AMD-Vi",
-				 iommu);
-
+	r = request_threaded_irq(iommu->dev->irq, NULL, amd_iommu_int_thread,
+				 IRQF_ONESHOT, "AMD-Vi", iommu);
 	if (r) {
 		pci_disable_msi(iommu->dev);
 		return r;
@@ -2535,8 +2531,8 @@ static int __iommu_setup_intcapxt(struct amd_iommu *iommu, const char *devname,
 		return irq;
 	}
 
-	ret = request_threaded_irq(irq, amd_iommu_int_handler,
-				   thread_fn, 0, devname, iommu);
+	ret = request_threaded_irq(irq, NULL, thread_fn, IRQF_ONESHOT, devname,
+				   iommu);
 	if (ret) {
 		irq_domain_free_irqs(irq, 1);
 		irq_domain_remove(domain);
diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index 5d45795c367a6..bd577852618b7 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -1151,11 +1151,6 @@ irqreturn_t amd_iommu_int_thread(int irq, void *data)
 	return IRQ_HANDLED;
 }
 
-irqreturn_t amd_iommu_int_handler(int irq, void *data)
-{
-	return IRQ_WAKE_THREAD;
-}
-
 /****************************************************************************
  *
  * IOMMU command queuing functions
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 04/21] mailbox: bcm-ferxrm-mailbox: Use default primary handler
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (2 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 03/21] iommu/amd: Use core's primary handler and set IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 05/21] bus: fsl-mc: " Sebastian Andrzej Siewior
                   ` (18 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Jassi Brar

request_threaded_irq() is invoked with a primary and a secondary handler
and no flags are passed. The primary handler is the same as
irq_default_primary_handler() so there is no need to have an identical
copy.
The lack of the IRQF_ONESHOT can be dangerous because the interrupt
source is not masked while the threaded handler is active. This means,
especially on LEVEL typed interrupt lines, the interrupt can fire again
before the threaded handler had a chance to run.

Use the default primary interrupt handler by specifying NULL and set
IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Cc: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---

Has this by any chance been done as micro optimisation to avoid setting
IRQF_ONESHOT which disables the IRQ-line and could be avoided for MSI
typed interrupts? But since it IRQ-core requires this flag one could get
away with it by using a different primary handler.

 drivers/mailbox/bcm-flexrm-mailbox.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c b/drivers/mailbox/bcm-flexrm-mailbox.c
index 41f79e51d9e5a..4255fefc3a5a0 100644
--- a/drivers/mailbox/bcm-flexrm-mailbox.c
+++ b/drivers/mailbox/bcm-flexrm-mailbox.c
@@ -1173,14 +1173,6 @@ static int flexrm_debugfs_stats_show(struct seq_file *file, void *offset)
 
 /* ====== FlexRM interrupt handler ===== */
 
-static irqreturn_t flexrm_irq_event(int irq, void *dev_id)
-{
-	/* We only have MSI for completions so just wakeup IRQ thread */
-	/* Ring related errors will be informed via completion descriptors */
-
-	return IRQ_WAKE_THREAD;
-}
-
 static irqreturn_t flexrm_irq_thread(int irq, void *dev_id)
 {
 	flexrm_process_completions(dev_id);
@@ -1271,10 +1263,8 @@ static int flexrm_startup(struct mbox_chan *chan)
 		ret = -ENODEV;
 		goto fail_free_cmpl_memory;
 	}
-	ret = request_threaded_irq(ring->irq,
-				   flexrm_irq_event,
-				   flexrm_irq_thread,
-				   0, dev_name(ring->mbox->dev), ring);
+	ret = request_threaded_irq(ring->irq, NULL, flexrm_irq_thread,
+				   IRQF_ONESHOT, dev_name(ring->mbox->dev), ring);
 	if (ret) {
 		dev_err(ring->mbox->dev,
 			"failed to request ring%d IRQ\n", ring->num);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 05/21] bus: fsl-mc: Use default primary handler
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (3 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 04/21] mailbox: bcm-ferxrm-mailbox: Use default primary handler Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 14:28   ` Ioana Ciornei
  2026-01-23 11:36 ` [PATCH 06/21] Bluetooth: btintel_pcie: Use IRQF_ONESHOT and " Sebastian Andrzej Siewior
                   ` (17 subsequent siblings)
  22 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Ioana Ciornei, linuxppc-dev

There is no added value in dprc_irq0_handler() compared to
irq_default_primary_handler().

Use the default primary interrupt handler by specifying NULL.

Cc: Ioana Ciornei <ioana.ciornei@nxp.com>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/bus/fsl-mc/dprc-driver.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/bus/fsl-mc/dprc-driver.c b/drivers/bus/fsl-mc/dprc-driver.c
index c63a7e688db6a..db67442addad2 100644
--- a/drivers/bus/fsl-mc/dprc-driver.c
+++ b/drivers/bus/fsl-mc/dprc-driver.c
@@ -380,17 +380,6 @@ int dprc_scan_container(struct fsl_mc_device *mc_bus_dev,
 }
 EXPORT_SYMBOL_GPL(dprc_scan_container);
 
-/**
- * dprc_irq0_handler - Regular ISR for DPRC interrupt 0
- *
- * @irq_num: IRQ number of the interrupt being handled
- * @arg: Pointer to device structure
- */
-static irqreturn_t dprc_irq0_handler(int irq_num, void *arg)
-{
-	return IRQ_WAKE_THREAD;
-}
-
 /**
  * dprc_irq0_handler_thread - Handler thread function for DPRC interrupt 0
  *
@@ -527,7 +516,7 @@ static int register_dprc_irq_handler(struct fsl_mc_device *mc_dev)
 	 */
 	error = devm_request_threaded_irq(&mc_dev->dev,
 					  irq->virq,
-					  dprc_irq0_handler,
+					  NULL,
 					  dprc_irq0_handler_thread,
 					  IRQF_NO_SUSPEND | IRQF_ONESHOT,
 					  dev_name(&mc_dev->dev),
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 06/21] Bluetooth: btintel_pcie: Use IRQF_ONESHOT and default primary handler
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (4 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 05/21] bus: fsl-mc: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 07/21] scsi: efct: " Sebastian Andrzej Siewior
                   ` (16 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth

There is no added value in btintel_pcie_msix_isr() compared to
irq_default_primary_handler().
Using a threaded interrupt without a dedicated primary handler mandates
the IRQF_ONESHOT flag to mask the interrupt source while the threaded
handler is active. Otherwise the interrupt can fire again before the
threaded handler had a chance to run.

Use the default primary interrupt handler by specifying NULL and set
IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Cc: Marcel Holtmann <marcel@holtmann.org>
Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Fixes: c2b636b3f788d ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/bluetooth/btintel_pcie.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c
index 2936b535479f2..704767b334b98 100644
--- a/drivers/bluetooth/btintel_pcie.c
+++ b/drivers/bluetooth/btintel_pcie.c
@@ -1431,11 +1431,6 @@ static void btintel_pcie_msix_rx_handle(struct btintel_pcie_data *data)
 	}
 }
 
-static irqreturn_t btintel_pcie_msix_isr(int irq, void *data)
-{
-	return IRQ_WAKE_THREAD;
-}
-
 static inline bool btintel_pcie_is_rxq_empty(struct btintel_pcie_data *data)
 {
 	return data->ia.cr_hia[BTINTEL_PCIE_RXQ_NUM] == data->ia.cr_tia[BTINTEL_PCIE_RXQ_NUM];
@@ -1537,9 +1532,9 @@ static int btintel_pcie_setup_irq(struct btintel_pcie_data *data)
 
 		err = devm_request_threaded_irq(&data->pdev->dev,
 						msix_entry->vector,
-						btintel_pcie_msix_isr,
+						NULL,
 						btintel_pcie_irq_msix_handler,
-						IRQF_SHARED,
+						IRQF_ONESHOT | IRQF_SHARED,
 						KBUILD_MODNAME,
 						msix_entry);
 		if (err) {
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 07/21] scsi: efct: Use IRQF_ONESHOT and default primary handler
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (5 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 06/21] Bluetooth: btintel_pcie: Use IRQF_ONESHOT and " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-02-04  3:02   ` Martin K. Petersen
  2026-01-23 11:36 ` [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
                   ` (15 subsequent siblings)
  22 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Ram Vegesna, James E.J. Bottomley, Martin K. Petersen, linux-scsi,
	target-devel

There is no added value in efct_intr_msix() compared to
irq_default_primary_handler().

Using a threaded interrupt without a dedicated primary handler mandates
the IRQF_ONESHOT flag to mask the interrupt source while the threaded
handler is active. Otherwise the interrupt can fire again before the
threaded handler had a chance to run.

Use the default primary interrupt handler by specifying NULL and set
IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Cc: Ram Vegesna <ram.vegesna@broadcom.com>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org
Cc: target-devel@vger.kernel.org
Fixes: 4df84e8466242 ("scsi: elx: efct: Driver initialization routines")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/scsi/elx/efct/efct_driver.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/scsi/elx/efct/efct_driver.c b/drivers/scsi/elx/efct/efct_driver.c
index 1bd42f7db1773..528399f725d42 100644
--- a/drivers/scsi/elx/efct/efct_driver.c
+++ b/drivers/scsi/elx/efct/efct_driver.c
@@ -415,12 +415,6 @@ efct_intr_thread(int irq, void *handle)
 	return IRQ_HANDLED;
 }
 
-static irqreturn_t
-efct_intr_msix(int irq, void *handle)
-{
-	return IRQ_WAKE_THREAD;
-}
-
 static int
 efct_setup_msix(struct efct *efct, u32 num_intrs)
 {
@@ -450,7 +444,7 @@ efct_setup_msix(struct efct *efct, u32 num_intrs)
 		intr_ctx->index = i;
 
 		rc = request_threaded_irq(pci_irq_vector(efct->pci, i),
-					  efct_intr_msix, efct_intr_thread, 0,
+					  NULL, efct_intr_thread, IRQF_ONESHOT,
 					  EFCT_DRIVER_NAME, intr_ctx);
 		if (rc) {
 			dev_err(&efct->pci->dev,
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (6 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 07/21] scsi: efct: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 15:26   ` Sudeep Holla
  2026-01-27  9:42   ` Linus Walleij
  2026-01-23 11:36 ` [PATCH 09/21] char: tpm: cr50: " Sebastian Andrzej Siewior
                   ` (14 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Linus Walleij, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	linux-arm-kernel

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 can not fire
(again) while its handler is running.

Revert adding IRQF_ONESHOT to irqflags.

Cc: Linus Walleij <linusw@kernel.org>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 arch/arm/mach-versatile/spc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-versatile/spc.c b/arch/arm/mach-versatile/spc.c
index 812db32448fcd..2d27777a00d33 100644
--- a/arch/arm/mach-versatile/spc.c
+++ b/arch/arm/mach-versatile/spc.c
@@ -459,8 +459,8 @@ int __init ve_spc_init(void __iomem *baseaddr, u32 a15_clusid, int irq)
 
 	readl_relaxed(info->baseaddr + PWC_STATUS);
 
-	ret = request_irq(irq, ve_spc_irq_handler, IRQF_TRIGGER_HIGH
-				| IRQF_ONESHOT, "vexpress-spc", info);
+	ret = request_irq(irq, ve_spc_irq_handler, IRQF_TRIGGER_HIGH,
+			  "vexpress-spc", info);
 	if (ret) {
 		pr_err(SPCLOG "IRQ %d request failed\n", irq);
 		kfree(info);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 09/21] char: tpm: cr50: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (7 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-25 16:50   ` Jarkko Sakkinen
  2026-01-23 11:36 ` [PATCH 10/21] EDAC/altera: " Sebastian Andrzej Siewior
                   ` (13 subsequent siblings)
  22 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Peter Huewe, Jarkko Sakkinen, Jason Gunthorpe, linux-integrity

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Peter Huewe <peterhuewe@gmx.de>
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-integrity@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/char/tpm/tpm_tis_i2c_cr50.c | 3 +--
 drivers/char/tpm/tpm_tis_spi_cr50.c | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c b/drivers/char/tpm/tpm_tis_i2c_cr50.c
index fc6891a0b6936..b48cacacc0664 100644
--- a/drivers/char/tpm/tpm_tis_i2c_cr50.c
+++ b/drivers/char/tpm/tpm_tis_i2c_cr50.c
@@ -749,8 +749,7 @@ static int tpm_cr50_i2c_probe(struct i2c_client *client)
 
 	if (client->irq > 0) {
 		rc = devm_request_irq(dev, client->irq, tpm_cr50_i2c_int_handler,
-				      IRQF_TRIGGER_FALLING | IRQF_ONESHOT |
-				      IRQF_NO_AUTOEN,
+				      IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN,
 				      dev->driver->name, chip);
 		if (rc < 0) {
 			dev_err(dev, "Failed to probe IRQ %d\n", client->irq);
diff --git a/drivers/char/tpm/tpm_tis_spi_cr50.c b/drivers/char/tpm/tpm_tis_spi_cr50.c
index f4937280e9406..32920b4cecfb4 100644
--- a/drivers/char/tpm/tpm_tis_spi_cr50.c
+++ b/drivers/char/tpm/tpm_tis_spi_cr50.c
@@ -287,7 +287,7 @@ int cr50_spi_probe(struct spi_device *spi)
 	if (spi->irq > 0) {
 		ret = devm_request_irq(&spi->dev, spi->irq,
 				       cr50_spi_irq_handler,
-				       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+				       IRQF_TRIGGER_RISING,
 				       "cr50_spi", cr50_phy);
 		if (ret < 0) {
 			if (ret == -EPROBE_DEFER)
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 10/21] EDAC/altera: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (8 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 09/21] char: tpm: cr50: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 11/21] i2c: spacemit: " Sebastian Andrzej Siewior
                   ` (12 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Dinh Nguyen, Borislav Petkov, Tony Luck, linux-edac

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-edac@vger.kernel.org
Fixes: a29d64a45eed1 ("EDAC, altera: Add IRQ Flags to disable IRQ while handling")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/edac/altera_edac.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
index 0c5b94e64ea15..4edd2088c2db6 100644
--- a/drivers/edac/altera_edac.c
+++ b/drivers/edac/altera_edac.c
@@ -1563,8 +1563,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
 		goto err_release_group_1;
 	}
 	rc = devm_request_irq(&altdev->ddev, altdev->sb_irq,
-			      prv->ecc_irq_handler,
-			      IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+			      prv->ecc_irq_handler, IRQF_TRIGGER_HIGH,
 			      ecc_name, altdev);
 	if (rc) {
 		edac_printk(KERN_ERR, EDAC_DEVICE, "PortB SBERR IRQ error\n");
@@ -1587,8 +1586,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
 		goto err_release_group_1;
 	}
 	rc = devm_request_irq(&altdev->ddev, altdev->db_irq,
-			      prv->ecc_irq_handler,
-			      IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+			      prv->ecc_irq_handler, IRQF_TRIGGER_HIGH,
 			      ecc_name, altdev);
 	if (rc) {
 		edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
@@ -1970,8 +1968,7 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
 		goto err_release_group1;
 	}
 	rc = devm_request_irq(edac->dev, altdev->sb_irq, prv->ecc_irq_handler,
-			      IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
-			      ecc_name, altdev);
+			      IRQF_TRIGGER_HIGH, ecc_name, altdev);
 	if (rc) {
 		edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n");
 		goto err_release_group1;
@@ -1993,7 +1990,7 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,
 		goto err_release_group1;
 	}
 	rc = devm_request_irq(edac->dev, altdev->db_irq, prv->ecc_irq_handler,
-			      IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
+			      IRQF_TRIGGER_HIGH,
 			      ecc_name, altdev);
 	if (rc) {
 		edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n");
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 11/21] i2c: spacemit: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (9 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 10/21] EDAC/altera: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 20:53   ` Yixun Lan
  2026-01-26  4:21   ` patchwork-bot+linux-riscv
  2026-01-23 11:36 ` [PATCH 12/21] ASoC: codecs: rt56*: " Sebastian Andrzej Siewior
                   ` (11 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Troy Mitchell, Andi Shyti, Yixun Lan, linux-i2c, linux-riscv

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Cc: Andi Shyti <andi.shyti@kernel.org>
Cc: Yixun Lan <dlan@gentoo.org>
Cc: linux-i2c@vger.kernel.org
Cc: linux-riscv@lists.infradead.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/i2c/busses/i2c-k1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-k1.c b/drivers/i2c/busses/i2c-k1.c
index d42c03ef5db59..8ef6d5d1927b7 100644
--- a/drivers/i2c/busses/i2c-k1.c
+++ b/drivers/i2c/busses/i2c-k1.c
@@ -566,7 +566,7 @@ static int spacemit_i2c_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, i2c->irq, "failed to get irq resource");
 
 	ret = devm_request_irq(i2c->dev, i2c->irq, spacemit_i2c_irq_handler,
-			       IRQF_NO_SUSPEND | IRQF_ONESHOT, dev_name(i2c->dev), i2c);
+			       IRQF_NO_SUSPEND, dev_name(i2c->dev), i2c);
 	if (ret)
 		return dev_err_probe(dev, ret, "failed to request irq");
 
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 12/21] ASoC: codecs: rt56*: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (10 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 11/21] i2c: spacemit: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 11:36 ` [PATCH 13/21] usb: typec: fusb302: " Sebastian Andrzej Siewior
                   ` (10 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Oder Chiou, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, linux-sound

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Oder Chiou <oder_chiou@realtek.com>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.com>
Cc: linux-sound@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 sound/soc/codecs/rt5640.c | 4 ++--
 sound/soc/codecs/rt5651.c | 2 +-
 sound/soc/codecs/rt5663.c | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 4c08c274f50e2..db2222e6f2e75 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -2564,7 +2564,7 @@ static void rt5640_enable_jack_detect(struct snd_soc_component *component,
 		rt5640->use_platform_clock = jack_data->use_platform_clock;
 
 	ret = request_irq(rt5640->irq, rt5640_irq,
-			  IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+			  IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
 			  "rt5640", rt5640);
 	if (ret) {
 		dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret);
@@ -2618,7 +2618,7 @@ static void rt5640_enable_hda_jack_detect(
 	rt5640->jack = jack;
 
 	ret = request_irq(rt5640->irq, rt5640_irq,
-			  IRQF_TRIGGER_RISING | IRQF_ONESHOT, "rt5640", rt5640);
+			  IRQF_TRIGGER_RISING, "rt5640", rt5640);
 	if (ret) {
 		dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret);
 		rt5640->jack = NULL;
diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
index 9af65a38f0ee6..23c4bf3da2982 100644
--- a/sound/soc/codecs/rt5651.c
+++ b/sound/soc/codecs/rt5651.c
@@ -2262,7 +2262,7 @@ static int rt5651_i2c_probe(struct i2c_client *i2c)
 
 	ret = devm_request_irq(&i2c->dev, rt5651->irq, rt5651_irq,
 			       IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
-			       | IRQF_ONESHOT | IRQF_NO_AUTOEN, "rt5651", rt5651);
+			       | IRQF_NO_AUTOEN, "rt5651", rt5651);
 	if (ret) {
 		dev_warn(&i2c->dev, "Failed to request IRQ %d: %d\n",
 			 rt5651->irq, ret);
diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c
index e4d8785e64c10..eee1c98cc4aa6 100644
--- a/sound/soc/codecs/rt5663.c
+++ b/sound/soc/codecs/rt5663.c
@@ -3689,8 +3689,8 @@ static int rt5663_i2c_probe(struct i2c_client *i2c)
 
 	if (i2c->irq) {
 		ret = request_irq(i2c->irq, rt5663_irq,
-			IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
-			| IRQF_ONESHOT, "rt5663", rt5663);
+			IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+			"rt5663", rt5663);
 		if (ret) {
 			dev_err(&i2c->dev, "%s Failed to request IRQ: %d\n",
 				__func__, ret);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 13/21] usb: typec: fusb302: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (11 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 12/21] ASoC: codecs: rt56*: " Sebastian Andrzej Siewior
@ 2026-01-23 11:36 ` Sebastian Andrzej Siewior
  2026-01-23 16:07   ` Greg Kroah-Hartman
  2026-01-26 14:21   ` Heikki Krogerus
  2026-01-23 11:37 ` [PATCH 14/21] rtc: amlogic-a4: " Sebastian Andrzej Siewior
                   ` (9 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Heikki Krogerus, Greg Kroah-Hartman, linux-usb

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Fixes: 309b6341d5570 ("usb: typec: fusb302: Revert incorrect threaded irq fix")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/usb/typec/tcpm/fusb302.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 870a71f953f6c..19ff8217818e7 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -1756,8 +1756,7 @@ static int fusb302_probe(struct i2c_client *client)
 	}
 
 	ret = request_irq(chip->gpio_int_n_irq, fusb302_irq_intn,
-			  IRQF_ONESHOT | IRQF_TRIGGER_LOW,
-			  "fsc_interrupt_int_n", chip);
+			  IRQF_TRIGGER_LOW, "fsc_interrupt_int_n", chip);
 	if (ret < 0) {
 		dev_err(dev, "cannot request IRQ for GPIO Int_N, ret=%d", ret);
 		goto tcpm_unregister_port;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 14/21] rtc: amlogic-a4: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (12 preceding siblings ...)
  2026-01-23 11:36 ` [PATCH 13/21] usb: typec: fusb302: " Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-26  6:05   ` Xianwei Zhao
  2026-01-23 11:37 ` [PATCH 15/21] thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
                   ` (8 subsequent siblings)
  22 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Yiting Deng, Xianwei Zhao, Alexandre Belloni, linux-amlogic,
	linux-rtc

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

Remove IRQF_ONESHOT from irqflags.

Cc: Yiting Deng <yiting.deng@amlogic.com>
Cc: Xianwei Zhao <xianwei.zhao@amlogic.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: linux-amlogic@lists.infradead.org
Cc: linux-rtc@vger.kernel.org
Fixes: c89ac9182ee29 ("rtc: support for the Amlogic on-chip RTC")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/rtc/rtc-amlogic-a4.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-amlogic-a4.c b/drivers/rtc/rtc-amlogic-a4.c
index 123fb372fc9fe..50938c35af36a 100644
--- a/drivers/rtc/rtc-amlogic-a4.c
+++ b/drivers/rtc/rtc-amlogic-a4.c
@@ -369,7 +369,7 @@ static int aml_rtc_probe(struct platform_device *pdev)
 		return PTR_ERR(rtc->rtc_dev);
 
 	ret = devm_request_irq(dev, rtc->irq, aml_rtc_handler,
-			       IRQF_ONESHOT, "aml-rtc alarm", rtc);
+			       0, "aml-rtc alarm", rtc);
 	if (ret) {
 		dev_err_probe(dev, ret, "IRQ%d request failed, ret = %d\n",
 			      rtc->irq, ret);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 15/21] thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (13 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 14/21] rtc: amlogic-a4: " Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 11:37 ` [PATCH 16/21] perf/cxlpmu: " Sebastian Andrzej Siewior
                   ` (7 subsequent siblings)
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Amit Kucheria, Thara Gopinath, Rafael J. Wysocki, Daniel Lezcano,
	Zhang Rui, Lukasz Luba, linux-pm, linux-arm-msm

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

The intention here was probably not allowing forced-threading.

Replace IRQF_ONESHOT with IRQF_NO_THREAD.

Cc: Amit Kucheria <amitk@kernel.org>
Cc: Thara Gopinath <thara.gopinath@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Lukasz Luba <lukasz.luba@arm.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/thermal/qcom/lmh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/thermal/qcom/lmh.c b/drivers/thermal/qcom/lmh.c
index ddadcfada5136..3d072b7a4a6dd 100644
--- a/drivers/thermal/qcom/lmh.c
+++ b/drivers/thermal/qcom/lmh.c
@@ -220,7 +220,7 @@ static int lmh_probe(struct platform_device *pdev)
 	/* Disable the irq and let cpufreq enable it when ready to handle the interrupt */
 	irq_set_status_flags(lmh_data->irq, IRQ_NOAUTOEN);
 	ret = devm_request_irq(dev, lmh_data->irq, lmh_handle_irq,
-			       IRQF_ONESHOT | IRQF_NO_SUSPEND,
+			       IRQF_NO_THREAD | IRQF_NO_SUSPEND,
 			       "lmh-irq", lmh_data);
 	if (ret) {
 		dev_err(dev, "Error %d registering irq %x\n", ret, lmh_data->irq);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 16/21] perf/cxlpmu: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (14 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 15/21] thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 12:05   ` Jonathan Cameron
  2026-01-23 11:37 ` [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT Sebastian Andrzej Siewior
                   ` (6 subsequent siblings)
  22 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Jonathan Cameron, Will Deacon, Mark Rutland, linux-cxl,
	linux-arm-kernel

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

The intention here was probably not allowing forced-threading.

Replace IRQF_ONESHOT with IRQF_NO_THREAD.

Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-cxl@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/perf/cxl_pmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/perf/cxl_pmu.c b/drivers/perf/cxl_pmu.c
index d094030220bf2..68a54d97d2a8a 100644
--- a/drivers/perf/cxl_pmu.c
+++ b/drivers/perf/cxl_pmu.c
@@ -877,7 +877,7 @@ static int cxl_pmu_probe(struct device *dev)
 	if (!irq_name)
 		return -ENOMEM;
 
-	rc = devm_request_irq(dev, irq, cxl_pmu_irq, IRQF_SHARED | IRQF_ONESHOT,
+	rc = devm_request_irq(dev, irq, cxl_pmu_irq, IRQF_SHARED | IRQF_NO_THREAD,
 			      irq_name, info);
 	if (rc)
 		return rc;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (15 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 16/21] perf/cxlpmu: " Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 14:52   ` Andy Shevchenko
  2026-01-26  9:32   ` Charles Keepax
  2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
                   ` (5 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Lee Jones, Andy Shevchenko, patches, Mark Brown

Using a threaded interrupt without a dedicated primary handler mandates
the IRQF_ONESHOT flag to mask the interrupt source while the threaded
handler is active. Otherwise the interrupt can fire again before the
threaded handler had a chance to run.

Mark explained that this should not happen with this hardware since it a
slow irqchip which is behind an I2C/ SPI bus but the IRQ-core will
refuse to accept such a handler.

Set IRQF_ONESHOT so the interrupt source is masked until the secondary
handler is done.

Cc: Lee Jones <lee@kernel.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: patches@opensource.cirrus.com
Cc: Mark Brown <broonie@kernel.org>
Fixes: 1c6c69525b40e ("genirq: Reject bogus threaded irq requests")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 include/linux/mfd/wm8350/core.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h
index 5f70d3b5d1b1a..097ef4dfcdac8 100644
--- a/include/linux/mfd/wm8350/core.h
+++ b/include/linux/mfd/wm8350/core.h
@@ -667,7 +667,7 @@ static inline int wm8350_register_irq(struct wm8350 *wm8350, int irq,
 		return -ENODEV;
 
 	return request_threaded_irq(irq + wm8350->irq_base, NULL,
-				    handler, flags, name, data);
+				    handler, flags | IRQF_ONESHOT, name, data);
 }
 
 static inline void wm8350_free_irq(struct wm8350 *wm8350, int irq, void *data)
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (16 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 14:48   ` Andy Shevchenko
                     ` (2 more replies)
  2026-01-23 11:37 ` [PATCH 19/21] iio: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
                   ` (4 subsequent siblings)
  22 siblings, 3 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Lars-Peter Clausen, Michael Hennerich, Puranjay Mohan,
	Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	Marcelo Schmitt, Marcus Folkesson, Kent Gustavsson, Gustavo Silva,
	Nishant Malpani, linux-iio

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.

The intention here was probably not allowing forced-threading for
handlers such as iio_trigger_generic_data_rdy_poll() will intends to
invoke hard-interrupt handlers.

Replace IRQF_ONESHOT with IRQF_NO_THREAD.

Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Michael Hennerich <Michael.Hennerich@analog.com>
Cc: Puranjay Mohan <puranjay@kernel.org>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: David Lechner <dlechner@baylibre.com>
Cc: "Nuno Sá" <nuno.sa@analog.com>
Cc: Andy Shevchenko <andy@kernel.org>
Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
Cc: Kent Gustavsson <kent@minoris.se>
Cc: Gustavo Silva <gustavograzs@gmail.com>
Cc: Nishant Malpani <nish.malpani25@gmail.com>
Cc: linux-iio@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/iio/accel/adxl355_core.c       |  3 ++-
 drivers/iio/accel/adxl372.c            |  9 ++++-----
 drivers/iio/accel/mxc4005.c            | 11 ++++-------
 drivers/iio/accel/stk8ba50.c           | 11 ++++-------
 drivers/iio/adc/ad4170-4.c             |  2 +-
 drivers/iio/adc/ad7768-1.c             |  5 ++---
 drivers/iio/adc/ad7779.c               |  2 +-
 drivers/iio/adc/mcp3911.c              |  2 +-
 drivers/iio/adc/ti-ads131e08.c         |  2 +-
 drivers/iio/chemical/ens160_core.c     |  9 +++------
 drivers/iio/gyro/adxrs290.c            |  2 +-
 drivers/iio/health/afe4403.c           |  9 ++++-----
 drivers/iio/health/afe4404.c           |  9 ++++-----
 drivers/iio/magnetometer/bmc150_magn.c |  9 +++------
 drivers/iio/pressure/dlhl60d.c         |  6 +++---
 drivers/iio/temperature/tmp006.c       | 10 ++++------
 16 files changed, 42 insertions(+), 59 deletions(-)

diff --git a/drivers/iio/accel/adxl355_core.c b/drivers/iio/accel/adxl355_core.c
index 5fc7f814b9077..04caa493176d3 100644
--- a/drivers/iio/accel/adxl355_core.c
+++ b/drivers/iio/accel/adxl355_core.c
@@ -770,7 +770,8 @@ static int adxl355_probe_trigger(struct iio_dev *indio_dev, int irq)
 
 	ret = devm_request_irq(data->dev, irq,
 			       &iio_trigger_generic_data_rdy_poll,
-			       IRQF_ONESHOT, "adxl355_irq", data->dready_trig);
+			       IRQF_NO_THREAD,
+			       "adxl355_irq", data->dready_trig);
 	if (ret)
 		return dev_err_probe(data->dev, ret, "request irq %d failed\n",
 				     irq);
diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
index 46d518a2a0291..2f6aa52aeba51 100644
--- a/drivers/iio/accel/adxl372.c
+++ b/drivers/iio/accel/adxl372.c
@@ -1247,11 +1247,10 @@ int adxl372_probe(struct device *dev, struct regmap *regmap,
 
 		indio_dev->trig = iio_trigger_get(st->dready_trig);
 
-		ret = devm_request_threaded_irq(dev, st->irq,
-					iio_trigger_generic_data_rdy_poll,
-					NULL,
-					IRQF_TRIGGER_RISING | IRQF_ONESHOT,
-					indio_dev->name, st->dready_trig);
+		ret = devm_request_irq(dev, st->irq,
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
+				       indio_dev->name, st->dready_trig);
 		if (ret < 0)
 			return ret;
 	}
diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
index ac973d871c8bb..a2c3cf13d0981 100644
--- a/drivers/iio/accel/mxc4005.c
+++ b/drivers/iio/accel/mxc4005.c
@@ -486,13 +486,10 @@ static int mxc4005_probe(struct i2c_client *client)
 		if (!data->dready_trig)
 			return -ENOMEM;
 
-		ret = devm_request_threaded_irq(&client->dev, client->irq,
-						iio_trigger_generic_data_rdy_poll,
-						NULL,
-						IRQF_TRIGGER_FALLING |
-						IRQF_ONESHOT,
-						"mxc4005_event",
-						data->dready_trig);
+		ret = devm_request_irq(&client->dev, client->irq,
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
+				       "mxc4005_event", data->dready_trig);
 		if (ret) {
 			dev_err(&client->dev,
 				"failed to init threaded irq\n");
diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
index 384f1fbcbcb37..a9ff2a273fe1c 100644
--- a/drivers/iio/accel/stk8ba50.c
+++ b/drivers/iio/accel/stk8ba50.c
@@ -428,13 +428,10 @@ static int stk8ba50_probe(struct i2c_client *client)
 	}
 
 	if (client->irq > 0) {
-		ret = devm_request_threaded_irq(&client->dev, client->irq,
-						stk8ba50_data_rdy_trig_poll,
-						NULL,
-						IRQF_TRIGGER_RISING |
-						IRQF_ONESHOT,
-						"stk8ba50_event",
-						indio_dev);
+		ret = devm_request_irq(&client->dev, client->irq,
+				       stk8ba50_data_rdy_trig_poll,
+				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
+				       "stk8ba50_event", indio_dev);
 		if (ret < 0) {
 			dev_err(&client->dev, "request irq %d failed\n",
 				client->irq);
diff --git a/drivers/iio/adc/ad4170-4.c b/drivers/iio/adc/ad4170-4.c
index efaed92191f1b..82205bfae531e 100644
--- a/drivers/iio/adc/ad4170-4.c
+++ b/drivers/iio/adc/ad4170-4.c
@@ -2973,7 +2973,7 @@ static int ad4170_probe(struct spi_device *spi)
 
 	if (spi->irq) {
 		ret = devm_request_irq(dev, spi->irq, &ad4170_irq_handler,
-				       IRQF_ONESHOT, indio_dev->name, indio_dev);
+				       IRQF_NO_THREAD, indio_dev->name, indio_dev);
 		if (ret)
 			return ret;
 
diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
index d96802b7847a6..84ce23c8e5782 100644
--- a/drivers/iio/adc/ad7768-1.c
+++ b/drivers/iio/adc/ad7768-1.c
@@ -1394,9 +1394,8 @@ static int ad7768_probe(struct spi_device *spi)
 	if (ret)
 		return ret;
 
-	ret = devm_request_irq(&spi->dev, spi->irq,
-			       &ad7768_interrupt,
-			       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+	ret = devm_request_irq(&spi->dev, spi->irq, &ad7768_interrupt,
+			       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
 			       indio_dev->name, indio_dev);
 	if (ret)
 		return ret;
diff --git a/drivers/iio/adc/ad7779.c b/drivers/iio/adc/ad7779.c
index aac5049c9a07b..695cc79e78da5 100644
--- a/drivers/iio/adc/ad7779.c
+++ b/drivers/iio/adc/ad7779.c
@@ -840,7 +840,7 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev
 	iio_trigger_set_drvdata(st->trig, st);
 
 	ret = devm_request_irq(dev, st->spi->irq, iio_trigger_generic_data_rdy_poll,
-			       IRQF_ONESHOT | IRQF_NO_AUTOEN, indio_dev->name,
+			       IRQF_NO_THREAD | IRQF_NO_AUTOEN, indio_dev->name,
 			       st->trig);
 	if (ret)
 		return dev_err_probe(dev, ret, "request IRQ %d failed\n",
diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c
index a6f21791c6859..ddc3721f3f688 100644
--- a/drivers/iio/adc/mcp3911.c
+++ b/drivers/iio/adc/mcp3911.c
@@ -815,7 +815,7 @@ static int mcp3911_probe(struct spi_device *spi)
 		 * don't enable the interrupt to avoid extra load on the system.
 		 */
 		ret = devm_request_irq(dev, spi->irq, &iio_trigger_generic_data_rdy_poll,
-				       IRQF_NO_AUTOEN | IRQF_ONESHOT,
+				       IRQF_NO_AUTOEN | IRQF_NO_THREAD,
 				       indio_dev->name, adc->trig);
 		if (ret)
 			return ret;
diff --git a/drivers/iio/adc/ti-ads131e08.c b/drivers/iio/adc/ti-ads131e08.c
index c9a20024d6b11..a585621b0bc30 100644
--- a/drivers/iio/adc/ti-ads131e08.c
+++ b/drivers/iio/adc/ti-ads131e08.c
@@ -827,7 +827,7 @@ static int ads131e08_probe(struct spi_device *spi)
 	if (spi->irq) {
 		ret = devm_request_irq(&spi->dev, spi->irq,
 			ads131e08_interrupt,
-			IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+			IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
 			spi->dev.driver->name, indio_dev);
 		if (ret)
 			return dev_err_probe(&spi->dev, ret,
diff --git a/drivers/iio/chemical/ens160_core.c b/drivers/iio/chemical/ens160_core.c
index 86bde4a91bf7e..bbc96c4c62838 100644
--- a/drivers/iio/chemical/ens160_core.c
+++ b/drivers/iio/chemical/ens160_core.c
@@ -316,12 +316,9 @@ static int ens160_setup_trigger(struct iio_dev *indio_dev, int irq)
 
 	indio_dev->trig = iio_trigger_get(trig);
 
-	ret = devm_request_threaded_irq(dev, irq,
-					iio_trigger_generic_data_rdy_poll,
-					NULL,
-					IRQF_ONESHOT,
-					indio_dev->name,
-					indio_dev->trig);
+	ret = devm_request_irq(dev, irq, iio_trigger_generic_data_rdy_poll,
+			       IRQF_NO_THREAD, indio_dev->name,
+			       indio_dev->trig);
 	if (ret)
 		return dev_err_probe(dev, ret, "failed to request irq\n");
 
diff --git a/drivers/iio/gyro/adxrs290.c b/drivers/iio/gyro/adxrs290.c
index 8fcb41f45baac..3efe385ebedc4 100644
--- a/drivers/iio/gyro/adxrs290.c
+++ b/drivers/iio/gyro/adxrs290.c
@@ -597,7 +597,7 @@ static int adxrs290_probe_trigger(struct iio_dev *indio_dev)
 
 	ret = devm_request_irq(&st->spi->dev, st->spi->irq,
 			       &iio_trigger_generic_data_rdy_poll,
-			       IRQF_ONESHOT, "adxrs290_irq", st->dready_trig);
+			       IRQF_NO_THREAD, "adxrs290_irq", st->dready_trig);
 	if (ret < 0)
 		return dev_err_probe(&st->spi->dev, ret,
 				     "request irq %d failed\n", st->spi->irq);
diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c
index 0e5a512e3bb8f..d358f4d5e5da8 100644
--- a/drivers/iio/health/afe4403.c
+++ b/drivers/iio/health/afe4403.c
@@ -540,11 +540,10 @@ static int afe4403_probe(struct spi_device *spi)
 			return ret;
 		}
 
-		ret = devm_request_threaded_irq(dev, afe->irq,
-						iio_trigger_generic_data_rdy_poll,
-						NULL, IRQF_ONESHOT,
-						AFE4403_DRIVER_NAME,
-						afe->trig);
+		ret = devm_request_irq(dev, afe->irq,
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_NO_THREAD, AFE4403_DRIVER_NAME,
+				       afe->trig);
 		if (ret) {
 			dev_err(dev, "Unable to request IRQ\n");
 			return ret;
diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c
index 768d794e574b9..032da52a96d0e 100644
--- a/drivers/iio/health/afe4404.c
+++ b/drivers/iio/health/afe4404.c
@@ -547,11 +547,10 @@ static int afe4404_probe(struct i2c_client *client)
 			return ret;
 		}
 
-		ret = devm_request_threaded_irq(dev, afe->irq,
-						iio_trigger_generic_data_rdy_poll,
-						NULL, IRQF_ONESHOT,
-						AFE4404_DRIVER_NAME,
-						afe->trig);
+		ret = devm_request_irq(dev, afe->irq,
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_NO_THREAD, AFE4404_DRIVER_NAME,
+				       afe->trig);
 		if (ret) {
 			dev_err(dev, "Unable to request IRQ\n");
 			return ret;
diff --git a/drivers/iio/magnetometer/bmc150_magn.c b/drivers/iio/magnetometer/bmc150_magn.c
index 6a73f6e2f1f06..a022e1805dff7 100644
--- a/drivers/iio/magnetometer/bmc150_magn.c
+++ b/drivers/iio/magnetometer/bmc150_magn.c
@@ -906,12 +906,9 @@ int bmc150_magn_probe(struct device *dev, struct regmap *regmap,
 			goto err_poweroff;
 		}
 
-		ret = request_threaded_irq(irq,
-					   iio_trigger_generic_data_rdy_poll,
-					   NULL,
-					   IRQF_TRIGGER_RISING | IRQF_ONESHOT,
-					   "bmc150_magn_event",
-					   data->dready_trig);
+		ret = request_irq(irq, iio_trigger_generic_data_rdy_poll,
+				  IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
+				  "bmc150_magn_event", data->dready_trig);
 		if (ret < 0) {
 			dev_err(dev, "request irq %d failed\n", irq);
 			goto err_trigger_unregister;
diff --git a/drivers/iio/pressure/dlhl60d.c b/drivers/iio/pressure/dlhl60d.c
index 8bad7162fec64..e975b733ce0a1 100644
--- a/drivers/iio/pressure/dlhl60d.c
+++ b/drivers/iio/pressure/dlhl60d.c
@@ -306,9 +306,9 @@ static int dlh_probe(struct i2c_client *client)
 	indio_dev->num_channels = ARRAY_SIZE(dlh_channels);
 
 	if (client->irq > 0) {
-		ret = devm_request_threaded_irq(&client->dev, client->irq,
-			dlh_interrupt, NULL,
-			IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+		ret = devm_request_irq(&client->dev, client->irq,
+				       dlh_interrupt,
+				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
 			st->info->name, indio_dev);
 		if (ret) {
 			dev_err(&client->dev, "failed to allocate threaded irq");
diff --git a/drivers/iio/temperature/tmp006.c b/drivers/iio/temperature/tmp006.c
index 10bd3f221929d..d8d8c8936d177 100644
--- a/drivers/iio/temperature/tmp006.c
+++ b/drivers/iio/temperature/tmp006.c
@@ -356,12 +356,10 @@ static int tmp006_probe(struct i2c_client *client)
 
 		indio_dev->trig = iio_trigger_get(data->drdy_trig);
 
-		ret = devm_request_threaded_irq(&client->dev, client->irq,
-						iio_trigger_generic_data_rdy_poll,
-						NULL,
-						IRQF_ONESHOT,
-						"tmp006_irq",
-						data->drdy_trig);
+		ret = devm_request_irq(&client->dev, client->irq,
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_NO_THREAD, "tmp006_irq",
+				       data->drdy_trig);
 		if (ret < 0)
 			return ret;
 	}
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (17 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 14:50   ` Andy Shevchenko
  2026-01-23 20:56   ` David Lechner
  2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
                   ` (3 subsequent siblings)
  22 siblings, 2 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	Lars-Peter Clausen, Michael Hennerich, linux-iio

The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
other interrupt handler and this supposed to happen from within the
hardirq.

Use IRQF_NO_THREAD to forbid forced-threading.

Cc: Jonathan Cameron <jic23@kernel.org>
Cc: David Lechner <dlechner@baylibre.com>
Cc: "Nuno Sá" <nuno.sa@analog.com>
Cc: Andy Shevchenko <andy@kernel.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Michael Hennerich <Michael.Hennerich@analog.com>
Cc: linux-iio@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/iio/accel/bma180.c        |  5 +++--
 drivers/iio/adc/ad7766.c          | 10 ++--------
 drivers/iio/gyro/itg3200_buffer.c |  2 +-
 drivers/iio/light/si1145.c        |  2 +-
 4 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
index 8925f5279e627..7bc6761f51354 100644
--- a/drivers/iio/accel/bma180.c
+++ b/drivers/iio/accel/bma180.c
@@ -986,8 +986,9 @@ static int bma180_probe(struct i2c_client *client)
 		}
 
 		ret = devm_request_irq(dev, client->irq,
-			iio_trigger_generic_data_rdy_poll, IRQF_TRIGGER_RISING,
-			"bma180_event", data->trig);
+				       iio_trigger_generic_data_rdy_poll,
+				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
+				       "bma180_event", data->trig);
 		if (ret) {
 			dev_err(dev, "unable to request IRQ\n");
 			goto err_trigger_free;
diff --git a/drivers/iio/adc/ad7766.c b/drivers/iio/adc/ad7766.c
index 4d570383ef025..9e4a66477d2d0 100644
--- a/drivers/iio/adc/ad7766.c
+++ b/drivers/iio/adc/ad7766.c
@@ -184,12 +184,6 @@ static const struct iio_info ad7766_info = {
 	.read_raw = &ad7766_read_raw,
 };
 
-static irqreturn_t ad7766_irq(int irq, void *private)
-{
-	iio_trigger_poll(private);
-	return IRQ_HANDLED;
-}
-
 static int ad7766_set_trigger_state(struct iio_trigger *trig, bool enable)
 {
 	struct ad7766 *ad7766 = iio_trigger_get_drvdata(trig);
@@ -260,8 +254,8 @@ static int ad7766_probe(struct spi_device *spi)
 		 * Some platforms might not allow the option to power it down so
 		 * don't enable the interrupt to avoid extra load on the system
 		 */
-		ret = devm_request_irq(&spi->dev, spi->irq, ad7766_irq,
-				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN,
+		ret = devm_request_irq(&spi->dev, spi->irq, iio_trigger_generic_data_rdy_poll,
+				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN | IRQF_NO_THREAD,
 				       dev_name(&spi->dev),
 				       ad7766->trig);
 		if (ret < 0)
diff --git a/drivers/iio/gyro/itg3200_buffer.c b/drivers/iio/gyro/itg3200_buffer.c
index a624400a239cb..767b87b7feea7 100644
--- a/drivers/iio/gyro/itg3200_buffer.c
+++ b/drivers/iio/gyro/itg3200_buffer.c
@@ -120,7 +120,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
 
 	ret = request_irq(st->i2c->irq,
 			  &iio_trigger_generic_data_rdy_poll,
-			  IRQF_TRIGGER_RISING,
+			  IRQF_NO_THREAD | IRQF_TRIGGER_RISING,
 			  "itg3200_data_rdy",
 			  st->trig);
 	if (ret)
diff --git a/drivers/iio/light/si1145.c b/drivers/iio/light/si1145.c
index f8eb251eca8dc..ef0abc4499b74 100644
--- a/drivers/iio/light/si1145.c
+++ b/drivers/iio/light/si1145.c
@@ -1248,7 +1248,7 @@ static int si1145_probe_trigger(struct iio_dev *indio_dev)
 
 	ret = devm_request_irq(&client->dev, client->irq,
 			  iio_trigger_generic_data_rdy_poll,
-			  IRQF_TRIGGER_FALLING,
+			  IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
 			  "si1145_irq",
 			  trig);
 	if (ret < 0) {
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (18 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 19/21] iio: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-23 14:51   ` Andy Shevchenko
                     ` (2 more replies)
  2026-01-23 11:37 ` [PATCH 21/21] media: pci: mg4b: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
                   ` (2 subsequent siblings)
  22 siblings, 3 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio

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 can not fire
(again) while its handler is running.
The flag also disallows force-threading of the primary handler and the
irq-core will warn about this.
The force-threading functionality is required on PREEMPT_RT because the
handler is using locks with can sleep on PREEMPT_RT.

Remove IRQF_ONESHOT from irqflags.

Cc: Jonathan Cameron <jic23@kernel.org>
Cc: David Lechner <dlechner@baylibre.com>
Cc: "Nuno Sá" <nuno.sa@analog.com>
Cc: Andy Shevchenko <andy@kernel.org>
Cc: linux-iio@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/iio/magnetometer/ak8975.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c
index 3fd0171e5d69b..d30315ad85ded 100644
--- a/drivers/iio/magnetometer/ak8975.c
+++ b/drivers/iio/magnetometer/ak8975.c
@@ -581,7 +581,7 @@ static int ak8975_setup_irq(struct ak8975_data *data)
 		irq = gpiod_to_irq(data->eoc_gpiod);
 
 	rc = devm_request_irq(&client->dev, irq, ak8975_irq_handler,
-			      IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+			      IRQF_TRIGGER_RISING,
 			      dev_name(&client->dev), data);
 	if (rc < 0) {
 		dev_err(&client->dev, "irq %d request failed: %d\n", irq, rc);
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* [PATCH 21/21] media: pci: mg4b: Use IRQF_NO_THREAD
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (19 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 11:37 ` Sebastian Andrzej Siewior
  2026-01-26 18:45 ` (subset) [PATCH 00/21] IRQF_ONESHOT clean up Mark Brown
  2026-02-08  2:01 ` Martin K. Petersen
  22 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Sebastian Andrzej Siewior,
	Martin Tuma, Mauro Carvalho Chehab, linux-media

The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
other interrupt handler and this supposed to happen from within the
hardirq.

Use IRQF_NO_THREAD to forbid forced-threading.

Cc: Martin Tuma <martin.tuma@digiteqautomotive.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-media@vger.kernel.org
Fixes: 0ab13674a9bd1 ("media: pci: mgb4: Added Digiteq Automotive MGB4 driver")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/media/pci/mgb4/mgb4_trigger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/pci/mgb4/mgb4_trigger.c b/drivers/media/pci/mgb4/mgb4_trigger.c
index 4f9a35904b418..70cad324df608 100644
--- a/drivers/media/pci/mgb4/mgb4_trigger.c
+++ b/drivers/media/pci/mgb4/mgb4_trigger.c
@@ -115,7 +115,7 @@ static int probe_trigger(struct iio_dev *indio_dev, int irq)
 	if (!st->trig)
 		return -ENOMEM;
 
-	ret = request_irq(irq, &iio_trigger_generic_data_rdy_poll, 0,
+	ret = request_irq(irq, &iio_trigger_generic_data_rdy_poll, IRQF_NO_THREAD,
 			  "mgb4-trigger", st->trig);
 	if (ret)
 		goto error_free_trig;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 75+ messages in thread

* Re: [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq()
  2026-01-23 11:36 ` [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() Sebastian Andrzej Siewior
@ 2026-01-23 11:49   ` Sebastian Andrzej Siewior
  2026-01-26 14:05     ` Ilpo Järvinen
  2026-01-24 10:21   ` Hans de Goede
  1 sibling, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-23 11:49 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Hans de Goede,
	Ilpo Järvinen, platform-driver-x86, Borah, Chaitanya Kumar

On 2026-01-23 12:36:48 [+0100], To linux-kernel@vger.kernel.org wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows 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.

This one should probably go hand in hand with the previous one. It might
be easier to route both via tip/irq.

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 16/21] perf/cxlpmu: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 16/21] perf/cxlpmu: " Sebastian Andrzej Siewior
@ 2026-01-23 12:05   ` Jonathan Cameron
  0 siblings, 0 replies; 75+ messages in thread
From: Jonathan Cameron @ 2026-01-23 12:05 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Will Deacon,
	Mark Rutland, linux-cxl, linux-arm-kernel

On Fri, 23 Jan 2026 12:37:02 +0100
Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote:

> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> The intention here was probably not allowing forced-threading.
> 
> Replace IRQF_ONESHOT with IRQF_NO_THREAD.
> 
I don't think we are that likely to see force-threading on CXL
systems (I could be wrong!), but still good to correct this.

Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>

> Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: linux-cxl@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>  drivers/perf/cxl_pmu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/perf/cxl_pmu.c b/drivers/perf/cxl_pmu.c
> index d094030220bf2..68a54d97d2a8a 100644
> --- a/drivers/perf/cxl_pmu.c
> +++ b/drivers/perf/cxl_pmu.c
> @@ -877,7 +877,7 @@ static int cxl_pmu_probe(struct device *dev)
>  	if (!irq_name)
>  		return -ENOMEM;
>  
> -	rc = devm_request_irq(dev, irq, cxl_pmu_irq, IRQF_SHARED | IRQF_ONESHOT,
> +	rc = devm_request_irq(dev, irq, cxl_pmu_irq, IRQF_SHARED | IRQF_NO_THREAD,
>  			      irq_name, info);
>  	if (rc)
>  		return rc;


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 05/21] bus: fsl-mc: Use default primary handler
  2026-01-23 11:36 ` [PATCH 05/21] bus: fsl-mc: " Sebastian Andrzej Siewior
@ 2026-01-23 14:28   ` Ioana Ciornei
  0 siblings, 0 replies; 75+ messages in thread
From: Ioana Ciornei @ 2026-01-23 14:28 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, linuxppc-dev

On Fri, Jan 23, 2026 at 12:36:51PM +0100, Sebastian Andrzej Siewior wrote:
> There is no added value in dprc_irq0_handler() compared to
> irq_default_primary_handler().
> 
> Use the default primary interrupt handler by specifying NULL.
> 
> Cc: Ioana Ciornei <ioana.ciornei@nxp.com>
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-23 14:48   ` Andy Shevchenko
  2026-01-23 16:47     ` Jonathan Cameron
  2026-01-26  8:15     ` Sebastian Andrzej Siewior
  2026-01-26 10:53   ` Marcus Folkesson
  2026-01-28 11:39   ` Nuno Sá
  2 siblings, 2 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-23 14:48 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On Fri, Jan 23, 2026 at 12:37:04PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> The intention here was probably not allowing forced-threading for
> handlers such as iio_trigger_generic_data_rdy_poll() will intends to
> invoke hard-interrupt handlers.
> 
> Replace IRQF_ONESHOT with IRQF_NO_THREAD.

Code wise LGTM,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>

There is a few nit-picks regarding style below.

...

> Cc: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> Cc: Puranjay Mohan <puranjay@kernel.org>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> Cc: Kent Gustavsson <kent@minoris.se>
> Cc: Gustavo Silva <gustavograzs@gmail.com>
> Cc: Nishant Malpani <nish.malpani25@gmail.com>
> Cc: linux-iio@vger.kernel.org

Move these...

> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---

...to be here. This will drastically reduce the unneeded noise in the commit
message. The email will have (if using git format-patch and git send-email)
them.

...

> --- a/drivers/iio/accel/adxl355_core.c
> +++ b/drivers/iio/accel/adxl355_core.c
> @@ -770,7 +770,8 @@ static int adxl355_probe_trigger(struct iio_dev *indio_dev, int irq)
>  
>  	ret = devm_request_irq(data->dev, irq,
>  			       &iio_trigger_generic_data_rdy_poll,
> -			       IRQF_ONESHOT, "adxl355_irq", data->dready_trig);
> +			       IRQF_NO_THREAD,
> +			       "adxl355_irq", data->dready_trig);

Leave it on a single line. It's only 81 characters and it's fine to be like
this.

>  	if (ret)
>  		return dev_err_probe(data->dev, ret, "request irq %d failed\n",
>  				     irq);

...

> +++ b/drivers/iio/accel/adxl372.c

> +		ret = devm_request_irq(dev, st->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> +				       indio_dev->name, st->dready_trig);
>  		if (ret < 0)
>  			return ret;

Interestingly that this driver ignores the flags from firmware... Seems to me
like a bug (not in your patch, obviously). Ditto for other drivers doing similar
things.

...

> --- a/drivers/iio/pressure/dlhl60d.c
> +++ b/drivers/iio/pressure/dlhl60d.c
> @@ -306,9 +306,9 @@ static int dlh_probe(struct i2c_client *client)
>  	indio_dev->num_channels = ARRAY_SIZE(dlh_channels);
>  
>  	if (client->irq > 0) {
> -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> -			dlh_interrupt, NULL,
> -			IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       dlh_interrupt,

Joined to the previous line it gives exactly 80 characters, which is allowed.

> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
>  			st->info->name, indio_dev);

Forgot to indent.

...

> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_NO_THREAD, "tmp006_irq",
> +				       data->drdy_trig);
>  		if (ret < 0)
>  			return ret;

Jonathan et al., this seems to me like a duplication from one to another
driver. Can't we do like a helper for it, so we don't change it each time
the IRQ core or other things got changed?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 19/21] iio: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-23 14:50   ` Andy Shevchenko
  2026-01-26  9:25     ` Sebastian Andrzej Siewior
  2026-01-23 20:56   ` David Lechner
  1 sibling, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-23 14:50 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Lars-Peter Clausen,
	Michael Hennerich, linux-iio

On Fri, Jan 23, 2026 at 12:37:05PM +0100, Sebastian Andrzej Siewior wrote:
> The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
> other interrupt handler and this supposed to happen from within the
> hardirq.
> 
> Use IRQF_NO_THREAD to forbid forced-threading.

...

> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> Cc: linux-iio@vger.kernel.org

Same comment about Cc list.

...

>  	ret = request_irq(st->i2c->irq,
>  			  &iio_trigger_generic_data_rdy_poll,
> -			  IRQF_TRIGGER_RISING,
> +			  IRQF_NO_THREAD | IRQF_TRIGGER_RISING,

Maybe swap their positions as it's done everywhere else for the consistency's
sake?

>  			  "itg3200_data_rdy",
>  			  st->trig);

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 14:51   ` Andy Shevchenko
  2026-01-27 19:37   ` Geert Uytterhoeven
  2026-01-28 11:40   ` Nuno Sá
  2 siblings, 0 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-23 14:51 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, linux-iio

On Fri, Jan 23, 2026 at 12:37:06PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> The force-threading functionality is required on PREEMPT_RT because the
> handler is using locks with can sleep on PREEMPT_RT.
> 
> Remove IRQF_ONESHOT from irqflags.

...

> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: linux-iio@vger.kernel.org

Same comment on the location of Cc list.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 14:52   ` Andy Shevchenko
  2026-01-26  8:01     ` Sebastian Andrzej Siewior
  2026-01-26  9:32   ` Charles Keepax
  1 sibling, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-23 14:52 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:
> Using a threaded interrupt without a dedicated primary handler mandates
> the IRQF_ONESHOT flag to mask the interrupt source while the threaded
> handler is active. Otherwise the interrupt can fire again before the
> threaded handler had a chance to run.
> 
> Mark explained that this should not happen with this hardware since it a

"it is a" ?

> slow irqchip which is behind an I2C/ SPI bus but the IRQ-core will
> refuse to accept such a handler.
> 
> Set IRQF_ONESHOT so the interrupt source is masked until the secondary
> handler is done.

...

> Cc: Lee Jones <lee@kernel.org>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: patches@opensource.cirrus.com
> Cc: Mark Brown <broonie@kernel.org>

Cc list can be moved out from the commit message.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
@ 2026-01-23 15:26   ` Sudeep Holla
  2026-01-27  9:42   ` Linus Walleij
  1 sibling, 0 replies; 75+ messages in thread
From: Sudeep Holla @ 2026-01-23 15:26 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Sudeep Holla,
	Linus Walleij, Liviu Dudau, Lorenzo Pieralisi, linux-arm-kernel

On Fri, Jan 23, 2026 at 12:36:54PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> 
> Revert adding IRQF_ONESHOT to irqflags.
> 
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Sudeep Holla <sudeep.holla@arm.com>

Acked-by: Sudeep Holla <sudeep.holla@arm.com>

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 13/21] usb: typec: fusb302: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 13/21] usb: typec: fusb302: " Sebastian Andrzej Siewior
@ 2026-01-23 16:07   ` Greg Kroah-Hartman
  2026-01-26 14:21   ` Heikki Krogerus
  1 sibling, 0 replies; 75+ messages in thread
From: Greg Kroah-Hartman @ 2026-01-23 16:07 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Heikki Krogerus,
	linux-usb

On Fri, Jan 23, 2026 at 12:36:59PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-usb@vger.kernel.org
> Fixes: 309b6341d5570 ("usb: typec: fusb302: Revert incorrect threaded irq fix")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>  drivers/usb/typec/tcpm/fusb302.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
> index 870a71f953f6c..19ff8217818e7 100644
> --- a/drivers/usb/typec/tcpm/fusb302.c
> +++ b/drivers/usb/typec/tcpm/fusb302.c
> @@ -1756,8 +1756,7 @@ static int fusb302_probe(struct i2c_client *client)
>  	}
>  
>  	ret = request_irq(chip->gpio_int_n_irq, fusb302_irq_intn,
> -			  IRQF_ONESHOT | IRQF_TRIGGER_LOW,
> -			  "fsc_interrupt_int_n", chip);
> +			  IRQF_TRIGGER_LOW, "fsc_interrupt_int_n", chip);
>  	if (ret < 0) {
>  		dev_err(dev, "cannot request IRQ for GPIO Int_N, ret=%d", ret);
>  		goto tcpm_unregister_port;
> -- 
> 2.51.0
> 

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 14:48   ` Andy Shevchenko
@ 2026-01-23 16:47     ` Jonathan Cameron
  2026-01-23 21:00       ` David Lechner
  2026-01-26  8:15     ` Sebastian Andrzej Siewior
  1 sibling, 1 reply; 75+ messages in thread
From: Jonathan Cameron @ 2026-01-23 16:47 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio


> > +++ b/drivers/iio/accel/adxl372.c  
> 
> > +		ret = devm_request_irq(dev, st->irq,
> > +				       iio_trigger_generic_data_rdy_poll,
> > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> > +				       indio_dev->name, st->dready_trig);
> >  		if (ret < 0)
> >  			return ret;  
> 
> Interestingly that this driver ignores the flags from firmware... Seems to me
> like a bug (not in your patch, obviously). Ditto for other drivers doing similar
> things.
> 

It's indeed a bug but one of those historic ones we can't fix without
high risk of regressions :(


> ...
> 
> > --- a/drivers/iio/pressure/dlhl60d.c
> > +++ b/drivers/iio/pressure/dlhl60d.c
> > @@ -306,9 +306,9 @@ static int dlh_probe(struct i2c_client *client)
> >  	indio_dev->num_channels = ARRAY_SIZE(dlh_channels);
> >  
> >  	if (client->irq > 0) {
> > -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> > -			dlh_interrupt, NULL,
> > -			IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> > +		ret = devm_request_irq(&client->dev, client->irq,
> > +				       dlh_interrupt,  
> 
> Joined to the previous line it gives exactly 80 characters, which is allowed.
> 
> > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> >  			st->info->name, indio_dev);  
> 
> Forgot to indent.
> 
> ...
> 
> > +		ret = devm_request_irq(&client->dev, client->irq,
> > +				       iio_trigger_generic_data_rdy_poll,
> > +				       IRQF_NO_THREAD, "tmp006_irq",
> > +				       data->drdy_trig);
> >  		if (ret < 0)
> >  			return ret;  
> 
> Jonathan et al., this seems to me like a duplication from one to another
> driver. Can't we do like a helper for it, so we don't change it each time
> the IRQ core or other things got changed?

I'm not sure what the helper would include that would shorten things much:
could hide two params, but need a longer name and that's going to be
hard to find.  So maybe...

J
> 


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 11/21] i2c: spacemit: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 11/21] i2c: spacemit: " Sebastian Andrzej Siewior
@ 2026-01-23 20:53   ` Yixun Lan
  2026-01-26  4:21   ` patchwork-bot+linux-riscv
  1 sibling, 0 replies; 75+ messages in thread
From: Yixun Lan @ 2026-01-23 20:53 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Troy Mitchell,
	Andi Shyti, linux-i2c, linux-riscv

Hi Sebastian, 

On 12:36 Fri 23 Jan     , Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> Remove IRQF_ONESHOT from irqflags.
> 

I've sent out a similar patch which already accepted and queued, see
https://lore.kernel.org/r/20260122-05-k1-i2c-irq-v1-1-9b8d94bbcd22@kernel.org

> Cc: Troy Mitchell <troy.mitchell@linux.spacemit.com>
> Cc: Andi Shyti <andi.shyti@kernel.org>
> Cc: Yixun Lan <dlan@gentoo.org>
> Cc: linux-i2c@vger.kernel.org
> Cc: linux-riscv@lists.infradead.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>  drivers/i2c/busses/i2c-k1.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-k1.c b/drivers/i2c/busses/i2c-k1.c
> index d42c03ef5db59..8ef6d5d1927b7 100644
> --- a/drivers/i2c/busses/i2c-k1.c
> +++ b/drivers/i2c/busses/i2c-k1.c
> @@ -566,7 +566,7 @@ static int spacemit_i2c_probe(struct platform_device *pdev)
>  		return dev_err_probe(dev, i2c->irq, "failed to get irq resource");
>  
>  	ret = devm_request_irq(i2c->dev, i2c->irq, spacemit_i2c_irq_handler,
> -			       IRQF_NO_SUSPEND | IRQF_ONESHOT, dev_name(i2c->dev), i2c);
> +			       IRQF_NO_SUSPEND, dev_name(i2c->dev), i2c);
>  	if (ret)
>  		return dev_err_probe(dev, ret, "failed to request irq");
>  
> -- 
> 2.51.0
> 

-- 
Yixun Lan (dlan)

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 19/21] iio: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
  2026-01-23 14:50   ` Andy Shevchenko
@ 2026-01-23 20:56   ` David Lechner
  2026-01-26  8:09     ` Sebastian Andrzej Siewior
  1 sibling, 1 reply; 75+ messages in thread
From: David Lechner @ 2026-01-23 20:56 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Jonathan Cameron, Nuno Sá,
	Andy Shevchenko, Lars-Peter Clausen, Michael Hennerich, linux-iio

On 1/23/26 5:37 AM, Sebastian Andrzej Siewior wrote:
> The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
> other interrupt handler and this supposed to happen from within the
> hardirq.
> 
> Use IRQF_NO_THREAD to forbid forced-threading.
> 

...

> diff --git a/drivers/iio/adc/ad7766.c b/drivers/iio/adc/ad7766.c
> index 4d570383ef025..9e4a66477d2d0 100644
> --- a/drivers/iio/adc/ad7766.c
> +++ b/drivers/iio/adc/ad7766.c
> @@ -184,12 +184,6 @@ static const struct iio_info ad7766_info = {
>  	.read_raw = &ad7766_read_raw,
>  };
>  
> -static irqreturn_t ad7766_irq(int irq, void *private)
> -{
> -	iio_trigger_poll(private);
> -	return IRQ_HANDLED;
> -}
> -

Replacing this with iio_trigger_generic_data_rdy_poll() seems like a
separate improvement that should be in a separate patch.

At a minimum, the commit message should explain this change. But I expect
the reason will make it obvious it should be a separate patch.

>  static int ad7766_set_trigger_state(struct iio_trigger *trig, bool enable)
>  {
>  	struct ad7766 *ad7766 = iio_trigger_get_drvdata(trig);
> @@ -260,8 +254,8 @@ static int ad7766_probe(struct spi_device *spi)
>  		 * Some platforms might not allow the option to power it down so
>  		 * don't enable the interrupt to avoid extra load on the system
>  		 */
> -		ret = devm_request_irq(&spi->dev, spi->irq, ad7766_irq,
> -				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN,
> +		ret = devm_request_irq(&spi->dev, spi->irq, iio_trigger_generic_data_rdy_poll,
> +				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN | IRQF_NO_THREAD,
>  				       dev_name(&spi->dev),
>  				       ad7766->trig);
>  		if (ret < 0)

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 16:47     ` Jonathan Cameron
@ 2026-01-23 21:00       ` David Lechner
  0 siblings, 0 replies; 75+ messages in thread
From: David Lechner @ 2026-01-23 21:00 UTC (permalink / raw)
  To: Jonathan Cameron, Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, Nuno Sá, Andy Shevchenko,
	Marcelo Schmitt, Marcus Folkesson, Kent Gustavsson, Gustavo Silva,
	Nishant Malpani, linux-iio

On 1/23/26 10:47 AM, Jonathan Cameron wrote:
> 
>>> +++ b/drivers/iio/accel/adxl372.c  
>>
>>> +		ret = devm_request_irq(dev, st->irq,
>>> +				       iio_trigger_generic_data_rdy_poll,
>>> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
>>> +				       indio_dev->name, st->dready_trig);
>>>  		if (ret < 0)
>>>  			return ret;  
>>
>> Interestingly that this driver ignores the flags from firmware... Seems to me
>> like a bug (not in your patch, obviously). Ditto for other drivers doing similar
>> things.
>>
> 
> It's indeed a bug but one of those historic ones we can't fix without
> high risk of regressions :(
> 
> 
Sounds like we should add a "don't copy this because ..." comment while we
are touching this.

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq()
  2026-01-23 11:36 ` [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() Sebastian Andrzej Siewior
  2026-01-23 11:49   ` Sebastian Andrzej Siewior
@ 2026-01-24 10:21   ` Hans de Goede
  1 sibling, 0 replies; 75+ messages in thread
From: Hans de Goede @ 2026-01-24 10:21 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Ilpo Järvinen,
	platform-driver-x86, Borah, Chaitanya Kumar

Hi,

On 23-Jan-26 12:36, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows 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.
> 
> Cc: Hans de Goede <hansg@kernel.org>
> Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
> Cc: platform-driver-x86@vger.kernel.org
> Reported-by: "Borah, Chaitanya Kumar" <chaitanya.kumar.borah@intel.com>
> Closes: https://lore.kernel.org/all/555f1c56-0f74-41bf-8bd2-6217e0aab0c6@intel.com
> Fixes: 8f812373d1958 ("platform/x86: intel: int0002_vgpio: Pass IRQF_ONESHOT to request_irq()")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>

Regards,

Hans



> ---
>  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;


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 09/21] char: tpm: cr50: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 09/21] char: tpm: cr50: " Sebastian Andrzej Siewior
@ 2026-01-25 16:50   ` Jarkko Sakkinen
  2026-01-27 15:45     ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 75+ messages in thread
From: Jarkko Sakkinen @ 2026-01-25 16:50 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Peter Huewe,
	Jason Gunthorpe, linux-integrity

On Fri, Jan 23, 2026 at 12:36:55PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Peter Huewe <peterhuewe@gmx.de>
> Cc: Jarkko Sakkinen <jarkko@kernel.org>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: linux-integrity@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>  drivers/char/tpm/tpm_tis_i2c_cr50.c | 3 +--
>  drivers/char/tpm/tpm_tis_spi_cr50.c | 2 +-
>  2 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c b/drivers/char/tpm/tpm_tis_i2c_cr50.c
> index fc6891a0b6936..b48cacacc0664 100644
> --- a/drivers/char/tpm/tpm_tis_i2c_cr50.c
> +++ b/drivers/char/tpm/tpm_tis_i2c_cr50.c
> @@ -749,8 +749,7 @@ static int tpm_cr50_i2c_probe(struct i2c_client *client)
>  
>  	if (client->irq > 0) {
>  		rc = devm_request_irq(dev, client->irq, tpm_cr50_i2c_int_handler,
> -				      IRQF_TRIGGER_FALLING | IRQF_ONESHOT |
> -				      IRQF_NO_AUTOEN,
> +				      IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN,
>  				      dev->driver->name, chip);
>  		if (rc < 0) {
>  			dev_err(dev, "Failed to probe IRQ %d\n", client->irq);
> diff --git a/drivers/char/tpm/tpm_tis_spi_cr50.c b/drivers/char/tpm/tpm_tis_spi_cr50.c
> index f4937280e9406..32920b4cecfb4 100644
> --- a/drivers/char/tpm/tpm_tis_spi_cr50.c
> +++ b/drivers/char/tpm/tpm_tis_spi_cr50.c
> @@ -287,7 +287,7 @@ int cr50_spi_probe(struct spi_device *spi)
>  	if (spi->irq > 0) {
>  		ret = devm_request_irq(&spi->dev, spi->irq,
>  				       cr50_spi_irq_handler,
> -				       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> +				       IRQF_TRIGGER_RISING,
>  				       "cr50_spi", cr50_phy);
>  		if (ret < 0) {
>  			if (ret == -EPROBE_DEFER)
> -- 
> 2.51.0
> 

Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

Shoud I pick this? I did apply it to my master branch (not next).

BR, Jarkko

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 11/21] i2c: spacemit: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 11/21] i2c: spacemit: " Sebastian Andrzej Siewior
  2026-01-23 20:53   ` Yixun Lan
@ 2026-01-26  4:21   ` patchwork-bot+linux-riscv
  1 sibling, 0 replies; 75+ messages in thread
From: patchwork-bot+linux-riscv @ 2026-01-26  4:21 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-riscv, linux-kernel, linux-rt-devel, tglx, troy.mitchell,
	andi.shyti, dlan, linux-i2c

Hello:

This patch was applied to riscv/linux.git (fixes)
by Andi Shyti <andi.shyti@kernel.org>:

On Fri, 23 Jan 2026 12:36:57 +0100 you wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> [...]

Here is the summary with links:
  - [11/21] i2c: spacemit: Remove IRQF_ONESHOT
    https://git.kernel.org/riscv/c/e351836a54e3

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 14/21] rtc: amlogic-a4: Remove IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 14/21] rtc: amlogic-a4: " Sebastian Andrzej Siewior
@ 2026-01-26  6:05   ` Xianwei Zhao
  0 siblings, 0 replies; 75+ messages in thread
From: Xianwei Zhao @ 2026-01-26  6:05 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Yiting Deng, Alexandre Belloni,
	linux-amlogic, linux-rtc


Reviewed-by: Xianwei Zhao <xianwei.zhao@amlogic.com>

On 2026/1/23 19:37, Sebastian Andrzej Siewior wrote:
> [ EXTERNAL EMAIL ]
> 
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Yiting Deng <yiting.deng@amlogic.com>
> Cc: Xianwei Zhao <xianwei.zhao@amlogic.com>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: linux-amlogic@lists.infradead.org
> Cc: linux-rtc@vger.kernel.org
> Fixes: c89ac9182ee29 ("rtc: support for the Amlogic on-chip RTC")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>   drivers/rtc/rtc-amlogic-a4.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/rtc/rtc-amlogic-a4.c b/drivers/rtc/rtc-amlogic-a4.c
> index 123fb372fc9fe..50938c35af36a 100644
> --- a/drivers/rtc/rtc-amlogic-a4.c
> +++ b/drivers/rtc/rtc-amlogic-a4.c
> @@ -369,7 +369,7 @@ static int aml_rtc_probe(struct platform_device *pdev)
>                  return PTR_ERR(rtc->rtc_dev);
> 
>          ret = devm_request_irq(dev, rtc->irq, aml_rtc_handler,
> -                              IRQF_ONESHOT, "aml-rtc alarm", rtc);
> +                              0, "aml-rtc alarm", rtc);
>          if (ret) {
>                  dev_err_probe(dev, ret, "IRQ%d request failed, ret = %d\n",
>                                rtc->irq, ret);
> --
> 2.51.0
> 

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-23 14:52   ` Andy Shevchenko
@ 2026-01-26  8:01     ` Sebastian Andrzej Siewior
  2026-01-26  9:46       ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26  8:01 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On 2026-01-23 16:52:59 [+0200], Andy Shevchenko wrote:
> On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:
> > Using a threaded interrupt without a dedicated primary handler mandates
> > the IRQF_ONESHOT flag to mask the interrupt source while the threaded
> > handler is active. Otherwise the interrupt can fire again before the
> > threaded handler had a chance to run.
> > 
> > Mark explained that this should not happen with this hardware since it a
> 
> "it is a" ?

yes.

> > slow irqchip which is behind an I2C/ SPI bus but the IRQ-core will
> > refuse to accept such a handler.
> > 
> > Set IRQF_ONESHOT so the interrupt source is masked until the secondary
> > handler is done.
> 
> ...
> 
> > Cc: Lee Jones <lee@kernel.org>
> > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Cc: patches@opensource.cirrus.com
> > Cc: Mark Brown <broonie@kernel.org>
> 
> Cc list can be moved out from the commit message.

If I move it out, the list won't be CCed.

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-23 20:56   ` David Lechner
@ 2026-01-26  8:09     ` Sebastian Andrzej Siewior
  2026-01-26 16:34       ` David Lechner
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26  8:09 UTC (permalink / raw)
  To: David Lechner
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Jonathan Cameron,
	Nuno Sá, Andy Shevchenko, Lars-Peter Clausen,
	Michael Hennerich, linux-iio

On 2026-01-23 14:56:32 [-0600], David Lechner wrote:
> > -static irqreturn_t ad7766_irq(int irq, void *private)
> > -{
> > -	iio_trigger_poll(private);
> > -	return IRQ_HANDLED;
> > -}
> > -
> 
> Replacing this with iio_trigger_generic_data_rdy_poll() seems like a
> separate improvement that should be in a separate patch.
> 
> At a minimum, the commit message should explain this change. But I expect
> the reason will make it obvious it should be a separate patch.

The other use iio_trigger_generic_data_rdy_poll() as the handler except
this one. Which uses a wrapper around it. It looked to easier to add
this hunk.
What do you want (split or keep)?

> >  static int ad7766_set_trigger_state(struct iio_trigger *trig, bool enable)
> >  {
> >  	struct ad7766 *ad7766 = iio_trigger_get_drvdata(trig);
> > @@ -260,8 +254,8 @@ static int ad7766_probe(struct spi_device *spi)
> >  		 * Some platforms might not allow the option to power it down so
> >  		 * don't enable the interrupt to avoid extra load on the system
> >  		 */
> > -		ret = devm_request_irq(&spi->dev, spi->irq, ad7766_irq,
> > -				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN,
> > +		ret = devm_request_irq(&spi->dev, spi->irq, iio_trigger_generic_data_rdy_poll,
> > +				       IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN | IRQF_NO_THREAD,
> >  				       dev_name(&spi->dev),
> >  				       ad7766->trig);
> >  		if (ret < 0)

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 14:48   ` Andy Shevchenko
  2026-01-23 16:47     ` Jonathan Cameron
@ 2026-01-26  8:15     ` Sebastian Andrzej Siewior
  2026-01-26  9:51       ` Andy Shevchenko
  1 sibling, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26  8:15 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On 2026-01-23 16:48:54 [+0200], Andy Shevchenko wrote:
> On Fri, Jan 23, 2026 at 12:37:04PM +0100, Sebastian Andrzej Siewior wrote:
> > 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 can not fire
> > (again) while its handler is running.
> > The flag also disallows force-threading of the primary handler and the
> > irq-core will warn about this.
> > 
> > The intention here was probably not allowing forced-threading for
> > handlers such as iio_trigger_generic_data_rdy_poll() will intends to
> > invoke hard-interrupt handlers.
> > 
> > Replace IRQF_ONESHOT with IRQF_NO_THREAD.
> 
> Code wise LGTM,
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> 
> There is a few nit-picks regarding style below.
> 
> ...
> 
> > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> > Cc: Puranjay Mohan <puranjay@kernel.org>
> > Cc: Jonathan Cameron <jic23@kernel.org>
> > Cc: David Lechner <dlechner@baylibre.com>
> > Cc: "Nuno Sá" <nuno.sa@analog.com>
> > Cc: Andy Shevchenko <andy@kernel.org>
> > Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> > Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> > Cc: Kent Gustavsson <kent@minoris.se>
> > Cc: Gustavo Silva <gustavograzs@gmail.com>
> > Cc: Nishant Malpani <nish.malpani25@gmail.com>
> > Cc: linux-iio@vger.kernel.org
> 
> Move these...
> 
> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> > ---
> 
> ...to be here. This will drastically reduce the unneeded noise in the commit
> message. The email will have (if using git format-patch and git send-email)
> them.

Yeah but if I have to send v2 then they are gone, aren't they? So I have
to move them for each submission. Or is there something I am not aware
of?

> ...
> 
> > --- a/drivers/iio/accel/adxl355_core.c
> > +++ b/drivers/iio/accel/adxl355_core.c
> > @@ -770,7 +770,8 @@ static int adxl355_probe_trigger(struct iio_dev *indio_dev, int irq)
> >  
> >  	ret = devm_request_irq(data->dev, irq,
> >  			       &iio_trigger_generic_data_rdy_poll,
> > -			       IRQF_ONESHOT, "adxl355_irq", data->dready_trig);
> > +			       IRQF_NO_THREAD,
> > +			       "adxl355_irq", data->dready_trig);
> 
> Leave it on a single line. It's only 81 characters and it's fine to be like
> this.
> 
> >  	if (ret)
> >  		return dev_err_probe(data->dev, ret, "request irq %d failed\n",
> >  				     irq);
> 
> ...
> 
> > +++ b/drivers/iio/accel/adxl372.c
> 
> > +		ret = devm_request_irq(dev, st->irq,
> > +				       iio_trigger_generic_data_rdy_poll,
> > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> > +				       indio_dev->name, st->dready_trig);
> >  		if (ret < 0)
> >  			return ret;
> 
> Interestingly that this driver ignores the flags from firmware... Seems to me
> like a bug (not in your patch, obviously). Ditto for other drivers doing similar
> things.

If the irq-chip is level or unknown mode on boot up/ default and the
device can only operate as an edge-rising then I don't see why this
should be a bug.

> ...
> 
> > --- a/drivers/iio/pressure/dlhl60d.c
> > +++ b/drivers/iio/pressure/dlhl60d.c
> > @@ -306,9 +306,9 @@ static int dlh_probe(struct i2c_client *client)
> >  	indio_dev->num_channels = ARRAY_SIZE(dlh_channels);
> >  
> >  	if (client->irq > 0) {
> > -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> > -			dlh_interrupt, NULL,
> > -			IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> > +		ret = devm_request_irq(&client->dev, client->irq,
> > +				       dlh_interrupt,
> 
> Joined to the previous line it gives exactly 80 characters, which is allowed.
> 
> > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> >  			st->info->name, indio_dev);
> 
> Forgot to indent.

Okay, let me fix this up.

> 
> ...
> 
> > +		ret = devm_request_irq(&client->dev, client->irq,
> > +				       iio_trigger_generic_data_rdy_poll,
> > +				       IRQF_NO_THREAD, "tmp006_irq",
> > +				       data->drdy_trig);
> >  		if (ret < 0)
> >  			return ret;
> 
> Jonathan et al., this seems to me like a duplication from one to another
> driver. Can't we do like a helper for it, so we don't change it each time
> the IRQ core or other things got changed?
> 

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-23 14:50   ` Andy Shevchenko
@ 2026-01-26  9:25     ` Sebastian Andrzej Siewior
  0 siblings, 0 replies; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26  9:25 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Lars-Peter Clausen,
	Michael Hennerich, linux-iio

On 2026-01-23 16:50:58 [+0200], Andy Shevchenko wrote:
> >  	ret = request_irq(st->i2c->irq,
> >  			  &iio_trigger_generic_data_rdy_poll,
> > -			  IRQF_TRIGGER_RISING,
> > +			  IRQF_NO_THREAD | IRQF_TRIGGER_RISING,
> 
> Maybe swap their positions as it's done everywhere else for the consistency's
> sake?

Almost missed this. I swapped the flags, re-ident-ed.
Also updated the commit message that ad7766_irq() is identical to
iio_trigger_generic_data_rdy_poll() and can be replaced. Hope that works
for everyone.

> >  			  "itg3200_data_rdy",
> >  			  st->trig);

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT Sebastian Andrzej Siewior
  2026-01-23 14:52   ` Andy Shevchenko
@ 2026-01-26  9:32   ` Charles Keepax
  1 sibling, 0 replies; 75+ messages in thread
From: Charles Keepax @ 2026-01-26  9:32 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones,
	Andy Shevchenko, patches, Mark Brown

On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:
> Using a threaded interrupt without a dedicated primary handler mandates
> the IRQF_ONESHOT flag to mask the interrupt source while the threaded
> handler is active. Otherwise the interrupt can fire again before the
> threaded handler had a chance to run.
> 
> Mark explained that this should not happen with this hardware since it a
> slow irqchip which is behind an I2C/ SPI bus but the IRQ-core will
> refuse to accept such a handler.
> 
> Set IRQF_ONESHOT so the interrupt source is masked until the secondary
> handler is done.
> 
> Cc: Lee Jones <lee@kernel.org>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: patches@opensource.cirrus.com
> Cc: Mark Brown <broonie@kernel.org>
> Fixes: 1c6c69525b40e ("genirq: Reject bogus threaded irq requests")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>

Thanks,
Charles

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26  8:01     ` Sebastian Andrzej Siewior
@ 2026-01-26  9:46       ` Andy Shevchenko
  2026-01-26  9:56         ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26  9:46 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On Mon, Jan 26, 2026 at 09:01:19AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-23 16:52:59 [+0200], Andy Shevchenko wrote:
> > On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:

...

> > > Cc: Lee Jones <lee@kernel.org>
> > > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > Cc: patches@opensource.cirrus.com
> > > Cc: Mark Brown <broonie@kernel.org>
> > 
> > Cc list can be moved out from the commit message.
> 
> If I move it out, the list won't be CCed.

Please. elaborate. It works for me. I use `git send-email ...`

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26  8:15     ` Sebastian Andrzej Siewior
@ 2026-01-26  9:51       ` Andy Shevchenko
  2026-01-26 10:10         ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26  9:51 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On Mon, Jan 26, 2026 at 09:15:10AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-23 16:48:54 [+0200], Andy Shevchenko wrote:
> > On Fri, Jan 23, 2026 at 12:37:04PM +0100, Sebastian Andrzej Siewior wrote:

...

> > > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > > Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> > > Cc: Puranjay Mohan <puranjay@kernel.org>
> > > Cc: Jonathan Cameron <jic23@kernel.org>
> > > Cc: David Lechner <dlechner@baylibre.com>
> > > Cc: "Nuno Sá" <nuno.sa@analog.com>
> > > Cc: Andy Shevchenko <andy@kernel.org>
> > > Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> > > Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> > > Cc: Kent Gustavsson <kent@minoris.se>
> > > Cc: Gustavo Silva <gustavograzs@gmail.com>
> > > Cc: Nishant Malpani <nish.malpani25@gmail.com>
> > > Cc: linux-iio@vger.kernel.org
> > 
> > Move these...
> > 
> > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> > > ---
> > 
> > ...to be here. This will drastically reduce the unneeded noise in the commit
> > message. The email will have (if using git format-patch and git send-email)
> > them.
> 
> Yeah but if I have to send v2 then they are gone, aren't they?

I didn't follow. How? What tools do you use?

> So I have to move them for each submission. Or is there something I am not
> aware of?

Make them in the tail of commit messages locally with a delimiter, they will
always be present as long as they are in your tree.

I dunno if `b4` manages the Cc lists separately. At least I see no-one using
`b4` *and* putting the Cc noise into the commit messages, so I assume it
behaves nicely.

...

> > > +		ret = devm_request_irq(dev, st->irq,
> > > +				       iio_trigger_generic_data_rdy_poll,
> > > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> > > +				       indio_dev->name, st->dready_trig);
> > >  		if (ret < 0)
> > >  			return ret;
> > 
> > Interestingly that this driver ignores the flags from firmware... Seems to me
> > like a bug (not in your patch, obviously). Ditto for other drivers doing similar
> > things.
> 
> If the irq-chip is level or unknown mode on boot up/ default and the
> device can only operate as an edge-rising then I don't see why this
> should be a bug.

But if FW says use "level", wouldn't this setting override it?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26  9:46       ` Andy Shevchenko
@ 2026-01-26  9:56         ` Sebastian Andrzej Siewior
  2026-01-26 10:05           ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26  9:56 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On 2026-01-26 11:46:11 [+0200], Andy Shevchenko wrote:
> On Mon, Jan 26, 2026 at 09:01:19AM +0100, Sebastian Andrzej Siewior wrote:
> > On 2026-01-23 16:52:59 [+0200], Andy Shevchenko wrote:
> > > On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:
> 
> ...
> 
> > > > Cc: Lee Jones <lee@kernel.org>
> > > > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > > Cc: patches@opensource.cirrus.com
> > > > Cc: Mark Brown <broonie@kernel.org>
> > > 
> > > Cc list can be moved out from the commit message.
> > 
> > If I move it out, the list won't be CCed.
> 
> Please. elaborate. It works for me. I use `git send-email ...`

Yes that works. But I have to move it every single patch and I have 20
and the number of Cc:es varies. Once I move it there, it won't be there
on the next git-format-patch or will be imported via git-am.
If you continue to nitpick here, I could do it for the next iio
submission assuming it will be picked-up by iio maintainers. But doing
it just for the single mfd patch looks like too much work.

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26  9:56         ` Sebastian Andrzej Siewior
@ 2026-01-26 10:05           ` Andy Shevchenko
  2026-01-26 10:13             ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 10:05 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On Mon, Jan 26, 2026 at 10:56:13AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-26 11:46:11 [+0200], Andy Shevchenko wrote:
> > On Mon, Jan 26, 2026 at 09:01:19AM +0100, Sebastian Andrzej Siewior wrote:
> > > On 2026-01-23 16:52:59 [+0200], Andy Shevchenko wrote:
> > > > On Fri, Jan 23, 2026 at 12:37:03PM +0100, Sebastian Andrzej Siewior wrote:

...

> > > > > Cc: Lee Jones <lee@kernel.org>
> > > > > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > > > Cc: patches@opensource.cirrus.com
> > > > > Cc: Mark Brown <broonie@kernel.org>
> > > > 
> > > > Cc list can be moved out from the commit message.
> > > 
> > > If I move it out, the list won't be CCed.
> > 
> > Please. elaborate. It works for me. I use `git send-email ...`
> 
> Yes that works. But I have to move it every single patch and I have 20
> and the number of Cc:es varies. Once I move it there, it won't be there
> on the next git-format-patch

`git format-patch` uses the commit message verbatim.

> or will be imported via git-am.

Yes, that's the idea. `git am` will strip them out. But why would you need to
apply via `git am` locally? You can pull from the tree.

> If you continue to nitpick here, I could do it for the next iio
> submission assuming it will be picked-up by iio maintainers. But doing
> it just for the single mfd patch looks like too much work.

I'm thinking of all the patches.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26  9:51       ` Andy Shevchenko
@ 2026-01-26 10:10         ` Sebastian Andrzej Siewior
  2026-01-26 11:01           ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26 10:10 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On 2026-01-26 11:51:13 [+0200], Andy Shevchenko wrote:
> > > > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > > > Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> > > > Cc: Puranjay Mohan <puranjay@kernel.org>
> > > > Cc: Jonathan Cameron <jic23@kernel.org>
> > > > Cc: David Lechner <dlechner@baylibre.com>
> > > > Cc: "Nuno Sá" <nuno.sa@analog.com>
> > > > Cc: Andy Shevchenko <andy@kernel.org>
> > > > Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> > > > Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> > > > Cc: Kent Gustavsson <kent@minoris.se>
> > > > Cc: Gustavo Silva <gustavograzs@gmail.com>
> > > > Cc: Nishant Malpani <nish.malpani25@gmail.com>
> > > > Cc: linux-iio@vger.kernel.org
> > > 
> I didn't follow. How? What tools do you use?

b4/ git.

> > So I have to move them for each submission. Or is there something I am not
> > aware of?
> 
> Make them in the tail of commit messages locally with a delimiter, they will
> always be present as long as they are in your tree.
> 
> I dunno if `b4` manages the Cc lists separately. At least I see no-one using
> `b4` *and* putting the Cc noise into the commit messages, so I assume it
> behaves nicely.

I point is if I move them for one submission, I lose it on the next if I
update patches in tree and re-export them. 

> > > > +		ret = devm_request_irq(dev, st->irq,
> > > > +				       iio_trigger_generic_data_rdy_poll,
> > > > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> > > > +				       indio_dev->name, st->dready_trig);
> > > >  		if (ret < 0)
> > > >  			return ret;
> > > 
> > > Interestingly that this driver ignores the flags from firmware... Seems to me
> > > like a bug (not in your patch, obviously). Ditto for other drivers doing similar
> > > things.
> > 
> > If the irq-chip is level or unknown mode on boot up/ default and the
> > device can only operate as an edge-rising then I don't see why this
> > should be a bug.
> 
> But if FW says use "level", wouldn't this setting override it?

Yes, it will. It was common to use it pre-device-tree time where this
information was not configured automatically before ->probe. Now it
might be missing/wrong in the dt for some of the old devices.
It might be a left-over which continued to grow and spread.

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26 10:05           ` Andy Shevchenko
@ 2026-01-26 10:13             ` Sebastian Andrzej Siewior
  2026-01-26 11:22               ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-26 10:13 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On 2026-01-26 12:05:13 [+0200], Andy Shevchenko wrote:
> > or will be imported via git-am.
> 
> Yes, that's the idea. `git am` will strip them out. But why would you need to
> apply via `git am` locally? You can pull from the tree.

I fetch from the list to pick up the tags, fix some of them up as the
iio but most of them remain the same. Then I post the v2. Where do I get
the Cc from? So I add them manually again?

> > If you continue to nitpick here, I could do it for the next iio
> > submission assuming it will be picked-up by iio maintainers. But doing
> > it just for the single mfd patch looks like too much work.
> 
> I'm thinking of all the patches.
> 

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
  2026-01-23 14:48   ` Andy Shevchenko
@ 2026-01-26 10:53   ` Marcus Folkesson
  2026-01-28 11:39   ` Nuno Sá
  2 siblings, 0 replies; 75+ messages in thread
From: Marcus Folkesson @ 2026-01-26 10:53 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

[-- Attachment #1: Type: text/plain, Size: 1498 bytes --]

On Fri, Jan 23, 2026 at 12:37:04PM +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> The intention here was probably not allowing forced-threading for
> handlers such as iio_trigger_generic_data_rdy_poll() will intends to
> invoke hard-interrupt handlers.
> 
> Replace IRQF_ONESHOT with IRQF_NO_THREAD.
> 
> Cc: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> Cc: Puranjay Mohan <puranjay@kernel.org>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> Cc: Kent Gustavsson <kent@minoris.se>
> Cc: Gustavo Silva <gustavograzs@gmail.com>
> Cc: Nishant Malpani <nish.malpani25@gmail.com>
> Cc: linux-iio@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---

[...]

>  drivers/iio/adc/mcp3911.c              |  2 +-
Reviewed-by: Marcus Folkesson <marcus.folkesson@gmail.com>

Best regards,
Marcus Folkesson


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 10:10         ` Sebastian Andrzej Siewior
@ 2026-01-26 11:01           ` Andy Shevchenko
  2026-01-26 14:29             ` Konstantin Ryabitsev
  2026-01-28 10:07             ` Sebastian Andrzej Siewior
  0 siblings, 2 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 11:01 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, tools
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On Mon, Jan 26, 2026 at 11:10:34AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-26 11:51:13 [+0200], Andy Shevchenko wrote:
> > > > > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > > > > Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> > > > > Cc: Puranjay Mohan <puranjay@kernel.org>
> > > > > Cc: Jonathan Cameron <jic23@kernel.org>
> > > > > Cc: David Lechner <dlechner@baylibre.com>
> > > > > Cc: "Nuno Sá" <nuno.sa@analog.com>
> > > > > Cc: Andy Shevchenko <andy@kernel.org>
> > > > > Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> > > > > Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> > > > > Cc: Kent Gustavsson <kent@minoris.se>
> > > > > Cc: Gustavo Silva <gustavograzs@gmail.com>
> > > > > Cc: Nishant Malpani <nish.malpani25@gmail.com>
> > > > > Cc: linux-iio@vger.kernel.org
> > > > 
> …
> > I didn't follow. How? What tools do you use?
> 
> b4/ git.

> > > So I have to move them for each submission. Or is there something I am not
> > > aware of?
> > 
> > Make them in the tail of commit messages locally with a delimiter, they will
> > always be present as long as they are in your tree.
> > 
> > I dunno if `b4` manages the Cc lists separately. At least I see no-one using
> > `b4` *and* putting the Cc noise into the commit messages, so I assume it
> > behaves nicely.
> 
> I point is if I move them for one submission,

It will be in your Git tree as a part of the commit message.

What I mean is that your commit message will be like

  $PREFIX: $SUMMARY
  ...blank line...
  $COMMIT_MESSAGE
  ...blank line...
  $TAG
  Signed-off-by: ...
  ---
  Cc: person 1
  Cc: person 2

Just don't reimport them via `git am`.

> I lose it on the next if I update patches in tree and re-export them. 

I don't understand this, sorry. Can you provide a step-by-step example?
Do you mean that you are taking previous version from the list and reapplying
it via `git am`? But shouldn't `b4` take care of that as long as it knows the
Change-ID and it matches?

...

Hmm... The https://b4.docs.kernel.org/en/latest/contributor/prep.html
doesn't clearly tell me if there is a carry-on procedure for the Cc
list between versions.

...

> > > > > +		ret = devm_request_irq(dev, st->irq,
> > > > > +				       iio_trigger_generic_data_rdy_poll,
> > > > > +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> > > > > +				       indio_dev->name, st->dready_trig);
> > > > >  		if (ret < 0)
> > > > >  			return ret;
> > > > 
> > > > Interestingly that this driver ignores the flags from firmware... Seems to me
> > > > like a bug (not in your patch, obviously). Ditto for other drivers doing similar
> > > > things.
> > > 
> > > If the irq-chip is level or unknown mode on boot up/ default and the
> > > device can only operate as an edge-rising then I don't see why this
> > > should be a bug.
> > 
> > But if FW says use "level", wouldn't this setting override it?
> 
> Yes, it will. It was common to use it pre-device-tree time where this
> information was not configured automatically before ->probe. Now it
> might be missing/wrong in the dt for some of the old devices.
> It might be a left-over which continued to grow and spread.

It may be considered as a bug, especially in the cases when the driver works
only on DT/ACPI platforms.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26 10:13             ` Sebastian Andrzej Siewior
@ 2026-01-26 11:22               ` Andy Shevchenko
  2026-01-26 11:28                 ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 11:22 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On Mon, Jan 26, 2026 at 11:13:08AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-26 12:05:13 [+0200], Andy Shevchenko wrote:
> > > or will be imported via git-am.
> > 
> > Yes, that's the idea. `git am` will strip them out. But why would you need to
> > apply via `git am` locally? You can pull from the tree.
> 
> I fetch from the list to pick up the tags, fix some of them up as the
> iio but most of them remain the same. Then I post the v2. Where do I get
> the Cc from? So I add them manually again?

Nope, I just checked how `b4 trailers -u ...` works. It does the correct thing.
What did I miss?

So, for the matter of test I took this one:
20250503-smc-6-15-v4-1-500b9b6546fc@svenpeter.dev
(as a *single* change).

In my tree I corrected it to look like this at the end of the commit message:

    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sven Peter <sven@svenpeter.dev>
    ---
    Cc: Janne Grunau <j@jannau.net>
    Cc: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Cc: Neal Gompa <neal@gompa.dev>
    Cc: Hector Martin <marcan@marcan.st>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Bartosz Golaszewski <brgl@bgdev.pl>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
    Cc: Conor Dooley <conor+dt@kernel.org>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Lee Jones <lee@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: asahi@lists.linux.dev
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-gpio@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-pm@vger.kernel.org

Then I ran

$ b4 trailers -u 20250503-smc-6-15-v4-1-500b9b6546fc@svenpeter.dev
Finding code-review trailers for 1 commits...
---
  + Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    https://lore.kernel.org/all/aB3_Kw6WDaDAY6Ub@blossom
  + Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    https://lore.kernel.org/all/CACRpkdbCfUEZd06yeZTNecGFPwBgJkpMH3hqkvJw4J%2BiSENG%3DQ@mail.gmail.com
---
Press Enter to apply these trailers or Ctrl-C to abort
  dt-bindings: gpio: Add Apple Mac SMC GPIO block
    + Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> (✓ DKIM/rosenzweig.io)
    + Reviewed-by: Linus Walleij <linus.walleij@linaro.org> (✗ DKIM/linaro.org)
---
Invoking git-filter-repo to update trailers.
New history written in 0.08 seconds...
Completely finished after 0.38 seconds.
Trailers updated.

Then I looked at `git show` again:

    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sven Peter <sven@svenpeter.dev>
    Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    ---
    Cc: Janne Grunau <j@jannau.net>
    Cc: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Cc: Neal Gompa <neal@gompa.dev>
    Cc: Hector Martin <marcan@marcan.st>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Bartosz Golaszewski <brgl@bgdev.pl>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
    Cc: Conor Dooley <conor+dt@kernel.org>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Lee Jones <lee@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: asahi@lists.linux.dev
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-gpio@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-pm@vger.kernel.org

P.S. `git am` is for maintainers, not flexible for the contributors.

> > > If you continue to nitpick here, I could do it for the next iio
> > > submission assuming it will be picked-up by iio maintainers. But doing
> > > it just for the single mfd patch looks like too much work.
> > 
> > I'm thinking of all the patches.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT
  2026-01-26 11:22               ` Andy Shevchenko
@ 2026-01-26 11:28                 ` Andy Shevchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 11:28 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Lee Jones, patches,
	Mark Brown

On Mon, Jan 26, 2026 at 01:22:14PM +0200, Andy Shevchenko wrote:
> On Mon, Jan 26, 2026 at 11:13:08AM +0100, Sebastian Andrzej Siewior wrote:
> > On 2026-01-26 12:05:13 [+0200], Andy Shevchenko wrote:

...

> > > > or will be imported via git-am.
> > > 
> > > Yes, that's the idea. `git am` will strip them out. But why would you need to
> > > apply via `git am` locally? You can pull from the tree.
> > 
> > I fetch from the list to pick up the tags, fix some of them up as the
> > iio but most of them remain the same. Then I post the v2. Where do I get
> > the Cc from? So I add them manually again?
> 
> Nope, I just checked how `b4 trailers -u ...` works. It does the correct thing.
> What did I miss?
> 
> So, for the matter of test I took this one:
> 20250503-smc-6-15-v4-1-500b9b6546fc@svenpeter.dev
> (as a *single* change).
> 
> In my tree I corrected it to look like this at the end of the commit message:
> 
>     Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>     Signed-off-by: Sven Peter <sven@svenpeter.dev>
>     ---
>     Cc: Janne Grunau <j@jannau.net>
>     Cc: Alyssa Rosenzweig <alyssa@rosenzweig.io>
>     Cc: Neal Gompa <neal@gompa.dev>
>     Cc: Hector Martin <marcan@marcan.st>
>     Cc: Linus Walleij <linus.walleij@linaro.org>
>     Cc: Bartosz Golaszewski <brgl@bgdev.pl>
>     Cc: Rob Herring <robh@kernel.org>
>     Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>     Cc: Conor Dooley <conor+dt@kernel.org>
>     Cc: Sebastian Reichel <sre@kernel.org>
>     Cc: Lee Jones <lee@kernel.org>
>     Cc: Marc Zyngier <maz@kernel.org>
>     Cc: asahi@lists.linux.dev
>     Cc: linux-arm-kernel@lists.infradead.org
>     Cc: linux-gpio@vger.kernel.org
>     Cc: devicetree@vger.kernel.org
>     Cc: linux-kernel@vger.kernel.org
>     Cc: linux-pm@vger.kernel.org
> 
> Then I ran
> 
> $ b4 trailers -u 20250503-smc-6-15-v4-1-500b9b6546fc@svenpeter.dev
> Finding code-review trailers for 1 commits...
> ---
>   + Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
>     https://lore.kernel.org/all/aB3_Kw6WDaDAY6Ub@blossom
>   + Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>     https://lore.kernel.org/all/CACRpkdbCfUEZd06yeZTNecGFPwBgJkpMH3hqkvJw4J%2BiSENG%3DQ@mail.gmail.com
> ---
> Press Enter to apply these trailers or Ctrl-C to abort
>   dt-bindings: gpio: Add Apple Mac SMC GPIO block
>     + Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> (✓ DKIM/rosenzweig.io)
>     + Reviewed-by: Linus Walleij <linus.walleij@linaro.org> (✗ DKIM/linaro.org)
> ---
> Invoking git-filter-repo to update trailers.
> New history written in 0.08 seconds...
> Completely finished after 0.38 seconds.
> Trailers updated.
> 
> Then I looked at `git show` again:
> 
>     Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>     Signed-off-by: Sven Peter <sven@svenpeter.dev>
>     Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
>     Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>     ---
>     Cc: Janne Grunau <j@jannau.net>
>     Cc: Alyssa Rosenzweig <alyssa@rosenzweig.io>
>     Cc: Neal Gompa <neal@gompa.dev>
>     Cc: Hector Martin <marcan@marcan.st>
>     Cc: Linus Walleij <linus.walleij@linaro.org>
>     Cc: Bartosz Golaszewski <brgl@bgdev.pl>
>     Cc: Rob Herring <robh@kernel.org>
>     Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>     Cc: Conor Dooley <conor+dt@kernel.org>
>     Cc: Sebastian Reichel <sre@kernel.org>
>     Cc: Lee Jones <lee@kernel.org>
>     Cc: Marc Zyngier <maz@kernel.org>
>     Cc: asahi@lists.linux.dev
>     Cc: linux-arm-kernel@lists.infradead.org
>     Cc: linux-gpio@vger.kernel.org
>     Cc: devicetree@vger.kernel.org
>     Cc: linux-kernel@vger.kernel.org
>     Cc: linux-pm@vger.kernel.org

FWIW, I ran `git format-patch` and reapplied locally to test how maintainer
will see it:

    Add the DT binding for the Apple Mac System Management Controller GPIOs.

    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sven Peter <sven@svenpeter.dev>
    Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

diff --git a/Documentation/devicetree/bindings/gpio/apple,smc-gpio.yaml b/Documentation/devicetree/bindings/gpio/apple,smc-gpio.yaml

So, everything works as intended.

> P.S. `git am` is for maintainers, not flexible for the contributors.
> 
> > > > If you continue to nitpick here, I could do it for the next iio
> > > > submission assuming it will be picked-up by iio maintainers. But doing
> > > > it just for the single mfd patch looks like too much work.
> > > 
> > > I'm thinking of all the patches.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq()
  2026-01-23 11:49   ` Sebastian Andrzej Siewior
@ 2026-01-26 14:05     ` Ilpo Järvinen
  0 siblings, 0 replies; 75+ messages in thread
From: Ilpo Järvinen @ 2026-01-26 14:05 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: LKML, linux-rt-devel, Thomas Gleixner, Hans de Goede,
	platform-driver-x86, Borah, Chaitanya Kumar

[-- Attachment #1: Type: text/plain, Size: 1002 bytes --]

On Fri, 23 Jan 2026, Sebastian Andrzej Siewior wrote:

> On 2026-01-23 12:36:48 [+0100], To linux-kernel@vger.kernel.org wrote:
> > 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 can not fire
> > (again) while its handler is running.
> > The flag also disallows 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.
> 
> This one should probably go hand in hand with the previous one. It might
> be easier to route both via tip/irq.

For that,

Acked-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 13/21] usb: typec: fusb302: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 13/21] usb: typec: fusb302: " Sebastian Andrzej Siewior
  2026-01-23 16:07   ` Greg Kroah-Hartman
@ 2026-01-26 14:21   ` Heikki Krogerus
  1 sibling, 0 replies; 75+ messages in thread
From: Heikki Krogerus @ 2026-01-26 14:21 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Greg Kroah-Hartman,
	linux-usb

Fri, Jan 23, 2026 at 12:36:59PM +0100, Sebastian Andrzej Siewior kirjoitti:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-usb@vger.kernel.org
> Fixes: 309b6341d5570 ("usb: typec: fusb302: Revert incorrect threaded irq fix")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/tcpm/fusb302.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
> index 870a71f953f6c..19ff8217818e7 100644
> --- a/drivers/usb/typec/tcpm/fusb302.c
> +++ b/drivers/usb/typec/tcpm/fusb302.c
> @@ -1756,8 +1756,7 @@ static int fusb302_probe(struct i2c_client *client)
>  	}
>  
>  	ret = request_irq(chip->gpio_int_n_irq, fusb302_irq_intn,
> -			  IRQF_ONESHOT | IRQF_TRIGGER_LOW,
> -			  "fsc_interrupt_int_n", chip);
> +			  IRQF_TRIGGER_LOW, "fsc_interrupt_int_n", chip);
>  	if (ret < 0) {
>  		dev_err(dev, "cannot request IRQ for GPIO Int_N, ret=%d", ret);
>  		goto tcpm_unregister_port;
> -- 
> 2.51.0

-- 
heikki

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 11:01           ` Andy Shevchenko
@ 2026-01-26 14:29             ` Konstantin Ryabitsev
  2026-01-26 14:57               ` Andy Shevchenko
  2026-01-28 10:45               ` Nuno Sá
  2026-01-28 10:07             ` Sebastian Andrzej Siewior
  1 sibling, 2 replies; 75+ messages in thread
From: Konstantin Ryabitsev @ 2026-01-26 14:29 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Mon, Jan 26, 2026 at 01:01:02PM +0200, Andy Shevchenko wrote:
> > I lose it on the next if I update patches in tree and re-export them. 
> 
> I don't understand this, sorry. Can you provide a step-by-step example?
> Do you mean that you are taking previous version from the list and reapplying
> it via `git am`? But shouldn't `b4` take care of that as long as it knows the
> Change-ID and it matches?

That's not the intended workflow -- the series is kept as a branch in your
local tree and any updates happen to that branch, so any entries in a commit
falling under "---" will persist across revisions.

> Hmm... The https://b4.docs.kernel.org/en/latest/contributor/prep.html
> doesn't clearly tell me if there is a carry-on procedure for the Cc
> list between versions.

There isn't any special procedure. ¯\_(ツ)_/¯

-K

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 14:29             ` Konstantin Ryabitsev
@ 2026-01-26 14:57               ` Andy Shevchenko
  2026-01-26 15:09                 ` Konstantin Ryabitsev
  2026-01-28 10:45               ` Nuno Sá
  1 sibling, 1 reply; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 14:57 UTC (permalink / raw)
  To: Konstantin Ryabitsev
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Mon, Jan 26, 2026 at 09:29:45AM -0500, Konstantin Ryabitsev wrote:
> On Mon, Jan 26, 2026 at 01:01:02PM +0200, Andy Shevchenko wrote:
> > > I lose it on the next if I update patches in tree and re-export them. 
> > 
> > I don't understand this, sorry. Can you provide a step-by-step example?
> > Do you mean that you are taking previous version from the list and reapplying
> > it via `git am`? But shouldn't `b4` take care of that as long as it knows the
> > Change-ID and it matches?
> 
> That's not the intended workflow -- the series is kept as a branch in your
> local tree and any updates happen to that branch, so any entries in a commit
> falling under "---" will persist across revisions.

Right. I found `b4 trailers` do a really good job to inject collected trailers
into the Git repo without need of any `git reset; b4 am; git am` dances.

> > Hmm... The https://b4.docs.kernel.org/en/latest/contributor/prep.html
> > doesn't clearly tell me if there is a carry-on procedure for the Cc
> > list between versions.
> 
> There isn't any special procedure. ¯\_(ツ)_/¯

What I have i mind is rather the scenario when I see already sent (by somebody
else) patch in the mailing list and I want develop a followup with the same
To/Cc list. So I want `b4 ... --use/restore-to-cc-from-the-mailing-list / lore`
type of functionality.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 14:57               ` Andy Shevchenko
@ 2026-01-26 15:09                 ` Konstantin Ryabitsev
  2026-01-26 15:16                   ` Andy Shevchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Konstantin Ryabitsev @ 2026-01-26 15:09 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Mon, Jan 26, 2026 at 04:57:24PM +0200, Andy Shevchenko wrote:
> What I have i mind is rather the scenario when I see already sent (by somebody
> else) patch in the mailing list and I want develop a followup with the same
> To/Cc list. So I want `b4 ... --use/restore-to-cc-from-the-mailing-list / lore`
> type of functionality.

To understand it better -- you want to send a new revision to a patch sent by
someone else? If so, you should be able to "b4 prep --from-thread <msgid>",
but it's actually a good question if that will do the right thing with content
under "---" or not, as I'm not sure this part was ever properly tested.

-K

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 15:09                 ` Konstantin Ryabitsev
@ 2026-01-26 15:16                   ` Andy Shevchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-26 15:16 UTC (permalink / raw)
  To: Konstantin Ryabitsev
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Mon, Jan 26, 2026 at 10:09:25AM -0500, Konstantin Ryabitsev wrote:
> On Mon, Jan 26, 2026 at 04:57:24PM +0200, Andy Shevchenko wrote:
> > What I have i mind is rather the scenario when I see already sent (by somebody
> > else) patch in the mailing list and I want develop a followup with the same
> > To/Cc list. So I want `b4 ... --use/restore-to-cc-from-the-mailing-list / lore`
> > type of functionality.

> To understand it better -- you want to send a new revision to a patch sent by
> someone else?

Like this or when I want to send another patch on top of what has been sent to
the same people.

> If so, you should be able to "b4 prep --from-thread <msgid>",
> but it's actually a good question if that will do the right thing with content
> under "---" or not, as I'm not sure this part was ever properly tested.

But that's not needed, as it's assumed to be in the *email* Cc and To already,
so that's it then. I will try the suggested command, thanks!

More complex case is to preserve that locally, but it might be not needed after
all.

Thanks for the suggestions and nice tool!


-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 19/21] iio: Use IRQF_NO_THREAD
  2026-01-26  8:09     ` Sebastian Andrzej Siewior
@ 2026-01-26 16:34       ` David Lechner
  0 siblings, 0 replies; 75+ messages in thread
From: David Lechner @ 2026-01-26 16:34 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Jonathan Cameron,
	Nuno Sá, Andy Shevchenko, Lars-Peter Clausen,
	Michael Hennerich, linux-iio

On 1/26/26 2:09 AM, Sebastian Andrzej Siewior wrote:
> On 2026-01-23 14:56:32 [-0600], David Lechner wrote:
>>> -static irqreturn_t ad7766_irq(int irq, void *private)
>>> -{
>>> -	iio_trigger_poll(private);
>>> -	return IRQ_HANDLED;
>>> -}
>>> -
>>
>> Replacing this with iio_trigger_generic_data_rdy_poll() seems like a
>> separate improvement that should be in a separate patch.
>>
>> At a minimum, the commit message should explain this change. But I expect
>> the reason will make it obvious it should be a separate patch.
> 
> The other use iio_trigger_generic_data_rdy_poll() as the handler except
> this one. Which uses a wrapper around it. It looked to easier to add
> this hunk.
> What do you want (split or keep)?
> 
I would still expect a separate patch to replace the duplicate
function with iio_trigger_generic_data_rdy_poll(). That change
stands on it's own, so deserves a separate patch.



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: (subset) [PATCH 00/21] IRQF_ONESHOT clean up
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (20 preceding siblings ...)
  2026-01-23 11:37 ` [PATCH 21/21] media: pci: mg4b: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
@ 2026-01-26 18:45 ` Mark Brown
  2026-02-08  2:01 ` Martin K. Petersen
  22 siblings, 0 replies; 75+ messages in thread
From: Mark Brown @ 2026-01-26 18:45 UTC (permalink / raw)
  To: linux-kernel, Sebastian Andrzej Siewior
  Cc: linux-rt-devel, Thomas Gleixner, Alexandre Belloni, Amit Kucheria,
	Andi Shyti, Andy Shevchenko, Andy Shevchenko, Borislav Petkov,
	Daniel Lezcano, David Lechner, Dinh Nguyen, Greg Kroah-Hartman,
	Gustavo Silva, Hans de Goede, Heikki Krogerus, Ilpo Järvinen,
	Ioana Ciornei, James E.J. Bottomley, Jarkko Sakkinen,
	Jaroslav Kysela, Jason Gunthorpe, Jassi Brar, Joerg Roedel,
	Jonathan Cameron, Jonathan Cameron, Kent Gustavsson,
	Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
	Liviu Dudau, Lorenzo Pieralisi, Luiz Augusto von Dentz,
	Lukasz Luba, Marcel Holtmann, Marcelo Schmitt, Marcus Folkesson,
	Mark Rutland, Martin K. Petersen, Martin Tuma,
	Mauro Carvalho Chehab, Michael Hennerich, Nishant Malpani,
	Nuno Sá, Oder Chiou, Peter Huewe, Puranjay Mohan,
	Rafael J. Wysocki, Ram Vegesna, Sudeep Holla,
	Suravee Suthikulpanit, Takashi Iwai, Thara Gopinath, Tony Luck,
	Troy Mitchell, Will Deacon, Xianwei Zhao, Yiting Deng, Yixun Lan,
	Zhang Rui

On Fri, 23 Jan 2026 12:36:46 +0100, Sebastian Andrzej Siewior wrote:
> There was a bug report about setting IRQF_ONESHOT where it should have
> not been set. I looked around for other mistakes in that area. There are
> the following categories:
> 
> - Using custom primary irq handler doing exactly what
>   irq_default_primary_handler() does
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[12/21] ASoC: codecs: rt56*: Remove IRQF_ONESHOT
        commit: 4a393958b6a1f8e476201437dbad2580d9b8700e

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT
  2026-01-23 11:36 ` [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
  2026-01-23 15:26   ` Sudeep Holla
@ 2026-01-27  9:42   ` Linus Walleij
  1 sibling, 0 replies; 75+ messages in thread
From: Linus Walleij @ 2026-01-27  9:42 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, linux-arm-kernel

On Fri, Jan 23, 2026 at 12:37 PM Sebastian Andrzej Siewior
<bigeasy@linutronix.de> wrote:

> 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 can not fire
> (again) while its handler is running.
>
> Revert adding IRQF_ONESHOT to irqflags.
>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 09/21] char: tpm: cr50: Remove IRQF_ONESHOT
  2026-01-25 16:50   ` Jarkko Sakkinen
@ 2026-01-27 15:45     ` Sebastian Andrzej Siewior
  2026-01-28 23:17       ` Jarkko Sakkinen
  0 siblings, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-27 15:45 UTC (permalink / raw)
  To: Jarkko Sakkinen
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Peter Huewe,
	Jason Gunthorpe, linux-integrity

On 2026-01-25 18:50:00 [+0200], Jarkko Sakkinen wrote:
> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> 
> Shoud I pick this? I did apply it to my master branch (not next).

I am about to prepare a v2 and if you take it I am going to drop it.
Shouldn't you apply it, then I hope to route leftovers via the genirq
tree.

> BR, Jarkko

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
  2026-01-23 14:51   ` Andy Shevchenko
@ 2026-01-27 19:37   ` Geert Uytterhoeven
  2026-01-28 11:40   ` Nuno Sá
  2 siblings, 0 replies; 75+ messages in thread
From: Geert Uytterhoeven @ 2026-01-27 19:37 UTC (permalink / raw)
  To: bigeasy
  Cc: andy, dlechner, jic23, linux-iio, linux-kernel, linux-rt-devel,
	nuno.sa, tglx, linux-renesas-soc, Geert Uytterhoeven

	Hi Sebastian,

> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> The force-threading functionality is required on PREEMPT_RT because the
> handler is using locks with can sleep on PREEMPT_RT.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: linux-iio@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Thanks for your patch!

This fixes the

    WARNING: kernel/irq/manage.c:1491 at __setup_irq+0xb0/0x79c, CPU#0: swapper/0/1

I was seeing on the KZM-A9-GT board since commit aef30c8d569c0f31
("genirq: Warn about using IRQF_ONESHOT without a threaded handler") in
irqchip/irq/core.

Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 11:01           ` Andy Shevchenko
  2026-01-26 14:29             ` Konstantin Ryabitsev
@ 2026-01-28 10:07             ` Sebastian Andrzej Siewior
  2026-01-28 10:15               ` Andy Shevchenko
  1 sibling, 1 reply; 75+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-01-28 10:07 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: tools, linux-kernel, linux-rt-devel, Thomas Gleixner,
	Lars-Peter Clausen, Michael Hennerich, Puranjay Mohan,
	Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	Marcelo Schmitt, Marcus Folkesson, Kent Gustavsson, Gustavo Silva,
	Nishant Malpani, linux-iio

On 2026-01-26 13:01:02 [+0200], Andy Shevchenko wrote:
>   ---
>   Cc: person 1
>   Cc: person 2
> 
> Just don't reimport them via `git am`.
> 
> > I lose it on the next if I update patches in tree and re-export them. 
> 
> I don't understand this, sorry. Can you provide a step-by-step example?
> Do you mean that you are taking previous version from the list and reapplying
> it via `git am`? But shouldn't `b4` take care of that as long as it knows the
> Change-ID and it matches?

So doing this and switching to b4 trailers to grab the tags actually
help. Then I have been playing with prep. So thank you.

Then I stumbled upon --auto-to-cc which picked up all addresses and
added it to the cover letter which was fine. But then `send' used those
for every patch in the series which I did not want. So for that part I
probably stick with git-send-mail since this not in everyone's workflow
(sending a series across multiple subsystems and avoiding flooding
everyone).

Anyway. This seems to have turned out nice.

Sebastian

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-28 10:07             ` Sebastian Andrzej Siewior
@ 2026-01-28 10:15               ` Andy Shevchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-28 10:15 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: tools, linux-kernel, linux-rt-devel, Thomas Gleixner,
	Lars-Peter Clausen, Michael Hennerich, Puranjay Mohan,
	Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	Marcelo Schmitt, Marcus Folkesson, Kent Gustavsson, Gustavo Silva,
	Nishant Malpani, linux-iio

On Wed, Jan 28, 2026 at 11:07:36AM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-26 13:01:02 [+0200], Andy Shevchenko wrote:
> >   ---
> >   Cc: person 1
> >   Cc: person 2
> > 
> > Just don't reimport them via `git am`.
> > 
> > > I lose it on the next if I update patches in tree and re-export them. 
> > 
> > I don't understand this, sorry. Can you provide a step-by-step example?
> > Do you mean that you are taking previous version from the list and reapplying
> > it via `git am`? But shouldn't `b4` take care of that as long as it knows the
> > Change-ID and it matches?
> 
> So doing this and switching to b4 trailers to grab the tags actually
> help. Then I have been playing with prep. So thank you.

You're welcome!

> Then I stumbled upon --auto-to-cc which picked up all addresses and
> added it to the cover letter which was fine. But then `send' used those
> for every patch in the series which I did not want. So for that part I
> probably stick with git-send-mail since this not in everyone's workflow
> (sending a series across multiple subsystems and avoiding flooding
> everyone).

I'm not an (advanced) user of `b4` yet. I have my own script to send based on
some heuristics [1].

> Anyway. This seems to have turned out nice.

Good!

[1]: https://github.com/andy-shev/home-bin-tools/blob/master/ge2maintainer.sh

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-26 14:29             ` Konstantin Ryabitsev
  2026-01-26 14:57               ` Andy Shevchenko
@ 2026-01-28 10:45               ` Nuno Sá
  2026-01-28 13:53                 ` Konstantin Ryabitsev
  1 sibling, 1 reply; 75+ messages in thread
From: Nuno Sá @ 2026-01-28 10:45 UTC (permalink / raw)
  To: Konstantin Ryabitsev, Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Mon, 2026-01-26 at 09:29 -0500, Konstantin Ryabitsev wrote:
> On Mon, Jan 26, 2026 at 01:01:02PM +0200, Andy Shevchenko wrote:
> > > I lose it on the next if I update patches in tree and re-export them. 
> > 
> > I don't understand this, sorry. Can you provide a step-by-step example?
> > Do you mean that you are taking previous version from the list and reapplying
> > it via `git am`? But shouldn't `b4` take care of that as long as it knows the
> > Change-ID and it matches?
> 
> That's not the intended workflow -- the series is kept as a branch in your
> local tree and any updates happen to that branch, so any entries in a commit
> falling under "---" will persist across revisions.
> 

Hi Konstantin,

Since I have you here, I might ask about something that I'm not sure how to handle. Might be dumb
but here it goes. One problem is when I send v1 based on a branch and when I'm starting to work on
v2 that branch was force-updated and I want to base my v2 on it. Is there any good way to handle
this?


What I currently do is more or less:

git cat-file -p $COVER_SHA
git reset --hard origin/branch
git commit --allow-empty (and past all the cover with b4 metadata)
// apply my series patches.

Thx!
- Nuno Sá
> 

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
  2026-01-23 14:48   ` Andy Shevchenko
  2026-01-26 10:53   ` Marcus Folkesson
@ 2026-01-28 11:39   ` Nuno Sá
  2 siblings, 0 replies; 75+ messages in thread
From: Nuno Sá @ 2026-01-28 11:39 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Lars-Peter Clausen,
	Michael Hennerich, Puranjay Mohan, Jonathan Cameron,
	David Lechner, Nuno Sá, Andy Shevchenko, Marcelo Schmitt,
	Marcus Folkesson, Kent Gustavsson, Gustavo Silva, Nishant Malpani,
	linux-iio

On Fri, 2026-01-23 at 12:37 +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> 
> The intention here was probably not allowing forced-threading for
> handlers such as iio_trigger_generic_data_rdy_poll() will intends to
> invoke hard-interrupt handlers.
> 
> Replace IRQF_ONESHOT with IRQF_NO_THREAD.
> 
> Cc: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Michael Hennerich <Michael.Hennerich@analog.com>
> Cc: Puranjay Mohan <puranjay@kernel.org>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>
> Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
> Cc: Kent Gustavsson <kent@minoris.se>
> Cc: Gustavo Silva <gustavograzs@gmail.com>
> Cc: Nishant Malpani <nish.malpani25@gmail.com>
> Cc: linux-iio@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---

LGTM,

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  drivers/iio/accel/adxl355_core.c       |  3 ++-
>  drivers/iio/accel/adxl372.c            |  9 ++++-----
>  drivers/iio/accel/mxc4005.c            | 11 ++++-------
>  drivers/iio/accel/stk8ba50.c           | 11 ++++-------
>  drivers/iio/adc/ad4170-4.c             |  2 +-
>  drivers/iio/adc/ad7768-1.c             |  5 ++---
>  drivers/iio/adc/ad7779.c               |  2 +-
>  drivers/iio/adc/mcp3911.c              |  2 +-
>  drivers/iio/adc/ti-ads131e08.c         |  2 +-
>  drivers/iio/chemical/ens160_core.c     |  9 +++------
>  drivers/iio/gyro/adxrs290.c            |  2 +-
>  drivers/iio/health/afe4403.c           |  9 ++++-----
>  drivers/iio/health/afe4404.c           |  9 ++++-----
>  drivers/iio/magnetometer/bmc150_magn.c |  9 +++------
>  drivers/iio/pressure/dlhl60d.c         |  6 +++---
>  drivers/iio/temperature/tmp006.c       | 10 ++++------
>  16 files changed, 42 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/iio/accel/adxl355_core.c b/drivers/iio/accel/adxl355_core.c
> index 5fc7f814b9077..04caa493176d3 100644
> --- a/drivers/iio/accel/adxl355_core.c
> +++ b/drivers/iio/accel/adxl355_core.c
> @@ -770,7 +770,8 @@ static int adxl355_probe_trigger(struct iio_dev *indio_dev, int irq)
>  
>  	ret = devm_request_irq(data->dev, irq,
>  			       &iio_trigger_generic_data_rdy_poll,
> -			       IRQF_ONESHOT, "adxl355_irq", data->dready_trig);
> +			       IRQF_NO_THREAD,
> +			       "adxl355_irq", data->dready_trig);
>  	if (ret)
>  		return dev_err_probe(data->dev, ret, "request irq %d failed\n",
>  				     irq);
> diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
> index 46d518a2a0291..2f6aa52aeba51 100644
> --- a/drivers/iio/accel/adxl372.c
> +++ b/drivers/iio/accel/adxl372.c
> @@ -1247,11 +1247,10 @@ int adxl372_probe(struct device *dev, struct regmap *regmap,
>  
>  		indio_dev->trig = iio_trigger_get(st->dready_trig);
>  
> -		ret = devm_request_threaded_irq(dev, st->irq,
> -					iio_trigger_generic_data_rdy_poll,
> -					NULL,
> -					IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> -					indio_dev->name, st->dready_trig);
> +		ret = devm_request_irq(dev, st->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> +				       indio_dev->name, st->dready_trig);
>  		if (ret < 0)
>  			return ret;
>  	}
> diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
> index ac973d871c8bb..a2c3cf13d0981 100644
> --- a/drivers/iio/accel/mxc4005.c
> +++ b/drivers/iio/accel/mxc4005.c
> @@ -486,13 +486,10 @@ static int mxc4005_probe(struct i2c_client *client)
>  		if (!data->dready_trig)
>  			return -ENOMEM;
>  
> -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> -						iio_trigger_generic_data_rdy_poll,
> -						NULL,
> -						IRQF_TRIGGER_FALLING |
> -						IRQF_ONESHOT,
> -						"mxc4005_event",
> -						data->dready_trig);
> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
> +				       "mxc4005_event", data->dready_trig);
>  		if (ret) {
>  			dev_err(&client->dev,
>  				"failed to init threaded irq\n");
> diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
> index 384f1fbcbcb37..a9ff2a273fe1c 100644
> --- a/drivers/iio/accel/stk8ba50.c
> +++ b/drivers/iio/accel/stk8ba50.c
> @@ -428,13 +428,10 @@ static int stk8ba50_probe(struct i2c_client *client)
>  	}
>  
>  	if (client->irq > 0) {
> -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> -						stk8ba50_data_rdy_trig_poll,
> -						NULL,
> -						IRQF_TRIGGER_RISING |
> -						IRQF_ONESHOT,
> -						"stk8ba50_event",
> -						indio_dev);
> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       stk8ba50_data_rdy_trig_poll,
> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> +				       "stk8ba50_event", indio_dev);
>  		if (ret < 0) {
>  			dev_err(&client->dev, "request irq %d failed\n",
>  				client->irq);
> diff --git a/drivers/iio/adc/ad4170-4.c b/drivers/iio/adc/ad4170-4.c
> index efaed92191f1b..82205bfae531e 100644
> --- a/drivers/iio/adc/ad4170-4.c
> +++ b/drivers/iio/adc/ad4170-4.c
> @@ -2973,7 +2973,7 @@ static int ad4170_probe(struct spi_device *spi)
>  
>  	if (spi->irq) {
>  		ret = devm_request_irq(dev, spi->irq, &ad4170_irq_handler,
> -				       IRQF_ONESHOT, indio_dev->name, indio_dev);
> +				       IRQF_NO_THREAD, indio_dev->name, indio_dev);
>  		if (ret)
>  			return ret;
>  
> diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
> index d96802b7847a6..84ce23c8e5782 100644
> --- a/drivers/iio/adc/ad7768-1.c
> +++ b/drivers/iio/adc/ad7768-1.c
> @@ -1394,9 +1394,8 @@ static int ad7768_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	ret = devm_request_irq(&spi->dev, spi->irq,
> -			       &ad7768_interrupt,
> -			       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> +	ret = devm_request_irq(&spi->dev, spi->irq, &ad7768_interrupt,
> +			       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
>  			       indio_dev->name, indio_dev);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/iio/adc/ad7779.c b/drivers/iio/adc/ad7779.c
> index aac5049c9a07b..695cc79e78da5 100644
> --- a/drivers/iio/adc/ad7779.c
> +++ b/drivers/iio/adc/ad7779.c
> @@ -840,7 +840,7 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct
> iio_dev
>  	iio_trigger_set_drvdata(st->trig, st);
>  
>  	ret = devm_request_irq(dev, st->spi->irq, iio_trigger_generic_data_rdy_poll,
> -			       IRQF_ONESHOT | IRQF_NO_AUTOEN, indio_dev->name,
> +			       IRQF_NO_THREAD | IRQF_NO_AUTOEN, indio_dev->name,
>  			       st->trig);
>  	if (ret)
>  		return dev_err_probe(dev, ret, "request IRQ %d failed\n",
> diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c
> index a6f21791c6859..ddc3721f3f688 100644
> --- a/drivers/iio/adc/mcp3911.c
> +++ b/drivers/iio/adc/mcp3911.c
> @@ -815,7 +815,7 @@ static int mcp3911_probe(struct spi_device *spi)
>  		 * don't enable the interrupt to avoid extra load on the system.
>  		 */
>  		ret = devm_request_irq(dev, spi->irq, &iio_trigger_generic_data_rdy_poll,
> -				       IRQF_NO_AUTOEN | IRQF_ONESHOT,
> +				       IRQF_NO_AUTOEN | IRQF_NO_THREAD,
>  				       indio_dev->name, adc->trig);
>  		if (ret)
>  			return ret;
> diff --git a/drivers/iio/adc/ti-ads131e08.c b/drivers/iio/adc/ti-ads131e08.c
> index c9a20024d6b11..a585621b0bc30 100644
> --- a/drivers/iio/adc/ti-ads131e08.c
> +++ b/drivers/iio/adc/ti-ads131e08.c
> @@ -827,7 +827,7 @@ static int ads131e08_probe(struct spi_device *spi)
>  	if (spi->irq) {
>  		ret = devm_request_irq(&spi->dev, spi->irq,
>  			ads131e08_interrupt,
> -			IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
> +			IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
>  			spi->dev.driver->name, indio_dev);
>  		if (ret)
>  			return dev_err_probe(&spi->dev, ret,
> diff --git a/drivers/iio/chemical/ens160_core.c b/drivers/iio/chemical/ens160_core.c
> index 86bde4a91bf7e..bbc96c4c62838 100644
> --- a/drivers/iio/chemical/ens160_core.c
> +++ b/drivers/iio/chemical/ens160_core.c
> @@ -316,12 +316,9 @@ static int ens160_setup_trigger(struct iio_dev *indio_dev, int irq)
>  
>  	indio_dev->trig = iio_trigger_get(trig);
>  
> -	ret = devm_request_threaded_irq(dev, irq,
> -					iio_trigger_generic_data_rdy_poll,
> -					NULL,
> -					IRQF_ONESHOT,
> -					indio_dev->name,
> -					indio_dev->trig);
> +	ret = devm_request_irq(dev, irq, iio_trigger_generic_data_rdy_poll,
> +			       IRQF_NO_THREAD, indio_dev->name,
> +			       indio_dev->trig);
>  	if (ret)
>  		return dev_err_probe(dev, ret, "failed to request irq\n");
>  
> diff --git a/drivers/iio/gyro/adxrs290.c b/drivers/iio/gyro/adxrs290.c
> index 8fcb41f45baac..3efe385ebedc4 100644
> --- a/drivers/iio/gyro/adxrs290.c
> +++ b/drivers/iio/gyro/adxrs290.c
> @@ -597,7 +597,7 @@ static int adxrs290_probe_trigger(struct iio_dev *indio_dev)
>  
>  	ret = devm_request_irq(&st->spi->dev, st->spi->irq,
>  			       &iio_trigger_generic_data_rdy_poll,
> -			       IRQF_ONESHOT, "adxrs290_irq", st->dready_trig);
> +			       IRQF_NO_THREAD, "adxrs290_irq", st->dready_trig);
>  	if (ret < 0)
>  		return dev_err_probe(&st->spi->dev, ret,
>  				     "request irq %d failed\n", st->spi->irq);
> diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c
> index 0e5a512e3bb8f..d358f4d5e5da8 100644
> --- a/drivers/iio/health/afe4403.c
> +++ b/drivers/iio/health/afe4403.c
> @@ -540,11 +540,10 @@ static int afe4403_probe(struct spi_device *spi)
>  			return ret;
>  		}
>  
> -		ret = devm_request_threaded_irq(dev, afe->irq,
> -						iio_trigger_generic_data_rdy_poll,
> -						NULL, IRQF_ONESHOT,
> -						AFE4403_DRIVER_NAME,
> -						afe->trig);
> +		ret = devm_request_irq(dev, afe->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_NO_THREAD, AFE4403_DRIVER_NAME,
> +				       afe->trig);
>  		if (ret) {
>  			dev_err(dev, "Unable to request IRQ\n");
>  			return ret;
> diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c
> index 768d794e574b9..032da52a96d0e 100644
> --- a/drivers/iio/health/afe4404.c
> +++ b/drivers/iio/health/afe4404.c
> @@ -547,11 +547,10 @@ static int afe4404_probe(struct i2c_client *client)
>  			return ret;
>  		}
>  
> -		ret = devm_request_threaded_irq(dev, afe->irq,
> -						iio_trigger_generic_data_rdy_poll,
> -						NULL, IRQF_ONESHOT,
> -						AFE4404_DRIVER_NAME,
> -						afe->trig);
> +		ret = devm_request_irq(dev, afe->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_NO_THREAD, AFE4404_DRIVER_NAME,
> +				       afe->trig);
>  		if (ret) {
>  			dev_err(dev, "Unable to request IRQ\n");
>  			return ret;
> diff --git a/drivers/iio/magnetometer/bmc150_magn.c b/drivers/iio/magnetometer/bmc150_magn.c
> index 6a73f6e2f1f06..a022e1805dff7 100644
> --- a/drivers/iio/magnetometer/bmc150_magn.c
> +++ b/drivers/iio/magnetometer/bmc150_magn.c
> @@ -906,12 +906,9 @@ int bmc150_magn_probe(struct device *dev, struct regmap *regmap,
>  			goto err_poweroff;
>  		}
>  
> -		ret = request_threaded_irq(irq,
> -					   iio_trigger_generic_data_rdy_poll,
> -					   NULL,
> -					   IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> -					   "bmc150_magn_event",
> -					   data->dready_trig);
> +		ret = request_irq(irq, iio_trigger_generic_data_rdy_poll,
> +				  IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
> +				  "bmc150_magn_event", data->dready_trig);
>  		if (ret < 0) {
>  			dev_err(dev, "request irq %d failed\n", irq);
>  			goto err_trigger_unregister;
> diff --git a/drivers/iio/pressure/dlhl60d.c b/drivers/iio/pressure/dlhl60d.c
> index 8bad7162fec64..e975b733ce0a1 100644
> --- a/drivers/iio/pressure/dlhl60d.c
> +++ b/drivers/iio/pressure/dlhl60d.c
> @@ -306,9 +306,9 @@ static int dlh_probe(struct i2c_client *client)
>  	indio_dev->num_channels = ARRAY_SIZE(dlh_channels);
>  
>  	if (client->irq > 0) {
> -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> -			dlh_interrupt, NULL,
> -			IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       dlh_interrupt,
> +				       IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
>  			st->info->name, indio_dev);
>  		if (ret) {
>  			dev_err(&client->dev, "failed to allocate threaded irq");
> diff --git a/drivers/iio/temperature/tmp006.c b/drivers/iio/temperature/tmp006.c
> index 10bd3f221929d..d8d8c8936d177 100644
> --- a/drivers/iio/temperature/tmp006.c
> +++ b/drivers/iio/temperature/tmp006.c
> @@ -356,12 +356,10 @@ static int tmp006_probe(struct i2c_client *client)
>  
>  		indio_dev->trig = iio_trigger_get(data->drdy_trig);
>  
> -		ret = devm_request_threaded_irq(&client->dev, client->irq,
> -						iio_trigger_generic_data_rdy_poll,
> -						NULL,
> -						IRQF_ONESHOT,
> -						"tmp006_irq",
> -						data->drdy_trig);
> +		ret = devm_request_irq(&client->dev, client->irq,
> +				       iio_trigger_generic_data_rdy_poll,
> +				       IRQF_NO_THREAD, "tmp006_irq",
> +				       data->drdy_trig);
>  		if (ret < 0)
>  			return ret;
>  	}

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT
  2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
  2026-01-23 14:51   ` Andy Shevchenko
  2026-01-27 19:37   ` Geert Uytterhoeven
@ 2026-01-28 11:40   ` Nuno Sá
  2026-01-28 12:34     ` Andy Shevchenko
  2 siblings, 1 reply; 75+ messages in thread
From: Nuno Sá @ 2026-01-28 11:40 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior, linux-kernel
  Cc: linux-rt-devel, Thomas Gleixner, Jonathan Cameron, David Lechner,
	Nuno Sá, Andy Shevchenko, linux-iio

On Fri, 2026-01-23 at 12:37 +0100, Sebastian Andrzej Siewior wrote:
> 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 can not fire
> (again) while its handler is running.
> The flag also disallows force-threading of the primary handler and the
> irq-core will warn about this.
> The force-threading functionality is required on PREEMPT_RT because the
> handler is using locks with can sleep on PREEMPT_RT.
> 
> Remove IRQF_ONESHOT from irqflags.
> 
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: David Lechner <dlechner@baylibre.com>
> Cc: "Nuno Sá" <nuno.sa@analog.com>
> Cc: Andy Shevchenko <andy@kernel.org>
> Cc: linux-iio@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  drivers/iio/magnetometer/ak8975.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c
> index 3fd0171e5d69b..d30315ad85ded 100644
> --- a/drivers/iio/magnetometer/ak8975.c
> +++ b/drivers/iio/magnetometer/ak8975.c
> @@ -581,7 +581,7 @@ static int ak8975_setup_irq(struct ak8975_data *data)
>  		irq = gpiod_to_irq(data->eoc_gpiod);
>  
>  	rc = devm_request_irq(&client->dev, irq, ak8975_irq_handler,
> -			      IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> +			      IRQF_TRIGGER_RISING,
>  			      dev_name(&client->dev), data);
>  	if (rc < 0) {
>  		dev_err(&client->dev, "irq %d request failed: %d\n", irq, rc);

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT
  2026-01-28 11:40   ` Nuno Sá
@ 2026-01-28 12:34     ` Andy Shevchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andy Shevchenko @ 2026-01-28 12:34 UTC (permalink / raw)
  To: Nuno Sá
  Cc: Sebastian Andrzej Siewior, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, linux-iio

On Wed, Jan 28, 2026 at 11:40:56AM +0000, Nuno Sá wrote:
> On Fri, 2026-01-23 at 12:37 +0100, Sebastian Andrzej Siewior wrote:

> Reviewed-by: Nuno Sá <nuno.sa@analog.com>

There is the v2 available.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD
  2026-01-28 10:45               ` Nuno Sá
@ 2026-01-28 13:53                 ` Konstantin Ryabitsev
  0 siblings, 0 replies; 75+ messages in thread
From: Konstantin Ryabitsev @ 2026-01-28 13:53 UTC (permalink / raw)
  To: Nuno Sá, Andy Shevchenko
  Cc: Sebastian Andrzej Siewior, tools, linux-kernel, linux-rt-devel,
	Thomas Gleixner, Lars-Peter Clausen, Michael Hennerich,
	Puranjay Mohan, Jonathan Cameron, David Lechner, Nuno Sá,
	Andy Shevchenko, Marcelo Schmitt, Marcus Folkesson,
	Kent Gustavsson, Gustavo Silva, Nishant Malpani, linux-iio

On Wed, Jan 28, 2026, at 05:45, Nuno Sá wrote:
> Since I have you here, I might ask about something that I'm not sure
> how to handle. Might be dumb but here it goes. One problem is when I
> send v1 based on a branch and when I'm starting to work on v2 that
> branch was force-updated and I want to base my v2 on it. Is there any
> good way to handle this?

You should be able to just rebase the b4 branch.

git switch b4/your-branch
git rebase tracking-branch

You can do this at any point, not necessarily between revisions. Since we have the tracking empty commit, we'll always know the base-commit automatically.

-K

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 09/21] char: tpm: cr50: Remove IRQF_ONESHOT
  2026-01-27 15:45     ` Sebastian Andrzej Siewior
@ 2026-01-28 23:17       ` Jarkko Sakkinen
  0 siblings, 0 replies; 75+ messages in thread
From: Jarkko Sakkinen @ 2026-01-28 23:17 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Peter Huewe,
	Jason Gunthorpe, linux-integrity

On Tue, Jan 27, 2026 at 04:45:30PM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-25 18:50:00 [+0200], Jarkko Sakkinen wrote:
> > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > 
> > Shoud I pick this? I did apply it to my master branch (not next).
> 
> I am about to prepare a v2 and if you take it I am going to drop it.
> Shouldn't you apply it, then I hope to route leftovers via the genirq
> tree.

Please route through genirq tree.

> 
> > BR, Jarkko
> 
> Sebastian

BR, Jarkko

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [PATCH 07/21] scsi: efct: Use IRQF_ONESHOT and default primary handler
  2026-01-23 11:36 ` [PATCH 07/21] scsi: efct: " Sebastian Andrzej Siewior
@ 2026-02-04  3:02   ` Martin K. Petersen
  0 siblings, 0 replies; 75+ messages in thread
From: Martin K. Petersen @ 2026-02-04  3:02 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: linux-kernel, linux-rt-devel, Thomas Gleixner, Ram Vegesna,
	James E.J. Bottomley, Martin K. Petersen, linux-scsi,
	target-devel


Sebastian,

> There is no added value in efct_intr_msix() compared to
> irq_default_primary_handler().
>
> Using a threaded interrupt without a dedicated primary handler mandates
> the IRQF_ONESHOT flag to mask the interrupt source while the threaded
> handler is active. Otherwise the interrupt can fire again before the
> threaded handler had a chance to run.

Applied to 6.20/scsi-staging, thanks!

-- 
Martin K. Petersen

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: (subset) [PATCH 00/21] IRQF_ONESHOT clean up
  2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
                   ` (21 preceding siblings ...)
  2026-01-26 18:45 ` (subset) [PATCH 00/21] IRQF_ONESHOT clean up Mark Brown
@ 2026-02-08  2:01 ` Martin K. Petersen
  22 siblings, 0 replies; 75+ messages in thread
From: Martin K. Petersen @ 2026-02-08  2:01 UTC (permalink / raw)
  To: linux-kernel, Sebastian Andrzej Siewior
  Cc: Martin K . Petersen, linux-rt-devel, Thomas Gleixner,
	Alexandre Belloni, Amit Kucheria, Andi Shyti, Andy Shevchenko,
	Andy Shevchenko, Borislav Petkov, Daniel Lezcano, David Lechner,
	Dinh Nguyen, Greg Kroah-Hartman, Gustavo Silva, Hans de Goede,
	Heikki Krogerus, Ilpo Järvinen, Ioana Ciornei,
	James E.J. Bottomley, Jarkko Sakkinen, Jaroslav Kysela,
	Jason Gunthorpe, Jassi Brar, Joerg Roedel, Jonathan Cameron,
	Jonathan Cameron, Kent Gustavsson, Lars-Peter Clausen, Lee Jones,
	Liam Girdwood, Linus Walleij, Liviu Dudau, Lorenzo Pieralisi,
	Luiz Augusto von Dentz, Lukasz Luba, Marcel Holtmann,
	Marcelo Schmitt, Marcus Folkesson, Mark Brown, Mark Rutland,
	Martin Tuma, Mauro Carvalho Chehab, Michael Hennerich,
	Nishant Malpani, Nuno Sá, Oder Chiou, Peter Huewe,
	Puranjay Mohan, Rafael J. Wysocki, Ram Vegesna, Sudeep Holla,
	Suravee Suthikulpanit, Takashi Iwai, Thara Gopinath, Tony Luck,
	Troy Mitchell, Will Deacon, Xianwei Zhao, Yiting Deng, Yixun Lan,
	Zhang Rui

On Fri, 23 Jan 2026 12:36:46 +0100, Sebastian Andrzej Siewior wrote:

> There was a bug report about setting IRQF_ONESHOT where it should have
> not been set. I looked around for other mistakes in that area. There are
> the following categories:
> 
> - Using custom primary irq handler doing exactly what
>   irq_default_primary_handler() does
> 
> [...]

Applied to 6.20/scsi-queue, thanks!

[07/21] scsi: efct: Use IRQF_ONESHOT and default primary handler
        https://git.kernel.org/mkp/scsi/c/1508301d4a47

-- 
Martin K. Petersen

^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2026-02-08  2:03 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23 11:36 [PATCH 00/21] IRQF_ONESHOT clean up Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 01/21] genirq: Set IRQF_COND_ONESHOT in devm_request_irq() Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 02/21] platform/x86: int0002: Remove IRQF_ONESHOT from request_irq() Sebastian Andrzej Siewior
2026-01-23 11:49   ` Sebastian Andrzej Siewior
2026-01-26 14:05     ` Ilpo Järvinen
2026-01-24 10:21   ` Hans de Goede
2026-01-23 11:36 ` [PATCH 03/21] iommu/amd: Use core's primary handler and set IRQF_ONESHOT Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 04/21] mailbox: bcm-ferxrm-mailbox: Use default primary handler Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 05/21] bus: fsl-mc: " Sebastian Andrzej Siewior
2026-01-23 14:28   ` Ioana Ciornei
2026-01-23 11:36 ` [PATCH 06/21] Bluetooth: btintel_pcie: Use IRQF_ONESHOT and " Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 07/21] scsi: efct: " Sebastian Andrzej Siewior
2026-02-04  3:02   ` Martin K. Petersen
2026-01-23 11:36 ` [PATCH 08/21] ARM: versatile: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
2026-01-23 15:26   ` Sudeep Holla
2026-01-27  9:42   ` Linus Walleij
2026-01-23 11:36 ` [PATCH 09/21] char: tpm: cr50: " Sebastian Andrzej Siewior
2026-01-25 16:50   ` Jarkko Sakkinen
2026-01-27 15:45     ` Sebastian Andrzej Siewior
2026-01-28 23:17       ` Jarkko Sakkinen
2026-01-23 11:36 ` [PATCH 10/21] EDAC/altera: " Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 11/21] i2c: spacemit: " Sebastian Andrzej Siewior
2026-01-23 20:53   ` Yixun Lan
2026-01-26  4:21   ` patchwork-bot+linux-riscv
2026-01-23 11:36 ` [PATCH 12/21] ASoC: codecs: rt56*: " Sebastian Andrzej Siewior
2026-01-23 11:36 ` [PATCH 13/21] usb: typec: fusb302: " Sebastian Andrzej Siewior
2026-01-23 16:07   ` Greg Kroah-Hartman
2026-01-26 14:21   ` Heikki Krogerus
2026-01-23 11:37 ` [PATCH 14/21] rtc: amlogic-a4: " Sebastian Andrzej Siewior
2026-01-26  6:05   ` Xianwei Zhao
2026-01-23 11:37 ` [PATCH 15/21] thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
2026-01-23 11:37 ` [PATCH 16/21] perf/cxlpmu: " Sebastian Andrzej Siewior
2026-01-23 12:05   ` Jonathan Cameron
2026-01-23 11:37 ` [PATCH 17/21] mfd: wm8350-core: Use IRQF_ONESHOT Sebastian Andrzej Siewior
2026-01-23 14:52   ` Andy Shevchenko
2026-01-26  8:01     ` Sebastian Andrzej Siewior
2026-01-26  9:46       ` Andy Shevchenko
2026-01-26  9:56         ` Sebastian Andrzej Siewior
2026-01-26 10:05           ` Andy Shevchenko
2026-01-26 10:13             ` Sebastian Andrzej Siewior
2026-01-26 11:22               ` Andy Shevchenko
2026-01-26 11:28                 ` Andy Shevchenko
2026-01-26  9:32   ` Charles Keepax
2026-01-23 11:37 ` [PATCH 18/21] iio: Replace IRQF_ONESHOT with IRQF_NO_THREAD Sebastian Andrzej Siewior
2026-01-23 14:48   ` Andy Shevchenko
2026-01-23 16:47     ` Jonathan Cameron
2026-01-23 21:00       ` David Lechner
2026-01-26  8:15     ` Sebastian Andrzej Siewior
2026-01-26  9:51       ` Andy Shevchenko
2026-01-26 10:10         ` Sebastian Andrzej Siewior
2026-01-26 11:01           ` Andy Shevchenko
2026-01-26 14:29             ` Konstantin Ryabitsev
2026-01-26 14:57               ` Andy Shevchenko
2026-01-26 15:09                 ` Konstantin Ryabitsev
2026-01-26 15:16                   ` Andy Shevchenko
2026-01-28 10:45               ` Nuno Sá
2026-01-28 13:53                 ` Konstantin Ryabitsev
2026-01-28 10:07             ` Sebastian Andrzej Siewior
2026-01-28 10:15               ` Andy Shevchenko
2026-01-26 10:53   ` Marcus Folkesson
2026-01-28 11:39   ` Nuno Sá
2026-01-23 11:37 ` [PATCH 19/21] iio: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
2026-01-23 14:50   ` Andy Shevchenko
2026-01-26  9:25     ` Sebastian Andrzej Siewior
2026-01-23 20:56   ` David Lechner
2026-01-26  8:09     ` Sebastian Andrzej Siewior
2026-01-26 16:34       ` David Lechner
2026-01-23 11:37 ` [PATCH 20/21] iio: magnetometer: Remove IRQF_ONESHOT Sebastian Andrzej Siewior
2026-01-23 14:51   ` Andy Shevchenko
2026-01-27 19:37   ` Geert Uytterhoeven
2026-01-28 11:40   ` Nuno Sá
2026-01-28 12:34     ` Andy Shevchenko
2026-01-23 11:37 ` [PATCH 21/21] media: pci: mg4b: Use IRQF_NO_THREAD Sebastian Andrzej Siewior
2026-01-26 18:45 ` (subset) [PATCH 00/21] IRQF_ONESHOT clean up Mark Brown
2026-02-08  2:01 ` Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox