summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/cpudrv.c
diff options
context:
space:
mode:
authormh27603 <none@none>2007-08-16 16:52:20 -0700
committermh27603 <none@none>2007-08-16 16:52:20 -0700
commit68afbec1fabe0d352bb5ab4ed82c44b58ec651fb (patch)
tree32317f52d74b2c7615c7cb023fc46bc7c5d40998 /usr/src/uts/common/io/cpudrv.c
parent8d483882aa3390058094b043f3d62187b5d1de03 (diff)
downloadillumos-joyent-68afbec1fabe0d352bb5ab4ed82c44b58ec651fb.tar.gz
6587576 cpu_info kstat is returning garbage in supported_frequencies_Hz
Diffstat (limited to 'usr/src/uts/common/io/cpudrv.c')
-rw-r--r--usr/src/uts/common/io/cpudrv.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/cpudrv.c b/usr/src/uts/common/io/cpudrv.c
index 31a522e93b..0fa758e282 100644
--- a/usr/src/uts/common/io/cpudrv.c
+++ b/usr/src/uts/common/io/cpudrv.c
@@ -311,6 +311,7 @@ cpudrv_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
mutex_enter(&cpudsp->lock);
cpudsp->cpudrv_pm.cur_spd = NULL;
cpudsp->cpudrv_pm.targ_spd = cpudsp->cpudrv_pm.head_spd;
+ cpudsp->cpudrv_pm.pm_started = B_FALSE;
/*
* We don't call pm_raise_power() directly from attach because
* driver attach for a slave CPU node can happen before the
@@ -590,7 +591,8 @@ set_supp_freqs(cpu_t *cp, cpudrv_pm_t *cpupm)
sfptr = supp_freqs + strlen(supp_freqs);
}
}
- cp->cpu_supp_freqs = supp_freqs;
+ cpu_set_supp_freqs(cp, supp_freqs);
+ kmem_free(supp_freqs, (UINT64_MAX_STRING * cpupm->num_spd));
kmem_free(speeds, cpupm->num_spd * sizeof (uint64_t));
}
@@ -1012,8 +1014,11 @@ cpudrv_pm_monitor(void *arg)
"cpu_t", ddi_get_instance(dip));
goto do_return;
}
- if (cp->cpu_supp_freqs == NULL)
+
+ if (!cpupm->pm_started) {
+ cpupm->pm_started = B_TRUE;
set_supp_freqs(cp, cpupm);
+ }
cpudrv_get_cpu_mstate(cp, msnsecs);
GET_CPU_MSTATE_CNT(CMS_IDLE, idle_cnt);