Hi Biju, On Tue, 1 Jul 2025 at 12:59, Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote: > The interrupt controller found on RZ/G3E doesn't provide any facility to > configure the wakeup sources. That's the reason why the driver lacks the > irq_set_wake() callback for the interrupt chip. > > But this prevent to properly enter power management states like "suspend to > idle". > > Enable the flags IRQCHIP_SKIP_SET_WAKE and IRQCHIP_MASK_ON_SUSPEND so the > interrupt suspend logic can handle the chip correctly. > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Thanks for your patch! > --- a/drivers/irqchip/irq-renesas-rzv2h.c > +++ b/drivers/irqchip/irq-renesas-rzv2h.c > @@ -427,7 +427,9 @@ static const struct irq_chip rzv2h_icu_chip = { > .irq_retrigger = irq_chip_retrigger_hierarchy, > .irq_set_type = rzv2h_icu_set_type, > .irq_set_affinity = irq_chip_set_affinity_parent, > - .flags = IRQCHIP_SET_TYPE_MASKED, > + .flags = IRQCHIP_MASK_ON_SUSPEND | > + IRQCHIP_SET_TYPE_MASKED | > + IRQCHIP_SKIP_SET_WAKE, This driver uses Runtime PM (but does not use a platform driver[1]). So don't you need to implement .irq_set_wake() instead of setting IRQCHIP_SKIP_SET_WAKE(), so the ICU is kept running when it is part of the wake-up path (cfr.[2])? Does wake-up from an ICU interrupt work? [1] Perhaps it should be converted to a platform driver? That may also be needed before you can provide a dev_pm_ops pm_ops.suspend() callback. [2] commit 734e036a9e1052da ("irqchip/renesas-irqc: Use wakeup_path i.s.o. explicit clock handling"). > }; > > static int rzv2h_icu_alloc(struct irq_domain *domain, unsigned int virq, unsigned int nr_irqs, Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds