PCI IRQ resource deallocation support [1/3]
Subsystems (8)
PATCH 1/1 PCI IRQ resource deallocation support [1/3]
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 <[email protected]>
---
linux-2.6.9-rc2-mm1-kanesige/arch/alpha/kernel/pci.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/arm/kernel/bios32.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/i386/pci/common.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/ia64/pci/pci.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/m68knommu/kernel/comempci.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/mips/pci/pci.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/mips/pmc-sierra/yosemite/ht.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/parisc/kernel/pci.c | 6 ++++++ linux-2.6.9-rc2-mm1-kanesige/arch/ppc/kernel/pci.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/ppc64/kernel/pci.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/sh/boards/overdrive/galileo.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/sh/drivers/pci/pci.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/sh64/kernel/pcibios.c | 5 +++++ linux-2.6.9-rc2-mm1-kanesige/arch/sparc/kernel/pcic.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/sparc64/kernel/pci.c | 4 ++++ linux-2.6.9-rc2-mm1-kanesige/arch/v850/kernel/rte_mb_a_pci.c | 6 ++++++ linux-2.6.9-rc2-mm1-kanesige/drivers/pci/pci.c | 2 ++ linux-2.6.9-rc2-mm1-kanesige/include/linux/pci.h | 1 + 18 files changed, 77 insertions(+)
arch/alpha/kernel/pci.c renamed from arch/alpha/kernel/pci.c~IRQ_deallocation_pci +5 -0
@@ -381,6 +381,11 @@ pcibios_enable_device(struct pci_dev *dereturn 0 ; } +void +pcibios_disable_device (struct pci_dev *dev) +{ +} +/* * If we set up a device for bus mastering, we need to check the latency * timer as certain firmware forgets to set it properly, as seen
arch/arm/kernel/bios32.c renamed from arch/arm/kernel/bios32.c~IRQ_deallocation_pci +4 -0
@@ -672,6 +672,10 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void pcibios_disable_device (struct pci_dev *dev) +{ +} +int pci_mmap_page_range (struct pci_dev *dev,struct vm_area_struct *vma,enum pci_mmap_state mmap_state,int write_combine) {
arch/i386/pci/common.c renamed from arch/i386/pci/common.c~IRQ_deallocation_pci +4 -0
@@ -249,3 +249,7 @@ int pcibios_enable_device(struct pci_devreturn pcibios_enable_irq (dev); } + +void pcibios_disable_device (struct pci_dev *dev) +{ +}
arch/ia64/pci/pci.c renamed from arch/ia64/pci/pci.c~IRQ_deallocation_pci +5 -0
@@ -449,6 +449,11 @@ pcibios_enable_device (struct pci_dev *d }void +pcibios_disable_device (struct pci_dev *dev) +{ +} + +void pcibios_align_resource (void *data,struct resource *res,unsigned long size,unsigned long align) {
arch/m68knommu/kernel/comempci.c renamed from arch/m68knommu/kernel/comempci.c~IRQ_deallocation_pci +4 -0
@@ -373,6 +373,10 @@ int pcibios_enable_device(struct pci_devreturn (0 ); } +void pcibios_disable_device (struct pci_dev *dev) +{ +} +/*****************************************************************************/ void pcibios_update_resource (struct pci_dev *dev,struct resource *root,struct resource *r,int resource)
arch/mips/pci/pci.c renamed from arch/mips/pci/pci.c~IRQ_deallocation_pci +4 -0
@@ -226,6 +226,10 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void pcibios_disable_device (struct pci_dev *dev) +{ +} +static void __init pcibios_fixup_device_resources (struct pci_dev *dev,struct pci_bus *bus) {
arch/mips/pmc-sierra/yosemite/ht.c renamed from arch/mips/pmc-sierra/yosemite/ht.c~IRQ_deallocation_pci +5 -0
@@ -348,6 +348,11 @@ int pcibios_enable_device(struct pci_dev } +void pcibios_disable_device (struct pci_dev *dev) +{ +} + +void pcibios_update_resource (struct pci_dev *dev,struct resource *root,struct resource *res,int resource)
arch/parisc/kernel/pci.c renamed from arch/parisc/kernel/pci.c~IRQ_deallocation_pci +6 -0
@@ -331,6 +331,12 @@ int pcibios_enable_device(struct pci_dev } +void +pcibios_disable_device (struct pci_dev *dev) +{ +} + +/* PA-RISC specific */ void pcibios_register_hba (struct pci_hba_data *hba) {
arch/ppc64/kernel/pci.c renamed from arch/ppc64/kernel/pci.c~IRQ_deallocation_pci +5 -0
@@ -345,6 +345,11 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void +pcibios_disable_device (struct pci_dev *dev) +{ +} +/* * Return the domain number for this bus. */
arch/ppc/kernel/pci.c renamed from arch/ppc/kernel/pci.c~IRQ_deallocation_pci +5 -0
@@ -1420,6 +1420,11 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void +pcibios_disable_device (struct pci_dev *dev) +{ +} +struct pci_controller *pci_bus_to_hose (int bus) {
arch/sh64/kernel/pcibios.c renamed from arch/sh64/kernel/pcibios.c~IRQ_deallocation_pci +5 -0
@@ -142,6 +142,11 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void +pcibios_disable_device (struct pci_dev *dev) +{ +} +/* * If we set up a device for bus mastering, we need to check and set * the latency timer as it may not be properly set.
arch/sh/boards/overdrive/galileo.c renamed from arch/sh/boards/overdrive/galileo.c~IRQ_deallocation_pci +4 -0
@@ -529,6 +529,10 @@ int pcibios_enable_device(struct pci_dev } +void pcibios_disable_device (struct pci_dev *dev) +{ +} +/* We should do some optimisation work here I think. Ok for now though */ void __init pcibios_fixup_bus (struct pci_bus *bus) {
arch/sh/drivers/pci/pci.c renamed from arch/sh/drivers/pci/pci.c~IRQ_deallocation_pci +4 -0
@@ -127,6 +127,10 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void pcibios_disable_device (struct pci_dev *dev) +{ +} +/* * If we set up a device for bus mastering, we need to check and set * the latency timer as it may not be properly set.
arch/sparc64/kernel/pci.c renamed from arch/sparc64/kernel/pci.c~IRQ_deallocation_pci +4 -0
@@ -502,6 +502,10 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void pcibios_disable_device (struct pci_dev *pdev) +{ +} +void pcibios_resource_to_bus (struct pci_dev *pdev,struct pci_bus_region *region,struct resource *res) {
arch/sparc/kernel/pcic.c renamed from arch/sparc/kernel/pcic.c~IRQ_deallocation_pci +4 -0
@@ -869,6 +869,10 @@ int pcibios_enable_device(struct pci_devreturn 0 ; } +void pcibios_disable_device (struct pci_dev *pdev) +{ +} +/* * NMI */
arch/v850/kernel/rte_mb_a_pci.c renamed from arch/v850/kernel/rte_mb_a_pci.c~IRQ_deallocation_pci +6 -0
@@ -247,6 +247,12 @@ int __nomods_init pcibios_enable_devicereturn 0 ; } + +void +pcibios_disable_device (struct pci_dev *dev) +{ +} +/* Resource allocation. */ static void __devinit pcibios_assign_resources (void )
drivers/pci/pci.c renamed from drivers/pci/pci.c~IRQ_deallocation_pci +2 -0
@@ -411,6 +411,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); }/**
include/linux/pci.h renamed from include/linux/pci.h~IRQ_deallocation_pci +1 -0
@@ -687,6 +687,7 @@ extern struct list_head pci_devices; /*void pcibios_fixup_bus (struct pci_bus *);int pcibios_enable_device (struct pci_dev *,int mask); +void pcibios_disable_device (struct pci_dev *);char *pcibios_setup (char *str);/* Used only when drivers/pci/setup.c is used */
_