[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <877e22ezv6.fsf@nanos.tec.linutronix.de>
Date: Wed, 08 Jan 2020 16:23:25 +0100
From: Thomas Gleixner <tglx@...utronix.de>
To: Anchal Agarwal <anchalag@...zon.com>, mingo@...hat.com,
bp@...en8.de, hpa@...or.com, x86@...nel.org,
boris.ostrovsky@...cle.com, jgross@...e.com,
linux-pm@...r.kernel.org, linux-mm@...ck.org, kamatam@...zon.com,
sstabellini@...nel.org, konrad.wilk@...cle.co,
roger.pau@...rix.com, axboe@...nel.dk, davem@...emloft.net,
rjw@...ysocki.net, len.brown@...el.com, pavel@....cz,
peterz@...radead.org, eduval@...zon.com, sblbir@...zon.com,
anchalag@...zon.com, xen-devel@...ts.xenproject.org,
vkuznets@...hat.com, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, dwmw@...zon.co.uk,
fllinden@...ozn.com
Cc: anchalag@...zon.com
Subject: Re: [RFC PATCH V2 09/11] xen: Clear IRQD_IRQ_STARTED flag during shutdown PIRQs
Anchal Agarwal <anchalag@...zon.com> writes:
> shutdown_pirq is invoked during hibernation path and hence
> PIRQs should be restarted during resume.
> Before this commit'020db9d3c1dc0a' xen/events: Fix interrupt lost
> during irq_disable and irq_enable startup_pirq was automatically
> called during irq_enable however, after this commit pirq's did not
> get explicitly started once resumed from hibernation.
>
> chip->irq_startup is called only if IRQD_IRQ_STARTED is unset during
> irq_startup on resume. This flag gets cleared by free_irq->irq_shutdown
> during suspend. free_irq() never gets explicitly called for ioapic-edge
> and ioapic-level interrupts as respective drivers do nothing during
> suspend/resume. So we shut them down explicitly in the first place in
> syscore_suspend path to clear IRQ<>event channel mapping. shutdown_pirq
> being called explicitly during suspend does not clear this flags, hence
> .irq_enable is called in irq_startup during resume instead and pirq's
> never start up.
What?
> +void irq_state_clr_started(struct irq_desc *desc)
> {
> irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED);
> }
> +EXPORT_SYMBOL_GPL(irq_state_clr_started);
This is core internal state and not supposed to be fiddled with by
drivers.
irq_chip has irq_suspend/resume/pm_shutdown callbacks for a reason.
Thanks,
tglx
Powered by blists - more mailing lists