• Ben Collins's avatar
    Fix broken suspend/resume in ohci1394 · b21efb59
    Ben Collins authored
    I've been experimenting to track down the cause of suspend/resume problems
    on my Compaq Presario X1050 laptop:
    
    http://bugzilla.kernel.org/show_bug.cgi?id=6075
    
    Essentially the ACPI Embedded Controller and keyboard controller would
    get into a bizarre, confused state after resume.
    
    I found that unloading the ohci1394 module before suspend and reloading it
    after resume made the problem go away.  Diffing the dmesg output from
    resume, with and without the module loaded, I found that with the module
    loaded I was missing these:
    
    PM: Writing back config space on device 0000:02:00.0 at offset 1. (Was 2100080, writing 2100007)
    PM: Writing back config space on device 0000:02:00.0 at offset 3. (Was 0, writing 8008)
    PM: Writing back config space on device 0000:02:00.0 at offset 4. (Was 0, writing 90200000)
    PM: Writing back config space on device 0000:02:00.0 at offset 5. (Was 1, writing 2401)
    PM: Writing back config space on device 0000:02:00.0 at offset f. (Was 20000100, writing 2000010a)
    
    The default PCI driver performs the pci_restore_state when no driver is
    loaded for the device.  When the ohci1394 driver is loaded, it is supposed
    to do this, however it appears not to do so.
    
    I created the patch below and tested it, and it appears to resolve the
    suspend problems I was having with the module loaded.  I only added in the
    pci_save_state and pci_restore_state - however, though I know little of
    this hardware, surely the driver should really be doing more than this when
    suspending and resuming?  Currently it does almost nothing, what if there
    are commands in progress, etc?
    Signed-off-by: default avatarRobert Hancock <hancockr@shaw.ca>
    Cc: Jody McIntyre <scjody@modernduck.com>
    Cc: Ben Collins <bcollins@debian.org>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarBen Collins <bcollins@ubuntu.com>
    b21efb59
ohci1394.c 107 KB