Skip to contentSkip to conversation

Unset msi and msix flags on pci_device_disable

PATCH In review Thomas Meyer 2 participants 2 messages Mar 21, 2007 – Mar 22, 2007 PCI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Unset msi and msix flags on pci_device_disable

The commit f5f2b13129a6541debf8851bae843cbbf48298b7 broke suspend/resume to disk two or more times in a row. This patches fixes the problem:

This patch should be included in 2.6.21

drivers/pci/pci.c +3 -1
index d3eab05..d7f8f96 100644
@@ -886,7 +886,9 @@ pci_disable_device(struct pci_dev *dev)
         pci_write_config_word(dev, PCI_COMMAND, pci_command);
     }
     dev->is_busmaster = 0;
-
+    dev->msi_enabled=0;
+    dev->msix_enabled=0;
+   
     pcibios_disable_device(dev);
 }
 
#1 lore raw
Quoted 2 lines · Thomas Meyer

The commit f5f2b13129a6541debf8851bae843cbbf48298b7 broke suspend/resume to disk two or more times in a row. This patches fixes the problem:

Please clue me in, on what the problem is, I see why my patch would have changed things I don't see how it is breaking things. Clearing the device bits has no effect on the hardware and it leaks our msi handling data structures.

What is the user doing that this code broke?

I will be happy to work through a proper fix but this isn't it.

If this is actually helps something I am tempted to make the added lines say WARN_ON.....

But I would really like to understand the nature of the problem so that we can do something to fix it properly.

Eric