----- "Pavan Naregundi" <pavan@xxxxxxxxxxxxxxxxxx> wrote: > Hi Everyone, > > On Power6 crash displays "MACHINE: ppc64 (unknown Mhz)" for processor > speed upon initialization and by the "sys" sub-command. > > # crash > > crash 5.0.1 > Copyright (C) 2002-2010 Red Hat, Inc. > Copyright (C) 2004, 2005, 2006 IBM Corporation > Copyright (C) 1999-2006 Hewlett-Packard Co > Copyright (C) 2005, 2006 Fujitsu Limited > Copyright (C) 2006, 2007 VA Linux Systems Japan K.K. > Copyright (C) 2005 NEC Corporation > Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc. > Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc. > This program is free software, covered by the GNU General Public > License, > and you are welcome to change it and/or distribute copies of it under > certain conditions. Enter "help copying" to see the conditions. > This program has absolutely no warranty. Enter "help warranty" for > details. > > GNU gdb (GDB) 7.0 > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show > copying" > and "show warranty" for details. > This GDB was configured as "powerpc64-unknown-linux-gnu"... > > KERNEL: /boot/vmlinux-2.6.32.9-0.5-ppc64 > DUMPFILE: /dev/mem > CPUS: 5 > DATE: Thu Mar 18 03:13:59 2010 > UPTIME: 04:11:31 > LOAD AVERAGE: 0.34, 0.15, 0.05 > TASKS: 319 > NODENAME: brucelp3 > RELEASE: 2.6.32.9-0.5-ppc64 > VERSION: #1 SMP 2010-03-15 12:22:00 +0100 > MACHINE: ppc64 (unknown Mhz) ======> display unknown Mhz > MEMORY: 1 GB > PID: 17788 > COMMAND: "crash" > TASK: c00000003ae58b80 [THREAD_INFO: c00000003df68000] > CPU: 6 > STATE: TASK_RUNNING (ACTIVE) > ===================== > > When investigated this issue was absence of 'have_of' symbol in current > kernels. Below is the commit which removed the support of 'have_of'. > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6b82b3e4b54b2fce2ca11976c535012b836b2016 > > > This patch overcomes the use of 'have_of' variable.. Please review this > patch.. > > Regards, > Pavan > IBM Linux Technology Center This patch doesn't seem like it would be backwards-compatible for older systems which do *not* have the "have_of" symbol. Can you confirm that this patch will still work for them? Thanks, Dave > > --- > diff -Naur a/ppc64.c b/ppc64.c > --- a/ppc64.c 2010-03-24 10:14:33.000000000 +0530 > +++ b/ppc64.c 2010-03-24 10:14:51.000000000 +0530 > @@ -742,7 +742,7 @@ > ppc64_processor_speed(void) > { > ulong res, value, ppc_md, md_setup_res; > - ulong we_have_of, prep_setup_res; > + ulong prep_setup_res; > ulong node, type, name, properties; > char str_buf[32]; > uint len; > @@ -751,22 +751,12 @@ > if (machdep->mhz) > return(machdep->mhz); > > - /* first, check if the have_of variable a) exists, and b) is TRUE */ > - if(symbol_exists("have_of")) { > - get_symbol_data("have_of", sizeof(void *), &we_have_of); > - } else { > - we_have_of = 0; > - } > - > - if(we_have_of) { > + if(symbol_exists("allnodes")) { > /* we have a machine with open firmware, so search the OF nodes > * for cpu nodes. > * Too bad we can't call kernel helper functions here :) > */ > > - if(!symbol_exists("allnodes")) > - return (machdep->mhz = 0); > - > get_symbol_data("allnodes", sizeof(void *), &node); > while(node) { > readmem(node+OFFSET(device_node_type), > diff -Naur a/ppc.c b/ppc.c > --- a/ppc.c 2010-03-24 10:14:33.000000000 +0530 > +++ b/ppc.c 2010-03-24 10:14:51.000000000 +0530 > @@ -461,7 +461,7 @@ > ppc_processor_speed(void) > { > ulong res, value, ppc_md, md_setup_res; > - ulong we_have_of, prep_setup_res; > + ulong prep_setup_res; > ulong node, type, name, properties; > char str_buf[16]; > ulong len, mhz = 0; > @@ -469,22 +469,12 @@ > if (machdep->mhz) > return(machdep->mhz); > > - /* first, check if the have_of variable a) exists, and b) is TRUE */ > - if(symbol_exists("have_of")) { > - get_symbol_data("have_of", sizeof(void *), &we_have_of); > - } else { > - we_have_of = 0; > - } > - > - if(we_have_of) { > + if(symbol_exists("allnodes")) { > /* we have a machine with open firmware, so search the OF nodes > * for cpu nodes. > * Too bad we can't call kernel helper functions here :) > */ > > - if(!symbol_exists("allnodes")) > - return (machdep->mhz = 0); > - > get_symbol_data("allnodes", sizeof(void *), &node); > while(node) { > readmem(node+OFFSET(device_node_type), > > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility