From: Giridhar Pemmasani It seems that pci config space is messed up after resume for Intel ICH4 audio controller (on Dell Latitude D600, but I notice that others also complain about this problem). Consequently resume from S3 causes oops with snd_intel8x0 module. If the module is removed before suspend and loaded afterwards, I still get oops. The following simple patch fixes the problem. With this, I can leave alsa untouched during suspend/resume. --- 25-akpm/sound/pci/intel8x0.c | 3 +++ 1 files changed, 3 insertions(+) diff -puN sound/pci/intel8x0.c~intel8x0-resume-fix sound/pci/intel8x0.c --- 25/sound/pci/intel8x0.c~intel8x0-resume-fix 2004-04-17 23:14:12.980616680 -0700 +++ 25-akpm/sound/pci/intel8x0.c 2004-04-17 23:14:12.990615160 -0700 @@ -445,6 +445,7 @@ struct _snd_intel8x0 { #ifdef CONFIG_PM int in_suspend; + u32 pci_state[64 / sizeof(u32)]; #endif }; @@ -2223,11 +2224,13 @@ static int snd_intel8x0_suspend(struct p { intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO); intel8x0_suspend(chip); + pci_save_state(dev, chip->pci_state); return 0; } static int snd_intel8x0_resume(struct pci_dev *dev) { intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO); + pci_restore_state(dev, chip->pci_state); intel8x0_resume(chip); return 0; } _