>>If I don't eject the pcmcia card (usually a prism54 wireless card), >>swsusp begins the process of hibernation, but never gets to the >>writing pages part.
> Well, it really may be the firmware loading. Add some printks to > confirm it, then fix it. I did more tests, this time with 2.6.13-rc3-mm2 (machine is a TP 600X), and I don't think the problem is related to firmware loading. If I first physically eject the card (an Intersil wireless card), swsusp prints PM: Writing image PCI: Found IRQ 11 for device ..... PCI: Sharing IRQ 11 with ... PCI: Sharing IRQ 11 with ... PCI: Found IRQ 11 for device ..... then it writes pages to swap and all is well. Well, almost 100%; the one glitch is that sometimes X comes back blank and I have to ctrl-alt-F7 to bring back the display; or X comes back with the keyboard acting strange (<ENTER> shifts the display left by a few hundred pixels), and again ctrl-alt-F7 fixes it. This is with XFree86 4.3.0.dfsg.1-14, and maybe after I upgrade (?) to the xorg server, that glitch will go away. Anyway, it's easy to work around. But, if I leave the card in and prepare the hibernation with ifdown eth0 cardctl eject modprobe -r prism54 (so eject the module for and stop all uses of the card), then swsusp prints the PCI messages above, but hangs before writing the pages to swap. I'm using a hibernate.sh script (included below) for those steps. It does a few others like stopping the hotplug system. After 'cardctl eject' and removing the module, there's no evidence of the hardware available to the kernel, as far as I can tell. lspci doesn't show it, for example. So the system is not loading firmware during the hibernate attempt, and I'm not sure what step is hanging. [Should this report go to acpi-devel and/or the ACPI or kernel bugzilla, or is that more for S1/S3 rather than for hibernation?] Here is lspci with the card inserted: 0000:00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03) 0000:00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03) 0000:00:02.0 CardBus bridge: Texas Instruments PCI1450 (rev 03) 0000:00:02.1 CardBus bridge: Texas Instruments PCI1450 (rev 03) 0000:00:03.0 Communication controller: Agere Systems (former Lucent Microelectronics) WinModem 56k (rev 01) 0000:00:06.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 01) 0000:00:07.0 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02) 0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01) 0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) 0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 03) 0000:01:00.0 VGA compatible controller: Neomagic Corporation NM2360 [MagicMedia 256ZX] 0000:06:00.0 Network controller: Intersil Corporation Intersil ISL3890 [Prism GT/Prism Duette] (rev 01) Here's the lspci -v for just the card: 0000:06:00.0 Network controller: Intersil Corporation Intersil ISL3890 [Prism GT/Prism Duette] (rev 01) Subsystem: Intersil Corporation: Unknown device 0000 Flags: bus master, medium devsel, latency 80, IRQ 11 Memory at 24800000 (32-bit, non-prefetchable) [size=8K] Capabilities: [dc] Power Management version 1 And lspci -vv for just the card: 0000:06:00.0 Network controller: Intersil Corporation Intersil ISL3890 [Prism GT/Prism Duette] (rev 01) Subsystem: Intersil Corporation: Unknown device 0000 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 80 (2500ns min, 7000ns max), Cache Line Size: 0x08 (32 bytes) Interrupt: pin A routed to IRQ 11 Region 0: Memory at 24800000 (32-bit, non-prefetchable) [size=8K] Capabilities: [dc] Power Management version 1 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Here is the list of modules present just before the (working and non-working) hibernation (for debugging, the hibernate.sh script does 'lsmod |logger' before hibernating): ip_conntrack_ftp snd_mixer_oss ipv6 pcmcia crc32 parport_pc lp parport thermal fan button processor ac battery ipt_state ipt_LOG iptable_filter iptable_nat ip_conntrack ip_tables 8250 serial_core intel_agp firmware_class snd_cs46xx snd_rawmidi snd_seq_device snd_ac97_codec snd_pcm snd_timer snd soundcore snd_page_alloc yenta_socket rsrc_nonstatic pcmcia_core agpgart speedstep_lib I don't think any of those modules intrinsically are a problem, since swsusp works with all of them (as long as the Intersil card is not inserted). And here is the hibernate.sh script: #!/bin/bash # suspend to disk (hibernate), stopping drivers that might break the # hibernation setup to_stop='chrony pdnsd mysql hotplug' to_start='hotplug pdnsd chrony' unload='prism54' ifdown eth0 cardctl eject for s in $to_stop ; do /etc/init.d/$s stop ; done for m in $unload ; do modprobe -r $m ; done hwclock --systohc logger -t hibernate.sh About to hibernate ps axwww | logger -t "hibernate.sh ps" lsmod | logger -t "hibernate.sh lsmod" sync sleep 2 echo -n disk > /sys/power/state hwclock --hctosys logger -t hibernate.sh Returning from hibernation for s in $to_start ; do /etc/init.d/$s start done -Sanjoy `A society of sheep must in time beget a government of wolves.' - Bertrand de Jouvenal - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/