On Thursday, December 14, 2017 4:52:22 PM CET Thomas Gleixner wrote: > On Thu, 14 Dec 2017, Rafael J. Wysocki wrote: > > The problem here is that pci_pm_thaw_noirq() calls pci_restore_state() which > > in fact requires the device to be in D0, so the caller should put it into > > D0 instead of trying to "update" its power state. > > > > [Note that the PCI layer doesn't put devices into low-power states during the > > hibernation's "freeze" transition, but drivers can legitimately do that in > > their "freeze" callbacks which was overlooked in that code and that's what > > i915 does.] > > > > So IMO what we need is the change below. I'm going to test it shortly, > > but please give it a go too. > > So now this looks more reasonable: > > irq_migrate_all_off_this_cpu: Mask 125 pci_msi_mask_irq+0x0/0x10 > __pci_write_msi_msg: 0000:00:02.0 00000000fee0100c 0000412a > __pci_write_msi_msg: Not written > ... > device_pm_callback_start: i915 0000:00:02.0, parent: pci0000:00, noirq bus [thaw] > pci_pm_thaw_noirq <-dpm_run_callback > __pci_write_msi_msg: 0000:00:02.0 00000000fee0100c 0000412a > device_pm_callback_end: i915 0000:00:02.0, err=0 > ... > resume_irqs: Resume 125 > ... > irq_handler_entry: irq=125 name=i915 Cool. Let me respin it with a changelog etc then. Thanks, Rafael