Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S265092AbUFAQDQ (ORCPT ); Tue, 1 Jun 2004 12:03:16 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S265037AbUFAQDP (ORCPT ); Tue, 1 Jun 2004 12:03:15 -0400 Received: from cantor.suse.de ([195.135.220.2]:28313 "EHLO Cantor.suse.de") by vger.kernel.org with ESMTP id S265092AbUFAQCT (ORCPT ); Tue, 1 Jun 2004 12:02:19 -0400 Date: Tue, 01 Jun 2004 17:58:16 +0200 Message-ID: From: Takashi Iwai To: Arjan van de Ven Cc: Pavel Machek , greg@kroah.com, linux-kernel@vger.kernel.org Subject: Re: Resume enhancement: restore pci config space In-Reply-To: <20040601153800.GA22986@devserv.devel.redhat.com> References: <20040526203524.GF2057@devserv.devel.redhat.com> <20040530184031.GF997@openzaurus.ucw.cz> <20040531133834.GA5834@devserv.devel.redhat.com> <1086102397.7500.2.camel@laptop.fenrus.com> <20040601153800.GA22986@devserv.devel.redhat.com> User-Agent: Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.5 (Awara-Onsen) FLIM/1.14.5 (Demachiyanagi) APEL/10.6 MULE XEmacs/21.4 (patch 13) (Rational FORTRAN) (i386-suse-linux) MIME-Version: 1.0 (generated by SEMI 1.14.5 - "Awara-Onsen") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2464 Lines: 66 At Tue, 1 Jun 2004 17:38:00 +0200, Arjan van de Ven wrote: > > [1 ] > On Tue, Jun 01, 2004 at 05:26:51PM +0200, Takashi Iwai wrote: > > At Tue, 01 Jun 2004 17:06:38 +0200, > > Arjan van de Ven wrote: > > > > > > [1 ] > > > > > > > int xxx_resume(struct pci_dev *dev) > > > > { > > > > int err; > > > > if ((err = pci_default_resume(dev)) < 0) > > > > return err; > > > > // ... do h/w specific > > > > } > > > > > > well define "h/w specific", just give me an example of a real (alsa?) > > > driver that would use it (or point me to one) so that I can see if this > > > is the best API, what the return value should be etc etc > > > > I'm afraid the ALSA drivers aren't be the best examples :) > > It doesn't handle the error in suspend/resume at all. > > hm it looks like all this would gain is that instead of 2 or 3 function calls > you need to do one which then calls those 3. The *driver* already knows if > it needs busmaster or not etc, so when I wrote this code I felt that the > driver could do a better job really. But well if you think it's worth it to > save those 3 lines into 1 ? Well, if it's all over hundreds of drivers, we'll gain a couple of hundreds of lines ;) Another good reason would be that it will prevent to forget the proper calls, e.g. in the case you changed the busmastering in the main probe code. Anyway, it's just a little gain. I don't mind even if such a function is not exported. > > Hmm, looking at them right now, and i found most of them don't have > > pci_suspend_state() because it worked without saving/restoring the pci > > state _casually_, and missing pci_set_power_state(), etc... > > I made the PCI layer save PCI config space always, and the generic resume callback > conditional, so saving PCI config state is not something that explicitly > needs to be done in the suspend hook. That's nice. > I don't know what else a suspend > standard function needs to do. I don't see others for suspends, too. pci_disable_device() and pci_set_power_state() should be driver-specific. (for example, ymfpci device doesn't like pci_set_power_state(3) - it won't wake up at the next time.) Takashi - 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/