<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
"Sachin P. Sant" wrote:
<blockquote TYPE=CITE>Dave Anderson wrote:
<br>> On a RHEL5 x86:
<br>>
<br>>   crash> sym -q __per_cpu | grep -e start -e end
<br>>   c03100a0 (A) __per_cpu_start
<br>>   c0315ae4 (A) __per_cpu_end
<br>>   crash>
<br>>
<br>> But on your RHEL5 ppc64 kernel:
<br>>
<br>>   # nm -Bn vmlinux | grep __per_cpu
<br>>   c000000000430100 D __per_cpu_start
<br>>   c0000000004356f0 D __per_cpu_end
<br>>   #
<br>>
<br>> So if you remove the two "type == 'A'" qualifiers
<br>> from the if statement above, does it work OK?
<br>>
<br>Dave , thanks for the hint. Yes these symbols are of
<br>type D on PPC64 machine. Infact after checking on latest
<br>RHEL5 kernels [ with relocatable support ] this is
<br>the case with even other archs also.
<p>[root@llm19 boot]# cat System.map-2.6.18-1.2767.el5 | grep __per_cpu_
<br>c065dd2c r __ksymtab___per_cpu_offset
<br>c0663c64 r __kcrctab___per_cpu_offset
<br>c0666c12 r __kstrtab___per_cpu_offset
<br>c06e6b80 D __per_cpu_offset
<br>c077d100 D __per_cpu_start
<br>c0781de4 D __per_cpu_end
<br>[root@llm19 boot]# uname -i
<br>i386
<br>[root@llm19 boot]#
<br><tt></tt> </blockquote>
<tt>Yes, you are right -- I was looking at a much earlier</tt>
<br><tt>RHEL5 dumpfile...</tt>
<blockquote TYPE=CITE> 
<br>So this probably can be a generic problem affecting other arch's
<br>also.
<p>Thanks for the help.
<p>Attached here is a patch to fix this problem. Let me know if it's
<br>ok.
<p>Thanks
<br>-Sachin
<br> </blockquote>
<tt>Looks good -- queued for the next release.</tt><tt></tt>
<p><tt>Thanks,</tt>
<br><tt>  Dave</tt>
<br> 
<blockquote TYPE=CITE>* On a UP machine running SMP kernel, crash fails
while reading idle tasks
<br>* from per cpu data.
<p>Signed-off-by : Sachin Sant <sachinp@in.ibm.com>
<br>---
<p>  ------------------------------------------------------------------------------------------------------------------------
<br>* On a UP machine running SMP kernel, crash fails while reading idle
tasks
<br>* from per cpu data.
<p>Signed-off-by : Sachin Sant <sachinp@in.ibm.com>
<br>---
<p>diff -Naurp crash-4.0-3.16/kernel.c crash-4.0-3.16-new/kernel.c
<br>--- crash-4.0-3.16/kernel.c     2006-12-22 01:24:11.000000000
+0530
<br>+++ crash-4.0-3.16-new/kernel.c 2007-01-05 10:49:39.000000000 +0530
<br>@@ -114,7 +114,8 @@ kernel_init()
<p>        if ((sp1 = symbol_search("__per_cpu_start"))
&&
<br>           
(sp2 =  symbol_search("__per_cpu_end")) &&
<br>-           (sp1->type
== 'A') && (sp2->type == 'A') &&
<br>+           (sp1->type
== 'A' || sp1->type == 'D') &&
<br>+           (sp2->type
== 'A' || sp2->type == 'D') &&
<br>           
(sp2->value > sp1->value))
<br>               
kt->flags |= SMP|PER_CPU_OFF;
<br> </blockquote>
</html>