Skip to contentSkip to conversation

IRQF_RESUME_EARLY and errors in dpm_suspend_noirq

DISCUSSION Heiko Stübner 4 participants 7 messages Nov 20, 2013 – Nov 25, 2013

lore
Share & tools
lore
#0 lore raw

Hi,

Commit 9bab0b7fbace (genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier) split the suspend/resume of the irqs into two parts.

The early-irqs get resumed during syscore_resume, while the rest get resumed by the regular resume_device_irqs.

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

Thanks
Heiko

#1 lore raw
Quoted 8 lines · Heiko Stübner

Hi,

Commit 9bab0b7fbace (genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier) split the suspend/resume of the irqs into two parts.

The early-irqs get resumed during syscore_resume, while the rest get resumed by the regular resume_device_irqs.

Quoted 8 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

It is still under review.

You can try this patch if it resolve the issue.

Thanks,
Laxman

author Acked-by
#2 lore raw

Hi Laxman,

Am Mittwoch, 20. November 2013, 10:54:10 schrieb Laxman Dewangan:

Quoted 8 lines
Quoted 7 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

Quoted 7 lines

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

It is still under review.

From the thread on lkml.org it looks like it got no reaction at all - maybe

was just overlooked. So maybe it would be good to re-send it.

As it is not visible on lkml.org, did you also include [email protected], as the issue started in 2011?

Quoted 1 line

You can try this patch if it resolve the issue.

Your patch looks a lot more sophisticated than my current band-aid fix :-) by using the fact that irqs won't get resumed twice on their own.

So if you repost your patch you could add an

Heiko

Reviewed-by
#3 lore raw
Quoted 16 lines · Heiko Stübner

Hi Laxman,

Am Mittwoch, 20. November 2013, 10:54:10 schrieb Laxman Dewangan:

Quoted 13 lines
Quoted 7 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

It is still under review.

If it helps, you can add my

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#4 lore raw
In reply to Heiko Stübner

Hi!

(Oops, it seems that this thread uses Rafael's old address, and that it bounces, added address from maintainers to cc.)

Pavel

Quoted 34 lines · Heiko Stübner

Hi Laxman,

Am Mittwoch, 20. November 2013, 10:54:10 schrieb Laxman Dewangan:

Quoted 8 lines
Quoted 7 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

Quoted 5 lines

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

It is still under review.

From the thread on lkml.org it looks like it got no reaction at all - maybe was just overlooked. So maybe it would be good to re-send it.

As it is not visible on lkml.org, did you also include [email protected], as the issue started in 2011?

Quoted 1 line

You can try this patch if it resolve the issue.

Your patch looks a lot more sophisticated than my current band-aid fix :-) by using the fact that irqs won't get resumed twice on their own.

So if you repost your patch you could add an

Heiko

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#5 lore raw
In reply to Laxman Dewangan
Quoted 17 lines · Laxman Dewangan
Quoted 8 lines · Heiko Stübner

Hi,

Commit 9bab0b7fbace (genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier) split the suspend/resume of the irqs into two parts.

The early-irqs get resumed during syscore_resume, while the rest get resumed by the regular resume_device_irqs.

Quoted 8 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

Quoted 5 lines

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

It is still under review.

IME zero comments since August is not "under review", it is "has slipped through the cracks" ;-)

I would suggest you resend it.

Ian.

#6 lore raw
Quoted 22 lines · Ian Campbell
Quoted 21 lines · Laxman Dewangan
Quoted 8 lines · Heiko Stübner

Hi,

Commit 9bab0b7fbace (genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier) split the suspend/resume of the irqs into two parts.

The early-irqs get resumed during syscore_resume, while the rest get resumed by the regular resume_device_irqs.

Quoted 8 lines

I may be blind, but where get the early-irqs resumed in the error path of dpm_suspend_noirq?

When a suspend_noirq callback returns an error, dpm_resume_noirq gets called, which only calls resume_device_irqs while the suspend_device_irqs call in dpm_suspend_noirq suspends all irqs. So it does not seem that the early-irqs get resumed at all in this case.

I also faced same issue in our suspend failure path and posted fix sometime ago as
https://lkml.org/lkml/2013/8/13/373

Quoted 6 lines
Quoted 1 line

It is still under review.

IME zero comments since August is not "under review", it is "has slipped through the cracks" ;-)

I would suggest you resend it.

Thanks all of you for review/ack/validating it. I resend it today. Hope at this time it will be on tree.

Howevere, I have not added stable on cc.