From: Adam Belay <ambx1@neo.rr.com>
To: Greg KH <greg@kroah.com>, Pavel Machek <pavel@ucw.cz>
Cc: akpm@osdl.org, Amit Gud <gud@eth.net>,
USB development list <linux-usb-devel@lists.sourceforge.net>,
Linux-pm mailing list <linux-pm@lists.osdl.org>,
linux-pci@atrey.karlin.mff.cuni.cz, jgarzik@pobox.com,
linux-kernel@vger.kernel.org, cramerj@intel.com
Subject: Re: [PATCH] PCI: Add pci shutdown ability
Date: Mon, 25 Apr 2005 16:08:25 -0400 [thread overview]
Message-ID: <20050425200825.GA3951@neo.rr.com> (raw)
In-Reply-To: <20050425190606.GA23763@kroah.com>
[-- Attachment #1: Type: text/plain, Size: 3375 bytes --]
On Mon, Apr 25, 2005 at 12:06:06PM -0700, Greg KH wrote:
> Well it seems that people are starting to want to hook the reboot
> notifier, or the device shutdown facility in order to properly shutdown
> pci drivers to make kexec work nicer.
>
> So here's a patch for the PCI core that allows pci drivers to now just
> add a "shutdown" notifier function that will be called when the system
> is being shutdown. It happens just after the reboot notifier happens,
> and it should happen in the proper device tree order, so everyone should
> be happy.
>
> Any objections to this patch?
>
> thanks,
>
> greg k-h
> ------
Hi Greg,
I think this could be important for any type of device, so the power
management subsystem and driver core should handle it. I'm not really
sure if it's useful in pci alone, as it lacks the necessary ordering and
coordination.
I'm currently developing an interface for quieting devices without turning
them off in my Power Management model. Pavel seems to also have plans along
those lines:
(from the current pm.h)
> * There are 4 important states driver can be in:
> * ON -- driver is working
> * FREEZE -- stop operations and apply whatever policy is applicable to a suspended driver
> * of that class, freeze queues for block like IDE does, drop packets for
> * ethernet, etc... stop DMA engine too etc... so a consistent image can be
> * saved; but do not power any hardware down.
> * SUSPEND - like FREEZE, but hardware is doing as much powersaving as possible. Roughly
> * pci D3.
Thanks,
Adam
>
> PCI: Add pci shutdown ability
>
> Now pci drivers can know when the system is going down without having to
> add a reboot notifier event.
>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> --- gregkh-2.6.orig/include/linux/pci.h 2005-04-20 21:25:11.000000000 -0700
> +++ gregkh-2.6/include/linux/pci.h 2005-04-25 11:54:20.000000000 -0700
> @@ -671,6 +671,7 @@
> int (*suspend) (struct pci_dev *dev, pm_message_t state); /* Device suspended */
> int (*resume) (struct pci_dev *dev); /* Device woken up */
> int (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable); /* Enable wake event */
> + void (*shutdown) (struct pci_dev *dev);
>
> struct device_driver driver;
> struct pci_dynids dynids;
> Index: gregkh-2.6/drivers/pci/pci-driver.c
> ===================================================================
> --- gregkh-2.6.orig/drivers/pci/pci-driver.c 2005-04-06 11:47:47.000000000 -0700
> +++ gregkh-2.6/drivers/pci/pci-driver.c 2005-04-25 12:02:12.000000000 -0700
> @@ -318,6 +318,14 @@
> return 0;
> }
>
> +static void pci_device_shutdown(struct device *dev)
> +{
> + struct pci_dev *pci_dev = to_pci_dev(dev);
> + struct pci_driver *drv = pci_dev->driver;
> +
> + if (drv && drv->shutdown)
> + drv->shutdown(pci_dev);
> +}
>
> #define kobj_to_pci_driver(obj) container_of(obj, struct device_driver, kobj)
> #define attr_to_driver_attribute(obj) container_of(obj, struct driver_attribute, attr)
> @@ -385,6 +393,7 @@
> drv->driver.bus = &pci_bus_type;
> drv->driver.probe = pci_device_probe;
> drv->driver.remove = pci_device_remove;
> + drv->driver.shutdown = pci_device_shutdown,
> drv->driver.owner = drv->owner;
> drv->driver.kobj.ktype = &pci_driver_kobj_type;
> pci_init_dynids(&drv->dynids);
> -
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next parent reply other threads:[~2005-04-25 20:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.44L0.0504251128070.5751-100000@iolanthe.rowland.org>
[not found] ` <20050425182951.GA23209@kroah.com>
[not found] ` <SVLXCHCON1syWVLEFN00000099e@SVLXCHCON1.enterprise.veritas.com>
[not found] ` <20050425185113.GC23209@kroah.com>
[not found] ` <20050425190606.GA23763@kroah.com>
2005-04-25 20:08 ` Adam Belay [this message]
2005-04-25 20:19 ` [PATCH] PCI: Add pci shutdown ability Greg KH
2005-04-25 20:24 ` Adam Belay
[not found] ` <426D439D.6080705@pobox.com>
2005-04-25 20:11 ` Adam Belay
[not found] <1114458325.983.17.camel@localhost.localdomain>
[not found] ` <Pine.LNX.4.44L0.0504251609420.7408-100000@iolanthe.rowland.org>
[not found] ` <20050425145831.48f27edb.akpm@osdl.org>
[not found] ` <20050425221326.GC15366@redhat.com>
[not found] ` <20050425232330.GG27771@neo.rr.com>
[not found] ` <1114489949.7111.43.camel@gaston>
2005-04-26 6:23 ` Adam Belay
2005-04-26 9:16 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050425200825.GA3951@neo.rr.com \
--to=ambx1@neo.rr.com \
--cc=akpm@osdl.org \
--cc=cramerj@intel.com \
--cc=greg@kroah.com \
--cc=gud@eth.net \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=linux-pm@lists.osdl.org \
--cc=linux-usb-devel@lists.sourceforge.net \
--cc=pavel@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox