lkml.org 
[lkml]   [2002]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patches in this message
    /
    Date
    From
    Subjectpatch for 2.5.42. 2/2
    Hello Pavel Machek:

    With this patch, My machine has work very fine. Without it my machine will hangup/Oops in suspend/resume.
    By the way, If i'm right , I can change other driver in kernel to this model.

    --- linux-2.5.42/sound/pci/intel8x0.c Sat Oct 12 21:24:58 2002
    +++ linux-2.5.42-suspend/sound/pci/intel8x0.c Sat Oct 12 21:21:12 2002
    @@ -1891,6 +1891,8 @@
    {
    snd_card_t *card = chip->card;

    + if (chip->in_suspend)
    + return;
    chip->in_suspend = 1;
    snd_power_lock(card);
    if (card->power_state == SNDRV_CTL_POWER_D3hot)
    @@ -1909,7 +1911,10 @@
    snd_card_t *card = chip->card;
    int i;

    + if (!chip->in_suspend)
    + return;
    snd_power_lock(card);
    + chip->in_suspend = 0;
    if (card->power_state == SNDRV_CTL_POWER_D0)
    goto __skip;

    @@ -1919,7 +1924,6 @@
    if (chip->ac97[i])
    snd_ac97_resume(chip->ac97[i]);

    - chip->in_suspend = 0;
    snd_power_change_state(card, SNDRV_CTL_POWER_D0);
    __skip:
    snd_power_unlock(card);
    --- linux-2.5.42/drivers/net/3c59x.c Sat Oct 12 21:25:00 2002
    +++ linux-2.5.42-suspend/drivers/net/3c59x.c Sat Oct 12 21:20:48 2002
    @@ -809,6 +809,9 @@
    spinlock_t lock; /* Serialise access to device & its vortex_private */
    spinlock_t mdio_lock; /* Serialise access to mdio hardware */
    u32 power_state[16];
    +#ifdef CONFIG_PM
    + int in_suspend;
    +#endif
    };

    /* The action to take with a media selection timer tick.
    @@ -893,6 +896,10 @@
    struct net_device *dev = pci_get_drvdata(pdev);

    if (dev && dev->priv) {
    + struct vortex_private *vp = dev->priv;
    + if (vp->in_suspend)
    + return 0;
    + vp->in_suspend = 1;
    if (netif_running(dev)) {
    netif_device_detach(dev);
    vortex_down(dev);
    @@ -906,6 +913,10 @@
    struct net_device *dev = pci_get_drvdata(pdev);

    if (dev && dev->priv) {
    + struct vortex_private *vp = dev->priv;
    + if (!vp->in_suspend)
    + return 0;
    + vp->in_suspend = 1;
    if (netif_running(dev)) {
    vortex_up(dev);
    netif_device_attach(dev);

    --
    - Hu Gang


    Hello Pavel Machek:

    With this patch, My machine has work very fine. Without it my machine will hangup/Oops in suspend/resume.
    By the way, If i'm right , I can change other driver in kernel to this model.

    --- linux-2.5.42/sound/pci/intel8x0.c Sat Oct 12 21:24:58 2002
    +++ linux-2.5.42-suspend/sound/pci/intel8x0.c Sat Oct 12 21:21:12 2002
    @@ -1891,6 +1891,8 @@
    {
    snd_card_t *card = chip->card;

    + if (chip->in_suspend)
    + return;
    chip->in_suspend = 1;
    snd_power_lock(card);
    if (card->power_state == SNDRV_CTL_POWER_D3hot)
    @@ -1909,7 +1911,10 @@
    snd_card_t *card = chip->card;
    int i;

    + if (!chip->in_suspend)
    + return;
    snd_power_lock(card);
    + chip->in_suspend = 0;
    if (card->power_state == SNDRV_CTL_POWER_D0)
    goto __skip;

    @@ -1919,7 +1924,6 @@
    if (chip->ac97[i])
    snd_ac97_resume(chip->ac97[i]);

    - chip->in_suspend = 0;
    snd_power_change_state(card, SNDRV_CTL_POWER_D0);
    __skip:
    snd_power_unlock(card);
    --- linux-2.5.42/drivers/net/3c59x.c Sat Oct 12 21:25:00 2002
    +++ linux-2.5.42-suspend/drivers/net/3c59x.c Sat Oct 12 21:20:48 2002
    @@ -809,6 +809,9 @@
    spinlock_t lock; /* Serialise access to device & its vortex_private */
    spinlock_t mdio_lock; /* Serialise access to mdio hardware */
    u32 power_state[16];
    +#ifdef CONFIG_PM
    + int in_suspend;
    +#endif
    };

    /* The action to take with a media selection timer tick.
    @@ -893,6 +896,10 @@
    struct net_device *dev = pci_get_drvdata(pdev);

    if (dev && dev->priv) {
    + struct vortex_private *vp = dev->priv;
    + if (vp->in_suspend)
    + return 0;
    + vp->in_suspend = 1;
    if (netif_running(dev)) {
    netif_device_detach(dev);
    vortex_down(dev);
    @@ -906,6 +913,10 @@
    struct net_device *dev = pci_get_drvdata(pdev);

    if (dev && dev->priv) {
    + struct vortex_private *vp = dev->priv;
    + if (!vp->in_suspend)
    + return 0;
    + vp->in_suspend = 1;
    if (netif_running(dev)) {
    vortex_up(dev);
    netif_device_attach(dev);

    --
    - Hu Gang


    [unhandled content-type:application/pgp-signature][unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2005-03-22 13:30    [W:0.038 / U:88.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site