[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAD=HUj7cmO5x4aunD_sJoQ6BQxejiwqa8tMbORnGjB3gADiLxg@mail.gmail.com>
Date: Tue, 23 Apr 2024 11:06:21 +0900
From: David Stevens <stevensd@...omium.org>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: linux-kernel@...r.kernel.org
Subject: Re: [PATCH] genirq: Disable suspended irqs when restoring affinity
On Tue, Apr 23, 2024 at 5:36 AM Thomas Gleixner <tglx@...utronix.de> wrote:
>
> On Thu, Apr 18 2024 at 16:46, David Stevens wrote:
> > In irq_restore_affinity_of_irq(), after initializing an affinity
> > managed irq, disable the irq if it should be suspended. This ensures
> > that irqs are not delivered to drivers during the noirq phase of
> > resuming from S3, after non-boot CPUs are brought back online.
> >
> > Signed-off-by: David Stevens <stevensd@...omium.org>
> > ---
> > kernel/irq/cpuhotplug.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/kernel/irq/cpuhotplug.c b/kernel/irq/cpuhotplug.c
> > index 1ed2b1739363..c00132013708 100644
> > --- a/kernel/irq/cpuhotplug.c
> > +++ b/kernel/irq/cpuhotplug.c
> > @@ -197,6 +197,8 @@ static void irq_restore_affinity_of_irq(struct irq_desc *desc, unsigned int cpu)
> >
> > if (irqd_is_managed_and_shutdown(data)) {
> > irq_startup(desc, IRQ_RESEND, IRQ_START_COND);
> > + if (desc->istate & IRQS_SUSPENDED)
> > + __disable_irq(desc);
>
> Makes sense. But I rather avoid the whole startup/disable dance in this
> case and let resume_device_irqs() deal with it.
Thanks for taking a look at my patch. Should I send a v2 with your
suggestions, or will you create a patch for your tree yourself?
-David
Powered by blists - more mailing lists