Hi all, Sorry for being silent for about two weeks, but I watched maillist and was still busy with coding and debugging. The reason I'm seen on irc is that the acpi is so complex that I must read ACPI spec and NetBSD, FreeBSD and Linux source code to verify. Since I can't test acpi cstate related function with qemu or something else, I must modify code then rebuild and reboot every time. It's too frustrating.. Fortunately, the acpi cpuidle driver began to work yesterday! Currently, the following features are missing: 1. cstate changing notification. As we know, the underlying acpi will change the cstates when AC is connected/disconnected. For example, add one deeper C-State. So we should update the cstate status and call the generic cpuidle module to update. 2. we don't support the legacy platform which doesn't support bus master control. we assume cache is shared by all CPUs so bus master control is a must to keep cache coherent. It's true on almost all x86 platforms. But some rare platforms the cache is not shared and require flush cache before entering ACPI C3 state 3. we don't support the legacy platform which doesn't support ARAT(always running APIC timer) On legacy platforms, APIC timer is also stopped in C3, so we have no choice. To support C3 on these platforms, we need to change the timer interrupt source(and make the interrupt broadcasted to all cpus if necessary) on the fly before entering C3, and restore back to lapic after exiting C3. We need something like FreeBSD's timer event infrastructure. I want to continue the following work after gsoc: a. the acpi lcd brightness driver( it doesn't work on my laptop) b. implement the above missing features 1 and 2 c. try to find and remove non-necessary wakeups d. implement so called timer event PS: I'll clean up and push all the code to my github repo tomorrow. I just want to keep all the kitchen bits locally so that my commit looks clean. Thanks, Yongcong