From nobody Mon Feb 9 20:12:13 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1DE432459D4 for ; Mon, 9 Feb 2026 13:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770642381; cv=none; b=B46MzRiLstG+VZCvPKGClz9vI+3aDpM+ai1S897YLuuJqNl9t+FtGOxKHohWSXfAHD+kjzdnBjBZY/MvIQ4Z5JIptWKW+ju9JUVyqL8YUQpMTZhWzExoektSIWJDj6eGmFdS8pR69TcT/D8BTgWp8yqIRFpyHOzepYZi0gPVRow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770642381; c=relaxed/simple; bh=ybmxO2DAAY20LSxK7wK3A/zt0U0Qy2fqN7jOXVWZFfM=; h=Date:From:To:Cc:Subject:Message-ID:Content-Type:MIME-Version; b=LH4NeiZmLlqCThY01pySPyL5fnSQNW/D4mRY+62JYUX14eSJYIjcC3q0bRTKpg19d3mbqhZi2dASadmj5jfZwG8EBZJFA9WDpvEdb8vB8iJkhRBeu9Hov/qjMiCIK7xBluRPJtrSb3xtXooi5IBxxaHEJqsIO3lbNUa97K/nUHw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tIKHzrSB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tIKHzrSB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C895AC116C6; Mon, 9 Feb 2026 13:06:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1770642380; bh=ybmxO2DAAY20LSxK7wK3A/zt0U0Qy2fqN7jOXVWZFfM=; h=Date:From:To:Cc:Subject:From; b=tIKHzrSBfnuzOrMdy1s5ahqEOZ68B8SUQTfItY7HGmFIWP2l7Q4mdjwDwaTpd12EH xaEBOWQ1EoDMCaANoWCUEtMPRD6WcL77rWFSY160HREc5wkPPATQVY1KKvAZ7fWisB xInIe+ic2DvqBDTu8gVHZ0h2fLNKxnUZEQBkvgppxHiAyNjdEuZOT0qt7aJlE///JP 2sX8DgaId1k1q/4i+GTNlLwWnkESwnxlrkBnmS6pgraTO7AVb1LH1ZLcfhIKTbKQvQ rA4TiKGuAQ0tPg2xP1swRzCdoGHL+srS7SvnXUGP7a67Plz2x3sQ+33PPVZqMNj1Go X4feqtMcj0lVw== Date: Mon, 09 Feb 2026 14:06:17 +0100 From: Thomas Gleixner To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, x86@kernel.org Subject: [GIT pull] irq/cleanups for v7.0-rc1 Message-ID: <177064216682.108186.17056273147252170162.tglx@xen13> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Linus, please pull the latest irq/cleanups branch from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-cleanups-2= 026-02-09 up to: ef92b98f5f67: media: pci: mg4b: Use IRQF_NO_THREAD A series of treewide cleanups to ensure interrupt request consistency. - Add the missing IRQF_COND_ONESHOT flag to devm_request_irq() This is inconsistent vs. request_irq() and causes the same issues which where addressed with the introduction of this flag - Cleanup IRQF_ONESHOT and IRQF_NO_THREAD usage Quite some drivers have inconsistent interrupt request flags related to interrupt threading namely IRQF_ONESHOT and IRQF_NO_THREAD. This leads = to warnings and/or malfunction when forced interrupt threading is enabled. =20 - Remove stub primary (hard interrupt) handlers =20 A bunch of drivers implement a stub primary (hard interrupt) handler wh= ich just returns IRQ_WAKE_THREAD. The same functionality is provided by the core code when the primary handler argument of request_thread_irq() is = set to NULL. Thanks, tglx ------------------> Sebastian Andrzej Siewior (15): 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 usb: typec: fusb302: Remove IRQF_ONESHOT rtc: amlogic-a4: Remove IRQF_ONESHOT thermal/qcom/lmh: Replace IRQF_ONESHOT with IRQF_NO_THREAD mfd: wm8350-core: Use 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/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/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 +- 18 files changed, 26 insertions(+), 73 deletions(-) diff --git a/arch/arm/mach-versatile/spc.c b/arch/arm/mach-versatile/spc.c index 812db32448fc..2d27777a00d3 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) =20 readl_relaxed(info->baseaddr + PWC_STATUS); =20 - ret =3D request_irq(irq, ve_spc_irq_handler, IRQF_TRIGGER_HIGH - | IRQF_ONESHOT, "vexpress-spc", info); + ret =3D 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); diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_p= cie.c index 2936b535479f..704767b334b9 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 btint= el_pcie_data *data) } } =20 -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 *dat= a) { return data->ia.cr_hia[BTINTEL_PCIE_RXQ_NUM] =3D=3D data->ia.cr_tia[BTINT= EL_PCIE_RXQ_NUM]; @@ -1537,9 +1532,9 @@ static int btintel_pcie_setup_irq(struct btintel_pcie= _data *data) =20 err =3D 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) { diff --git a/drivers/bus/fsl-mc/dprc-driver.c b/drivers/bus/fsl-mc/dprc-dri= ver.c index c63a7e688db6..db67442addad 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_d= ev, } EXPORT_SYMBOL_GPL(dprc_scan_container); =20 -/** - * 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_devi= ce *mc_dev) */ error =3D 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), diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c b/drivers/char/tpm/tpm_tis= _i2c_cr50.c index fc6891a0b693..b48cacacc066 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) =20 if (client->irq > 0) { rc =3D 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 f4937280e940..32920b4cecfb 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 =3D 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 =3D=3D -EPROBE_DEFER) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 0c5b94e64ea1..4edd2088c2db 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_d= ev *device) goto err_release_group_1; } rc =3D 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_d= ev *device) goto err_release_group_1; } rc =3D 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_arria= 10_edac *edac, goto err_release_group1; } rc =3D 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_arria= 10_edac *edac, goto err_release_group1; } rc =3D 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"); diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h index b742ef1adb35..df1c238dc888 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 384c90b4f90a..62a7a718acf8 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; =20 - r =3D request_threaded_irq(iommu->dev->irq, - amd_iommu_int_handler, - amd_iommu_int_thread, - 0, "AMD-Vi", - iommu); - + r =3D 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 *i= ommu, const char *devname, return irq; } =20 - ret =3D request_threaded_irq(irq, amd_iommu_int_handler, - thread_fn, 0, devname, iommu); + ret =3D 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 5d45795c367a..bd577852618b 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; } =20 -irqreturn_t amd_iommu_int_handler(int irq, void *data) -{ - return IRQ_WAKE_THREAD; -} - /*************************************************************************= *** * * IOMMU command queuing functions diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c b/drivers/mailbox/bcm-fle= xrm-mailbox.c index 41f79e51d9e5..4255fefc3a5a 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) =20 /* =3D=3D=3D=3D=3D=3D FlexRM interrupt handler =3D=3D=3D=3D=3D */ =20 -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 =3D -ENODEV; goto fail_free_cmpl_memory; } - ret =3D request_threaded_irq(ring->irq, - flexrm_irq_event, - flexrm_irq_thread, - 0, dev_name(ring->mbox->dev), ring); + ret =3D 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); diff --git a/drivers/media/pci/mgb4/mgb4_trigger.c b/drivers/media/pci/mgb4= /mgb4_trigger.c index 4f9a35904b41..70cad324df60 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; =20 - ret =3D request_irq(irq, &iio_trigger_generic_data_rdy_poll, 0, + ret =3D request_irq(irq, &iio_trigger_generic_data_rdy_poll, IRQF_NO_THRE= AD, "mgb4-trigger", st->trig); if (ret) goto error_free_trig; diff --git a/drivers/platform/x86/intel/int0002_vgpio.c b/drivers/platform/= x86/intel/int0002_vgpio.c index 6f5629dc3f8d..562e88025643 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 =3D devm_request_irq(dev, irq, int0002_irq, - IRQF_ONESHOT | IRQF_SHARED, "INT0002", chip); + ret =3D 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; diff --git a/drivers/rtc/rtc-amlogic-a4.c b/drivers/rtc/rtc-amlogic-a4.c index 123fb372fc9f..50938c35af36 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); =20 ret =3D 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 =3D %d\n", rtc->irq, ret); diff --git a/drivers/scsi/elx/efct/efct_driver.c b/drivers/scsi/elx/efct/ef= ct_driver.c index 1bd42f7db177..528399f725d4 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; } =20 -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 =3D i; =20 rc =3D 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, diff --git a/drivers/thermal/qcom/lmh.c b/drivers/thermal/qcom/lmh.c index ddadcfada513..3d072b7a4a6d 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 int= errupt */ irq_set_status_flags(lmh_data->irq, IRQ_NOAUTOEN); ret =3D 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); diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb= 302.c index 870a71f953f6..19ff8217818e 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) } =20 ret =3D 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=3D%d", ret); goto tcpm_unregister_port; diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 266f2b39213a..b2bb878abd11 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 handl= er, 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); } =20 diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/cor= e.h index 5f70d3b5d1b1..097ef4dfcdac 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 *wm= 8350, int irq, return -ENODEV; =20 return request_threaded_irq(irq + wm8350->irq_base, NULL, - handler, flags, name, data); + handler, flags | IRQF_ONESHOT, name, data); } =20 static inline void wm8350_free_irq(struct wm8350 *wm8350, int irq, void *d= ata)