Hi,
On 21-Jan-26 10:01, Sebastian Andrzej Siewior wrote:
> On 2026-01-21 13:59:38 [+0530], Borah, Chaitanya Kumar wrote:
>>
>> Looks like it.
>> 9: 1 0 IO-APIC 9-fasteoi acpi, INT0002
>
> Does the following help?
>
> 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;
> 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);
> }
>
> My guess would be that the int0002_vgpio.c results in a warning without
> requesting the interrupt while the interrupt.h change should fix it and
> the warning should be gone.
Right, so as the commit message of commit 8f812373d195 ("platform/x86: intel:
int0002_vgpio: Pass IRQF_ONESHOT to request_irq()") explains
the int0002_vgpio driver *must* use the same flags to request
the IRQ as the ACPI core does, which is why it passes IRQF_ONESHOT
even though it does not have a threaded handler.
This worked fine until commit aef30c8d569c ("genirq: Warn about using
IRQF_ONESHOT without a threaded handler") as Chaitanya's bisect
pointed out.
Sebastian as I agree that switching to IRQF_COND_ONESHOT on
the int0002_vgpio.c side is a good way to fix this.
But If I'm reading your proposed changes correct then your suggestion
is to drop IRQF_ONESHOT from int0002_vgpio.c and then instead of
replacing it with IRQF_COND_ONESHOT you want to always pass
IRQF_COND_ONESHOT when using the non-threaded request_irq functions?
I'm not objecting against this, just making sure I understand
correctly.
Note in that case you should also add this to the non devm_
prefixed version.
Regards,
Hans