When a PCI device is suspended, its driver calls pci_save_state() so that the config space can be restored when the device is resumed. Then the driver calls pci_set_power_state(). However pci_set_power_state() calls pci_block_user_cfg_access(), and that routine calls pci_save_state() again. This overwrites the saved state with data in which memory, I/O, and bus master accesses are disabled. As a result, when the device is resumed it doesn't work. Obviously pci_block_user_cfg_access() needs to be fixed. I don't know the right way to fix it; hopefully somebody else does. Alan Stern