http://defect.opensolaris.org/bz/show_bug.cgi?id=6264
Mark Haywood <mark.haywood at sun.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|CAUSEKNOWN |FIXINPROGRESS
--- Comment #2 from Mark Haywood <mark.haywood at sun.com> 2009-01-29 11:20:11
---
The fix has been tested on AMD based Celestica system and an Intel Pentium
system. The former not supporting CPUPM and the latter does. The diffs look
like:
--- old/usr/src/uts/common/io/cpudrv.c Thu Jan 29 14:17:06 2009
+++ new/usr/src/uts/common/io/cpudrv.c Thu Jan 29 14:17:05 2009
@@ -244,7 +244,7 @@
case DDI_ATTACH:
DPRINTF(D_ATTACH, ("cpudrv_attach: instance %d: "
"DDI_ATTACH called\n", instance));
- if (!cpudrv_enabled)
+ if (!cpudrv_is_enabled(NULL))
return (DDI_FAILURE);
if (ddi_soft_state_zalloc(cpudrv_state, instance) !=
DDI_SUCCESS) {
--- old/usr/src/uts/i86pc/io/cpudrv_mach.c Thu Jan 29 14:17:08 2009
+++ new/usr/src/uts/i86pc/io/cpudrv_mach.c Thu Jan 29 14:17:07 2009
@@ -90,10 +90,22 @@
boolean_t
cpudrv_is_enabled(cpudrv_devstate_t *cpudsp)
{
- cpu_t *cp = cpudsp->cp;
- cpupm_mach_state_t *mach_state =
- (cpupm_mach_state_t *)cp->cpu_m.mcpu_pm_mach_state;
- return ((mach_state->ms_caps & CPUPM_P_STATES) && cpudrv_enabled);
+ cpupm_mach_state_t *mach_state;
+
+ if (!cpupm_is_enabled(CPUPM_P_STATES) || !cpudrv_enabled)
+ return (B_FALSE);
+
+ /*
+ * Only check the instance specific setting it exists.
+ */
+ if (cpudsp != NULL && cpudsp->cp != NULL &&
+ cpudsp->cp->cpu_m.mcpu_pm_mach_state != NULL) {
+ mach_state =
+ (cpupm_mach_state_t *)cpudsp->cp->cpu_m.mcpu_pm_mach_state;
+ return (mach_state->ms_caps & CPUPM_P_STATES);
+ }
+
+ return (B_TRUE);
}
/*
--
Configure bugmail: http://defect.opensolaris.org/bz/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.