diff options
| author | Bill Hoffa <wghoffa@us.ibm.com> | 2018-10-08 16:05:14 -0500 |
|---|---|---|
| committer | Nicholas E. Bofferding <bofferdn@us.ibm.com> | 2018-12-14 14:14:23 -0600 |
| commit | 2ad30a4a4e4db7bc8d3b015e408848f70c3014f8 (patch) | |
| tree | 92e584ea0d897f85e75943c6d336d6ea74dc8a68 /src/build/simics | |
| parent | bfac98200f7ec60552fb11d2bef5a76a8ed9f24f (diff) | |
| download | talos-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-x | src/build/simics/hb-pnor-vpd-preload.pl | 24 | ||||
| -rwxr-xr-x | src/build/simics/hb-pnor-vpd-preload.py | 14 | ||||
| -rwxr-xr-x | src/build/simics/standalone.simics | 78 | ||||
| -rwxr-xr-x | src/build/simics/startup.simics | 57 |
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: |

