Bug in PCI core

From: Alan Stern
Date: Wed Oct 11 2006 - 16:41:40 EST


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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/