summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/build/citest/etc/simbuild1
-rwxr-xr-xsrc/build/debug/Hostboot/HwpfAttrOverride.pm1
-rw-r--r--src/build/debug/simics-debug-framework.py85
-rwxr-xr-xsrc/build/mkrules/dist.targets.mk1
-rwxr-xr-xsrc/build/simics/hb-pnor-vpd-preload.pl24
-rwxr-xr-xsrc/build/simics/hb-pnor-vpd-preload.py14
-rwxr-xr-xsrc/build/simics/standalone.simics78
-rwxr-xr-xsrc/build/simics/startup.simics57
-rwxr-xr-xsrc/build/tools/hb27
-rw-r--r--src/usr/targeting/common/xmltohb/simics_AXONE.system.xml12
-rw-r--r--src/usr/vpd/makefile3
11 files changed, 187 insertions, 116 deletions
diff --git a/src/build/citest/etc/simbuild b/src/build/citest/etc/simbuild
new file mode 100644
index 000000000..ef37ea8d1
--- /dev/null
+++ b/src/build/citest/etc/simbuild
@@ -0,0 +1 @@
+/gsa/ausgsa/projects/s/simics_published_builds//p10/a9436c91b1bea3089be80317b2c5f6569b8fbd6a/simics.tar.gz \ No newline at end of file
diff --git a/src/build/debug/Hostboot/HwpfAttrOverride.pm b/src/build/debug/Hostboot/HwpfAttrOverride.pm
index d655d5d28..bd9e28ea0 100755
--- a/src/build/debug/Hostboot/HwpfAttrOverride.pm
+++ b/src/build/debug/Hostboot/HwpfAttrOverride.pm
@@ -70,6 +70,7 @@ use constant TARGET_TYPE_PHB => 0x00800000;
use constant TARGET_TYPE_L4 => 0x00000200;
use constant TARGET_TYPE_MC => 0x01000000;
use constant TARGET_TYPE_MCC => 0x08000000;
+use constant TARGET_TYPE_OMIC => 0x04000000;
use constant TARGET_TYPE_OMI => 0x02000000;
use constant TARGET_TYPE_OMIC => 0x04000000;
use constant TARGET_TYPE_OCMB => 0x10000000;
diff --git a/src/build/debug/simics-debug-framework.py b/src/build/debug/simics-debug-framework.py
index 1b78f2820..c429828a9 100644
--- a/src/build/debug/simics-debug-framework.py
+++ b/src/build/debug/simics-debug-framework.py
@@ -90,35 +90,35 @@ class DebugFrameworkIPCMessage:
# types into the appropriate simics interface.
#
class DebugFrameworkProcess:
- process = "" # subprocess object.
- tool = "" # string - tool module name.
- toolOptions = "" # string - tool options
- outputToString = None # mode - String output instead of STDOUT.
- imgPath = None # Image dir path override.
- result = "" # Result string for Usage-mode.
- outputFile = None # Output file for results in addition to STDOUT
+ process = ""; # subprocess object.
+ tool = ""; # string - tool module name.
+ toolOptions = ""; # string - tool options
+ outputToString = None; # mode - String output instead of STDOUT.
+ imgPath = None; # Image dir path override.
+ result = ""; # Result string for Usage-mode.
+ outputFile = None; # Output file for results in addition to STDOUT
def __init__(self, tool = "Printk", toolOptions = "",
outputToString = None, usage = None,
imgPath = None,
outputFile = None):
# Assign instance 'imgPath' variable.
- self.imgPath = imgPath if imgPath else (os.environ['HB_TOOLPATH']+"/")
+ self.imgPath = imgPath if imgPath else (os.environ['HB_TOOLPATH']+"/");
# Determine sub-process arguments.
- process_args = [self.imgPath+"simics-debug-framework.pl"]
+ process_args = [self.imgPath+"simics-debug-framework.pl"];
if (usage): # Pass --usage if Usage mode selected.
- process_args = process_args + [ "--usage" ]
- outputToString = True
+ process_args = process_args + [ "--usage" ];
+ outputToString = True;
# Spawn sub-process
self.process = subprocess.Popen(process_args,
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# Update instance variables.
- self.tool = tool
- self.toolOptions = toolOptions
- self.outputToString = outputToString
- self.outputFile = open(outputFile, 'w') if outputFile else None
+ self.tool = tool;
+ self.toolOptions = toolOptions;
+ self.outputToString = outputToString;
+ self.outputFile = open(outputFile, 'w') if outputFile else None;
# Read a message from the process pipe.
def recvMsg(self):
@@ -169,9 +169,9 @@ class DebugFrameworkProcess:
addr = int(match.group(1))
size = int(match.group(2))
- data = map(ord, match.group(3).decode("hex"))
+ data = map(ord, match.group(3).decode("hex"));
- conf.system_cmp0.phys_mem.memory[[addr, addr+size-1]] = data
+ conf.system_cmp0.phys_mem.memory[[addr, addr+size-1]] = data;
# Read data from PNOR.
# This message has data of the format "0dADDRESS,0dSIZE".
@@ -304,22 +304,22 @@ def register_hb_debug_framework_tools():
files = os.listdir(os.environ['HB_TOOLPATH']+"/Hostboot")
# Filter out any prefixed with '_' (utility module) or a '.' (hidden file).
- pattern = re.compile("[^\._]")
+ pattern = re.compile("[^\._]");
files = [f for f in files if pattern.match(f)]
# Filter out modules written for vbu only
- pattern = re.compile("AutoIpl|ContTrace")
+ pattern = re.compile("AutoIpl|ContTrace");
files = [f for f in files if not pattern.match(f)]
# Remove the .pm extension from the tool modules.
- files = [re.sub("\.pm","",f) for f in files]
+ files = [re.sub("\.pm","",f) for f in files];
# Create an entry for each module.
for tool in files:
# Get usage information for each module, fix text to HTML-like.
usage = run_hb_debug_framework(tool, usage = 1)
- usage = re.sub("<","&lt;", usage)
- usage = re.sub(">","&gt;", usage)
+ usage = re.sub("<","&lt;", usage);
+ usage = re.sub(">","&gt;", usage);
usage = re.sub("\t"," ",usage)
usage = "<pre>"+usage+"</pre>"
@@ -372,11 +372,6 @@ def getHRMOR():
result = SIM_get_object(simenv.hb_cpu).hrmor
return result
-# Fetch the current HRMOR value for inputted cpu obj
-def getHrmorCpu(cpu):
- # Use the cpu object to get the hrmor value
- iface = SIM_get_interface(cpu, "int_register")
- return iface.read(iface.get_number("hrmor"))
# Read simics memory and return a list of strings such as ['0x0','0x2b','0x8']
# representing the data read from simics. The list returned may be handed
@@ -409,20 +404,20 @@ def writeLong(address,datvalue):
def writeSimicsMemory(address,data):
address = address + getHRMOR()
size = len(data)
- conf.system_cmp0.phys_mem.memory[[address, address+size-1]] = data
+ conf.system_cmp0.phys_mem.memory[[address, address+size-1]] = data;
# Convert an integer to a byte list <size> bytes long.
def intToList(n,size):
lst = []
for i in range(size):
- b = n & 0xFF
+ b = n & 0xFF;
lst.insert(0,b)
n = n >> 8
return lst
# Convert a byte list to an integer.
def listToInt(l):
- i = 0
+ i = 0;
for c in l:
i = (i << 8) | c
return i
@@ -503,19 +498,14 @@ def magic_instruction_callback(user_arg, cpu, arg):
# Disable our handler if someone tells us to
if( os.environ.has_key('HB_DISABLE_MAGIC')
and (os.environ['HB_DISABLE_MAGIC'] == '1') ):
- #print 'Skipping HB magic (disabled)', arg
- return
-
- #Only respond to haps for cpu model types we care about (mambo)
- if 'mambo_core' not in cpu.classname:
- #print 'Skipping HB magic (Not a Mambo core)', arg
+ print 'Skipping HB magic (disabled)', arg
return
# Disable our handler if we aren't inside HB part of IPL
# If HB is running then HRMOR==128MB (ignoring high bits)
# 0x40000000=1GB, 0x8000000=128MB
- if( (getHrmorCpu(cpu) % 0x40000000) != 0x8000000 ):
- #print 'Skipping HB magic (outside of HB)', arg
+ if( (cpu.hrmor % 0x40000000) != 0x8000000 ):
+ print 'Skipping HB magic (outside of HB)', arg
return
if arg == 7006: # MAGIC_SHUTDOWN
@@ -545,7 +535,7 @@ def magic_instruction_callback(user_arg, cpu, arg):
#print 'loading payload from', flash_file, 'to 0x%x' % load_addr
#cmd = 'shell "fcp --force -o0 -R %s:PAYLOAD simicsPayload.ecc; ecc --remove --p8 simicsPayload.ecc simicsPayload"; load-file simicsPayload 0x%x' % (flash_file, load_addr)
#SIM_run_alone( run_command, cmd )
- print "MAGIC_LOAD_PAYLOAD not implemented\n"
+ print "MAGIC_LOAD_PAYLOAD not implemented\n";
if arg == 7018: # MAGIC_BREAK_ON_ERROR
# Stop the simulation if an env var is set
@@ -633,8 +623,8 @@ def magic_instruction_callback(user_arg, cpu, arg):
setLvlCommand = "%s"%(comp_str)+".log-level %d"%(log_level)
SIM_run_alone(run_command, setLvlCommand )
else :
- couldNotFindCommand = "shell \" Unable to find valid object on this system type, neither %s nor %s were found \""%(D1Proc0String, P9Proc0String)
- SIM_run_alone(run_command, couldNotFindCommand )
+ print "Unable to find valid object on this system type, neither %s nor %s were found"%(D1Proc0String, P9Proc0String)
+
if arg == 7023: # MAGIC_TOGGLE_OUTPUT
if( not os.environ.has_key('ENABLE_HB_SIMICS_LOGS') ):
#print("Skipping Hostboot Simics Logging because ENABLE_HB_SIMICS_LOGS is not set")
@@ -654,6 +644,7 @@ def magic_instruction_callback(user_arg, cpu, arg):
SIM_run_alone(run_command, stopCommand )
if arg == 7055: # MAGIC_CONTINUOUS_TRACE
+
hb_tracBinaryBuffer = cpu.r4
hb_tracBinaryBufferSz = cpu.r5
per_node = 0x200000000000 #32TB
@@ -712,7 +703,8 @@ def magic_instruction_callback(user_arg, cpu, arg):
# Figure out if we are running out of the cache or mainstore
# Add the HRMOR if we're running from memory
- if 'cache' not in mem_object:
+ if 'cache' not in mem_object and 'l3' not in mem_object:
+ #print "Did not find cache"
hb_tracBinaryBuffer = (hb_tracBinaryBuffer +
hb_hrmor -
(per_node*node_num))
@@ -737,10 +729,13 @@ def magic_instruction_callback(user_arg, cpu, arg):
os.environ['HB_TOOLPATH'],\
tracmerg[node_num])
- cmd3 = "(get-master-proc %d).proc_fsi2host_mbox->regs[95][1] = 0"%(node_num)
-
+ cmd3 = ""
+ if (simenv.hb_mode == 0): #new mode (Axone + beyond)
+ cmd3 = "(get-master-proc).reset-fsimbox-reg index=0x104"
+ else:
+ #old mode (Cumulus + prior)
+ cmd3 = "(get-master-proc %d).proc_fsi2host_mbox->regs[95][1] = 0"%(node_num)
saveCommand = "%s; %s; %s"%(cmd1,cmd2,cmd3)
- #print "Command=%s" % (saveCommand)
if (simenv.fileSystemOk == 1):
SIM_run_alone(run_command, saveCommand )
diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk
index 050bc0d94..45ad3d874 100755
--- a/src/build/mkrules/dist.targets.mk
+++ b/src/build/mkrules/dist.targets.mk
@@ -278,6 +278,7 @@ simics.tar_CONTENTS = \
img/procmvpd_ven.dat \
img/procmvpd_p9n.dat \
img/procmvpd_p9c.dat \
+ img/procmvpd_p9a.dat \
img/cvpd.dat \
img/dvpd.dat \
img/cvpd_cdimm.dat \
diff --git a/src/build/simics/hb-pnor-vpd-preload.pl b/src/build/simics/hb-pnor-vpd-preload.pl
index 87314744e..ea19ba461 100755
--- a/src/build/simics/hb-pnor-vpd-preload.pl
+++ b/src/build/simics/hb-pnor-vpd-preload.pl
@@ -59,6 +59,7 @@ my $mvpdFile = "procmvpd.dat";
my $mvpdFile_ven = "procmvpd_ven.dat";
my $mvpdFile_p9n = "procmvpd_p9n.dat";
my $mvpdFile_p9c = "procmvpd_p9c.dat";
+my $mvpdFile_p9a = "procmvpd_p9a.dat";
my $cvpdFile = "cvpd.dat";
my $cvpdCdimmFile = "cvpd_cdimm.dat";
my $dvpdFile = "dvpd.dat";
@@ -324,6 +325,10 @@ sub createMVPDData
{
$sourceFile = "$dataPath/$mvpdFile_p9c";
}
+ elsif( $procChipType eq "p9a")
+ {
+ $sourceFile = "$dataPath/$mvpdFile_p9a";
+ }
else
{
$sourceFile = "$dataPath/$mvpdFile";
@@ -384,6 +389,10 @@ sub createCVPDData
{
$numProcs = 4;
}
+ elsif( $procChipType eq "p9a")
+ {
+ $numProcs = 2;
+ }
#Centaurs are populated based on populated Processors and special
#MCS plugging rules. We can look at $procConfig and $maxProcs
@@ -607,8 +616,17 @@ sub getMemoryConfig
}
elsif( $procChipType eq "p9n")
{
- #There are no centaurs within a NIMBUS machine, but need to set
- #up the mcs array.
+ #There are no centaurs within a NIMBUS machine, but need to set
+ #up the mcs array.
+ if( $mcs < $numMcsPerProc)
+ {
+ $mcsArray[$mcs] = 1;
+ }
+ }
+ elsif( $procChipType eq "p9a")
+ {
+ #There are no centaurs within an AXONE machine, but need to set
+ #up the mcs array.
if( $mcs < $numMcsPerProc)
{
$mcsArray[$mcs] = 1;
@@ -622,6 +640,4 @@ sub getMemoryConfig
}
debugMsg( "mcsArray=@mcsArray" );
-
-
}
diff --git a/src/build/simics/hb-pnor-vpd-preload.py b/src/build/simics/hb-pnor-vpd-preload.py
index 9dff2c3ae..429ec1a7b 100755
--- a/src/build/simics/hb-pnor-vpd-preload.py
+++ b/src/build/simics/hb-pnor-vpd-preload.py
@@ -31,8 +31,18 @@ import shlex
#------------------------------------------------------------------------------
toolLoc = os.environ.get("HB_TOOLPATH");
thisSys = os.environ.get("HB_MACHINE").upper();
-numProcs = os.environ.get( "NUM_PROCS");
-dimmsPerProc = os.environ.get( "DIMMS_PER_PROC");
+numProcs = "0"
+if os.environ.has_key("NUM_PROCS"):
+ numProcs = os.environ.get("NUM_PROCS");
+elif simenv.num_procs > 0:
+ numProcs = str(simenv.num_procs)
+
+dimmsPerProc = "0"
+if os.environ.has_key("DIMMS_PER_PROC"):
+ dimmsPerProc = os.environ.get("DIMMS_PER_PROC");
+elif simenv.num_dimms > 0:
+ dimmsPerProc = str(simenv.num_dimms)
+
numCentaurPerProcParm = "";
numCentaurPerProc = "0";
dimmType = "ISDIMM";
diff --git a/src/build/simics/standalone.simics b/src/build/simics/standalone.simics
index 76027b8b1..e9b177fae 100755
--- a/src/build/simics/standalone.simics
+++ b/src/build/simics/standalone.simics
@@ -2,7 +2,7 @@
# $hb_masterproc : name of master proc chip object
# $hb_pnor : name of pnor object associated with master proc
-($hb_masterproc).proc_fsi2host_mbox->responder_enable=1
+#($hb_masterproc).proc_fsi2host_mbox->responder_enable=1
# Default value is to preload VPD into PNOR image
if not defined hb_skip_vpd_preload {$hb_skip_vpd_preload = 0}
@@ -11,47 +11,57 @@ if not defined hb_skip_vpd_preload {$hb_skip_vpd_preload = 0}
if ($hb_skip_vpd_preload == 0) {
# Pass processor chip type. All proc chip types should be the same.
+ if (get-object-list proc_hb_standalone) {
+ $procChipType=(get-object-list proc_hb_standalone)[0]->chip_type
+ python "os.environ['HB_PROC_CHIP_TYPE'] = \""+$procChipType+"\""
+ }
if (get-object-list p9_proc) {
$procChipType=(get-object-list p9_proc)[0]->chip_type
python "os.environ['HB_PROC_CHIP_TYPE'] = \""+$procChipType+"\""
}
- try {
- echo "Preload VPD into PNOR"
- run-python-file (lookup-file hbfw/hb-pnor-vpd-preload.py)
+ try {
+ run-python-file (lookup-file hbfw/hb-pnor-vpd-preload.py)
# Must match pnor layout used (see eyecatch in layout)
echo "PNOR layout offset for VPD:"
# PNOR eyecatch MVPD
echo " - MVPD at 0x79000"
- ($hb_pnor).sfc_master_mem.load-file ./sysmvpd.dat.ecc 0x79000
+ ($hb_pnor).load-file ./sysmvpd.dat.ecc 0x79000
# PNOR eyecatch DJVPD
echo " - DJVPD at 0x31000"
- ($hb_pnor).sfc_master_mem.load-file ./sysspd.dat.ecc 0x31000
+ ($hb_pnor).load-file ./sysspd.dat.ecc 0x31000
# PNOR eyecatch CVPD
echo " - CVPD at 0x109000"
- ($hb_pnor).sfc_master_mem.load-file ./sysmemvpd.dat.ecc 0x109000
+ ($hb_pnor).load-file ./sysmemvpd.dat.ecc 0x109000
} except { echo "ERROR: Failed to preload VPD into PNOR." }
}
-# Loop through every processor chip
-foreach $cc in (get-object-list p9_proc) {
- echo $cc
-
- #Trigger a power on to cec-chip
- #echo "-Trigger power on"
- @mp="%s.proc_chip"%simenv.cc
- @SIM_get_interface(SIM_get_object(mp),"signal").signal_raise()
+# Turn on all processor cec-chips
+if ($hb_mode == 1) {
+ # Nimbus/Cumulus
+ foreach $cc in (get-object-list p9_proc) {
+ echo $cc
+ #Trigger a power on to cec-chip
+ echo "-Trigger power on"
+ @mp="%s.proc_chip"%simenv.cc
+ @SIM_get_interface(SIM_get_object(mp),"signal").signal_raise()
+ }
+} else {
+ # Axone and Beyond:
+ foreach $proc in (get-component-list -all proc_pib){
+ foreach $cc in (get-object-list component=$proc type=cec-chip -recursive) {
+ @SIM_get_interface(SIM_get_object(simenv.cc), "signal").signal_raise()
+ }
+ }
}
-#Power on cec-chip on centaurs if present
+#Power on cec-chip on memory controllers if present
foreach $cp in (get-object-list p9_centaur_cfam -recursive){
echo $cp
@cc="%s.membuf_chip"%simenv.cp
@ignore=SIM_get_interface(SIM_get_object(cc),"signal").signal_raise()
}
-system_cmp0.cpu0_0_00_0.enable
-
###################################
#Enable the IPMI Responder
###################################
@@ -60,15 +70,23 @@ try {
run-python-file (lookup-file hbfw/ipmi_bt_responder.py)
} except { echo "ERROR: Failed to load IPMIresponder." }
-###################################
-#Enable SBE
-###################################
-echo "Enable the SBE"
-# Set mailbox scratch registers so that the SBE starts in plck mode
-# Set Boot Freq valid bit (bit 3) and valid data bit (bit 7)
-($hb_masterproc).proc_chip.invoke parallel_store SCOM 0x5003F "31000000_00000000" 64
-($hb_masterproc).proc_chip.invoke parallel_store SCOM 0x5003A "00000000_00000000" 64
-# Set the Nest PLL Bucket ID to 5 in the 4th byte of Mbox Scratch Reg 4
-($hb_masterproc).proc_chip.invoke parallel_store SCOM 0x5003B "00000005_00000000" 64
-($hb_masterproc).proc_chip.invoke parallel_store FSIMBOX 0x01 "80000000" 32
-($hb_masterproc).proc_chip.invoke parallel_store FSIMBOX 0x08 "00080000" 32
+#Cumulus/Nimbus
+if ($hb_mode == 1) {
+ # Setup fabric ID for master proc
+ ($hb_masterproc_cecchip).invoke parallel_store SCOM 0x1000008 "00000000_00000000" 64 #group=0, chip=0
+
+ ###################################
+ #Enable SBE
+ ###################################
+ echo "Enable the SBE"
+ # Set mailbox scratch registers so that the SBE starts in plck mode
+ # Set Boot Freq valid bit (bit 3) and valid data bit (bit 7)
+ ($hb_masterproc_cecchip).invoke parallel_store SCOM 0x5003F "31000000_00000000" 64
+ ($hb_masterproc_cecchip).invoke parallel_store SCOM 0x5003A "00000000_00000000" 64
+
+ # Set the Nest PLL Bucket ID to 5 in the 4th byte of Mbox Scratch Reg 4
+ ($hb_masterproc_cecchip).invoke parallel_store SCOM 0x5003B "00000005_00000000" 64
+ ($hb_masterproc_cecchip).invoke parallel_store FSIMBOX 0x01 "80000000" 32
+ ($hb_masterproc_cecchip).invoke parallel_store FSIMBOX 0x08 "00080000" 32
+}
+
diff --git a/src/build/simics/startup.simics b/src/build/simics/startup.simics
index 389cf7db9..f7ed4765d 100755
--- a/src/build/simics/startup.simics
+++ b/src/build/simics/startup.simics
@@ -1,42 +1,47 @@
+
# Initialize HB search paths.
+$sandbox_base = (shell "printenv SANDBOXBASE")
+$script_dir = $sandbox_base + "/obj/ppc/simu/scripts"
+add-directory $script_dir
$hb_startup_path = (lookup-file hbfw/startup.simics)
$hb_script_location = (python "''.join(map('/'.__add__,\""+$hb_startup_path+"\"[1:].split('/')[0:-1]))")
python "os.environ['HB_TOOLPATH'] = \""+$hb_script_location+"\""
-$model = (shell "printenv CEC_MODEL")
$machine_name = (shell "printenv MACHINE")
-$hb_machine = "unknown"
-if ($model == "p9_nimbus") {$hb_machine = "nimbus"}
-if ($model == "p9zz_1s2u") {$hb_machine = "zztop"}
-if ($model == "p9_cumulus") {
- if ($machine_name == "CUMULUS_CDIMM") { $hb_machine = "cumulus_cdimm" }
- if ($machine_name != "CUMULUS_CDIMM") { $hb_machine = "cumulus" }
-}
-if ($model == "p9_axone") {$hb_machine = "axone"}
+$hb_machine = $machine_name
python "os.environ['HB_MACHINE'] = \""+$hb_machine+"\""
echo "HB_MACHINE is: "+$hb_machine
-
# Setup some common vars to use across machine types
-$hb_masterproc = ""
-@simenv.hb_masterproc = quiet_run_command("get-master-proc")[0]
+$hb_masterproc = (get-master-proc)
echo "Master Proc is: "+$hb_masterproc
-
+$hb_masterproc_cecchip = (get-master-cec-chip)
+echo "Master Proc Cec-Chip is: "+$hb_masterproc_cecchip
+#New Simics flow can simply get the string from get-master-pnor command
$hb_pnor = ""
-
-@simenv.hb_pnor = quiet_run_command("get-master-pnor")[0]
-try {
- @SIM_get_object(simenv.hb_pnor[0])
-} except {
- # Default to Nimbus name
- foreach $pnor in (get-object-list -all BmcCmp) {
- $hb_pnor = ($pnor)
+$hb_pnor = (get-master-pnor)
+
+if ($hb_pnor == NIL) {
+ try {
+ @simenv.hb_pnor = quiet_run_command("get-master-pnor")[0]
+ @SIM_get_object(simenv.hb_pnor[0])
+ } except {
+ # Default to Nimbus name
+ foreach $pnor in (get-object-list -all BmcCmp) {
+ $hb_pnor = ($pnor)
+ }
+ $hb_pnor = $hb_pnor+".sfc_master_mem"
}
}
-
echo "Master PNOR is: "+$hb_pnor
+$hb_mode = 1 #Old Mode -- No simics internals changed
+$runsim_lookup = (lookup-file -query "%simics%/runsim")
+if ($runsim_lookup) {
+ $hb_mode = 0 #New Mode -- Some simics internal changes
+}
+
# Choose a default core to start with
$hb_cpu = "system_cmp0.cpu0_0_00_0"
echo "Defaulting to CPU "+$hb_cpu+" for Hostboot tools"
@@ -51,8 +56,10 @@ foreach $cc in (get-object-list p9_proc) {
# Load HB debug tools.
try {
run-python-file (lookup-file hbfw/simics-debug-framework.py)
+} except { echo "ERROR: Failed to load Simics debug framework (simics-debug-framework.py)" }
+try {
run-python-file (lookup-file hbfw/hb-simdebug.py)
-} except { echo "ERROR: Failed to load Hostboot debug tools." }
+} except { echo "ERROR: Failed to load Hostboot debug tools (hb-simdebug.py)" }
# Determine security state
$hw_security=(shell "echo $SECURITY_HW_POLICY")
@@ -84,6 +91,10 @@ foreach $procX in (get-object-list p9_proc) {
(($procX)->secure_jumper=$jumperApplied)
}
+if ($hb_mode == 0) {
+ run-command-file (lookup-file hbfw/standalone.simics)
+}
+
########################### WORKAROUNDS ####################################
# Setup the mailbox.
# for mbox on core 0 use:
diff --git a/src/build/tools/hb b/src/build/tools/hb
index 22e5ca7ed..214202278 100755
--- a/src/build/tools/hb
+++ b/src/build/tools/hb
@@ -6,7 +6,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2011,2017
+# Contributors Listed Below - COPYRIGHT 2011,2018
# [+] International Business Machines Corp.
#
#
@@ -355,9 +355,18 @@ hb_simsetup()
hb_fipssetup
DRIVER=`cat ${PROJECT_ROOT}/src/build/citest/etc/bbuild`
+ SIMICS_LEVEL=`cat ${PROJECT_ROOT}/src/build/citest/etc/simbuild`
needs_machine_variable
- execute_in_sandbox "start_simics -no_start -machine ${MACHINE}" "ppc"
+ if [ "${MACHINE}" == "AXONE" ]; then
+ echo "mkdir -p ${SANDBOXBASE}/simics"
+ execute_in_sandbox "mkdir -p ${SANDBOXBASE}/simics" "ppc"
+ echo "tar ${SIMICS_LEVEL} -C ${SANDBOXBASE}/simics/"
+ execute_in_sandbox "tar -xf ${SIMICS_LEVEL} -C ${SANDBOXBASE}/simics/" "ppc"
+ execute_in_sandbox "cd ${SANDBOXBASE}/simics/ && ./INSTALL.sh" "ppc"
+ else
+ execute_in_sandbox "start_simics -no_start -machine ${MACHINE}" "ppc"
+ fi
echo "Running workarounds (postsimsetup)."
cp ${PROJECT_ROOT}/src/build/citest/etc/workarounds.postsimsetup ${SANDBOXBASE}/src
@@ -367,7 +376,6 @@ hb_simsetup()
# Put a starter copy of errl to simics directory; refresh w/ "hb errlparser"
cd ${SANDBOXBASE}/simics
ln -sf ${DRIVER}/obj/x86.nfp/errl/nfp/tool/errl
-
}
hb_startsimics()
@@ -411,8 +419,17 @@ hb_startsimics()
echo "File DNE ${PROJECT_ROOT}/obj/genfiles/config.h"
exit -1
fi
- execute_in_sandbox \
- "start_simics -machine ${MACHINE} ${SIMICSOPTIONS} $*" "ppc"
+
+ if [ "${MACHINE}" == "AXONE" ]; then
+ #export MYDIR=$bb/obj/ppc/hbfw/simics/startup.simics
+ #then /runsim -m axone -o hb_script_to_run=$MYDIR
+ export MY_DIR="${SANDBOXBASE}/obj/ppc/simu/scripts/hbfw"
+ echo "cd ${SANDBOXBASE}/simics/ && ./runsim -m ${MACHINE} -o hb_script_to_run=${MY_DIR}/startup.simics pnor_img=${MY_DIR}/../../../hbfw/img/axone.pnor"
+ execute_in_sandbox "cd ${SANDBOXBASE}/simics/ && ./runsim -m ${MACHINE} -o hb_script_to_run=${MY_DIR}/startup.simics pnor_img=${MY_DIR}/../../../hbfw/img/axone.pnor" "ppc"
+ else
+ execute_in_sandbox \
+ "start_simics -machine ${MACHINE} ${SIMICSOPTIONS} $*" "ppc"
+ fi
}
hb_rsync_call()
diff --git a/src/usr/targeting/common/xmltohb/simics_AXONE.system.xml b/src/usr/targeting/common/xmltohb/simics_AXONE.system.xml
index 19386b554..501eaba60 100644
--- a/src/usr/targeting/common/xmltohb/simics_AXONE.system.xml
+++ b/src/usr/targeting/common/xmltohb/simics_AXONE.system.xml
@@ -322,12 +322,12 @@
<attribute>
<id>SP_FUNCTIONS</id>
<default>
- <field><id>baseServices</id><value>1</value></field>
- <field><id>fsiMasterInit</id><value>1</value></field>
- <field><id>fsiSlaveInit</id><value>1</value></field>
- <field><id>hardwareChangeDetection</id><value>1</value></field>
+ <field><id>baseServices</id><value>0</value></field>
+ <field><id>fsiMasterInit</id><value>0</value></field>
+ <field><id>fsiSlaveInit</id><value>0</value></field>
+ <field><id>hardwareChangeDetection</id><value>0</value></field>
<field><id>mailboxEnabled</id><value>0</value></field>
- <field><id>powerLineDisturbance</id><value>1</value></field>
+ <field><id>powerLineDisturbance</id><value>0</value></field>
<field><id>reserved</id><value>0</value></field>
</default>
</attribute>
@@ -4020,7 +4020,7 @@
</attribute>
<attribute>
<id>FAPI_POS</id>
- <default>0</default>
+ <default>1</default>
</attribute>
<attribute>
<id>HUID</id>
diff --git a/src/usr/vpd/makefile b/src/usr/vpd/makefile
index d5637f4dc..f038bb5a2 100644
--- a/src/usr/vpd/makefile
+++ b/src/usr/vpd/makefile
@@ -43,9 +43,10 @@ BINARY_FILES += $(IMGDIR)/procmvpd_ven.dat:dd8507bec946283260f82af212ed32feaeb33
BINARY_FILES += $(IMGDIR)/vpo_sysmvpd.dat:f83bbcdd56defb5d155399774c4d721de25a8e96
BINARY_FILES += $(IMGDIR)/vpo_djvpd.dat:eb4dce98f19ebfe77243be1c56d3d0eaa1889d90
-# P9 Module VPD
+# P9 (and P9 Prime) Module VPD
BINARY_FILES += $(IMGDIR)/procmvpd_p9n.dat:a351f3cd5ba8a81a50c3e5a0dea5fea03e55769d
BINARY_FILES += $(IMGDIR)/procmvpd_p9c.dat:939f91a9359b917c525dd7cd4ea80a03b1c08714
+BINARY_FILES += $(IMGDIR)/procmvpd_p9a.dat:939f91a9359b917c525dd7cd4ea80a03b1c08714
# CDIMM Format - download 4k cvpd file
BINARY_FILES += $(IMGDIR)/cvpd_cdimm.dat:b12431fbc14304edd31e74405cdcb27560a8e00b
OpenPOWER on IntegriCloud