]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Bluetooth: btintel_pcie: Use IRQF_ONESHOT and default primary handler
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 28 Jan 2026 09:55:26 +0000 (10:55 +0100)
committerThomas Gleixner <tglx@kernel.org>
Sun, 1 Feb 2026 16:37:14 +0000 (17:37 +0100)
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.

Fixes: c2b636b3f788d ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260128095540.863589-7-bigeasy@linutronix.de
drivers/bluetooth/btintel_pcie.c

index 2936b535479f268a5f286f83ea7447e57b93171a..704767b334b98b57225d607411a81ef6f8fcb64b 100644 (file)
@@ -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) {