On 10/16/08 21:13, Li, Aubrey wrote: > Bill Holler wrote: > > >> Hi tesla-dev, >> >> We need to disable deep C-States when cpu_deep_idle is set >> to disable in /etc/power.conf. This happens at run time when >> pmconf runs. We also need to be able to re-enable deep C-States >> at run time when cpu_deep_idle is set to enable or default >> and pmconfig is run. >> >> cpudrv sets the per-cpu idle function pointer and global "wakeup" >> pointer to functions that manage different C-States. Setting all >> cpu's idle_cpu function pointer and disp_enq_thread back to their >> non-deep c-state function will allow full performance by >> bypassing all of the deep C-State code. At first it seems like >> a simple matter of just doing idle_cpu = shadow_idle_cpu for >> all cpus from the cpu_deep_idle callback function. >> >> However this does not work with _CST change notifications. >> Does anyone have thoughts on this? >> >> Regards, >> Bill >> >> > > We can simply ignore _CST change notification when cpu_deep_idle > is set(deep cstate is disabled)? and re-evaluate _CST in the callback > function when deep cstate is enabled again. > > What do you think? > > Thanks, > -Aubrey
Here is a follow up on this issue. The _CST callback continues to run even when the deep-idle feature (Deep C-States on x86) has been disabled with cpu_deep_idle power.conf tunable. The ACPI callbacks will continue to keep C-State information up to date. The _CST callback will continue to set the per-cpu idle function pointer when the number of C-States changes between 1 and more-than-one. However the global idle function pointer does not change, so C-States remain disabled when disabled by cpu_deep_idle. Regards, Bill
