----- Original Message -----
Hi Dave
I found a problem with the runq command in the function
dump_CFS_runqueues in task.c. The problem is in:
if (!(rq_sp = per_cpu_symbol_search("per_cpu__runqueues")))
error(FATAL, "per-cpu runqueues does not exist\n");
as that code does not support single core systems. However the rest
of the function seems to handle single core correctly, so by just
adding one line:
if (!(rq_sp = per_cpu_symbol_search("per_cpu__runqueues")))
if (!(rq_sp = symbol_search("runqueues")))
error(FATAL, "per-cpu runqueues does not exist\n");
the runq command works as it should. Of course the text in the error
message should also be updated to something more proper.
Interesting -- as it turns out, I've only got one sample x86_64 UP
kernel vmcore, and even though it's non-smp, a "per_cpu__runqueues"
symbol exists that points to the single runqueue. But it's a 2.6.31
UP kernel, and per-cpu handling has changed since then.
Anyway I see see the problem with the sample UP 2.6.38 ARM vmcore you
guys sent me, and note that it also breaks the "runq -t" option as well.
But that is also fixable by applying the same patch.
Good catch -- fixes are queued for crash-6.0.9.
Thanks,
Dave