Skip to contentSkip to conversation

Status with pmdisk/swsusp merge ?

DISCUSSION Benjamin Herrenschmidt 7 participants 8 messages Aug 5, 2004 – Aug 12, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi !

What is the status with those patches ?

I have some additional stuff to drop on top of it, including the basic PPC support, some renumbering of the states as discussed earlier, some driver fixes etc.... but at this point, I feel it would be more handy to get those in only after Patrick core changes have been merged with Linus. Do we wait for 2.6.9 to open ?

Ben.

#1 lore raw

Hi.

Quoted 9 lines · Benjamin Herrenschmidt

Hi !

What is the status with those patches ?

I have some additional stuff to drop on top of it, including the basic PPC support, some renumbering of the states as discussed earlier, some driver fixes etc.... but at this point, I feel it would be more handy to get those in only after Patrick core changes have been merged with Linus. Do we wait for 2.6.9 to open ?

FWIW, I'm waiting for the dust to settle too.

Nigel

#2 lore raw
In reply to Benjamin Herrenschmidt
Quoted 7 lines · Benjamin Herrenschmidt

What is the status with those patches ?

I have some additional stuff to drop on top of it, including the basic PPC support, some renumbering of the states as discussed earlier, some driver fixes etc.... but at this point, I feel it would be more handy to get those in only after Patrick core changes have been merged with Linus. Do we wait for 2.6.9 to open ?

I intend to try and merge my tree with Linus once he releases 2.6.8, modulo any bugs that crop up between now and then. Feel free to send me the patches to fix up ppc before then, and I will merge them as well.

As far as the device power management stuff goes, I'm wading through the discussion right now..

Pat

#3 lore raw

Hi!

Quoted 11 lines
Quoted 7 lines

What is the status with those patches ?

I have some additional stuff to drop on top of it, including the basic PPC support, some renumbering of the states as discussed earlier, some driver fixes etc.... but at this point, I feel it would be more handy to get those in only after Patrick core changes have been merged with Linus. Do we wait for 2.6.9 to open ?

I intend to try and merge my tree with Linus once he releases 2.6.8, modulo any bugs that crop up between now and then. Feel free to send me the patches to fix up ppc before then, and I will merge them as well.

Sounds good.

Quoted 2 lines

As far as the device power management stuff goes, I'm wading through the discussion right now..

Hopefully we can at least switch to enums so that we clear any confusion....
Pavel

Signature · 2 lines
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
#4 lore raw
Quoted 4 lines · Pavel Machek
Quoted 3 lines

I intend to try and merge my tree with Linus once he releases 2.6.8, modulo any bugs that crop up between now and then. Feel free to send me the patches to fix up ppc before then, and I will merge them as well.

Quoted 8 lines

Sounds good.

Quoted 2 lines

As far as the device power management stuff goes, I'm wading through the discussion right now..

Hopefully we can at least switch to enums so that we clear any confusion....
Pavel

..And once thats done and the tree settles a bit I'll start working on the swsusp2 x86_64 port again. (Unless someone who understands that whole thing better wants to jump forward.)

FWIW I ported the 'old' pmdisk suspend code into swsusp2 and I can suspend, but I can't resume. I haven't got a serial port (its a "modern" laptop.. with parallel, etc but no serial..) so I'm also looking at netconsole, digging around for a line printer, etc..

Signature · 1 line
Disconnect <[email protected]>
#5 lore raw

Hi!

Quoted 12 lines
Quoted 11 lines
Quoted 3 lines

I intend to try and merge my tree with Linus once he releases 2.6.8, modulo any bugs that crop up between now and then. Feel free to send me the patches to fix up ppc before then, and I will merge them as well.

Sounds good.

Quoted 2 lines

As far as the device power management stuff goes, I'm wading through the discussion right now..

Hopefully we can at least switch to enums so that we clear any confusion....

Quoted 8 lines

..And once thats done and the tree settles a bit I'll start working on the swsusp2 x86_64 port again. (Unless someone who understands that whole thing better wants to jump forward.)

FWIW I ported the 'old' pmdisk suspend code into swsusp2 and I can suspend, but I can't resume. I haven't got a serial port (its a "modern" laptop.. with parallel, etc but no serial..) so I'm also looking at netconsole, digging around for a line printer, etc..

Well, suspend is always easy :-)))))))))))))))))))).

You may want to use 8 leds on paralel port.
Pavel

Signature · 2 lines
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
#6 lore raw
Quoted 1 line · Pavel Machek

You may want to use 8 leds on paralel port.

With resistors or you may find you own a nasty smell rather than a motherboard.

#7 lore raw
In reply to Pavel Machek
Quoted 4 lines · Pavel Machek
Quoted 4 lines

FWIW I ported the 'old' pmdisk suspend code into swsusp2 and I can suspend, but I can't resume. I haven't got a serial port (its a "modern" laptop.. with parallel, etc but no serial..) so I'm also looking at netconsole, digging around for a line printer, etc..

Can be a problem with a lack of wakeup devices. You could try this patch (not by me, and considered ugly by its own author iirc) and fiddle with echo "PWRB" >/proc/acpi/wakeup_devices and friends. It was necessary (with some additional brutality) for the dell latitude x300.

OG.

