patch for 2.5.42. 2/2

From: Hu Gang (hugang@soulinfo.com)
Date: Sat Oct 12 2002 - 22:20:19 EST


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




- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:45 EST