fixed issues with p-state reported CPU frequencies (actually, uninitialized
values ) extended from fix for i965 monitoring. Also found UI titles missing, so repleaced them.
diff --git a/src/cpu/cpu_core.cpp b/src/cpu/cpu_core.cpp
index 593d5f6..b0dd4da 100644
--- a/src/cpu/cpu_core.cpp
+++ b/src/cpu/cpu_core.cpp
@@ -42,6 +42,11 @@
 	unsigned int i;
 	buffer[0] = 0;
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("  Core"));
+		return buffer;
+	}
+
 	for (i = 0; i < cstates.size(); i++) {
 		if (cstates[i]->line_level != line_nr)
 			continue;
@@ -181,6 +186,11 @@
 			total_stamp = 1;
 	}
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("  Core"));
+		return buffer;
+	}
+
 	if (line_nr >= (int)pstates.size() || line_nr < 0)
 		return buffer;
 
diff --git a/src/cpu/cpu_linux.cpp b/src/cpu/cpu_linux.cpp
index f5e269e..d6caf45 100644
--- a/src/cpu/cpu_linux.cpp
+++ b/src/cpu/cpu_linux.cpp
@@ -227,6 +227,11 @@
 	unsigned int i;
 	buffer[0] = 0;
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_(" CPU %i"), number);
+		return buffer;
+	}
+
 	for (i = 0; i < cstates.size(); i++) {
 		if (cstates[i]->line_level != line_nr)
 			continue;
@@ -321,6 +326,11 @@
 			total_stamp = 1;
 	}
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_(" CPU %i"), number);
+		return buffer;
+	}
+
 	if (line_nr >= (int)pstates.size() || line_nr < 0)
 		return buffer;
 
diff --git a/src/cpu/cpu_package.cpp b/src/cpu/cpu_package.cpp
index 2e2e8a3..b9d4c19 100644
--- a/src/cpu/cpu_package.cpp
+++ b/src/cpu/cpu_package.cpp
@@ -42,6 +42,11 @@
 	unsigned int i;
 	buffer[0] = 0;
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("Package"));
+		return buffer;
+	}
+
 	for (i = 0; i < cstates.size(); i++) {
 		if (cstates[i]->line_level != line_nr)
 			continue;
@@ -94,6 +99,12 @@
 			total_stamp = 1;
 	}
 
+
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("  Package"));
+		return buffer;
+	}
+
 	if (line_nr >= (int)pstates.size() || line_nr < 0)
 		return buffer;
 
@@ -149,7 +160,7 @@
 
 	/* calculate the maximum frequency of all children */
 	for (i = 0; i < children.size(); i++)
-		if (children[i]) {
+		if (children[i] && children[i]->has_pstates()) {
 			uint64_t f = 0;
 			if (!children[i]->idle) {
 				f = children[i]->current_frequency;
diff --git a/src/cpu/intel_cpus.cpp b/src/cpu/intel_cpus.cpp
index 24465a0..f7b86bc 100644
--- a/src/cpu/intel_cpus.cpp
+++ b/src/cpu/intel_cpus.cpp
@@ -292,6 +292,11 @@
 			total_stamp = 1;
 	}
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("  Core"));
+		return buffer;
+	}
+
 	if (line_nr >= (int)pstates.size() || line_nr < 0)
 		return buffer;
 
@@ -311,6 +316,12 @@
 			total_stamp = 1;
 	}
 
+
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_("  Package"));
+		return buffer;
+	}
+
 	if (line_nr >= (int)pstates.size() || line_nr < 0)
 		return buffer;
 
@@ -460,7 +471,7 @@
 
 	/* calculate the maximum frequency of all children */
 	for (i = 0; i < children.size(); i++)
-		if (children[i]) {
+		if (children[i] && children[i]->has_pstates()) {
 			uint64_t f = 0;
 			if (!children[i]->idle) {
 				f = children[i]->current_frequency;
@@ -588,6 +599,11 @@
 			total_stamp = 1;
 	}
 
+	if (line_nr == LEVEL_HEADER) {
+		sprintf(buffer,_(" CPU %i"), number);
+		return buffer;
+	}
+
 	if (line_nr == LEVEL_C0) {
 		double F;
 		F = 1.0 * (tsc_after - tsc_before) * (aperf_after - aperf_before) / (mperf_after - mperf_before) / time_factor * 1000;