Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161252AbWJKUlZ (ORCPT ); Wed, 11 Oct 2006 16:41:25 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1161258AbWJKUlZ (ORCPT ); Wed, 11 Oct 2006 16:41:25 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:4874 "HELO iolanthe.rowland.org") by vger.kernel.org with SMTP id S1161252AbWJKUlY (ORCPT ); Wed, 11 Oct 2006 16:41:24 -0400 Date: Wed, 11 Oct 2006 16:41:22 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Greg KH cc: linux-pci@atrey.karlin.mff.cuni.cz, Linux-pm mailing list , Kernel development list Subject: Bug in PCI core Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 843 Lines: 19 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/