[d-kernel] Re: I: new -wks26 kernel

Alex Yustasov snmon на server.by
Ср Янв 5 15:38:35 MSK 2005


On Tue, Jan 04, 2005 at 08:41:25PM +0300, Konstantin A. Lepikhov wrote:
> интересно, есть способ сделать это культурно (раньше можно было сказать
> service sound stop, как сейчас?)

Если звуковые модули не заняты, то работает (или service sound stop или
выгружаются все модули). Если что-то использует эти модули (xmms например),
тогда звук ломается.

Сейчас посмотрел на swsusp-2.4.28-2.1.5.7 трезвым взглядом - оказывается 
он не посылает PM_SUSPEND/PM_RESUME никому.

Вообщем
Для 2.4.28 на http://snmon.at.tut.by/swsusp-2.4.28-2.1.5.7.tar.bz2

5b3f0b0a1b15f8260ca73a8ea38fcd0c  swsusp-2.4.28-2.1.5.7.tar.bz2

плюс патч в аттаче. Исправляет только звук.

> 
> > Похоже alsa-1.0.7 не поможет.
> > 
> > Прошу прощения за вопрос, но как работать с cvs?
> это к rider@ наверное, он доступом туда рулит.

Помнится, доступ он обещал всем, кто для ядра что-то делает.
Вот как что-то положить, а то страшно что поломаю.
-------------- next part --------------
--- old/kernel/power/suspend.c	2004-11-25 13:51:15 +0200
+++ new/kernel/power/suspend.c	2004-11-25 13:51:45 +0200
@@ -53,6 +53,7 @@
 #include <linux/module.h>
 #include <linux/console.h>
 #include <linux/version.h>
+#include <linux/pm.h>
 #include <asm/uaccess.h>
 
 #include "suspend.h"
@@ -91,6 +91,8 @@
 	SUSPEND_DRIVERS_PRE_POWERDOWN,
 };
 
+static int pm_suspend_state = 0;
+
 void suspend_drivers_resume(int stage)
 {
 	switch (stage) {
@@ -100,6 +102,12 @@
 
 		case SUSPEND_DRIVERS_USED_DEVICES_IRQS_ENABLED:
 			BUG_ON(irqs_disabled());
+			if (pm_suspend_state) {
+				if (pm_send_all(PM_RESUME,(void *)0))
+					printk(name_suspend
+					  "Problem while sending resume event\n");
+				pm_suspend_state=0;
+			}
 			break;
 
 		case SUSPEND_DRIVERS_UNUSED_DEVICES_IRQS_DISABLED:
@@ -140,6 +148,14 @@
 
 		case SUSPEND_DRIVERS_USED_DEVICES_IRQS_ENABLED:
 			BUG_ON(irqs_disabled());
+			if (!pm_suspend_state) {
+				if (pm_send_all(PM_SUSPEND,(void *)3)) {
+					printk(name_suspend
+						"Problem while sending suspend event\n");
+					result=1;
+				}
+				pm_suspend_state=1;
+			}
 			break;
 
 		case SUSPEND_DRIVERS_PRE_POWERDOWN: /* Power down system */


Подробная информация о списке рассылки devel-kernel