Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757603AbZA2CUX (ORCPT ); Wed, 28 Jan 2009 21:20:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753067AbZA2CUG (ORCPT ); Wed, 28 Jan 2009 21:20:06 -0500 Received: from mms3.broadcom.com ([216.31.210.19]:4772 "EHLO MMS3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752008AbZA2CUE (ORCPT ); Wed, 28 Jan 2009 21:20:04 -0500 X-Server-Uuid: B55A25B1-5D7D-41F8-BC53-C57E7AD3C201 Date: Wed, 28 Jan 2009 18:19:44 -0800 From: "Matt Carlson" To: "Linus Torvalds" cc: "Parag Warudkar" , "netdev@vger.kernel.org" , "Linux Kernel Mailing List" , "David S. Miller" , "Andrew Morton" , "Rafael J. Wysocki" , "Matthew Carlson" Subject: Re: 2.6.29-rc3: tg3 dead after resume Message-ID: <20090129021944.GA12879@xw6200.broadcom.net> References: MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.5.16 (2007-06-09) X-WSS-ID: 659FCDCC5KC6100367-01-01 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2320 Lines: 56 On Wed, Jan 28, 2009 at 06:10:37PM -0800, Linus Torvalds wrote: > > > On Wed, 28 Jan 2009, Parag Warudkar wrote: > > > > Sure, diff -u below. There are differences but not sure if they are > > abnormal or expected. > > Well, they're all in the "extended set", ie not the basic registers that > the PCI layer saves. The PCI layer normally just saves the low 16 dwords, > along with the PCI[EX] capability thing. > > None of the PCI save/restore routines have ever saved the extended state > (well, "ever" is a strong word - I think we long ago used to pass in how > many bytes we wanted saved, but got rid of it), and it certainly didn't > change with the recent PCI suspend/resume changes. > > I get the feeling that it's some odd tg3 issue. That tg3 driver does have > that special > > /* Make sure register accesses (indirect or otherwise) > * will function correctly. > */ > pci_write_config_dword(tp->pdev, > TG3PCI_MISC_HOST_CTRL, > tp->misc_host_ctrl); > > in its own version of setting the power state, and maybe that really > _must_ happen before we actually set the state back to PCI_D0. That sounds > very odd, but hey.. > > I added Matt Carlson to the cc, since he seems to be the main tg3 > authority here. > > Matt: the whole discussion is on netdev and the kernel mailing list, but > the short version is that -rc3 suspends and resumes for Parag again > (unlike -rc2), but tg3 doesn't appear to resume properly. The generic PCI > layer now does more at resume time (very early, when interrupts are still > off), see > > - pci_pm_resume_noirq -> > pci_pm_default_resume_noirq() -> > pci_restore_standard_config() > > for more of the details (basically it always does that > "pci_restore_state()" and tries to bring the device back to PCI_D0). Thanks Linus. I'm looking over the diffs Parag sent and I already see some suspicious register settings. Let me think about this some more and then I'll jump into the discussion. -- 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/