summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorSachin Gupta <sgupta2m@in.ibm.com>2016-09-02 03:02:08 -0500
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2016-09-26 04:51:01 -0400
commite5022ae9dfdb1f64172e323d06ce80bcbe9cd5e9 (patch)
tree12202b7f9c664db01a4c9c19ae2c42282333603e /src/tools
parent84e7a65d875080145df6949c3f6656702002a96c (diff)
downloadtalos-sbe-e5022ae9dfdb1f64172e323d06ce80bcbe9cd5e9.tar.gz
talos-sbe-e5022ae9dfdb1f64172e323d06ce80bcbe9cd5e9.zip
Update debug tools as per new procedures
Change-Id: If6508d9ccbfe5d30ec425df23ef7877764fb0325 RTC: 158545 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29165 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com> Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/tools')
-rwxr-xr-xsrc/tools/debug/hw-debug-framework.py120
1 files changed, 85 insertions, 35 deletions
diff --git a/src/tools/debug/hw-debug-framework.py b/src/tools/debug/hw-debug-framework.py
index 49b8311a..9cfe40da 100755
--- a/src/tools/debug/hw-debug-framework.py
+++ b/src/tools/debug/hw-debug-framework.py
@@ -32,24 +32,43 @@ import sys
err = False
syms = {};
+if 'SBE_TOOLS_PATH' in os.environ:
+ SBE_TOOLS_PATH = os.environ['SBE_TOOLS_PATH'];
+else:
+ print "SBE_TOOLS_PATH not defined"
+ exit(1)
-def fillSymTable(sbeObjDir):
- symFile = sbeObjDir + "/sbe.syms"
+baseAddr = 0xfffe8000
+
+def fillSymTable(sbeObjDir, target ):
+ if (target == 'AWAN'):
+ symFile = sbeObjDir + "/sim.sbe.syms"
+ else:
+ symFile = sbeObjDir + "/sbe.syms"
f = open( symFile, 'r' )
for line in f:
words = line.split()
if( len( words ) == 4 ):
syms[words[3]] = [words[0], words[1]]
-def collectTrace( hwpBinDir, sbeObjDir, target, proc ):
- cmd1 = ("."+hwpBinDir+"/p9_sbe_pibMemDump_wrap.exe " + \
- syms['g_pk_trace_buf'][0] +\
- " " + syms['g_pk_trace_buf'][1] + " " + target)
- cmd2 = "." + "/ppe2fsp dumpPibMem sbetrace.bin "
- cmd3 = ("." + "/fsp-trace -s " + sbeObjDir +\
- "/trexStringFile sbetrace.bin > "+\
+def getOffset( symbol ):
+ symAddr = syms[ symbol][0]
+ print "\n symAddress :", symAddr
+ offset = int(symAddr, base = 16) - baseAddr;
+ return hex(offset)
+
+def collectTrace( sbeObjDir, target, node, proc ):
+ offset = getOffset( 'g_pk_trace_buf' );
+ len = "0x" + syms['g_pk_trace_buf'][1];
+ cmd1 = ("p9_pibmem_dump_wrap.exe -quiet -start_byte " + \
+ str(offset) +\
+ " -num_of_byte " + len + " "
+ " -n" + str(node) + " -p" + str(proc))
+ cmd2 = sbeObjDir + "/ppe2fsp DumpPIBMEM sbetrace.bin "
+ cmd3 = (sbeObjDir + "/fsp-trace -s " + sbeObjDir +\
+ "/sbeStringFile sbetrace.bin > "+\
"sbe_"+str(proc)+"_tracMERG")
- cmd4 = "mv dumpPibMem dumpPibMem_trace"
+ cmd4 = "mv DumpPIBMEM dumpPibMem_trace"
print "\ncollecting trace with commands -\n"
print "cmd1:", cmd1
rc = os.system( cmd1 )
@@ -75,14 +94,24 @@ def collectTrace( hwpBinDir, sbeObjDir, target, proc ):
print "ERROR running %s: %d " % ( cmd4, rc )
return 1
-def collectAttr( hwpBinDir, sbeObjDir, target, proc ):
- cmd1 = ("."+hwpBinDir+"/p9_sbe_pibMemDump_wrap.exe " +\
- syms['G_sbe_attrs'][0] + " " + \
- syms['G_sbe_attrs'][1] + " " + target)
- cmd2 = "mv dumpPibMem sbeAttr.bin"
- cmd3 = ("."+ sbeObjDir + "/p9_xip_tool " +\
- sbeObjDir + "/sbe_seeprom.bin -ifs attrdump sbeAttr.bin > "+\
- "sbe_"+str(proc)+"_attrs")
+def collectAttr( sbeObjDir, target, node, proc ):
+ if (target == 'AWAN'):
+ sbeImgFile = "p9n_10.sim.sbe_seeprom.bin"
+ else:
+ sbeImgFile = "sbe_seeprom.bin"
+ offset = getOffset( 'G_sbe_attrs' );
+ len = "0x" + syms['G_sbe_attrs'][1];
+ cmd1 = ("p9_pibmem_dump_wrap.exe -quiet -start_byte " + \
+ str(offset) +\
+ " -num_of_byte " + len + " "
+ " -n" + str(node) + " -p" + str(proc))
+ cmd2 = "mv DumpPIBMEM sbeAttr.bin"
+ # TODO via RTC 158861
+ # For multi-node system we need to convert node/proc to absolute
+ # proc number.
+ cmd3 = ( sbeObjDir + "/p9_xip_tool " +\
+ sbeObjDir + "/" + sbeImgFile + " -ifs attrdump sbeAttr.bin > "+\
+ "sbe_"+str(proc)+"_attrs")
print "\ncollecting attributes with commands -\n"
print "cmd1:", cmd1
rc = os.system( cmd1 )
@@ -102,36 +131,57 @@ def collectAttr( hwpBinDir, sbeObjDir, target, proc ):
print "ERROR running %s: %d " % ( cmd3, rc )
return 1
+def ppeState( sbeObjDir, target, node, proc ):
+ cmd1 = ("p9_ppe_state_wrap.exe -quiet -sbe -snapshot" +\
+ " -n" + str(node) + " -p" + str(proc))
+ print "cmd1:", cmd1
+ rc = os.system( cmd1 )
+ if ( rc ):
+ print "ERROR running %s: %d " % ( cmd1, rc )
+ return 1
+
+def sbeState( sbeObjDir, target, node, proc ):
+ cmd1 = ("p9_pibms_reg_dump_wrap.exe -quiet" +\
+ " -n" + str(node) + " -p" + str(proc))
+ print "cmd1:", cmd1
+ rc = os.system( cmd1 )
+ if ( rc ):
+ print "ERROR running %s: %d " % ( cmd1, rc )
+ return 1
+
def main( argv ):
parser = argparse.ArgumentParser( description = "SBE Dump Parser" )
- parser.add_argument( '-hwpBinDir', type=str, default = os.getcwd(), \
- help = 'Path of p9_sbe_pibMemDump_wrap.exe')
- parser.add_argument( '-sbeObjDir', type=str, default = os.getcwd(), \
- help = 'Path of sbe.syms file')
- parser.add_argument( '-l', '--level', choices = ['all', 'trace', 'attr'],\
- default='all', help = 'Parser level' )
- parser.add_argument( '-t', '--target', choices = ['AWAN', 'HW'], \
- required = 'true', help = 'Target type' )
+ parser.add_argument( '-l', '--level', choices = [ 'trace', 'attr', \
+ 'ppestate', 'sbestate'],\
+ default='trace', help = 'Parser level' )
+ parser.add_argument( '-t', '--target', choices = ['AWAN', 'HW', 'FILE'], \
+ default='HW', help = 'Target type' )
+ parser.add_argument( '-n', '--node', type=int , default = 0, \
+ help = 'Node Number' )
parser.add_argument( '-p', '--proc', type=int , default = 0, \
help = 'Proc Number' )
args = parser.parse_args()
- if ( args.target == 'AWAN' ):
- target = "1"
- elif ( args.target == 'HW' ):
- target = "0"
- fillSymTable(args.sbeObjDir)
+ sbeObjDir = SBE_TOOLS_PATH;
+ print "sbeObjDir", sbeObjDir
+ fillSymTable(sbeObjDir, args.target)
if ( args.level == 'all' ):
print "Parsing everything"
- collectTrace( args.hwpBinDir, args.sbeObjDir, target, args.proc )
- collectAttr( args.hwpBinDir, args.sbeObjDir, target, args.proc )
+ collectTrace( sbeObjDir, args.target, args.node, args.proc )
+ collectAttr( sbeObjDir, args.target, args.node, args.proc )
elif ( args.level == 'trace' ):
- collectTrace( args.hwpBinDir, args.sbeObjDir, target, args.proc )
+ collectTrace( sbeObjDir, args.target, args.node, args.proc )
elif ( args.level == 'attr' ):
- collectAttr( args.hwpBinDir, args.sbeObjDir, target, args.proc )
+ collectAttr( sbeObjDir, args.target, args.node, args.proc )
+ elif ( args.level == 'ppestate' ):
+ ppeState( sbeObjDir, args.target, args.node, args.proc )
+ elif ( args.level == 'sbestate' ):
+ sbeState( sbeObjDir, args.target, args.node, args.proc )
+
if __name__ == "__main__":
main( sys.argv )
+
OpenPOWER on IntegriCloud