[Crash-utility] [PATCH 0/4] To support module percpu symbol

Toshikazu Nakayama nakayama.ts at ncos.nec.co.jp
Mon Nov 8 04:48:09 UTC 2010


Hi,

The crash utility could not get module percpu symbols.
Since percpu symbols are not included in kallsyms nor module_core area,
they were not found out in module_init().

However, symbols are existing in module object file
.data..percpu (legacy kernel revision .data.percpu) section,
load_module_symbols() can find and resolve them.
(percpu symbols exist in mod_load_symtable, not in mod_ext_symtable)

'p' command is also updated to be made redundant legacy per_cpu__ prefix.

Note:
 I have not tested these paches enough over any arch or kernel revisions,
 also any distros.
 Just have been tested x86 (64bit) with linux-2.6.10 and linux-2.6.35.


This is my first post to crash utility.
I don't understand well the manner of this mailing list.
(I'm sorry if there's anything wrong)

Thanks,
Toshi.
-----------------------------------------------------------------------------
CHANGES: module percpu symbols are resolved while module object loading.
         cmd_p() can read percpu syombols without prefix in legacy environs.

SRPM: crash-5.0.9-0.src.rpm

TEST#1: Result on linux-2.6.10 x86(64) SMP(4 CPUs) * with test module

[before]

crash> sym -m test | grep abc
crash> p abc
p: gdb request failed: p abc

[after]

crash> sym -m test | grep abc
ffffffff80871928 (d) per_cpu__abc
crash> sym abc
symbol not found: abc
possible alternatives:
  ffffffff80871928 (d) per_cpu__abc
crash> p abc
PER-CPU DATA TYPE:
  int per_cpu__abc;
PER-CPU ADDRESSES:
  [0]: 10008af0888
  [1]: 10008b00888
  [2]: 10008b10888
  [3]: 10008b20888

TEST#2: Result on linux-2.6.35 x86(64) SMP (8 CPUs) * with KVM modules

crash> mod | grep kvm
ffffffffa0035c40  kvm_intel       39368  /lib/modules/2.6.35/kernel/arch/x86/kvm/kvm-intel.ko
ffffffffa008dba0  kvm            175160  /lib/modules/2.6.35/kernel/arch/x86/kvm/kvm.ko

[before]

crash> sym -m kvm_intel | grep vcpus_on_cpu
crash> p vcpus_on_cpu
p: gdb request failed: p vcpus_on_cpu

[after]

crash> sym -m kvm_intel | grep vcpus_on_cpu
12a40 (d) vcpus_on_cpu
crash> p vcpus_on_cpu
PER-CPU DATA TYPE:
  struct list_head vcpus_on_cpu;
PER-CPU ADDRESSES:
  [0]: ffff880001812a40
  [1]: ffff880001852a40
  [2]: ffff880001892a40
  [3]: ffff8800018d2a40
  [4]: ffff880001912a40
  [5]: ffff880001952a40
  [6]: ffff880001992a40
  [7]: ffff8800019d2a40

Toshikazu Nakayama (4):
  Add percpu member.
  module's percpu basic procedure.
  expand percpu area.
  update cmd_p().

 defs.h    |    2 ++
 kernel.c  |    1 +
 symbols.c |   50 +++++++++++++++++++++++++++++++++++++++++++++-----
 3 files changed, 48 insertions(+), 5 deletions(-)

-- 
1.7.3.2.161.g3089c




More information about the Crash-utility mailing list