changeset 10848:2cc61d58b78a

6892621 x4440 hits mach_state->ms_cstate.cma_domain != NULL with 10/13 bits
author Anup Pemmaiah <Napanda.Pemmaiah@Sun.COM>
date Fri, 23 Oct 2009 11:50:59 -0400
parents 37439331af3e
children 426b2b7cf7e5
files usr/src/uts/i86pc/os/cpupm/cpupm_mach.c
diffstat 1 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c	Fri Oct 23 09:14:54 2009 +0200
+++ b/usr/src/uts/i86pc/os/cpupm/cpupm_mach.c	Fri Oct 23 11:50:59 2009 -0400
@@ -207,6 +207,8 @@
 				mach_state->ms_caps |= CPUPM_P_STATES;
 			}
 		}
+	} else {
+		cpupm_disable(CPUPM_P_STATES);
 	}
 
 	if (mach_state->ms_tstate.cma_ops != NULL) {
@@ -217,6 +219,8 @@
 		} else {
 			mach_state->ms_caps |= CPUPM_T_STATES;
 		}
+	} else {
+		cpupm_disable(CPUPM_T_STATES);
 	}
 
 	/*
@@ -249,6 +253,8 @@
 			idle_cpu = non_deep_idle_cpu;
 			disp_enq_thread = non_deep_idle_disp_enq_thread;
 		}
+	} else {
+		cpupm_disable(CPUPM_C_STATES);
 	}
 
 
@@ -267,9 +273,15 @@
 			    mach_state->ms_caps & CPUPM_P_STATES,
 			    mach_state->ms_caps & CPUPM_C_STATES);
 		}
-		cpupm_throttle_manage_notification(cp);
-		cpuidle_manage_cstates(cp);
-		cpupm_power_manage_notifications(cp);
+		if (mach_state->ms_caps & CPUPM_T_STATES) {
+			cpupm_throttle_manage_notification(cp);
+		}
+		if (mach_state->ms_caps & CPUPM_C_STATES) {
+			cpuidle_manage_cstates(cp);
+		}
+		if (mach_state->ms_caps & CPUPM_P_STATES) {
+			cpupm_power_manage_notifications(cp);
+		}
 		cpupm_add_notify_handler(cp, cpupm_event_notify_handler, cp);
 	}
 	first = B_FALSE;