View Single Post
Old April 30th, 2008   #143
pavel_987
5 Cups of Ubuntu
 
Join Date: Nov 2007
Beans: 22
Ubuntu 7.10 Gutsy Gibbon
Re: Power Management Problem

Suspend is a different problem. It does not work with or without the fix on hardy. My educated guess is that suspend not working was a kernel regression starting from 2.6.23. 2.6.22 works, 2.6.23, 2.6.24, 2.6.25 don't. Yes I've tested all of them. But not quite done yet, maybe I'll find the culprit.

What I did for power management was directly edited the kernel source and fixed the issue. You just need to make sure that EC starts in poll mode instead of interrupt mode. I'm working with 2.6.25. So I went into [kernel source]/drivers/acpi/ec.c and commented out lines 542-545 that read
Code:
		if (printk_ratelimit())
			pr_info(PREFIX "non-query interrupt received,"
				" switching to interrupt mode\n");
		set_bit(EC_FLAGS_GPE_MODE, &ec->flags);
in function acpi_ec_gpe_handler
and added
Code:
test_bit(EC_FLAGS_GPE_MODE, &ec->flags);
on line 804 between
Code:
pr_info(PREFIX "GPE = 0x%lx, I/O: command/status = 0x%lx, data = 0x%lx\n",
			  ec->gpe, ec->command_addr, ec->data_addr);
	pr_info(PREFIX "driver started in %s mode\n",
		(test_bit(EC_FLAGS_GPE_MODE, &ec->flags))?"interrupt":"poll");
in function acpi_ec_add

Then you can just recompile and run the new kernel. To verify that it works
Code:
 dmesg | grep EC
will tell you that the EC has started in Poll mode.

In fear of people messing up their computer, I do NOT recommend doing this. Do it at your own discretion.
__________________
Daru2
pavel_987 is offline   Reply With Quote