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


Reply via email to