cpupm
"cpupm", cpupm, &pm_status, NULL, 2, 1, 1,
extern int cpupm(void);
CPUDRV_MONITOR_PM_BUSY_COMP(dip, cpupm);
CPUDRV_MONITOR_PM_BUSY_AND_RAISE(dip, cpudsp, cpupm,
CPUDRV_TOPSPEED(cpupm));
if (!cpupm->pm_started) {
cpupm->pm_started = B_TRUE;
if (cpupm->lastquan_ticks == 0) {
cpupm->lastquan_ticks = NSEC_TO_TICK(gethrtime());
tick_cnt = ticks - cpupm->lastquan_ticks;
cpupm->lastquan_ticks = ticks;
system_cnt, cur_spd->pm_level, cpupm->pm_busycnt));
CPUDRV_MONITOR_PM_BUSY_COMP(dip, cpupm);
CPUDRV_MONITOR_PM_BUSY_AND_RAISE(dip, cpudsp, cpupm,
CPUDRV_MONITOR_PM_IDLE_COMP(dip, cpupm);
CPUDRV_MONITOR_PM_BUSY_COMP(dip, cpupm);
mutex_enter(&cpupm->timeout_lock);
ASSERT(cpupm->timeout_count > 0);
cpupm->timeout_count--;
cv_signal(&cpupm->timeout_cv);
mutex_exit(&cpupm->timeout_lock);
cpudrv_pm_t *cpupm;
cpupm = &(cpudsp->cpudrv_pm);
cpupm->cur_spd->pm_level,
CPUDRV_TOPSPEED(cpupm)->pm_level));
if (!cpudrv_direct_pm && (cpupm->cur_spd !=
CPUDRV_TOPSPEED(cpupm))) {
if (cpupm->pm_busycnt < 1) {
cpupm->pm_busycnt++;
CPUDRV_TOPSPEED(cpupm)->pm_level) !=
CPUDRV_TOPSPEED(cpupm)->pm_level);
cpudrv_pm_t *cpupm = &(cpudsp->cpudrv_pm);
cpupm->num_spd = nspeeds;
cpupm->head_spd = cur_spd;
CPUDRV_TOPSPEED(cpupm) = cur_spd;
cur_spd->up_spd = cpupm->head_spd;
cpupm->head_spd->speed, cpupm->num_spd));
for (cur_spd = cpupm->head_spd; cur_spd; cur_spd = cur_spd->down_spd) {
cpudrv_pm_t *cpupm = &(cpudsp->cpudrv_pm);
cur_spd = cpupm->head_spd;
bzero(cpupm, sizeof (cpudrv_pm_t));
cpudrv_pm_t *cpupm = &(cpudsp->cpudrv_pm);
pmc = kmem_zalloc((cpupm->num_spd + 1) * sizeof (char *), KM_SLEEP);
if (cpupm->num_spd > CPUDRV_COMP_MAX_VAL) {
kmem_free(pmc, (cpupm->num_spd + 1) * sizeof (char *));
for (i = cpupm->num_spd, cur_spd = cpupm->head_spd; i > 0;
comp_spd = CPUDRV_COMP_SPEED(cpupm, cur_spd);
for (j = cpupm->num_spd; j >= i; j--) {
kmem_free(pmc, (cpupm->num_spd + 1) *
CPUDRV_COMP_SPRINT(pmc[i], cpupm, cur_spd, comp_spd)
"pm-components", pmc, cpupm->num_spd + 1) == DDI_PROP_SUCCESS) {
for (i = cpupm->num_spd; i > 0; i--) {
kmem_free(pmc, (cpupm->num_spd + 1) * sizeof (char *));
#define CPUDRV_MONITOR_PM_IDLE_COMP(dip, cpupm) { \
if ((cpupm)->pm_busycnt >= 1) { \
(cpupm)->pm_busycnt--; \
#define CPUDRV_MONITOR_PM_BUSY_COMP(dip, cpupm) { \
if ((cpupm)->pm_busycnt < 1) { \
(cpupm)->pm_busycnt++; \
#define CPUDRV_MONITOR_PM_BUSY_AND_RAISE(dip, cpudsp, cpupm, new_spd) { \
CPUDRV_MONITOR_PM_BUSY_COMP((dip), (cpupm)); \
cpudrv_pm_t *cpupm;
if (cpupm->lastquan_mstate[state] > msnsecs[state]) \
msnsecs[state] = cpupm->lastquan_mstate[state]; \
cnt = msnsecs[state] - cpupm->lastquan_mstate[state]; \
cpupm->lastquan_mstate[state] = msnsecs[state]
cpupm = &(cpudsp->cpudrv_pm);
if (cpupm->timeout_id == 0) {
cur_spd = cpupm->cur_spd;
old_mode = cpupm;
new_mode = cpupm = cpupm_default_mode;
old_mode = cpupm;
new_mode = cpupm = PM_CPUPM_EVENT;
old_mode = cpupm;
new_mode = cpupm = PM_CPUPM_POLLING;
new_mode = cpupm = PM_CPUPM_POLLING;
old_mode = cpupm;
cpupm = PM_CPUPM_DISABLE;
old_mode = cpupm;
cpupm = PM_CPUPM_NOTSET;
extern pm_cpupm_t cpupm;
cpupm, PM_KUC(dip),
pm_cpupm_t cpupm = PM_CPUPM_NOTSET;
cpupm_save = cpupm;
cpupm = PM_CPUPM_NOTSET;
ASSERT(cpupm == PM_CPUPM_NOTSET);
cpupm = cpupm_save;
#define PM_EVENT_CPUPM (cpupm == PM_CPUPM_EVENT)
#define PM_POLLING_CPUPM (cpupm == PM_CPUPM_POLLING)
#define PM_DEFAULT_CPUPM (cpupm == cpupm_default_mode)
#define PM_CPUPM_DISABLED (cpupm == PM_CPUPM_DISABLE)
cpudrv_is_governor_thread(cpudrv_pm_t *cpupm)
return (curthread == cpupm->pm_governor_thread);
cpudrv_pm_t *cpupm;
cpupm = &(cpudsp->cpudrv_pm);
pm_level = PLAT_2_PM_LEVEL(cpupm, plat_level);
for (i = 0, spd = cpupm->head_spd; spd; i++, spd = spd->down_spd) {
cpupm->top_spd = top_spd;
cpupm->pm_governor_thread = curthread;
extern pm_cpupm_t cpupm;
#define PM_2_PLAT_LEVEL(cpupm, pm_level) (cpupm->num_spd - pm_level)
#define PLAT_2_PM_LEVEL(cpupm, plat_level) (cpupm->num_spd - plat_level)
cpudrv_pm_t *cpupm;
cpupm = &(cpudsp->cpudrv_pm);
plat_level = PM_2_PLAT_LEVEL(cpupm, new_spd->pm_level);
#define CPUDRV_COMP_SPEED(cpupm, cur_spd) cur_spd->speed;
#define CPUDRV_COMP_SPRINT(pmc, cpupm, cur_spd, comp_spd) \
#define CPUDRV_RESET_GOVERNOR_THREAD(cpupm) { \
if (curthread == cpupm->pm_governor_thread) \
cpupm->pm_governor_thread = NULL; \
#define CPUDRV_TOPSPEED(cpupm) (cpupm)->top_spd
cpudrv_is_governor_thread(cpudrv_pm_t *cpupm)
#define CPUDRV_COMP_SPEED(cpupm, cur_spd) \
((cur_spd == cpupm->head_spd) ? cur_spd->pm_level : cur_spd->speed)
#define CPUDRV_COMP_SPRINT(pmc, cpupm, cur_spd, comp_spd) { \
if (cur_spd == cpupm->head_spd) \
#define CPUDRV_RESET_GOVERNOR_THREAD(cpupm)
#define CPUDRV_TOPSPEED(cpupm) (cpupm)->head_spd