]> err.no Git - linux-2.6/blobdiff - drivers/pci/pci.c
[PATCH] libata-ncq: update EH to handle NCQ
[linux-2.6] / drivers / pci / pci.c
index bea1ad1ad5ba8d52c12f4f39d526889c914bf5fd..2329f941a0dcd11fa1f18c13f5129347c91581f7 100644 (file)
@@ -307,9 +307,11 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state)
         * Can enter D0 from any state, but if we can only go deeper 
         * to sleep if we're already in a low power state
         */
-       if (state != PCI_D0 && dev->current_state > state)
+       if (state != PCI_D0 && dev->current_state > state) {
+               printk(KERN_ERR "%s(): %s: state=%d, current state=%d\n",
+                       __FUNCTION__, pci_name(dev), state, dev->current_state);
                return -EINVAL;
-       else if (dev->current_state == state) 
+       } else if (dev->current_state == state)
                return 0;        /* we're already there */
 
        /* find PCI PM capability in list */
@@ -444,6 +446,10 @@ pci_save_state(struct pci_dev *dev)
        /* XXX: 100% dword access ok here? */
        for (i = 0; i < 16; i++)
                pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]);
+       if ((i = pci_save_msi_state(dev)) != 0)
+               return i;
+       if ((i = pci_save_msix_state(dev)) != 0)
+               return i;
        return 0;
 }
 
@@ -458,6 +464,8 @@ pci_restore_state(struct pci_dev *dev)
 
        for (i = 0; i < 16; i++)
                pci_write_config_dword(dev,i * 4, dev->saved_config_space[i]);
+       pci_restore_msi_state(dev);
+       pci_restore_msix_state(dev);
        return 0;
 }