From: Kenji Kaneshige This patch adds a hook 'pcibios_disable_device()' into pci_disable_device() to call architecture specific PCI resource deallocation code. It's a opposite part of pcibios_enable_device(). We need this hook to deallocate architecture specific PCI resource such as IRQ resource, etc.. This patch is just for adding the hook, so 'pcibios_disable_device()' is defined as a null function on all architecture so far. I tested this patch on i386, x86_64 and ia64. But it has not been tested on other architectures because I don't have these machines. Signed-off-by: Kenji Kaneshige Signed-off-by: Andrew Morton --- 25-akpm/drivers/pci/pci.c | 12 ++++++++++++ 1 files changed, 12 insertions(+) diff -puN drivers/pci/pci.c~add-hook-for-pci-resource-deallocation-2 drivers/pci/pci.c --- 25/drivers/pci/pci.c~add-hook-for-pci-resource-deallocation-2 2004-10-18 21:44:00.375487432 -0700 +++ 25-akpm/drivers/pci/pci.c 2004-10-18 21:44:00.379486824 -0700 @@ -375,6 +375,16 @@ pci_enable_device(struct pci_dev *dev) } /** + * pcibios_disable_device - disable arch specific PCI resources for device dev + * @dev: the PCI device to disable + * + * Disables architecture specific PCI resources for the device. This + * is the default implementation. Architecture implementations can + * override this. + */ +void __attribute__ ((weak)) pcibios_disable_device (struct pci_dev *dev) {} + +/** * pci_disable_device - Disable PCI device after use * @dev: PCI device to be disabled * @@ -394,6 +404,8 @@ pci_disable_device(struct pci_dev *dev) pci_command &= ~PCI_COMMAND_MASTER; pci_write_config_word(dev, PCI_COMMAND, pci_command); } + + pcibios_disable_device(dev); } /** _