Hi, On 4/7/21 9:00 AM, Tian Tao wrote: > disable_irq() after request_irq() still has a time gap in which > interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will > disable IRQ auto-enable because of requesting. Thank you for your patch, it is good to see the issue of there not being a simply way to request IRQs in a way where they are initially disabled being solved. > this patch is made base on "add IRQF_NO_AUTOEN for request_irq" which > is being merged: https://lore.kernel.org/patchwork/patch/1388765/ So this is not yet in Linus' tree. When you write "which is being merged", I assume that means that this is going upstream in the 5.13 window. So what is the plan to merge follow-up patches using the new API which the "add IRQF_NO_AUTOEN for request_irq" patch introduces? Will there be an immutable branch provided with that patch which other subsystem maintainers can merge ? Regards, Hans > > Signed-off-by: Tian Tao <tiantao6@xxxxxxxxxxxxx> > --- > drivers/platform/surface/aggregator/controller.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c > index aa6f37b..00e3828 100644 > --- a/drivers/platform/surface/aggregator/controller.c > +++ b/drivers/platform/surface/aggregator/controller.c > @@ -2483,7 +2483,8 @@ int ssam_irq_setup(struct ssam_controller *ctrl) > * interrupt, and let the SAM resume callback during the controller > * resume process clear it. > */ > - const int irqf = IRQF_SHARED | IRQF_ONESHOT | IRQF_TRIGGER_RISING; > + const int irqf = IRQF_SHARED | IRQF_ONESHOT | > + IRQF_TRIGGER_RISING | IRQF_NO_AUTOEN; > > gpiod = gpiod_get(dev, "ssam_wakeup-int", GPIOD_ASIS); > if (IS_ERR(gpiod)) > @@ -2501,7 +2502,6 @@ int ssam_irq_setup(struct ssam_controller *ctrl) > return status; > > ctrl->irq.num = irq; > - disable_irq(ctrl->irq.num); > return 0; > } > >