drivers/acpi/power.c +3 -3
diff -Nur linux-2.6.0-test7/drivers/acpi/power.c linux-2.6.0-test7.new/drivers/acpi/power.c
@@ -176,7 +176,7 @@
 }
 
 
-static int
+int
 acpi_power_on (
 	acpi_handle		handle)
 {
@@ -193,7 +193,7 @@
 
 	resource->references++;
 
-	if ((resource->references > 1) 
+	if ((resource->references > 1)
 		|| (resource->state == ACPI_POWER_RESOURCE_STATE_ON)) {
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] already on\n",
 			resource->name));
@@ -223,7 +223,7 @@
 }
 
 
-static int
+int
 acpi_power_off_device (
 	acpi_handle		handle)
 {
drivers/acpi/scan.c +92 -4

133 lines not on this page · raw message

drivers/acpi/sleep/main.c +10 -1
diff -Nur linux-2.6.0-test7/drivers/acpi/sleep/main.c linux-2.6.0-test7.new/drivers/acpi/sleep/main.c
@@ -56,6 +56,9 @@
 			(acpi_physical_address) acpi_wakeup_address);
 	}
 	ACPI_FLUSH_CPU_CACHE();
+	
+	/* change a position for the function? */
+	acpi_enable_wakeup_device_prep(acpi_state);
 	acpi_enter_sleep_state_prep(acpi_state);
 	return 0;
 }
@@ -87,6 +90,9 @@
 
 
 	local_irq_save(flags);
+	/* change a position for the function? */
+	acpi_enable_wakeup_device(acpi_state);
+
 	switch (state)
 	{
 	case PM_SUSPEND_STANDBY:
@@ -133,7 +139,10 @@
 
 static int acpi_pm_finish(u32 state)
 {
-	acpi_leave_sleep_state(state);
+	u32 acpi_state = acpi_suspend_states[state];
+
+	acpi_leave_sleep_state(acpi_state);
+	acpi_disable_wakeup_device_power(acpi_state);
 
 	/* reset firmware waking vector */
 	acpi_set_firmware_waking_vector((acpi_physical_address) 0);
drivers/acpi/sleep/Makefile +1 -1
diff -Nur linux-2.6.0-test7/drivers/acpi/sleep/Makefile linux-2.6.0-test7.new/drivers/acpi/sleep/Makefile
@@ -1,5 +1,5 @@
 obj-y					:= poweroff.o
-obj-$(CONFIG_ACPI_SLEEP)		+= main.o
+obj-$(CONFIG_ACPI_SLEEP)		+= main.o wakeup.o
 obj-$(CONFIG_ACPI_SLEEP_PROC_FS)	+= proc.o
 
 EXTRA_CFLAGS += $(ACPI_CFLAGS)
drivers/acpi/sleep/proc.c +67 -0

85 lines not on this page · raw message

drivers/acpi/sleep/sleep.h +3 -0
diff -Nur linux-2.6.0-test7/drivers/acpi/sleep/sleep.h linux-2.6.0-test7.new/drivers/acpi/sleep/sleep.h
@@ -1,4 +1,7 @@
 
 extern u8 sleep_states[];
 extern int acpi_suspend (u32 state);
+void acpi_enable_wakeup_device_prep(u8 sleep_state);
+void acpi_enable_wakeup_device(u8 sleep_state);
+void acpi_disable_wakeup_device_power (u8 sleep_state);
 
drivers/acpi/sleep/wakeup.c +157 -0

157 lines not on this page · raw message

+late_initcall(acpi_wakeup_device_init);

include/acpi/acpi_bus.h +13 -4
diff -Nur linux-2.6.0-test7/include/acpi/acpi_bus.h linux-2.6.0-test7.new/include/acpi/acpi_bus.h
@@ -159,7 +159,8 @@
 	u32			suprise_removal_ok:1;
 	u32			power_manageable:1;
 	u32			performance_manageable:1;
-	u32			reserved:21;
+	u32			wake_capable:1;	
+	u32			reserved:20;
 };
 
 
@@ -205,10 +206,8 @@
 	u32			explicit_get:1;		     /* _PSC present? */
 	u32			power_resources:1;	   /* Power resources */
 	u32			inrush_current:1;	  /* Serialize Dx->D0 */
-	u32			wake_capable:1;		 /* Wakeup supported? */
-	u32			wake_enabled:1;		/* Enabled for wakeup */
 	u32			power_removed:1;	   /* Optimize Dx->D0 */
-	u32			reserved:26;
+	u32			reserved:28;
 };
 
 struct acpi_device_power_state {
@@ -228,6 +227,14 @@
 	struct acpi_device_power_state states[4];     /* Power states (D0-D3) */
 };
 
+/* Wakeup Management */
+
+struct acpi_wakeup_power {
+	acpi_integer		gpe;
+	int			state;
+	acpi_integer		sleep_state;
+	struct acpi_handle_list	resources;
+};
 
 /* Performance Management */
 
@@ -261,10 +268,12 @@
 	struct list_head	children;
 	struct list_head	node;
 	struct list_head	g_list;
+	struct list_head	wakeup_list;
 	struct acpi_device_status status;
 	struct acpi_device_flags flags;
 	struct acpi_device_pnp	pnp;
 	struct acpi_device_power power;
+	struct acpi_wakeup_power wakeup_power;
 	struct acpi_device_perf	performance;
 	struct acpi_device_dir	dir;
 	struct acpi_device_ops	ops;