Hi,I also faced same issue in our suspend failure path and posted fix sometime ago as
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.