Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[ACPI] S3 Suspend to RAM: fix driver suspend/resume methods

Drivers should do this:

.suspend()
pci_disable_device()

.resume()
pci_enable_device()

http://bugzilla.kernel.org/show_bug.cgi?id=3469

Signed-off-by: David Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>

authored by

David Shaohua Li and committed by
Len Brown
d58da590 362b06bb

+10
+3
drivers/net/b44.c
··· 1927 1927 b44_free_rings(bp); 1928 1928 1929 1929 spin_unlock_irq(&bp->lock); 1930 + pci_disable_device(pdev); 1930 1931 return 0; 1931 1932 } 1932 1933 ··· 1937 1936 struct b44 *bp = netdev_priv(dev); 1938 1937 1939 1938 pci_restore_state(pdev); 1939 + pci_enable_device(pdev); 1940 + pci_set_master(pdev); 1940 1941 1941 1942 if (!netif_running(dev)) 1942 1943 return 0;
+3
drivers/net/ne2k-pci.c
··· 660 660 661 661 netif_device_detach(dev); 662 662 pci_save_state(pdev); 663 + pci_disable_device(pdev); 663 664 pci_set_power_state(pdev, pci_choose_state(pdev, state)); 664 665 665 666 return 0; ··· 672 671 673 672 pci_set_power_state(pdev, 0); 674 673 pci_restore_state(pdev); 674 + pci_enable_device(pdev); 675 + pci_set_master(pdev); 675 676 NS8390_init(dev, 1); 676 677 netif_device_attach(dev); 677 678
+3
drivers/pcmcia/yenta_socket.c
··· 1032 1032 pci_save_state(dev); 1033 1033 pci_read_config_dword(dev, 16*4, &socket->saved_state[0]); 1034 1034 pci_read_config_dword(dev, 17*4, &socket->saved_state[1]); 1035 + pci_disable_device(dev); 1035 1036 1036 1037 /* 1037 1038 * Some laptops (IBM T22) do not like us putting the Cardbus ··· 1056 1055 pci_restore_state(dev); 1057 1056 pci_write_config_dword(dev, 16*4, socket->saved_state[0]); 1058 1057 pci_write_config_dword(dev, 17*4, socket->saved_state[1]); 1058 + pci_enable_device(dev); 1059 + pci_set_master(dev); 1059 1060 1060 1061 if (socket->type && socket->type->restore_state) 1061 1062 socket->type->restore_state(socket);
+1
drivers/usb/core/hcd-pci.c
··· 380 380 usb_hc_died (hcd); 381 381 } 382 382 383 + pci_enable_device(dev); 383 384 return retval; 384 385 } 385 386 EXPORT_SYMBOL (usb_hcd_pci_resume);