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 776 } 777 777 778 778 static int 779 - irqrouter_suspend( 780 - struct sys_device *dev, 781 - u32 state) 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) 782 793 { 783 794 struct list_head *node = NULL; 784 795 struct acpi_pci_link *link = NULL; 785 - int ret = 0; 786 796 787 - ACPI_FUNCTION_TRACE("irqrouter_suspend"); 797 + ACPI_FUNCTION_TRACE("irqrouter_resume"); 788 798 789 799 list_for_each(node, &acpi_link.entries) { 790 800 link = list_entry(node, struct acpi_pci_link, node); ··· 803 793 "Invalid link context\n")); 804 794 continue; 805 795 } 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 - } 796 + acpi_pci_link_resume(link); 819 797 } 820 - return_VALUE(ret); 798 + return_VALUE(0); 821 799 } 822 800 823 801 ··· 920 922 /* FIXME: we will remove this interface after all drivers call pci_disable_device */ 921 923 static struct sysdev_class irqrouter_sysdev_class = { 922 924 set_kset_name("irqrouter"), 923 - .suspend = irqrouter_suspend, 925 + .resume = irqrouter_resume, 924 926 }; 925 927 926 928