summaryrefslogtreecommitdiffstats
path: root/src/build/simics
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2018-10-08 16:05:14 -0500
committerNicholas E. Bofferding <bofferdn@us.ibm.com>2018-12-14 14:14:23 -0600
commit2ad30a4a4e4db7bc8d3b015e408848f70c3014f8 (patch)
tree92e584ea0d897f85e75943c6d336d6ea74dc8a68 /src/build/simics
parentbfac98200f7ec60552fb11d2bef5a76a8ed9f24f (diff)
downloadtalos-hostboot-2ad30a4a4e4db7bc8d3b015e408848f70c3014f8.tar.gz
talos-hostboot-2ad30a4a4e4db7bc8d3b015e408848f70c3014f8.zip
Axone Simics Updates -- Finds Functional Master Proc
- Updates for new Simics infrastructure - Finds Functional Master Proc - Finds TPM - Boots to istep6.9 before failing target verification (more Axone FW changes needed) Change-Id: Ib3f44008ed12202777c2edacea42d5cb20a4a7a3 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67206 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Diffstat (limited to 'src/build/simics')
-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
4 files changed, 114 insertions, 59 deletions
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:
OpenPOWER on IntegriCloud