diff -urN crash-7.0.2/defs.h crash-7.0.2.new/defs.h
--- crash-7.0.2/defs.h	2013-09-04 07:53:01.000000000 -0700
+++ crash-7.0.2.new/defs.h	2013-10-14 17:44:25.000000000 -0700
@@ -1614,6 +1614,7 @@
 	long rq_nr_running;
 	long cfs_rq_rb_leftmost;
 	long cfs_rq_nr_running;
+	long cfs_rq_h_nr_running;
 	long cfs_rq_tasks_timeline;
 	long task_struct_se;
 	long sched_entity_run_node;
diff -urN crash-7.0.2/symbols.c crash-7.0.2.new/symbols.c
--- crash-7.0.2/symbols.c	2013-09-04 07:53:01.000000000 -0700
+++ crash-7.0.2.new/symbols.c	2013-10-14 17:44:25.000000000 -0700
@@ -8971,6 +8971,10 @@
 		OFFSET(task_group_cfs_bandwidth));
 	fprintf(fp, "              cfs_rq_throttled: %ld\n",
 		OFFSET(cfs_rq_throttled));
+	fprintf(fp, "              cfs_rq_nr_running: %ld\n",
+		OFFSET(cfs_rq_nr_running));
+	fprintf(fp, "              cfs_rq_h_nr_running: %ld\n",
+		OFFSET(cfs_rq_h_nr_running));
 	fprintf(fp, "       task_group_rt_bandwidth: %ld\n",
 		OFFSET(task_group_rt_bandwidth));
 	fprintf(fp, "            rt_rq_rt_throttled: %ld\n",
diff -urN crash-7.0.2/task.c crash-7.0.2.new/task.c
--- crash-7.0.2/task.c	2013-09-04 07:53:01.000000000 -0700
+++ crash-7.0.2.new/task.c	2013-10-14 17:44:25.000000000 -0700
@@ -59,9 +59,9 @@
 static void dump_task_runq_entry(struct task_context *);
 static void print_group_header_fair(int, ulong, void *);
 static void print_parent_task_group_fair(void *, int);
-static int dump_tasks_in_lower_dequeued_cfs_rq(int, ulong, int);
+static int dump_tasks_in_lower_dequeued_cfs_rq(int, ulong, int, struct task_context *, ulong);
 static int dump_tasks_in_cfs_rq(ulong);
-static int dump_tasks_in_task_group_cfs_rq(int, ulong, int);
+static int dump_tasks_in_task_group_cfs_rq(int, ulong, int, struct task_context *, ulong);
 static void dump_on_rq_tasks(void);
 static void cfs_rq_offset_init(void);
 static void task_group_offset_init(void);
@@ -7615,15 +7615,25 @@
 print_group_header_fair(int depth, ulong cfs_rq, void *t)
 {
 	int throttled;
+	ulong nr_running, h_nr_running;
 	struct rb_root *root;
 	struct task_group_info *tgi = (struct task_group_info *)t;
 
 	root = (struct rb_root *)(cfs_rq + OFFSET(cfs_rq_tasks_timeline));
 	INDENT(2 + 3 * depth);
-	fprintf(fp, "GROUP CFS RB_ROOT: %lx", (ulong)root);
+	fprintf(fp, "GROUP: %lx CFS: %lx RB_ROOT: %lx",
+		tgi->task_group, cfs_rq, (ulong)root);
 	if (tgi->name)
 		fprintf(fp, " <%s>", tgi->name);
 
+	readmem(cfs_rq + OFFSET(cfs_rq_nr_running), KVADDR,
+		&nr_running, sizeof(ulong), "cfs_rq nr_running",
+		FAULT_ON_ERROR);
+	readmem(cfs_rq + OFFSET(cfs_rq_h_nr_running), KVADDR,
+		&h_nr_running, sizeof(ulong), "cfs_rq h_nr_running",
+		FAULT_ON_ERROR);
+	fprintf(fp, " (%lu %lu) ", nr_running, h_nr_running);
+
 	if (VALID_MEMBER(task_group_cfs_bandwidth)) {
 		readmem(cfs_rq + OFFSET(cfs_rq_throttled), KVADDR,
 			&throttled, sizeof(int), "cfs_rq throttled",
@@ -7657,7 +7667,8 @@
 }
 
 static int
-dump_tasks_in_lower_dequeued_cfs_rq(int depth, ulong cfs_rq, int cpu)
+dump_tasks_in_lower_dequeued_cfs_rq(int depth, ulong cfs_rq, int cpu,
+	struct task_context *ctc, ulong task_cfs_rq)
 {
 	int i, total, nr_running;
 	ulong group, cfs_rq_c, cfs_rq_p;
@@ -7685,14 +7696,14 @@
 			FAULT_ON_ERROR);
 		if (nr_running == 0) {
 			total += dump_tasks_in_lower_dequeued_cfs_rq(depth + 1,
-				cfs_rq_p, cpu);
+				cfs_rq_p, cpu, ctc, task_cfs_rq);
 			continue;
 		}
 
 		print_parent_task_group_fair(tgi_array[i], cpu);
 
 		total++;
-		total += dump_tasks_in_task_group_cfs_rq(depth + 1, cfs_rq_p, cpu);
+		total += dump_tasks_in_task_group_cfs_rq(depth + 1, cfs_rq_p, cpu, ctc, task_cfs_rq);
 	}
 
 	return total;
@@ -7755,7 +7766,8 @@
 }
 
 static int
