public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] missing pci_disable_device()
@ 2004-09-07  1:26 Kenji Kaneshige
  2004-09-07  9:49 ` Alan Cox
  0 siblings, 1 reply; 14+ messages in thread
From: Kenji Kaneshige @ 2004-09-07  1:26 UTC (permalink / raw)
  To: greg, akpm, bjorn.helgaas, linux-kernel

Hi,

As mentioned in Documentaion/pci.txt, pci device driver should call
pci_disable_device() to deallocate any IRQ resources, disable PCI
bus-mastering and etc. when it decides to stop using the device.
But there seems to be many drivers that don't use pci_disable_device()
properly so far.

The following patch changes pci_device_remove() to call
pci_disable_device() instead of the driver if the device has not been
disabled by the driver.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>

---

 linux-2.6.9-rc1-kanesige/drivers/pci/pci-driver.c |    7 +++++++
 1 files changed, 7 insertions(+)

diff -puN drivers/pci/pci-driver.c~force_pci_disable_device drivers/pci/pci-driver.c
--- linux-2.6.9-rc1/drivers/pci/pci-driver.c~force_pci_disable_device	2004-09-01 17:42:40.000000000 +0900
+++ linux-2.6.9-rc1-kanesige/drivers/pci/pci-driver.c	2004-09-02 14:54:39.824783993 +0900
@@ -291,6 +291,13 @@ static int pci_device_remove(struct devi
 			drv->remove(pci_dev);
 		pci_dev->driver = NULL;
 	}
+	/*
+	 * If the device has not been disabled, we call
+	 * pci_disable_device() instead of the driver.
+	 */
+	if (pci_dev->is_enabled)
+		pci_disable_device(pci_dev);
+
 	pci_dev_put(pci_dev);
 	return 0;
 }


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2004-09-14 20:53 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-07  1:26 [PATCH] missing pci_disable_device() Kenji Kaneshige
2004-09-07  9:49 ` Alan Cox
2004-09-08  3:14   ` Kenji Kaneshige
2004-09-08 12:39     ` Alan Cox
2004-09-09  5:55       ` Kenji Kaneshige
2004-09-09  6:20         ` Greg KH
2004-09-09 10:29           ` Kenji Kaneshige
2004-09-09 13:11             ` Alan Cox
2004-09-10  7:58               ` Kenji Kaneshige
2004-09-09 17:33             ` Greg KH
2004-09-09 19:38               ` Jeff Garzik
2004-09-10  8:18               ` Kenji Kaneshige
2004-09-13  3:55               ` Kenji Kaneshige
2004-09-14 20:47                 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox