On 07/20/2017 03:34 PM, Scott Bauer wrote: [snip] >>> + for (i = 0; i < vmd->msix_count; i++) { >>> + err = devm_request_irq(dev, pci_irq_vector(pdev, i), >>> + vmd_irq, IRQF_NO_THREAD, >> The flag here looks redundant to me because the fn calls into >> request_threaded_irq with no thread_fn. But since it's a bit more >> verbose, can you change the other devm_request_irq to use IRQF_NO_THREAD? > > I actually yanked the request irq from the other call. It was changed > to NO_THREAD in April: > > (3eefa790c968) PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD > Ah so it was. Sorry was looking at v4.12 I think we'll need to do more than free the irq handlers because if an interrupt occurs after that, I think it'll get kicked to handle_bad_irq. I think we just need to add pci_disable_device after save and pcim_enable_device after restore.