-dump_tasks_in_task_group_cfs_rq(int depth, ulong cfs_rq, int cpu)
+dump_tasks_in_task_group_cfs_rq(int depth, ulong cfs_rq, int cpu,
+	struct task_context *ctc, ulong task_cfs_rq)
 {
 	struct task_context *tc;
 	struct rb_root *root;
@@ -7789,7 +7801,7 @@
 			if (curr_my_q) {
 				total++;
 				total += dump_tasks_in_task_group_cfs_rq(depth + 1,
-					curr_my_q, cpu);
+					curr_my_q, cpu, ctc, task_cfs_rq);
 			}
 		}
 	}
@@ -7806,7 +7818,7 @@
 			if (my_q) {
 				total++;
 				total += dump_tasks_in_task_group_cfs_rq(depth + 1,
-					my_q, cpu);
+					my_q, cpu, ctc, task_cfs_rq);
 				continue;
 			}
 		}
@@ -7826,7 +7838,7 @@
 		total++;
 	}
 
-	total += dump_tasks_in_lower_dequeued_cfs_rq(depth, cfs_rq, cpu);
+	total += dump_tasks_in_lower_dequeued_cfs_rq(depth, cfs_rq, cpu, ctc, task_cfs_rq);
 
 	if (!total) {
 		INDENT(5 + 3 * depth);
@@ -7911,6 +7923,7 @@
 		MEMBER_OFFSET_INIT(sched_entity_on_rq, "sched_entity", "on_rq");
 		MEMBER_OFFSET_INIT(cfs_rq_rb_leftmost, "cfs_rq", "rb_leftmost");
 		MEMBER_OFFSET_INIT(cfs_rq_nr_running, "cfs_rq", "nr_running");
+		MEMBER_OFFSET_INIT(cfs_rq_h_nr_running, "cfs_rq", "h_nr_running");
 		MEMBER_OFFSET_INIT(cfs_rq_tasks_timeline, "cfs_rq", 
 			"tasks_timeline");
 		MEMBER_OFFSET_INIT(cfs_rq_curr, "cfs_rq", "curr");
@@ -7991,7 +8004,7 @@
 
 		fprintf(fp, "  CURRENT: ");
 		if ((tc = task_to_context(tt->active_set[cpu])))
-			fprintf(fp, "PID: %-5ld  TASK: %lx  COMMAND: \"%s\"\n",
+			fprintf(fp, "PID: %-5ld TASK: %lx  COMMAND: \"%s\"\n",
 				tc->pid, tc->task, tc->comm);
 		else
 			fprintf(fp, "%lx\n", tt->active_set[cpu]);
@@ -8413,7 +8426,7 @@
 dump_tasks_by_task_group(void)
 {
 	int cpu;
-	ulong root_task_group, cfs_rq, cfs_rq_p;
+	ulong root_task_group, cfs_rq, cfs_rq_p, task_cfs_rq;
 	ulong rt_rq, rt_rq_p;
 	char *buf;
 	struct rb_root *root;
@@ -8453,10 +8466,14 @@
 			sizeof(ulong), "task_group cfs_rq", FAULT_ON_ERROR);
 		fprintf(fp, "%sCPU %d\n", cpu ? "\n" : "", cpu);
 		fprintf(fp, "  CURRENT: ");
-		if ((tc = task_to_context(tt->active_set[cpu])))
-			fprintf(fp, "PID: %-5ld  TASK: %lx  COMMAND: \"%s\"\n",
-				tc->pid, tc->task, tc->comm);
-		else
+		if ((tc = task_to_context(tt->active_set[cpu]))) {
+			readmem(tc->task + OFFSET(task_struct_se) +
+				OFFSET(sched_entity_cfs_rq), KVADDR,
+				&task_cfs_rq, sizeof(ulong), "seched_entity cfs_rq",
+				FAULT_ON_ERROR);
+			fprintf(fp, "PID: %-5ld CFS: %lx TASK: %lx  COMMAND: \"%s\"\n",
+				tc->pid, task_cfs_rq, tc->task, tc->comm);
+		} else
 			fprintf(fp, "%lx\n", tt->active_set[cpu]);
 
 		fprintf(fp, "  TASK_GROUP RT_RQ: %lx\n", rt_rq_p);
@@ -8469,7 +8486,7 @@
 		fprintf(fp, "  TASK_GROUP CFS_RQ: %lx\n", cfs_rq_p);
 		fprintf(fp, "  CFS RB_ROOT: %lx\n", (ulong)root);
 		reuse_task_group_info_array();
-		dump_tasks_in_task_group_cfs_rq(0, cfs_rq_p, cpu);
+		dump_tasks_in_task_group_cfs_rq(0, cfs_rq_p, cpu, tc, task_cfs_rq);
 	}
 
 	FREEBUF(buf);
