On Tue, Jul 25, 2017 at 08:36:10PM -0600, Jon Derrick wrote: > 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. I orignally had this in the patch I was testing on SLES and took it out when it seemingly didn't make a difference. I didnt test yanking a drive or anything behind the domain while it was suspended, so I wouldn't have hit your scenario. I'll add it back in. Also, I think I need to CC stable on this one too since this is missing all the way since the original inception of this driver.