From: Kenji Kaneshige There might be some cases that pci_disable_device() is called even if the device is already disabled. In this case, pcibios_disable_device() should not call acpi_pci_irq_disable() for the device. (akpm: iirc I decided this was hacky and that the real fix lay elsewhere) Signed-off-by: Kenji Kaneshige Signed-off-by: Andrew Morton --- arch/ia64/pci/pci.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN arch/ia64/pci/pci.c~ia64-halt-hangup-fix arch/ia64/pci/pci.c --- devel/arch/ia64/pci/pci.c~ia64-halt-hangup-fix 2005-07-25 14:33:53.000000000 -0700 +++ devel-akpm/arch/ia64/pci/pci.c 2005-07-25 14:33:53.000000000 -0700 @@ -502,7 +502,8 @@ pcibios_enable_device (struct pci_dev *d void pcibios_disable_device (struct pci_dev *dev) { - acpi_pci_irq_disable(dev); + if (dev->is_enabled) + acpi_pci_irq_disable(dev); } #endif /* CONFIG_ACPI_DEALLOCATE_IRQ */ _