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.

Reply via email to