cpuidle: final report

Blog post by yongcong on Mon, 2012-08-27 12:18

the last quarter term is mostly spent on acpi cpuidle driver implementation. I also spent about 2 days to adjust the cpuidle framework so that the cpuidle generic module is loaded by lowlevel cpuidle driver, while the later will be loaded during boot up either by bus enumeration or calling get_module() manually. I also tested the power after acpi cpuidle driver is finished. The result is as good as intel native one. Since all the goals defined in my proposal are achieved, so the project is successfully finished.

Here I want to summarize the status:
generic cpuidle
generic cpuidle module is implemented which can be used on all cpu architectures;
x86 cpuidle driver
On x86 platform, we support intel native cpuidle driver and acpi cpuidle driver. The previous one make fully use of intel mwait extension support on intel newer cpus such snb, ivb or latter, since it won't touch the complex acpi part, it's preferred if the HW supports. The acpi driver is our last choice.
power saving number
On my T420 laptop, it saves about ~2.5watt
main limitation
we don't support old platform which doesn't have ARAT(always running apic timer). To support such platform, we need to enhance haiku's timer subsystem

I'd like to continue all the related power saving work in haiku such as to find and remove all the unnecessary wakeup source, to enchance haiku's timer subsystem mentioned above. I may also work on some acpi related driver, the acpi is complex but I learned a lot about acpi during this summer ;)

Finally I'd like to thank tqh for his guidance, carefully code review and kind help about ACPI related topics, thank haiku for giving me the chance to code for such a clean and beautiful operating system. I also owe a great deal to many haiku experts for their immediate answers on IRC or great suggestions on mail-list. The last thank belong to Google :D

Comments

Re: cpuidle: final report

Thanks, it's been a pleasure working with you.
I've been a bit quiet in the last few days since I'm still reviewing the code. Mainly because I want to move github commits over to my ordinary git tree, so that I can review and commit things at the same time. I'll let you know when this is done, but congratulations on passing GSoC and for the good results.

(Also if you'd start working on a driver for ACPI brightness I think many people would thank you...)

Re: cpuidle: final report

tqh wrote:

(Also if you'd start working on a driver for ACPI brightness I think many people would thank you...)

"thank you" would be completely inadequate to describe the joy of having this feature work. :)

Re: cpuidle: final report

DFergATL wrote:
tqh wrote:

(Also if you'd start working on a driver for ACPI brightness I think many people would thank you...)

"thank you" would be completely inadequate to describe the joy of having this feature work. :)

+1

Re: cpuidle: final report

it's a joy too see your success.
i hope you code will be soon available in trunk.
Thank you and indeed thanks belong to google too.

Re: cpuidle: final report

Congratulations on agreat piece of work! Just wondering, have you got any idea when this will be merged into the main tree?

Re: cpuidle: final report

I'm currently preping to merge / reviewing the code. It takes a few days since my free time is somewhat limited atm.

Re: cpuidle: final report

Great work yongcong, hope you've found it a rewarding experience and also that you might find time and inspiration to play around with Haiku beyond the scope of this GSOC.

Re: cpuidle: final report

ཱAnother small win for Haiku! Keep going Haiku without hurry we Love you.