Revert ACPI interrupt resume changes

If there are devices that use interrupts over a suspend event, ACPI must
restore the PCI interrupt links on resume. Anything else breaks any
device that hasn't been converted to the new (dubious) PM rules.

Drivers that need the irq free/re-aquire sequence can be done one by one
independently of this one.

+18 -20
+18 -20
drivers/acpi/pci_link.c
··· 776 } 777 778 static int 779 - irqrouter_suspend( 780 - struct sys_device *dev, 781 - u32 state) 782 { 783 struct list_head *node = NULL; 784 struct acpi_pci_link *link = NULL; 785 - int ret = 0; 786 787 - ACPI_FUNCTION_TRACE("irqrouter_suspend"); 788 789 list_for_each(node, &acpi_link.entries) { 790 link = list_entry(node, struct acpi_pci_link, node); ··· 803 "Invalid link context\n")); 804 continue; 805 } 806 - if (link->irq.initialized && link->refcnt != 0 807 - /* We ignore legacy IDE device irq */ 808 - && link->irq.active != 14 && link->irq.active !=15) { 809 - printk(KERN_WARNING PREFIX 810 - "%d drivers with interrupt %d neglected to call" 811 - " pci_disable_device at .suspend\n", 812 - link->refcnt, 813 - link->irq.active); 814 - printk(KERN_WARNING PREFIX 815 - "Fix the driver, or rmmod before suspend\n"); 816 - link->refcnt = 0; 817 - ret = -EINVAL; 818 - } 819 } 820 - return_VALUE(ret); 821 } 822 823 ··· 920 /* FIXME: we will remove this interface after all drivers call pci_disable_device */ 921 static struct sysdev_class irqrouter_sysdev_class = { 922 set_kset_name("irqrouter"), 923 - .suspend = irqrouter_suspend, 924 }; 925 926
··· 776 } 777 778 static int 779 + acpi_pci_link_resume( 780 + struct acpi_pci_link *link) 781 + { 782 + ACPI_FUNCTION_TRACE("acpi_pci_link_resume"); 783 + 784 + if (link->refcnt && link->irq.active && link->irq.initialized) 785 + return_VALUE(acpi_pci_link_set(link, link->irq.active)); 786 + else 787 + return_VALUE(0); 788 + } 789 + 790 + static int 791 + irqrouter_resume( 792 + struct sys_device *dev) 793 { 794 struct list_head *node = NULL; 795 struct acpi_pci_link *link = NULL; 796 797 + ACPI_FUNCTION_TRACE("irqrouter_resume"); 798 799 list_for_each(node, &acpi_link.entries) { 800 link = list_entry(node, struct acpi_pci_link, node); ··· 793 "Invalid link context\n")); 794 continue; 795 } 796 + acpi_pci_link_resume(link); 797 } 798 + return_VALUE(0); 799 } 800 801 ··· 922 /* FIXME: we will remove this interface after all drivers call pci_disable_device */ 923 static struct sysdev_class irqrouter_sysdev_class = { 924 set_kset_name("irqrouter"), 925 + .resume = irqrouter_resume, 926 }; 927 928