Bill.Holler wrote:

> A callback will work great.  The callback interface is in
> uts/common/sys/callb.h.  We can add a callback class such as
> #define    CB_CL_CPU_DEEP_IDLE      16
>
> cpudrv can register a CB_CL_CPU_DEEP_IDLE callback
> in its init function.
> /dev/pm can invoke callb_execute_class() CB_CL_CPU_DEEP_IDLE from its
> ioctl case.
>
> The cpudrv callback can do whatever it needs to do to enable/
> disable C-States.  The cpudrv callback can call the hpet
> interface to enable/disable the cstate_timer.
>
>
>                  power.conf
>                     |
>                     v
>                  pmconfig
>                     |
>                     v
>           pm driver's pm_ioctl
> callb_execute_class(CB_CL_CPU_DEEP_IDLE)
>                     |
>                     v
>           cpudrv callback function
>                   |   ^
>                   v   |
>      hpet.cstate_timer_[enable|disable]
>
>
>
> I believe there will be only 1 callback into cpudrv, not
> 1 callback per driver instance?
>

I think so for hpet timer enable/disable. But since idle function is
per-cpu now, I think we still need idle_cpu_no_deep_c to check
if we need to enter deep cstate on-the-fly.

Thanks,
-Aubrey

Reply via email to