Am Donnerstag, 7. Juli 2005 12:41 schrieb Werner Franke:
Hallo Dieter,
Sorry fuer die spaete Reaktion, aber meine erste Antwort ging an die falsche Liste. Nachdem ich nichts mehr von Dir gehoert hatte, habe ich nun mal nachgesehen.
Bingo.
Am Dienstag, 28. Juni 2005 15:40 schrieb Hans-Dieter Schenk:
Am Dienstag, 21. Juni 2005 10:46 schrieb Werner Franke:
Hallo zusammen,
hat jemand einen Toshiba Tecra 8000 und darauf unter SUSE 9.3 das Suspend to Disk hinbekommen ?
[...]
Hallo Werner,
ich habe seit etwa 4 Jahren einen TECRA 8000 unter SUSE im Einsatz. Seit 9.2 ging suspend to disk und suspend to ram fast makellos. Mit SuSE 9.3 habe ich auch Probleme, wobei bei mir der shutdown Befehl, sowie
3 x Ja. Interresanterweise sind alle meine Versuche das Soundmodul zu entfernen gescheitert. rcalsasound stop und anschliessendes modprobe -r snd_opl3... brachten zwar keine Fehlermeldung, aber beim anschliesenden 'runterfahren, kam die Fehlermeldung, dass alle snd* Module busy sind und ausschalten ging immer noch nicht.
Hallo Werner, es scheint, dass Deine Installation die gleichen Fehler aufweist. Allerdings habe ich einige unterschiedliche Fehlermeldungen im File /var/log/messages beim Entladen der Soundtreiber durch "rcalsasound stop": Jul 4 23:22:25 bflsk1 kernel: ALSA sound/core/memory.c:71: Not freed snd_alloc_ Jul 4 23:22:25 bflsk1 kernel: ALSA sound/core/memory.c:80: kmalloc(204) from d0 Jul 4 23:23:03 bflsk1 kernel: Unable to handle kernel paging request at virtual Jul 4 23:23:03 bflsk1 kernel: printing eip: oder auch Jul 5 20:27:48 bflsk1 kernel: Device 'snd_generic_pm.0' does not have a release Jul 5 20:27:48 bflsk1 kernel: Badness in device_release at drivers/base/core.c: Jul 5 20:27:48 bflsk1 kernel: [<c01d07e9>] kobject_cleanup+0x69/0x70 Jul 5 20:27:48 bflsk1 kernel: [<c01d07f0>] kobject_release+0x0/0x10 Bitte ueberpruefe dies doch einmal in Deinem System. Um wirklich sicher zu sein, dass mein Vorschlag zum Erfolg fuehrt (damit verbunden ist ein Kernel Neubau, bzw. Neuuebersetzung des Soundmodules snd.ko) boote Dein System, ohne dass das Alsasound System geladen wird. Das heisst Du musst vorher den Link auf das Startscript in /etc/init.d/rc3.d S12alsasound loeschen, entweder direkt oder durch den Runleveleditor von YAST2. Auch musst Du dafuer sorgen, dass der Suund nicht ueber das Hotplug System geladen wird (Backup und Loeschen des Files /etc/sysconfig/hardware/hwcfd-static-1, es enthaelt die Anweisung snd-opl3sa2 zu laden, eventuell auch anderer Name). Da der Start einer Soundapplikation ebenfalls das Soundsystem nachlaedt (was fuer den Test vermieden werden soll) solltest Du nicht KDE laden, sondern im Runlevel 3 booten, durch Angabe einer 3 im Bootmenu (oder Editieren des Files inittab in /etc). Nach dem Boot, Einloggen und pruefen mit "lsmod | grep snd", dass wirklich kein Soundmodul geladen ist. Wenn das alles OK ist, fahre den Rechner mit "powersave -U" in den Suspend to Disk. Dies sollte funktionieren und den Rechner ausschalten. Nach dem Wiedereinschalten und Boot des vorigen Kernels sollte alles richtig funktionieren (natuerlich ohne Sound). Wenn das so ist, sollte das folgenden Vorgehen zum Erfolg fuehren. Dazu muss das Modul init.c in /usr/src/linux/sound/core modifiziert werden. Ab etwa Zeile 844 findest Du den Kode --------------- * Registers the power-management and sets the lowlevel callbacks for * the given card. These callbacks are called from the ALSA's common * PM handler and from the control API. */ int snd_card_set_generic_pm_callback(snd_card_t *card, int (*suspend)(snd_card_t *, pm_message_t), int (*resume)(snd_card_t *), void *private_data) { card->pm_dev = snd_generic_device_register(card); if (! card->pm_dev) return -ENOMEM; snd_card_set_pm_callback(card, suspend, resume, private_data); return 0; } --------------- Diesen aenderst Du durch Einfuegen der #if 0 / #endif Konstruktion in --------------- * Registers the power-management and sets the lowlevel callbacks for * the given card. These callbacks are called from the ALSA's common * PM handler and from the control API. */ int snd_card_set_generic_pm_callback(snd_card_t *card, int (*suspend)(snd_card_t *, pm_message_t), int (*resume)(snd_card_t *), void *private_data) { #if 0 card->pm_dev = snd_generic_device_register(card); if (! card->pm_dev) return -ENOMEM; snd_card_set_pm_callback(card, suspend, resume, private_data); #endif return 0; } --------------- d.h. die Routine snd_card_set_generic_pm_callback kehrt sofort zurueck. Damit wird der neue verdaechtige Kode, der ueber die Konfig Variable CONFIG_SND_GENERIC_PM eingebunden wird, unwirksam gemacht. Es erfolgt eine Neuuebersetzung des Soundmoduls mit make modules und eine Installation mit make modules_install (Oder einem manuellen cp des Modules snd.ko nach /lib/modules/2.6.11.4-27-default/kernel/sound/core). Mit dem neuen Modul snd.ko sollte alles OK sein. Nach einem Powersave sollte allerdings mit "rcalsasound restart" das Soundsystem neu initialisiert werden. Natuerlich geht dann nicht nur Suspend to Disk (powersave -U) sondern auch Suspend to Memory (powersave -u) bzw. Schliessen des Laptop Deckels. Letzteres allerdings nur im X-Window Betrieb und nicht im Runlevel 3 (Schirm wird mit Framebuffer Device nicht richtig zurueckgesetzt). Zu beachten ist, dass nach Resume der Screensaver eingeschaltet und der Schirm gelockt ist. Dies ist ein Workaround. Eine bessere Loesung waere natuerlich den Kode zu korrigieren (??) oder aber als Zwischenschritt die Variable CONFIG_SND_GENERIC_PM auf false zu setzen, was aber aus verschiedenen weiteren bereits erkannten Fehlergruenden nicht funktioniert. Hoffe, dass dies Dir weiterhilft und nicht zu starker Tobak ist. Bin aber weiter gern behilflich und zur Klaerung weiterer Merkwuerdigkeiten beim Powersave Vorgang bereit. Bin gespannt auf Deine Resultate. Gruss Dieter