Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Bluetooth: btintel_pcie: Use IRQF_ONESHOT and default primary handler

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

authored by

Sebastian Andrzej Siewior and committed by
Thomas Gleixner
28abed65 29d4ff55

+2 -7
+2 -7
drivers/bluetooth/btintel_pcie.c
··· 1431 1431 } 1432 1432 } 1433 1433 1434 - static irqreturn_t btintel_pcie_msix_isr(int irq, void *data) 1435 - { 1436 - return IRQ_WAKE_THREAD; 1437 - } 1438 - 1439 1434 static inline bool btintel_pcie_is_rxq_empty(struct btintel_pcie_data *data) 1440 1435 { 1441 1436 return data->ia.cr_hia[BTINTEL_PCIE_RXQ_NUM] == data->ia.cr_tia[BTINTEL_PCIE_RXQ_NUM]; ··· 1532 1537 1533 1538 err = devm_request_threaded_irq(&data->pdev->dev, 1534 1539 msix_entry->vector, 1535 - btintel_pcie_msix_isr, 1540 + NULL, 1536 1541 btintel_pcie_irq_msix_handler, 1537 - IRQF_SHARED, 1542 + IRQF_ONESHOT | IRQF_SHARED, 1538 1543 KBUILD_MODNAME, 1539 1544 msix_entry); 1540 1545 if (err) {