lkml.org 
[lkml]   [2008]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/3] Sound (HDA Intel): Restore PCI configuration space with interrupts off
    Date
    From: Rafael J. Wysocki <rjw@sisk.pl>
    Subject: Sound (HDA Intel): Restore PCI configuration space with interrupts off

    Move the restoration of the standard PCI configuration registers
    in the snd_hda_intel driver to a ->resume_early() callback executed
    with interrupts disabled, since doing that with interrupts enabled
    may lead to problems in some cases.

    This patch addresses the regression from 2.6.26 tracked as
    http://bugzilla.kernel.org/show_bug.cgi?id=12121 .

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    sound/pci/hda/hda_intel.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    Index: linux-2.6/sound/pci/hda/hda_intel.c
    ===================================================================
    --- linux-2.6.orig/sound/pci/hda/hda_intel.c
    +++ linux-2.6/sound/pci/hda/hda_intel.c
    @@ -1951,13 +1951,16 @@ static int azx_suspend(struct pci_dev *p
    return 0;
    }

    +static int azx_resume_early(struct pci_dev *pci)
    +{
    + return pci_restore_state(pci);
    +}
    +
    static int azx_resume(struct pci_dev *pci)
    {
    struct snd_card *card = pci_get_drvdata(pci);
    struct azx *chip = card->private_data;

    - pci_set_power_state(pci, PCI_D0);
    - pci_restore_state(pci);
    if (pci_enable_device(pci) < 0) {
    printk(KERN_ERR "hda-intel: pci_enable_device failed, "
    "disabling device\n");
    @@ -2465,6 +2468,7 @@ static struct pci_driver driver = {
    .remove = __devexit_p(azx_remove),
    #ifdef CONFIG_PM
    .suspend = azx_suspend,
    + .resume_early = azx_resume_early,
    .resume = azx_resume,
    #endif
    };

    \
     
     \ /
      Last update: 2008-12-06 15:15    [W:0.023 / U:0.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site